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/asm/macros/event.inc b/asm/macros/event.inc index e424e7c538..09d5247522 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -2170,3 +2170,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/battle_scripts_1.s b/data/battle_scripts_1.s index 537d92ba52..a23423b42e 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 @@ -8552,7 +8552,8 @@ BattleScript_GooeyActivates:: waitstate call BattleScript_AbilityPopUp swapattackerwithtarget @ for defiant, mirror armor - seteffectsecondary + seteffectsecondary MOVE_EFFECT_SPD_MINUS_1 + swapattackerwithtarget return BattleScript_AbilityStatusEffect:: diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index 939bd88ac0..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_HatchAnEgg_NoPokemon + 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_HatchAnEgg_NoPokemon + 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 @@ -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/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/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/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/malloc.c b/gflib/malloc.c index 0c63c91bf8..3c15dd9447 100644 --- a/gflib/malloc.c +++ b/gflib/malloc.c @@ -7,7 +7,7 @@ static void *sHeapStart; static u32 sHeapSize; -EWRAM_DATA u8 gHeap[HEAP_SIZE] = {0}; +ALIGNED(4) EWRAM_DATA u8 gHeap[HEAP_SIZE] = {0}; void PutMemBlockHeader(void *block, struct MemBlock *prev, struct MemBlock *next, u32 size) { diff --git a/gflib/sprite.c b/gflib/sprite.c index 6362210320..e09763ac30 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 void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct SpriteFrameImage *images); @@ -120,17 +120,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 @@ -305,7 +294,7 @@ void ResetSpriteData(void) void AnimateSprites(void) { - u8 i; + u32 i; for (i = 0; i < MAX_SPRITES; i++) { struct Sprite *sprite = &gSprites[i]; @@ -446,9 +435,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) @@ -457,9 +446,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) @@ -468,9 +457,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) { @@ -484,7 +473,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]; @@ -535,9 +524,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++) { @@ -545,7 +534,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; @@ -577,11 +566,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) @@ -592,7 +581,7 @@ void LoadOam(void) void ClearSpriteCopyRequests(void) { - u8 i; + u32 i; sShouldProcessSpriteCopyRequests = FALSE; sSpriteCopyRequestCount = 0; @@ -607,7 +596,7 @@ void ClearSpriteCopyRequests(void) void ResetOamMatrices(void) { - u8 i; + u32 i; for (i = 0; i < OAM_MATRIX_COUNT; i++) { // set to identity matrix @@ -1373,7 +1362,7 @@ void SetSpriteSheetFrameTileNum(struct Sprite *sprite) void ResetAffineAnimData(void) { - u8 i; + u32 i; gAffineAnimsDisabled = FALSE; gOamMatrixAllocBitmap = 0; @@ -1476,7 +1465,7 @@ u16 LoadSpriteSheetByTemplate(const struct SpriteTemplate *template, u32 frame, void LoadSpriteSheets(const struct SpriteSheet *sheets) { - u8 i; + u32 i; for (i = 0; sheets[i].data != NULL; i++) LoadSpriteSheet(&sheets[i]); } @@ -1509,7 +1498,7 @@ void FreeSpriteTilesByTag(u16 tag) void FreeSpriteTileRanges(void) { - u8 i; + u32 i; for (i = 0; i < MAX_SPRITES; i++) { @@ -1528,7 +1517,7 @@ u16 GetSpriteTileStartByTag(u16 tag) u8 IndexOfSpriteTileTag(u16 tag) { - u8 i; + u32 i; for (i = 0; i < MAX_SPRITES; i++) if (sSpriteTileRangeTags[i] == tag) @@ -1539,7 +1528,7 @@ u8 IndexOfSpriteTileTag(u16 tag) u16 GetSpriteTileTagByTileStart(u16 start) { - u8 i; + u32 i; for (i = 0; i < MAX_SPRITES; i++) { @@ -1559,7 +1548,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; @@ -1588,7 +1577,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; @@ -1615,7 +1604,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; @@ -1689,7 +1678,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 87bd17f448..18709c4093 100644 --- a/gflib/sprite.h +++ b/gflib/sprite.h @@ -271,12 +271,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/graphics/pokemon/wooper/wooper_paldean/icon.png b/graphics/pokemon/wooper/wooper_paldean/icon.png new file mode 100644 index 0000000000..63aea32819 Binary files /dev/null and b/graphics/pokemon/wooper/wooper_paldean/icon.png differ diff --git a/include/battle.h b/include/battle.h index 360faace34..5a69fc8d50 100644 --- a/include/battle.h +++ b/include/battle.h @@ -54,8 +54,10 @@ struct __attribute__((packed, aligned(2))) BattleMoveEffect const u8 *battleScript; u16 battleTvScore:3; u16 encourageEncore:1; + u16 twoTurnEffect:1; u16 semiInvulnerableEffect:1; - u16 flags:11; // coming soon... + u16 usesProtectCounter:1; + u16 padding:9; }; #define GET_MOVE_BATTLESCRIPT(move) gBattleMoveEffects[gMovesInfo[move].effect].battleScript @@ -612,7 +614,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. @@ -736,6 +737,7 @@ struct BattleStruct u8 forcedSwitch:4; // For each 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. @@ -774,6 +776,8 @@ struct BattleStruct u8 dauntlessShieldBoost[NUM_BATTLE_SIDES]; u8 supersweetSyrup[NUM_BATTLE_SIDES]; u8 supremeOverlordCounter[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, @@ -971,15 +975,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; }; @@ -1008,7 +1007,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; @@ -1055,7 +1053,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]; @@ -1087,8 +1084,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/include/battle_main.h b/include/battle_main.h index a28e8d5de6..f75fa960f9 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -77,7 +77,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/battle_util.h b/include/battle_util.h index 62575da950..d1879992d2 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -202,7 +202,8 @@ bool32 IsHealBlockPreventingMove(u32 battler, u32 move); bool32 HasEnoughHpToEatBerry(u32 battler, u32 hpFraction, u32 itemId); bool32 IsPartnerMonFromSameTrainer(u32 battler); u8 GetCategoryBasedOnStats(u32 battler); -bool32 TestSheerForceFlag(u32 battler, u16 move); +bool32 MoveIsAffectedBySheerForce(u32 move); +bool32 TestIfSheerForceAffected(u32 battler, u16 move); void TryRestoreHeldItems(void); bool32 CanStealItem(u32 battlerStealing, u32 battlerItem, u16 item); void TrySaveExchangedItem(u32 battler, u16 stolenItem); @@ -223,11 +224,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/include/config/battle.h b/include/config/battle.h index 5ec007e686..ffdfc40385 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. @@ -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) 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/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/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 017dfe5107..b497332512 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/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/include/constants/expansion.h b/include/constants/expansion.h index 63f262aeee..9b733a14f1 100644 --- a/include/constants/expansion.h +++ b/include/constants/expansion.h @@ -1,9 +1,10 @@ #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. 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/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/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/data.h b/include/data.h index 7b51f18851..65821ec0d0 100644 --- a/include/data.h +++ b/include/data.h @@ -110,6 +110,23 @@ 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; + //u16 arceusForm; +}; + struct FollowerMsgInfo { const u8 *text; const u8 *script; @@ -122,7 +139,6 @@ struct FollowerMessagePool u16 length; }; - extern const u16 gMinigameDigits_Pal[]; extern const u32 gMinigameDigits_Gfx[]; 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/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/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__) diff --git a/include/pokemon.h b/include/pokemon.h index 1ba1d2aa2a..41485e1e1b 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; @@ -454,44 +455,41 @@ struct MoveInfo const u8 *name; const u8 *description; u16 effect; - u8 power; - u8 type:5; - u8 category:3; - + u16 type:5; + u16 category:2; + u16 power:9; // up to 511 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 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 + // 12 bits left to complete this word - continues into flags + // 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; - u32 slicingMove:1; + u32 slicingMove:1; // end of word + u32 healingMove:1; u32 minimizeDoubleDamage:1; u32 ignoresTargetAbility:1; u32 ignoresTargetDefenseEvasionStages:1; @@ -502,11 +500,12 @@ 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; + + // Ban flags u32 gravityBanned:1; - u32 healingMove:1; + u32 mirrorMoveBanned:1; u32 meFirstBanned:1; u32 mimicBanned:1; u32 metronomeBanned:1; @@ -519,7 +518,7 @@ struct MoveInfo u32 skyBattleBanned:1; u32 sketchBanned:1; - u32 argument; // also coming soon + u32 argument; // primary/secondary effects const struct AdditionalEffect *additionalEffects; @@ -534,13 +533,16 @@ 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 { + 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/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/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/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/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 diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 809784c159..6dd50eaaa1 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 @@ -789,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)) { @@ -850,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); @@ -883,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: @@ -1096,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: @@ -1897,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); @@ -1926,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 @@ -1956,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); @@ -2041,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) @@ -2146,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); @@ -2498,8 +2436,7 @@ 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) + || MoveHasAdditionalEffectSelf(instructedMove, MOVE_EFFECT_RECHARGE) || IsZMove(instructedMove) || (gLockedMoves[battlerDef] != 0 && gLockedMoves[battlerDef] != 0xFFFF) || gBattleMons[battlerDef].status2 & STATUS2_MULTIPLETURNS @@ -2570,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 @@ -2647,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); @@ -3132,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]; } @@ -3837,9 +3766,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: @@ -4683,7 +4612,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); @@ -4796,6 +4730,7 @@ 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++) @@ -4810,6 +4745,7 @@ static s32 AI_SetupFirstTurn(u32 battlerAtk, u32 battlerDef, u32 move, s32 score break; } } + } default: break; } @@ -4850,6 +4786,7 @@ 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++) @@ -4864,6 +4801,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 0eefbe4722..8e0955b1de 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; @@ -612,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 + (gMovesInfo[move].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; } @@ -642,6 +719,7 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s return TRUE; break; default: + { for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) { switch (gMovesInfo[move].additionalEffects[i].moveEffect) @@ -666,6 +744,7 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s } break; } + } return FALSE; } @@ -1716,7 +1795,7 @@ bool32 HasMoveWithAdditionalEffect(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; } @@ -1747,7 +1826,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; } @@ -1843,8 +1922,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); } } @@ -2700,7 +2779,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 @@ -2738,12 +2817,12 @@ 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 || 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; @@ -3546,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_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_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_controller_player.c b/src/battle_controller_player.c index 37d66aafcd..c0f5280c3a 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1756,7 +1756,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_controllers.c b/src/battle_controllers.c index 04a297b926..2022b013fe 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -84,10 +84,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_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_dome.c b/src/battle_dome.c index cf9d97f483..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 @@ -4059,7 +4048,7 @@ static bool32 IsDomeStatusMoveEffect(u32 move) case EFFECT_CURSE: return TRUE; default: - return MoveHasMoveEffect(move, MOVE_EFFECT_WRAP); + return MoveHasAdditionalEffect(move, MOVE_EFFECT_WRAP); } } @@ -4388,7 +4377,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_dynamax.c b/src/battle_dynamax.c index b703676b73..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. @@ -637,7 +614,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 5bb6ce9648..c28ed90ffc 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: @@ -587,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++) { @@ -604,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 3ea91d66ed..0ed19a2029 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; @@ -299,27 +295,308 @@ 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, + //.arceusForm = SPECIES_ARCEUS_NORMAL, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_FIGHTING, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_FLYING, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_POISON, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_GROUND, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_ROCK, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_BUG, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_GHOST, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_STEEL, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_FIRE, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_WATER, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_GRASS, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_ELECTRIC, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_PSYCHIC, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_ICE, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_DRAGON, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_DARK, + }, + [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, + //.arceusForm = SPECIES_ARCEUS_FAIRY, + }, + /* + [TYPE_STELLAR] = + { + .name = _("Stellar"), + .teraShard = ITEM_STELLAR_TERA_SHARD, + }, + */ }; // extra args are money and ball @@ -548,6 +825,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 +2340,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; } @@ -2743,7 +3020,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; @@ -3734,7 +4011,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)) @@ -4966,6 +5243,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++; } } @@ -5172,21 +5451,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; } @@ -5592,16 +5871,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/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_script_commands.c b/src/battle_script_commands.c index 26a8fdb2a0..43071ff5f6 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) - && (!gMovesInfo[gCurrentMove].twoTurnMove || (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 (!gMovesInfo[gCurrentMove].twoTurnMove || (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)) - && ((!gMovesInfo[gCurrentMove].twoTurnMove || (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) { @@ -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; @@ -2749,13 +2752,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; \ } @@ -2768,6 +2771,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)) @@ -2827,7 +2834,10 @@ 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 (!(gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) + && TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove) + && !primary + && gBattleScripting.moveEffect != MOVE_EFFECT_CHARGING) INCREMENT_RESET_RETURN if (gBattleMons[gEffectBattler].hp == 0 && !activateAfterFaint) @@ -3306,12 +3316,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++; @@ -3823,6 +3835,26 @@ 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(); @@ -3832,18 +3864,11 @@ static void Cmd_setadditionaleffects(void) if (gMovesInfo[gCurrentMove].numAdditionalEffects > gBattleStruct->additionalEffectsCounter) { u32 percentChance; - u16 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); - const u8 *currentPtr = gBattlescriptCurrInstr; const struct AdditionalEffect *additionalEffect = &gMovesInfo[gCurrentMove].additionalEffects[gBattleStruct->additionalEffectsCounter]; + const u8 *currentPtr = gBattlescriptCurrInstr; - // 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(additionalEffect)) { percentChance = CalcSecondaryEffectChance(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker), additionalEffect); @@ -5761,7 +5786,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. @@ -5992,7 +6017,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. @@ -6025,7 +6050,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. @@ -6095,7 +6120,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 { @@ -6224,7 +6249,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 @@ -9678,8 +9703,10 @@ 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)) + if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || MoveHasAdditionalEffectSelf(move, MOVE_EFFECT_RECHARGE) + || gMovesInfo[move].instructBanned + || gBattleMoveEffects[gMovesInfo[move].effect].twoTurnEffect + || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -10760,7 +10787,8 @@ 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))) + || (!gBattleMoveEffects[gMovesInfo[lastMove].effect].usesProtectCounter + && (B_ALLY_SWITCH_FAIL_CHANCE >= GEN_9 && gMovesInfo[lastMove].effect != EFFECT_ALLY_SWITCH))) gDisableStructs[battler].protectUses = 0; } @@ -11730,7 +11758,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; @@ -12741,7 +12769,7 @@ static void Cmd_settypetorandomresistance(void) { gBattlescriptCurrInstr = cmd->failInstr; } - else if (gMovesInfo[gLastLandedMoves[gBattlerAttacker]].twoTurnMove + else if (gBattleMoveEffects[gMovesInfo[gLastLandedMoves[gBattlerAttacker]].effect].twoTurnEffect && gBattleMons[gLastHitBy[gBattlerAttacker]].status2 & STATUS2_MULTIPLETURNS) { gBattlescriptCurrInstr = cmd->failInstr; @@ -12857,7 +12885,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) + || gBattleMoveEffects[gMovesInfo[gBattleMons[gBattlerAttacker].moves[i]].effect].twoTurnEffect) { unusableMovesBits |= gBitTable[i]; } @@ -13709,7 +13737,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 @@ -14657,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_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/battle_tv.c b/src/battle_tv.c index 80cb0020f8..a2b370aa55 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_RAPID_SPIN)) + if (MoveHasAdditionalEffect(arg2, MOVE_EFFECT_RAPID_SPIN)) 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 7e3687448e..7a4bff4900 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(); @@ -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) { @@ -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 @@ -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; @@ -5621,7 +5620,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(); @@ -5686,7 +5685,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(); @@ -7649,7 +7648,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) @@ -8851,7 +8850,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: @@ -10830,12 +10829,9 @@ bool32 IsBattlerAffectedByHazards(u32 battler, bool32 toxicSpikes) return ret; } -bool32 TestSheerForceFlag(u32 battler, u16 move) +bool32 TestIfSheerForceAffected(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 @@ -11105,50 +11101,51 @@ bool32 IsGen6ExpShareEnabled(void) return FlagGet(I_EXP_SHARE_FLAG); } -bool32 MoveHasMoveEffect(u32 move, u32 moveEffect) + +bool32 MoveHasAdditionalEffect(u32 move, u32 moveEffect) { u32 i; for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) { if (gMovesInfo[move].additionalEffects[i].moveEffect == moveEffect - && gMovesInfo[move].additionalEffects[i].self == FALSE) + && gMovesInfo[move].additionalEffects[i].self == FALSE) return TRUE; } return FALSE; } -bool32 MoveHasMoveEffectWithChance(u32 move, u32 moveEffect, u32 chance) +bool32 MoveHasAdditionalEffectWithChance(u32 move, u32 moveEffect, u32 chance) { u32 i; for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) { if (gMovesInfo[move].additionalEffects[i].moveEffect == moveEffect - && gMovesInfo[move].additionalEffects[i].chance == chance) + && gMovesInfo[move].additionalEffects[i].chance == chance) return TRUE; } return FALSE; } -bool32 MoveHasMoveEffectSelf(u32 move, u32 moveEffect) +bool32 MoveHasAdditionalEffectSelf(u32 move, u32 moveEffect) { u32 i; for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) { if (gMovesInfo[move].additionalEffects[i].moveEffect == moveEffect - && gMovesInfo[move].additionalEffects[i].self == TRUE) + && gMovesInfo[move].additionalEffects[i].self == TRUE) return TRUE; } return FALSE; } -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) { - u8 i = 0; + u32 i; for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++) { if (gMovesInfo[move].additionalEffects[i].onChargeTurnOnly) @@ -11157,6 +11154,17 @@ bool32 MoveHasChargeTurnMoveEffect(u32 move) return FALSE; } +bool32 MoveIsAffectedBySheerForce(u32 move) +{ + 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) { u16 species = GetMonData(mon, MON_DATA_SPECIES); diff --git a/src/battle_z_move.c b/src/battle_z_move.c index b2377bffd4..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"); @@ -378,13 +380,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) @@ -553,7 +555,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/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/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 cfab1cf6a4..721be3360a 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); @@ -2576,7 +2576,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/data.c b/src/data.c index 507126bfa4..b2521427fd 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" 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, diff --git a/src/data/battle_move_effects.h b/src/data/battle_move_effects.h index 310eef23af..4cf54b0370 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 = 3, + .twoTurnEffect = TRUE, }, [EFFECT_SUBSTITUTE] = @@ -569,6 +570,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleScript = BattleScript_EffectProtect, .battleTvScore = 5, .encourageEncore = TRUE, + .usesProtectCounter = TRUE, }, [EFFECT_SPIKES] = @@ -603,6 +605,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleScript = BattleScript_EffectEndure, .battleTvScore = 3, .encourageEncore = TRUE, + .usesProtectCounter = TRUE, }, [EFFECT_ROLLOUT] = @@ -765,6 +768,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectTwoTurnsAttack, .battleTvScore = 1, + .twoTurnEffect = TRUE, }, [EFFECT_THUNDER] = @@ -789,6 +793,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectTwoTurnsAttack, .battleTvScore = 3, + .twoTurnEffect = TRUE, .semiInvulnerableEffect = TRUE, }, @@ -1791,6 +1796,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectGeomancy, .battleTvScore = 0, // TODO: Assign points + .twoTurnEffect = TRUE, }, [EFFECT_FAIRY_LOCK] = @@ -1993,6 +1999,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = { .battleScript = BattleScript_EffectSkyDrop, .battleTvScore = 0, // TODO: Assign points + .twoTurnEffect = TRUE, .semiInvulnerableEffect = TRUE, }, diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index 296bd1ae90..cd83579489 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -3993,7 +3993,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonPalette_WooperPaldean[] = INCBIN_U32("graphics/pokemon/wooper/wooper_paldean/normal.gbapal.lz"); const u32 gMonBackPic_WooperPaldean[] = INCBIN_U32("graphics/pokemon/wooper/wooper_paldean/back.4bpp.lz"); const u32 gMonShinyPalette_WooperPaldean[] = INCBIN_U32("graphics/pokemon/wooper/wooper_paldean/shiny.gbapal.lz"); - // const u8 gMonIcon_WooperPaldean[] = INCBIN_U8("graphics/pokemon/wooper/wooper_paldean/icon.4bpp"); + const u8 gMonIcon_WooperPaldean[] = INCBIN_U8("graphics/pokemon/wooper/wooper_paldean/icon.4bpp"); #if OW_FOLLOWERS_ENABLED // const u32 gObjectEventPic_WooperPaldean[] = INCBIN_COMP("graphics/pokemon/wooper/wooper_paldean/follower.4bpp"); #endif //OW_FOLLOWERS_ENABLED diff --git a/src/data/moves_info.h b/src/data/moves_info.h index 6ecb89e24b..b4639fd290 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -282,7 +282,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, @@ -313,7 +312,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, @@ -340,7 +338,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, @@ -429,7 +426,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, @@ -570,7 +566,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, @@ -672,7 +667,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({ @@ -772,7 +766,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, @@ -820,7 +813,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, @@ -936,7 +928,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({ @@ -1079,7 +1070,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, @@ -1104,7 +1094,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({ @@ -1174,7 +1163,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, @@ -1353,7 +1341,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, @@ -1378,7 +1365,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, @@ -1403,7 +1389,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, @@ -1518,7 +1503,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 @@ -1549,7 +1533,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, @@ -1575,7 +1558,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, @@ -1600,7 +1582,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, @@ -1625,7 +1606,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, @@ -1938,7 +1918,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_PKMNTOOKSUNLIGHT, B_WEATHER_SUN), @@ -2132,7 +2111,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, @@ -2157,7 +2135,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, @@ -2204,7 +2181,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, @@ -2295,7 +2271,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, @@ -2344,7 +2319,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, @@ -2369,7 +2343,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, @@ -3042,7 +3015,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, @@ -3067,7 +3039,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, @@ -3092,7 +3063,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, @@ -3117,7 +3087,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, @@ -3142,7 +3111,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, @@ -3169,7 +3137,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, @@ -3240,7 +3207,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, @@ -3291,7 +3257,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, @@ -3559,8 +3524,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .criticalHitStage = B_UPDATED_MOVE_DATA >= GEN_3, - .twoTurnMove = TRUE, - .sheerForceBoost = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .argument = TWO_TURN_ARG(B_UPDATED_MOVE_DATA >= GEN_4 ? STRINGID_CLOAKEDINAHARSHLIGHT : STRINGID_PKMNISGLOWING), @@ -3619,7 +3582,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, @@ -3646,7 +3608,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, @@ -3894,7 +3855,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, @@ -3920,7 +3880,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, @@ -3994,7 +3953,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, @@ -4276,7 +4234,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, @@ -4303,7 +4260,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({ @@ -4488,7 +4444,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, @@ -4514,7 +4469,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, @@ -4647,7 +4601,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, @@ -4673,7 +4626,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, @@ -4698,7 +4650,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, @@ -4750,7 +4701,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, @@ -4851,7 +4801,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, @@ -4880,7 +4829,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, @@ -5020,7 +4968,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, @@ -5156,7 +5103,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, @@ -5210,7 +5156,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, @@ -5446,7 +5391,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, @@ -5496,7 +5440,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, @@ -5542,7 +5485,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, @@ -5693,7 +5635,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, @@ -5719,7 +5660,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, @@ -5883,7 +5823,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({ @@ -5961,7 +5900,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 @@ -6062,7 +6000,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, @@ -6088,7 +6025,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, @@ -6143,7 +6079,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, @@ -6213,7 +6148,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, @@ -6340,7 +6274,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, @@ -7127,7 +7060,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, @@ -7152,7 +7084,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, @@ -7248,7 +7179,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, @@ -7273,7 +7203,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, @@ -7347,7 +7276,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, @@ -7421,7 +7349,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, @@ -7495,7 +7422,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, @@ -7522,7 +7448,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, @@ -7597,7 +7522,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, @@ -7624,7 +7548,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, @@ -7789,7 +7712,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, @@ -7814,7 +7736,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, @@ -7955,7 +7876,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, @@ -8002,7 +7922,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, @@ -8094,7 +8013,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, @@ -8325,9 +8243,7 @@ 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, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -8357,7 +8273,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, @@ -8384,7 +8299,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, @@ -8440,7 +8354,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, @@ -8623,7 +8536,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, @@ -9589,9 +9501,7 @@ 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, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -9618,7 +9528,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, @@ -9690,7 +9599,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, @@ -9715,7 +9623,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, @@ -9806,7 +9713,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, @@ -9854,7 +9760,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({ @@ -9903,7 +9808,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, @@ -9990,7 +9894,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, @@ -10016,7 +9919,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, @@ -10064,7 +9966,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, @@ -10244,9 +10145,7 @@ 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, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, @@ -10277,7 +10176,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, @@ -10307,9 +10205,7 @@ 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, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, @@ -10360,7 +10256,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, @@ -10409,7 +10304,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, @@ -10434,7 +10328,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, @@ -10459,7 +10352,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, @@ -10485,7 +10377,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, @@ -10579,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_PARALYSIS, .chance = 30, @@ -10602,7 +10492,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, @@ -10697,7 +10586,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, @@ -10723,7 +10611,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, @@ -10749,7 +10636,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, @@ -10885,7 +10771,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, @@ -10968,7 +10853,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, @@ -11285,7 +11169,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, @@ -11310,7 +11193,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, @@ -11336,7 +11218,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, @@ -11395,7 +11276,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, @@ -11687,7 +11567,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, @@ -11822,7 +11701,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, @@ -11873,7 +11751,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, @@ -11898,7 +11775,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, @@ -12129,7 +12005,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, @@ -12174,7 +12049,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, @@ -12271,7 +12145,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, @@ -12501,7 +12374,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, @@ -12607,7 +12479,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, @@ -12632,7 +12503,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, @@ -12722,7 +12592,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, @@ -12814,7 +12683,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, @@ -12881,7 +12749,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, @@ -12927,7 +12794,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, @@ -12954,7 +12820,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, @@ -13004,7 +12869,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, @@ -13068,7 +12932,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({ @@ -13138,7 +13001,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, @@ -13187,7 +13049,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, @@ -13237,7 +13098,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, @@ -13263,7 +13123,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, @@ -13288,7 +13147,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, @@ -13313,7 +13171,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, @@ -13340,8 +13197,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, .instructBanned = TRUE, @@ -13370,8 +13225,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, .instructBanned = TRUE, @@ -13400,7 +13253,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, @@ -13428,7 +13280,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, @@ -13672,7 +13523,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, @@ -13838,7 +13688,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, @@ -14070,7 +13919,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, @@ -14116,7 +13964,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, @@ -14187,7 +14034,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, @@ -14262,7 +14108,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, @@ -14288,7 +14133,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({ @@ -14359,7 +14203,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, @@ -14385,7 +14228,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, @@ -14503,7 +14345,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, @@ -14701,7 +14542,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, @@ -14771,7 +14611,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, @@ -15050,7 +14889,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, @@ -15076,7 +14914,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, @@ -15124,7 +14961,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({ @@ -15246,7 +15082,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, @@ -15390,7 +15225,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, @@ -15437,7 +15271,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, @@ -15486,7 +15319,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, @@ -15512,7 +15344,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, @@ -15697,7 +15528,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, @@ -15963,7 +15793,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, @@ -16010,7 +15839,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, @@ -16289,7 +16117,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 @@ -16314,7 +16141,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({ @@ -16338,7 +16164,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, @@ -16562,7 +16387,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, @@ -16956,7 +16780,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, @@ -17008,7 +16831,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, @@ -17087,7 +16909,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, @@ -17115,7 +16936,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, @@ -17186,7 +17006,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, @@ -17212,7 +17031,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, @@ -17239,7 +17057,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, @@ -17265,7 +17082,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, @@ -17317,7 +17133,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, @@ -17500,7 +17315,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .twoTurnMove = TRUE, .instructBanned = TRUE, .argument = TWO_TURN_ARG(STRINGID_METEORBEAMCHARGING), .additionalEffects = ADDITIONAL_EFFECTS({ @@ -17528,7 +17342,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, @@ -17637,7 +17450,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, @@ -17662,7 +17474,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, @@ -17838,7 +17649,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, @@ -17987,7 +17797,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, @@ -18039,7 +17848,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, @@ -18107,7 +17915,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, @@ -18131,7 +17938,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, @@ -18153,7 +17959,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, @@ -18196,7 +18001,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, @@ -18218,7 +18022,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({ @@ -18241,7 +18044,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, @@ -18319,7 +18121,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, @@ -18382,7 +18183,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, @@ -18405,7 +18205,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, @@ -18427,7 +18226,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, @@ -18468,7 +18266,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, @@ -18494,7 +18291,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, @@ -18516,7 +18312,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, @@ -18538,7 +18333,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, @@ -18560,7 +18354,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, @@ -18582,7 +18375,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, @@ -18660,7 +18452,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, @@ -18681,7 +18472,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, @@ -18702,6 +18492,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .metronomeBanned = TRUE, // Only since it isn't implemented yet }, [MOVE_LUMINA_CRASH] = @@ -18718,7 +18509,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, @@ -18739,7 +18529,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -18760,7 +18549,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .punchingMove = TRUE, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, }, @@ -18895,7 +18683,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .sheerForceBoost = TRUE, .metronomeBanned = TRUE, }, @@ -18931,7 +18718,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_RAPID_SPIN, @@ -19032,7 +18818,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({ @@ -19057,7 +18842,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, @@ -19254,7 +19038,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({ @@ -19492,7 +19275,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, @@ -19521,7 +19303,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, @@ -19550,7 +19331,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, @@ -19579,7 +19359,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, @@ -19608,7 +19387,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, @@ -19754,13 +19532,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, - .sheerForceBoost = TRUE, .argument = TWO_TURN_ARG(STRINGID_ELECTROSHOTCHARGING, B_WEATHER_RAIN), .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SP_ATK_PLUS_1, .self = TRUE, .onChargeTurnOnly = TRUE, - }), + }, SHEER_FORCE_HACK), }, [MOVE_TERA_STARSTORM] = @@ -19814,7 +19591,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, @@ -19919,7 +19695,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, @@ -19999,7 +19774,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 3, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .sheerForceBoost = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FLINCH, .chance = 100, @@ -20510,7 +20284,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_USER, .priority = 4, .category = DAMAGE_CATEGORY_STATUS, - .protectionMove = TRUE, }, [MOVE_MAX_FLARE] = 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/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 diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index 1e637562ff..5ae7ce3578 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -1,222 +1,10 @@ #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. #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 @@ -282,41 +70,48 @@ 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), + .palette = gMonPalette_CircledQuestionMark, + .shinyPalette = gMonShinyPalette_CircledQuestionMark, + .iconSprite = gMonIcon_QuestionMark, + .iconPalIndex = 0, #if OW_FOLLOWERS_ENABLED .followerData = {TAG_NONE, OBJ_EVENT_PAL_TAG_SUBSTITUTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, COMP, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Substitute, gDummySpriteAffineAnimTable}, #endif - LEARNSETS(None), + .levelUpLearnset = sNoneLevelUpLearnset, + .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] = { - 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: */ @@ -358,22 +153,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_families.h similarity index 59% rename from src/data/pokemon/species_info/gen_1.h rename to src/data/pokemon/species_info/gen_1_families.h index c2abb4e7b6..d7fafae241 100644 --- a/src/data/pokemon/species_info/gen_1.h +++ b/src/data/pokemon/species_info/gen_1_families.h @@ -38,18 +38,23 @@ 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) FOLLOWER(Bulbasaur, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bulbasaur), + .levelUpLearnset = sBulbasaurLevelUpLearnset, + .teachableLearnset = sBulbasaurTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_IVYSAUR}), }, @@ -88,49 +93,36 @@ 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) FOLLOWER(Ivysaur, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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 @@ -138,8 +130,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( @@ -151,33 +154,56 @@ 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) FOLLOWER(Venusaur, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -188,32 +214,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( @@ -225,16 +272,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 @@ -274,18 +330,23 @@ 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), FOLLOWER(Charmander, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sCharmanderLevelUpLearnset, + .teachableLearnset = sCharmanderTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_CHARMELEON}), }, @@ -324,40 +385,28 @@ 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), FOLLOWER(Charmeleon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, @@ -365,6 +414,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 @@ -372,9 +422,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( @@ -386,22 +445,30 @@ 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) FOLLOWER(Charizard, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, @@ -409,10 +476,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( @@ -423,21 +500,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, @@ -445,10 +530,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( @@ -460,23 +555,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, @@ -484,10 +587,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( @@ -499,16 +612,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 @@ -548,18 +670,23 @@ 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) FOLLOWER(Squirtle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Squirtle), + .levelUpLearnset = sSquirtleLevelUpLearnset, + .teachableLearnset = sSquirtleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_WARTORTLE}), }, @@ -598,48 +725,36 @@ 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) FOLLOWER(Wartortle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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 @@ -647,8 +762,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( @@ -660,32 +785,52 @@ 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) FOLLOWER(Blastoise, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -697,32 +842,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( @@ -734,16 +899,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 @@ -783,19 +957,24 @@ 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) FOLLOWER(Caterpie, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Caterpie), .tmIlliterate = TRUE, + .levelUpLearnset = sCaterpieLevelUpLearnset, + .teachableLearnset = sCaterpieTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 7, SPECIES_METAPOD}), }, @@ -816,7 +995,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, @@ -833,19 +1012,24 @@ 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) FOLLOWER(Metapod, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Metapod), .tmIlliterate = TRUE, + .levelUpLearnset = sMetapodLevelUpLearnset, + .teachableLearnset = sMetapodTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_BUTTERFREE}), }, @@ -859,38 +1043,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( @@ -902,25 +1079,58 @@ 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) FOLLOWER(Butterfree, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -932,17 +1142,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 @@ -982,20 +1201,25 @@ 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) FOLLOWER(Weedle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Weedle), .tmIlliterate = TRUE, + .levelUpLearnset = sWeedleLevelUpLearnset, + .teachableLearnset = sWeedleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 7, SPECIES_KAKUNA}), }, @@ -1016,7 +1240,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, @@ -1033,54 +1257,40 @@ 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) FOLLOWER(Kakuna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - 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 @@ -1090,8 +1300,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( @@ -1103,32 +1325,54 @@ 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) FOLLOWER(Beedrill, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -1140,17 +1384,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 @@ -1190,18 +1443,23 @@ 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) FOLLOWER(Pidgey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Pidgey), + .levelUpLearnset = sPidgeyLevelUpLearnset, + .teachableLearnset = sPidgeyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_PIDGEOTTO}), }, @@ -1239,51 +1497,39 @@ 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) FOLLOWER(Pidgeotto, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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 @@ -1293,8 +1539,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( @@ -1306,32 +1562,52 @@ 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) FOLLOWER(Pidgeot, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -1342,65 +1618,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( @@ -1412,26 +1677,33 @@ 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), + .palette = gMonPalette_Rattata, + .shinyPalette = gMonShinyPalette_Rattata, + .iconSprite = gMonIcon_Rattata, + .iconPalIndex = 2, + FOOTPRINT(Rattata) FOLLOWER(Rattata, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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, @@ -1439,8 +1711,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" @@ -1451,30 +1736,55 @@ 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), + .palette = gMonPalette_Raticate, + .shinyPalette = gMonShinyPalette_Raticate, + .iconSprite = gMonIcon_Raticate, + .iconPalIndex = 2, + FOOTPRINT(Raticate) FOLLOWER(Raticate, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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( @@ -1486,25 +1796,31 @@ 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), + .palette = gMonPalette_RattataAlolan, + .shinyPalette = gMonShinyPalette_RattataAlolan, + .iconSprite = gMonIcon_RattataAlolan, + .iconPalIndex = 2, + FOOTPRINT(Rattata) FOLLOWER(RattataAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(RattataAlolan), .isAlolanForm = TRUE, - .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 20, SPECIES_RATICATE_ALOLAN}), + .levelUpLearnset = sRattataAlolanLevelUpLearnset, + .teachableLearnset = sRattataAlolanTeachableLearnset, + .formSpeciesIdTable = sRattataFormSpeciesIdTable, + .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 20, SPECIES_RATICATE_ALOLAN}, + {EVO_NONE, 0, SPECIES_RATICATE_ALOLAN_TOTEM}), }, [SPECIES_RATICATE_ALOLAN] = { - RATTATA_FAMILY_MISC_INFO, - RATICATE_MISC_INFO, .baseHP = 75, .baseAttack = 71, .baseDefense = 70, @@ -1512,31 +1828,99 @@ 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" - "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, .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), + .palette = gMonPalette_RaticateAlolan, + .shinyPalette = gMonShinyPalette_RaticateAlolan, + .iconSprite = gMonIcon_RaticateAlolan, + .iconPalIndex = 2, + FOOTPRINT(Raticate) FOLLOWER(RaticateAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(RaticateAlolan), .isAlolanForm = TRUE, + .levelUpLearnset = sRaticateAlolanLevelUpLearnset, + .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 @@ -1577,18 +1961,23 @@ 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) FOLLOWER(Spearow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Spearow), + .levelUpLearnset = sSpearowLevelUpLearnset, + .teachableLearnset = sSpearowTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_FEAROW}), }, @@ -1627,20 +2016,25 @@ 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) FOLLOWER(Fearow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Fearow), + .levelUpLearnset = sFearowLevelUpLearnset, + .teachableLearnset = sFearowTeachableLearnset, }, #endif //P_FAMILY_SPEAROW @@ -1679,19 +2073,24 @@ 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) FOLLOWER(Ekans, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - LEARNSETS(Ekans), + .levelUpLearnset = sEkansLevelUpLearnset, + .teachableLearnset = sEkansTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARBOK}), }, @@ -1735,86 +2134,129 @@ 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) FOLLOWER(Arbok, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - 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) FOLLOWER(Pichu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) FOLLOWER(PichuSpikyEared, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sPichuLevelUpLearnset, + .teachableLearnset = sPichuTeachableLearnset, + .formSpeciesIdTable = sPichuFormSpeciesIdTable, }, #endif //P_GEN_2_CROSS_EVOS @@ -1826,323 +2268,807 @@ 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 FOLLOWER(Pikachu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + 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 @@ -2150,34 +3076,122 @@ 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 + [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 @@ -2190,25 +3204,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, @@ -2216,8 +3213,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( @@ -2229,24 +3238,31 @@ 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), + .palette = gMonPalette_Raichu, + .shinyPalette = gMonShinyPalette_Raichu, + .iconSprite = gMonIcon_Raichu, + .iconPalIndex = 0, + FOOTPRINT(Raichu) FOLLOWER(Raichu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Raichu), + .levelUpLearnset = sRaichuLevelUpLearnset, + .teachableLearnset = sRaichuTeachableLearnset, + .formSpeciesIdTable = sRaichuFormSpeciesIdTable, }, #if P_ALOLAN_FORMS [SPECIES_RAICHU_ALOLAN] = { - RAICHU_MISC_INFO, .baseHP = 60, .baseAttack = 85, .baseDefense = 50, @@ -2254,9 +3270,20 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseSpAttack = 95, .baseSpDefense = 85, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_PSYCHIC), - .abilities = { ABILITY_SURGE_SURFER, ABILITY_NONE }, + .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, 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( @@ -2268,58 +3295,33 @@ 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), + .palette = gMonPalette_RaichuAlolan, + .shinyPalette = gMonShinyPalette_RaichuAlolan, + .iconSprite = gMonIcon_RaichuAlolan, + .iconPalIndex = 2, + FOOTPRINT(Raichu) FOLLOWER(RaichuAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(RaichuAlolan), + .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, @@ -2327,8 +3329,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( @@ -2340,23 +3355,29 @@ 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), + .palette = gMonPalette_Sandshrew, + .shinyPalette = gMonShinyPalette_Sandshrew, + .iconSprite = gMonIcon_Sandshrew, + .iconPalIndex = 2, + FOOTPRINT(Sandshrew) FOLLOWER(Sandshrew, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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, @@ -2364,8 +3385,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( @@ -2377,23 +3411,29 @@ 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), + .palette = gMonPalette_Sandslash, + .shinyPalette = gMonShinyPalette_Sandslash, + .iconSprite = gMonIcon_Sandslash, + .iconPalIndex = 2, + FOOTPRINT(Sandslash) FOLLOWER(Sandslash, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Sandslash), + .levelUpLearnset = sSandslashLevelUpLearnset, + .teachableLearnset = sSandslashTeachableLearnset, + .formSpeciesIdTable = sSandslashFormSpeciesIdTable, }, #if P_ALOLAN_FORMS [SPECIES_SANDSHREW_ALOLAN] = { - SANDSHREW_MISC_INFO, .baseHP = 50, .baseAttack = 75, .baseDefense = 90, @@ -2401,8 +3441,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( @@ -2414,24 +3467,30 @@ 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), + .palette = gMonPalette_SandshrewAlolan, + .shinyPalette = gMonShinyPalette_SandshrewAlolan, + .iconSprite = gMonIcon_SandshrewAlolan, + .iconPalIndex = 0, + FOOTPRINT(Sandshrew) FOLLOWER(SandshrewAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(SandshrewAlolan), .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, @@ -2439,8 +3498,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( @@ -2452,18 +3524,25 @@ 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), + .palette = gMonPalette_SandslashAlolan, + .shinyPalette = gMonShinyPalette_SandslashAlolan, + .iconSprite = gMonIcon_SandslashAlolan, + .iconPalIndex = 0, + FOOTPRINT(Sandslash) FOLLOWER(SandslashAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(SandslashAlolan), .isAlolanForm = TRUE, + .levelUpLearnset = sSandslashAlolanLevelUpLearnset, + .teachableLearnset = sSandslashAlolanTeachableLearnset, + .formSpeciesIdTable = sSandslashFormSpeciesIdTable, }, #endif //P_ALOLAN_FORMS #endif //P_FAMILY_SANDSHREW @@ -2503,19 +3582,24 @@ 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) FOLLOWER(NidoranF, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(NidoranF), + .levelUpLearnset = sNidoranFLevelUpLearnset, + .teachableLearnset = sNidoranFTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_NIDORINA}), }, @@ -2553,18 +3637,23 @@ 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) FOLLOWER(Nidorina, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Nidorina), + .levelUpLearnset = sNidorinaLevelUpLearnset, + .teachableLearnset = sNidorinaTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}), }, @@ -2610,18 +3699,23 @@ 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) FOLLOWER(Nidoqueen, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Nidoqueen), + .levelUpLearnset = sNidoqueenLevelUpLearnset, + .teachableLearnset = sNidoqueenTeachableLearnset, }, [SPECIES_NIDORAN_M] = @@ -2658,18 +3752,23 @@ 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) FOLLOWER(NidoranM, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(NidoranM), + .levelUpLearnset = sNidoranMLevelUpLearnset, + .teachableLearnset = sNidoranMTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_NIDORINO}), }, @@ -2707,18 +3806,23 @@ 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) FOLLOWER(Nidorino, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Nidorino), + .levelUpLearnset = sNidorinoLevelUpLearnset, + .teachableLearnset = sNidorinoTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}), }, @@ -2764,19 +3868,24 @@ 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) FOLLOWER(Nidoking, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Nidoking), + .levelUpLearnset = sNidokingLevelUpLearnset, + .teachableLearnset = sNidokingTeachableLearnset, }, #endif //P_FAMILY_NIDORAN @@ -2824,18 +3933,23 @@ 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) FOLLOWER(Cleffa, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cleffa), + .levelUpLearnset = sCleffaLevelUpLearnset, + .teachableLearnset = sCleffaTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}), }, #endif //P_GEN_2_CROSS_EVOS @@ -2876,18 +3990,23 @@ 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) FOLLOWER(Clefairy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Clefairy), + .levelUpLearnset = sClefairyLevelUpLearnset, + .teachableLearnset = sClefairyTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}), }, @@ -2935,101 +4054,85 @@ 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) FOLLOWER(Clefable, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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), + .palette = gMonPalette_Vulpix, + .shinyPalette = gMonShinyPalette_Vulpix, + .iconSprite = gMonIcon_Vulpix, + .iconPalIndex = 5, + FOOTPRINT(Vulpix) FOLLOWER(Vulpix, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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, @@ -3037,58 +4140,113 @@ 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), + .palette = gMonPalette_Ninetales, + .shinyPalette = gMonShinyPalette_Ninetales, + .iconSprite = gMonIcon_Ninetales, + .iconPalIndex = 3, + FOOTPRINT(Ninetales) FOLLOWER(Ninetales, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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), + .palette = gMonPalette_VulpixAlolan, + .shinyPalette = gMonShinyPalette_VulpixAlolan, + .iconSprite = gMonIcon_VulpixAlolan, + .iconPalIndex = 2, + FOOTPRINT(Vulpix) FOLLOWER(VulpixAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(VulpixAlolan), - .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_NINETALES_ALOLAN}), .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, @@ -3096,26 +4254,52 @@ 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), + .palette = gMonPalette_NinetalesAlolan, + .shinyPalette = gMonShinyPalette_NinetalesAlolan, + .iconSprite = gMonIcon_NinetalesAlolan, + .iconPalIndex = 2, + FOOTPRINT(Ninetales) FOLLOWER(NinetalesAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(NinetalesAlolan), .isAlolanForm = TRUE, + .levelUpLearnset = sNinetalesAlolanLevelUpLearnset, + .teachableLearnset = sNinetalesAlolanTeachableLearnset, + .formSpeciesIdTable = sNinetalesFormSpeciesIdTable, }, #endif //P_ALOLAN_FORMS #endif //P_FAMILY_VULPIX @@ -3163,18 +4347,23 @@ 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) FOLLOWER(Igglybuff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Igglybuff), + .levelUpLearnset = sIgglybuffLevelUpLearnset, + .teachableLearnset = sIgglybuffTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}), }, #endif //P_GEN_2_CROSS_EVOS @@ -3215,18 +4404,23 @@ 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) FOLLOWER(Jigglypuff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Jigglypuff), + .levelUpLearnset = sJigglypuffLevelUpLearnset, + .teachableLearnset = sJigglypuffTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}), }, @@ -3274,18 +4468,23 @@ 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) FOLLOWER(Wigglytuff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Wigglytuff), + .levelUpLearnset = sWigglytuffLevelUpLearnset, + .teachableLearnset = sWigglytuffTeachableLearnset, }, #endif //P_FAMILY_JIGGLYPUFF @@ -3324,21 +4523,28 @@ 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) FOLLOWER(Zubat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Zubat), + .levelUpLearnset = sZubatLevelUpLearnset, + .teachableLearnset = sZubatTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_GOLBAT}), }, @@ -3376,21 +4582,28 @@ 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) FOLLOWER(Golbat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Golbat), + .levelUpLearnset = sGolbatLevelUpLearnset, + .teachableLearnset = sGolbatTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_CROBAT}), }, @@ -3435,19 +4648,24 @@ 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) FOLLOWER(Crobat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Crobat), + .levelUpLearnset = sCrobatLevelUpLearnset, + .teachableLearnset = sCrobatTeachableLearnset, }, #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_ZUBAT @@ -3488,18 +4706,23 @@ 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) FOLLOWER(Oddish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Oddish), + .levelUpLearnset = sOddishLevelUpLearnset, + .teachableLearnset = sOddishTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_GLOOM}), }, @@ -3538,20 +4761,27 @@ 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) FOLLOWER(Gloom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Gloom), + .levelUpLearnset = sGloomLevelUpLearnset, + .teachableLearnset = sGloomTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}), }, @@ -3599,20 +4829,27 @@ 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) FOLLOWER(Vileplume, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Vileplume), + .levelUpLearnset = sVileplumeLevelUpLearnset, + .teachableLearnset = sVileplumeTeachableLearnset, }, #if P_GEN_2_CROSS_EVOS @@ -3659,18 +4896,23 @@ 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) FOLLOWER(Bellossom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bellossom), + .levelUpLearnset = sBellossomLevelUpLearnset, + .teachableLearnset = sBellossomTeachableLearnset, }, #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_ODDISH @@ -3712,19 +4954,24 @@ 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) FOLLOWER(Paras, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG) - LEARNSETS(Paras), + .levelUpLearnset = sParasLevelUpLearnset, + .teachableLearnset = sParasTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_PARASECT}), }, @@ -3765,19 +5012,24 @@ 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) FOLLOWER(Parasect, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG) - LEARNSETS(Parasect), + .levelUpLearnset = sParasectLevelUpLearnset, + .teachableLearnset = sParasectTeachableLearnset, }, #endif //P_FAMILY_PARAS @@ -3816,19 +5068,24 @@ 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) FOLLOWER(Venonat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Venonat), + .levelUpLearnset = sVenonatLevelUpLearnset, + .teachableLearnset = sVenonatTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_VENOMOTH}), }, @@ -3868,48 +5125,28 @@ 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) FOLLOWER(Venomoth, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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 @@ -3919,28 +5156,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 = gMonFootprint_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, @@ -3948,31 +5167,56 @@ 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), + .palette = gMonPalette_Diglett, + .shinyPalette = gMonShinyPalette_Diglett, + .iconSprite = gMonIcon_Diglett, + .iconPalIndex = 2, + FOOTPRINT(Diglett) FOLLOWER(Diglett, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(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, @@ -3980,31 +5224,56 @@ 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), + .palette = gMonPalette_Dugtrio, + .shinyPalette = gMonShinyPalette_Dugtrio, + .iconSprite = gMonIcon_Dugtrio, + .iconPalIndex = 2, + FOOTPRINT(Dugtrio) FOLLOWER(Dugtrio, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Dugtrio), + .levelUpLearnset = sDugtrioLevelUpLearnset, + .teachableLearnset = sDugtrioTeachableLearnset, + .formSpeciesIdTable = sDugtrioFormSpeciesIdTable, }, #if P_ALOLAN_FORMS [SPECIES_DIGLETT_ALOLAN] = { - DIGLETT_MISC_INFO, .baseHP = 10, .baseAttack = 55, .baseDefense = 30, @@ -4012,31 +5281,56 @@ 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), + .palette = gMonPalette_DiglettAlolan, + .shinyPalette = gMonShinyPalette_DiglettAlolan, + .iconSprite = gMonIcon_DiglettAlolan, + .iconPalIndex = 2, + FOOTPRINT(Diglett) FOLLOWER(DiglettAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(DiglettAlolan), .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, @@ -4044,77 +5338,81 @@ 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), + .palette = gMonPalette_DugtrioAlolan, + .shinyPalette = gMonShinyPalette_DugtrioAlolan, + .iconSprite = gMonIcon_DugtrioAlolan, + .iconPalIndex = 2, + FOOTPRINT(Dugtrio) FOLLOWER(DugtrioAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(DugtrioAlolan), .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( @@ -4126,25 +5424,31 @@ 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), + .palette = gMonPalette_Meowth, + .shinyPalette = gMonShinyPalette_Meowth, + .iconSprite = gMonIcon_Meowth, + .iconPalIndex = 1, + FOOTPRINT(Meowth) FOLLOWER(Meowth, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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, @@ -4152,8 +5456,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( @@ -4165,35 +5482,52 @@ 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), + .palette = gMonPalette_Persian, + .shinyPalette = gMonShinyPalette_Persian, + .iconSprite = gMonIcon_Persian, + .iconPalIndex = 1, + FOOTPRINT(Persian) FOLLOWER(Persian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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( @@ -4205,24 +5539,30 @@ 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), + .palette = gMonPalette_MeowthAlolan, + .shinyPalette = gMonShinyPalette_MeowthAlolan, + .iconSprite = gMonIcon_MeowthAlolan, + .iconPalIndex = 2, + FOOTPRINT(Meowth) FOLLOWER(MeowthAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(MeowthAlolan), .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, @@ -4230,8 +5570,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( @@ -4243,35 +5596,52 @@ 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), + .palette = gMonPalette_PersianAlolan, + .shinyPalette = gMonShinyPalette_PersianAlolan, + .iconSprite = gMonIcon_PersianAlolan, + .iconPalIndex = 2, + FOOTPRINT(Persian) FOLLOWER(PersianAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(PersianAlolan), .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( @@ -4283,18 +5653,25 @@ 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), + .palette = gMonPalette_MeowthGalarian, + .shinyPalette = gMonShinyPalette_MeowthGalarian, + .iconSprite = gMonIcon_MeowthGalarian, + .iconPalIndex = 0, + FOOTPRINT(Meowth) FOLLOWER(MeowthGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(MeowthGalarian), .isGalarianForm = TRUE, + .levelUpLearnset = sMeowthGalarianLevelUpLearnset, + .teachableLearnset = sMeowthGalarianTeachableLearnset, + .formSpeciesIdTable = sMeowthFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_PERRSERKER}), }, @@ -4331,36 +5708,51 @@ 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) FOLLOWER(Perrserker, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -4372,17 +5764,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 @@ -4423,18 +5822,23 @@ 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) FOLLOWER(Psyduck, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Psyduck), + .levelUpLearnset = sPsyduckLevelUpLearnset, + .teachableLearnset = sPsyduckTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_GOLDUCK}), }, @@ -4472,18 +5876,23 @@ 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) FOLLOWER(Golduck, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Golduck), + .levelUpLearnset = sGolduckLevelUpLearnset, + .teachableLearnset = sGolduckTeachableLearnset, }, #endif //P_FAMILY_PSYDUCK @@ -4522,19 +5931,24 @@ 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) FOLLOWER(Mankey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Mankey), + .levelUpLearnset = sMankeyLevelUpLearnset, + .teachableLearnset = sMankeyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_PRIMEAPE}), }, @@ -4572,18 +5986,23 @@ 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) FOLLOWER(Primeape, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Primeape), + .levelUpLearnset = sPrimeapeLevelUpLearnset, + .teachableLearnset = sPrimeapeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_MOVE_TWENTY_TIMES, MOVE_RAGE_FIST, SPECIES_ANNIHILAPE}), }, @@ -4622,56 +6041,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, @@ -4679,7 +6071,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, @@ -4692,24 +6096,30 @@ 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), + .palette = gMonPalette_Growlithe, + .shinyPalette = gMonShinyPalette_Growlithe, + .iconSprite = gMonIcon_Growlithe, + .iconPalIndex = 3, + FOOTPRINT(Growlithe) FOLLOWER(Growlithe, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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, @@ -4717,7 +6127,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( @@ -4729,24 +6152,30 @@ 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), + .palette = gMonPalette_Arcanine, + .shinyPalette = gMonShinyPalette_Arcanine, + .iconSprite = gMonIcon_Arcanine, + .iconPalIndex = 3, + FOOTPRINT(Arcanine) FOLLOWER(Arcanine, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Arcanine), + .levelUpLearnset = sArcanineLevelUpLearnset, + .teachableLearnset = sArcanineTeachableLearnset, + .formSpeciesIdTable = sArcanineFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_GROWLITHE_HISUIAN] = { - GROWLITHE_MISC_INFO, .baseHP = 60, .baseAttack = 75, .baseDefense = 45, @@ -4754,7 +6183,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, @@ -4767,24 +6208,30 @@ 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), + .palette = gMonPalette_GrowlitheHisuian, + .shinyPalette = gMonShinyPalette_GrowlitheHisuian, + .iconSprite = gMonIcon_GrowlitheHisuian, + .iconPalIndex = 0, + FOOTPRINT(Growlithe) FOLLOWER(GrowlitheHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(GrowlitheHisuian), .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, @@ -4792,7 +6239,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( @@ -4804,18 +6264,25 @@ 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), + .palette = gMonPalette_ArcanineHisuian, + .shinyPalette = gMonShinyPalette_ArcanineHisuian, + .iconSprite = gMonIcon_ArcanineHisuian, + .iconPalIndex = 0, + FOOTPRINT(Arcanine) FOLLOWER(ArcanineHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(ArcanineHisuian), .isHisuianForm = TRUE, + .levelUpLearnset = sArcanineHisuianLevelUpLearnset, + .teachableLearnset = sArcanineHisuianTeachableLearnset, + .formSpeciesIdTable = sArcanineFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_GROWLITHE @@ -4856,18 +6323,23 @@ 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) FOLLOWER(Poliwag, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Poliwag), + .levelUpLearnset = sPoliwagLevelUpLearnset, + .teachableLearnset = sPoliwagTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_POLIWHIRL}), }, @@ -4907,19 +6379,24 @@ 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) FOLLOWER(Poliwhirl, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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}), @@ -4969,18 +6446,23 @@ 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) FOLLOWER(Poliwrath, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Poliwrath), + .levelUpLearnset = sPoliwrathLevelUpLearnset, + .teachableLearnset = sPoliwrathTeachableLearnset, }, #if P_GEN_2_CROSS_EVOS @@ -5026,21 +6508,28 @@ 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) FOLLOWER(Politoed, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Politoed), + .levelUpLearnset = sPolitoedLevelUpLearnset, + .teachableLearnset = sPolitoedTeachableLearnset, }, #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_POLIWAG @@ -5087,18 +6576,23 @@ 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) FOLLOWER(Abra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Abra), + .levelUpLearnset = sAbraLevelUpLearnset, + .teachableLearnset = sAbraTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_KADABRA}), }, @@ -5138,54 +6632,43 @@ 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) FOLLOWER(Kadabra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - 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 @@ -5195,8 +6678,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( @@ -5208,33 +6702,56 @@ 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) FOLLOWER(Alakazam, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) + .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( @@ -5245,17 +6762,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 @@ -5302,18 +6828,23 @@ 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) FOLLOWER(Machop, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Machop), + .levelUpLearnset = sMachopLevelUpLearnset, + .teachableLearnset = sMachopTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_MACHOKE}), }, @@ -5353,18 +6884,23 @@ 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) FOLLOWER(Machoke, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Machoke), + .levelUpLearnset = sMachokeLevelUpLearnset, + .teachableLearnset = sMachokeTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_MACHAMP}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_MACHAMP}), }, @@ -5377,37 +6913,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( @@ -5419,22 +6948,52 @@ 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) FOLLOWER(Machamp, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -5446,16 +7005,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 @@ -5495,18 +7063,23 @@ 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) FOLLOWER(Bellsprout, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bellsprout), + .levelUpLearnset = sBellsproutLevelUpLearnset, + .teachableLearnset = sBellsproutTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_WEEPINBELL}), }, @@ -5544,19 +7117,24 @@ 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) FOLLOWER(Weepinbell, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Weepinbell), + .levelUpLearnset = sWeepinbellLevelUpLearnset, + .teachableLearnset = sWeepinbellTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}), }, @@ -5602,18 +7180,23 @@ 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) FOLLOWER(Victreebel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Victreebel), + .levelUpLearnset = sVictreebelLevelUpLearnset, + .teachableLearnset = sVictreebelTeachableLearnset, }, #endif //P_FAMILY_BELLSPROUT @@ -5653,18 +7236,23 @@ 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) FOLLOWER(Tentacool, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Tentacool), + .levelUpLearnset = sTentacoolLevelUpLearnset, + .teachableLearnset = sTentacoolTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_TENTACRUEL}), }, @@ -5703,34 +7291,27 @@ 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) FOLLOWER(Tentacruel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG) - 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 @@ -5740,52 +7321,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 @@ -5798,78 +7333,144 @@ 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), + .palette = gMonPalette_Geodude, + .shinyPalette = gMonShinyPalette_Geodude, + .iconSprite = gMonIcon_Geodude, + .iconPalIndex = 1, + FOOTPRINT(Geodude) FOLLOWER(Geodude, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(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), + .palette = gMonPalette_Graveler, + .shinyPalette = gMonShinyPalette_Graveler, + .iconSprite = gMonIcon_Graveler, + .iconPalIndex = 1, + FOOTPRINT(Graveler) FOLLOWER(Graveler, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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( @@ -5881,82 +7482,167 @@ 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), + .palette = gMonPalette_Golem, + .shinyPalette = gMonShinyPalette_Golem, + .iconSprite = gMonIcon_Golem, + .iconPalIndex = 2, + FOOTPRINT(Golem) FOLLOWER(Golem, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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), + .palette = gMonPalette_GeodudeAlolan, + .shinyPalette = gMonShinyPalette_GeodudeAlolan, + .iconSprite = gMonIcon_GeodudeAlolan, + .iconPalIndex = 2, + FOOTPRINT(Geodude) FOLLOWER(GeodudeAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(GeodudeAlolan), + .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), + .palette = gMonPalette_GravelerAlolan, + .shinyPalette = gMonShinyPalette_GravelerAlolan, + .iconSprite = gMonIcon_GravelerAlolan, + .iconPalIndex = 2, + FOOTPRINT(Graveler) FOLLOWER(GravelerAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(GravelerAlolan), + .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( @@ -5968,77 +7654,52 @@ 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), + .palette = gMonPalette_GolemAlolan, + .shinyPalette = gMonShinyPalette_GolemAlolan, + .iconSprite = gMonIcon_GolemAlolan, + .iconPalIndex = 2, + FOOTPRINT(Golem) FOLLOWER(GolemAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(GolemAlolan), + .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, @@ -6051,56 +7712,105 @@ 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), + .palette = gMonPalette_Ponyta, + .shinyPalette = gMonShinyPalette_Ponyta, + .iconSprite = gMonIcon_Ponyta, + .iconPalIndex = 3, + FOOTPRINT(Ponyta) FOLLOWER(Ponyta, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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), + .palette = gMonPalette_Rapidash, + .shinyPalette = gMonShinyPalette_Rapidash, + .iconSprite = gMonIcon_Rapidash, + .iconPalIndex = 3, + FOOTPRINT(Rapidash) FOLLOWER(Rapidash, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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, @@ -6113,131 +7823,139 @@ 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), + .palette = gMonPalette_PonytaGalarian, + .shinyPalette = gMonShinyPalette_PonytaGalarian, + .iconSprite = gMonIcon_PonytaGalarian, + .iconPalIndex = 2, + FOOTPRINT(Ponyta) FOLLOWER(PonytaGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(PonytaGalarian), + .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), + .palette = gMonPalette_RapidashGalarian, + .shinyPalette = gMonShinyPalette_RapidashGalarian, + .iconSprite = gMonIcon_RapidashGalarian, + .iconPalIndex = 2, + FOOTPRINT(Rapidash) FOLLOWER(RapidashGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(RapidashGalarian), + .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), + .palette = gMonPalette_Slowpoke, + .shinyPalette = gMonShinyPalette_Slowpoke, + .iconSprite = gMonIcon_Slowpoke, + .iconPalIndex = 0, + FOOTPRINT(Slowpoke) FOLLOWER(Slowpoke, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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}), @@ -6245,7 +7963,6 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = [SPECIES_SLOWBRO] = { - SLOWBRO_MISC_INFO, .baseHP = 95, .baseAttack = 75, .baseDefense = 110, @@ -6253,9 +7970,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( @@ -6267,24 +7996,30 @@ 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), + .palette = gMonPalette_Slowbro, + .shinyPalette = gMonShinyPalette_Slowbro, + .iconSprite = gMonIcon_Slowbro, + .iconPalIndex = 0, + FOOTPRINT(Slowbro) FOLLOWER(Slowbro, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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, @@ -6292,11 +8027,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" @@ -6306,24 +8053,30 @@ 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), + .palette = gMonPalette_Slowking, + .shinyPalette = gMonShinyPalette_Slowking, + .iconSprite = gMonIcon_Slowking, + .iconPalIndex = 0, + FOOTPRINT(Slowking) FOLLOWER(Slowking, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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, @@ -6331,9 +8084,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( @@ -6345,52 +8110,88 @@ 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), + .palette = gMonPalette_SlowpokeGalarian, + .shinyPalette = gMonShinyPalette_SlowpokeGalarian, + .iconSprite = gMonIcon_SlowpokeGalarian, + .iconPalIndex = 1, + FOOTPRINT(Slowpoke) FOLLOWER(SlowpokeGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(SlowpokeGalarian), .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, @@ -6398,9 +8199,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( @@ -6412,24 +8225,30 @@ 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), + .palette = gMonPalette_SlowbroGalarian, + .shinyPalette = gMonShinyPalette_SlowbroGalarian, + .iconSprite = gMonIcon_SlowbroGalarian, + .iconPalIndex = 0, + FOOTPRINT(Slowbro) FOLLOWER(SlowbroGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(SlowbroGalarian), .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, @@ -6437,10 +8256,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" @@ -6450,18 +8281,25 @@ 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), + .palette = gMonPalette_SlowkingGalarian, + .shinyPalette = gMonShinyPalette_SlowkingGalarian, + .iconSprite = gMonIcon_SlowkingGalarian, + .iconPalIndex = 2, + FOOTPRINT(Slowking) FOLLOWER(SlowkingGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(SlowkingGalarian), .isGalarianForm = TRUE, + .levelUpLearnset = sSlowkingGalarianLevelUpLearnset, + .teachableLearnset = sSlowkingGalarianTeachableLearnset, + .formSpeciesIdTable = sSlowkingFormSpeciesIdTable, }, #endif //P_GEN_2_CROSS_EVOS #endif //P_GALARIAN_FORMS @@ -6503,19 +8341,24 @@ 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) FOLLOWER(Magnemite, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Magnemite), + .levelUpLearnset = sMagnemiteLevelUpLearnset, + .teachableLearnset = sMagnemiteTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MAGNETON}), }, @@ -6554,19 +8397,24 @@ 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) FOLLOWER(Magneton, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Magneton), + .levelUpLearnset = sMagnetonLevelUpLearnset, + .teachableLearnset = sMagnetonTeachableLearnset, .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_MAGNEZONE}, {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_MAGNEZONE}), }, @@ -6613,19 +8461,24 @@ 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) FOLLOWER(Magnezone, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Magnezone), + .levelUpLearnset = sMagnezoneLevelUpLearnset, + .teachableLearnset = sMagnezoneTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_MAGNEMITE @@ -6641,35 +8494,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( @@ -6681,23 +8529,29 @@ 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), + .palette = gMonPalette_Farfetchd, + .shinyPalette = gMonShinyPalette_Farfetchd, + .iconSprite = gMonIcon_Farfetchd, + .iconPalIndex = 1, + FOOTPRINT(Farfetchd) FOLLOWER(Farfetchd, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(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, @@ -6705,8 +8559,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( @@ -6718,18 +8585,25 @@ 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), + .palette = gMonPalette_FarfetchdGalarian, + .shinyPalette = gMonShinyPalette_FarfetchdGalarian, + .iconSprite = gMonIcon_FarfetchdGalarian, + .iconPalIndex = 1, + FOOTPRINT(Farfetchd) FOLLOWER(FarfetchdGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(FarfetchdGalarian), .isGalarianForm = TRUE, + .levelUpLearnset = sFarfetchdGalarianLevelUpLearnset, + .teachableLearnset = sFarfetchdGalarianTeachableLearnset, + .formSpeciesIdTable = sFarfetchdFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_CRITICAL_HITS, 3, SPECIES_SIRFETCHD}), }, @@ -6768,18 +8642,23 @@ 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) FOLLOWER(Sirfetchd, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Sirfetchd), + .levelUpLearnset = sSirfetchdLevelUpLearnset, + .teachableLearnset = sSirfetchdTeachableLearnset, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_FARFETCHD @@ -6820,20 +8699,27 @@ 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) FOLLOWER(Doduo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Doduo), + .levelUpLearnset = sDoduoLevelUpLearnset, + .teachableLearnset = sDoduoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_DODRIO}), }, @@ -6878,20 +8764,27 @@ 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) FOLLOWER(Dodrio, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Dodrio), + .levelUpLearnset = sDodrioLevelUpLearnset, + .teachableLearnset = sDodrioTeachableLearnset, }, #endif //P_FAMILY_DODUO @@ -6930,18 +8823,23 @@ 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) FOLLOWER(Seel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - LEARNSETS(Seel), + .levelUpLearnset = sSeelLevelUpLearnset, + .teachableLearnset = sSeelTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_DEWGONG}), }, @@ -6979,76 +8877,51 @@ 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) FOLLOWER(Dewgong, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -7060,24 +8933,52 @@ 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), + .palette = gMonPalette_Grimer, + .shinyPalette = gMonShinyPalette_Grimer, + .iconSprite = gMonIcon_Grimer, + .iconPalIndex = 2, + FOOTPRINT(Grimer) FOLLOWER(Grimer, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - LEARNSETS(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( @@ -7089,31 +8990,52 @@ 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), + .palette = gMonPalette_Muk, + .shinyPalette = gMonShinyPalette_Muk, + .iconSprite = gMonIcon_Muk, + .iconPalIndex = 2, + FOOTPRINT(Muk) FOLLOWER(Muk, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - LEARNSETS(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( @@ -7125,25 +9047,54 @@ 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), + .palette = gMonPalette_GrimerAlolan, + .shinyPalette = gMonShinyPalette_GrimerAlolan, + .iconSprite = gMonIcon_GrimerAlolan, + .iconPalIndex = 1, + FOOTPRINT(Grimer) FOLLOWER(GrimerAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(GrimerAlolan), + .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( @@ -7155,17 +9106,25 @@ 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), + .palette = gMonPalette_MukAlolan, + .shinyPalette = gMonShinyPalette_MukAlolan, + .iconSprite = gMonIcon_MukAlolan, + .iconPalIndex = 0, + FOOTPRINT(Muk) FOLLOWER(MukAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(MukAlolan), + .isAlolanForm = TRUE, + .levelUpLearnset = sMukAlolanLevelUpLearnset, + .teachableLearnset = sMukAlolanTeachableLearnset, + .formSpeciesIdTable = sMukFormSpeciesIdTable, }, #endif //P_ALOLAN_FORMS #endif //P_FAMILY_GRIMER @@ -7207,19 +9166,24 @@ 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) FOLLOWER(Shellder, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Shellder), + .levelUpLearnset = sShellderLevelUpLearnset, + .teachableLearnset = sShellderTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}), }, @@ -7259,18 +9223,23 @@ 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) FOLLOWER(Cloyster, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Cloyster), + .levelUpLearnset = sCloysterLevelUpLearnset, + .teachableLearnset = sCloysterTeachableLearnset, }, #endif //P_FAMILY_SHELLDER @@ -7292,7 +9261,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, @@ -7309,19 +9278,24 @@ 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) FOLLOWER(Gastly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Gastly), + .levelUpLearnset = sGastlyLevelUpLearnset, + .teachableLearnset = sGastlyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_HAUNTER}), }, @@ -7342,7 +9316,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, @@ -7359,20 +9333,25 @@ 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) FOLLOWER(Haunter, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Haunter), + .levelUpLearnset = sHaunterLevelUpLearnset, + .teachableLearnset = sHaunterTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GENGAR}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GENGAR}), }, @@ -7383,33 +9362,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 @@ -7417,7 +9379,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( @@ -7429,31 +9401,50 @@ 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) FOLLOWER(Gengar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -7465,31 +9456,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( @@ -7501,15 +9512,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 @@ -7549,54 +9570,52 @@ 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) FOLLOWER(Onix, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - 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( @@ -7608,34 +9627,57 @@ 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) FOLLOWER(Steelix, SIZE_64x64, SHADOW_SIZE_M, TRACKS_SLITHER) + .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( @@ -7647,16 +9689,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 @@ -7697,19 +9748,24 @@ 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) FOLLOWER(Drowzee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Drowzee), + .levelUpLearnset = sDrowzeeLevelUpLearnset, + .teachableLearnset = sDrowzeeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_HYPNO}), }, @@ -7747,21 +9803,28 @@ 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) FOLLOWER(Hypno, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Hypno), + .levelUpLearnset = sHypnoLevelUpLearnset, + .teachableLearnset = sHypnoTeachableLearnset, }, #endif //P_FAMILY_DROWZEE @@ -7800,52 +9863,50 @@ 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) FOLLOWER(Krabby, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -7857,23 +9918,53 @@ 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) FOLLOWER(Kingler, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -7885,52 +9976,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 @@ -7939,127 +10008,225 @@ 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), + .palette = gMonPalette_Voltorb, + .shinyPalette = gMonShinyPalette_Voltorb, + .iconSprite = gMonIcon_Voltorb, + .iconPalIndex = 0, + FOOTPRINT(Voltorb) FOLLOWER(Voltorb, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(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), + .palette = gMonPalette_Electrode, + .shinyPalette = gMonShinyPalette_Electrode, + .iconSprite = gMonIcon_Electrode, + .iconPalIndex = 0, + FOOTPRINT(Electrode) FOLLOWER(Electrode, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(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), + .palette = gMonPalette_VoltorbHisuian, + .shinyPalette = gMonShinyPalette_VoltorbHisuian, + .iconSprite = gMonIcon_VoltorbHisuian, + .iconPalIndex = 0, + FOOTPRINT(Voltorb) FOLLOWER(VoltorbHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(VoltorbHisuian), .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), + .palette = gMonPalette_ElectrodeHisuian, + .shinyPalette = gMonShinyPalette_ElectrodeHisuian, + .iconSprite = gMonIcon_ElectrodeHisuian, + .iconPalIndex = 1, + FOOTPRINT(Electrode) FOLLOWER(ElectrodeHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(ElectrodeHisuian), .isHisuianForm = TRUE, + .levelUpLearnset = sElectrodeHisuianLevelUpLearnset, + .teachableLearnset = sElectrodeHisuianTeachableLearnset, + .formSpeciesIdTable = sElectrodeFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_VOLTORB @@ -8100,18 +10267,23 @@ 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) FOLLOWER(Exeggcute, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Exeggcute), + .levelUpLearnset = sExeggcuteLevelUpLearnset, + .teachableLearnset = sExeggcuteTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}, {EVO_NONE, 0, SPECIES_EXEGGUTOR_ALOLAN}), }, @@ -8124,28 +10296,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, @@ -8153,7 +10307,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( @@ -8165,23 +10332,29 @@ 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), + .palette = gMonPalette_Exeggutor, + .shinyPalette = gMonShinyPalette_Exeggutor, + .iconSprite = gMonIcon_Exeggutor, + .iconPalIndex = 1, + FOOTPRINT(Exeggutor) FOLLOWER(Exeggutor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Exeggutor), + .levelUpLearnset = sExeggutorLevelUpLearnset, + .teachableLearnset = sExeggutorTeachableLearnset, + .formSpeciesIdTable = sExeggutorFormSpeciesIdTable, }, #if P_ALOLAN_FORMS [SPECIES_EXEGGUTOR_ALOLAN] = { - EXEGGUTOR_MISC_INFO, .baseHP = 95, .baseAttack = 105, .baseDefense = 85, @@ -8189,7 +10362,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( @@ -8201,18 +10387,25 @@ 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), + .palette = gMonPalette_ExeggutorAlolan, + .shinyPalette = gMonShinyPalette_ExeggutorAlolan, + .iconSprite = gMonIcon_ExeggutorAlolan, + .iconPalIndex = 1, + FOOTPRINT(Exeggutor) FOLLOWER(ExeggutorAlolan, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(ExeggutorAlolan), .isAlolanForm = TRUE, + .levelUpLearnset = sExeggutorAlolanLevelUpLearnset, + .teachableLearnset = sExeggutorAlolanTeachableLearnset, + .formSpeciesIdTable = sExeggutorFormSpeciesIdTable, }, #endif //P_ALOLAN_FORMS #endif //P_FAMILY_EXEGGCUTE @@ -8253,101 +10446,187 @@ 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) FOLLOWER(Cubone, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cubone), + .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}), }, -#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), + .palette = gMonPalette_Marowak, + .shinyPalette = gMonShinyPalette_Marowak, + .iconSprite = gMonIcon_Marowak, + .iconPalIndex = 2, + FOOTPRINT(Marowak) FOLLOWER(Marowak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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), + .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, - 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), + .palette = gMonPalette_MarowakAlolan, + .shinyPalette = gMonShinyPalette_MarowakAlolan, + .iconSprite = gMonIcon_MarowakAlolan, + .iconPalIndex = 1, + FOOTPRINT(Marowak) FOLLOWER(MarowakAlolan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(MarowakAlolan), .isAlolanForm = TRUE, + .levelUpLearnset = sMarowakAlolanLevelUpLearnset, + .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 @@ -8388,18 +10667,23 @@ 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) FOLLOWER(Tyrogue, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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}), @@ -8440,18 +10724,23 @@ 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) FOLLOWER(Hitmonlee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Hitmonlee), + .levelUpLearnset = sHitmonleeLevelUpLearnset, + .teachableLearnset = sHitmonleeTeachableLearnset, }, [SPECIES_HITMONCHAN] = @@ -8488,18 +10777,23 @@ 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) FOLLOWER(Hitmonchan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Hitmonchan), + .levelUpLearnset = sHitmonchanLevelUpLearnset, + .teachableLearnset = sHitmonchanTeachableLearnset, }, #if P_GEN_2_CROSS_EVOS @@ -8537,18 +10831,23 @@ 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) FOLLOWER(Hitmontop, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Hitmontop), + .levelUpLearnset = sHitmontopLevelUpLearnset, + .teachableLearnset = sHitmontopTeachableLearnset, }, #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_HITMONS @@ -8589,18 +10888,23 @@ 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) FOLLOWER(Lickitung, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Lickitung), + .levelUpLearnset = sLickitungLevelUpLearnset, + .teachableLearnset = sLickitungTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_ROLLOUT, SPECIES_LICKILICKY}), }, @@ -8640,18 +10944,23 @@ 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) FOLLOWER(Lickilicky, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Lickilicky), + .levelUpLearnset = sLickilickyLevelUpLearnset, + .teachableLearnset = sLickilickyTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_LICKITUNG @@ -8675,11 +10984,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, ABILITY_NONE }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Koffing"), .cryId = CRY_KOFFING, @@ -8696,57 +11005,57 @@ 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) FOLLOWER(Koffing, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - 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, 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( @@ -8758,29 +11067,53 @@ 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), + .palette = gMonPalette_Weezing, + .shinyPalette = gMonShinyPalette_Weezing, + .iconSprite = gMonIcon_Weezing, + .iconPalIndex = 2, + FOOTPRINT(Weezing) FOLLOWER(Weezing, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(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( @@ -8792,18 +11125,26 @@ 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), + .palette = gMonPalette_WeezingGalarian, + .shinyPalette = gMonShinyPalette_WeezingGalarian, + .iconSprite = gMonIcon_WeezingGalarian, + .iconPalIndex = 1, + FOOTPRINT(Weezing) FOLLOWER(WeezingGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(WeezingGalarian), + .isGalarianForm = TRUE, + .levelUpLearnset = sWeezingGalarianLevelUpLearnset, + .teachableLearnset = sWeezingGalarianTeachableLearnset, + .formSpeciesIdTable = sWeezingFormSpeciesIdTable, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_KOFFING @@ -8843,20 +11184,27 @@ 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) FOLLOWER(Rhyhorn, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Rhyhorn), + .levelUpLearnset = sRhyhornLevelUpLearnset, + .teachableLearnset = sRhyhornTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_RHYDON}), }, @@ -8894,20 +11242,27 @@ 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) FOLLOWER(Rhydon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Rhydon), + .levelUpLearnset = sRhydonLevelUpLearnset, + .teachableLearnset = sRhydonTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}, {EVO_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}), }, @@ -8953,20 +11308,27 @@ 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) FOLLOWER(Rhyperior, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Rhyperior), + .levelUpLearnset = sRhyperiorLevelUpLearnset, + .teachableLearnset = sRhyperiorTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_RHYHORN @@ -9008,18 +11370,23 @@ 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) FOLLOWER(Happiny, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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}), }, @@ -9060,18 +11427,23 @@ 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) FOLLOWER(Chansey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Chansey), + .levelUpLearnset = sChanseyLevelUpLearnset, + .teachableLearnset = sChanseyTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}), }, @@ -9111,18 +11483,23 @@ 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) FOLLOWER(Blissey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Blissey), + .levelUpLearnset = sBlisseyLevelUpLearnset, + .teachableLearnset = sBlisseyTeachableLearnset, }, #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_CHANSEY @@ -9162,18 +11539,23 @@ 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) FOLLOWER(Tangela, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Tangela), + .levelUpLearnset = sTangelaLevelUpLearnset, + .teachableLearnset = sTangelaTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_TANGROWTH}), }, @@ -9212,106 +11594,139 @@ 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) FOLLOWER(Tangrowth, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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) FOLLOWER(Kangaskhan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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 @@ -9352,18 +11767,23 @@ 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) FOLLOWER(Horsea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Horsea), + .levelUpLearnset = sHorseaLevelUpLearnset, + .teachableLearnset = sHorseaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_SEADRA}), }, @@ -9403,18 +11823,23 @@ 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) FOLLOWER(Seadra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Seadra), + .levelUpLearnset = sSeadraLevelUpLearnset, + .teachableLearnset = sSeadraTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}, {EVO_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}), }, @@ -9463,18 +11888,23 @@ 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) FOLLOWER(Kingdra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Kingdra), + .levelUpLearnset = sKingdraLevelUpLearnset, + .teachableLearnset = sKingdraTeachableLearnset, }, #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_HORSEA @@ -9515,20 +11945,27 @@ 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) FOLLOWER(Goldeen, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Goldeen), + .levelUpLearnset = sGoldeenLevelUpLearnset, + .teachableLearnset = sGoldeenTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_SEAKING}), }, @@ -9567,20 +12004,27 @@ 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) FOLLOWER(Seaking, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Seaking), + .levelUpLearnset = sSeakingLevelUpLearnset, + .teachableLearnset = sSeakingTeachableLearnset, }, #endif //P_FAMILY_GOLDEEN @@ -9622,18 +12066,23 @@ 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) FOLLOWER(Staryu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Staryu), + .levelUpLearnset = sStaryuLevelUpLearnset, + .teachableLearnset = sStaryuTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}), }, @@ -9673,18 +12122,23 @@ 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) FOLLOWER(Starmie, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Starmie), + .levelUpLearnset = sStarmieLevelUpLearnset, + .teachableLearnset = sStarmieTeachableLearnset, }, #endif //P_FAMILY_STARYU @@ -9698,11 +12152,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, @@ -9728,54 +12182,50 @@ 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) FOLLOWER(MimeJr, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -9788,23 +12238,29 @@ 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), + .palette = gMonPalette_MrMime, + .shinyPalette = gMonShinyPalette_MrMime, + .iconSprite = gMonIcon_MrMime, + .iconPalIndex = 0, + FOOTPRINT(MrMime) FOLLOWER(MrMime, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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, @@ -9812,9 +12268,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, @@ -9827,18 +12293,25 @@ 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), + .palette = gMonPalette_MrMimeGalarian, + .shinyPalette = gMonShinyPalette_MrMimeGalarian, + .iconSprite = gMonIcon_MrMimeGalarian, + .iconPalIndex = 0, + FOOTPRINT(MrMime) FOLLOWER(MrMimeGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(MrMimeGalarian), .isGalarianForm = TRUE, + .levelUpLearnset = sMrMimeGalarianLevelUpLearnset, + .teachableLearnset = sMrMimeGalarianTeachableLearnset, + .formSpeciesIdTable = sMrMimeFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_MR_RIME}), }, @@ -9875,18 +12348,23 @@ 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) FOLLOWER(MrRime, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(MrRime), + .levelUpLearnset = sMrRimeLevelUpLearnset, + .teachableLearnset = sMrRimeTeachableLearnset, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_MR_MIME @@ -9926,56 +12404,55 @@ 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) FOLLOWER(Scyther, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -9987,34 +12464,54 @@ 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) FOLLOWER(Scizor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -10026,15 +12523,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 @@ -10074,18 +12581,23 @@ 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) FOLLOWER(Kleavor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Kleavor), + .levelUpLearnset = sKleavorLevelUpLearnset, + .teachableLearnset = sKleavorTeachableLearnset, }, #endif //P_GEN_8_CROSS_EVOS #endif //P_FAMILY_SCYTHER @@ -10126,19 +12638,24 @@ 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) FOLLOWER(Smoochum, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Smoochum), + .levelUpLearnset = sSmoochumLevelUpLearnset, + .teachableLearnset = sSmoochumTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_JYNX}), }, #endif //P_GEN_2_CROSS_EVOS @@ -10177,18 +12694,23 @@ 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) FOLLOWER(Jynx, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Jynx), + .levelUpLearnset = sJynxLevelUpLearnset, + .teachableLearnset = sJynxTeachableLearnset, }, #endif //P_FAMILY_JYNX @@ -10230,18 +12752,23 @@ 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) FOLLOWER(Elekid, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Elekid), + .levelUpLearnset = sElekidLevelUpLearnset, + .teachableLearnset = sElekidTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ELECTABUZZ}), }, #endif //P_GEN_2_CROSS_EVOS @@ -10282,18 +12809,23 @@ 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) FOLLOWER(Electabuzz, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Electabuzz), + .levelUpLearnset = sElectabuzzLevelUpLearnset, + .teachableLearnset = sElectabuzzTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}, {EVO_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}), }, @@ -10340,18 +12872,23 @@ 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) FOLLOWER(Electivire, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Electivire), + .levelUpLearnset = sElectivireLevelUpLearnset, + .teachableLearnset = sElectivireTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_ELECTABUZZ @@ -10394,18 +12931,23 @@ 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) FOLLOWER(Magby, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Magby), + .levelUpLearnset = sMagbyLevelUpLearnset, + .teachableLearnset = sMagbyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MAGMAR}), }, #endif //P_GEN_2_CROSS_EVOS @@ -10445,18 +12987,23 @@ 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) FOLLOWER(Magmar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Magmar), + .levelUpLearnset = sMagmarLevelUpLearnset, + .teachableLearnset = sMagmarTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}, {EVO_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}), }, @@ -10504,43 +13051,30 @@ 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) FOLLOWER(Magmortar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -10548,9 +13082,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( @@ -10562,22 +13107,30 @@ 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) FOLLOWER(Pinsir, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sPinsirLevelUpLearnset, + .teachableLearnset = sPinsirTeachableLearnset, + .formSpeciesIdTable = sPinsirFormSpeciesIdTable, + .formChangeTable = sPinsirFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_PINSIR_MEGA] = { - PINSIR_MISC_INFO, .baseHP = 65, .baseAttack = 155, .baseDefense = 120, @@ -10585,9 +13138,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( @@ -10599,45 +13163,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, @@ -10645,104 +13197,214 @@ 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), + .palette = gMonPalette_Tauros, + .shinyPalette = gMonShinyPalette_Tauros, + .iconSprite = gMonIcon_Tauros, + .iconPalIndex = 2, + FOOTPRINT(Tauros) FOLLOWER(Tauros, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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 @@ -10782,49 +13444,33 @@ 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) FOLLOWER(Magikarp, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - 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, @@ -10832,33 +13478,59 @@ 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) FOLLOWER(Gyarados, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) + .levelUpLearnset = sGyaradosLevelUpLearnset, + .teachableLearnset = sGyaradosTeachableLearnset, + .formSpeciesIdTable = sGyaradosFormSpeciesIdTable, + .formChangeTable = sGyaradosFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_GYARADOS_MEGA] = { - GYARADOS_MISC_INFO, .baseHP = 95, .baseAttack = 155, .baseDefense = 109, @@ -10866,63 +13538,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( @@ -10934,22 +13624,53 @@ 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) FOLLOWER(Lapras, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) + .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( @@ -10961,16 +13682,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 @@ -11012,76 +13742,81 @@ 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) FOLLOWER(Ditto, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - 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( - "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, .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) FOLLOWER(Eevee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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}, @@ -11097,7 +13832,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( @@ -11109,19 +13864,83 @@ 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 + [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, @@ -11156,18 +13975,23 @@ 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) FOLLOWER(Vaporeon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Vaporeon), + .levelUpLearnset = sVaporeonLevelUpLearnset, + .teachableLearnset = sVaporeonTeachableLearnset, }, [SPECIES_JOLTEON] = @@ -11204,18 +14028,23 @@ 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) FOLLOWER(Jolteon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Jolteon), + .levelUpLearnset = sJolteonLevelUpLearnset, + .teachableLearnset = sJolteonTeachableLearnset, }, [SPECIES_FLAREON] = @@ -11252,18 +14081,23 @@ 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) FOLLOWER(Flareon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Flareon), + .levelUpLearnset = sFlareonLevelUpLearnset, + .teachableLearnset = sFlareonTeachableLearnset, }, #if P_GEN_2_CROSS_EVOS @@ -11301,18 +14135,23 @@ 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) FOLLOWER(Espeon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Espeon), + .levelUpLearnset = sEspeonLevelUpLearnset, + .teachableLearnset = sEspeonTeachableLearnset, }, [SPECIES_UMBREON] = @@ -11349,18 +14188,23 @@ 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) FOLLOWER(Umbreon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Umbreon), + .levelUpLearnset = sUmbreonLevelUpLearnset, + .teachableLearnset = sUmbreonTeachableLearnset, }, #endif //P_GEN_2_CROSS_EVOS @@ -11399,18 +14243,23 @@ 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) FOLLOWER(Leafeon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Leafeon), + .levelUpLearnset = sLeafeonLevelUpLearnset, + .teachableLearnset = sLeafeonTeachableLearnset, }, [SPECIES_GLACEON] = @@ -11447,18 +14296,23 @@ 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) FOLLOWER(Glaceon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Glaceon), + .levelUpLearnset = sGlaceonLevelUpLearnset, + .teachableLearnset = sGlaceonTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS @@ -11498,18 +14352,23 @@ 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) FOLLOWER(Sylveon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Sylveon), + .levelUpLearnset = sSylveonLevelUpLearnset, + .teachableLearnset = sSylveonTeachableLearnset, }, #endif //P_GEN_6_CROSS_EVOS #endif //P_FAMILY_EEVEE @@ -11549,18 +14408,23 @@ 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) FOLLOWER(Porygon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Porygon), + .levelUpLearnset = sPorygonLevelUpLearnset, + .teachableLearnset = sPorygonTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}, {EVO_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}), }, @@ -11600,19 +14464,24 @@ 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) FOLLOWER(Porygon2, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - 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}), }, @@ -11658,19 +14527,24 @@ 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) FOLLOWER(PorygonZ, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(PorygonZ), + .levelUpLearnset = sPorygonZLevelUpLearnset, + .teachableLearnset = sPorygonZTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_GEN_2_CROSS_EVOS @@ -11717,18 +14591,23 @@ 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) FOLLOWER(Omanyte, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Omanyte), + .levelUpLearnset = sOmanyteLevelUpLearnset, + .teachableLearnset = sOmanyteTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_OMASTAR}), }, @@ -11766,18 +14645,23 @@ 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) FOLLOWER(Omastar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Omastar), + .levelUpLearnset = sOmastarLevelUpLearnset, + .teachableLearnset = sOmastarTeachableLearnset, }, #endif //P_FAMILY_OMANYTE @@ -11822,18 +14706,23 @@ 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) FOLLOWER(Kabuto, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG) - LEARNSETS(Kabuto), + .levelUpLearnset = sKabutoLevelUpLearnset, + .teachableLearnset = sKabutoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_KABUTOPS}), }, @@ -11877,52 +14766,50 @@ 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) FOLLOWER(Kabutops, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -11934,32 +14821,52 @@ 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) FOLLOWER(Aerodactyl, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) + .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( @@ -11970,17 +14877,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 @@ -12023,54 +14939,52 @@ 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) FOLLOWER(Munchlax, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -12082,22 +14996,53 @@ 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) FOLLOWER(Snorlax, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -12109,42 +15054,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, @@ -12152,6 +15087,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 @@ -12160,33 +15096,52 @@ 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), + .palette = gMonPalette_Articuno, + .shinyPalette = gMonShinyPalette_Articuno, + .iconSprite = gMonIcon_Articuno, + .iconPalIndex = 2, + FOOTPRINT(Articuno) FOLLOWER(Articuno, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(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, @@ -12194,58 +15149,59 @@ 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), + .palette = gMonPalette_ArticunoGalarian, + .shinyPalette = gMonShinyPalette_ArticunoGalarian, + .iconSprite = gMonIcon_ArticunoGalarian, + .iconPalIndex = 2, + FOOTPRINT(Articuno) FOLLOWER(ArticunoGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(ArticunoGalarian), + .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, @@ -12253,6 +15209,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 @@ -12261,37 +15218,57 @@ 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), + .palette = gMonPalette_Zapdos, + .shinyPalette = gMonShinyPalette_Zapdos, + .iconSprite = gMonIcon_Zapdos, + .iconPalIndex = 0, + FOOTPRINT(Zapdos) FOLLOWER(Zapdos, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(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, @@ -12299,55 +15276,58 @@ 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), + .palette = gMonPalette_ZapdosGalarian, + .shinyPalette = gMonShinyPalette_ZapdosGalarian, + .iconSprite = gMonIcon_ZapdosGalarian, + .iconPalIndex = 0, + FOOTPRINT(Zapdos) FOLLOWER(ZapdosGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(ZapdosGalarian), + .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, @@ -12355,6 +15335,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 @@ -12363,33 +15344,52 @@ 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), + .palette = gMonPalette_Moltres, + .shinyPalette = gMonShinyPalette_Moltres, + .iconSprite = gMonIcon_Moltres, + .iconPalIndex = 0, + FOOTPRINT(Moltres) FOLLOWER(Moltres, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(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, @@ -12397,30 +15397,51 @@ 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), + .palette = gMonPalette_MoltresGalarian, + .shinyPalette = gMonShinyPalette_MoltresGalarian, + .iconSprite = gMonIcon_MoltresGalarian, + .iconPalIndex = 0, + FOOTPRINT(Moltres) FOLLOWER(MoltresGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(MoltresGalarian), + .isLegendary = TRUE, .isGalarianForm = TRUE, + .levelUpLearnset = sMoltresGalarianLevelUpLearnset, + .teachableLearnset = sMoltresGalarianTeachableLearnset, + .formSpeciesIdTable = sMoltresFormSpeciesIdTable, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_MOLTRES @@ -12461,18 +15482,23 @@ 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) FOLLOWER(Dratini, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - LEARNSETS(Dratini), + .levelUpLearnset = sDratiniLevelUpLearnset, + .teachableLearnset = sDratiniTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_DRAGONAIR}), }, @@ -12511,18 +15537,23 @@ 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) FOLLOWER(Dragonair, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - LEARNSETS(Dragonair), + .levelUpLearnset = sDragonairLevelUpLearnset, + .teachableLearnset = sDragonairTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 55, SPECIES_DRAGONITE}), }, @@ -12567,43 +15598,29 @@ 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) FOLLOWER(Dragonite, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - 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, @@ -12611,6 +15628,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 @@ -12618,8 +15636,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( @@ -12631,22 +15659,31 @@ 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) FOLLOWER(Mewtwo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, @@ -12654,10 +15691,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( @@ -12669,20 +15716,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, @@ -12690,10 +15747,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( @@ -12705,16 +15772,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 @@ -12745,9 +15823,8 @@ 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, - .isMythical = TRUE, .speciesName = _("Mew"), .cryId = CRY_MEW, .natDexNum = NATIONAL_DEX_MEW, @@ -12763,19 +15840,25 @@ 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) FOLLOWER(Mew, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - 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_families.h similarity index 69% rename from src/data/pokemon/species_info/gen_2.h rename to src/data/pokemon/species_info/gen_2_families.h index 739ba33c41..3f1600ec5e 100644 --- a/src/data/pokemon/species_info/gen_2.h +++ b/src/data/pokemon/species_info/gen_2_families.h @@ -38,18 +38,23 @@ 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) FOLLOWER(Chikorita, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Chikorita), + .levelUpLearnset = sChikoritaLevelUpLearnset, + .teachableLearnset = sChikoritaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_BAYLEEF}), }, @@ -88,18 +93,23 @@ 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) FOLLOWER(Bayleef, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bayleef), + .levelUpLearnset = sBayleefLevelUpLearnset, + .teachableLearnset = sBayleefTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_MEGANIUM}), }, @@ -144,20 +154,27 @@ 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) FOLLOWER(Meganium, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Meganium), + .levelUpLearnset = sMeganiumLevelUpLearnset, + .teachableLearnset = sMeganiumTeachableLearnset, }, #endif //P_FAMILY_CHIKORITA @@ -196,18 +213,23 @@ 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) FOLLOWER(Cyndaquil, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cyndaquil), + .levelUpLearnset = sCyndaquilLevelUpLearnset, + .teachableLearnset = sCyndaquilTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_QUILAVA}), }, @@ -246,18 +268,23 @@ 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) FOLLOWER(Quilava, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Quilava), + .levelUpLearnset = sQuilavaLevelUpLearnset, + .teachableLearnset = sQuilavaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_TYPHLOSION}, {EVO_NONE, 0, SPECIES_TYPHLOSION_HISUIAN}), }, @@ -270,25 +297,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, @@ -296,7 +306,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, @@ -309,24 +331,30 @@ 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), + .palette = gMonPalette_Typhlosion, + .shinyPalette = gMonShinyPalette_Typhlosion, + .iconSprite = gMonIcon_Typhlosion, + .iconPalIndex = 3, + FOOTPRINT(Typhlosion) FOLLOWER(Typhlosion, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Typhlosion), + .levelUpLearnset = sTyphlosionLevelUpLearnset, + .teachableLearnset = sTyphlosionTeachableLearnset, + .formSpeciesIdTable = sTyphlosionFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_TYPHLOSION_HISUIAN] = { - TYPHLOSION_MISC_INFO, .baseHP = 73, .baseAttack = 84, .baseDefense = 78, @@ -334,7 +362,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, @@ -347,18 +387,25 @@ 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), + .palette = gMonPalette_TyphlosionHisuian, + .shinyPalette = gMonShinyPalette_TyphlosionHisuian, + .iconSprite = gMonIcon_TyphlosionHisuian, + .iconPalIndex = 1, + FOOTPRINT(Typhlosion) FOLLOWER(TyphlosionHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(TyphlosionHisuian), .isHisuianForm = TRUE, + .levelUpLearnset = sTyphlosionHisuianLevelUpLearnset, + .teachableLearnset = sTyphlosionHisuianTeachableLearnset, + .formSpeciesIdTable = sTyphlosionFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_CYNDAQUIL @@ -398,18 +445,23 @@ 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) FOLLOWER(Totodile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Totodile), + .levelUpLearnset = sTotodileLevelUpLearnset, + .teachableLearnset = sTotodileTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_CROCONAW}), }, @@ -449,18 +501,23 @@ 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) FOLLOWER(Croconaw, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Croconaw), + .levelUpLearnset = sCroconawLevelUpLearnset, + .teachableLearnset = sCroconawTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_FERALIGATR}), }, @@ -505,19 +562,24 @@ 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) FOLLOWER(Feraligatr, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Feraligatr), + .levelUpLearnset = sFeraligatrLevelUpLearnset, + .teachableLearnset = sFeraligatrTeachableLearnset, }, #endif //P_FAMILY_TOTODILE @@ -556,18 +618,23 @@ 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) FOLLOWER(Sentret, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Sentret), + .levelUpLearnset = sSentretLevelUpLearnset, + .teachableLearnset = sSentretTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_FURRET}), }, @@ -605,18 +672,23 @@ 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) FOLLOWER(Furret, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Furret), + .levelUpLearnset = sFurretLevelUpLearnset, + .teachableLearnset = sFurretTeachableLearnset, }, #endif //P_FAMILY_SENTRET @@ -655,18 +727,23 @@ 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) FOLLOWER(Hoothoot, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Hoothoot), + .levelUpLearnset = sHoothootLevelUpLearnset, + .teachableLearnset = sHoothootTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_NOCTOWL}), }, @@ -710,18 +787,23 @@ 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) FOLLOWER(Noctowl, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Noctowl), + .levelUpLearnset = sNoctowlLevelUpLearnset, + .teachableLearnset = sNoctowlTeachableLearnset, }, #endif //P_FAMILY_HOOTHOOT @@ -760,20 +842,27 @@ 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) FOLLOWER(Ledyba, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG) - LEARNSETS(Ledyba), + .levelUpLearnset = sLedybaLevelUpLearnset, + .teachableLearnset = sLedybaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_LEDIAN}), }, @@ -811,21 +900,28 @@ 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) FOLLOWER(Ledian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Ledian), + .levelUpLearnset = sLedianLevelUpLearnset, + .teachableLearnset = sLedianTeachableLearnset, }, #endif //P_FAMILY_LEDYBA @@ -864,18 +960,23 @@ 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) FOLLOWER(Spinarak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG) - LEARNSETS(Spinarak), + .levelUpLearnset = sSpinarakLevelUpLearnset, + .teachableLearnset = sSpinarakTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARIADOS}), }, @@ -919,18 +1020,23 @@ 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) FOLLOWER(Ariados, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG) - LEARNSETS(Ariados), + .levelUpLearnset = sAriadosLevelUpLearnset, + .teachableLearnset = sAriadosTeachableLearnset, }, #endif //P_FAMILY_SPINARAK @@ -970,18 +1076,23 @@ 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) FOLLOWER(Chinchou, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Chinchou), + .levelUpLearnset = sChinchouLevelUpLearnset, + .teachableLearnset = sChinchouTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_LANTURN}), }, @@ -1020,18 +1131,23 @@ 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) FOLLOWER(Lanturn, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Lanturn), + .levelUpLearnset = sLanturnLevelUpLearnset, + .teachableLearnset = sLanturnTeachableLearnset, }, #endif //P_FAMILY_CHINCHOU @@ -1072,18 +1188,23 @@ 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) FOLLOWER(Togepi, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Togepi), + .levelUpLearnset = sTogepiLevelUpLearnset, + .teachableLearnset = sTogepiTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}), }, @@ -1121,18 +1242,23 @@ 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) FOLLOWER(Togetic, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Togetic), + .levelUpLearnset = sTogeticLevelUpLearnset, + .teachableLearnset = sTogeticTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_TOGEKISS}), }, @@ -1145,11 +1271,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, @@ -1183,19 +1305,24 @@ 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) FOLLOWER(Togekiss, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Togekiss), + .levelUpLearnset = sTogekissLevelUpLearnset, + .teachableLearnset = sTogekissTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_TOGEPI @@ -1235,19 +1362,24 @@ 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) FOLLOWER(Natu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Natu), + .levelUpLearnset = sNatuLevelUpLearnset, + .teachableLearnset = sNatuTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_XATU}), }, @@ -1286,19 +1418,25 @@ 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) FOLLOWER(Xatu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Xatu), + .levelUpLearnset = sXatuLevelUpLearnset, + .teachableLearnset = sXatuTeachableLearnset, }, #endif //P_FAMILY_NATU @@ -1337,19 +1475,24 @@ 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) FOLLOWER(Mareep, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Mareep), + .levelUpLearnset = sMareepLevelUpLearnset, + .teachableLearnset = sMareepTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_FLAAFFY}), }, @@ -1387,49 +1530,30 @@ 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) FOLLOWER(Flaaffy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -1437,6 +1561,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 @@ -1446,30 +1571,54 @@ 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) FOLLOWER(Ampharos, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, @@ -1477,24 +1626,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 @@ -1539,18 +1714,23 @@ 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) FOLLOWER(Azurill, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Azurill), + .levelUpLearnset = sAzurillLevelUpLearnset, + .teachableLearnset = sAzurillTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_MARILL}), }, #endif //P_GEN_3_CROSS_EVOS @@ -1593,18 +1773,23 @@ 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) FOLLOWER(Marill, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Marill), + .levelUpLearnset = sMarillLevelUpLearnset, + .teachableLearnset = sMarillTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_AZUMARILL}), }, @@ -1654,18 +1839,23 @@ 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) FOLLOWER(Azumarill, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Azumarill), + .levelUpLearnset = sAzumarillLevelUpLearnset, + .teachableLearnset = sAzumarillTeachableLearnset, }, #endif //P_FAMILY_MARILL @@ -1705,18 +1895,23 @@ 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) FOLLOWER(Bonsly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bonsly), + .levelUpLearnset = sBonslyLevelUpLearnset, + .teachableLearnset = sBonslyTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_MIMIC, SPECIES_SUDOWOODO}), }, #endif //P_GEN_4_CROSS_EVOS @@ -1755,20 +1950,27 @@ 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) FOLLOWER(Sudowoodo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Sudowoodo), + .levelUpLearnset = sSudowoodoLevelUpLearnset, + .teachableLearnset = sSudowoodoTeachableLearnset, }, #endif //P_FAMILY_SUDOWOODO @@ -1807,19 +2009,24 @@ 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) FOLLOWER(Hoppip, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Hoppip), + .levelUpLearnset = sHoppipLevelUpLearnset, + .teachableLearnset = sHoppipTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_SKIPLOOM}), }, @@ -1857,19 +2064,24 @@ 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) FOLLOWER(Skiploom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Skiploom), + .levelUpLearnset = sSkiploomLevelUpLearnset, + .teachableLearnset = sSkiploomTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_JUMPLUFF}), }, @@ -1915,19 +2127,24 @@ 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) FOLLOWER(Jumpluff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Jumpluff), + .levelUpLearnset = sJumpluffLevelUpLearnset, + .teachableLearnset = sJumpluffTeachableLearnset, }, #endif //P_FAMILY_HOPPIP @@ -1966,20 +2183,27 @@ 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) FOLLOWER(Aipom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Aipom), + .levelUpLearnset = sAipomLevelUpLearnset, + .teachableLearnset = sAipomTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_DOUBLE_HIT, SPECIES_AMBIPOM}), }, @@ -2018,20 +2242,27 @@ 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) FOLLOWER(Ambipom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Ambipom), + .levelUpLearnset = sAmbipomLevelUpLearnset, + .teachableLearnset = sAmbipomTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_AIPOM @@ -2071,18 +2302,23 @@ 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) FOLLOWER(Sunkern, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Sunkern), + .levelUpLearnset = sSunkernLevelUpLearnset, + .teachableLearnset = sSunkernTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}), }, @@ -2120,18 +2356,23 @@ 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) FOLLOWER(Sunflora, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Sunflora), + .levelUpLearnset = sSunfloraLevelUpLearnset, + .teachableLearnset = sSunfloraTeachableLearnset, }, #endif //P_FAMILY_SUNKERN @@ -2171,19 +2412,24 @@ 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) FOLLOWER(Yanma, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Yanma), + .levelUpLearnset = sYanmaLevelUpLearnset, + .teachableLearnset = sYanmaTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_YANMEGA}), }, @@ -2223,76 +2469,85 @@ 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) FOLLOWER(Yanmega, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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), + .palette = gMonPalette_Wooper, + .shinyPalette = gMonShinyPalette_Wooper, + .iconSprite = gMonIcon_Wooper, + .iconPalIndex = 0, + FOOTPRINT(Wooper) FOLLOWER(Wooper, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Wooper), + .levelUpLearnset = sWooperLevelUpLearnset, + .teachableLearnset = sWooperTeachableLearnset, + .formSpeciesIdTable = sWooperFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_QUAGSIRE}), }, @@ -2330,47 +2585,82 @@ 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) FOLLOWER(Quagsire, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, 0), - 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}), }, @@ -2408,17 +2698,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 @@ -2458,21 +2753,28 @@ 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) FOLLOWER(Murkrow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Murkrow), + .levelUpLearnset = sMurkrowLevelUpLearnset, + .teachableLearnset = sMurkrowTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_HONCHKROW}), }, @@ -2511,18 +2813,23 @@ 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) FOLLOWER(Honchkrow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Honchkrow), + .levelUpLearnset = sHonchkrowLevelUpLearnset, + .teachableLearnset = sHonchkrowTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_MURKROW @@ -2546,7 +2853,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, @@ -2563,19 +2870,24 @@ 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) FOLLOWER(Misdreavus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Misdreavus), + .levelUpLearnset = sMisdreavusLevelUpLearnset, + .teachableLearnset = sMisdreavusTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_MISMAGIUS}), }, @@ -2598,7 +2910,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, @@ -2615,308 +2927,111 @@ 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) FOLLOWER(Mismagius, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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) \ - FOLLOWER(Unown ##letter, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE)\ - 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, 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) \ + FOLLOWER(Unown ##letter, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) \ + .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 @@ -2955,20 +3070,25 @@ 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) FOLLOWER(Wynaut, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Wynaut), .tmIlliterate = TRUE, + .levelUpLearnset = sWynautLevelUpLearnset, + .teachableLearnset = sWynautTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_WOBBUFFET}), }, #endif //P_GEN_3_CROSS_EVOS @@ -3007,24 +3127,32 @@ 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) FOLLOWER(Wobbuffet, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Wobbuffet), .tmIlliterate = TRUE, + .levelUpLearnset = sWobbuffetLevelUpLearnset, + .teachableLearnset = sWobbuffetTeachableLearnset, }, #endif //P_FAMILY_WOBBUFFET @@ -3063,20 +3191,27 @@ 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) FOLLOWER(Girafarig, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Girafarig), + .levelUpLearnset = sGirafarigLevelUpLearnset, + .teachableLearnset = sGirafarigTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_TWIN_BEAM, SPECIES_FARIGIRAF}), }, @@ -3115,17 +3250,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 @@ -3165,18 +3305,23 @@ 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) FOLLOWER(Pineco, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Pineco), + .levelUpLearnset = sPinecoLevelUpLearnset, + .teachableLearnset = sPinecoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_FORRETRESS}), }, @@ -3214,18 +3359,23 @@ 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) FOLLOWER(Forretress, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Forretress), + .levelUpLearnset = sForretressLevelUpLearnset, + .teachableLearnset = sForretressTeachableLearnset, }, #endif //P_FAMILY_PINECO @@ -3270,66 +3420,52 @@ 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) FOLLOWER(Dunsparce, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - 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( @@ -3337,11 +3473,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( @@ -3349,6 +3526,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 @@ -3388,21 +3586,28 @@ 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) FOLLOWER(Gligar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - 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}), }, @@ -3442,19 +3647,24 @@ 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) FOLLOWER(Gliscor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Gliscor), + .levelUpLearnset = sGliscorLevelUpLearnset, + .teachableLearnset = sGliscorTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_GLIGAR @@ -3468,11 +3678,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, @@ -3498,18 +3708,23 @@ 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) FOLLOWER(Snubbull, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Snubbull), + .levelUpLearnset = sSnubbullLevelUpLearnset, + .teachableLearnset = sSnubbullTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 23, SPECIES_GRANBULL}), }, @@ -3521,11 +3736,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, @@ -3551,18 +3766,23 @@ 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) FOLLOWER(Granbull, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Granbull), + .levelUpLearnset = sGranbullLevelUpLearnset, + .teachableLearnset = sGranbullTeachableLearnset, }, #endif //P_FAMILY_SNUBBULL @@ -3576,84 +3796,118 @@ 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), + .palette = gMonPalette_Qwilfish, + .shinyPalette = gMonShinyPalette_Qwilfish, + .iconSprite = gMonIcon_Qwilfish, + .iconPalIndex = 0, + FOOTPRINT(Qwilfish) FOLLOWER(Qwilfish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(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), + .palette = gMonPalette_QwilfishHisuian, + .shinyPalette = gMonShinyPalette_QwilfishHisuian, + .iconSprite = gMonIcon_QwilfishHisuian, + .iconPalIndex = 0, + FOOTPRINT(Qwilfish) FOLLOWER(QwilfishHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(QwilfishHisuian), .isHisuianForm = TRUE, + .levelUpLearnset = sQwilfishHisuianLevelUpLearnset, + .teachableLearnset = sQwilfishHisuianTeachableLearnset, + .formSpeciesIdTable = sQwilfishFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_MOVE, MOVE_BARB_BARRAGE, SPECIES_OVERQWIL}), }, @@ -3691,18 +3945,23 @@ 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), - FOLLOWER(Overqwil, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .palette = gMonPalette_Overqwil, + .shinyPalette = gMonShinyPalette_Overqwil, + .iconSprite = gMonIcon_Overqwil, + .iconPalIndex = 2, //FOOTPRINT(Overqwil) - LEARNSETS(Overqwil), + FOLLOWER(Overqwil, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sOverqwilLevelUpLearnset, + .teachableLearnset = sOverqwilTeachableLearnset, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_QWILFISH @@ -3745,52 +4004,50 @@ 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) FOLLOWER(Shuckle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -3802,33 +4059,55 @@ 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) FOLLOWER(Heracross, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -3840,75 +4119,88 @@ 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), + .palette = gMonPalette_Sneasel, + .shinyPalette = gMonShinyPalette_Sneasel, + .iconSprite = gMonIcon_Sneasel, + .iconPalIndex = 0, + FOOTPRINT(Sneasel) FOLLOWER(Sneasel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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}), }, @@ -3950,50 +4242,90 @@ 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) FOLLOWER(Weavile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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), + .palette = gMonPalette_SneaselHisuian, + .shinyPalette = gMonShinyPalette_SneaselHisuian, + .iconSprite = gMonIcon_SneaselHisuian, + .iconPalIndex = 2, + FOOTPRINT(Sneasel) FOLLOWER(SneaselHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(SneaselHisuian), .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}), }, @@ -4032,18 +4364,23 @@ 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), - FOLLOWER(Sneasler, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .palette = gMonPalette_Sneasler, + .shinyPalette = gMonShinyPalette_Sneasler, + .iconSprite = gMonIcon_Sneasler, + .iconPalIndex = 2, //FOOTPRINT(Sneasler) - LEARNSETS(Sneasler), + FOLLOWER(Sneasler, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sSneaslerLevelUpLearnset, + .teachableLearnset = sSneaslerTeachableLearnset, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_SNEASEL @@ -4084,18 +4421,23 @@ 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) FOLLOWER(Teddiursa, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Teddiursa), + .levelUpLearnset = sTeddiursaLevelUpLearnset, + .teachableLearnset = sTeddiursaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_URSARING}), }, @@ -4133,52 +4475,55 @@ 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) FOLLOWER(Ursaring, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -4189,33 +4534,49 @@ 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), - FOLLOWER(Ursaluna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .palette = gMonPalette_Ursaluna, + .shinyPalette = gMonShinyPalette_Ursaluna, + .iconSprite = gMonIcon_Ursaluna, + .iconPalIndex = 2, //FOOTPRINT(Ursaluna) - LEARNSETS(Ursaluna), + FOLLOWER(Ursaluna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, - .abilities = { ABILITY_MINDS_EYE, ABILITY_NONE }, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + .abilities = { ABILITY_MINDS_EYE, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Ursaluna"), + .cryId = CRY_URSALUNA, + .natDexNum = NATIONAL_DEX_URSALUNA, + .categoryName = _("Peat"), .height = 27, .weight = 3330, .description = COMPOUND_STRING( @@ -4227,17 +4588,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 @@ -4277,18 +4644,23 @@ 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) FOLLOWER(Slugma, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - LEARNSETS(Slugma), + .levelUpLearnset = sSlugmaLevelUpLearnset, + .teachableLearnset = sSlugmaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_MAGCARGO}), }, @@ -4333,18 +4705,23 @@ 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) FOLLOWER(Magcargo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - LEARNSETS(Magcargo), + .levelUpLearnset = sMagcargoLevelUpLearnset, + .teachableLearnset = sMagcargoTeachableLearnset, }, #endif //P_FAMILY_SLUGMA @@ -4383,18 +4760,23 @@ 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) FOLLOWER(Swinub, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Swinub), + .levelUpLearnset = sSwinubLevelUpLearnset, + .teachableLearnset = sSwinubTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_PILOSWINE}), }, @@ -4433,20 +4815,27 @@ 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) FOLLOWER(Piloswine, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Piloswine), + .levelUpLearnset = sPiloswineLevelUpLearnset, + .teachableLearnset = sPiloswineTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_MAMOSWINE}), }, @@ -4491,19 +4880,25 @@ 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) FOLLOWER(Mamoswine, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Mamoswine), + .levelUpLearnset = sMamoswineLevelUpLearnset, + .teachableLearnset = sMamoswineTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_SWINUB @@ -4519,30 +4914,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, @@ -4550,33 +4923,56 @@ 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), + .palette = gMonPalette_Corsola, + .shinyPalette = gMonShinyPalette_Corsola, + .iconSprite = gMonIcon_Corsola, + .iconPalIndex = 0, + FOOTPRINT(Corsola) FOLLOWER(Corsola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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, @@ -4584,26 +4980,50 @@ 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), + .palette = gMonPalette_CorsolaGalarian, + .shinyPalette = gMonShinyPalette_CorsolaGalarian, + .iconSprite = gMonIcon_CorsolaGalarian, + .iconPalIndex = 0, + FOOTPRINT(Corsola) FOLLOWER(CorsolaGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(CorsolaGalarian), .isGalarianForm = TRUE, + .levelUpLearnset = sCorsolaGalarianLevelUpLearnset, + .teachableLearnset = sCorsolaGalarianTeachableLearnset, + .formSpeciesIdTable = sCorsolaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_CURSOLA}), }, @@ -4641,18 +5061,23 @@ 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) FOLLOWER(Cursola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cursola), + .levelUpLearnset = sCursolaLevelUpLearnset, + .teachableLearnset = sCursolaTeachableLearnset, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_CORSOLA @@ -4692,18 +5117,23 @@ 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) FOLLOWER(Remoraid, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Remoraid), + .levelUpLearnset = sRemoraidLevelUpLearnset, + .teachableLearnset = sRemoraidTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_OCTILLERY}), }, @@ -4742,21 +5172,28 @@ 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) FOLLOWER(Octillery, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - LEARNSETS(Octillery), + .levelUpLearnset = sOctilleryLevelUpLearnset, + .teachableLearnset = sOctilleryTeachableLearnset, }, #endif //P_FAMILY_REMORAID @@ -4795,18 +5232,23 @@ 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) FOLLOWER(Delibird, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Delibird), + .levelUpLearnset = sDelibirdLevelUpLearnset, + .teachableLearnset = sDelibirdTeachableLearnset, }, #endif //P_FAMILY_DELIBIRD @@ -4846,18 +5288,23 @@ 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) FOLLOWER(Mantyke, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Mantyke), + .levelUpLearnset = sMantykeLevelUpLearnset, + .teachableLearnset = sMantykeTeachableLearnset, .evolutions = EVOLUTION({EVO_SPECIFIC_MON_IN_PARTY, SPECIES_REMORAID, SPECIES_MANTINE}), }, #endif //P_GEN_4_CROSS_EVOS @@ -4902,19 +5349,24 @@ 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) FOLLOWER(Mantine, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Mantine), + .levelUpLearnset = sMantineLevelUpLearnset, + .teachableLearnset = sMantineTeachableLearnset, }, #endif //P_FAMILY_MANTINE @@ -4954,18 +5406,23 @@ 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) FOLLOWER(Skarmory, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Skarmory), + .levelUpLearnset = sSkarmoryLevelUpLearnset, + .teachableLearnset = sSkarmoryTeachableLearnset, }, #endif //P_FAMILY_SKARMORY @@ -5004,51 +5461,49 @@ 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) FOLLOWER(Houndour, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -5060,33 +5515,55 @@ 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) FOLLOWER(Houndoom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -5097,16 +5574,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 @@ -5146,18 +5632,23 @@ 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) FOLLOWER(Phanpy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Phanpy), + .levelUpLearnset = sPhanpyLevelUpLearnset, + .teachableLearnset = sPhanpyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_DONPHAN}), }, @@ -5196,20 +5687,27 @@ 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) FOLLOWER(Donphan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Donphan), + .levelUpLearnset = sDonphanLevelUpLearnset, + .teachableLearnset = sDonphanTeachableLearnset, }, #endif //P_FAMILY_PHANPY @@ -5248,18 +5746,23 @@ 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) FOLLOWER(Stantler, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Stantler), + .levelUpLearnset = sStantlerLevelUpLearnset, + .teachableLearnset = sStantlerTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_MOVE_TWENTY_TIMES, MOVE_PSYSHIELD_BASH, SPECIES_WYRDEER}), }, @@ -5299,18 +5802,23 @@ 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), - FOLLOWER(Wyrdeer, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .palette = gMonPalette_Wyrdeer, + .shinyPalette = gMonShinyPalette_Wyrdeer, + .iconSprite = gMonIcon_Wyrdeer, + .iconPalIndex = 2, //FOOTPRINT(Wyrdeer) - LEARNSETS(Wyrdeer), + FOLLOWER(Wyrdeer, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sWyrdeerLevelUpLearnset, + .teachableLearnset = sWyrdeerTeachableLearnset, }, #endif //P_GEN_8_CROSS_EVOS #endif //P_FAMILY_STANTLER @@ -5350,19 +5858,24 @@ 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) FOLLOWER(Smeargle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Smeargle), .tmIlliterate = TRUE, + .levelUpLearnset = sSmeargleLevelUpLearnset, + .teachableLearnset = sSmeargleTeachableLearnset, }, #endif //P_FAMILY_SMEARGLE @@ -5403,18 +5916,23 @@ 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) FOLLOWER(Miltank, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Miltank), + .levelUpLearnset = sMiltankLevelUpLearnset, + .teachableLearnset = sMiltankTeachableLearnset, }, #endif //P_FAMILY_MILTANK @@ -5443,13 +5961,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, @@ -5465,18 +5982,24 @@ 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) FOLLOWER(Raikou, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Raikou), + .isLegendary = TRUE, + .levelUpLearnset = sRaikouLevelUpLearnset, + .teachableLearnset = sRaikouTeachableLearnset, }, #endif //P_FAMILY_RAIKOU @@ -5505,13 +6028,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, @@ -5527,18 +6049,24 @@ 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) FOLLOWER(Entei, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Entei), + .isLegendary = TRUE, + .levelUpLearnset = sEnteiLevelUpLearnset, + .teachableLearnset = sEnteiTeachableLearnset, }, #endif //P_FAMILY_ENTEI @@ -5567,13 +6095,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, @@ -5589,18 +6116,24 @@ 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) FOLLOWER(Suicune, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Suicune), + .isLegendary = TRUE, + .levelUpLearnset = sSuicuneLevelUpLearnset, + .teachableLearnset = sSuicuneTeachableLearnset, }, #endif //P_FAMILY_SUICUNE @@ -5639,18 +6172,23 @@ 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) FOLLOWER(Larvitar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Larvitar), + .levelUpLearnset = sLarvitarLevelUpLearnset, + .teachableLearnset = sLarvitarTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_PUPITAR}), }, @@ -5671,7 +6209,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, @@ -5688,48 +6226,36 @@ 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) FOLLOWER(Pupitar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - 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 @@ -5737,8 +6263,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( @@ -5750,32 +6286,52 @@ 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) FOLLOWER(Tyranitar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -5787,16 +6343,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 @@ -5827,7 +6392,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, @@ -5843,20 +6407,26 @@ 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) FOLLOWER(Lugia, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Lugia), + .isLegendary = TRUE, + .levelUpLearnset = sLugiaLevelUpLearnset, + .teachableLearnset = sLugiaTeachableLearnset, }, #endif //P_FAMILY_LUGIA @@ -5888,7 +6458,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, @@ -5904,19 +6473,25 @@ 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) FOLLOWER(HoOh, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(HoOh), + .isLegendary = TRUE, + .levelUpLearnset = sHoOhLevelUpLearnset, + .teachableLearnset = sHoOhTeachableLearnset, }, #endif //P_FAMILY_HO_OH @@ -5946,9 +6521,8 @@ 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, - .isMythical = TRUE, .speciesName = _("Celebi"), .cryId = CRY_CELEBI, .natDexNum = NATIONAL_DEX_CELEBI, @@ -5964,19 +6538,25 @@ 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) FOLLOWER(Celebi, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - 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_families.h similarity index 67% rename from src/data/pokemon/species_info/gen_3.h rename to src/data/pokemon/species_info/gen_3_families.h index 6e92616704..385b0e2ffd 100644 --- a/src/data/pokemon/species_info/gen_3.h +++ b/src/data/pokemon/species_info/gen_3_families.h @@ -38,18 +38,23 @@ 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) FOLLOWER(Treecko, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Treecko), + .levelUpLearnset = sTreeckoLevelUpLearnset, + .teachableLearnset = sTreeckoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_GROVYLE}), }, @@ -87,41 +92,28 @@ 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) FOLLOWER(Grovyle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -129,6 +121,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 @@ -136,8 +129,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( @@ -149,22 +152,30 @@ 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) FOLLOWER(Sceptile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sSceptileLevelUpLearnset, + .teachableLearnset = sSceptileTeachableLearnset, + .formSpeciesIdTable = sSceptileFormSpeciesIdTable, + .formChangeTable = sSceptileFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_SCEPTILE_MEGA] = { - SCEPTILE_MISC_INFO, .baseHP = 70, .baseAttack = 110, .baseDefense = 75, @@ -172,9 +183,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( @@ -186,16 +208,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 @@ -235,19 +266,25 @@ 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) FOLLOWER(Torchic, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Torchic), + .levelUpLearnset = sTorchicLevelUpLearnset, + .teachableLearnset = sTorchicTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_COMBUSKEN}), }, @@ -286,56 +323,40 @@ 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) FOLLOWER(Combusken, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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 @@ -343,55 +364,108 @@ 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) FOLLOWER(Blaziken, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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 @@ -431,18 +505,23 @@ 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) FOLLOWER(Mudkip, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Mudkip), + .levelUpLearnset = sMudkipLevelUpLearnset, + .teachableLearnset = sMudkipTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_MARSHTOMP}), }, @@ -480,48 +559,36 @@ 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) FOLLOWER(Marshtomp, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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 @@ -529,8 +596,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( @@ -542,31 +619,51 @@ 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) FOLLOWER(Swampert, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -578,16 +675,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 @@ -633,18 +739,23 @@ 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) FOLLOWER(Poochyena, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Poochyena), + .levelUpLearnset = sPoochyenaLevelUpLearnset, + .teachableLearnset = sPoochyenaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_MIGHTYENA}), }, @@ -682,18 +793,23 @@ 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) FOLLOWER(Mightyena, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Mightyena), + .levelUpLearnset = sMightyenaLevelUpLearnset, + .teachableLearnset = sMightyenaTeachableLearnset, }, #endif //P_FAMILY_POOCHYENA @@ -706,162 +822,229 @@ 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), + .palette = gMonPalette_Zigzagoon, + .shinyPalette = gMonShinyPalette_Zigzagoon, + .iconSprite = gMonIcon_Zigzagoon, + .iconPalIndex = 2, + FOOTPRINT(Zigzagoon) FOLLOWER(Zigzagoon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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), + .palette = gMonPalette_Linoone, + .shinyPalette = gMonShinyPalette_Linoone, + .iconSprite = gMonIcon_Linoone, + .iconPalIndex = 2, + FOOTPRINT(Linoone) FOLLOWER(Linoone, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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), + .palette = gMonPalette_ZigzagoonGalarian, + .shinyPalette = gMonShinyPalette_ZigzagoonGalarian, + .iconSprite = gMonIcon_ZigzagoonGalarian, + .iconPalIndex = 0, + FOOTPRINT(Zigzagoon) FOLLOWER(ZigzagoonGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(ZigzagoonGalarian), .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), + .palette = gMonPalette_LinooneGalarian, + .shinyPalette = gMonShinyPalette_LinooneGalarian, + .iconSprite = gMonIcon_LinooneGalarian, + .iconPalIndex = 0, + FOOTPRINT(Linoone) FOLLOWER(LinooneGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(LinooneGalarian), .isGalarianForm = TRUE, + .levelUpLearnset = sLinooneGalarianLevelUpLearnset, + .teachableLearnset = sLinooneGalarianTeachableLearnset, + .formSpeciesIdTable = sLinooneFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 35, SPECIES_OBSTAGOON}), }, @@ -899,18 +1082,23 @@ 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) FOLLOWER(Obstagoon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Obstagoon), + .levelUpLearnset = sObstagoonLevelUpLearnset, + .teachableLearnset = sObstagoonTeachableLearnset, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_ZIGZAGOON @@ -958,19 +1146,24 @@ 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) FOLLOWER(Wurmple, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG) - LEARNSETS(Wurmple), .tmIlliterate = TRUE, + .levelUpLearnset = sWurmpleLevelUpLearnset, + .teachableLearnset = sWurmpleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}), }, @@ -992,7 +1185,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, @@ -1009,19 +1202,24 @@ 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) FOLLOWER(Silcoon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG) - LEARNSETS(Silcoon), .tmIlliterate = TRUE, + .levelUpLearnset = sSilcoonLevelUpLearnset, + .teachableLearnset = sSilcoonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_BEAUTIFLY}), }, @@ -1068,21 +1266,28 @@ 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) FOLLOWER(Beautifly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Beautifly), + .levelUpLearnset = sBeautiflyLevelUpLearnset, + .teachableLearnset = sBeautiflyTeachableLearnset, }, [SPECIES_CASCOON] = @@ -1108,7 +1313,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, @@ -1125,19 +1330,24 @@ 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) FOLLOWER(Cascoon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG) - LEARNSETS(Cascoon), .tmIlliterate = TRUE, + .levelUpLearnset = sCascoonLevelUpLearnset, + .teachableLearnset = sCascoonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_DUSTOX}), }, @@ -1186,21 +1396,28 @@ 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) FOLLOWER(Dustox, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Dustox), + .levelUpLearnset = sDustoxLevelUpLearnset, + .teachableLearnset = sDustoxTeachableLearnset, }, #endif //P_FAMILY_WURMPLE @@ -1240,18 +1457,23 @@ 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) FOLLOWER(Lotad, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Lotad), + .levelUpLearnset = sLotadLevelUpLearnset, + .teachableLearnset = sLotadTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_LOMBRE}), }, @@ -1290,18 +1512,23 @@ 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) FOLLOWER(Lombre, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Lombre), + .levelUpLearnset = sLombreLevelUpLearnset, + .teachableLearnset = sLombreTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}), }, @@ -1346,20 +1573,27 @@ 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) FOLLOWER(Ludicolo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Ludicolo), + .levelUpLearnset = sLudicoloLevelUpLearnset, + .teachableLearnset = sLudicoloTeachableLearnset, }, #endif //P_FAMILY_LOTAD @@ -1399,18 +1633,23 @@ 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) FOLLOWER(Seedot, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Seedot), + .levelUpLearnset = sSeedotLevelUpLearnset, + .teachableLearnset = sSeedotTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_NUZLEAF}), }, @@ -1449,20 +1688,27 @@ 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) FOLLOWER(Nuzleaf, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Nuzleaf), + .levelUpLearnset = sNuzleafLevelUpLearnset, + .teachableLearnset = sNuzleafTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}), }, @@ -1490,11 +1736,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, @@ -1511,20 +1757,27 @@ 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) FOLLOWER(Shiftry, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Shiftry), + .levelUpLearnset = sShiftryLevelUpLearnset, + .teachableLearnset = sShiftryTeachableLearnset, }, #endif //P_FAMILY_SEEDOT @@ -1563,18 +1816,23 @@ 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) FOLLOWER(Taillow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Taillow), + .levelUpLearnset = sTaillowLevelUpLearnset, + .teachableLearnset = sTaillowTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_SWELLOW}), }, @@ -1618,18 +1876,23 @@ 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) FOLLOWER(Swellow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Swellow), + .levelUpLearnset = sSwellowLevelUpLearnset, + .teachableLearnset = sSwellowTeachableLearnset, }, #endif //P_FAMILY_TAILLOW @@ -1669,19 +1932,24 @@ 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) FOLLOWER(Wingull, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Wingull), + .levelUpLearnset = sWingullLevelUpLearnset, + .teachableLearnset = sWingullTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_PELIPPER}), }, @@ -1726,19 +1994,24 @@ 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) FOLLOWER(Pelipper, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Pelipper), + .levelUpLearnset = sPelipperLevelUpLearnset, + .teachableLearnset = sPelipperTeachableLearnset, }, #endif //P_FAMILY_WINGULL @@ -1785,18 +2058,23 @@ 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) FOLLOWER(Ralts, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Ralts), + .levelUpLearnset = sRaltsLevelUpLearnset, + .teachableLearnset = sRaltsTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_KIRLIA}), }, @@ -1834,55 +2112,37 @@ 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) FOLLOWER(Kirlia, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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 @@ -1890,89 +2150,118 @@ 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) FOLLOWER(Gardevoir, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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 @@ -1980,59 +2269,108 @@ 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) FOLLOWER(Gallade, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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 @@ -2074,18 +2412,23 @@ 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) FOLLOWER(Surskit, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG) - LEARNSETS(Surskit), + .levelUpLearnset = sSurskitLevelUpLearnset, + .teachableLearnset = sSurskitTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_MASQUERAIN}), }, @@ -2094,14 +2437,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 @@ -2136,19 +2474,24 @@ 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) FOLLOWER(Masquerain, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Masquerain), + .levelUpLearnset = sMasquerainLevelUpLearnset, + .teachableLearnset = sMasquerainTeachableLearnset, }, #endif //P_FAMILY_SURSKIT @@ -2189,18 +2532,23 @@ 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) FOLLOWER(Shroomish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Shroomish), + .levelUpLearnset = sShroomishLevelUpLearnset, + .teachableLearnset = sShroomishTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 23, SPECIES_BRELOOM}), }, @@ -2240,18 +2588,23 @@ 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) FOLLOWER(Breloom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Breloom), + .levelUpLearnset = sBreloomLevelUpLearnset, + .teachableLearnset = sBreloomTeachableLearnset, }, #endif //P_FAMILY_SHROOMISH @@ -2273,7 +2626,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, @@ -2290,18 +2643,23 @@ 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) FOLLOWER(Slakoth, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Slakoth), + .levelUpLearnset = sSlakothLevelUpLearnset, + .teachableLearnset = sSlakothTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_VIGOROTH}), }, @@ -2322,7 +2680,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, @@ -2339,18 +2697,23 @@ 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) FOLLOWER(Vigoroth, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Vigoroth), + .levelUpLearnset = sVigorothLevelUpLearnset, + .teachableLearnset = sVigorothTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SLAKING}), }, @@ -2377,7 +2740,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, @@ -2394,18 +2757,23 @@ 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) FOLLOWER(Slaking, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Slaking), + .levelUpLearnset = sSlakingLevelUpLearnset, + .teachableLearnset = sSlakingTeachableLearnset, }, #endif //P_FAMILY_SLAKOTH @@ -2445,18 +2813,23 @@ 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) FOLLOWER(Nincada, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG) - LEARNSETS(Nincada), + .levelUpLearnset = sNincadaLevelUpLearnset, + .teachableLearnset = sNincadaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}), }, @@ -2495,19 +2868,24 @@ 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) FOLLOWER(Ninjask, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Ninjask), + .levelUpLearnset = sNinjaskLevelUpLearnset, + .teachableLearnset = sNinjaskTeachableLearnset, }, [SPECIES_SHEDINJA] = @@ -2527,7 +2905,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, @@ -2544,19 +2922,24 @@ 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) FOLLOWER(Shedinja, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Shedinja), + .levelUpLearnset = sShedinjaLevelUpLearnset, + .teachableLearnset = sShedinjaTeachableLearnset, }, #endif //P_FAMILY_NINCADA @@ -2595,18 +2978,23 @@ 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) FOLLOWER(Whismur, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Whismur), + .levelUpLearnset = sWhismurLevelUpLearnset, + .teachableLearnset = sWhismurTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LOUDRED}), }, @@ -2644,18 +3032,23 @@ 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) FOLLOWER(Loudred, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Loudred), + .levelUpLearnset = sLoudredLevelUpLearnset, + .teachableLearnset = sLoudredTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_EXPLOUD}), }, @@ -2701,18 +3094,23 @@ 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) FOLLOWER(Exploud, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Exploud), + .levelUpLearnset = sExploudLevelUpLearnset, + .teachableLearnset = sExploudTeachableLearnset, }, #endif //P_FAMILY_WHISMUR @@ -2752,18 +3150,23 @@ 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) FOLLOWER(Makuhita, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Makuhita), + .levelUpLearnset = sMakuhitaLevelUpLearnset, + .teachableLearnset = sMakuhitaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_HARIYAMA}), }, @@ -2802,18 +3205,23 @@ 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) FOLLOWER(Hariyama, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Hariyama), + .levelUpLearnset = sHariyamaLevelUpLearnset, + .teachableLearnset = sHariyamaTeachableLearnset, }, #endif //P_FAMILY_MAKUHITA @@ -2853,18 +3261,23 @@ 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) FOLLOWER(Nosepass, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Nosepass), + .levelUpLearnset = sNosepassLevelUpLearnset, + .teachableLearnset = sNosepassTeachableLearnset, .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_PROBOPASS}, {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_PROBOPASS}), }, @@ -2906,19 +3319,24 @@ 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) FOLLOWER(Probopass, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Probopass), + .levelUpLearnset = sProbopassLevelUpLearnset, + .teachableLearnset = sProbopassTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_NOSEPASS @@ -2958,18 +3376,23 @@ 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) FOLLOWER(Skitty, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Skitty), + .levelUpLearnset = sSkittyLevelUpLearnset, + .teachableLearnset = sSkittyTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}), }, @@ -3014,55 +3437,53 @@ 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) FOLLOWER(Delcatty, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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" @@ -3073,31 +3494,53 @@ 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) FOLLOWER(Sableye, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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" @@ -3107,16 +3550,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 @@ -3128,38 +3580,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( @@ -3171,31 +3616,52 @@ 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) FOLLOWER(Mawile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -3207,16 +3673,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 @@ -3257,18 +3732,23 @@ 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) FOLLOWER(Aron, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Aron), + .levelUpLearnset = sAronLevelUpLearnset, + .teachableLearnset = sAronTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_LAIRON}), }, @@ -3307,42 +3787,28 @@ 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) FOLLOWER(Lairon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -3350,6 +3816,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 @@ -3357,8 +3824,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( @@ -3370,22 +3848,30 @@ 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) FOLLOWER(Aggron, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sAggronLevelUpLearnset, + .teachableLearnset = sAggronTeachableLearnset, + .formSpeciesIdTable = sAggronFormSpeciesIdTable, + .formChangeTable = sAggronFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_AGGRON_MEGA] = { - AGGRON_MISC_INFO, .baseHP = 70, .baseAttack = 140, .baseDefense = 230, @@ -3393,9 +3879,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( @@ -3407,16 +3905,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 @@ -3456,106 +3963,143 @@ 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) FOLLOWER(Meditite, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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) FOLLOWER(Medicham, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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 @@ -3595,51 +4139,49 @@ 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) FOLLOWER(Electrike, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -3651,31 +4193,51 @@ 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) FOLLOWER(Manectric, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -3686,16 +4248,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 @@ -3736,18 +4307,23 @@ 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) FOLLOWER(Plusle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Plusle), + .levelUpLearnset = sPlusleLevelUpLearnset, + .teachableLearnset = sPlusleTeachableLearnset, }, #endif //P_FAMILY_PLUSLE @@ -3787,18 +4363,23 @@ 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) FOLLOWER(Minun, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Minun), + .levelUpLearnset = sMinunLevelUpLearnset, + .teachableLearnset = sMinunTeachableLearnset, }, #endif //P_FAMILY_MINUN @@ -3807,15 +4388,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 @@ -3849,33 +4425,33 @@ 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) FOLLOWER(Volbeat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - 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 @@ -3909,18 +4485,23 @@ 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) FOLLOWER(Illumise, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Illumise), + .levelUpLearnset = sIllumiseLevelUpLearnset, + .teachableLearnset = sIllumiseTeachableLearnset, }, #endif //P_FAMILY_VOLBEAT_ILLUMISE @@ -3962,18 +4543,23 @@ 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) FOLLOWER(Budew, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Budew), + .levelUpLearnset = sBudewLevelUpLearnset, + .teachableLearnset = sBudewTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP_DAY, 0, SPECIES_ROSELIA}), }, #endif //P_GEN_4_CROSS_EVOS @@ -4014,20 +4600,27 @@ 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) FOLLOWER(Roselia, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Roselia), + .levelUpLearnset = sRoseliaLevelUpLearnset, + .teachableLearnset = sRoseliaTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_ROSERADE}), }, @@ -4076,20 +4669,27 @@ 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) FOLLOWER(Roserade, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Roserade), + .levelUpLearnset = sRoseradeLevelUpLearnset, + .teachableLearnset = sRoseradeTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_ROSELIA @@ -4131,20 +4731,27 @@ 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) FOLLOWER(Gulpin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Gulpin), + .levelUpLearnset = sGulpinLevelUpLearnset, + .teachableLearnset = sGulpinTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_SWALOT}), }, @@ -4184,20 +4791,27 @@ 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) FOLLOWER(Swalot, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - LEARNSETS(Swalot), + .levelUpLearnset = sSwalotLevelUpLearnset, + .teachableLearnset = sSwalotTeachableLearnset, }, #endif //P_FAMILY_GULPIN @@ -4237,52 +4851,50 @@ 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) FOLLOWER(Carvanha, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - 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( @@ -4294,31 +4906,52 @@ 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) FOLLOWER(Sharpedo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) + .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( @@ -4330,17 +4963,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 @@ -4380,18 +5022,23 @@ 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) FOLLOWER(Wailmer, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Wailmer), + .levelUpLearnset = sWailmerLevelUpLearnset, + .teachableLearnset = sWailmerTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_WAILORD}), }, @@ -4429,19 +5076,24 @@ 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) FOLLOWER(Wailord, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Wailord), + .levelUpLearnset = sWailordLevelUpLearnset, + .teachableLearnset = sWailordTeachableLearnset, }, #endif //P_FAMILY_WAILMER @@ -4480,54 +5132,54 @@ 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) FOLLOWER(Numel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -4539,33 +5191,56 @@ 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) FOLLOWER(Camerupt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -4577,16 +5252,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 @@ -4627,18 +5311,23 @@ 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) FOLLOWER(Torkoal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Torkoal), + .levelUpLearnset = sTorkoalLevelUpLearnset, + .teachableLearnset = sTorkoalTeachableLearnset, }, #endif //P_FAMILY_TORKOAL @@ -4677,18 +5366,23 @@ 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) FOLLOWER(Spoink, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Spoink), + .levelUpLearnset = sSpoinkLevelUpLearnset, + .teachableLearnset = sSpoinkTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_GRUMPIG}), }, @@ -4726,19 +5420,24 @@ 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) FOLLOWER(Grumpig, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Grumpig), + .levelUpLearnset = sGrumpigLevelUpLearnset, + .teachableLearnset = sGrumpigTeachableLearnset, }, #endif //P_FAMILY_SPOINK @@ -4778,18 +5477,23 @@ 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) FOLLOWER(Spinda, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Spinda), + .levelUpLearnset = sSpindaLevelUpLearnset, + .teachableLearnset = sSpindaTeachableLearnset, }, #endif //P_FAMILY_SPINDA @@ -4811,11 +5515,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"), @@ -4833,18 +5537,23 @@ 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) FOLLOWER(Trapinch, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Trapinch), + .levelUpLearnset = sTrapinchLevelUpLearnset, + .teachableLearnset = sTrapinchTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_VIBRAVA}), }, @@ -4865,11 +5574,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"), @@ -4887,18 +5596,23 @@ 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) FOLLOWER(Vibrava, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Vibrava), + .levelUpLearnset = sVibravaLevelUpLearnset, + .teachableLearnset = sVibravaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_FLYGON}), }, @@ -4925,11 +5639,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"), @@ -4947,19 +5661,24 @@ 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) FOLLOWER(Flygon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Flygon), + .levelUpLearnset = sFlygonLevelUpLearnset, + .teachableLearnset = sFlygonTeachableLearnset, }, #endif //P_FAMILY_TRAPINCH @@ -4999,18 +5718,23 @@ 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) FOLLOWER(Cacnea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cacnea), + .levelUpLearnset = sCacneaLevelUpLearnset, + .teachableLearnset = sCacneaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_CACTURNE}), }, @@ -5050,19 +5774,25 @@ 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) FOLLOWER(Cacturne, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cacturne), + .levelUpLearnset = sCacturneLevelUpLearnset, + .teachableLearnset = sCacturneTeachableLearnset, }, #endif //P_FAMILY_CACNEA @@ -5101,41 +5831,28 @@ 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) FOLLOWER(Swablu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - 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, @@ -5143,9 +5860,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( @@ -5157,22 +5885,30 @@ 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) FOLLOWER(Altaria, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) + .levelUpLearnset = sAltariaLevelUpLearnset, + .teachableLearnset = sAltariaTeachableLearnset, + .formSpeciesIdTable = sAltariaFormSpeciesIdTable, + .formChangeTable = sAltariaFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_ALTARIA_MEGA] = { - ALTARIA_MISC_INFO, .baseHP = 75, .baseAttack = 110, .baseDefense = 110, @@ -5180,9 +5916,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( @@ -5194,17 +5941,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 @@ -5246,18 +6002,23 @@ 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) FOLLOWER(Zangoose, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Zangoose), + .levelUpLearnset = sZangooseLevelUpLearnset, + .teachableLearnset = sZangooseTeachableLearnset, }, #endif //P_FAMILY_ZANGOOSE @@ -5299,18 +6060,23 @@ 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) FOLLOWER(Seviper, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BIKE_TIRE) - LEARNSETS(Seviper), + .levelUpLearnset = sSeviperLevelUpLearnset, + .teachableLearnset = sSeviperTeachableLearnset, }, #endif //P_FAMILY_SEVIPER @@ -5340,7 +6106,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, @@ -5357,19 +6123,24 @@ 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) FOLLOWER(Lunatone, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Lunatone), + .levelUpLearnset = sLunatoneLevelUpLearnset, + .teachableLearnset = sLunatoneTeachableLearnset, }, #endif //P_FAMILY_LUNATONE @@ -5399,7 +6170,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, @@ -5416,19 +6187,24 @@ 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) FOLLOWER(Solrock, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Solrock), + .levelUpLearnset = sSolrockLevelUpLearnset, + .teachableLearnset = sSolrockTeachableLearnset, }, #endif //P_FAMILY_SOLROCK @@ -5467,19 +6243,24 @@ 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) FOLLOWER(Barboach, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Barboach), + .levelUpLearnset = sBarboachLevelUpLearnset, + .teachableLearnset = sBarboachTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_WHISCASH}), }, @@ -5517,18 +6298,23 @@ 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) FOLLOWER(Whiscash, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Whiscash), + .levelUpLearnset = sWhiscashLevelUpLearnset, + .teachableLearnset = sWhiscashTeachableLearnset, }, #endif //P_FAMILY_BARBOACH @@ -5567,18 +6353,23 @@ 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) FOLLOWER(Corphish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Corphish), + .levelUpLearnset = sCorphishLevelUpLearnset, + .teachableLearnset = sCorphishTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_CRAWDAUNT}), }, @@ -5616,18 +6407,23 @@ 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) FOLLOWER(Crawdaunt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Crawdaunt), + .levelUpLearnset = sCrawdauntLevelUpLearnset, + .teachableLearnset = sCrawdauntTeachableLearnset, }, #endif //P_FAMILY_CORPHISH @@ -5650,7 +6446,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, @@ -5667,19 +6463,24 @@ 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) FOLLOWER(Baltoy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Baltoy), + .levelUpLearnset = sBaltoyLevelUpLearnset, + .teachableLearnset = sBaltoyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_CLAYDOL}), }, @@ -5701,7 +6502,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, @@ -5718,19 +6519,24 @@ 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) FOLLOWER(Claydol, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Claydol), + .levelUpLearnset = sClaydolLevelUpLearnset, + .teachableLearnset = sClaydolTeachableLearnset, }, #endif //P_FAMILY_BALTOY @@ -5776,18 +6582,23 @@ 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) FOLLOWER(Lileep, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - LEARNSETS(Lileep), + .levelUpLearnset = sLileepLevelUpLearnset, + .teachableLearnset = sLileepTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_CRADILY}), }, @@ -5832,18 +6643,23 @@ 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) FOLLOWER(Cradily, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - LEARNSETS(Cradily), + .levelUpLearnset = sCradilyLevelUpLearnset, + .teachableLearnset = sCradilyTeachableLearnset, }, #endif //P_FAMILY_LILEEP @@ -5888,18 +6704,23 @@ 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) FOLLOWER(Anorith, SIZE_32x32, SHADOW_SIZE_M, TRACKS_BUG) - LEARNSETS(Anorith), + .levelUpLearnset = sAnorithLevelUpLearnset, + .teachableLearnset = sAnorithTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_ARMALDO}), }, @@ -5943,18 +6764,23 @@ 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) FOLLOWER(Armaldo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Armaldo), + .levelUpLearnset = sArmaldoLevelUpLearnset, + .teachableLearnset = sArmaldoTeachableLearnset, }, #endif //P_FAMILY_ANORITH @@ -5993,18 +6819,23 @@ 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) FOLLOWER(Feebas, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - 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}), @@ -6044,148 +6875,262 @@ 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) FOLLOWER(Milotic, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - 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, 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) FOLLOWER(CastformNormal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) + .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, 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) FOLLOWER(CastformSunny, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) + .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, 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) FOLLOWER(CastformRainy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) + .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, 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) FOLLOWER(CastformSnowy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) + .levelUpLearnset = sCastformLevelUpLearnset, + .teachableLearnset = sCastformTeachableLearnset, + .formSpeciesIdTable = sCastformFormSpeciesIdTable, + .formChangeTable = sCastformFormChangeTable, }, #endif //P_FAMILY_CASTFORM @@ -6224,19 +7169,24 @@ 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) FOLLOWER(Kecleon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Kecleon), + .levelUpLearnset = sKecleonLevelUpLearnset, + .teachableLearnset = sKecleonTeachableLearnset, }, #endif //P_FAMILY_KECLEON @@ -6276,53 +7226,51 @@ 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) FOLLOWER(Shuppet, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - 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( @@ -6334,31 +7282,52 @@ 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) FOLLOWER(Banette, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -6369,17 +7338,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 @@ -6421,19 +7399,24 @@ 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) FOLLOWER(Duskull, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Duskull), + .levelUpLearnset = sDuskullLevelUpLearnset, + .teachableLearnset = sDuskullTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_DUSCLOPS}), }, @@ -6473,19 +7456,24 @@ 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) FOLLOWER(Dusclops, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Dusclops), + .levelUpLearnset = sDusclopsLevelUpLearnset, + .teachableLearnset = sDusclopsTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}, {EVO_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}), }, @@ -6533,19 +7521,24 @@ 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) FOLLOWER(Dusknoir, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Dusknoir), + .levelUpLearnset = sDusknoirLevelUpLearnset, + .teachableLearnset = sDusknoirTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_DUSKULL @@ -6585,18 +7578,23 @@ 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) FOLLOWER(Tropius, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Tropius), + .levelUpLearnset = sTropiusLevelUpLearnset, + .teachableLearnset = sTropiusTeachableLearnset, }, #endif //P_FAMILY_TROPIUS @@ -6620,7 +7618,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, @@ -6637,36 +7635,35 @@ 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) FOLLOWER(Chingling, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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 @@ -6684,7 +7681,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, @@ -6701,107 +7698,140 @@ 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) FOLLOWER(Chimecho, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - 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) FOLLOWER(Absol, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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 @@ -6842,53 +7872,51 @@ 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) FOLLOWER(Snorunt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -6900,32 +7928,52 @@ 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) FOLLOWER(Glalie, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -6936,17 +7984,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 @@ -6985,19 +8042,24 @@ 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) FOLLOWER(Froslass, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Froslass), + .levelUpLearnset = sFroslassLevelUpLearnset, + .teachableLearnset = sFroslassTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_SNORUNT @@ -7037,19 +8099,24 @@ 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) FOLLOWER(Spheal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Spheal), + .levelUpLearnset = sSphealLevelUpLearnset, + .teachableLearnset = sSphealTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_SEALEO}), }, @@ -7087,18 +8154,23 @@ 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) FOLLOWER(Sealeo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Sealeo), + .levelUpLearnset = sSealeoLevelUpLearnset, + .teachableLearnset = sSealeoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 44, SPECIES_WALREIN}), }, @@ -7142,18 +8214,23 @@ 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) FOLLOWER(Walrein, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Walrein), + .levelUpLearnset = sWalreinLevelUpLearnset, + .teachableLearnset = sWalreinTeachableLearnset, }, #endif //P_FAMILY_SPHEAL @@ -7194,18 +8271,23 @@ 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) FOLLOWER(Clamperl, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - 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}, @@ -7248,18 +8330,23 @@ 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) FOLLOWER(Huntail, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - LEARNSETS(Huntail), + .levelUpLearnset = sHuntailLevelUpLearnset, + .teachableLearnset = sHuntailTeachableLearnset, }, [SPECIES_GOREBYSS] = @@ -7297,18 +8384,23 @@ 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) FOLLOWER(Gorebyss, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SLITHER) - LEARNSETS(Gorebyss), + .levelUpLearnset = sGorebyssLevelUpLearnset, + .teachableLearnset = sGorebyssTeachableLearnset, }, #endif //P_FAMILY_CLAMPERL @@ -7349,20 +8441,27 @@ 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) FOLLOWER(Relicanth, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Relicanth), + .levelUpLearnset = sRelicanthLevelUpLearnset, + .teachableLearnset = sRelicanthTeachableLearnset, }, #endif //P_FAMILY_RELICANTH @@ -7402,18 +8501,23 @@ 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) FOLLOWER(Luvdisc, SIZE_32x32, SHADOW_SIZE_M, TRACKS_SPOT) - LEARNSETS(Luvdisc), + .levelUpLearnset = sLuvdiscLevelUpLearnset, + .teachableLearnset = sLuvdiscTeachableLearnset, }, #endif //P_FAMILY_LUVDISC @@ -7453,18 +8557,23 @@ 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) FOLLOWER(Bagon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bagon), + .levelUpLearnset = sBagonLevelUpLearnset, + .teachableLearnset = sBagonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_SHELGON}), }, @@ -7503,49 +8612,36 @@ 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) FOLLOWER(Shelgon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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 @@ -7553,8 +8649,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( @@ -7566,32 +8673,53 @@ 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) FOLLOWER(Salamence, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -7603,16 +8731,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 @@ -7653,20 +8790,25 @@ 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) FOLLOWER(Beldum, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Beldum), .tmIlliterate = TRUE, + .levelUpLearnset = sBeldumLevelUpLearnset, + .teachableLearnset = sBeldumTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_METANG}), }, @@ -7705,49 +8847,36 @@ 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) FOLLOWER(Metang, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - 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 @@ -7755,8 +8884,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( @@ -7768,31 +8908,52 @@ 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) FOLLOWER(Metagross, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -7803,17 +8964,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 @@ -7845,7 +9015,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, @@ -7861,18 +9030,24 @@ 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) FOLLOWER(Regirock, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Regirock), + .isLegendary = TRUE, + .levelUpLearnset = sRegirockLevelUpLearnset, + .teachableLearnset = sRegirockTeachableLearnset, }, #endif //P_FAMILY_REGIROCK @@ -7902,7 +9077,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, @@ -7918,18 +9092,24 @@ 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) FOLLOWER(Regice, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Regice), + .isLegendary = TRUE, + .levelUpLearnset = sRegiceLevelUpLearnset, + .teachableLearnset = sRegiceTeachableLearnset, }, #endif //P_FAMILY_REGICE @@ -7960,7 +9140,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, @@ -7976,49 +9155,38 @@ 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) FOLLOWER(Registeel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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 @@ -8026,9 +9194,18 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 211, #endif - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .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, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, + .speciesName = _("Latias"), .cryId = CRY_LATIAS, + .natDexNum = NATIONAL_DEX_LATIAS, + .categoryName = _("Eon"), .height = 14, .weight = 400, .description = COMPOUND_STRING( @@ -8040,33 +9217,53 @@ 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) FOLLOWER(Latias, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) + .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( @@ -8078,49 +9275,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 @@ -8128,9 +9318,18 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 211, #endif - .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .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, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Latios"), .cryId = CRY_LATIOS, + .natDexNum = NATIONAL_DEX_LATIOS, + .categoryName = _("Eon"), .height = 20, .weight = 600, .description = COMPOUND_STRING( @@ -8142,33 +9341,53 @@ 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) FOLLOWER(Latios, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) + .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( @@ -8180,50 +9399,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 @@ -8231,8 +9442,18 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 218, #endif - .abilities = { ABILITY_DRIZZLE, ABILITY_NONE }, + .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, 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( @@ -8244,31 +9465,52 @@ 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) FOLLOWER(Kyogre, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE) + .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( @@ -8280,49 +9522,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 @@ -8330,8 +9564,18 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 218, #endif - .types = MON_TYPES(TYPE_GROUND), - .abilities = { ABILITY_DROUGHT, ABILITY_NONE }, + .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, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Groudon"), + .cryId = CRY_GROUDON, + .natDexNum = NATIONAL_DEX_GROUDON, + .categoryName = _("Continent"), .height = 35, .weight = 9500, .description = COMPOUND_STRING( @@ -8343,31 +9587,52 @@ 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) FOLLOWER(Groudon, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -8379,7 +9644,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, @@ -8387,44 +9653,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 @@ -8432,7 +9686,19 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #else .expYield = 220, #endif - .abilities = { ABILITY_AIR_LOCK, ABILITY_NONE }, + .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, 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( @@ -8444,32 +9710,55 @@ 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) FOLLOWER(Rayquaza, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE) + .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( @@ -8481,17 +9770,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 @@ -8522,9 +9821,8 @@ 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, - .isMythical = TRUE, .speciesName = _("Jirachi"), .cryId = CRY_JIRACHI, .natDexNum = NATIONAL_DEX_JIRACHI, @@ -8540,19 +9838,25 @@ 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) FOLLOWER(Jirachi, SIZE_32x32, SHADOW_SIZE_M, TRACKS_NONE) - LEARNSETS(Jirachi), + .isMythical = TRUE, + .levelUpLearnset = sJirachiLevelUpLearnset, + .teachableLearnset = sJirachiTeachableLearnset, }, #endif //P_FAMILY_JIRACHI @@ -8565,130 +9869,216 @@ 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, 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), + .palette = gMonPalette_DeoxysNormal, + .shinyPalette = gMonShinyPalette_DeoxysNormal, + .iconSprite = gMonIcon_DeoxysNormal, + .iconPalIndex = 0, + FOOTPRINT(Deoxys) FOLLOWER(DeoxysNormal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(DeoxysNormal), + .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, 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), + .palette = gMonPalette_DeoxysAttack, + .shinyPalette = gMonShinyPalette_DeoxysAttack, + .iconSprite = gMonIcon_DeoxysAttack, + .iconPalIndex = 0, + FOOTPRINT(Deoxys) FOLLOWER(DeoxysAttack, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(DeoxysAttack), + .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, 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), + .palette = gMonPalette_DeoxysDefense, + .shinyPalette = gMonShinyPalette_DeoxysDefense, + .iconSprite = gMonIcon_DeoxysDefense, + .iconPalIndex = 0, + FOOTPRINT(Deoxys) FOLLOWER(DeoxysDefense, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(DeoxysDefense), + .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, 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), + .palette = gMonPalette_DeoxysSpeed, + .shinyPalette = gMonShinyPalette_DeoxysSpeed, + .iconSprite = gMonIcon_DeoxysSpeed, + .iconPalIndex = 0, + FOOTPRINT(Deoxys) FOLLOWER(DeoxysSpeed, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(DeoxysSpeed), + .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_families.h similarity index 62% rename from src/data/pokemon/species_info/gen_4.h rename to src/data/pokemon/species_info/gen_4_families.h index ff4d0d09ee..985ca7e403 100644 --- a/src/data/pokemon/species_info/gen_4.h +++ b/src/data/pokemon/species_info/gen_4_families.h @@ -38,18 +38,23 @@ 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) FOLLOWER(Turtwig, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Turtwig), + .levelUpLearnset = sTurtwigLevelUpLearnset, + .teachableLearnset = sTurtwigTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_GROTLE}), }, @@ -88,18 +93,23 @@ 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) FOLLOWER(Grotle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Grotle), + .levelUpLearnset = sGrotleLevelUpLearnset, + .teachableLearnset = sGrotleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_TORTERRA}), }, @@ -145,18 +155,23 @@ 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) FOLLOWER(Torterra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Torterra), + .levelUpLearnset = sTorterraLevelUpLearnset, + .teachableLearnset = sTorterraTeachableLearnset, }, #endif //P_FAMILY_TURTWIG @@ -196,18 +211,23 @@ 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) FOLLOWER(Chimchar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Chimchar), + .levelUpLearnset = sChimcharLevelUpLearnset, + .teachableLearnset = sChimcharTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_MONFERNO}), }, @@ -247,18 +267,23 @@ 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) FOLLOWER(Monferno, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Monferno), + .levelUpLearnset = sMonfernoLevelUpLearnset, + .teachableLearnset = sMonfernoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_INFERNAPE}), }, @@ -304,18 +329,23 @@ 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) FOLLOWER(Infernape, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Infernape), + .levelUpLearnset = sInfernapeLevelUpLearnset, + .teachableLearnset = sInfernapeTeachableLearnset, }, #endif //P_FAMILY_CHIMCHAR @@ -337,11 +367,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, @@ -358,18 +388,23 @@ 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) FOLLOWER(Piplup, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Piplup), + .levelUpLearnset = sPiplupLevelUpLearnset, + .teachableLearnset = sPiplupTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_PRINPLUP}), }, @@ -390,11 +425,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, @@ -411,18 +446,23 @@ 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) FOLLOWER(Prinplup, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Prinplup), + .levelUpLearnset = sPrinplupLevelUpLearnset, + .teachableLearnset = sPrinplupTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_EMPOLEON}), }, @@ -449,11 +489,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, @@ -470,18 +510,23 @@ 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) FOLLOWER(Empoleon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Empoleon), + .levelUpLearnset = sEmpoleonLevelUpLearnset, + .teachableLearnset = sEmpoleonTeachableLearnset, }, #endif //P_FAMILY_PIPLUP @@ -520,20 +565,27 @@ 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) FOLLOWER(Starly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Starly), + .levelUpLearnset = sStarlyLevelUpLearnset, + .teachableLearnset = sStarlyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_STARAVIA}), }, @@ -571,20 +623,27 @@ 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) FOLLOWER(Staravia, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Staravia), + .levelUpLearnset = sStaraviaLevelUpLearnset, + .teachableLearnset = sStaraviaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_STARAPTOR}), }, @@ -630,19 +689,25 @@ 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) FOLLOWER(Staraptor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Staraptor), + .levelUpLearnset = sStaraptorLevelUpLearnset, + .teachableLearnset = sStaraptorTeachableLearnset, }, #endif //P_FAMILY_STARLY @@ -681,20 +746,27 @@ 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) FOLLOWER(Bidoof, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bidoof), + .levelUpLearnset = sBidoofLevelUpLearnset, + .teachableLearnset = sBidoofTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_BIBAREL}), }, @@ -732,19 +804,25 @@ 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) FOLLOWER(Bibarel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bibarel), + .levelUpLearnset = sBibarelLevelUpLearnset, + .teachableLearnset = sBibarelTeachableLearnset, }, #endif //P_FAMILY_BIDOOF @@ -784,21 +862,28 @@ 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) FOLLOWER(Kricketot, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Kricketot), .tmIlliterate = TRUE, + .levelUpLearnset = sKricketotLevelUpLearnset, + .teachableLearnset = sKricketotTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_KRICKETUNE}), }, @@ -837,20 +922,27 @@ 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) FOLLOWER(Kricketune, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Kricketune), + .levelUpLearnset = sKricketuneLevelUpLearnset, + .teachableLearnset = sKricketuneTeachableLearnset, }, #endif //P_FAMILY_KRICKETOT @@ -889,20 +981,27 @@ 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) FOLLOWER(Shinx, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Shinx), + .levelUpLearnset = sShinxLevelUpLearnset, + .teachableLearnset = sShinxTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_LUXIO}), }, @@ -940,20 +1039,27 @@ 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) FOLLOWER(Luxio, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Luxio), + .levelUpLearnset = sLuxioLevelUpLearnset, + .teachableLearnset = sLuxioTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_LUXRAY}), }, @@ -997,20 +1103,27 @@ 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) FOLLOWER(Luxray, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Luxray), + .levelUpLearnset = sLuxrayLevelUpLearnset, + .teachableLearnset = sLuxrayTeachableLearnset, }, #endif //P_FAMILY_SHINX @@ -1049,18 +1162,23 @@ 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) FOLLOWER(Cranidos, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cranidos), + .levelUpLearnset = sCranidosLevelUpLearnset, + .teachableLearnset = sCranidosTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_RAMPARDOS}), }, @@ -1098,18 +1216,23 @@ 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) FOLLOWER(Rampardos, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Rampardos), + .levelUpLearnset = sRampardosLevelUpLearnset, + .teachableLearnset = sRampardosTeachableLearnset, }, #endif //P_FAMILY_CRANIDOS @@ -1148,18 +1271,23 @@ 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) FOLLOWER(Shieldon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Shieldon), + .levelUpLearnset = sShieldonLevelUpLearnset, + .teachableLearnset = sShieldonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_BASTIODON}), }, @@ -1197,151 +1325,206 @@ 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) FOLLOWER(Bastiodon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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) FOLLOWER(BurmyPlantCloak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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}), + {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM_PLANT_CLOAK}), }, [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) FOLLOWER(BurmySandyCloak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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}), + {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM_SANDY_CLOAK}), }, [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) FOLLOWER(BurmyTrashCloak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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}), + {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM_TRASH_CLOAK}), }, -#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, @@ -1349,24 +1532,55 @@ 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), + .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) FOLLOWER(WormadamPlantCloak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(WormadamPlantCloak), + .levelUpLearnset = sWormadamPlantCloakLevelUpLearnset, + .teachableLearnset = sWormadamPlantCloakTeachableLearnset, + .formSpeciesIdTable = sWormadamFormSpeciesIdTable, }, [SPECIES_WORMADAM_SANDY_CLOAK] = { - WORMADAM_MISC_INFO, .baseHP = 60, .baseAttack = 79, .baseDefense = 105, @@ -1374,24 +1588,55 @@ 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), + .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) FOLLOWER(WormadamSandyCloak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(WormadamSandyCloak), + .levelUpLearnset = sWormadamSandyCloakLevelUpLearnset, + .teachableLearnset = sWormadamSandyCloakTeachableLearnset, + .formSpeciesIdTable = sWormadamFormSpeciesIdTable, }, [SPECIES_WORMADAM_TRASH_CLOAK] = { - WORMADAM_MISC_INFO, .baseHP = 60, .baseAttack = 69, .baseDefense = 95, @@ -1399,72 +1644,110 @@ 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), - FOLLOWER(WormadamTrashCloak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(WormadamTrashCloak), - }, - - [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, + .pokemonScale = 432, + .pokemonOffset = 13, .trainerScale = 256, .trainerOffset = 0, - FRONT_PIC(Mothim, 64, 64), - .frontPicYOffset = 12, - .frontAnimFrames = sAnims_Mothim, - .frontAnimId = ANIM_H_SLIDE_WOBBLE, - .enemyMonElevation = 10, - BACK_PIC(Mothim, 64, 56), - .backPicYOffset = 8, - .backAnimId = BACK_ANIM_H_SHAKE, - PALETTES(Mothim), - ICON(Mothim, 0), - FOOTPRINT(Mothim) - FOLLOWER(Mothim, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Mothim), + .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) + FOLLOWER(WormadamTrashCloak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sWormadamTrashCloakLevelUpLearnset, + .teachableLearnset = sWormadamTrashCloakTeachableLearnset, + .formSpeciesIdTable = sWormadamFormSpeciesIdTable, }, + +#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) \ + FOLLOWER(Mothim, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ + .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 @@ -1503,21 +1786,27 @@ 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) FOLLOWER(Combee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Combee), .tmIlliterate = TRUE, + .levelUpLearnset = sCombeeLevelUpLearnset, + .teachableLearnset = sCombeeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 21, SPECIES_VESPIQUEN}), }, @@ -1557,19 +1846,24 @@ 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) FOLLOWER(Vespiquen, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Vespiquen), + .levelUpLearnset = sVespiquenLevelUpLearnset, + .teachableLearnset = sVespiquenTeachableLearnset, }, #endif //P_FAMILY_COMBEE @@ -1608,19 +1902,25 @@ 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) FOLLOWER(Pachirisu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Pachirisu), + .levelUpLearnset = sPachirisuLevelUpLearnset, + .teachableLearnset = sPachirisuTeachableLearnset, }, #endif //P_FAMILY_PACHIRISU @@ -1659,19 +1959,25 @@ 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) FOLLOWER(Buizel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Buizel), + .levelUpLearnset = sBuizelLevelUpLearnset, + .teachableLearnset = sBuizelTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_FLOATZEL}), }, @@ -1709,19 +2015,25 @@ 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) FOLLOWER(Floatzel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Floatzel), + .levelUpLearnset = sFloatzelLevelUpLearnset, + .teachableLearnset = sFloatzelTeachableLearnset, }, #endif //P_FAMILY_BUIZEL @@ -1744,7 +2056,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, @@ -1761,234 +2073,355 @@ 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) FOLLOWER(Cherubi, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, 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) FOLLOWER(CherrimOvercast, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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) FOLLOWER(ShellosWestSea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) FOLLOWER(ShellosEastSea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) FOLLOWER(GastrodonWestSea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) FOLLOWER(GastrodonEastSea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sGastrodonLevelUpLearnset, + .teachableLearnset = sGastrodonTeachableLearnset, + .formSpeciesIdTable = sGastrodonFormSpeciesIdTable, }, #endif //P_FAMILY_SHELLOS @@ -2027,19 +2460,24 @@ 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) FOLLOWER(Drifloon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Drifloon), + .levelUpLearnset = sDrifloonLevelUpLearnset, + .teachableLearnset = sDrifloonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_DRIFBLIM}), }, @@ -2077,19 +2515,24 @@ 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) FOLLOWER(Drifblim, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Drifblim), + .levelUpLearnset = sDrifblimLevelUpLearnset, + .teachableLearnset = sDrifblimTeachableLearnset, }, #endif //P_FAMILY_DRIFLOON @@ -2128,41 +2571,28 @@ 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) FOLLOWER(Buneary, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -2170,9 +2600,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( @@ -2184,22 +2625,30 @@ 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) FOLLOWER(Lopunny, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sLopunnyLevelUpLearnset, + .teachableLearnset = sLopunnyTeachableLearnset, + .formSpeciesIdTable = sLopunnyFormSpeciesIdTable, + .formChangeTable = sLopunnyFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_LOPUNNY_MEGA] = { - LOPUNNY_MISC_INFO, .baseHP = 65, .baseAttack = 136, .baseDefense = 94, @@ -2207,9 +2656,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( @@ -2221,16 +2681,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 @@ -2270,18 +2739,23 @@ 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) FOLLOWER(Glameow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Glameow), + .levelUpLearnset = sGlameowLevelUpLearnset, + .teachableLearnset = sGlameowTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_PURUGLY}), }, @@ -2319,18 +2793,23 @@ 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) FOLLOWER(Purugly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Purugly), + .levelUpLearnset = sPuruglyLevelUpLearnset, + .teachableLearnset = sPuruglyTeachableLearnset, }, #endif //P_FAMILY_GLAMEOW @@ -2369,18 +2848,23 @@ 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) FOLLOWER(Stunky, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Stunky), + .levelUpLearnset = sStunkyLevelUpLearnset, + .teachableLearnset = sStunkyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SKUNTANK}), }, @@ -2418,18 +2902,23 @@ 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) FOLLOWER(Skuntank, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Skuntank), + .levelUpLearnset = sSkuntankLevelUpLearnset, + .teachableLearnset = sSkuntankTeachableLearnset, }, #endif //P_FAMILY_STUNKY @@ -2469,19 +2958,24 @@ 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) FOLLOWER(Bronzor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bronzor), + .levelUpLearnset = sBronzorLevelUpLearnset, + .teachableLearnset = sBronzorTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_BRONZONG}), }, @@ -2521,19 +3015,24 @@ 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) FOLLOWER(Bronzong, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bronzong), + .levelUpLearnset = sBronzongLevelUpLearnset, + .teachableLearnset = sBronzongTeachableLearnset, }, #endif //P_FAMILY_BRONZOR @@ -2573,18 +3072,23 @@ 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) FOLLOWER(Chatot, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Chatot), + .levelUpLearnset = sChatotLevelUpLearnset, + .teachableLearnset = sChatotTeachableLearnset, }, #endif //P_FAMILY_CHATOT @@ -2624,18 +3128,23 @@ 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) FOLLOWER(Spiritomb, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Spiritomb), + .levelUpLearnset = sSpiritombLevelUpLearnset, + .teachableLearnset = sSpiritombTeachableLearnset, }, #endif //P_FAMILY_SPIRITOMB @@ -2674,20 +3183,27 @@ 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) FOLLOWER(Gible, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Gible), + .levelUpLearnset = sGibleLevelUpLearnset, + .teachableLearnset = sGibleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_GABITE}), }, @@ -2725,56 +3241,40 @@ 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) FOLLOWER(Gabite, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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 @@ -2782,54 +3282,106 @@ 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) FOLLOWER(Garchomp, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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 @@ -2869,52 +3421,50 @@ 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) FOLLOWER(Riolu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -2926,31 +3476,52 @@ 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) FOLLOWER(Lucario, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -2962,16 +3533,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 @@ -3011,22 +3591,29 @@ 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) FOLLOWER(Hippopotas, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Hippopotas), + .levelUpLearnset = sHippopotasLevelUpLearnset, + .teachableLearnset = sHippopotasTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_HIPPOWDON}), }, @@ -3064,22 +3651,29 @@ 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) FOLLOWER(Hippowdon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Hippowdon), + .levelUpLearnset = sHippowdonLevelUpLearnset, + .teachableLearnset = sHippowdonTeachableLearnset, }, #endif //P_FAMILY_HIPPOPOTAS @@ -3119,18 +3713,23 @@ 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) FOLLOWER(Skorupi, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Skorupi), + .levelUpLearnset = sSkorupiLevelUpLearnset, + .teachableLearnset = sSkorupiTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_DRAPION}), }, @@ -3169,18 +3768,23 @@ 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) FOLLOWER(Drapion, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Drapion), + .levelUpLearnset = sDrapionLevelUpLearnset, + .teachableLearnset = sDrapionTeachableLearnset, }, #endif //P_FAMILY_SKORUPI @@ -3220,20 +3824,27 @@ 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) FOLLOWER(Croagunk, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Croagunk), + .levelUpLearnset = sCroagunkLevelUpLearnset, + .teachableLearnset = sCroagunkTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_TOXICROAK}), }, @@ -3272,20 +3883,27 @@ 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) FOLLOWER(Toxicroak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Toxicroak), + .levelUpLearnset = sToxicroakLevelUpLearnset, + .teachableLearnset = sToxicroakTeachableLearnset, }, #endif //P_FAMILY_CROAGUNK @@ -3307,7 +3925,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, @@ -3324,19 +3942,24 @@ 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) FOLLOWER(Carnivine, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Carnivine), + .levelUpLearnset = sCarnivineLevelUpLearnset, + .teachableLearnset = sCarnivineTeachableLearnset, }, #endif //P_FAMILY_CARNIVINE @@ -3375,20 +3998,27 @@ 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) FOLLOWER(Finneon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Finneon), + .levelUpLearnset = sFinneonLevelUpLearnset, + .teachableLearnset = sFinneonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_LUMINEON}), }, @@ -3426,20 +4056,27 @@ 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) FOLLOWER(Lumineon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Lumineon), + .levelUpLearnset = sLumineonLevelUpLearnset, + .teachableLearnset = sLumineonTeachableLearnset, }, #endif //P_FAMILY_FINNEON @@ -3479,55 +4116,55 @@ 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) FOLLOWER(Snover, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -3539,32 +4176,55 @@ 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) FOLLOWER(Abomasnow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -3576,50 +4236,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, @@ -3627,23 +4269,52 @@ 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, 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) FOLLOWER(Rotom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sRotomLevelUpLearnset, + .teachableLearnset = sRotomTeachableLearnset, + .formSpeciesIdTable = sRotomFormSpeciesIdTable, + .formChangeTable = sRotomFormChangeTable, }, #if P_UPDATED_EXP_YIELDS >= GEN_7 @@ -3654,130 +4325,291 @@ 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, 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) FOLLOWER(RotomHeat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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) FOLLOWER(RotomWash, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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) FOLLOWER(RotomFrost, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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) FOLLOWER(RotomFan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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) FOLLOWER(RotomMow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sRotomLevelUpLearnset, + .teachableLearnset = sRotomTeachableLearnset, + .formSpeciesIdTable = sRotomFormSpeciesIdTable, + .formChangeTable = sRotomFormChangeTable, }, #endif //P_FAMILY_ROTOM @@ -3806,9 +4638,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Uxie"), .cryId = CRY_UXIE, .natDexNum = NATIONAL_DEX_UXIE, @@ -3824,19 +4655,25 @@ 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) FOLLOWER(Uxie, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Uxie), + .isLegendary = TRUE, + .levelUpLearnset = sUxieLevelUpLearnset, + .teachableLearnset = sUxieTeachableLearnset, }, #endif //P_FAMILY_UXIE @@ -3866,9 +4703,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Mesprit"), .cryId = CRY_MESPRIT, .natDexNum = NATIONAL_DEX_MESPRIT, @@ -3884,19 +4720,25 @@ 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) FOLLOWER(Mesprit, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Mesprit), + .isLegendary = TRUE, + .levelUpLearnset = sMespritLevelUpLearnset, + .teachableLearnset = sMespritTeachableLearnset, }, #endif //P_FAMILY_MESPRIT @@ -3925,9 +4767,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Azelf"), .cryId = CRY_AZELF, .natDexNum = NATIONAL_DEX_AZELF, @@ -3943,19 +4784,25 @@ 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) FOLLOWER(Azelf, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Azelf), + .isLegendary = TRUE, + .levelUpLearnset = sAzelfLevelUpLearnset, + .teachableLearnset = sAzelfTeachableLearnset, }, #endif //P_FAMILY_AZELF @@ -3968,37 +4815,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( @@ -4010,27 +4849,51 @@ 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) FOLLOWER(Dialga, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -4042,16 +4905,26 @@ 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) FOLLOWER(DialgaOrigin, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE) + .isLegendary = TRUE, + .levelUpLearnset = sDialgaLevelUpLearnset, + .teachableLearnset = sDialgaTeachableLearnset, + .formSpeciesIdTable = sDialgaFormSpeciesIdTable, + .formChangeTable = sDialgaFormChangeTable, }, #endif //P_FAMILY_DIALGA @@ -4064,37 +4937,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( @@ -4106,27 +4971,51 @@ 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) FOLLOWER(Palkia, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -4138,16 +5027,26 @@ 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) FOLLOWER(PalkiaOrigin, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE) + .isLegendary = TRUE, + .levelUpLearnset = sPalkiaLevelUpLearnset, + .teachableLearnset = sPalkiaTeachableLearnset, + .formSpeciesIdTable = sPalkiaFormSpeciesIdTable, + .formChangeTable = sPalkiaFormChangeTable, }, #endif //P_FAMILY_PALKIA @@ -4177,7 +5076,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, @@ -4193,18 +5091,24 @@ 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) FOLLOWER(Heatran, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Heatran), + .isLegendary = TRUE, + .levelUpLearnset = sHeatranLevelUpLearnset, + .teachableLearnset = sHeatranTeachableLearnset, }, #endif //P_FAMILY_HEATRAN @@ -4232,9 +5136,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Regigigas"), .cryId = CRY_REGIGIGAS, .natDexNum = NATIONAL_DEX_REGIGIGAS, @@ -4250,18 +5153,24 @@ 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) FOLLOWER(Regigigas, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Regigigas), + .isLegendary = TRUE, + .levelUpLearnset = sRegigigasLevelUpLearnset, + .teachableLearnset = sRegigigasTeachableLearnset, }, #endif //P_FAMILY_REGIGIGAS @@ -4274,37 +5183,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( @@ -4316,28 +5217,51 @@ 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) FOLLOWER(GiratinaAltered, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -4349,17 +5273,27 @@ 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) FOLLOWER(GiratinaOrigin, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) + .isLegendary = TRUE, + .levelUpLearnset = sGiratinaLevelUpLearnset, + .teachableLearnset = sGiratinaTeachableLearnset, + .formSpeciesIdTable = sGiratinaFormSpeciesIdTable, + .formChangeTable = sGiratinaFormChangeTable, }, #endif //P_FAMILY_GIRATINA @@ -4387,9 +5321,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Cresselia"), .cryId = CRY_CRESSELIA, .natDexNum = NATIONAL_DEX_CRESSELIA, @@ -4405,19 +5338,25 @@ 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) FOLLOWER(Cresselia, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cresselia), + .isLegendary = TRUE, + .levelUpLearnset = sCresseliaLevelUpLearnset, + .teachableLearnset = sCresseliaTeachableLearnset, }, #endif //P_FAMILY_CRESSELIA @@ -4445,9 +5384,8 @@ 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, - .isMythical = TRUE, .speciesName = _("Phione"), .cryId = CRY_PHIONE, .natDexNum = NATIONAL_DEX_PHIONE, @@ -4463,19 +5401,25 @@ 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) FOLLOWER(Phione, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Phione), + .isMythical = TRUE, + .levelUpLearnset = sPhioneLevelUpLearnset, + .teachableLearnset = sPhioneTeachableLearnset, }, [SPECIES_MANAPHY] = @@ -4501,9 +5445,8 @@ 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, - .isMythical = TRUE, .speciesName = _("Manaphy"), .cryId = CRY_MANAPHY, .natDexNum = NATIONAL_DEX_MANAPHY, @@ -4519,19 +5462,25 @@ 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) FOLLOWER(Manaphy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Manaphy), + .isMythical = TRUE, + .levelUpLearnset = sManaphyLevelUpLearnset, + .teachableLearnset = sManaphyTeachableLearnset, }, #endif //P_FAMILY_MANAPHY @@ -4560,9 +5509,8 @@ 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, - .isMythical = TRUE, .speciesName = _("Darkrai"), .cryId = CRY_DARKRAI, .natDexNum = NATIONAL_DEX_DARKRAI, @@ -4578,19 +5526,25 @@ 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) FOLLOWER(Darkrai, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Darkrai), + .isMythical = TRUE, + .levelUpLearnset = sDarkraiLevelUpLearnset, + .teachableLearnset = sDarkraiTeachableLearnset, }, #endif //P_FAMILY_DARKRAI @@ -4603,38 +5557,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), - .abilities = { ABILITY_NATURAL_CURE, ABILITY_NONE }, + .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, 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( @@ -4646,37 +5593,58 @@ 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), + .palette = gMonPalette_ShayminLand, + .shinyPalette = gMonShinyPalette_ShayminLand, + .iconSprite = gMonIcon_ShayminLand, + .iconPalIndex = 1, + FOOTPRINT(Shaymin) FOLLOWER(ShayminLand, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(ShayminLand), + .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), - .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE }, + .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, 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( @@ -4688,16 +5656,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 @@ -4710,71 +5687,76 @@ 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, \ - FRONT_PIC(Arceus, 64, 64), \ - .frontPicYOffset = 0, \ - .frontAnimFrames = sAnims_Arceus, \ - .frontAnimId = ANIM_GROW_VIBRATE, \ - BACK_PIC(Arceus, 64, 64), \ - .backPicYOffset = 3, \ - .backAnimId = BACK_ANIM_GROW_STUTTER, \ - PALETTES(Arceus ##typeName), \ - ICON(Arceus, 1), \ - FOLLOWER(Arceus ##typeName, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) \ - FOOTPRINT(Arceus) \ - LEARNSETS(Arceus), \ - .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) \ + FOLLOWER(Arceus ##typeName, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) \ + .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_families.h similarity index 67% rename from src/data/pokemon/species_info/gen_5.h rename to src/data/pokemon/species_info/gen_5_families.h index bdcd04142f..ff88cc2d6d 100644 --- a/src/data/pokemon/species_info/gen_5.h +++ b/src/data/pokemon/species_info/gen_5_families.h @@ -21,9 +21,8 @@ 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, - .isMythical = TRUE, .speciesName = _("Victini"), .cryId = CRY_VICTINI, .natDexNum = NATIONAL_DEX_VICTINI, @@ -39,18 +38,24 @@ 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) FOLLOWER(Victini, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Victini), + .isMythical = TRUE, + .levelUpLearnset = sVictiniLevelUpLearnset, + .teachableLearnset = sVictiniTeachableLearnset, }, #endif //P_FAMILY_VICTINI @@ -89,18 +94,23 @@ 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) FOLLOWER(Snivy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Snivy), + .levelUpLearnset = sSnivyLevelUpLearnset, + .teachableLearnset = sSnivyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_SERVINE}), }, @@ -138,18 +148,23 @@ 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) FOLLOWER(Servine, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Servine), + .levelUpLearnset = sServineLevelUpLearnset, + .teachableLearnset = sServineTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SERPERIOR}), }, @@ -187,18 +202,23 @@ 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) FOLLOWER(Serperior, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Serperior), + .levelUpLearnset = sSerperiorLevelUpLearnset, + .teachableLearnset = sSerperiorTeachableLearnset, }, #endif //P_FAMILY_SNIVY @@ -237,18 +257,23 @@ 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) FOLLOWER(Tepig, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Tepig), + .levelUpLearnset = sTepigLevelUpLearnset, + .teachableLearnset = sTepigTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_PIGNITE}), }, @@ -286,18 +311,23 @@ 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) FOLLOWER(Pignite, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Pignite), + .levelUpLearnset = sPigniteLevelUpLearnset, + .teachableLearnset = sPigniteTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_EMBOAR}), }, @@ -336,18 +366,23 @@ 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) FOLLOWER(Emboar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Emboar), + .levelUpLearnset = sEmboarLevelUpLearnset, + .teachableLearnset = sEmboarTeachableLearnset, }, #endif //P_FAMILY_TEPIG @@ -386,18 +421,23 @@ 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) FOLLOWER(Oshawott, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Oshawott), + .levelUpLearnset = sOshawottLevelUpLearnset, + .teachableLearnset = sOshawottTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_DEWOTT}), }, @@ -435,46 +475,29 @@ 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) FOLLOWER(Dewott, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -482,31 +505,54 @@ 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), + .palette = gMonPalette_Samurott, + .shinyPalette = gMonShinyPalette_Samurott, + .iconSprite = gMonIcon_Samurott, + .iconPalIndex = 2, + FOOTPRINT(Samurott) FOLLOWER(Samurott, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Samurott), + .levelUpLearnset = sSamurottLevelUpLearnset, + .teachableLearnset = sSamurottTeachableLearnset, + .formSpeciesIdTable = sSamurottFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_SAMUROTT_HISUIAN] = { - SAMUROTT_MISC_INFO, .baseHP = 90, .baseAttack = 108, .baseDefense = 80, @@ -514,26 +560,50 @@ 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), + .palette = gMonPalette_SamurottHisuian, + .shinyPalette = gMonShinyPalette_SamurottHisuian, + .iconSprite = gMonIcon_SamurottHisuian, + .iconPalIndex = 0, + FOOTPRINT(Samurott) FOLLOWER(SamurottHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(SamurottHisuian), .isHisuianForm = TRUE, + .levelUpLearnset = sSamurottHisuianLevelUpLearnset, + .teachableLearnset = sSamurottHisuianTeachableLearnset, + .formSpeciesIdTable = sSamurottFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_OSHAWOTT @@ -573,18 +643,23 @@ 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) FOLLOWER(Patrat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Patrat), + .levelUpLearnset = sPatratLevelUpLearnset, + .teachableLearnset = sPatratTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_WATCHOG}), }, @@ -622,18 +697,23 @@ 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) FOLLOWER(Watchog, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Watchog), + .levelUpLearnset = sWatchogLevelUpLearnset, + .teachableLearnset = sWatchogTeachableLearnset, }, #endif //P_FAMILY_PATRAT @@ -672,18 +752,23 @@ 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) FOLLOWER(Lillipup, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Lillipup), + .levelUpLearnset = sLillipupLevelUpLearnset, + .teachableLearnset = sLillipupTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_HERDIER}), }, @@ -721,18 +806,23 @@ 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) FOLLOWER(Herdier, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Herdier), + .levelUpLearnset = sHerdierLevelUpLearnset, + .teachableLearnset = sHerdierTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_STOUTLAND}), }, @@ -776,18 +866,23 @@ 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) FOLLOWER(Stoutland, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Stoutland), + .levelUpLearnset = sStoutlandLevelUpLearnset, + .teachableLearnset = sStoutlandTeachableLearnset, }, #endif //P_FAMILY_LILLIPUP @@ -826,18 +921,23 @@ 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) FOLLOWER(Purrloin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Purrloin), + .levelUpLearnset = sPurrloinLevelUpLearnset, + .teachableLearnset = sPurrloinTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LIEPARD}), }, @@ -875,18 +975,23 @@ 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) FOLLOWER(Liepard, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Liepard), + .levelUpLearnset = sLiepardLevelUpLearnset, + .teachableLearnset = sLiepardTeachableLearnset, }, #endif //P_FAMILY_PURRLOIN @@ -925,18 +1030,23 @@ 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) FOLLOWER(Pansage, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Pansage), + .levelUpLearnset = sPansageLevelUpLearnset, + .teachableLearnset = sPansageTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SIMISAGE}), }, @@ -974,18 +1084,23 @@ 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) FOLLOWER(Simisage, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Simisage), + .levelUpLearnset = sSimisageLevelUpLearnset, + .teachableLearnset = sSimisageTeachableLearnset, }, #endif //P_FAMILY_PANSAGE @@ -1025,18 +1140,23 @@ 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) FOLLOWER(Pansear, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Pansear), + .levelUpLearnset = sPansearLevelUpLearnset, + .teachableLearnset = sPansearTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_SIMISEAR}), }, @@ -1075,18 +1195,23 @@ 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) FOLLOWER(Simisear, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Simisear), + .levelUpLearnset = sSimisearLevelUpLearnset, + .teachableLearnset = sSimisearTeachableLearnset, }, #endif //P_FAMILY_PANSEAR @@ -1125,18 +1250,23 @@ 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) FOLLOWER(Panpour, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Panpour), + .levelUpLearnset = sPanpourLevelUpLearnset, + .teachableLearnset = sPanpourTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_SIMIPOUR}), }, @@ -1174,18 +1304,23 @@ 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) FOLLOWER(Simipour, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Simipour), + .levelUpLearnset = sSimipourLevelUpLearnset, + .teachableLearnset = sSimipourTeachableLearnset, }, #endif //P_FAMILY_PANPOUR @@ -1224,19 +1359,24 @@ 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) FOLLOWER(Munna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Munna), + .levelUpLearnset = sMunnaLevelUpLearnset, + .teachableLearnset = sMunnaTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_MUSHARNA}), }, @@ -1274,19 +1414,24 @@ 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) FOLLOWER(Musharna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Musharna), + .levelUpLearnset = sMusharnaLevelUpLearnset, + .teachableLearnset = sMusharnaTeachableLearnset, }, #endif //P_FAMILY_MUNNA @@ -1325,18 +1470,23 @@ 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) FOLLOWER(Pidove, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Pidove), + .levelUpLearnset = sPidoveLevelUpLearnset, + .teachableLearnset = sPidoveTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_TRANQUILL}), }, @@ -1374,18 +1524,23 @@ 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) FOLLOWER(Tranquill, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Tranquill), + .levelUpLearnset = sTranquillLevelUpLearnset, + .teachableLearnset = sTranquillTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_UNFEZANT}), }, @@ -1429,22 +1584,31 @@ 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) FOLLOWER(Unfezant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Unfezant), + .levelUpLearnset = sUnfezantLevelUpLearnset, + .teachableLearnset = sUnfezantTeachableLearnset, }, #endif //P_FAMILY_PIDOVE @@ -1483,18 +1647,23 @@ 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) FOLLOWER(Blitzle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Blitzle), + .levelUpLearnset = sBlitzleLevelUpLearnset, + .teachableLearnset = sBlitzleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_ZEBSTRIKA}), }, @@ -1532,18 +1701,23 @@ 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) FOLLOWER(Zebstrika, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Zebstrika), + .levelUpLearnset = sZebstrikaLevelUpLearnset, + .teachableLearnset = sZebstrikaTeachableLearnset, }, #endif //P_FAMILY_BLITZLE @@ -1584,18 +1758,23 @@ 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) FOLLOWER(Roggenrola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Roggenrola), + .levelUpLearnset = sRoggenrolaLevelUpLearnset, + .teachableLearnset = sRoggenrolaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_BOLDORE}), }, @@ -1636,18 +1815,23 @@ 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) FOLLOWER(Boldore, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Boldore), + .levelUpLearnset = sBoldoreLevelUpLearnset, + .teachableLearnset = sBoldoreTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GIGALITH}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GIGALITH}), }, @@ -1694,18 +1878,23 @@ 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) FOLLOWER(Gigalith, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Gigalith), + .levelUpLearnset = sGigalithLevelUpLearnset, + .teachableLearnset = sGigalithTeachableLearnset, }, #endif //P_FAMILY_ROGGENROLA @@ -1744,19 +1933,24 @@ 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) FOLLOWER(Woobat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Woobat), + .levelUpLearnset = sWoobatLevelUpLearnset, + .teachableLearnset = sWoobatTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SWOOBAT}), }, @@ -1794,19 +1988,24 @@ 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) FOLLOWER(Swoobat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Swoobat), + .levelUpLearnset = sSwoobatLevelUpLearnset, + .teachableLearnset = sSwoobatTeachableLearnset, }, #endif //P_FAMILY_WOOBAT @@ -1846,18 +2045,23 @@ 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) FOLLOWER(Drilbur, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Drilbur), + .levelUpLearnset = sDrilburLevelUpLearnset, + .teachableLearnset = sDrilburTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_EXCADRILL}), }, @@ -1896,43 +2100,29 @@ 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) FOLLOWER(Excadrill, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -1940,10 +2130,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( @@ -1955,22 +2157,30 @@ 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) FOLLOWER(Audino, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sAudinoLevelUpLearnset, + .teachableLearnset = sAudinoTeachableLearnset, + .formSpeciesIdTable = sAudinoFormSpeciesIdTable, + .formChangeTable = sAudinoFormChangeTable, }, #if P_MEGA_EVOLUTIONS [SPECIES_AUDINO_MEGA] = { - AUDINO_MISC_INFO, .baseHP = 103, .baseAttack = 60, .baseDefense = 126, @@ -1978,10 +2188,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( @@ -1993,16 +2215,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 @@ -2042,18 +2273,23 @@ 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) FOLLOWER(Timburr, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Timburr), + .levelUpLearnset = sTimburrLevelUpLearnset, + .teachableLearnset = sTimburrTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_GURDURR}), }, @@ -2091,18 +2327,23 @@ 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) FOLLOWER(Gurdurr, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Gurdurr), + .levelUpLearnset = sGurdurrLevelUpLearnset, + .teachableLearnset = sGurdurrTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_CONKELDURR}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_CONKELDURR}), }, @@ -2141,18 +2382,23 @@ 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) FOLLOWER(Conkeldurr, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Conkeldurr), + .levelUpLearnset = sConkeldurrLevelUpLearnset, + .teachableLearnset = sConkeldurrTeachableLearnset, }, #endif //P_FAMILY_TIMBURR @@ -2191,18 +2437,23 @@ 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) FOLLOWER(Tympole, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Tympole), + .levelUpLearnset = sTympoleLevelUpLearnset, + .teachableLearnset = sTympoleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_PALPITOAD}), }, @@ -2240,18 +2491,23 @@ 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) FOLLOWER(Palpitoad, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Palpitoad), + .levelUpLearnset = sPalpitoadLevelUpLearnset, + .teachableLearnset = sPalpitoadTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SEISMITOAD}), }, @@ -2295,18 +2551,23 @@ 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) FOLLOWER(Seismitoad, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Seismitoad), + .levelUpLearnset = sSeismitoadLevelUpLearnset, + .teachableLearnset = sSeismitoadTeachableLearnset, }, #endif //P_FAMILY_TYMPOLE @@ -2346,18 +2607,23 @@ 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) FOLLOWER(Throh, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Throh), + .levelUpLearnset = sThrohLevelUpLearnset, + .teachableLearnset = sThrohTeachableLearnset, }, #endif //P_FAMILY_THROH @@ -2398,18 +2664,23 @@ 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) FOLLOWER(Sawk, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Sawk), + .levelUpLearnset = sSawkLevelUpLearnset, + .teachableLearnset = sSawkTeachableLearnset, }, #endif //P_FAMILY_SAWK @@ -2449,18 +2720,23 @@ 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) FOLLOWER(Sewaddle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Sewaddle), + .levelUpLearnset = sSewaddleLevelUpLearnset, + .teachableLearnset = sSewaddleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_SWADLOON}), }, @@ -2499,18 +2775,23 @@ 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) FOLLOWER(Swadloon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Swadloon), + .levelUpLearnset = sSwadloonLevelUpLearnset, + .teachableLearnset = sSwadloonTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_LEAVANNY}), }, @@ -2555,18 +2836,23 @@ 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) FOLLOWER(Leavanny, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Leavanny), + .levelUpLearnset = sLeavannyLevelUpLearnset, + .teachableLearnset = sLeavannyTeachableLearnset, }, #endif //P_FAMILY_SEWADDLE @@ -2589,11 +2875,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, @@ -2610,18 +2896,23 @@ 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) FOLLOWER(Venipede, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Venipede), + .levelUpLearnset = sVenipedeLevelUpLearnset, + .teachableLearnset = sVenipedeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_WHIRLIPEDE}), }, @@ -2643,11 +2934,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, @@ -2664,18 +2955,23 @@ 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) FOLLOWER(Whirlipede, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Whirlipede), + .levelUpLearnset = sWhirlipedeLevelUpLearnset, + .teachableLearnset = sWhirlipedeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_SCOLIPEDE}), }, @@ -2703,11 +2999,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, @@ -2724,18 +3020,23 @@ 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) FOLLOWER(Scolipede, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Scolipede), + .levelUpLearnset = sScolipedeLevelUpLearnset, + .teachableLearnset = sScolipedeTeachableLearnset, }, #endif //P_FAMILY_VENIPEDE @@ -2781,18 +3082,23 @@ 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) FOLLOWER(Cottonee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cottonee), + .levelUpLearnset = sCottoneeLevelUpLearnset, + .teachableLearnset = sCottoneeTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_WHIMSICOTT}), }, @@ -2831,18 +3137,23 @@ 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) FOLLOWER(Whimsicott, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Whimsicott), + .levelUpLearnset = sWhimsicottLevelUpLearnset, + .teachableLearnset = sWhimsicottTeachableLearnset, }, #endif //P_FAMILY_COTTONEE @@ -2882,43 +3193,30 @@ 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) FOLLOWER(Petilil, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -2926,8 +3224,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, @@ -2940,23 +3251,29 @@ 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), + .palette = gMonPalette_Lilligant, + .shinyPalette = gMonShinyPalette_Lilligant, + .iconSprite = gMonIcon_Lilligant, + .iconPalIndex = 1, + FOOTPRINT(Lilligant) FOLLOWER(Lilligant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Lilligant), + .levelUpLearnset = sLilligantLevelUpLearnset, + .teachableLearnset = sLilligantTeachableLearnset, + .formSpeciesIdTable = sLilligantFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_LILLIGANT_HISUIAN] = { - LILLIGANT_MISC_INFO, .baseHP = 70, .baseAttack = 105, .baseDefense = 75, @@ -2964,9 +3281,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, @@ -2979,200 +3309,308 @@ 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), + .palette = gMonPalette_LilligantHisuian, + .shinyPalette = gMonShinyPalette_LilligantHisuian, + .iconSprite = gMonIcon_LilligantHisuian, + .iconPalIndex = 1, + FOOTPRINT(Lilligant) FOLLOWER(LilligantHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(LilligantHisuian), .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), + .palette = gMonPalette_BasculinRedStriped, + .shinyPalette = gMonShinyPalette_BasculinRedStriped, + .iconSprite = gMonIcon_BasculinRedStriped, + .iconPalIndex = 1, + FOOTPRINT(Basculin) FOLLOWER(BasculinRedStriped, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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), + .palette = gMonPalette_BasculinBlueStriped, + .shinyPalette = gMonShinyPalette_BasculinBlueStriped, + .iconSprite = gMonIcon_BasculinBlueStriped, + .iconPalIndex = 0, + FOOTPRINT(Basculin) FOLLOWER(BasculinBlueStriped, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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), + .palette = gMonPalette_BasculinWhiteStriped, + .shinyPalette = gMonShinyPalette_BasculinWhiteStriped, + .iconSprite = gMonIcon_BasculinWhiteStriped, + .iconPalIndex = 0, + FOOTPRINT(Basculin) FOLLOWER(BasculinWhiteStriped, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(BasculinWhiteStriped), + .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), FOLLOWER(BasculegionMale, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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), FOLLOWER(BasculegionFemale, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sBasculegionLevelUpLearnset, + .teachableLearnset = sBasculegionTeachableLearnset, + .formSpeciesIdTable = sBasculegionFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_BASCULIN @@ -3213,18 +3651,23 @@ 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) FOLLOWER(Sandile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Sandile), + .levelUpLearnset = sSandileLevelUpLearnset, + .teachableLearnset = sSandileTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 29, SPECIES_KROKOROK}), }, @@ -3263,18 +3706,23 @@ 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) FOLLOWER(Krokorok, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Krokorok), + .levelUpLearnset = sKrokorokLevelUpLearnset, + .teachableLearnset = sKrokorokTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_KROOKODILE}), }, @@ -3319,50 +3767,50 @@ 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) FOLLOWER(Krookodile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -3374,89 +3822,84 @@ 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), + .palette = gMonPalette_Darumaka, + .shinyPalette = gMonShinyPalette_Darumaka, + .iconSprite = gMonIcon_Darumaka, + .iconPalIndex = 0, + FOOTPRINT(Darumaka) FOLLOWER(Darumaka, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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) FOLLOWER(DarmanitanStandardMode, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, @@ -3464,28 +3907,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( @@ -3497,61 +3986,86 @@ 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), + .palette = gMonPalette_DarumakaGalarian, + .shinyPalette = gMonShinyPalette_DarumakaGalarian, + .iconSprite = gMonIcon_DarumakaGalarian, + .iconPalIndex = 0, + FOOTPRINT(Darumaka) FOLLOWER(DarumakaGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(DarumakaGalarian), .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) FOLLOWER(DarmanitanGalarianStandardMode, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, @@ -3559,20 +4073,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 @@ -3613,18 +4157,23 @@ 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) FOLLOWER(Maractus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Maractus), + .levelUpLearnset = sMaractusLevelUpLearnset, + .teachableLearnset = sMaractusTeachableLearnset, }, #endif //P_FAMILY_MARACTUS @@ -3664,18 +4213,23 @@ 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) FOLLOWER(Dwebble, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Dwebble), + .levelUpLearnset = sDwebbleLevelUpLearnset, + .teachableLearnset = sDwebbleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_CRUSTLE}), }, @@ -3714,18 +4268,23 @@ 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) FOLLOWER(Crustle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Crustle), + .levelUpLearnset = sCrustleLevelUpLearnset, + .teachableLearnset = sCrustleTeachableLearnset, }, #endif //P_FAMILY_DWEBBLE @@ -3765,18 +4324,23 @@ 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) FOLLOWER(Scraggy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Scraggy), + .levelUpLearnset = sScraggyLevelUpLearnset, + .teachableLearnset = sScraggyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_SCRAFTY}), }, @@ -3816,18 +4380,23 @@ 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) FOLLOWER(Scrafty, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Scrafty), + .levelUpLearnset = sScraftyLevelUpLearnset, + .teachableLearnset = sScraftyTeachableLearnset, }, #endif //P_FAMILY_SCRAGGY @@ -3866,49 +4435,30 @@ 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) FOLLOWER(Sigilyph, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -3916,25 +4466,51 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 55, .baseSpDefense = 65, .types = MON_TYPES(TYPE_GHOST), + .catchRate = 190, + .expYield = 61, + .evYield_Defense = 1, .itemRare = ITEM_SPELL_TAG, - .abilities = { ABILITY_MUMMY, ABILITY_NONE }, + .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, 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), + .palette = gMonPalette_Yamask, + .shinyPalette = gMonShinyPalette_Yamask, + .iconSprite = gMonIcon_Yamask, + .iconPalIndex = 0, + FOOTPRINT(Yamask) FOLLOWER(Yamask, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Yamask), + .levelUpLearnset = sYamaskLevelUpLearnset, + .teachableLearnset = sYamaskTeachableLearnset, + .formSpeciesIdTable = sYamaskFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_COFAGRIGUS}), }, @@ -3956,7 +4532,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, @@ -3973,24 +4549,28 @@ 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) FOLLOWER(Cofagrigus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cofagrigus), + .levelUpLearnset = sCofagrigusLevelUpLearnset, + .teachableLearnset = sCofagrigusTeachableLearnset, }, #if P_GALARIAN_FORMS [SPECIES_YAMASK_GALARIAN] = { - YAMASK_MISC_INFO, .baseHP = 38, .baseAttack = 55, .baseDefense = 85, @@ -3998,25 +4578,51 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .baseSpAttack = 30, .baseSpDefense = 65, .types = MON_TYPES(TYPE_GROUND, TYPE_GHOST), - .abilities = { ABILITY_WANDERING_SPIRIT, ABILITY_NONE }, + .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, 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), + .palette = gMonPalette_YamaskGalarian, + .shinyPalette = gMonShinyPalette_YamaskGalarian, + .iconSprite = gMonIcon_YamaskGalarian, + .iconPalIndex = 2, + FOOTPRINT(Yamask) FOLLOWER(YamaskGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(YamaskGalarian), .isGalarianForm = TRUE, + .levelUpLearnset = sYamaskGalarianLevelUpLearnset, + .teachableLearnset = sYamaskGalarianTeachableLearnset, + .formSpeciesIdTable = sYamaskFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_SCRIPT_TRIGGER_DMG, 49, SPECIES_RUNERIGUS}), }, @@ -4037,7 +4643,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, @@ -4053,19 +4659,24 @@ 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) FOLLOWER(Runerigus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Runerigus), + .levelUpLearnset = sRunerigusLevelUpLearnset, + .teachableLearnset = sRunerigusTeachableLearnset, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_YAMASK @@ -4105,18 +4716,23 @@ 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) FOLLOWER(Tirtouga, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Tirtouga), + .levelUpLearnset = sTirtougaLevelUpLearnset, + .teachableLearnset = sTirtougaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_CARRACOSTA}), }, @@ -4154,18 +4770,23 @@ 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) FOLLOWER(Carracosta, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Carracosta), + .levelUpLearnset = sCarracostaLevelUpLearnset, + .teachableLearnset = sCarracostaTeachableLearnset, }, #endif //P_FAMILY_TIRTOUGA @@ -4187,7 +4808,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, @@ -4204,18 +4825,23 @@ 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) FOLLOWER(Archen, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Archen), + .levelUpLearnset = sArchenLevelUpLearnset, + .teachableLearnset = sArchenTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_ARCHEOPS}), }, @@ -4236,7 +4862,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, @@ -4253,19 +4879,24 @@ 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) FOLLOWER(Archeops, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Archeops), + .levelUpLearnset = sArcheopsLevelUpLearnset, + .teachableLearnset = sArcheopsTeachableLearnset, }, #endif //P_FAMILY_ARCHEN @@ -4305,54 +4936,52 @@ 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) FOLLOWER(Trubbish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -4364,22 +4993,54 @@ 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) FOLLOWER(Garbodor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -4391,69 +5052,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, @@ -4461,29 +5085,54 @@ 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, 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), + .palette = gMonPalette_Zorua, + .shinyPalette = gMonShinyPalette_Zorua, + .iconSprite = gMonIcon_Zorua, + .iconPalIndex = 0, + FOOTPRINT(Zorua) FOLLOWER(Zorua, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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, @@ -4491,30 +5140,54 @@ 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, 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), + .palette = gMonPalette_Zoroark, + .shinyPalette = gMonShinyPalette_Zoroark, + .iconSprite = gMonIcon_Zoroark, + .iconPalIndex = 0, + FOOTPRINT(Zoroark) FOLLOWER(Zoroark, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Zoroark), + .levelUpLearnset = sZoroarkLevelUpLearnset, + .teachableLearnset = sZoroarkTeachableLearnset, + .formSpeciesIdTable = sZoroarkFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_ZORUA_HISUIAN] = { - ZORUA_MISC_INFO, .baseHP = 35, .baseAttack = 60, .baseDefense = 40, @@ -4522,30 +5195,55 @@ 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, 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), + .palette = gMonPalette_ZoruaHisuian, + .shinyPalette = gMonShinyPalette_ZoruaHisuian, + .iconSprite = gMonIcon_ZoruaHisuian, + .iconPalIndex = 0, + FOOTPRINT(Zorua) FOLLOWER(ZoruaHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(ZoruaHisuian), .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, @@ -4553,25 +5251,50 @@ 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, 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), + .palette = gMonPalette_ZoroarkHisuian, + .shinyPalette = gMonShinyPalette_ZoroarkHisuian, + .iconSprite = gMonIcon_ZoroarkHisuian, + .iconPalIndex = 0, + FOOTPRINT(Zoroark) FOLLOWER(ZoroarkHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(ZoroarkHisuian), .isHisuianForm = TRUE, + .levelUpLearnset = sZoroarkHisuianLevelUpLearnset, + .teachableLearnset = sZoroarkHisuianTeachableLearnset, + .formSpeciesIdTable = sZoroarkFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_ZORUA @@ -4611,18 +5334,23 @@ 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) FOLLOWER(Minccino, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Minccino), + .levelUpLearnset = sMinccinoLevelUpLearnset, + .teachableLearnset = sMinccinoTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_CINCCINO}), }, @@ -4661,18 +5389,23 @@ 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) FOLLOWER(Cinccino, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cinccino), + .levelUpLearnset = sCinccinoLevelUpLearnset, + .teachableLearnset = sCinccinoTeachableLearnset, }, #endif //P_FAMILY_MINCCINO @@ -4711,18 +5444,23 @@ 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) FOLLOWER(Gothita, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Gothita), + .levelUpLearnset = sGothitaLevelUpLearnset, + .teachableLearnset = sGothitaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_GOTHORITA}), }, @@ -4760,18 +5498,23 @@ 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) FOLLOWER(Gothorita, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Gothorita), + .levelUpLearnset = sGothoritaLevelUpLearnset, + .teachableLearnset = sGothoritaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 41, SPECIES_GOTHITELLE}), }, @@ -4809,18 +5552,23 @@ 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) FOLLOWER(Gothitelle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Gothitelle), + .levelUpLearnset = sGothitelleLevelUpLearnset, + .teachableLearnset = sGothitelleTeachableLearnset, }, #endif //P_FAMILY_GOTHITA @@ -4860,19 +5608,24 @@ 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) FOLLOWER(Solosis, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Solosis), + .levelUpLearnset = sSolosisLevelUpLearnset, + .teachableLearnset = sSolosisTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_DUOSION}), }, @@ -4910,19 +5663,24 @@ 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) FOLLOWER(Duosion, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Duosion), + .levelUpLearnset = sDuosionLevelUpLearnset, + .teachableLearnset = sDuosionTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 41, SPECIES_REUNICLUS}), }, @@ -4960,19 +5718,24 @@ 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) FOLLOWER(Reuniclus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Reuniclus), + .levelUpLearnset = sReuniclusLevelUpLearnset, + .teachableLearnset = sReuniclusTeachableLearnset, }, #endif //P_FAMILY_SOLOSIS @@ -5011,18 +5774,23 @@ 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) FOLLOWER(Ducklett, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Ducklett), + .levelUpLearnset = sDucklettLevelUpLearnset, + .teachableLearnset = sDucklettTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_SWANNA}), }, @@ -5060,18 +5828,23 @@ 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) FOLLOWER(Swanna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Swanna), + .levelUpLearnset = sSwannaLevelUpLearnset, + .teachableLearnset = sSwannaTeachableLearnset, }, #endif //P_FAMILY_DUCKLETT @@ -5111,18 +5884,23 @@ 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) FOLLOWER(Vanillite, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Vanillite), + .levelUpLearnset = sVanilliteLevelUpLearnset, + .teachableLearnset = sVanilliteTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_VANILLISH}), }, @@ -5161,18 +5939,23 @@ 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) FOLLOWER(Vanillish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Vanillish), + .levelUpLearnset = sVanillishLevelUpLearnset, + .teachableLearnset = sVanillishTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 47, SPECIES_VANILLUXE}), }, @@ -5211,212 +5994,461 @@ 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) FOLLOWER(Vanilluxe, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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) FOLLOWER(DeerlingSpring, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) FOLLOWER(DeerlingSummer, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) FOLLOWER(DeerlingAutumn, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) FOLLOWER(DeerlingWinter, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) FOLLOWER(SawsbuckSpring, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) FOLLOWER(SawsbuckSummer, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) FOLLOWER(SawsbuckAutumn, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) FOLLOWER(SawsbuckWinter, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sSawsbuckLevelUpLearnset, + .teachableLearnset = sSawsbuckTeachableLearnset, + .formSpeciesIdTable = sSawsbuckFormSpeciesIdTable, }, #endif //P_FAMILY_DEERLING @@ -5456,19 +6488,24 @@ 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) FOLLOWER(Emolga, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Emolga), + .levelUpLearnset = sEmolgaLevelUpLearnset, + .teachableLearnset = sEmolgaTeachableLearnset, }, #endif //P_FAMILY_EMOLGA @@ -5507,18 +6544,23 @@ 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) FOLLOWER(Karrablast, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Karrablast), + .levelUpLearnset = sKarrablastLevelUpLearnset, + .teachableLearnset = sKarrablastTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_SPECIFIC_MON, SPECIES_SHELMET, SPECIES_ESCAVALIER}), }, @@ -5556,18 +6598,23 @@ 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) FOLLOWER(Escavalier, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Escavalier), + .levelUpLearnset = sEscavalierLevelUpLearnset, + .teachableLearnset = sEscavalierTeachableLearnset, }, #endif //P_FAMILY_KARRABLAST @@ -5608,18 +6655,23 @@ 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) FOLLOWER(Foongus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Foongus), + .levelUpLearnset = sFoongusLevelUpLearnset, + .teachableLearnset = sFoongusTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_AMOONGUSS}), }, @@ -5660,18 +6712,23 @@ 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) FOLLOWER(Amoonguss, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Amoonguss), + .levelUpLearnset = sAmoongussLevelUpLearnset, + .teachableLearnset = sAmoongussTeachableLearnset, }, #endif //P_FAMILY_FOONGUS @@ -5710,22 +6767,31 @@ 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) FOLLOWER(Frillish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Frillish), + .levelUpLearnset = sFrillishLevelUpLearnset, + .teachableLearnset = sFrillishTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_JELLICENT}), }, @@ -5763,22 +6829,31 @@ 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) FOLLOWER(Jellicent, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Jellicent), + .levelUpLearnset = sJellicentLevelUpLearnset, + .teachableLearnset = sJellicentTeachableLearnset, }, #endif //P_FAMILY_FRILLISH @@ -5817,18 +6892,23 @@ 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) FOLLOWER(Alomomola, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Alomomola), + .levelUpLearnset = sAlomomolaLevelUpLearnset, + .teachableLearnset = sAlomomolaTeachableLearnset, }, #endif //P_FAMILY_ALOMOMOLA @@ -5867,18 +6947,23 @@ 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) FOLLOWER(Joltik, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Joltik), + .levelUpLearnset = sJoltikLevelUpLearnset, + .teachableLearnset = sJoltikTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_GALVANTULA}), }, @@ -5916,18 +7001,23 @@ 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) FOLLOWER(Galvantula, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Galvantula), + .levelUpLearnset = sGalvantulaLevelUpLearnset, + .teachableLearnset = sGalvantulaTeachableLearnset, }, #endif //P_FAMILY_JOLTIK @@ -5950,7 +7040,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, @@ -5967,18 +7057,23 @@ 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) FOLLOWER(Ferroseed, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Ferroseed), + .levelUpLearnset = sFerroseedLevelUpLearnset, + .teachableLearnset = sFerroseedTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_FERROTHORN}), }, @@ -6017,19 +7112,24 @@ 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) FOLLOWER(Ferrothorn, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Ferrothorn), + .levelUpLearnset = sFerrothornLevelUpLearnset, + .teachableLearnset = sFerrothornTeachableLearnset, }, #endif //P_FAMILY_FERROSEED @@ -6069,19 +7169,24 @@ 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) FOLLOWER(Klink, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Klink), + .levelUpLearnset = sKlinkLevelUpLearnset, + .teachableLearnset = sKlinkTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_KLANG}), }, @@ -6120,19 +7225,24 @@ 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) FOLLOWER(Klang, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Klang), + .levelUpLearnset = sKlangLevelUpLearnset, + .teachableLearnset = sKlangTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 49, SPECIES_KLINKLANG}), }, @@ -6171,19 +7281,24 @@ 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) FOLLOWER(Klinklang, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Klinklang), + .levelUpLearnset = sKlinklangLevelUpLearnset, + .teachableLearnset = sKlinklangTeachableLearnset, }, #endif //P_FAMILY_KLINK @@ -6205,7 +7320,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, @@ -6222,20 +7337,25 @@ 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) FOLLOWER(Tynamo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Tynamo), .tmIlliterate = TRUE, + .levelUpLearnset = sTynamoLevelUpLearnset, + .teachableLearnset = sTynamoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_EELEKTRIK}), }, @@ -6256,7 +7376,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, @@ -6273,19 +7393,24 @@ 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) FOLLOWER(Eelektrik, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Eelektrik), + .levelUpLearnset = sEelektrikLevelUpLearnset, + .teachableLearnset = sEelektrikTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_EELEKTROSS}), }, @@ -6306,7 +7431,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, @@ -6323,19 +7448,24 @@ 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) FOLLOWER(Eelektross, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Eelektross), + .levelUpLearnset = sEelektrossLevelUpLearnset, + .teachableLearnset = sEelektrossTeachableLearnset, }, #endif //P_FAMILY_TYNAMO @@ -6374,18 +7504,23 @@ 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) FOLLOWER(Elgyem, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Elgyem), + .levelUpLearnset = sElgyemLevelUpLearnset, + .teachableLearnset = sElgyemTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_BEHEEYEM}), }, @@ -6423,18 +7558,23 @@ 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) FOLLOWER(Beheeyem, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Beheeyem), + .levelUpLearnset = sBeheeyemLevelUpLearnset, + .teachableLearnset = sBeheeyemTeachableLearnset, }, #endif //P_FAMILY_ELGYEM @@ -6456,11 +7596,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"), @@ -6478,18 +7618,23 @@ 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) FOLLOWER(Litwick, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Litwick), + .levelUpLearnset = sLitwickLevelUpLearnset, + .teachableLearnset = sLitwickTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 41, SPECIES_LAMPENT}), }, @@ -6510,11 +7655,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, @@ -6531,19 +7676,24 @@ 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) FOLLOWER(Lampent, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Lampent), + .levelUpLearnset = sLampentLevelUpLearnset, + .teachableLearnset = sLampentTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_CHANDELURE}), }, @@ -6564,11 +7714,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, @@ -6585,19 +7735,24 @@ 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) FOLLOWER(Chandelure, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Chandelure), + .levelUpLearnset = sChandelureLevelUpLearnset, + .teachableLearnset = sChandelureTeachableLearnset, }, #endif //P_FAMILY_LITWICK @@ -6636,18 +7791,23 @@ 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) FOLLOWER(Axew, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Axew), + .levelUpLearnset = sAxewLevelUpLearnset, + .teachableLearnset = sAxewTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_FRAXURE}), }, @@ -6685,18 +7845,23 @@ 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) FOLLOWER(Fraxure, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Fraxure), + .levelUpLearnset = sFraxureLevelUpLearnset, + .teachableLearnset = sFraxureTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_HAXORUS}), }, @@ -6734,18 +7899,23 @@ 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) FOLLOWER(Haxorus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Haxorus), + .levelUpLearnset = sHaxorusLevelUpLearnset, + .teachableLearnset = sHaxorusTeachableLearnset, }, #endif //P_FAMILY_AXEW @@ -6784,18 +7954,23 @@ 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) FOLLOWER(Cubchoo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cubchoo), + .levelUpLearnset = sCubchooLevelUpLearnset, + .teachableLearnset = sCubchooTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_BEARTIC}), }, @@ -6833,35 +8008,35 @@ 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) FOLLOWER(Beartic, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -6872,7 +8047,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, @@ -6889,19 +8064,24 @@ 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) FOLLOWER(Cryogonal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cryogonal), + .levelUpLearnset = sCryogonalLevelUpLearnset, + .teachableLearnset = sCryogonalTeachableLearnset, }, #endif //P_FAMILY_CRYOGONAL @@ -6940,18 +8120,23 @@ 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) FOLLOWER(Shelmet, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Shelmet), + .levelUpLearnset = sShelmetLevelUpLearnset, + .teachableLearnset = sShelmetTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_SPECIFIC_MON, SPECIES_KARRABLAST, SPECIES_ACCELGOR}), }, @@ -6989,45 +8174,29 @@ 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) FOLLOWER(Accelgor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -7035,33 +8204,55 @@ 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), + .palette = gMonPalette_Stunfisk, + .shinyPalette = gMonShinyPalette_Stunfisk, + .iconSprite = gMonIcon_Stunfisk, + .iconPalIndex = 2, + FOOTPRINT(Stunfisk) FOLLOWER(Stunfisk, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Stunfisk), + .levelUpLearnset = sStunfiskLevelUpLearnset, + .teachableLearnset = sStunfiskTeachableLearnset, + .formSpeciesIdTable = sStunfiskFormSpeciesIdTable, }, #if P_GALARIAN_FORMS [SPECIES_STUNFISK_GALARIAN] = { - STUNFISK_MISC_INFO, .baseHP = 109, .baseAttack = 81, .baseDefense = 99, @@ -7069,27 +8260,50 @@ 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, - .abilities = { ABILITY_MIMICRY, ABILITY_NONE }, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS), + .abilities = { ABILITY_MIMICRY, ABILITY_NONE, 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), + .palette = gMonPalette_StunfiskGalarian, + .shinyPalette = gMonShinyPalette_StunfiskGalarian, + .iconSprite = gMonIcon_StunfiskGalarian, + .iconPalIndex = 1, + FOOTPRINT(Stunfisk) FOLLOWER(StunfiskGalarian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(StunfiskGalarian), .isGalarianForm = TRUE, + .levelUpLearnset = sStunfiskGalarianLevelUpLearnset, + .teachableLearnset = sStunfiskGalarianTeachableLearnset, + .formSpeciesIdTable = sStunfiskFormSpeciesIdTable, }, #endif //P_GALARIAN_FORMS #endif //P_FAMILY_STUNFISK @@ -7129,18 +8343,23 @@ 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) FOLLOWER(Mienfoo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Mienfoo), + .levelUpLearnset = sMienfooLevelUpLearnset, + .teachableLearnset = sMienfooTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_MIENSHAO}), }, @@ -7178,18 +8397,23 @@ 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) FOLLOWER(Mienshao, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Mienshao), + .levelUpLearnset = sMienshaoLevelUpLearnset, + .teachableLearnset = sMienshaoTeachableLearnset, }, #endif //P_FAMILY_MIENFOO @@ -7229,18 +8453,23 @@ 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) FOLLOWER(Druddigon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Druddigon), + .levelUpLearnset = sDruddigonLevelUpLearnset, + .teachableLearnset = sDruddigonTeachableLearnset, }, #endif //P_FAMILY_DRUDDIGON @@ -7281,18 +8510,23 @@ 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) FOLLOWER(Golett, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Golett), + .levelUpLearnset = sGolettLevelUpLearnset, + .teachableLearnset = sGolettTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 43, SPECIES_GOLURK}), }, @@ -7332,18 +8566,23 @@ 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) FOLLOWER(Golurk, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Golurk), + .levelUpLearnset = sGolurkLevelUpLearnset, + .teachableLearnset = sGolurkTeachableLearnset, }, #endif //P_FAMILY_GOLETT @@ -7382,18 +8621,23 @@ 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) FOLLOWER(Pawniard, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Pawniard), + .levelUpLearnset = sPawniardLevelUpLearnset, + .teachableLearnset = sPawniardTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 52, SPECIES_BISHARP}), }, @@ -7431,18 +8675,23 @@ 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) FOLLOWER(Bisharp, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bisharp), + .levelUpLearnset = sBisharpLevelUpLearnset, + .teachableLearnset = sBisharpTeachableLearnset, .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_KINGAMBIT}), }, @@ -7481,17 +8730,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 @@ -7531,18 +8785,23 @@ 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) FOLLOWER(Bouffalant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bouffalant), + .levelUpLearnset = sBouffalantLevelUpLearnset, + .teachableLearnset = sBouffalantTeachableLearnset, }, #endif //P_FAMILY_BOUFFALANT @@ -7581,39 +8840,29 @@ 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) FOLLOWER(Rufflet, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -7621,9 +8870,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, @@ -7636,24 +8895,30 @@ 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), + .palette = gMonPalette_Braviary, + .shinyPalette = gMonShinyPalette_Braviary, + .iconSprite = gMonIcon_Braviary, + .iconPalIndex = 0, + FOOTPRINT(Braviary) FOLLOWER(Braviary, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Braviary), + .levelUpLearnset = sBraviaryLevelUpLearnset, + .teachableLearnset = sBraviaryTeachableLearnset, + .formSpeciesIdTable = sBraviaryFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_BRAVIARY_HISUIAN] = { - BRAVIARY_MISC_INFO, .baseHP = 110, .baseAttack = 83, .baseDefense = 70, @@ -7661,9 +8926,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, @@ -7675,19 +8950,26 @@ 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), + .palette = gMonPalette_BraviaryHisuian, + .shinyPalette = gMonShinyPalette_BraviaryHisuian, + .iconSprite = gMonIcon_BraviaryHisuian, + .iconPalIndex = 2, + FOOTPRINT(Braviary) FOLLOWER(BraviaryHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(BraviaryHisuian), .isHisuianForm = TRUE, + .levelUpLearnset = sBraviaryHisuianLevelUpLearnset, + .teachableLearnset = sBraviaryHisuianTeachableLearnset, + .formSpeciesIdTable = sBraviaryFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_RUFFLET @@ -7727,18 +9009,23 @@ 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) FOLLOWER(Vullaby, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Vullaby), + .levelUpLearnset = sVullabyLevelUpLearnset, + .teachableLearnset = sVullabyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 54, SPECIES_MANDIBUZZ}), }, @@ -7776,18 +9063,23 @@ 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) FOLLOWER(Mandibuzz, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Mandibuzz), + .levelUpLearnset = sMandibuzzLevelUpLearnset, + .teachableLearnset = sMandibuzzTeachableLearnset, }, #endif //P_FAMILY_VULLABY @@ -7826,18 +9118,23 @@ 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) FOLLOWER(Heatmor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Heatmor), + .levelUpLearnset = sHeatmorLevelUpLearnset, + .teachableLearnset = sHeatmorTeachableLearnset, }, #endif //P_FAMILY_HEATMOR @@ -7876,18 +9173,23 @@ 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) FOLLOWER(Durant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Durant), + .levelUpLearnset = sDurantLevelUpLearnset, + .teachableLearnset = sDurantTeachableLearnset, }, #endif //P_FAMILY_DURANT @@ -7909,7 +9211,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, @@ -7926,18 +9228,23 @@ 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) FOLLOWER(Deino, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Deino), + .levelUpLearnset = sDeinoLevelUpLearnset, + .teachableLearnset = sDeinoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_ZWEILOUS}), }, @@ -7958,7 +9265,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, @@ -7975,18 +9282,23 @@ 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) FOLLOWER(Zweilous, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Zweilous), + .levelUpLearnset = sZweilousLevelUpLearnset, + .teachableLearnset = sZweilousTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 64, SPECIES_HYDREIGON}), }, @@ -8007,7 +9319,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, @@ -8024,19 +9336,24 @@ 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) FOLLOWER(Hydreigon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Hydreigon), + .levelUpLearnset = sHydreigonLevelUpLearnset, + .teachableLearnset = sHydreigonTeachableLearnset, }, #endif //P_FAMILY_DEINO @@ -8075,18 +9392,23 @@ 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) FOLLOWER(Larvesta, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Larvesta), + .levelUpLearnset = sLarvestaLevelUpLearnset, + .teachableLearnset = sLarvestaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 59, SPECIES_VOLCARONA}), }, @@ -8126,19 +9448,24 @@ 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) FOLLOWER(Volcarona, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Volcarona), + .levelUpLearnset = sVolcaronaLevelUpLearnset, + .teachableLearnset = sVolcaronaTeachableLearnset, }, #endif //P_FAMILY_LARVESTA @@ -8160,9 +9487,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Cobalion"), .cryId = CRY_COBALION, .natDexNum = NATIONAL_DEX_COBALION, @@ -8178,18 +9504,24 @@ 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) FOLLOWER(Cobalion, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cobalion), + .isLegendary = TRUE, + .levelUpLearnset = sCobalionLevelUpLearnset, + .teachableLearnset = sCobalionTeachableLearnset, }, #endif //P_FAMILY_COBALION @@ -8211,9 +9543,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Terrakion"), .cryId = CRY_TERRAKION, .natDexNum = NATIONAL_DEX_TERRAKION, @@ -8229,18 +9560,24 @@ 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) FOLLOWER(Terrakion, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Terrakion), + .isLegendary = TRUE, + .levelUpLearnset = sTerrakionLevelUpLearnset, + .teachableLearnset = sTerrakionTeachableLearnset, }, #endif //P_FAMILY_TERRAKION @@ -8262,9 +9599,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Virizion"), .cryId = CRY_VIRIZION, .natDexNum = NATIONAL_DEX_VIRIZION, @@ -8280,55 +9616,53 @@ 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) FOLLOWER(Virizion, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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" @@ -8338,31 +9672,54 @@ 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) FOLLOWER(TornadusIncarnate, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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" @@ -8372,52 +9729,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" @@ -8427,32 +9786,54 @@ 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) FOLLOWER(ThundurusIncarnate, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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" @@ -8462,16 +9843,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 @@ -8493,9 +9884,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Reshiram"), .cryId = CRY_RESHIRAM, .natDexNum = NATIONAL_DEX_RESHIRAM, @@ -8511,18 +9901,24 @@ 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) FOLLOWER(Reshiram, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Reshiram), + .isLegendary = TRUE, + .levelUpLearnset = sReshiramLevelUpLearnset, + .teachableLearnset = sReshiramTeachableLearnset, }, #endif //P_FAMILY_RESHIRAM @@ -8544,9 +9940,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Zekrom"), .cryId = CRY_ZEKROM, .natDexNum = NATIONAL_DEX_ZEKROM, @@ -8562,55 +9957,53 @@ 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) FOLLOWER(Zekrom, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) - 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" @@ -8620,32 +10013,54 @@ 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) FOLLOWER(LandorusIncarnate, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, - .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE }, + .genderRatio = MON_MALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE, 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" @@ -8655,53 +10070,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, - .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .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_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" @@ -8711,29 +10130,38 @@ 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), + .palette = gMonPalette_Kyurem, + .shinyPalette = gMonShinyPalette_Kyurem, + .iconSprite = gMonIcon_Kyurem, + .iconPalIndex = 0, + FOOTPRINT(Kyurem) FOLLOWER(Kyurem, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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 @@ -8742,9 +10170,20 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .expYield = 297, #endif .evYield_SpAttack = 3, - .abilities = { ABILITY_TURBOBLAZE, ABILITY_NONE }, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_TURBOBLAZE, ABILITY_NONE, 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" @@ -8754,29 +10193,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 @@ -8785,9 +10232,20 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .expYield = 297, #endif .evYield_Attack = 3, - .abilities = { ABILITY_TERAVOLT, ABILITY_NONE }, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_TERAVOLT, ABILITY_NONE, 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" @@ -8797,132 +10255,146 @@ 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, 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) FOLLOWER(KeldeoOrdinary, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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, @@ -8930,29 +10402,61 @@ 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, 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) FOLLOWER(MeloettaAria, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .isMythical = TRUE, + .levelUpLearnset = sMeloettaLevelUpLearnset, + .teachableLearnset = sMeloettaTeachableLearnset, + .formSpeciesIdTable = sMeloettaFormSpeciesIdTable, + .formChangeTable = sMeloettaFormChangeTable, }, [SPECIES_MELOETTA_PIROUETTE] = { - MELOETTA_MISC_INFO, .baseHP = 100, .baseAttack = 128, .baseDefense = 90, @@ -8960,74 +10464,112 @@ 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, 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) FOLLOWER(MeloettaPirouette, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .isMythical = TRUE, + .levelUpLearnset = sMeloettaLevelUpLearnset, + .teachableLearnset = sMeloettaTeachableLearnset, + .formSpeciesIdTable = sMeloettaFormSpeciesIdTable, + .formChangeTable = sMeloettaFormChangeTable, }, #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, \ - FRONT_PIC(Genesect, 56, 64), \ - .frontPicYOffset = 0, \ - .frontAnimFrames = sAnims_Genesect, \ - .frontAnimId = ANIM_H_VIBRATE, \ - BACK_PIC(Genesect, 64, 48), \ - .backPicYOffset = 8, \ - .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, \ - PALETTES(form), \ - ICON(Genesect, 2), \ - FOOTPRINT(Genesect) \ - FOLLOWER(Genesect, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ - LEARNSETS(Genesect), \ - .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) \ + FOLLOWER(Genesect, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ + .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 61% rename from src/data/pokemon/species_info/gen_6.h rename to src/data/pokemon/species_info/gen_6_families.h index 7c9581e73f..c483343ae4 100644 --- a/src/data/pokemon/species_info/gen_6.h +++ b/src/data/pokemon/species_info/gen_6_families.h @@ -38,18 +38,23 @@ 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) FOLLOWER(Chespin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Chespin), + .levelUpLearnset = sChespinLevelUpLearnset, + .teachableLearnset = sChespinTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_QUILLADIN}), }, @@ -87,18 +92,23 @@ 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) FOLLOWER(Quilladin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Quilladin), + .levelUpLearnset = sQuilladinLevelUpLearnset, + .teachableLearnset = sQuilladinTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_CHESNAUGHT}), }, @@ -136,18 +146,23 @@ 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) FOLLOWER(Chesnaught, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Chesnaught), + .levelUpLearnset = sChesnaughtLevelUpLearnset, + .teachableLearnset = sChesnaughtTeachableLearnset, }, #endif //P_FAMILY_CHESPIN @@ -186,18 +201,23 @@ 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) FOLLOWER(Fennekin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Fennekin), + .levelUpLearnset = sFennekinLevelUpLearnset, + .teachableLearnset = sFennekinTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_BRAIXEN}), }, @@ -235,18 +255,23 @@ 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) FOLLOWER(Braixen, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Braixen), + .levelUpLearnset = sBraixenLevelUpLearnset, + .teachableLearnset = sBraixenTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_DELPHOX}), }, @@ -284,18 +309,23 @@ 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) FOLLOWER(Delphox, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Delphox), + .levelUpLearnset = sDelphoxLevelUpLearnset, + .teachableLearnset = sDelphoxTeachableLearnset, }, #endif //P_FAMILY_FENNEKIN @@ -334,18 +364,23 @@ 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) FOLLOWER(Froakie, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Froakie), + .levelUpLearnset = sFroakieLevelUpLearnset, + .teachableLearnset = sFroakieTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_FROGADIER}), }, @@ -383,113 +418,181 @@ 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) FOLLOWER(Frogadier, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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), \ - FOLLOWER(Greninja, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - - -#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) + FOLLOWER(Greninja, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) + FOLLOWER(Greninja, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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 @@ -529,18 +632,23 @@ 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) FOLLOWER(Bunnelby, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bunnelby), + .levelUpLearnset = sBunnelbyLevelUpLearnset, + .teachableLearnset = sBunnelbyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_DIGGERSBY}), }, @@ -578,18 +686,23 @@ 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) FOLLOWER(Diggersby, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Diggersby), + .levelUpLearnset = sDiggersbyLevelUpLearnset, + .teachableLearnset = sDiggersbyTeachableLearnset, }, #endif //P_FAMILY_BUNNELBY @@ -628,18 +741,23 @@ 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) FOLLOWER(Fletchling, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Fletchling), + .levelUpLearnset = sFletchlingLevelUpLearnset, + .teachableLearnset = sFletchlingTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_FLETCHINDER}), }, @@ -677,19 +795,24 @@ 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) FOLLOWER(Fletchinder, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Fletchinder), + .levelUpLearnset = sFletchinderLevelUpLearnset, + .teachableLearnset = sFletchinderTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_TALONFLAME}), }, @@ -727,122 +850,173 @@ 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) FOLLOWER(Talonflame, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Talonflame), + .levelUpLearnset = sTalonflameLevelUpLearnset, + .teachableLearnset = sTalonflameTeachableLearnset, }, #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, - FRONT_PIC(Scatterbug, 32, 48), - .frontPicYOffset = 13, - .frontAnimFrames = sAnims_Scatterbug, - .frontAnimId = ANIM_V_STRETCH, - BACK_PIC(Scatterbug, 40, 56), - .backPicYOffset = 12, - .backAnimId = BACK_ANIM_H_SLIDE, - PALETTES(Scatterbug), - ICON(Scatterbug, 1), - FOOTPRINT(Scatterbug) - FOLLOWER(Scatterbug, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Scatterbug), - .tmIlliterate = TRUE, - .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) \ + FOLLOWER(Scatterbug, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ + .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, - FRONT_PIC(Spewpa, 40, 48), - .frontPicYOffset = 11, - .frontAnimFrames = sAnims_Spewpa, - .frontAnimId = ANIM_V_SHAKE, - BACK_PIC(Spewpa, 48, 48), - .backPicYOffset = 12, - .backAnimId = BACK_ANIM_H_VIBRATE, - PALETTES(Spewpa), - ICON(Spewpa, 1), - FOOTPRINT(Spewpa) - FOLLOWER(Spewpa, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Spewpa), - .tmIlliterate = TRUE, - .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) \ + FOLLOWER(Spewpa, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ + .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, \ @@ -874,19 +1048,24 @@ 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) \ FOLLOWER(Vivillon ##form, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ - LEARNSETS(Vivillon), \ + .levelUpLearnset = sVivillonLevelUpLearnset, \ + .teachableLearnset = sVivillonTeachableLearnset, \ .formSpeciesIdTable = sVivillonFormSpeciesIdTable [SPECIES_VIVILLON_ICY_SNOW] = @@ -1106,18 +1285,23 @@ 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) FOLLOWER(Litleo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Litleo), + .levelUpLearnset = sLitleoLevelUpLearnset, + .teachableLearnset = sLitleoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_PYROAR}), }, @@ -1155,21 +1339,29 @@ 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) FOLLOWER(Pyroar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Pyroar), + .levelUpLearnset = sPyroarLevelUpLearnset, + .teachableLearnset = sPyroarTeachableLearnset, }, #endif //P_FAMILY_LITLEO @@ -1202,19 +1394,24 @@ 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) \ FOLLOWER(Flabebe##Form##Flower, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ - LEARNSETS(Flabebe), \ + .levelUpLearnset = sFlabebeLevelUpLearnset, \ + .teachableLearnset = sFlabebeTeachableLearnset, \ .formSpeciesIdTable = sFlabebeFormSpeciesIdTable, \ .evolutions = EVOLUTION({EVO_LEVEL, 19, SPECIES_FLOETTE_ ##FORM##_FLOWER}) @@ -1286,8 +1483,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) \ FOLLOWER(Floette##form##Flower, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ .formSpeciesIdTable = sFloetteFormSpeciesIdTable @@ -1302,12 +1501,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) @@ -1367,18 +1569,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) \ @@ -1409,18 +1614,23 @@ 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) \ FOLLOWER(Florges##Form##Flower, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ - LEARNSETS(Florges), \ + .levelUpLearnset = sFlorgesLevelUpLearnset, \ + .teachableLearnset = sFlorgesTeachableLearnset, \ .formSpeciesIdTable = sFlorgesFormSpeciesIdTable [SPECIES_FLORGES_RED_FLOWER] = @@ -1504,18 +1714,23 @@ 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) FOLLOWER(Skiddo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Skiddo), + .levelUpLearnset = sSkiddoLevelUpLearnset, + .teachableLearnset = sSkiddoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_GOGOAT}), }, @@ -1553,18 +1768,23 @@ 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) FOLLOWER(Gogoat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Gogoat), + .levelUpLearnset = sGogoatLevelUpLearnset, + .teachableLearnset = sGogoatTeachableLearnset, }, #endif //P_FAMILY_SKIDDO @@ -1604,18 +1824,23 @@ 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) FOLLOWER(Pancham, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Pancham), + .levelUpLearnset = sPanchamLevelUpLearnset, + .teachableLearnset = sPanchamTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_DARK_TYPE_MON_IN_PARTY, 32, SPECIES_PANGORO}), }, @@ -1654,169 +1879,88 @@ 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) FOLLOWER(Pangoro, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, 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) \ + FOLLOWER(Furfrou##_form, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ + .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), - FOLLOWER(FurfrouNatural, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - }, - [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), - FOLLOWER(FurfrouHeartTrim, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - }, - [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), - FOLLOWER(FurfrouStarTrim, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - }, - [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), - FOLLOWER(FurfrouDiamondTrim, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - }, - [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), - FOLLOWER(FurfrouDebutanteTrim, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - }, - [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), - FOLLOWER(FurfrouMatronTrim, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - }, - [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), - FOLLOWER(FurfrouDandyTrim, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - }, - [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), - FOLLOWER(FurfrouLaReineTrim, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - }, - [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), - FOLLOWER(FurfrouKabukiTrim, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - }, - [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), - FOLLOWER(FurfrouPharaohTrim, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - }, + [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 @@ -1854,92 +1998,133 @@ 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) FOLLOWER(Espurr, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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), + .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) FOLLOWER(MeowsticMale, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(MeowsticMale), + .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), + .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) FOLLOWER(MeowsticFemale, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(MeowsticFemale), + .levelUpLearnset = sMeowsticFemaleLevelUpLearnset, + .teachableLearnset = sMeowsticFemaleTeachableLearnset, + .formSpeciesIdTable = sMeowsticFormSpeciesIdTable, }, #endif //P_FAMILY_ESPURR @@ -1961,7 +2146,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, @@ -1978,19 +2163,24 @@ 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) FOLLOWER(Honedge, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Honedge), + .levelUpLearnset = sHonedgeLevelUpLearnset, + .teachableLearnset = sHonedgeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_DOUBLADE}), }, @@ -2011,7 +2201,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, @@ -2028,88 +2218,97 @@ 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) FOLLOWER(Doublade, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, 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) FOLLOWER(AegislashShield, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, @@ -2117,21 +2316,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, 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 @@ -2170,19 +2395,24 @@ 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) FOLLOWER(Spritzee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Spritzee), + .levelUpLearnset = sSpritzeeLevelUpLearnset, + .teachableLearnset = sSpritzeeTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}, {EVO_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}), }, @@ -2221,18 +2451,23 @@ 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) FOLLOWER(Aromatisse, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Aromatisse), + .levelUpLearnset = sAromatisseLevelUpLearnset, + .teachableLearnset = sAromatisseTeachableLearnset, }, #endif //P_FAMILY_SPRITZEE @@ -2271,18 +2506,23 @@ 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) FOLLOWER(Swirlix, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Swirlix), + .levelUpLearnset = sSwirlixLevelUpLearnset, + .teachableLearnset = sSwirlixTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}, {EVO_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}), }, @@ -2321,18 +2561,23 @@ 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) FOLLOWER(Slurpuff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Slurpuff), + .levelUpLearnset = sSlurpuffLevelUpLearnset, + .teachableLearnset = sSlurpuffTeachableLearnset, }, #endif //P_FAMILY_SWIRLIX @@ -2371,19 +2616,24 @@ 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) FOLLOWER(Inkay, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Inkay), + .levelUpLearnset = sInkayLevelUpLearnset, + .teachableLearnset = sInkayTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MALAMAR}), }, @@ -2421,18 +2671,23 @@ 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) FOLLOWER(Malamar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Malamar), + .levelUpLearnset = sMalamarLevelUpLearnset, + .teachableLearnset = sMalamarTeachableLearnset, }, #endif //P_FAMILY_INKAY @@ -2471,18 +2726,23 @@ 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) FOLLOWER(Binacle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Binacle), + .levelUpLearnset = sBinacleLevelUpLearnset, + .teachableLearnset = sBinacleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_BARBARACLE}), }, @@ -2521,18 +2781,23 @@ 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) FOLLOWER(Barbaracle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Barbaracle), + .levelUpLearnset = sBarbaracleLevelUpLearnset, + .teachableLearnset = sBarbaracleTeachableLearnset, }, #endif //P_FAMILY_BINACLE @@ -2571,18 +2836,23 @@ 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) FOLLOWER(Skrelp, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Skrelp), + .levelUpLearnset = sSkrelpLevelUpLearnset, + .teachableLearnset = sSkrelpTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_DRAGALGE}), }, @@ -2620,18 +2890,23 @@ 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) FOLLOWER(Dragalge, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Dragalge), + .levelUpLearnset = sDragalgeLevelUpLearnset, + .teachableLearnset = sDragalgeTeachableLearnset, }, #endif //P_FAMILY_SKRELP @@ -2653,7 +2928,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"), @@ -2671,18 +2946,23 @@ 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) FOLLOWER(Clauncher, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Clauncher), + .levelUpLearnset = sClauncherLevelUpLearnset, + .teachableLearnset = sClauncherTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_CLAWITZER}), }, @@ -2703,7 +2983,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"), @@ -2721,18 +3001,23 @@ 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) FOLLOWER(Clawitzer, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Clawitzer), + .levelUpLearnset = sClawitzerLevelUpLearnset, + .teachableLearnset = sClawitzerTeachableLearnset, }, #endif //P_FAMILY_CLAUNCHER @@ -2771,18 +3056,23 @@ 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) FOLLOWER(Helioptile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Helioptile), + .levelUpLearnset = sHelioptileLevelUpLearnset, + .teachableLearnset = sHelioptileTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_HELIOLISK}), }, @@ -2821,18 +3111,23 @@ 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) FOLLOWER(Heliolisk, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Heliolisk), + .levelUpLearnset = sHelioliskLevelUpLearnset, + .teachableLearnset = sHelioliskTeachableLearnset, }, #endif //P_FAMILY_HELIOPTILE @@ -2871,18 +3166,23 @@ 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) FOLLOWER(Tyrunt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Tyrunt), + .levelUpLearnset = sTyruntLevelUpLearnset, + .teachableLearnset = sTyruntTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_DAY, 39, SPECIES_TYRANTRUM}), }, @@ -2920,18 +3220,23 @@ 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) FOLLOWER(Tyrantrum, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Tyrantrum), + .levelUpLearnset = sTyrantrumLevelUpLearnset, + .teachableLearnset = sTyrantrumTeachableLearnset, }, #endif //P_FAMILY_TYRUNT @@ -2970,18 +3275,23 @@ 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) FOLLOWER(Amaura, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Amaura), + .levelUpLearnset = sAmauraLevelUpLearnset, + .teachableLearnset = sAmauraTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 39, SPECIES_AURORUS}), }, @@ -3019,18 +3329,23 @@ 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) FOLLOWER(Aurorus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Aurorus), + .levelUpLearnset = sAurorusLevelUpLearnset, + .teachableLearnset = sAurorusTeachableLearnset, }, #endif //P_FAMILY_AMAURA @@ -3052,11 +3367,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"), @@ -3074,18 +3389,23 @@ 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) FOLLOWER(Hawlucha, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Hawlucha), + .levelUpLearnset = sHawluchaLevelUpLearnset, + .teachableLearnset = sHawluchaTeachableLearnset, }, #endif //P_FAMILY_HAWLUCHA @@ -3124,18 +3444,23 @@ 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) FOLLOWER(Dedenne, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Dedenne), + .levelUpLearnset = sDedenneLevelUpLearnset, + .teachableLearnset = sDedenneTeachableLearnset, }, #endif //P_FAMILY_DEDENNE @@ -3175,19 +3500,24 @@ 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) FOLLOWER(Carbink, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Carbink), + .levelUpLearnset = sCarbinkLevelUpLearnset, + .teachableLearnset = sCarbinkTeachableLearnset, }, #endif //P_FAMILY_CARBINK @@ -3227,42 +3557,29 @@ 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) FOLLOWER(Goomy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -3270,7 +3587,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, @@ -3283,40 +3613,30 @@ 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), + .palette = gMonPalette_Sliggoo, + .shinyPalette = gMonShinyPalette_Sliggoo, + .iconSprite = gMonIcon_Sliggoo, + .iconPalIndex = 5, + FOOTPRINT(Sliggoo) FOLLOWER(Sliggoo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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, @@ -3324,7 +3644,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, @@ -3337,23 +3669,29 @@ 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), + .palette = gMonPalette_Goodra, + .shinyPalette = gMonShinyPalette_Goodra, + .iconSprite = gMonIcon_Goodra, + .iconPalIndex = 5, + FOOTPRINT(Goodra) FOLLOWER(Goodra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Goodra), + .levelUpLearnset = sGoodraLevelUpLearnset, + .teachableLearnset = sGoodraTeachableLearnset, + .formSpeciesIdTable = sGoodraFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_SLIGGOO_HISUIAN] = { - SLIGGOO_MISC_INFO, .baseHP = 58, .baseAttack = 75, .baseDefense = 83, @@ -3361,7 +3699,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, @@ -3374,25 +3725,31 @@ 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), + .palette = gMonPalette_SliggooHisuian, + .shinyPalette = gMonShinyPalette_SliggooHisuian, + .iconSprite = gMonIcon_SliggooHisuian, + .iconPalIndex = 2, + FOOTPRINT(Sliggoo) FOLLOWER(SliggooHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(SliggooHisuian), .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, @@ -3400,7 +3757,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, @@ -3413,18 +3782,25 @@ 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), + .palette = gMonPalette_GoodraHisuian, + .shinyPalette = gMonShinyPalette_GoodraHisuian, + .iconSprite = gMonIcon_GoodraHisuian, + .iconPalIndex = 2, + FOOTPRINT(Goodra) FOLLOWER(GoodraHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(GoodraHisuian), .isHisuianForm = TRUE, + .levelUpLearnset = sGoodraHisuianLevelUpLearnset, + .teachableLearnset = sGoodraHisuianTeachableLearnset, + .formSpeciesIdTable = sGoodraFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_GOOMY @@ -3465,19 +3841,24 @@ 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) FOLLOWER(Klefki, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Klefki), + .levelUpLearnset = sKlefkiLevelUpLearnset, + .teachableLearnset = sKlefkiTeachableLearnset, }, #endif //P_FAMILY_KLEFKI @@ -3516,19 +3897,24 @@ 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) FOLLOWER(Phantump, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Phantump), + .levelUpLearnset = sPhantumpLevelUpLearnset, + .teachableLearnset = sPhantumpTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_TREVENANT}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_TREVENANT}), }, @@ -3567,56 +3953,50 @@ 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) FOLLOWER(Trevenant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -3628,25 +4008,51 @@ 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) FOLLOWER(PumpkabooAverage, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -3657,24 +4063,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( @@ -3685,26 +4117,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( @@ -3715,48 +4173,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( @@ -3768,23 +4228,49 @@ 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) FOLLOWER(GourgeistAverage, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -3796,22 +4282,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( @@ -3823,24 +4335,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( @@ -3852,10 +4390,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 @@ -3900,42 +4451,29 @@ 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) FOLLOWER(Bergmite, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -3943,36 +4481,54 @@ 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), + .palette = gMonPalette_Avalugg, + .shinyPalette = gMonShinyPalette_Avalugg, + .iconSprite = gMonIcon_Avalugg, + .iconPalIndex = 0, + FOOTPRINT(Avalugg) FOLLOWER(Avalugg, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Avalugg), + .levelUpLearnset = sAvaluggLevelUpLearnset, + .teachableLearnset = sAvaluggTeachableLearnset, + .formSpeciesIdTable = sAvaluggFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_AVALUGG_HISUIAN] = { - AVALUGG_MISC_INFO, .baseHP = 95, .baseAttack = 127, .baseDefense = 184, @@ -3980,7 +4536,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( @@ -3991,18 +4560,25 @@ 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), + .palette = gMonPalette_AvaluggHisuian, + .shinyPalette = gMonShinyPalette_AvaluggHisuian, + .iconSprite = gMonIcon_AvaluggHisuian, + .iconPalIndex = 5, + FOOTPRINT(Avalugg) FOLLOWER(AvaluggHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(AvaluggHisuian), .isHisuianForm = TRUE, + .levelUpLearnset = sAvaluggHisuianLevelUpLearnset, + .teachableLearnset = sAvaluggHisuianTeachableLearnset, + .formSpeciesIdTable = sAvaluggFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_BERGMITE @@ -4024,11 +4600,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"), @@ -4046,19 +4622,24 @@ 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) FOLLOWER(Noibat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Noibat), + .levelUpLearnset = sNoibatLevelUpLearnset, + .teachableLearnset = sNoibatTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_NOIVERN}), }, @@ -4078,11 +4659,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"), @@ -4100,71 +4681,130 @@ 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) FOLLOWER(Noivern, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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) \ - FOLLOWER(XerneasNeutral, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) \ - 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, 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) + FOLLOWER(XerneasNeutral, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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) + FOLLOWER(XerneasNeutral, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) + .isLegendary = TRUE, + .levelUpLearnset = sXerneasLevelUpLearnset, + .teachableLearnset = sXerneasTeachableLearnset, + .formSpeciesIdTable = sXerneasFormSpeciesIdTable, + .formChangeTable = sXerneasFormChangeTable, + }, #endif //P_FAMILY_XERNEAS #if P_FAMILY_YVELTAL @@ -4185,9 +4825,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Yveltal"), .cryId = CRY_YVELTAL, .natDexNum = NATIONAL_DEX_YVELTAL, @@ -4203,129 +4842,261 @@ 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) FOLLOWER(Yveltal, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) - 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, 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) + FOLLOWER(Zygarde50, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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) + FOLLOWER(Zygarde50, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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), \ - FOLLOWER(Zygarde50, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) \ - .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, 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, 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( @@ -4337,52 +5108,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, - .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE }, + .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, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Diancie"), .cryId = CRY_DIANCIE, + .natDexNum = NATIONAL_DEX_DIANCIE, + .categoryName = _("Jewel"), .height = 7, .weight = 88, .description = COMPOUND_STRING( @@ -4394,31 +5166,53 @@ 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) FOLLOWER(Diancie, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -4430,41 +5224,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, @@ -4472,8 +5258,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, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Hoopa"), .cryId = CRY_HOOPA_CONFINED, + .natDexNum = NATIONAL_DEX_HOOPA, .categoryName = _("Mischief"), .height = 5, .weight = 90, @@ -4486,23 +5283,31 @@ 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), + .palette = gMonPalette_HoopaConfined, + .shinyPalette = gMonShinyPalette_HoopaConfined, + .iconSprite = gMonIcon_HoopaConfined, + .iconPalIndex = 0, + FOOTPRINT(Hoopa) FOLLOWER(HoopaConfined, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(HoopaConfined), + .isMythical = TRUE, + .levelUpLearnset = sHoopaConfinedLevelUpLearnset, + .teachableLearnset = sHoopaConfinedTeachableLearnset, + .formSpeciesIdTable = sHoopaFormSpeciesIdTable, + .formChangeTable = sHoopaFormChangeTable, }, [SPECIES_HOOPA_UNBOUND] = { - HOOPA_MISC_INFO, .baseHP = 80, .baseAttack = 160, .baseDefense = 60, @@ -4510,8 +5315,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, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Hoopa"), .cryId = CRY_HOOPA_UNBOUND, + .natDexNum = NATIONAL_DEX_HOOPA, .categoryName = _("Djinn"), .height = 65, .weight = 490, @@ -4524,18 +5340,27 @@ 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), + .palette = gMonPalette_HoopaUnbound, + .shinyPalette = gMonShinyPalette_HoopaUnbound, + .iconSprite = gMonIcon_HoopaUnbound, + .iconPalIndex = 0, + FOOTPRINT(Hoopa) FOLLOWER(HoopaUnbound, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(HoopaUnbound), + .isMythical = TRUE, + .levelUpLearnset = sHoopaUnboundLevelUpLearnset, + .teachableLearnset = sHoopaUnboundTeachableLearnset, + .formSpeciesIdTable = sHoopaFormSpeciesIdTable, + .formChangeTable = sHoopaFormChangeTable, }, #endif //P_FAMILY_HOOPA @@ -4557,9 +5382,8 @@ 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, - .isMythical = TRUE, .speciesName = _("Volcanion"), .cryId = CRY_VOLCANION, .natDexNum = NATIONAL_DEX_VOLCANION, @@ -4575,18 +5399,24 @@ 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) FOLLOWER(Volcanion, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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_families.h similarity index 61% rename from src/data/pokemon/species_info/gen_7.h rename to src/data/pokemon/species_info/gen_7_families.h index 65a5ee9027..9b3ca6afd1 100644 --- a/src/data/pokemon/species_info/gen_7.h +++ b/src/data/pokemon/species_info/gen_7_families.h @@ -38,18 +38,23 @@ 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) FOLLOWER(Rowlet, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Rowlet), + .levelUpLearnset = sRowletLevelUpLearnset, + .teachableLearnset = sRowletTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_DARTRIX}), }, @@ -88,47 +93,29 @@ 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) FOLLOWER(Dartrix, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -136,30 +123,54 @@ 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), + .palette = gMonPalette_Decidueye, + .shinyPalette = gMonShinyPalette_Decidueye, + .iconSprite = gMonIcon_Decidueye, + .iconPalIndex = 1, + FOOTPRINT(Decidueye) FOLLOWER(Decidueye, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Decidueye), + .levelUpLearnset = sDecidueyeLevelUpLearnset, + .teachableLearnset = sDecidueyeTeachableLearnset, + .formSpeciesIdTable = sDecidueyeFormSpeciesIdTable, }, #if P_HISUIAN_FORMS [SPECIES_DECIDUEYE_HISUIAN] = { - DECIDUEYE_MISC_INFO, .baseHP = 88, .baseAttack = 112, .baseDefense = 80, @@ -167,25 +178,50 @@ 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), + .palette = gMonPalette_DecidueyeHisuian, + .shinyPalette = gMonShinyPalette_DecidueyeHisuian, + .iconSprite = gMonIcon_DecidueyeHisuian, + .iconPalIndex = 0, + FOOTPRINT(Decidueye) FOLLOWER(DecidueyeHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(DecidueyeHisuian), .isHisuianForm = TRUE, + .levelUpLearnset = sDecidueyeHisuianLevelUpLearnset, + .teachableLearnset = sDecidueyeHisuianTeachableLearnset, + .formSpeciesIdTable = sDecidueyeFormSpeciesIdTable, }, #endif //P_HISUIAN_FORMS #endif //P_FAMILY_ROWLET @@ -225,18 +261,23 @@ 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) FOLLOWER(Litten, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Litten), + .levelUpLearnset = sLittenLevelUpLearnset, + .teachableLearnset = sLittenTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_TORRACAT}), }, @@ -274,18 +315,23 @@ 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) FOLLOWER(Torracat, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Torracat), + .levelUpLearnset = sTorracatLevelUpLearnset, + .teachableLearnset = sTorracatTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_INCINEROAR}), }, @@ -323,18 +369,23 @@ 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) FOLLOWER(Incineroar, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Incineroar), + .levelUpLearnset = sIncineroarLevelUpLearnset, + .teachableLearnset = sIncineroarTeachableLearnset, }, #endif //P_FAMILY_LITTEN @@ -373,18 +424,23 @@ 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) FOLLOWER(Popplio, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Popplio), + .levelUpLearnset = sPopplioLevelUpLearnset, + .teachableLearnset = sPopplioTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_BRIONNE}), }, @@ -422,18 +478,23 @@ 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) FOLLOWER(Brionne, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Brionne), + .levelUpLearnset = sBrionneLevelUpLearnset, + .teachableLearnset = sBrionneTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_PRIMARINA}), }, @@ -471,18 +532,23 @@ 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) FOLLOWER(Primarina, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Primarina), + .levelUpLearnset = sPrimarinaLevelUpLearnset, + .teachableLearnset = sPrimarinaTeachableLearnset, }, #endif //P_FAMILY_POPPLIO @@ -522,18 +588,23 @@ 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) FOLLOWER(Pikipek, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Pikipek), + .levelUpLearnset = sPikipekLevelUpLearnset, + .teachableLearnset = sPikipekTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_TRUMBEAK}), }, @@ -572,18 +643,23 @@ 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) FOLLOWER(Trumbeak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Trumbeak), + .levelUpLearnset = sTrumbeakLevelUpLearnset, + .teachableLearnset = sTrumbeakTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_TOUCANNON}), }, @@ -622,18 +698,23 @@ 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) FOLLOWER(Toucannon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Toucannon), + .levelUpLearnset = sToucannonLevelUpLearnset, + .teachableLearnset = sToucannonTeachableLearnset, }, #endif //P_FAMILY_PIKIPEK @@ -673,18 +754,23 @@ 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) FOLLOWER(Yungoos, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Yungoos), + .levelUpLearnset = sYungoosLevelUpLearnset, + .teachableLearnset = sYungoosTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_DAY, 20, SPECIES_GUMSHOOS}), }, @@ -714,27 +800,81 @@ 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, .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) FOLLOWER(Gumshoos, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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) + FOLLOWER(Gumshoos, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .isTotem = TRUE, + .levelUpLearnset = sGumshoosLevelUpLearnset, + .teachableLearnset = sGumshoosTeachableLearnset, + .formSpeciesIdTable = sGumshoosFormSpeciesIdTable, }, #endif //P_FAMILY_YUNGOOS @@ -756,7 +896,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, @@ -773,18 +913,23 @@ 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) FOLLOWER(Grubbin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Grubbin), + .levelUpLearnset = sGrubbinLevelUpLearnset, + .teachableLearnset = sGrubbinTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_CHARJABUG}), }, @@ -806,7 +951,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, @@ -823,20 +968,26 @@ 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) FOLLOWER(Charjabug, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Charjabug), + .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] = @@ -856,7 +1007,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, @@ -864,28 +1015,82 @@ 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, .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) FOLLOWER(Vikavolt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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) + FOLLOWER(Vikavolt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .isTotem = TRUE, + .levelUpLearnset = sVikavoltLevelUpLearnset, + .teachableLearnset = sVikavoltTeachableLearnset, + .formSpeciesIdTable = sVikavoltFormSpeciesIdTable, }, #endif //P_FAMILY_GRUBBIN @@ -925,18 +1130,23 @@ 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) FOLLOWER(Crabrawler, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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}), }, @@ -976,135 +1186,246 @@ 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) FOLLOWER(Crabominable, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, 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) FOLLOWER(OricorioBaile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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, 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, 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 @@ -1144,20 +1465,26 @@ 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) FOLLOWER(Cutiefly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cutiefly), - .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_RIBOMBEE}), + .levelUpLearnset = sCutieflyLevelUpLearnset, + .teachableLearnset = sCutieflyTeachableLearnset, + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_RIBOMBEE}, + {EVO_NONE, 0, SPECIES_RIBOMBEE_TOTEM}), }, [SPECIES_RIBOMBEE] = @@ -1186,237 +1513,377 @@ 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, .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) FOLLOWER(Ribombee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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) + FOLLOWER(Ribombee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .isTotem = TRUE, + .levelUpLearnset = sRibombeeLevelUpLearnset, + .teachableLearnset = sRibombeeTeachableLearnset, + .formSpeciesIdTable = sRibombeeFormSpeciesIdTable, }, #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, \ - FRONT_PIC(Rockruff, 40, 48), \ - .frontPicYOffset = 11, \ - .frontAnimFrames = sAnims_Rockruff, \ - .frontAnimId = ANIM_V_STRETCH, \ - BACK_PIC(Rockruff, 64, 56), \ - .backPicYOffset = 7, \ - .backAnimId = BACK_ANIM_V_STRETCH, \ - PALETTES(Rockruff), \ - ICON(Rockruff, 2), \ - FOOTPRINT(Rockruff) \ - FOLLOWER(Rockruff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ - 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 }, + .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) + FOLLOWER(Rockruff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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 }, + .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) + FOLLOWER(Rockruff, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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), + .palette = gMonPalette_LycanrocMidday, + .shinyPalette = gMonShinyPalette_LycanrocMidday, + .iconSprite = gMonIcon_LycanrocMidday, + .iconPalIndex = 2, + FOOTPRINT(Lycanroc) FOLLOWER(LycanrocMidday, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(LycanrocMidday), + .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), + .palette = gMonPalette_LycanrocMidnight, + .shinyPalette = gMonShinyPalette_LycanrocMidnight, + .iconSprite = gMonIcon_LycanrocMidnight, + .iconPalIndex = 0, + FOOTPRINT(Lycanroc) FOLLOWER(LycanrocMidnight, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(LycanrocMidnight), + .levelUpLearnset = sLycanrocMidnightLevelUpLearnset, + .teachableLearnset = sLycanrocMidnightTeachableLearnset, + .formSpeciesIdTable = sLycanrocFormSpeciesIdTable, }, [SPECIES_LYCANROC_DUSK] = { - LYCANROC_MISC_INFO, .baseHP = 75, .baseAttack = 117, .baseDefense = 65, .baseSpeed = 110, .baseSpAttack = 55, .baseSpDefense = 65, - .abilities = { ABILITY_TOUGH_CLAWS, ABILITY_NONE }, + .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, 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), + .palette = gMonPalette_LycanrocDusk, + .shinyPalette = gMonShinyPalette_LycanrocDusk, + .iconSprite = gMonIcon_LycanrocDusk, + .iconPalIndex = 0, + FOOTPRINT(Lycanroc) FOLLOWER(LycanrocDusk, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(LycanrocDusk), + .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, 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( @@ -1424,30 +1891,55 @@ 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) FOLLOWER(WishiwashiSolo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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( @@ -1455,15 +1947,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 @@ -1503,18 +2008,23 @@ 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) FOLLOWER(Mareanie, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Mareanie), + .levelUpLearnset = sMareanieLevelUpLearnset, + .teachableLearnset = sMareanieTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_TOXAPEX}), }, @@ -1553,18 +2063,23 @@ 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) FOLLOWER(Toxapex, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Toxapex), + .levelUpLearnset = sToxapexLevelUpLearnset, + .teachableLearnset = sToxapexTeachableLearnset, }, #endif //P_FAMILY_MAREANIE @@ -1604,18 +2119,23 @@ 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) FOLLOWER(Mudbray, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Mudbray), + .levelUpLearnset = sMudbrayLevelUpLearnset, + .teachableLearnset = sMudbrayTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MUDSDALE}), }, @@ -1654,18 +2174,23 @@ 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) FOLLOWER(Mudsdale, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Mudsdale), + .levelUpLearnset = sMudsdaleLevelUpLearnset, + .teachableLearnset = sMudsdaleTeachableLearnset, }, #endif //P_FAMILY_MUDBRAY @@ -1705,19 +2230,25 @@ 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) FOLLOWER(Dewpider, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Dewpider), - .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARAQUANID}), + .levelUpLearnset = sDewpiderLevelUpLearnset, + .teachableLearnset = sDewpiderTeachableLearnset, + .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARAQUANID}, + {EVO_NONE, 0, SPECIES_ARAQUANID_TOTEM}), }, [SPECIES_ARAQUANID] = @@ -1746,27 +2277,81 @@ 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, .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) FOLLOWER(Araquanid, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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) + FOLLOWER(Araquanid, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .isTotem = TRUE, + .levelUpLearnset = sAraquanidLevelUpLearnset, + .teachableLearnset = sAraquanidTeachableLearnset, + .formSpeciesIdTable = sAraquanidFormSpeciesIdTable, }, #endif //P_FAMILY_DEWPIDER @@ -1806,19 +2391,25 @@ 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) FOLLOWER(Fomantis, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Fomantis), - .evolutions = EVOLUTION({EVO_LEVEL_DAY, 34, SPECIES_LURANTIS}), + .levelUpLearnset = sFomantisLevelUpLearnset, + .teachableLearnset = sFomantisTeachableLearnset, + .evolutions = EVOLUTION({EVO_LEVEL_DAY, 34, SPECIES_LURANTIS}, + {EVO_NONE, 0, SPECIES_LURANTIS_TOTEM}), }, [SPECIES_LURANTIS] = @@ -1847,27 +2438,81 @@ 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, .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) FOLLOWER(Lurantis, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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) + FOLLOWER(Lurantis, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .isTotem = TRUE, + .levelUpLearnset = sLurantisLevelUpLearnset, + .teachableLearnset = sLurantisTeachableLearnset, + .formSpeciesIdTable = sLurantisFormSpeciesIdTable, }, #endif //P_FAMILY_FOMANTIS @@ -1908,18 +2553,23 @@ 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) FOLLOWER(Morelull, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Morelull), + .levelUpLearnset = sMorelullLevelUpLearnset, + .teachableLearnset = sMorelullTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_SHIINOTIC}), }, @@ -1959,18 +2609,23 @@ 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) FOLLOWER(Shiinotic, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Shiinotic), + .levelUpLearnset = sShiinoticLevelUpLearnset, + .teachableLearnset = sShiinoticTeachableLearnset, }, #endif //P_FAMILY_MORELULL @@ -2010,19 +2665,25 @@ 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) FOLLOWER(Salandit, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Salandit), - .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 33, SPECIES_SALAZZLE}), + .levelUpLearnset = sSalanditLevelUpLearnset, + .teachableLearnset = sSalanditTeachableLearnset, + .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 33, SPECIES_SALAZZLE}, + {EVO_NONE, 0, SPECIES_SALAZZLE_TOTEM}), }, [SPECIES_SALAZZLE] = @@ -2051,27 +2712,81 @@ 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, .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) FOLLOWER(Salazzle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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) + FOLLOWER(Salazzle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .isTotem = TRUE, + .levelUpLearnset = sSalazzleLevelUpLearnset, + .teachableLearnset = sSalazzleTeachableLearnset, + .formSpeciesIdTable = sSalanditFormSpeciesIdTable, }, #endif //P_FAMILY_SALANDIT @@ -2110,18 +2825,23 @@ 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) FOLLOWER(Stufful, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Stufful), + .levelUpLearnset = sStuffulLevelUpLearnset, + .teachableLearnset = sStuffulTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_BEWEAR}), }, @@ -2159,18 +2879,23 @@ 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) FOLLOWER(Bewear, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bewear), + .levelUpLearnset = sBewearLevelUpLearnset, + .teachableLearnset = sBewearTeachableLearnset, }, #endif //P_FAMILY_STUFFUL @@ -2210,18 +2935,23 @@ 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) FOLLOWER(Bounsweet, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bounsweet), + .levelUpLearnset = sBounsweetLevelUpLearnset, + .teachableLearnset = sBounsweetTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_STEENEE}), }, @@ -2261,18 +2991,23 @@ 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) FOLLOWER(Steenee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Steenee), + .levelUpLearnset = sSteeneeLevelUpLearnset, + .teachableLearnset = sSteeneeTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_STOMP, SPECIES_TSAREENA}), }, @@ -2312,18 +3047,23 @@ 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) FOLLOWER(Tsareena, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Tsareena), + .levelUpLearnset = sTsareenaLevelUpLearnset, + .teachableLearnset = sTsareenaTeachableLearnset, }, #endif //P_FAMILY_BOUNSWEET @@ -2364,19 +3104,24 @@ 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) FOLLOWER(Comfey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Comfey), + .levelUpLearnset = sComfeyLevelUpLearnset, + .teachableLearnset = sComfeyTeachableLearnset, }, #endif //P_FAMILY_COMFEY @@ -2415,18 +3160,23 @@ 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) FOLLOWER(Oranguru, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Oranguru), + .levelUpLearnset = sOranguruLevelUpLearnset, + .teachableLearnset = sOranguruTeachableLearnset, }, #endif //P_FAMILY_ORANGURU @@ -2465,18 +3215,23 @@ 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) FOLLOWER(Passimian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Passimian), + .levelUpLearnset = sPassimianLevelUpLearnset, + .teachableLearnset = sPassimianTeachableLearnset, }, #endif //P_FAMILY_PASSIMIAN @@ -2498,7 +3253,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, @@ -2515,18 +3270,23 @@ 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) FOLLOWER(Wimpod, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Wimpod), + .levelUpLearnset = sWimpodLevelUpLearnset, + .teachableLearnset = sWimpodTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GOLISOPOD}), }, @@ -2547,7 +3307,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, @@ -2564,18 +3324,23 @@ 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) FOLLOWER(Golisopod, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Golisopod), + .levelUpLearnset = sGolisopodLevelUpLearnset, + .teachableLearnset = sGolisopodTeachableLearnset, }, #endif //P_FAMILY_WIMPOD @@ -2615,18 +3380,23 @@ 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) FOLLOWER(Sandygast, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Sandygast), + .levelUpLearnset = sSandygastLevelUpLearnset, + .teachableLearnset = sSandygastTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_PALOSSAND}), }, @@ -2665,18 +3435,23 @@ 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) FOLLOWER(Palossand, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Palossand), + .levelUpLearnset = sPalossandLevelUpLearnset, + .teachableLearnset = sPalossandTeachableLearnset, }, #endif //P_FAMILY_SANDYGAST @@ -2715,18 +3490,23 @@ 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) FOLLOWER(Pyukumuku, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Pyukumuku), + .levelUpLearnset = sPyukumukuLevelUpLearnset, + .teachableLearnset = sPyukumukuTeachableLearnset, }, #endif //P_FAMILY_PYUKUMUKU @@ -2748,9 +3528,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Type: Null"), .cryId = CRY_TYPE_NULL, .natDexNum = NATIONAL_DEX_TYPE_NULL, @@ -2766,117 +3545,129 @@ 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), - FOLLOWER(TypeNull, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .palette = gMonPalette_TypeNull, + .shinyPalette = gMonShinyPalette_TypeNull, + .iconSprite = gMonIcon_TypeNull, + .iconPalIndex = 0, FOOTPRINT(Type_Null) - LEARNSETS(TypeNull), + FOLLOWER(TypeNull, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .isLegendary = TRUE, + .levelUpLearnset = sTypeNullLevelUpLearnset, + .teachableLearnset = sTypeNullTeachableLearnset, .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, \ - FRONT_PIC(Silvally, 64, 64), \ - .frontPicYOffset = 0, \ - .frontAnimFrames = sAnims_Silvally, \ - .frontAnimId = ANIM_V_SHAKE, \ - BACK_PIC(Silvally, 56, 64), \ - .backPicYOffset = 0, \ - PALETTES(palette), \ - ICON(Silvally, 0), \ - FOOTPRINT(Silvally) \ - FOLLOWER(Silvally, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ - LEARNSETS(Silvally), \ - .formSpeciesIdTable = sSilvallyFormSpeciesIdTable, \ - .formChangeTable = sSilvallyFormChangeTable, \ - } - //.backAnimId = BACK_ANIM_NONE, +#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) \ + FOLLOWER(Silvally, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ + .levelUpLearnset = sSilvallyLevelUpLearnset, \ + .teachableLearnset = sSilvallyTeachableLearnset, \ + .formSpeciesIdTable = sSilvallyFormSpeciesIdTable, \ + .formChangeTable = sSilvallyFormChangeTable, \ + } - [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 -#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) \ - LEARNSETS(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, 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) \ @@ -2888,20 +3679,24 @@ 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, \ FOLLOWER(MiniorMeteor, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ .formChangeTable = sMinior ##Form##FormChangeTable, \ MINIOR_MISC_INFO(BODY_COLOR_BROWN), \ } - //.backAnimId = BACK_ANIM_NONE, #define MINIOR_CORE_SPECIES_INFO(Form, color, iconPal) \ { \ @@ -2913,20 +3708,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), @@ -2962,7 +3760,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, @@ -2979,18 +3777,23 @@ 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) FOLLOWER(Komala, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Komala), + .levelUpLearnset = sKomalaLevelUpLearnset, + .teachableLearnset = sKomalaTeachableLearnset, }, #endif //P_FAMILY_KOMALA @@ -3013,7 +3816,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, @@ -3030,18 +3833,23 @@ 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) FOLLOWER(Turtonator, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Turtonator), + .levelUpLearnset = sTurtonatorLevelUpLearnset, + .teachableLearnset = sTurtonatorTeachableLearnset, }, #endif //P_FAMILY_TURTONATOR @@ -3072,102 +3880,290 @@ 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, .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) FOLLOWER(Togedemaru, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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) + FOLLOWER(Togedemaru, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .isTotem = TRUE, + .levelUpLearnset = sTogedemaruLevelUpLearnset, + .teachableLearnset = sTogedemaruTeachableLearnset, + .formSpeciesIdTable = sTogedemaruFormSpeciesIdTable, }, #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, - .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), + .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 = 2, + .weight = 7, + .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, - 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) FOLLOWER(MimikyuDisguised, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sMimikyuLevelUpLearnset, + .teachableLearnset = sMimikyuTeachableLearnset, + .formSpeciesIdTable = sMimikyuFormSpeciesIdTable, + .formChangeTable = sMimikyuFormChangeTable, }, [SPECIES_MIMIKYU_BUSTED] = { - MIMIKYU_MISC_INFO, - .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), + .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 = 2, + .weight = 7, + .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, - 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, + }, + + [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 @@ -3207,18 +4203,23 @@ 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) FOLLOWER(Bruxish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Bruxish), + .levelUpLearnset = sBruxishLevelUpLearnset, + .teachableLearnset = sBruxishTeachableLearnset, }, #endif //P_FAMILY_BRUXISH @@ -3258,18 +4259,23 @@ 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) FOLLOWER(Drampa, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Drampa), + .levelUpLearnset = sDrampaLevelUpLearnset, + .teachableLearnset = sDrampaTeachableLearnset, }, #endif //P_FAMILY_DRAMPA @@ -3291,7 +4297,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"), @@ -3309,19 +4315,24 @@ 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) FOLLOWER(Dhelmise, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Dhelmise), + .levelUpLearnset = sDhelmiseLevelUpLearnset, + .teachableLearnset = sDhelmiseTeachableLearnset, }, #endif //P_FAMILY_DHELMISE @@ -3361,18 +4372,23 @@ 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) FOLLOWER(JangmoO, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(JangmoO), + .levelUpLearnset = sJangmoOLevelUpLearnset, + .teachableLearnset = sJangmoOTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_HAKAMO_O}), }, @@ -3411,19 +4427,25 @@ 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) FOLLOWER(HakamoO, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(HakamoO), - .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_KOMMO_O}), + .levelUpLearnset = sHakamoOLevelUpLearnset, + .teachableLearnset = sHakamoOTeachableLearnset, + .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_KOMMO_O}, + {EVO_NONE, 0, SPECIES_KOMMO_O_TOTEM}), }, [SPECIES_KOMMO_O] = @@ -3452,27 +4474,81 @@ 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, .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) FOLLOWER(KommoO, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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) + FOLLOWER(KommoO, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .isTotem = TRUE, + .levelUpLearnset = sKommoOLevelUpLearnset, + .teachableLearnset = sKommoOTeachableLearnset, + .formSpeciesIdTable = sKommoOFormSpeciesIdTable, }, #endif //P_FAMILY_JANGMO_O @@ -3496,7 +4572,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, @@ -3512,19 +4587,25 @@ 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), - FOLLOWER(TapuKoko, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .palette = gMonPalette_TapuKoko, + .shinyPalette = gMonShinyPalette_TapuKoko, + .iconSprite = gMonIcon_TapuKoko, + .iconPalIndex = 0, FOOTPRINT(TapuKoko) - LEARNSETS(TapuKoko), + FOLLOWER(TapuKoko, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .isLegendary = TRUE, + .levelUpLearnset = sTapuKokoLevelUpLearnset, + .teachableLearnset = sTapuKokoTeachableLearnset, }, #endif //P_FAMILY_TAPU_KOKO @@ -3548,7 +4629,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, @@ -3564,19 +4644,25 @@ 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), - FOLLOWER(TapuLele, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .palette = gMonPalette_TapuLele, + .shinyPalette = gMonShinyPalette_TapuLele, + .iconSprite = gMonIcon_TapuLele, + .iconPalIndex = 0, FOOTPRINT(TapuLele) - LEARNSETS(TapuLele), + FOLLOWER(TapuLele, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .isLegendary = TRUE, + .levelUpLearnset = sTapuLeleLevelUpLearnset, + .teachableLearnset = sTapuLeleTeachableLearnset, }, #endif //P_FAMILY_TAPU_LELE @@ -3600,7 +4686,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, @@ -3616,19 +4701,25 @@ 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), - FOLLOWER(TapuBulu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .palette = gMonPalette_TapuBulu, + .shinyPalette = gMonShinyPalette_TapuBulu, + .iconSprite = gMonIcon_TapuBulu, + .iconPalIndex = 2, FOOTPRINT(TapuBulu) - LEARNSETS(TapuBulu), + FOLLOWER(TapuBulu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .isLegendary = TRUE, + .levelUpLearnset = sTapuBuluLevelUpLearnset, + .teachableLearnset = sTapuBuluTeachableLearnset, }, #endif //P_FAMILY_TAPU_BULU @@ -3652,7 +4743,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, @@ -3668,20 +4758,26 @@ 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), - FOLLOWER(TapuFini, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .palette = gMonPalette_TapuFini, + .shinyPalette = gMonShinyPalette_TapuFini, + .iconSprite = gMonIcon_TapuFini, + .iconPalIndex = 0, FOOTPRINT(TapuFini) - LEARNSETS(TapuFini), + FOLLOWER(TapuFini, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .isLegendary = TRUE, + .levelUpLearnset = sTapuFiniLevelUpLearnset, + .teachableLearnset = sTapuFiniTeachableLearnset, }, #endif //P_FAMILY_TAPU_FINI @@ -3703,9 +4799,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Cosmog"), .cryId = CRY_COSMOG, .natDexNum = NATIONAL_DEX_COSMOG, @@ -3721,20 +4816,26 @@ 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) FOLLOWER(Cosmog, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cosmog), + .isLegendary = TRUE, .tmIlliterate = TRUE, + .levelUpLearnset = sCosmogLevelUpLearnset, + .teachableLearnset = sCosmogTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 43, SPECIES_COSMOEM}), }, @@ -3756,9 +4857,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Cosmoem"), .cryId = CRY_COSMOEM, .natDexNum = NATIONAL_DEX_COSMOEM, @@ -3774,20 +4874,26 @@ 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) FOLLOWER(Cosmoem, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Cosmoem), + .isLegendary = TRUE, .tmIlliterate = TRUE, + .levelUpLearnset = sCosmoemLevelUpLearnset, + .teachableLearnset = sCosmoemTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_DAY, 53, SPECIES_SOLGALEO}, {EVO_LEVEL_NIGHT, 53, SPECIES_LUNALA}), }, @@ -3809,9 +4915,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Solgaleo"), .cryId = CRY_SOLGALEO, .natDexNum = NATIONAL_DEX_SOLGALEO, @@ -3827,18 +4932,24 @@ 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) FOLLOWER(Solgaleo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Solgaleo), + .isLegendary = TRUE, + .levelUpLearnset = sSolgaleoLevelUpLearnset, + .teachableLearnset = sSolgaleoTeachableLearnset, }, [SPECIES_LUNALA] = @@ -3858,9 +4969,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Lunala"), .cryId = CRY_LUNALA, .natDexNum = NATIONAL_DEX_LUNALA, @@ -3876,19 +4986,25 @@ 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) FOLLOWER(Lunala, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Lunala), + .isLegendary = TRUE, + .levelUpLearnset = sLunalaLevelUpLearnset, + .teachableLearnset = sLunalaTeachableLearnset, }, #endif //P_FAMILY_COSMOG @@ -3910,9 +5026,8 @@ 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, - .isUltraBeast = TRUE, .speciesName = _("Nihilego"), .cryId = CRY_NIHILEGO, .natDexNum = NATIONAL_DEX_NIHILEGO, @@ -3928,19 +5043,25 @@ 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) FOLLOWER(Nihilego, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Nihilego), + .isUltraBeast = TRUE, + .levelUpLearnset = sNihilegoLevelUpLearnset, + .teachableLearnset = sNihilegoTeachableLearnset, }, #endif //P_FAMILY_NIHILEGO @@ -3963,9 +5084,8 @@ 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, - .isUltraBeast = TRUE, .speciesName = _("Buzzwole"), .cryId = CRY_BUZZWOLE, .natDexNum = NATIONAL_DEX_BUZZWOLE, @@ -3981,18 +5101,24 @@ 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) FOLLOWER(Buzzwole, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Buzzwole), + .isUltraBeast = TRUE, + .levelUpLearnset = sBuzzwoleLevelUpLearnset, + .teachableLearnset = sBuzzwoleTeachableLearnset, }, #endif //P_FAMILY_BUZZWOLE @@ -4014,9 +5140,8 @@ 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, - .isUltraBeast = TRUE, .speciesName = _("Pheromosa"), .cryId = CRY_PHEROMOSA, .natDexNum = NATIONAL_DEX_PHEROMOSA, @@ -4032,18 +5157,24 @@ 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) FOLLOWER(Pheromosa, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Pheromosa), + .isUltraBeast = TRUE, + .levelUpLearnset = sPheromosaLevelUpLearnset, + .teachableLearnset = sPheromosaTeachableLearnset, }, #endif //P_FAMILY_PHEROMOSA @@ -4065,9 +5196,8 @@ 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, - .isUltraBeast = TRUE, .speciesName = _("Xurkitree"), .cryId = CRY_XURKITREE, .natDexNum = NATIONAL_DEX_XURKITREE, @@ -4083,18 +5213,24 @@ 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) FOLLOWER(Xurkitree, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Xurkitree), + .isUltraBeast = TRUE, + .levelUpLearnset = sXurkitreeLevelUpLearnset, + .teachableLearnset = sXurkitreeTeachableLearnset, }, #endif //P_FAMILY_XURKITREE @@ -4118,9 +5254,8 @@ 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, - .isUltraBeast = TRUE, .speciesName = _("Celesteela"), .cryId = CRY_CELESTEELA, .natDexNum = NATIONAL_DEX_CELESTEELA, @@ -4136,18 +5271,24 @@ 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) FOLLOWER(Celesteela, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Celesteela), + .isUltraBeast = TRUE, + .levelUpLearnset = sCelesteelaLevelUpLearnset, + .teachableLearnset = sCelesteelaTeachableLearnset, }, #endif //P_FAMILY_CELESTEELA @@ -4169,9 +5310,8 @@ 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, - .isUltraBeast = TRUE, .speciesName = _("Kartana"), .cryId = CRY_KARTANA, .natDexNum = NATIONAL_DEX_KARTANA, @@ -4187,19 +5327,25 @@ 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) FOLLOWER(Kartana, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Kartana), + .isUltraBeast = TRUE, + .levelUpLearnset = sKartanaLevelUpLearnset, + .teachableLearnset = sKartanaTeachableLearnset, }, #endif //P_FAMILY_KARTANA @@ -4221,9 +5367,8 @@ 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, - .isUltraBeast = TRUE, .speciesName = _("Guzzlord"), .cryId = CRY_GUZZLORD, .natDexNum = NATIONAL_DEX_GUZZLORD, @@ -4239,44 +5384,30 @@ 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) FOLLOWER(Guzzlord, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -4288,9 +5419,18 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, .evYield_Attack = 1, .evYield_SpAttack = 2, - .abilities = { ABILITY_PRISM_ARMOR, ABILITY_NONE }, + .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, 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( @@ -4298,23 +5438,35 @@ 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) FOLLOWER(Necrozma, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, @@ -4325,9 +5477,18 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .catchRate = 255, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 340 : 306, .evYield_Attack = 3, - .abilities = { ABILITY_PRISM_ARMOR, ABILITY_NONE }, + .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, 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( @@ -4335,23 +5496,35 @@ 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) FOLLOWER(NecrozmaDuskMane, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, @@ -4362,9 +5535,18 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .catchRate = 255, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 340 : 306, .evYield_SpAttack = 3, - .abilities = { ABILITY_PRISM_ARMOR, ABILITY_NONE }, + .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, 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( @@ -4372,25 +5554,37 @@ 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) FOLLOWER(NecrozmaDawnWings, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, @@ -4403,9 +5597,18 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .evYield_Attack = 1, .evYield_Speed = 1, .evYield_SpAttack = 1, - .abilities = { ABILITY_NEUROFORCE, ABILITY_NONE }, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + .abilities = { ABILITY_NEUROFORCE, ABILITY_NONE, 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( @@ -4413,85 +5616,143 @@ 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, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, - FOLLOWER(Magearna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) + FOLLOWER(Magearna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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 @@ -4514,7 +5775,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"), @@ -4532,19 +5793,24 @@ 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) FOLLOWER(Marshadow, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Marshadow), .isMythical = TRUE, + .levelUpLearnset = sMarshadowLevelUpLearnset, + .teachableLearnset = sMarshadowTeachableLearnset, }, #endif //P_FAMILY_MARSHADOW @@ -4566,9 +5832,8 @@ 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, - .isUltraBeast = TRUE, .speciesName = _("Poipole"), .cryId = CRY_POIPOLE, .natDexNum = NATIONAL_DEX_POIPOLE, @@ -4583,19 +5848,25 @@ 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) FOLLOWER(Poipole, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Poipole), + .isUltraBeast = TRUE, + .levelUpLearnset = sPoipoleLevelUpLearnset, + .teachableLearnset = sPoipoleTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_DRAGON_PULSE, SPECIES_NAGANADEL}), }, @@ -4616,9 +5887,8 @@ 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, - .isUltraBeast = TRUE, .speciesName = _("Naganadel"), .cryId = CRY_NAGANADEL, .natDexNum = NATIONAL_DEX_NAGANADEL, @@ -4633,19 +5903,25 @@ 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) FOLLOWER(Naganadel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Naganadel), + .isUltraBeast = TRUE, + .levelUpLearnset = sNaganadelLevelUpLearnset, + .teachableLearnset = sNaganadelTeachableLearnset, }, #endif //P_FAMILY_POIPOLE @@ -4667,10 +5943,9 @@ 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, - .isUltraBeast = TRUE, .speciesName = _("Stakataka"), .cryId = CRY_STAKATAKA, .natDexNum = NATIONAL_DEX_STAKATAKA, @@ -4685,18 +5960,24 @@ 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) FOLLOWER(Stakataka, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Stakataka), + .isUltraBeast = TRUE, + .levelUpLearnset = sStakatakaLevelUpLearnset, + .teachableLearnset = sStakatakaTeachableLearnset, }, #endif //P_FAMILY_STAKATAKA @@ -4718,10 +5999,9 @@ 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, - .isUltraBeast = TRUE, .speciesName = _("Blacephaln"), .cryId = CRY_BLACEPHALON, .natDexNum = NATIONAL_DEX_BLACEPHALON, @@ -4736,18 +6016,24 @@ 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) FOLLOWER(Blacephalon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Blacephalon), + .isUltraBeast = TRUE, + .levelUpLearnset = sBlacephalonLevelUpLearnset, + .teachableLearnset = sBlacephalonTeachableLearnset, }, #endif //P_FAMILY_BLACEPHALON @@ -4769,9 +6055,8 @@ 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, - .isMythical = TRUE, .speciesName = _("Zeraora"), .cryId = CRY_ZERAORA, .natDexNum = NATIONAL_DEX_ZERAORA, @@ -4786,18 +6071,24 @@ 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) FOLLOWER(Zeraora, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Zeraora), + .isMythical = TRUE, + .levelUpLearnset = sZeraoraLevelUpLearnset, + .teachableLearnset = sZeraoraTeachableLearnset, }, #endif //P_FAMILY_ZERAORA @@ -4819,9 +6110,8 @@ 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, - .isMythical = TRUE, .speciesName = _("Meltan"), .cryId = CRY_MELTAN, .natDexNum = NATIONAL_DEX_MELTAN, @@ -4836,78 +6126,105 @@ 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) FOLLOWER(Meltan, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, 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) FOLLOWER(Melmetal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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( @@ -4915,15 +6232,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_families.h similarity index 57% rename from src/data/pokemon/species_info/gen_8.h rename to src/data/pokemon/species_info/gen_8_families.h index e8001a5095..1cdbf15b10 100644 --- a/src/data/pokemon/species_info/gen_8.h +++ b/src/data/pokemon/species_info/gen_8_families.h @@ -38,18 +38,23 @@ 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) FOLLOWER(Grookey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Grookey), + .levelUpLearnset = sGrookeyLevelUpLearnset, + .teachableLearnset = sGrookeyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_THWACKEY}), }, @@ -86,97 +91,133 @@ 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) FOLLOWER(Thwackey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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) FOLLOWER(Rillaboom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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 @@ -216,18 +257,23 @@ 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) FOLLOWER(Scorbunny, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Scorbunny), + .levelUpLearnset = sScorbunnyLevelUpLearnset, + .teachableLearnset = sScorbunnyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_RABOOT}), }, @@ -264,51 +310,49 @@ 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) FOLLOWER(Raboot, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -320,22 +364,51 @@ 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) FOLLOWER(Cinderace, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -347,16 +420,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 @@ -397,18 +479,23 @@ 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) FOLLOWER(Sobble, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Sobble), + .levelUpLearnset = sSobbleLevelUpLearnset, + .teachableLearnset = sSobbleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_DRIZZILE}), }, @@ -445,51 +532,49 @@ 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) FOLLOWER(Drizzile, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -501,22 +586,51 @@ 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) FOLLOWER(Inteleon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -528,16 +642,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 @@ -577,18 +700,23 @@ 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) FOLLOWER(Skwovet, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Skwovet), + .levelUpLearnset = sSkwovetLevelUpLearnset, + .teachableLearnset = sSkwovetTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_GREEDENT}), }, @@ -627,18 +755,23 @@ 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) FOLLOWER(Greedent, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Greedent), + .levelUpLearnset = sGreedentLevelUpLearnset, + .teachableLearnset = sGreedentTeachableLearnset, }, #endif //P_FAMILY_SKWOVET @@ -677,18 +810,23 @@ 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) FOLLOWER(Rookidee, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Rookidee), + .levelUpLearnset = sRookideeLevelUpLearnset, + .teachableLearnset = sRookideeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_CORVISQUIRE}), }, @@ -726,52 +864,50 @@ 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) FOLLOWER(Corvisquire, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -783,22 +919,51 @@ 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) FOLLOWER(Corviknight, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -810,16 +975,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 @@ -858,19 +1032,24 @@ 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) FOLLOWER(Blipbug, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Blipbug), .tmIlliterate = TRUE, + .levelUpLearnset = sBlipbugLevelUpLearnset, + .teachableLearnset = sBlipbugTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_DOTTLER}), }, @@ -909,52 +1088,50 @@ 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) FOLLOWER(Dottler, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -966,23 +1143,53 @@ 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) FOLLOWER(Orbeetle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -994,16 +1201,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 @@ -1043,18 +1259,23 @@ 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) FOLLOWER(Nickit, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Nickit), + .levelUpLearnset = sNickitLevelUpLearnset, + .teachableLearnset = sNickitTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_THIEVUL}), }, @@ -1092,18 +1313,23 @@ 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) FOLLOWER(Thievul, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Thievul), + .levelUpLearnset = sThievulLevelUpLearnset, + .teachableLearnset = sThievulTeachableLearnset, }, #endif //P_FAMILY_NICKIT @@ -1142,18 +1368,23 @@ 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) FOLLOWER(Gossifleur, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Gossifleur), + .levelUpLearnset = sGossifleurLevelUpLearnset, + .teachableLearnset = sGossifleurTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_ELDEGOSS}), }, @@ -1191,18 +1422,23 @@ 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) FOLLOWER(Eldegoss, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Eldegoss), + .levelUpLearnset = sEldegossLevelUpLearnset, + .teachableLearnset = sEldegossTeachableLearnset, }, #endif //P_FAMILY_GOSSIFLEUR @@ -1241,18 +1477,23 @@ 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) FOLLOWER(Wooloo, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Wooloo), + .levelUpLearnset = sWoolooLevelUpLearnset, + .teachableLearnset = sWoolooTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_DUBWOOL}), }, @@ -1290,18 +1531,23 @@ 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) FOLLOWER(Dubwool, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Dubwool), + .levelUpLearnset = sDubwoolLevelUpLearnset, + .teachableLearnset = sDubwoolTeachableLearnset, }, #endif //P_FAMILY_WOOLOO @@ -1339,51 +1585,49 @@ 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) FOLLOWER(Chewtle, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -1394,22 +1638,51 @@ 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) FOLLOWER(Drednaw, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -1421,16 +1694,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 @@ -1470,18 +1752,23 @@ 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) FOLLOWER(Yamper, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Yamper), + .levelUpLearnset = sYamperLevelUpLearnset, + .teachableLearnset = sYamperTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_BOLTUND}), }, @@ -1519,18 +1806,23 @@ 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) FOLLOWER(Boltund, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Boltund), + .levelUpLearnset = sBoltundLevelUpLearnset, + .teachableLearnset = sBoltundTeachableLearnset, }, #endif //P_FAMILY_YAMPER @@ -1569,18 +1861,23 @@ 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) FOLLOWER(Rolycoly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Rolycoly), + .levelUpLearnset = sRolycolyLevelUpLearnset, + .teachableLearnset = sRolycolyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_CARKOL}), }, @@ -1617,51 +1914,49 @@ 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) FOLLOWER(Carkol, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -1673,22 +1968,51 @@ 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) FOLLOWER(Coalossal, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -1700,16 +2024,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 @@ -1749,54 +2082,52 @@ 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) FOLLOWER(Applin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -1807,23 +2138,52 @@ 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) FOLLOWER(Flapple, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -1835,49 +2195,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( @@ -1888,22 +2250,51 @@ 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) FOLLOWER(Appletun, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -1915,16 +2306,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 @@ -1962,17 +2362,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}), }, @@ -2010,17 +2415,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 @@ -2059,51 +2469,49 @@ 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) FOLLOWER(Silicobra, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -2115,22 +2523,51 @@ 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) FOLLOWER(Sandaconda, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -2142,109 +2579,190 @@ 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, 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) FOLLOWER(Cramorant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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, 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 @@ -2283,18 +2801,23 @@ 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) FOLLOWER(Arrokuda, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Arrokuda), + .levelUpLearnset = sArrokudaLevelUpLearnset, + .teachableLearnset = sArrokudaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_BARRASKEWDA}), }, @@ -2332,18 +2855,23 @@ 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) FOLLOWER(Barraskewda, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Barraskewda), + .levelUpLearnset = sBarraskewdaLevelUpLearnset, + .teachableLearnset = sBarraskewdaTeachableLearnset, }, #endif //P_FAMILY_ARROKUDA @@ -2382,50 +2910,50 @@ 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) FOLLOWER(Toxel, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -2437,26 +2965,51 @@ 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) FOLLOWER(ToxtricityAmped, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -2464,26 +3017,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( @@ -2494,26 +3072,51 @@ 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) FOLLOWER(ToxtricityLowKey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -2521,19 +3124,26 @@ 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) FOLLOWER(ToxtricityLowKey, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(ToxtricityLowKey), .isGigantamax = TRUE, + .levelUpLearnset = sToxtricityLowKeyLevelUpLearnset, + .teachableLearnset = sToxtricityLowKeyTeachableLearnset, + .formSpeciesIdTable = sToxtricityFormSpeciesIdTable, + .formChangeTable = sToxtricityAmpedFormChangeTable, }, #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_TOXEL @@ -2572,51 +3182,49 @@ 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) FOLLOWER(Sizzlipede, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -2628,22 +3236,51 @@ 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) FOLLOWER(Centiskorch, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -2655,16 +3292,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 @@ -2704,18 +3350,23 @@ 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) FOLLOWER(Clobbopus, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Clobbopus), + .levelUpLearnset = sClobbopusLevelUpLearnset, + .teachableLearnset = sClobbopusTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_TAUNT, SPECIES_GRAPPLOCT}), }, @@ -2752,148 +3403,245 @@ 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) FOLLOWER(Grapploct, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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) \ - FOLLOWER(Sinistea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ - 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) + FOLLOWER(Sinistea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) + FOLLOWER(Sinistea, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) \ - FOLLOWER(Polteageist, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ - 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) + FOLLOWER(Polteageist, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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) + FOLLOWER(Polteageist, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .levelUpLearnset = sPolteageistLevelUpLearnset, + .teachableLearnset = sPolteageistTeachableLearnset, + .formSpeciesIdTable = sPolteageistFormSpeciesIdTable, }, #endif //P_FAMILY_SINISTEA @@ -2932,18 +3680,23 @@ 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) FOLLOWER(Hatenna, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Hatenna), + .levelUpLearnset = sHatennaLevelUpLearnset, + .teachableLearnset = sHatennaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_HATTREM}), }, @@ -2980,51 +3733,49 @@ 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) FOLLOWER(Hattrem, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -3035,22 +3786,51 @@ 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) FOLLOWER(Hatterene, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -3062,16 +3842,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 @@ -3111,18 +3900,23 @@ 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) FOLLOWER(Impidimp, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Impidimp), + .levelUpLearnset = sImpidimpLevelUpLearnset, + .teachableLearnset = sImpidimpTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_MORGREM}), }, @@ -3160,51 +3954,50 @@ 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) FOLLOWER(Morgrem, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -3215,22 +4008,51 @@ 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) FOLLOWER(Grimmsnarl, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -3242,16 +4064,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 @@ -3290,19 +4121,24 @@ 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) FOLLOWER(Milcery, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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}, @@ -3333,37 +4169,40 @@ 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) \ - FOLLOWER(AlcremieStrawberryVanillaCream, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ - 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) \ + FOLLOWER(AlcremieStrawberryVanillaCream, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) \ + .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), @@ -3432,7 +4271,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, @@ -3448,17 +4286,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, }, @@ -3499,18 +4343,23 @@ 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) FOLLOWER(Falinks, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Falinks), + .levelUpLearnset = sFalinksLevelUpLearnset, + .teachableLearnset = sFalinksTeachableLearnset, }, #endif //P_FAMILY_FALINKS @@ -3548,18 +4397,23 @@ 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) FOLLOWER(Pincurchin, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Pincurchin), + .levelUpLearnset = sPincurchinLevelUpLearnset, + .teachableLearnset = sPincurchinTeachableLearnset, }, #endif //P_FAMILY_PINCURCHIN @@ -3599,18 +4453,23 @@ 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) FOLLOWER(Snom, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Snom), + .levelUpLearnset = sSnomLevelUpLearnset, + .teachableLearnset = sSnomTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP_NIGHT, 0, SPECIES_FROSMOTH}), }, @@ -3648,19 +4507,24 @@ 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) FOLLOWER(Frosmoth, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Frosmoth), + .levelUpLearnset = sFrosmothLevelUpLearnset, + .teachableLearnset = sFrosmothTeachableLearnset, }, #endif //P_FAMILY_SNOM @@ -3682,7 +4546,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, @@ -3699,258 +4563,354 @@ 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) FOLLOWER(Stonjourner, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, 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) FOLLOWER(EiscueIceFace, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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), + .palette = gMonPalette_IndeedeeMale, + .shinyPalette = gMonShinyPalette_IndeedeeMale, + .iconSprite = gMonIcon_IndeedeeMale, + .iconPalIndex = 2, + FOOTPRINT(Indeedee) FOLLOWER(IndeedeeMale, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(IndeedeeMale), + .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, 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) FOLLOWER(MorpekoFullBelly, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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 @@ -3990,52 +4950,50 @@ 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) FOLLOWER(Cufant, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -4046,22 +5004,52 @@ 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) FOLLOWER(Copperajah, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -4073,16 +5061,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 @@ -4122,18 +5119,23 @@ 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) FOLLOWER(Dracozolt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Dracozolt), + .levelUpLearnset = sDracozoltLevelUpLearnset, + .teachableLearnset = sDracozoltTeachableLearnset, }, #endif //P_FAMILY_DRACOZOLT @@ -4171,18 +5173,23 @@ 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) FOLLOWER(Arctozolt, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Arctozolt), + .levelUpLearnset = sArctozoltLevelUpLearnset, + .teachableLearnset = sArctozoltTeachableLearnset, }, #endif //P_FAMILY_ARCTOZOLT @@ -4221,18 +5228,23 @@ 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) FOLLOWER(Dracovish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Dracovish), + .levelUpLearnset = sDracovishLevelUpLearnset, + .teachableLearnset = sDracovishTeachableLearnset, }, #endif //P_FAMILY_DRACOVISH @@ -4271,52 +5283,50 @@ 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) FOLLOWER(Arctovish, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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( @@ -4327,23 +5337,52 @@ 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) FOLLOWER(Duraludon, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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( @@ -4355,16 +5394,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 @@ -4403,17 +5451,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 @@ -4453,19 +5506,24 @@ 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) FOLLOWER(Dreepy, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Dreepy), + .levelUpLearnset = sDreepyLevelUpLearnset, + .teachableLearnset = sDreepyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_DRAKLOAK}), }, @@ -4502,19 +5560,24 @@ 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) FOLLOWER(Drakloak, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Drakloak), + .levelUpLearnset = sDrakloakLevelUpLearnset, + .teachableLearnset = sDrakloakTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 60, SPECIES_DRAGAPULT}), }, @@ -4552,50 +5615,30 @@ 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) FOLLOWER(Dragapult, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -4603,28 +5646,54 @@ 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, 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) FOLLOWER(ZacianHeroOfManyBattles, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, @@ -4632,55 +5701,57 @@ 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, 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) FOLLOWER(ZacianCrownedSword, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, @@ -4688,28 +5759,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, 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, @@ -4717,114 +5814,164 @@ 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, 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) FOLLOWER(ZamazentaCrownedShield, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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) FOLLOWER(Eternatus, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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 @@ -4846,9 +5993,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Kubfu"), .cryId = CRY_KUBFU, .natDexNum = NATIONAL_DEX_KUBFU, @@ -4863,241 +6009,364 @@ 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) FOLLOWER(Kubfu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, 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, 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, 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) FOLLOWER(Urshifu, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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, 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) FOLLOWER(Zarude, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) + .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, 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 @@ -5119,7 +6388,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, @@ -5136,20 +6405,25 @@ 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) FOLLOWER(Regieleki, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Regieleki), .isLegendary = TRUE, + .levelUpLearnset = sRegielekiLevelUpLearnset, + .teachableLearnset = sRegielekiTeachableLearnset, }, #endif //P_FAMILY_REGIELEKI @@ -5171,9 +6445,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Regidrago"), .cryId = CRY_REGIDRAGO, .natDexNum = NATIONAL_DEX_REGIDRAGO, @@ -5189,19 +6462,25 @@ 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) FOLLOWER(Regidrago, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Regidrago), + .isLegendary = TRUE, + .levelUpLearnset = sRegidragoLevelUpLearnset, + .teachableLearnset = sRegidragoTeachableLearnset, }, #endif //P_FAMILY_REGIDRAGO @@ -5223,9 +6502,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Glastrier"), .cryId = CRY_GLASTRIER, .natDexNum = NATIONAL_DEX_GLASTRIER, @@ -5240,18 +6518,24 @@ 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) FOLLOWER(Glastrier, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(Glastrier), + .isLegendary = TRUE, + .levelUpLearnset = sGlastrierLevelUpLearnset, + .teachableLearnset = sGlastrierTeachableLearnset, }, #endif //P_FAMILY_GLASTRIER @@ -5273,9 +6557,8 @@ 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, - .isLegendary = TRUE, .speciesName = _("Spectrier"), .cryId = CRY_SPECTRIER, .natDexNum = NATIONAL_DEX_SPECTRIER, @@ -5291,32 +6574,30 @@ 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) FOLLOWER(Spectrier, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - 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, @@ -5332,9 +6613,11 @@ 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, + .natDexNum = NATIONAL_DEX_CALYREX, .categoryName = _("King"), .height = 11, .weight = 77, @@ -5347,23 +6630,30 @@ 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), + .palette = gMonPalette_Calyrex, + .shinyPalette = gMonShinyPalette_Calyrex, + .iconSprite = gMonIcon_Calyrex, + .iconPalIndex = 0, + FOOTPRINT(Calyrex) FOLLOWER(Calyrex, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(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, @@ -5379,9 +6669,11 @@ 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, + .natDexNum = NATIONAL_DEX_CALYREX, .categoryName = _("High King"), .height = 24, .weight = 8091, @@ -5394,23 +6686,30 @@ 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), + .palette = gMonPalette_CalyrexIceRider, + .shinyPalette = gMonShinyPalette_CalyrexIceRider, + .iconSprite = gMonIcon_CalyrexIceRider, + .iconPalIndex = 0, + FOOTPRINT(Calyrex) FOLLOWER(CalyrexIceRider, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(CalyrexIceRider), + .isLegendary = TRUE, .cannotBeTraded = TRUE, + .levelUpLearnset = sCalyrexIceRiderLevelUpLearnset, + .teachableLearnset = sCalyrexIceRiderTeachableLearnset, + .formSpeciesIdTable = sCalyrexFormSpeciesIdTable, }, [SPECIES_CALYREX_SHADOW_RIDER] = { - CALYREX_MISC_INFO, .baseHP = 100, .baseAttack = 85, .baseDefense = 80, @@ -5426,9 +6725,11 @@ 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, + .natDexNum = NATIONAL_DEX_CALYREX, .categoryName = _("High King"), .height = 24, .weight = 536, @@ -5441,104 +6742,140 @@ 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), + .palette = gMonPalette_CalyrexShadowRider, + .shinyPalette = gMonShinyPalette_CalyrexShadowRider, + .iconSprite = gMonIcon_CalyrexShadowRider, + .iconPalIndex = 0, + FOOTPRINT(Calyrex) FOLLOWER(CalyrexShadowRider, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) - LEARNSETS(CalyrexShadowRider), + .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), - FOLLOWER(EnamorusIncarnate, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE) + .palette = gMonPalette_EnamorusIncarnate, + .shinyPalette = gMonShinyPalette_EnamorusIncarnate, + .iconSprite = gMonIcon_EnamorusIncarnate, + .iconPalIndex = 1, //FOOTPRINT(EnamorusIncarnate) + FOLLOWER(EnamorusIncarnate, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE) + .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), - FOLLOWER(EnamorusTherian, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE) + .palette = gMonPalette_EnamorusTherian, + .shinyPalette = gMonShinyPalette_EnamorusTherian, + .iconSprite = gMonIcon_EnamorusTherian, + .iconPalIndex = 1, //FOOTPRINT(Enamorus) + FOLLOWER(EnamorusTherian, SIZE_64x64, SHADOW_SIZE_M, TRACKS_NONE) + .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_families.h similarity index 68% rename from src/data/pokemon/species_info/gen_9.h rename to src/data/pokemon/species_info/gen_9_families.h index dd97bebcfe..06653c20de 100644 --- a/src/data/pokemon/species_info/gen_9.h +++ b/src/data/pokemon/species_info/gen_9_families.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 @@ -2156,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, @@ -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}), }, @@ -2204,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, @@ -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 @@ -2883,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, @@ -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, 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, 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 @@ -3732,9 +4359,8 @@ 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, - .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 @@ -3782,9 +4414,8 @@ 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, - .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 @@ -3832,9 +4469,8 @@ 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, - .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 @@ -3884,9 +4526,8 @@ 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, - .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 @@ -3935,9 +4582,8 @@ 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, - .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 @@ -3984,9 +4636,8 @@ 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, - .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 @@ -4034,9 +4691,8 @@ 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, - .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 @@ -4084,9 +4746,8 @@ 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, - .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 @@ -4134,9 +4801,8 @@ 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, - .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 @@ -4184,9 +4856,8 @@ 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, - .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 @@ -4235,9 +4912,8 @@ 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, - .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 @@ -4286,9 +4968,8 @@ 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, - .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, - .abilities = { ABILITY_RATTLED, ABILITY_NONE }, + .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, 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_LEVEL_ITEM_COUNT_999, ITEM_GIMMIGHOUL_COIN, SPECIES_GHOLDENGO}), }, [SPECIES_GIMMIGHOUL_ROAMING] = { - GIMMIGHOUL_MISC_INFO, .baseHP = 45, .baseAttack = 30, .baseDefense = 25, .baseSpeed = 80, .baseSpAttack = 75, .baseSpDefense = 45, - .abilities = { ABILITY_RUN_AWAY, ABILITY_NONE }, + .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, 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_LEVEL_ITEM_COUNT_999, ITEM_GIMMIGHOUL_COIN, SPECIES_GHOLDENGO}), }, [SPECIES_GHOLDENGO] = @@ -4564,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, @@ -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 @@ -4814,9 +5566,8 @@ 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, - .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 @@ -4865,9 +5622,8 @@ 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, - .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 @@ -5016,9 +5788,8 @@ 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, - .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 @@ -5065,9 +5842,8 @@ 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, - .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, \ @@ -5449,9 +6340,8 @@ 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, - .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 @@ -5499,9 +6395,8 @@ 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, - .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 @@ -5549,9 +6450,8 @@ 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, - .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 @@ -5598,9 +6504,8 @@ 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, - .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, - .abilities = { ABILITY_TERA_SHIFT, ABILITY_NONE }, + .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, 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, - .abilities = { ABILITY_TERA_SHELL, ABILITY_NONE }, + .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, 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, - .abilities = { ABILITY_TERAFORM_ZERO, ABILITY_NONE }, + .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, 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 @@ -5772,9 +6727,8 @@ 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, - .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 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/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/daycare.c b/src/daycare.c index cdd9c45a88..6e9304f2a0 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/debug.c b/src/debug.c index 1210d8762d..ea3ffbabb8 100644 --- a/src/debug.c +++ b/src/debug.c @@ -126,9 +126,9 @@ 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_CHECK_EV, - DEBUG_PARTY_MENU_ITEM_CHECK_IV, + DEBUG_PARTY_MENU_ITEM_INFLICT_STATUS1, + DEBUG_PARTY_MENU_ITEM_CHECK_EVS, + DEBUG_PARTY_MENU_ITEM_CHECK_IVS, DEBUG_PARTY_MENU_ITEM_CLEAR_PARTY, }; @@ -391,9 +391,9 @@ 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_CheckEV(u8 taskId); -static void DebugAction_Party_CheckIV(u8 taskId); +static void DebugAction_Party_InflictStatus1(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,9 @@ 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[]; extern const u8 Debug_EventScript_Script_3[]; @@ -548,9 +549,9 @@ 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_CheckEV[] = _("Check EV"); -static const u8 sDebugText_Party_CheckIV[] = _("Check IV"); +static const u8 sDebugText_Party_InflictStatus1[] = _("Inflict Status1"); +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}"); @@ -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_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}, }; 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_EVS] = DebugAction_Party_CheckEVs, + [DEBUG_PARTY_MENU_ITEM_CHECK_IVS] = DebugAction_Party_CheckIVs, + [DEBUG_PARTY_MENU_ITEM_CLEAR_PARTY] = DebugAction_Party_ClearParty, }; static void (*const sDebugMenu_Actions_Scripts[])(u8) = @@ -5084,32 +5085,19 @@ 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) +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/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/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/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/main.c b/src/main.c index c56c796eac..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) @@ -215,15 +212,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/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/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/party_menu.c b/src/party_menu.c index e494e70f66..3de2a7b4c3 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5556,20 +5556,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 @@ -5743,12 +5751,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(); @@ -5756,7 +5772,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/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/pokedex.c b/src/pokedex.c index 74a95aa1d7..02738980dd 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}, {}, }; @@ -4004,7 +4004,8 @@ u8 DisplayCaughtMonDexPage(u16 species, bool32 isShiny, 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) { @@ -4030,7 +4031,7 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId) FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0)); PutWindowTilemap(WIN_INFO); PutWindowTilemap(WIN_FOOTPRINT); - DrawFootprint(WIN_FOOTPRINT, NationalPokedexNumToSpecies(dexNum)); + DrawFootprint(WIN_FOOTPRINT, species); CopyWindowToVram(WIN_FOOTPRINT, COPYWIN_GFX); ResetPaletteFade(); LoadPokedexBgPalette(FALSE); @@ -4047,7 +4048,7 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId) gTasks[taskId].tState++; break; case 4: - spriteId = CreateMonPicSprite(NationalPokedexNumToSpecies(dexNum), FALSE, ((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); @@ -4066,7 +4067,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_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; } diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index 4910fe6e66..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."); @@ -1953,24 +1954,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}, {}, }; @@ -4205,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; } @@ -4364,36 +4365,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 +4379,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 +6564,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: @@ -6673,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 c3959498fa..31c06cc3c6 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -424,23 +424,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" @@ -956,7 +956,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. @@ -1646,7 +1647,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); @@ -4097,7 +4098,7 @@ static u32 GetGMaxTargetSpecies(u32 species) 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); @@ -4391,6 +4392,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++) { @@ -4579,6 +4601,7 @@ u16 NationalToHoennOrder(u16 nationalNum) u16 SpeciesToNationalPokedexNum(u16 species) { + species = SanitizeSpeciesId(species); if (!species) return NATIONAL_DEX_NONE; @@ -5615,7 +5638,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 26ce53cbba..45f5dffbd4 100644 --- a/src/pokemon_debug.c +++ b/src/pokemon_debug.c @@ -1134,7 +1134,7 @@ void CB2_Debug_Pokemon(void) palette = GetMonSpritePalFromSpecies(species, data->isShiny, data->isFemale); 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); @@ -1149,7 +1149,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; @@ -1692,7 +1692,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) palette = GetMonSpritePalFromSpecies(species, data->isShiny, data->isFemale); 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; @@ -1705,7 +1705,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_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/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..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); @@ -4026,7 +4010,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 +4019,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/random.c b/src/random.c index 303bbc9bdf..3ec3638fe1 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\ @@ -90,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) diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index 358e02e5d9..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) @@ -313,6 +317,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 @@ -459,30 +467,54 @@ 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); 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); + } +} diff --git a/src/secret_base.c b/src/secret_base.c index 4c82dafbf1..7e0c1ae107 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/shop.c b/src/shop.c index 8f5c5207bc..e792e41605 100644 --- a/src/shop.c +++ b/src/shop.c @@ -1169,13 +1169,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?"); 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++; 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; } 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/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!"); + } +} diff --git a/test/battle/ability/dauntless_shield.c b/test/battle/ability/dauntless_shield.c index b646d00b0d..f412011c65 100644 --- a/test/battle/ability/dauntless_shield.c +++ b/test/battle/ability/dauntless_shield.c @@ -6,7 +6,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); @@ -22,7 +22,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/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/mirror_armor.c b/test/battle/ability/mirror_armor.c index c8c3c512ba..38ee8dab91 100644 --- a/test/battle/ability/mirror_armor.c +++ b/test/battle/ability/mirror_armor.c @@ -195,3 +195,19 @@ 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") +{ + 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/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/sheer_force.c b/test/battle/ability/sheer_force.c index e50ead4bdb..c144c8596f 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/ability/shield_dust.c b/test/battle/ability/shield_dust.c index cac3dfac4c..0c4ba99a83 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_RAPID_SPIN) == 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_RAPID_SPIN) == 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/ability/tangling_hair.c b/test/battle/ability/tangling_hair.c new file mode 100644 index 0000000000..0dbc0264ce --- /dev/null +++ b/test/battle/ability/tangling_hair.c @@ -0,0 +1,68 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_TACKLE].effect == EFFECT_HIT); + ASSUME(gMovesInfo[MOVE_TACKLE].power > 0); + ASSUME(gMovesInfo[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(gMovesInfo[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(gItemsInfo[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/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); } + } +} 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 a2cd33ed2c..dcbcf8dbec 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); } @@ -179,8 +179,8 @@ AI_SINGLE_BATTLE_TEST("AI chooses moves with secondary effect that have a 100% c PARAMETRIZE { ability = ABILITY_SERENE_GRACE; } GIVEN { - 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/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); 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 4f51395ab1..936a821081 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(MoveHasAdditionalEffect(move, MOVE_EFFECT_PARALYSIS) == TRUE); + PASSES_RANDOMLY(chance, 100, RNG_SECONDARY_EFFECT); GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(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/rage_fist.c b/test/battle/move_effect/rage_fist.c index f96a1253c9..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); } @@ -275,7 +279,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); } 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 1d078ef71e..0ba5e4f65f 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_RAPID_SPIN) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_RAPID_SPIN, MOVE_EFFECT_RAPID_SPIN) == 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_RAPID_SPIN) == TRUE); - ASSUME(MoveHasMoveEffect(MOVE_MORTAL_SPIN, MOVE_EFFECT_POISON) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_MORTAL_SPIN, MOVE_EFFECT_RAPID_SPIN) == 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 43a7a8405c..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(gMovesInfo[MOVE_FLARE_BLITZ].argument == STATUS1_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..97eaa76ad8 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") @@ -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); 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 f93f5d2192..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") @@ -104,7 +104,7 @@ SINGLE_BATTLE_TEST("Upper Hand is boosted by Sheer Force") 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 {