diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml index 9ffdc70fba..8240a56801 100644 --- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml +++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml @@ -23,9 +23,10 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.9.2 (Latest release) + - 1.9.3 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.9.2 - 1.9.1 - 1.9.0 - 1.8.6 diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml index ce50b0bffd..5688f8a7fb 100644 --- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml +++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml @@ -23,9 +23,10 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.9.2 (Latest release) + - 1.9.3 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.9.2 - 1.9.1 - 1.9.0 - 1.8.6 diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml index c78093d60e..add0633d95 100644 --- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml +++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml @@ -23,9 +23,10 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.9.2 (Latest release) + - 1.9.3 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.9.2 - 1.9.1 - 1.9.0 - 1.8.6 diff --git a/README.md b/README.md index 37ea8336b7..427caafd0a 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ pokeemerald-expansion is a decomp hack base project based off pret's [pokeemeral If you use pokeemerald-expansion in your hack, please add RHH (Rom Hacking Hideout) to your credits list. Optionally, you can list the version used, so it can help players know what features to expect. You can phrase it as the following: ``` -Based off RHH's pokeemerald-expansion 1.9.2 https://github.com/rh-hideout/pokeemerald-expansion/ +Based off RHH's pokeemerald-expansion 1.9.3 https://github.com/rh-hideout/pokeemerald-expansion/ ``` ## What features are included? @@ -178,7 +178,7 @@ With this, you'll get the latest version of pokeemerald-expansion, plus a couple - Check your current version. - You can check in the debug menu's `Utilities -> Expansion Version` option. - If the option is not available, you possibly have version 1.6.2 or older. In that case, please check the [changelogs](CHANGELOG.md) to determine your version based on the features available on your repository. -- Once you have your remote set up, run the command `git pull RHH expansion/X.Y.Z`, replacing X, Y and Z with the digits of the respective version you want to update to (eg, to update to 1.9.2, use `git pull RHH expansion/1.9.2`). +- Once you have your remote set up, run the command `git pull RHH expansion/X.Y.Z`, replacing X, Y and Z with the digits of the respective version you want to update to (eg, to update to 1.9.3, use `git pull RHH expansion/1.9.3`). - ***Important:*** If you are several versions behind, we recommend updating one minor version at a time, skipping directly to the latest patch version (eg, 1.5.3 -> 1.6.2 -> 1.7.4 and so on) - Alternatively, you can update to unreleased versions of the expansion. - ***master (stable):*** It contains unreleased **bugfixes** that will come in the next patch version. To merge, use `git pull RHH master`. diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index d45487e644..f533853142 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1731,6 +1731,14 @@ .4byte \jumpInstr .endm + .macro checkpokeflute + callnative BS_CheckPokeFlute + .endm + + .macro waitfanfare + callnative BS_WaitFanfare + .endm + @ various command changed to more readable macros .macro cancelmultiturnmoves battler:req various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index be6c04e32e..b68a570664 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -25,6 +25,7 @@ gBattlescriptsForUsingItem:: .4byte BattleScript_ItemRestoreHP @ EFFECT_ITEM_REVIVE .4byte BattleScript_ItemRestorePP @ EFFECT_ITEM_RESTORE_PP .4byte BattleScript_ItemIncreaseAllStats @ EFFECT_ITEM_INCREASE_ALL_STATS + .4byte BattleScript_UsePokeFlute @ EFFECT_ITEM_USE_POKE_FLUTE .align 2 gBattlescriptsForSafariActions:: @@ -110,6 +111,25 @@ BattleScript_ItemIncreaseStat:: waitmessage B_WAIT_TIME_LONG end +BattleScript_UsePokeFlute:: + checkpokeflute + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 1, BattleScript_PokeFluteWakeUp + printstring STRINGID_POKEFLUTECATCHY + waitmessage B_WAIT_TIME_LONG + goto BattleScript_PokeFluteEnd + +BattleScript_PokeFluteWakeUp:: + printstring STRINGID_POKEFLUTE + waitmessage B_WAIT_TIME_LONG + fanfare MUS_RG_POKE_FLUTE + waitfanfare + printstring STRINGID_MONHEARINGFLUTEAWOKE + waitmessage B_WAIT_TIME_LONG + updatestatusicon BS_PLAYER2 + waitstate +BattleScript_PokeFluteEnd:: + finishaction + BattleScript_ItemSetMist:: call BattleScript_UseItemMessage setmist diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc index e810e354a5..9120787ea9 100644 --- a/data/scripts/cable_club.inc +++ b/data/scripts/cable_club.inc @@ -1258,7 +1258,11 @@ EventScript_CloseMossdeepGameCornerBarrier:: CableClub_OnResume: special InitUnionRoom +.if OW_FLAG_MOVE_UNION_ROOM_CHECK != 0 + return +.else end +.endif MossdeepCity_GameCorner_1F_EventScript_InfoMan2:: lock diff --git a/data/scripts/pkmn_center_nurse.inc b/data/scripts/pkmn_center_nurse.inc index 5cef458749..4aca9d768b 100644 --- a/data/scripts/pkmn_center_nurse.inc +++ b/data/scripts/pkmn_center_nurse.inc @@ -36,6 +36,11 @@ EventScript_PkmnCenterNurse_TakeAndHealPkmn:: applymovement VAR_0x800B, Movement_PkmnCenterNurse_Turn @ Changed from Common_Movement_WalkInPlaceFasterLeft to force the follower to enter their Poké Ball waitmovement 0 dofieldeffect FLDEFF_POKECENTER_HEAL +.if OW_UNION_DISABLE_CHECK == FALSE && OW_FLAG_MOVE_UNION_ROOM_CHECK != 0 + setflag OW_FLAG_MOVE_UNION_ROOM_CHECK + call CableClub_OnResume + clearflag OW_FLAG_MOVE_UNION_ROOM_CHECK +.endif waitfieldeffect FLDEFF_POKECENTER_HEAL applymovement VAR_0x800B, Common_Movement_WalkInPlaceFasterDown waitmovement 0 diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index faeb069783..ac4698fdc3 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -5,20 +5,21 @@ - [Setting up WSL1 (Legacy Portion)](./legacy_WSL1_INSTALL.md) - [Run documentation site locally](local_mdbook/index.md) - [Ubuntu WSL1/WSL2](local_mdbook/ubuntu_WSL.md) -- [AI Flags](./ai_flags.md) - [Tutorials]() - - [How to add new AI Flags](./ai_logic.md) - - [How to add new battle script commands/macros](./how_to_battle_script_command_macro.md) - - [How to add a new move](./how_to_new_move.md) - - [How to add a new trainer class](./how_to_trainer_class.md) + - [What are AI Flags?](tutorials/ai_flags.md) + - [How to add new AI Flags](tutorials/ai_logic.md) + - [How to add new battle script commands/macros](tutorials/how_to_battle_script_command_macro.md) + - [How to add a new move](tutorials/how_to_new_move.md) + - [How to add a new trainer class](tutorials/how_to_trainer_class.md) - [How to add a new Pokémon]() - - [v1.9.x](./how_to_new_pokemon_1_9_0.md) - - [v1.8.x](./how_to_new_pokemon_1_8_0.md) - - [v1.7.x](./how_to_new_pokemon_1_7_0.md) - - [v1.6.x](./how_to_new_pokemon_1_6_0.md) - - [How to use the Testing System](./how_to_testing_system.md) + - [v1.9.x](tutorials/how_to_new_pokemon_1_9_0.md) + - [v1.8.x](tutorials/how_to_new_pokemon_1_8_0.md) + - [v1.7.x](tutorials/how_to_new_pokemon_1_7_0.md) + - [v1.6.x](tutorials/how_to_new_pokemon_1_6_0.md) + - [How to use the Testing System](tutorials/how_to_testing_system.md) - [Changelog](./CHANGELOG.md) - [1.9.x]() + - [Version 1.9.3](changelogs/1.9.x/1.9.3.md) - [Version 1.9.2](changelogs/1.9.x/1.9.2.md) - [Version 1.9.1](changelogs/1.9.x/1.9.1.md) - [Version 1.9.0](changelogs/1.9.x/1.9.0.md) @@ -30,43 +31,36 @@ - [Version 1.8.2](changelogs/1.8.x/1.8.2.md) - [Version 1.8.1](changelogs/1.8.x/1.8.1.md) - [Version 1.8.0](changelogs/1.8.x/1.8.0.md) - - [1.7.x]() - [Version 1.7.4](changelogs/1.7.x/1.7.4.md) - [Version 1.7.3](changelogs/1.7.x/1.7.3.md) - [Version 1.7.2](changelogs/1.7.x/1.7.2.md) - [Version 1.7.1](changelogs/1.7.x/1.7.1.md) - [Version 1.7.0](changelogs/1.7.x/1.7.0.md) - - [1.6.x]() - [Version 1.6.2](changelogs/1.6.x/1.6.2.md) - [Version 1.6.1](changelogs/1.6.x/1.6.1.md) - [Version 1.6.0](changelogs/1.6.x/1.6.0.md) - - [1.5.x]() - [Version 1.5.3](changelogs/1.5.x/1.5.3.md) - [Version 1.5.2](changelogs/1.5.x/1.5.2.md) - [Version 1.5.1](changelogs/1.5.x/1.5.1.md) - [Version 1.5.0](changelogs/1.5.x/1.5.0.md) - - [1.4.x]() - [Version 1.4.3](changelogs/1.4.x/1.4.3.md) - [Version 1.4.2](changelogs/1.4.x/1.4.2.md) - [Version 1.4.1](changelogs/1.4.x/1.4.1.md) - [Version 1.4.0](changelogs/1.4.x/1.4.0.md) - - [1.3.x]() - [Version 1.3.0](changelogs/1.3.x/1.3.0.md) - - [1.2.x]() - [Version 1.2.0](changelogs/1.2.x/1.2.0.md) - - [1.1.x]() - [Version 1.1.1](changelogs/1.1.x/1.1.1.md) - [Version 1.1.0](changelogs/1.1.x/1.1.0.md) - - [1.0.x]() - [Version 1.0.0](changelogs/1.0.x/1.0.0.md) - - [Pre-1.0.x]() - [Version 0.9.0](changelogs/0.9.x/0.9.0.md) +- [Team Procedures]() + - [How to make an Expansion version](team_procedures/expansion_versions.md) diff --git a/docs/changelogs/1.9.x/1.9.3.md b/docs/changelogs/1.9.x/1.9.3.md new file mode 100644 index 0000000000..2fe981435e --- /dev/null +++ b/docs/changelogs/1.9.x/1.9.3.md @@ -0,0 +1,106 @@ +# Version 1.9.3 + +```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.9.3`. +``` + +## 🌋 *REFACTORS* 🌋 +📜 = Uses a migration script. +* Converted `settotemboost` command to `callnative` in [#5418](https://github.com/rh-hideout/pokeemerald-expansion/pull/5418) +* Removed unused `RESOURCE_FLAG_TRACED` in [#5430](https://github.com/rh-hideout/pokeemerald-expansion/pull/5430) +* Changed `MOVEEND_` defines to an enum in [#5449](https://github.com/rh-hideout/pokeemerald-expansion/pull/5449) + +## ✨ Feature Branches ✨ +### ***merrp/aarant's Followers*** +#### Fixed +* Fixed Expansion-exclusive issue that caused trainers to not play their "pointing" animation when Followers were out during battle intro by @kittenchilly in [#5406](https://github.com/rh-hideout/pokeemerald-expansion/pull/5406) + +## ⚔️ Battle General ⚔️ ## +### Changed +* Improved Mega evolution animation to make it a little smoother by @kleenxfeu in [#4816](https://github.com/rh-hideout/pokeemerald-expansion/pull/4816) +### Fixed +* Fixed affection check for exp multiplier by @Bassoonian in [#5421](https://github.com/rh-hideout/pokeemerald-expansion/pull/5421) +* Fixed multiple Primal Reversions not occurring if multiple battlers fainted on the previous turn by @PhallenTree in [#5430](https://github.com/rh-hideout/pokeemerald-expansion/pull/5430) + +## 🤹 Moves 🤹 +### Added +* Added missing `B_AFTER_YOU_TURN_ORDER` config by @PhallenTree in [#5400](https://github.com/rh-hideout/pokeemerald-expansion/pull/5400) + * Gen 5-7: After You fails if the order remains the same after using After You. + * Gen 8+: After You no longer fails if the turn order remains the same after using After You. +* Added missing `B_QUASH_TURN_ORDER` config by @PhallenTree in [#5400](https://github.com/rh-hideout/pokeemerald-expansion/pull/5400) + * Gen 5-7: If multiple Pokémon are affected by Quash, they move in the order they were affected by Quash. + * Gen 8+: If multiple Pokémon are affected by Quash, they now move fastest to slowest. +* Added missing updated `B_UPDATED_CONVERSION_2` by @wiz1989 in [#5453](https://github.com/rh-hideout/pokeemerald-expansion/pull/5453) + * Gens 2-4: Conversion 2 changes the user's type to a type that is resistant/immune to the last move the user was hit by. + * Gen 5+: Conversion 2 changes the user's type to a type that resists the last move used by the selected target. +### Fixed +* Fixed Scale Shot corrupting the move used on the next turn by @AlexOn1ine in [#5397](https://github.com/rh-hideout/pokeemerald-expansion/pull/5397) +* Fixed Growth's description not being updated based on `B_GROWTH_STAT_RAISE` by @nescioquid in [#5398](https://github.com/rh-hideout/pokeemerald-expansion/pull/5398) +* Fixed Quash not updating the battlers' actions correctly by @PhallenTree in [#5400](https://github.com/rh-hideout/pokeemerald-expansion/pull/5400) + * Cleanup by @PhallenTree in [#5430](https://github.com/rh-hideout/pokeemerald-expansion/pull/5430) +* Fixed Snatched Swallow not recovering HP if the Snatcher is not under the effect of Stockpile (should still heal) by @PhallenTree in [#5430](https://github.com/rh-hideout/pokeemerald-expansion/pull/5430) +* Fixed Counter users being damaged by Spiky Shield by @AlexOn1ine in [#5402](https://github.com/rh-hideout/pokeemerald-expansion/pull/5402) +* Fixed Electrified Dragon Darts not correctly avoiding targets with ability immunity (Volt Absorb, Motor Drive) by @PhallenTree in [#5430](https://github.com/rh-hideout/pokeemerald-expansion/pull/5430) +* Fixed Trace not activating a switch-in ability it traces (eg. Intimidate) by @PhallenTree in [#5430](https://github.com/rh-hideout/pokeemerald-expansion/pull/5430) + * Removed unused `RESOURCE_FLAG_TRACED`. +* Fixed recoil damage not triggering healing berries by @AlexOn1ine in [#5449](https://github.com/rh-hideout/pokeemerald-expansion/pull/5449) + * Also changed `MOVEEND_` defines to an enum. +## 🎭 Abilities 🎭 +### Fixed +* Fixed Dancer activating even if the dance move is stolen by Snatch by @PhallenTree in [#5430](https://github.com/rh-hideout/pokeemerald-expansion/pull/5430) +* Fixed Ability popup when multiple Pokémon faint at the same time by @PhallenTree in [#5430](https://github.com/rh-hideout/pokeemerald-expansion/pull/5430) +* Multiple ability fixes by @PhallenTree in [#5447](https://github.com/rh-hideout/pokeemerald-expansion/pull/5447) + * Fixed Protosynthesis/Quark Drive sometimes not activating ability popup despite still gaining the boost as they should. + * Fixed Protosynthesis/Quark Drive activating on Transformed battlers. + * Fixed Protosynthesis activating despite Cloud Nine being present on the field. + * Fixed Quark Drive not activating if the battler is not grounded. + * Fixed Protosynthesis/Quark Drive/Beast Boost stat raise priority when multiple stats are tied for the highest one. + * Before: `Attack, Defense, Speed, Special Attack, Special Defense`. + * After: `Attack, Defense, Special Attack, Special Defense, Speed`. + +## 🧶 Items 🧶 +### Fixed +* Fixed Ogerpon's Masks not increasing the power of moves by 20% by @AlexOn1ine in [#5391](https://github.com/rh-hideout/pokeemerald-expansion/pull/5391) +* Fixed Jubilife Muffin not working by @kittenchilly in [#5444](https://github.com/rh-hideout/pokeemerald-expansion/pull/5444) +* Fixed duplicating flute bug in double battles by @ghoulslash in [#5436](https://github.com/rh-hideout/pokeemerald-expansion/pull/5436) + +## 🤖 Battle AI 🤖 +### Fixed +* Fixed Trick/Switcheroo giving AI score even if the opponent has no held item by @kittenchilly in [#5412](https://github.com/rh-hideout/pokeemerald-expansion/pull/5412) +* Various AI fixes in `AI_CalcMoveEffectScore` by @ghoulslash in [#5474](https://github.com/rh-hideout/pokeemerald-expansion/pull/5474) + * Missing break from `EFFECT_ABSORB` switch case. + * Using last used move for Mirror Move instead of predicted move. + +## 🧹 Other Cleanup 🧹 +### Changed +* Converted `settotemboost` command to `callnative` by @ghoulslash in [#5418](https://github.com/rh-hideout/pokeemerald-expansion/pull/5418) +* Removed trailing whitespace by @kittenchilly in [#5455](https://github.com/rh-hideout/pokeemerald-expansion/pull/5455) +* Removed binary match workaround for Rayquaza's tail in Sootopolis' cutscene by @hedara90 in https://github.com/rh-hideout/pokeemerald-expansion/pull/5480 +### Fixed +* Fixed potential uninitialized behavior in `ChangeOrderTargetAfterAttacker` by @AlexOn1ine in [#5393](https://github.com/rh-hideout/pokeemerald-expansion/pull/5393) +* Fallback on default BW map pop-up theme to reduce potential for error by @ravepossum in [#5392](https://github.com/rh-hideout/pokeemerald-expansion/pull/5392) +* Multiple typo fixes by @nescioquid in [#5398](https://github.com/rh-hideout/pokeemerald-expansion/pull/5398) +* VS Seeker documentation fix by @Bassoonian in [#5415](https://github.com/rh-hideout/pokeemerald-expansion/pull/5415) + +## 🧪 Test Runner 🧪 +### Added +* Added missing After You and Quash tests by @PhallenTree in [#5400](https://github.com/rh-hideout/pokeemerald-expansion/pull/5400) +### Changed +* Improved Tangling Hair test to make sure that chained effects do not overwrite relevant battler IDs by @ghoulslash in [#5423](https://github.com/rh-hideout/pokeemerald-expansion/pull/5423) +* Improved Full Heal item tests by @kittenchilly in [#5444](https://github.com/rh-hideout/pokeemerald-expansion/pull/5444) +### Fixed +* Fixed Wake-Up Slap test typo by @Pawkkie in [#5442](https://github.com/rh-hideout/pokeemerald-expansion/pull/5442) +* Fixed test assumption fail summary fields using more memory than needed by @AsparagusEduardo in [#5443](https://github.com/rh-hideout/pokeemerald-expansion/pull/5443) +* Fixed issue with `PASSES_RANDOMLY` in AI tests by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/5486 + +## New Contributors +* @nescioquid made their first contribution in [#5398](https://github.com/rh-hideout/pokeemerald-expansion/pull/5398) +* @kleenxfeu made their first contribution in [#4816](https://github.com/rh-hideout/pokeemerald-expansion/pull/4816) +* @wiz1989 made their first contribution in [#5453](https://github.com/rh-hideout/pokeemerald-expansion/pull/5453) + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.9.2...expansion/1.9.3 + + + diff --git a/docs/team_procedures/expansion_versions.md b/docs/team_procedures/expansion_versions.md new file mode 100644 index 0000000000..b53631bfa5 --- /dev/null +++ b/docs/team_procedures/expansion_versions.md @@ -0,0 +1,187 @@ +# How to make an Expansion version + +*If you need instructions on how to release a new Expansion version, check out the enclosed instruction book. - AsparagusEduardo* + +## 1.- Autogenerating a changelog for the `master` branch. + *Requires Write access to the repo.* + +If the changelog you're making is for a minor version (Eg. 1.3.0), make sure to sync the `upcoming` branch with `master` before starting. Keep in mind that if there are unreleased changes in `master`, they should be made into a patch version released alongside minor version. +- Go to https://github.com/rh-hideout/pokeemerald-expansion/releases. +- Press the option "Draft a new release". +- Fill the following fields: + - In "Choose a tag", write the name of the tag for the desired release number. + - Eg. for version 1.2.3, write `expansion/1.2.3`. ***It cannot be an existing tag.*** + - In "Target" choose `master`. + - In "Previous tag", select the latest version released. +- Press "Generate release notes". This will fill the description with a list of PRs made to the `master` branch since the lastest release. +- You may copy the contents to your editor of choice for step 2. +- If the changelog you're making is for a minor version (Eg. 1.3.0), proceed to step 1B, without closing the current window. + +## 1B.- Autogenerating a changelog for the `upcoming` branch. +- Delete the text and title generated in the site. +- Change "Target" to `upcoming`. +- Press "Generate release notes". This will autogenerate the description with changes from both branches, as they've been merged. +- Use a comparison tool to remove any shared PRs from `master`. (I use [WinMerge](https://winmerge.org/) for this). + - Also remove any shared "New Contributor" entries. +- You should now have a text that only contains PRs made to `upcoming`. + +## 2.- Sorting PRs in the changelog +- Copy the `docs/changelogs/template.md` file into a new file with the corresponding version for file and folder. Eg, for 1.2.3, you copy the file into `docs/changelogs/1.2.x/1.2.3.md`. +- Use the following Regex to adapt all PR links into the format currently used: + - Search + ``` + in https://github\.com/rh-hideout/pokeemerald-expansion/pull/(\d+) + ``` + - Replace + ``` + in [#$1](https://github.com/rh-hideout/pokeemerald-expansion/pull/$1) + ``` +- At the bottom of the template, replace the "____" in `` with the number of the last PR in your autogenerated changelog. This will help you keep track of any new PRs that are merged in before you're finished with your changelog. +- Sort the PRs by the categories present in the PR taking the following considerations: + - Keep the language of the changelog as newbie friendly as possible, explaining how the PR affects them. + - The format of the main line is the following: + ``` + {{Description of the change}} by @{{GitHub user}} in {{PR link}} + ``` + - If a PR reverted by a different PR, both should be removed. + - If the reverted PR's contents are then re-added it should be treated as if it's the first time added, with all the proper documentation needed. + - If a PR's content fits into multiple categories, like fixing two unrelated Ability and Move effects, you may duplicate the PR line and put it in both categories, changing the description of it accordingly. + - When refering to an element present in the code, always enclose them with ` to easily tell them apart. Eg: + - "Converted `settotemboost` command to `callnative`" + - "Changed `MOVEEND_` defines to an enum" + - A PR's technical changes that may conflict with user changes should have an entry in the "**REFACTORS**" section at the beginning of the changelog. Any of these changes that requires a migration script should also be marked as such by appending the corresponding emoji listed there. The section should include, but it's not limited to: + - Massive data format and/or structuring changes. + - Converting defines to enums. + - Renaming structs and/or their fields. + - Removing enums/defines/structs. + - For fixes: + - Once on their respective categories, if a PR fixes multiple issues at once in that category, you may make a sublist of those issues to properly detail each one and avoid just writing "Fixed multiple ability issues" or an overly verbose sentence for the PR. + - Try to fit the contents of a PR as a single sentence in past tense that. + - ***DON'T*** write something like "Fixed Parental Bond", as this doesn't explain *what* was fixed in Parental Bond. Instead, write something like "Fixed Parental Bond not affecting Snore". + - For new configs: + - Add the name of the config as part of the sentence, with subitems explaining what they do based on their generation if it's a generational config. Eg: + ``` + * Added missing `B_AFTER_YOU_TURN_ORDER` config by @PhallenTree in [#5400](https://github.com/rh-hideout/pokeemerald-expansion/pull/5400) + * Gen 5-7: After You fails if the order remains the same after using After You. + * Gen 8+: After You no longer fails if the turn order remains the same after using After You. + ``` + - For other new features: + - Explain how to use the feature completely, listing all its features as needed. For now, this is the only source of documentation for these features, so it's important to be thorough. + +# 3.- Preparing the code for the new version +- Search for all non-changelog instances of the previous released version and update them to the newer version. As of writing, it's these files: + - `README.md`: + ```diff + -Based off RHH's pokeemerald-expansion 1.2.2 https://github.com/rh-hideout/pokeemerald-expansion/ + +Based off RHH's pokeemerald-expansion 1.2.3 https://github.com/rh-hideout/pokeemerald-expansion/ + ``` + ```diff + -- Once you have your remote set up, run the command `git pull RHH expansion/X.Y.Z`, replacing X, Y and Z with the digits of the respective version you want to update to (eg, to update to 1.2.2, use `git pull RHH expansion/1.2.2`). + +- Once you have your remote set up, run the command `git pull RHH expansion/X.Y.Z`, replacing X, Y and Z with the digits of the respective version you want to update to (eg, to update to 1.2.3, use `git pull RHH expansion/1.2.3`). + ``` + - `.github/ISSUE_TEMPLATE/*.yaml` + - Patch version: + ```diff + options: + - 1.2.2 (Latest release) + + 1.2.3 (Latest release) + master (default, unreleased bugfixes) + upcoming (Edge) + + 1.2.2 + 1.2.1 + 1.2.0 + ``` + - Minor Version: + ```diff + options: + - 1.2.2 (Latest release) + + 1.2.3 (Latest release) + master (default, unreleased bugfixes) + upcoming (Edge) + + 1.2.2 + 1.2.1 + 1.2.0 + - 1.1.6 + - 1.1.5 + - 1.1.4 + - 1.1.3 + - 1.1.2 + - 1.1.1 + - 1.1.0 + - pre-1.1.0 + + pre-1.2.0 + ``` + - `docs/SUMMARY.md`: + - Patch version: + ```diff + [Changelog](./CHANGELOG.md) + - [1.2.x]() + + - [Version 1.2.3](changelogs/1.2.x/1.2.3.md) + - [Version 1.2.2](changelogs/1.2.x/1.2.2.md) + - [Version 1.2.1](changelogs/1.2.x/1.2.1.md) + - [Version 1.2.0](changelogs/1.2.x/1.2.0.md) + ``` + - Minor version: + ```diff + [Changelog](./CHANGELOG.md) + + - [1.3.x]() + + - [Version 1.3.0](changelogs/1.3.x/1.3.0.md) + - [1.2.x]() + - [Version 1.2.2](changelogs/1.2.x/1.2.2.md) + - [Version 1.2.1](changelogs/1.2.x/1.2.1.md) + - [Version 1.2.0](changelogs/1.2.x/1.2.0.md) + ``` + - `include/constants/expansion.h`: + - The defines should already have the version we're targetting as part of the previous changelog process. + ```diff + -// Last version: 1.2.2 + +// Last version: 1.2.3 + #define EXPANSION_VERSION_MAJOR 1 + #define EXPANSION_VERSION_MINOR 2 + #define EXPANSION_VERSION_PATCH 3 + + // FALSE if this this version of Expansion is not a tagged commit, i.e. + // it contains unreleased changes. + -#define EXPANSION_TAGGED_RELEASE FALSE + +#define EXPANSION_TAGGED_RELEASE TRUE + ``` +# 4.- Make a PR with the changes listed in Steps 2/3. +- Also post the changelog for feedback from contributors and maintainers. +- Once all feedback has been addresses, you may merge. +# 5.- Create the release on GitHub +- Copy the contents of your manual changelog into the description of your release. +- Modify the title to "Version {{version}}", eg. "Version 1.2.3" +- Be sure to have the "Set as the latest release" option set, +- Press "Publish Release". +- This will create a new tag in the repo that users can pull from like they can with branches. +# 6.- Post-release handling +- ***DON'T ACCEPT ANY NEW PRs YET.*** We have to prepare for the next cycle first. +- Go to `include/constants/expansion.h` and merge the following changes to the repo (PR or direct commit, doesn't matter much): + - Patch version: + ```diff + // Last version: 1.2.3 + #define EXPANSION_VERSION_MAJOR 1 + #define EXPANSION_VERSION_MINOR 2 + - #define EXPANSION_VERSION_PATCH 3 + + #define EXPANSION_VERSION_PATCH 4 + + // FALSE if this this version of Expansion is not a tagged commit, i.e. + // it contains unreleased changes. + -#define EXPANSION_TAGGED_RELEASE TRUE + +#define EXPANSION_TAGGED_RELEASE FALSE + ``` +With this, the repo is ready again to receive new PRs. + +# Now you're ready to make the announcements! +- We tend to post on the following Discord Servers: + - [RH-Hideout](https://discord.gg/6CzjAG6GZk) + - Requires role to post in #announcements channel. + - [Team Aqua's Hideout](https://discord.gg/team-aqua-s-hideout-976252009114140682) + - Requires role to post in #romhacking-updates channel. + - [What a Hack!](https://discord.gg/whack-a-hack-292436944670162955) + - Announcements are done in Spanish, but not the changelogs themselves. + - Requires role to ping "Decompilaciones" role. + - [pret](https://discord.gg/R4c3FA95dP) + - [PokéCommunity](https://discord.gg/pokecommunity) + +You can make a highlight of changes in the announcement itself, but it's not needed. (I also like using Discord emotes to highlight certain features during announcements, but gain, it's not needed). diff --git a/docs/ai_flags.md b/docs/tutorials/ai_flags.md similarity index 100% rename from docs/ai_flags.md rename to docs/tutorials/ai_flags.md diff --git a/docs/ai_logic.md b/docs/tutorials/ai_logic.md similarity index 100% rename from docs/ai_logic.md rename to docs/tutorials/ai_logic.md diff --git a/docs/how_to_battle_script_command_macro.md b/docs/tutorials/how_to_battle_script_command_macro.md similarity index 100% rename from docs/how_to_battle_script_command_macro.md rename to docs/tutorials/how_to_battle_script_command_macro.md diff --git a/docs/how_to_new_move.md b/docs/tutorials/how_to_new_move.md similarity index 100% rename from docs/how_to_new_move.md rename to docs/tutorials/how_to_new_move.md diff --git a/docs/how_to_new_pokemon_1_6_0.md b/docs/tutorials/how_to_new_pokemon_1_6_0.md similarity index 100% rename from docs/how_to_new_pokemon_1_6_0.md rename to docs/tutorials/how_to_new_pokemon_1_6_0.md diff --git a/docs/how_to_new_pokemon_1_7_0.md b/docs/tutorials/how_to_new_pokemon_1_7_0.md similarity index 100% rename from docs/how_to_new_pokemon_1_7_0.md rename to docs/tutorials/how_to_new_pokemon_1_7_0.md diff --git a/docs/how_to_new_pokemon_1_8_0.md b/docs/tutorials/how_to_new_pokemon_1_8_0.md similarity index 100% rename from docs/how_to_new_pokemon_1_8_0.md rename to docs/tutorials/how_to_new_pokemon_1_8_0.md diff --git a/docs/how_to_new_pokemon_1_9_0.md b/docs/tutorials/how_to_new_pokemon_1_9_0.md similarity index 100% rename from docs/how_to_new_pokemon_1_9_0.md rename to docs/tutorials/how_to_new_pokemon_1_9_0.md diff --git a/docs/how_to_testing_system.md b/docs/tutorials/how_to_testing_system.md similarity index 100% rename from docs/how_to_testing_system.md rename to docs/tutorials/how_to_testing_system.md diff --git a/docs/how_to_trainer_class.md b/docs/tutorials/how_to_trainer_class.md similarity index 100% rename from docs/how_to_trainer_class.md rename to docs/tutorials/how_to_trainer_class.md diff --git a/graphics/pokemon/abomasnow/overworldf.png b/graphics/pokemon/abomasnow/overworldf.png new file mode 100644 index 0000000000..d6f07b6323 Binary files /dev/null and b/graphics/pokemon/abomasnow/overworldf.png differ diff --git a/graphics/pokemon/aipom/overworldf.png b/graphics/pokemon/aipom/overworldf.png new file mode 100644 index 0000000000..fe6424c398 Binary files /dev/null and b/graphics/pokemon/aipom/overworldf.png differ diff --git a/graphics/pokemon/alakazam/overworldf.png b/graphics/pokemon/alakazam/overworldf.png new file mode 100644 index 0000000000..02b76111fd Binary files /dev/null and b/graphics/pokemon/alakazam/overworldf.png differ diff --git a/graphics/pokemon/ambipom/overworld.png b/graphics/pokemon/ambipom/overworld.png index 1f47b4d3e1..24389b6a9a 100644 Binary files a/graphics/pokemon/ambipom/overworld.png and b/graphics/pokemon/ambipom/overworld.png differ diff --git a/graphics/pokemon/ambipom/overworldf.png b/graphics/pokemon/ambipom/overworldf.png new file mode 100644 index 0000000000..1f47b4d3e1 Binary files /dev/null and b/graphics/pokemon/ambipom/overworldf.png differ diff --git a/graphics/pokemon/beautifly/overworld.png b/graphics/pokemon/beautifly/overworld.png index 36c31fed27..d0727723a9 100644 Binary files a/graphics/pokemon/beautifly/overworld.png and b/graphics/pokemon/beautifly/overworld.png differ diff --git a/graphics/pokemon/beautifly/overworldf.png b/graphics/pokemon/beautifly/overworldf.png new file mode 100644 index 0000000000..36c31fed27 Binary files /dev/null and b/graphics/pokemon/beautifly/overworldf.png differ diff --git a/graphics/pokemon/bibarel/overworld.png b/graphics/pokemon/bibarel/overworld.png index f5751466a9..6a3a4aace4 100644 Binary files a/graphics/pokemon/bibarel/overworld.png and b/graphics/pokemon/bibarel/overworld.png differ diff --git a/graphics/pokemon/bibarel/overworldf.png b/graphics/pokemon/bibarel/overworldf.png new file mode 100644 index 0000000000..f5751466a9 Binary files /dev/null and b/graphics/pokemon/bibarel/overworldf.png differ diff --git a/graphics/pokemon/bidoof/overworld.png b/graphics/pokemon/bidoof/overworld.png index 9fe63802b4..756f2a8dcf 100644 Binary files a/graphics/pokemon/bidoof/overworld.png and b/graphics/pokemon/bidoof/overworld.png differ diff --git a/graphics/pokemon/bidoof/overworldf.png b/graphics/pokemon/bidoof/overworldf.png new file mode 100644 index 0000000000..9fe63802b4 Binary files /dev/null and b/graphics/pokemon/bidoof/overworldf.png differ diff --git a/graphics/pokemon/blaziken/overworldf.png b/graphics/pokemon/blaziken/overworldf.png new file mode 100644 index 0000000000..951d9bce61 Binary files /dev/null and b/graphics/pokemon/blaziken/overworldf.png differ diff --git a/graphics/pokemon/buizel/overworldf.png b/graphics/pokemon/buizel/overworldf.png new file mode 100644 index 0000000000..e41623536d Binary files /dev/null and b/graphics/pokemon/buizel/overworldf.png differ diff --git a/graphics/pokemon/butterfree/overworld.png b/graphics/pokemon/butterfree/overworld.png index c29f337bad..f7edb44942 100644 Binary files a/graphics/pokemon/butterfree/overworld.png and b/graphics/pokemon/butterfree/overworld.png differ diff --git a/graphics/pokemon/butterfree/overworld_normal.pal b/graphics/pokemon/butterfree/overworld_normal.pal index 1ce5a15e5d..4756c9d723 100644 --- a/graphics/pokemon/butterfree/overworld_normal.pal +++ b/graphics/pokemon/butterfree/overworld_normal.pal @@ -15,5 +15,5 @@ JASC-PAL 104 200 248 80 144 224 48 64 144 -0 0 0 +73 73 73 0 0 0 diff --git a/graphics/pokemon/butterfree/overworld_shiny.pal b/graphics/pokemon/butterfree/overworld_shiny.pal index 222adecce1..1db4b73433 100644 --- a/graphics/pokemon/butterfree/overworld_shiny.pal +++ b/graphics/pokemon/butterfree/overworld_shiny.pal @@ -15,5 +15,5 @@ JASC-PAL 248 112 136 176 72 96 112 40 56 -0 0 0 +73 73 73 0 0 0 diff --git a/graphics/pokemon/butterfree/overworldf.png b/graphics/pokemon/butterfree/overworldf.png new file mode 100644 index 0000000000..4402aaf263 Binary files /dev/null and b/graphics/pokemon/butterfree/overworldf.png differ diff --git a/graphics/pokemon/cacturne/overworldf.png b/graphics/pokemon/cacturne/overworldf.png new file mode 100644 index 0000000000..cceeea05fb Binary files /dev/null and b/graphics/pokemon/cacturne/overworldf.png differ diff --git a/graphics/pokemon/camerupt/overworldf.png b/graphics/pokemon/camerupt/overworldf.png new file mode 100644 index 0000000000..8adc7d5c40 Binary files /dev/null and b/graphics/pokemon/camerupt/overworldf.png differ diff --git a/graphics/pokemon/combee/followerf.png b/graphics/pokemon/combee/followerf.png deleted file mode 100644 index e39109ce82..0000000000 Binary files a/graphics/pokemon/combee/followerf.png and /dev/null differ diff --git a/graphics/pokemon/combee/overworld.png b/graphics/pokemon/combee/overworld.png index 459538f5f0..b0395e4fa8 100644 Binary files a/graphics/pokemon/combee/overworld.png and b/graphics/pokemon/combee/overworld.png differ diff --git a/graphics/pokemon/combee/overworld_normal.pal b/graphics/pokemon/combee/overworld_normal.pal index ae404c0112..d2eb1abe83 100644 --- a/graphics/pokemon/combee/overworld_normal.pal +++ b/graphics/pokemon/combee/overworld_normal.pal @@ -14,6 +14,6 @@ JASC-PAL 200 104 40 152 184 232 248 216 120 -0 0 0 +160 32 56 0 0 0 0 0 0 diff --git a/graphics/pokemon/combee/overworld_shiny.pal b/graphics/pokemon/combee/overworld_shiny.pal index 01483e8cd6..8db856dbe4 100644 --- a/graphics/pokemon/combee/overworld_shiny.pal +++ b/graphics/pokemon/combee/overworld_shiny.pal @@ -14,6 +14,6 @@ JASC-PAL 200 104 40 152 184 232 248 176 128 -0 0 0 +160 32 56 0 0 0 0 0 0 diff --git a/graphics/pokemon/combee/overworldf.png b/graphics/pokemon/combee/overworldf.png new file mode 100644 index 0000000000..de523067d8 Binary files /dev/null and b/graphics/pokemon/combee/overworldf.png differ diff --git a/graphics/pokemon/combusken/overworld.png b/graphics/pokemon/combusken/overworld.png index b4302f91aa..8b4e71d03a 100644 Binary files a/graphics/pokemon/combusken/overworld.png and b/graphics/pokemon/combusken/overworld.png differ diff --git a/graphics/pokemon/combusken/overworldf.png b/graphics/pokemon/combusken/overworldf.png new file mode 100644 index 0000000000..b4302f91aa Binary files /dev/null and b/graphics/pokemon/combusken/overworldf.png differ diff --git a/graphics/pokemon/croagunk/overworldf.png b/graphics/pokemon/croagunk/overworldf.png new file mode 100644 index 0000000000..feeb323df1 Binary files /dev/null and b/graphics/pokemon/croagunk/overworldf.png differ diff --git a/graphics/pokemon/dodrio/overworldf.png b/graphics/pokemon/dodrio/overworldf.png new file mode 100644 index 0000000000..678d8546a1 Binary files /dev/null and b/graphics/pokemon/dodrio/overworldf.png differ diff --git a/graphics/pokemon/doduo/overworldf.png b/graphics/pokemon/doduo/overworldf.png new file mode 100644 index 0000000000..8639a0c77b Binary files /dev/null and b/graphics/pokemon/doduo/overworldf.png differ diff --git a/graphics/pokemon/donphan/overworldf.png b/graphics/pokemon/donphan/overworldf.png new file mode 100644 index 0000000000..709d1cbbd3 Binary files /dev/null and b/graphics/pokemon/donphan/overworldf.png differ diff --git a/graphics/pokemon/dustox/overworldf.png b/graphics/pokemon/dustox/overworldf.png new file mode 100644 index 0000000000..a92edca30b Binary files /dev/null and b/graphics/pokemon/dustox/overworldf.png differ diff --git a/graphics/pokemon/eevee/overworldf.png b/graphics/pokemon/eevee/overworldf.png new file mode 100644 index 0000000000..4fe402bbe8 Binary files /dev/null and b/graphics/pokemon/eevee/overworldf.png differ diff --git a/graphics/pokemon/finneon/overworldf.png b/graphics/pokemon/finneon/overworldf.png new file mode 100644 index 0000000000..53aa2a1a12 Binary files /dev/null and b/graphics/pokemon/finneon/overworldf.png differ diff --git a/graphics/pokemon/floatzel/overworldf.png b/graphics/pokemon/floatzel/overworldf.png new file mode 100644 index 0000000000..bb4483fc55 Binary files /dev/null and b/graphics/pokemon/floatzel/overworldf.png differ diff --git a/graphics/pokemon/frillish/overworld_normalf.pal b/graphics/pokemon/frillish/overworld_normalf.pal new file mode 100644 index 0000000000..dbe974dc05 --- /dev/null +++ b/graphics/pokemon/frillish/overworld_normalf.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +184 128 160 +140 83 98 +208 176 184 +248 216 224 +248 176 208 +120 56 80 +11 11 11 +229 229 247 +168 48 64 +88 160 192 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/frillish/overworld_shinyf.pal b/graphics/pokemon/frillish/overworld_shinyf.pal new file mode 100644 index 0000000000..271de05df9 --- /dev/null +++ b/graphics/pokemon/frillish/overworld_shinyf.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +192 120 120 +120 56 80 +208 176 232 +232 224 248 +248 152 152 +120 56 80 +11 11 11 +248 248 248 +128 24 136 +72 152 136 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/frillish/followerf.png b/graphics/pokemon/frillish/overworldf.png similarity index 100% rename from graphics/pokemon/frillish/followerf.png rename to graphics/pokemon/frillish/overworldf.png diff --git a/graphics/pokemon/gabite/overworldf.png b/graphics/pokemon/gabite/overworldf.png new file mode 100644 index 0000000000..e3c5f2892d Binary files /dev/null and b/graphics/pokemon/gabite/overworldf.png differ diff --git a/graphics/pokemon/garchomp/overworldf.png b/graphics/pokemon/garchomp/overworldf.png new file mode 100644 index 0000000000..3d66472a65 Binary files /dev/null and b/graphics/pokemon/garchomp/overworldf.png differ diff --git a/graphics/pokemon/gible/overworldf.png b/graphics/pokemon/gible/overworldf.png new file mode 100644 index 0000000000..4481b2870f Binary files /dev/null and b/graphics/pokemon/gible/overworldf.png differ diff --git a/graphics/pokemon/girafarig/overworldf.png b/graphics/pokemon/girafarig/overworldf.png new file mode 100644 index 0000000000..057145b098 Binary files /dev/null and b/graphics/pokemon/girafarig/overworldf.png differ diff --git a/graphics/pokemon/gligar/overworldf.png b/graphics/pokemon/gligar/overworldf.png new file mode 100644 index 0000000000..65ad45ac25 Binary files /dev/null and b/graphics/pokemon/gligar/overworldf.png differ diff --git a/graphics/pokemon/gloom/overworldf.png b/graphics/pokemon/gloom/overworldf.png new file mode 100644 index 0000000000..4b5ba180a5 Binary files /dev/null and b/graphics/pokemon/gloom/overworldf.png differ diff --git a/graphics/pokemon/golbat/overworld.png b/graphics/pokemon/golbat/overworld.png index 658023601d..ed4e7059be 100644 Binary files a/graphics/pokemon/golbat/overworld.png and b/graphics/pokemon/golbat/overworld.png differ diff --git a/graphics/pokemon/golbat/overworldf.png b/graphics/pokemon/golbat/overworldf.png new file mode 100644 index 0000000000..658023601d Binary files /dev/null and b/graphics/pokemon/golbat/overworldf.png differ diff --git a/graphics/pokemon/goldeen/overworldf.png b/graphics/pokemon/goldeen/overworldf.png new file mode 100644 index 0000000000..8bc987e9e6 Binary files /dev/null and b/graphics/pokemon/goldeen/overworldf.png differ diff --git a/graphics/pokemon/gulpin/overworldf.png b/graphics/pokemon/gulpin/overworldf.png new file mode 100644 index 0000000000..73838f7151 Binary files /dev/null and b/graphics/pokemon/gulpin/overworldf.png differ diff --git a/graphics/pokemon/gyarados/overworld.png b/graphics/pokemon/gyarados/overworld.png index 7c0400b1e5..e2ab6d3ac5 100644 Binary files a/graphics/pokemon/gyarados/overworld.png and b/graphics/pokemon/gyarados/overworld.png differ diff --git a/graphics/pokemon/gyarados/overworldf.png b/graphics/pokemon/gyarados/overworldf.png new file mode 100644 index 0000000000..7c0400b1e5 Binary files /dev/null and b/graphics/pokemon/gyarados/overworldf.png differ diff --git a/graphics/pokemon/heracross/overworldf.png b/graphics/pokemon/heracross/overworldf.png new file mode 100644 index 0000000000..84b22f6a8e Binary files /dev/null and b/graphics/pokemon/heracross/overworldf.png differ diff --git a/graphics/pokemon/hippopotas/followerf.png b/graphics/pokemon/hippopotas/followerf.png deleted file mode 100644 index e8802de5c4..0000000000 Binary files a/graphics/pokemon/hippopotas/followerf.png and /dev/null differ diff --git a/graphics/pokemon/hippopotas/overworldf.png b/graphics/pokemon/hippopotas/overworldf.png new file mode 100644 index 0000000000..dcc8875b4b Binary files /dev/null and b/graphics/pokemon/hippopotas/overworldf.png differ diff --git a/graphics/pokemon/hippowdon/followerf.png b/graphics/pokemon/hippowdon/followerf.png deleted file mode 100644 index 20ac193d74..0000000000 Binary files a/graphics/pokemon/hippowdon/followerf.png and /dev/null differ diff --git a/graphics/pokemon/hippowdon/overworld_normalf.pal b/graphics/pokemon/hippowdon/overworld_normalf.pal new file mode 100644 index 0000000000..64198bd35c --- /dev/null +++ b/graphics/pokemon/hippowdon/overworld_normalf.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +96 96 96 +48 48 48 +72 72 72 +88 88 104 +136 136 144 +192 56 80 +168 168 168 +200 200 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hippowdon/overworld_shinyf.pal b/graphics/pokemon/hippowdon/overworld_shinyf.pal new file mode 100644 index 0000000000..022b4b542c --- /dev/null +++ b/graphics/pokemon/hippowdon/overworld_shinyf.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +136 136 104 +48 48 48 +96 96 72 +160 160 128 +184 192 152 +192 56 80 +152 208 160 +200 200 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/houndoom/overworldf.png b/graphics/pokemon/houndoom/overworldf.png new file mode 100644 index 0000000000..85091448d9 Binary files /dev/null and b/graphics/pokemon/houndoom/overworldf.png differ diff --git a/graphics/pokemon/hypno/overworldf.png b/graphics/pokemon/hypno/overworldf.png new file mode 100644 index 0000000000..0120f60a90 Binary files /dev/null and b/graphics/pokemon/hypno/overworldf.png differ diff --git a/graphics/pokemon/jellicent/followerf.png b/graphics/pokemon/jellicent/followerf.png deleted file mode 100644 index 1de8ee407b..0000000000 Binary files a/graphics/pokemon/jellicent/followerf.png and /dev/null differ diff --git a/graphics/pokemon/jellicent/overworld_normalf.pal b/graphics/pokemon/jellicent/overworld_normalf.pal new file mode 100644 index 0000000000..8d94142d60 --- /dev/null +++ b/graphics/pokemon/jellicent/overworld_normalf.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +7 7 7 +247 212 238 +109 46 69 +203 117 168 +247 151 194 +185 151 177 +185 151 177 +247 247 247 +214 53 26 +45 20 29 +32 69 142 +0 0 0 +247 212 238 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/jellicent/overworld_shinyf.pal b/graphics/pokemon/jellicent/overworld_shinyf.pal new file mode 100644 index 0000000000..d8bd8e5c4b --- /dev/null +++ b/graphics/pokemon/jellicent/overworld_shinyf.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +7 7 7 +240 216 248 +88 64 112 +160 120 224 +208 176 248 +168 152 184 +185 151 177 +247 247 247 +200 32 192 +45 20 29 +32 69 142 +0 0 0 +247 212 238 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/jellicent/overworldf.png b/graphics/pokemon/jellicent/overworldf.png new file mode 100644 index 0000000000..1a0cd24b02 Binary files /dev/null and b/graphics/pokemon/jellicent/overworldf.png differ diff --git a/graphics/pokemon/kadabra/overworldf.png b/graphics/pokemon/kadabra/overworldf.png new file mode 100644 index 0000000000..6ddb321401 Binary files /dev/null and b/graphics/pokemon/kadabra/overworldf.png differ diff --git a/graphics/pokemon/kricketot/overworldf.png b/graphics/pokemon/kricketot/overworldf.png new file mode 100644 index 0000000000..703b898276 Binary files /dev/null and b/graphics/pokemon/kricketot/overworldf.png differ diff --git a/graphics/pokemon/kricketune/overworldf.png b/graphics/pokemon/kricketune/overworldf.png new file mode 100644 index 0000000000..fcb57067b0 Binary files /dev/null and b/graphics/pokemon/kricketune/overworldf.png differ diff --git a/graphics/pokemon/ledian/overworldf.png b/graphics/pokemon/ledian/overworldf.png new file mode 100644 index 0000000000..61d46f8477 Binary files /dev/null and b/graphics/pokemon/ledian/overworldf.png differ diff --git a/graphics/pokemon/ledyba/overworldf.png b/graphics/pokemon/ledyba/overworldf.png new file mode 100644 index 0000000000..a46f3549c6 Binary files /dev/null and b/graphics/pokemon/ledyba/overworldf.png differ diff --git a/graphics/pokemon/ludicolo/overworld.png b/graphics/pokemon/ludicolo/overworld.png index 28a1e23d8b..0414f960c1 100644 Binary files a/graphics/pokemon/ludicolo/overworld.png and b/graphics/pokemon/ludicolo/overworld.png differ diff --git a/graphics/pokemon/ludicolo/overworldf.png b/graphics/pokemon/ludicolo/overworldf.png new file mode 100644 index 0000000000..28a1e23d8b Binary files /dev/null and b/graphics/pokemon/ludicolo/overworldf.png differ diff --git a/graphics/pokemon/lumineon/overworldf.png b/graphics/pokemon/lumineon/overworldf.png new file mode 100644 index 0000000000..44101d055e Binary files /dev/null and b/graphics/pokemon/lumineon/overworldf.png differ diff --git a/graphics/pokemon/luxio/overworldf.png b/graphics/pokemon/luxio/overworldf.png new file mode 100644 index 0000000000..6646e4262b Binary files /dev/null and b/graphics/pokemon/luxio/overworldf.png differ diff --git a/graphics/pokemon/luxray/overworldf.png b/graphics/pokemon/luxray/overworldf.png new file mode 100644 index 0000000000..bc4cc97e75 Binary files /dev/null and b/graphics/pokemon/luxray/overworldf.png differ diff --git a/graphics/pokemon/magikarp/overworld.png b/graphics/pokemon/magikarp/overworld.png index debcdb4925..05f918c64f 100644 Binary files a/graphics/pokemon/magikarp/overworld.png and b/graphics/pokemon/magikarp/overworld.png differ diff --git a/graphics/pokemon/magikarp/overworldf.png b/graphics/pokemon/magikarp/overworldf.png new file mode 100644 index 0000000000..debcdb4925 Binary files /dev/null and b/graphics/pokemon/magikarp/overworldf.png differ diff --git a/graphics/pokemon/mamoswine/overworldf.png b/graphics/pokemon/mamoswine/overworldf.png new file mode 100644 index 0000000000..d89769a98c Binary files /dev/null and b/graphics/pokemon/mamoswine/overworldf.png differ diff --git a/graphics/pokemon/medicham/overworldf.png b/graphics/pokemon/medicham/overworldf.png new file mode 100644 index 0000000000..d48352aa9e Binary files /dev/null and b/graphics/pokemon/medicham/overworldf.png differ diff --git a/graphics/pokemon/meditite/overworld.png b/graphics/pokemon/meditite/overworld.png index 53adfb2b00..8fb9cdef3f 100644 Binary files a/graphics/pokemon/meditite/overworld.png and b/graphics/pokemon/meditite/overworld.png differ diff --git a/graphics/pokemon/meditite/overworldf.png b/graphics/pokemon/meditite/overworldf.png new file mode 100644 index 0000000000..53adfb2b00 Binary files /dev/null and b/graphics/pokemon/meditite/overworldf.png differ diff --git a/graphics/pokemon/meganium/overworldf.png b/graphics/pokemon/meganium/overworldf.png new file mode 100644 index 0000000000..2217fd8157 Binary files /dev/null and b/graphics/pokemon/meganium/overworldf.png differ diff --git a/graphics/pokemon/milotic/overworldf.png b/graphics/pokemon/milotic/overworldf.png new file mode 100644 index 0000000000..3314e55fdd Binary files /dev/null and b/graphics/pokemon/milotic/overworldf.png differ diff --git a/graphics/pokemon/murkrow/overworld.png b/graphics/pokemon/murkrow/overworld.png index c70c19ba2c..1b72d90930 100644 Binary files a/graphics/pokemon/murkrow/overworld.png and b/graphics/pokemon/murkrow/overworld.png differ diff --git a/graphics/pokemon/murkrow/overworldf.png b/graphics/pokemon/murkrow/overworldf.png new file mode 100644 index 0000000000..c70c19ba2c Binary files /dev/null and b/graphics/pokemon/murkrow/overworldf.png differ diff --git a/graphics/pokemon/numel/overworldf.png b/graphics/pokemon/numel/overworldf.png new file mode 100644 index 0000000000..b62cf188e8 Binary files /dev/null and b/graphics/pokemon/numel/overworldf.png differ diff --git a/graphics/pokemon/nuzleaf/overworldf.png b/graphics/pokemon/nuzleaf/overworldf.png new file mode 100644 index 0000000000..5c4365306b Binary files /dev/null and b/graphics/pokemon/nuzleaf/overworldf.png differ diff --git a/graphics/pokemon/octillery/overworldf.png b/graphics/pokemon/octillery/overworldf.png new file mode 100644 index 0000000000..40972e08b0 Binary files /dev/null and b/graphics/pokemon/octillery/overworldf.png differ diff --git a/graphics/pokemon/pachirisu/overworldf.png b/graphics/pokemon/pachirisu/overworldf.png new file mode 100644 index 0000000000..a2f9c43120 Binary files /dev/null and b/graphics/pokemon/pachirisu/overworldf.png differ diff --git a/graphics/pokemon/pikachu/overworldf.png b/graphics/pokemon/pikachu/overworldf.png new file mode 100644 index 0000000000..b354642fe9 Binary files /dev/null and b/graphics/pokemon/pikachu/overworldf.png differ diff --git a/graphics/pokemon/piloswine/overworldf.png b/graphics/pokemon/piloswine/overworldf.png new file mode 100644 index 0000000000..87459a519d Binary files /dev/null and b/graphics/pokemon/piloswine/overworldf.png differ diff --git a/graphics/pokemon/politoed/overworldf.png b/graphics/pokemon/politoed/overworldf.png new file mode 100644 index 0000000000..1c4ad784f9 Binary files /dev/null and b/graphics/pokemon/politoed/overworldf.png differ diff --git a/graphics/pokemon/pyroar/followerf.png b/graphics/pokemon/pyroar/followerf.png deleted file mode 100644 index d6163f0f1c..0000000000 Binary files a/graphics/pokemon/pyroar/followerf.png and /dev/null differ diff --git a/graphics/pokemon/pyroar/overworldf.png b/graphics/pokemon/pyroar/overworldf.png new file mode 100644 index 0000000000..b4de3bd2f7 Binary files /dev/null and b/graphics/pokemon/pyroar/overworldf.png differ diff --git a/graphics/pokemon/quagsire/overworld.png b/graphics/pokemon/quagsire/overworld.png index 21a7622cda..d0001424a7 100644 Binary files a/graphics/pokemon/quagsire/overworld.png and b/graphics/pokemon/quagsire/overworld.png differ diff --git a/graphics/pokemon/quagsire/overworldf.png b/graphics/pokemon/quagsire/overworldf.png new file mode 100644 index 0000000000..21a7622cda Binary files /dev/null and b/graphics/pokemon/quagsire/overworldf.png differ diff --git a/graphics/pokemon/raichu/overworldf.png b/graphics/pokemon/raichu/overworldf.png new file mode 100644 index 0000000000..1f24d06fec Binary files /dev/null and b/graphics/pokemon/raichu/overworldf.png differ diff --git a/graphics/pokemon/raticate/overworldf.png b/graphics/pokemon/raticate/overworldf.png new file mode 100644 index 0000000000..8b0c83e8ae Binary files /dev/null and b/graphics/pokemon/raticate/overworldf.png differ diff --git a/graphics/pokemon/rattata/overworldf.png b/graphics/pokemon/rattata/overworldf.png new file mode 100644 index 0000000000..4065e7d8d6 Binary files /dev/null and b/graphics/pokemon/rattata/overworldf.png differ diff --git a/graphics/pokemon/relicanth/overworldf.png b/graphics/pokemon/relicanth/overworldf.png new file mode 100644 index 0000000000..cafb2a0fd0 Binary files /dev/null and b/graphics/pokemon/relicanth/overworldf.png differ diff --git a/graphics/pokemon/rhydon/overworldf.png b/graphics/pokemon/rhydon/overworldf.png new file mode 100644 index 0000000000..39a1d35b64 Binary files /dev/null and b/graphics/pokemon/rhydon/overworldf.png differ diff --git a/graphics/pokemon/rhyhorn/overworldf.png b/graphics/pokemon/rhyhorn/overworldf.png new file mode 100644 index 0000000000..55f1e6f5fb Binary files /dev/null and b/graphics/pokemon/rhyhorn/overworldf.png differ diff --git a/graphics/pokemon/rhyperior/overworldf.png b/graphics/pokemon/rhyperior/overworldf.png new file mode 100644 index 0000000000..47cb4fa9d5 Binary files /dev/null and b/graphics/pokemon/rhyperior/overworldf.png differ diff --git a/graphics/pokemon/roselia/overworld.png b/graphics/pokemon/roselia/overworld.png index e648e28ceb..2dd6d81514 100644 Binary files a/graphics/pokemon/roselia/overworld.png and b/graphics/pokemon/roselia/overworld.png differ diff --git a/graphics/pokemon/roselia/overworldf.png b/graphics/pokemon/roselia/overworldf.png new file mode 100644 index 0000000000..1ea251f891 Binary files /dev/null and b/graphics/pokemon/roselia/overworldf.png differ diff --git a/graphics/pokemon/roserade/overworldf.png b/graphics/pokemon/roserade/overworldf.png new file mode 100644 index 0000000000..9afcd4ecd6 Binary files /dev/null and b/graphics/pokemon/roserade/overworldf.png differ diff --git a/graphics/pokemon/scizor/overworldf.png b/graphics/pokemon/scizor/overworldf.png new file mode 100644 index 0000000000..ee19b55656 Binary files /dev/null and b/graphics/pokemon/scizor/overworldf.png differ diff --git a/graphics/pokemon/scyther/overworldf.png b/graphics/pokemon/scyther/overworldf.png new file mode 100644 index 0000000000..c7a16339f9 Binary files /dev/null and b/graphics/pokemon/scyther/overworldf.png differ diff --git a/graphics/pokemon/seaking/overworldf.png b/graphics/pokemon/seaking/overworldf.png new file mode 100644 index 0000000000..80590bc053 Binary files /dev/null and b/graphics/pokemon/seaking/overworldf.png differ diff --git a/graphics/pokemon/shiftry/overworld.png b/graphics/pokemon/shiftry/overworld.png index 0d7e72ce99..113383d549 100644 Binary files a/graphics/pokemon/shiftry/overworld.png and b/graphics/pokemon/shiftry/overworld.png differ diff --git a/graphics/pokemon/shiftry/overworldf.png b/graphics/pokemon/shiftry/overworldf.png new file mode 100644 index 0000000000..0d7e72ce99 Binary files /dev/null and b/graphics/pokemon/shiftry/overworldf.png differ diff --git a/graphics/pokemon/shinx/overworldf.png b/graphics/pokemon/shinx/overworldf.png new file mode 100644 index 0000000000..74f17d30b5 Binary files /dev/null and b/graphics/pokemon/shinx/overworldf.png differ diff --git a/graphics/pokemon/sneasel/hisuian/overworldf.png b/graphics/pokemon/sneasel/hisuian/overworldf.png new file mode 100644 index 0000000000..f85e643e62 Binary files /dev/null and b/graphics/pokemon/sneasel/hisuian/overworldf.png differ diff --git a/graphics/pokemon/sneasel/overworldf.png b/graphics/pokemon/sneasel/overworldf.png new file mode 100644 index 0000000000..0929570d64 Binary files /dev/null and b/graphics/pokemon/sneasel/overworldf.png differ diff --git a/graphics/pokemon/snover/overworldf.png b/graphics/pokemon/snover/overworldf.png new file mode 100644 index 0000000000..74d3c0a15e Binary files /dev/null and b/graphics/pokemon/snover/overworldf.png differ diff --git a/graphics/pokemon/staraptor/overworldf.png b/graphics/pokemon/staraptor/overworldf.png new file mode 100644 index 0000000000..0515e2ec68 Binary files /dev/null and b/graphics/pokemon/staraptor/overworldf.png differ diff --git a/graphics/pokemon/staravia/overworldf.png b/graphics/pokemon/staravia/overworldf.png new file mode 100644 index 0000000000..0a023d81c7 Binary files /dev/null and b/graphics/pokemon/staravia/overworldf.png differ diff --git a/graphics/pokemon/starly/overworldf.png b/graphics/pokemon/starly/overworldf.png new file mode 100644 index 0000000000..feb6076515 Binary files /dev/null and b/graphics/pokemon/starly/overworldf.png differ diff --git a/graphics/pokemon/steelix/overworldf.png b/graphics/pokemon/steelix/overworldf.png new file mode 100644 index 0000000000..53a7dc53af Binary files /dev/null and b/graphics/pokemon/steelix/overworldf.png differ diff --git a/graphics/pokemon/sudowoodo/overworldf.png b/graphics/pokemon/sudowoodo/overworldf.png new file mode 100644 index 0000000000..14cea4319d Binary files /dev/null and b/graphics/pokemon/sudowoodo/overworldf.png differ diff --git a/graphics/pokemon/swalot/overworld.png b/graphics/pokemon/swalot/overworld.png index 0d0850d8ae..666f56d750 100644 Binary files a/graphics/pokemon/swalot/overworld.png and b/graphics/pokemon/swalot/overworld.png differ diff --git a/graphics/pokemon/swalot/overworldf.png b/graphics/pokemon/swalot/overworldf.png new file mode 100644 index 0000000000..0d0850d8ae Binary files /dev/null and b/graphics/pokemon/swalot/overworldf.png differ diff --git a/graphics/pokemon/tangrowth/overworldf.png b/graphics/pokemon/tangrowth/overworldf.png new file mode 100644 index 0000000000..b3ab26c6d8 Binary files /dev/null and b/graphics/pokemon/tangrowth/overworldf.png differ diff --git a/graphics/pokemon/torchic/overworld.png b/graphics/pokemon/torchic/overworld.png index 5513342c36..8cd550ae52 100644 Binary files a/graphics/pokemon/torchic/overworld.png and b/graphics/pokemon/torchic/overworld.png differ diff --git a/graphics/pokemon/torchic/overworld_normal.pal b/graphics/pokemon/torchic/overworld_normal.pal index 3fd0cd45f4..37aee0ac45 100644 --- a/graphics/pokemon/torchic/overworld_normal.pal +++ b/graphics/pokemon/torchic/overworld_normal.pal @@ -11,7 +11,7 @@ JASC-PAL 208 96 0 248 208 96 232 232 248 -0 0 0 +99 99 99 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/torchic/overworld_shiny.pal b/graphics/pokemon/torchic/overworld_shiny.pal index 41312ee0f9..bca621cfcb 100644 --- a/graphics/pokemon/torchic/overworld_shiny.pal +++ b/graphics/pokemon/torchic/overworld_shiny.pal @@ -11,7 +11,7 @@ JASC-PAL 200 168 48 248 208 152 232 232 248 -0 0 0 +99 99 99 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/torchic/overworldf.png b/graphics/pokemon/torchic/overworldf.png new file mode 100644 index 0000000000..db5074b001 Binary files /dev/null and b/graphics/pokemon/torchic/overworldf.png differ diff --git a/graphics/pokemon/toxicroak/overworldf.png b/graphics/pokemon/toxicroak/overworldf.png new file mode 100644 index 0000000000..16c53a9b75 Binary files /dev/null and b/graphics/pokemon/toxicroak/overworldf.png differ diff --git a/graphics/pokemon/unfezant/overworld_normalf.pal b/graphics/pokemon/unfezant/overworld_normalf.pal new file mode 100644 index 0000000000..1d5dbfc828 --- /dev/null +++ b/graphics/pokemon/unfezant/overworld_normalf.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +36 36 36 +66 66 66 +0 0 0 +141 141 141 +207 207 207 +159 124 25 +246 187 37 +106 106 106 +51 37 25 +246 187 31 +226 226 246 +141 98 44 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/unfezant/overworld_shinyf.pal b/graphics/pokemon/unfezant/overworld_shinyf.pal new file mode 100644 index 0000000000..db2e72e0ee --- /dev/null +++ b/graphics/pokemon/unfezant/overworld_shinyf.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +32 32 24 +88 64 40 +0 0 0 +168 160 128 +200 200 176 +160 120 64 +246 187 37 +106 106 106 +51 37 25 +248 184 0 +226 226 246 +248 152 32 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/unfezant/followerf.png b/graphics/pokemon/unfezant/overworldf.png similarity index 100% rename from graphics/pokemon/unfezant/followerf.png rename to graphics/pokemon/unfezant/overworldf.png diff --git a/graphics/pokemon/unfezant_f/overworld.png b/graphics/pokemon/unfezant_f/overworld.png deleted file mode 100644 index ae5e096b4b..0000000000 Binary files a/graphics/pokemon/unfezant_f/overworld.png and /dev/null differ diff --git a/graphics/pokemon/ursaring/overworldf.png b/graphics/pokemon/ursaring/overworldf.png new file mode 100644 index 0000000000..f36f7c4cde Binary files /dev/null and b/graphics/pokemon/ursaring/overworldf.png differ diff --git a/graphics/pokemon/venusaur/overworldf.png b/graphics/pokemon/venusaur/overworldf.png new file mode 100644 index 0000000000..d58b1c7c38 Binary files /dev/null and b/graphics/pokemon/venusaur/overworldf.png differ diff --git a/graphics/pokemon/vileplume/overworldf.png b/graphics/pokemon/vileplume/overworldf.png new file mode 100644 index 0000000000..9cf8512f7d Binary files /dev/null and b/graphics/pokemon/vileplume/overworldf.png differ diff --git a/graphics/pokemon/weavile/overworldf.png b/graphics/pokemon/weavile/overworldf.png new file mode 100644 index 0000000000..4e84466506 Binary files /dev/null and b/graphics/pokemon/weavile/overworldf.png differ diff --git a/graphics/pokemon/wobbuffet/overworld.png b/graphics/pokemon/wobbuffet/overworld.png index 04b1361135..eddc7af72d 100644 Binary files a/graphics/pokemon/wobbuffet/overworld.png and b/graphics/pokemon/wobbuffet/overworld.png differ diff --git a/graphics/pokemon/wobbuffet/overworld_normal.pal b/graphics/pokemon/wobbuffet/overworld_normal.pal index 208392f976..393b4da868 100644 --- a/graphics/pokemon/wobbuffet/overworld_normal.pal +++ b/graphics/pokemon/wobbuffet/overworld_normal.pal @@ -10,8 +10,8 @@ JASC-PAL 32 48 64 56 80 112 168 184 208 -0 0 0 -0 0 0 +208 56 24 +136 24 0 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/wobbuffet/overworld_shiny.pal b/graphics/pokemon/wobbuffet/overworld_shiny.pal index 126ef8e8c9..4db78ef302 100644 --- a/graphics/pokemon/wobbuffet/overworld_shiny.pal +++ b/graphics/pokemon/wobbuffet/overworld_shiny.pal @@ -10,8 +10,8 @@ JASC-PAL 32 48 64 56 80 112 168 184 208 -0 0 0 -0 0 0 +208 56 24 +136 24 0 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/wobbuffet/overworldf.png b/graphics/pokemon/wobbuffet/overworldf.png new file mode 100644 index 0000000000..36dee1d36c Binary files /dev/null and b/graphics/pokemon/wobbuffet/overworldf.png differ diff --git a/graphics/pokemon/wooper/overworldf.png b/graphics/pokemon/wooper/overworldf.png new file mode 100644 index 0000000000..50ab4d9a70 Binary files /dev/null and b/graphics/pokemon/wooper/overworldf.png differ diff --git a/graphics/pokemon/xatu/overworld.png b/graphics/pokemon/xatu/overworld.png index 223ef93098..a1a6ae9176 100644 Binary files a/graphics/pokemon/xatu/overworld.png and b/graphics/pokemon/xatu/overworld.png differ diff --git a/graphics/pokemon/xatu/overworldf.png b/graphics/pokemon/xatu/overworldf.png new file mode 100644 index 0000000000..223ef93098 Binary files /dev/null and b/graphics/pokemon/xatu/overworldf.png differ diff --git a/graphics/pokemon/zubat/overworld.png b/graphics/pokemon/zubat/overworld.png index cd1ba2a2ca..ea7569268e 100644 Binary files a/graphics/pokemon/zubat/overworld.png and b/graphics/pokemon/zubat/overworld.png differ diff --git a/graphics/pokemon/zubat/overworldf.png b/graphics/pokemon/zubat/overworldf.png new file mode 100644 index 0000000000..cd1ba2a2ca Binary files /dev/null and b/graphics/pokemon/zubat/overworldf.png differ diff --git a/graphics/rayquaza_scene/scene_3/rayquaza_tail.png b/graphics/rayquaza_scene/scene_3/rayquaza_tail.png index 7e0577df15..796548e56a 100644 Binary files a/graphics/rayquaza_scene/scene_3/rayquaza_tail.png and b/graphics/rayquaza_scene/scene_3/rayquaza_tail.png differ diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index 1b514b8ed3..06316ea6a9 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -393,10 +393,6 @@ $(RAYQUAZAGFXDIR)/scene_2/bg.4bpp: %.4bpp: %.png $(RAYQUAZAGFXDIR)/scene_3/rayquaza.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 124 -Wnum_tiles -$(RAYQUAZAGFXDIR)/scene_3/rayquaza_tail_fix.4bpp: $(RAYQUAZAGFXDIR)/scene_3/rayquaza_tail.4bpp - cp $< $@ - head -c 12 /dev/zero >> $@ - $(RAYQUAZAGFXDIR)/scene_4/streaks.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 19 -Wnum_tiles diff --git a/include/battle.h b/include/battle.h index 16df7c500a..2d1d658419 100644 --- a/include/battle.h +++ b/include/battle.h @@ -371,9 +371,12 @@ struct AiLogicData u8 moveLimitations[MAX_BATTLERS_COUNT]; u8 shouldSwitchIfBadMoves; // Because all available moves have no/little effect. Each bit per battler. u8 monToSwitchId[MAX_BATTLERS_COUNT]; // ID of the mon to switch. - bool8 weatherHasEffect; // The same as WEATHER_HAS_EFFECT. Stored here, so it's called only once. u8 mostSuitableMonId[MAX_BATTLERS_COUNT]; // Stores result of GetMostSuitableMonToSwitchInto, which decides which generic mon the AI would switch into if they decide to switch. This can be overruled by specific mons found in ShouldSwitch; the final resulting mon is stored in AI_monToSwitchIntoId. struct SwitchinCandidate switchinCandidate; // Struct used for deciding which mon to switch to in battle_ai_switch_items.c + u8 weatherHasEffect:1; // The same as WEATHER_HAS_EFFECT. Stored here, so it's called only once. + u8 ejectButtonSwitch:1; // Tracks whether current switch out was from Eject Button + u8 ejectPackSwitch:1; // Tracks whether current switch out was from Eject Pack + u8 padding:5; u8 shouldSwitch; // Stores result of ShouldSwitch, which decides whether a mon should be switched out }; @@ -1091,6 +1094,7 @@ extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT]; extern u16 gLastMoves[MAX_BATTLERS_COUNT]; extern u16 gLastLandedMoves[MAX_BATTLERS_COUNT]; extern u16 gLastHitByType[MAX_BATTLERS_COUNT]; +extern u16 gLastUsedMoveType[MAX_BATTLERS_COUNT]; extern u16 gLastResultingMoves[MAX_BATTLERS_COUNT]; extern u16 gLockedMoves[MAX_BATTLERS_COUNT]; extern u16 gLastUsedMove; diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h index 5fecdd5f47..69cf92ed0d 100644 --- a/include/battle_ai_util.h +++ b/include/battle_ai_util.h @@ -31,6 +31,7 @@ void RecordItemEffectBattle(u32 battlerId, u32 itemEffect); void ClearBattlerItemEffectHistory(u32 battlerId); void SaveBattlerData(u32 battlerId); void SetBattlerData(u32 battlerId); +void SetBattlerAiData(u32 battlerId, struct AiLogicData *aiData); void RestoreBattlerData(u32 battlerId); u32 GetAIChosenMove(u32 battlerId); u32 GetTotalBaseStat(u32 species); @@ -140,6 +141,7 @@ bool32 HasThawingMove(u32 battler); bool32 IsStatRaisingEffect(u32 effect); bool32 IsStatLoweringEffect(u32 effect); bool32 IsSelfStatLoweringEffect(u32 effect); +bool32 IsSwitchOutEffect(u32 effect); bool32 IsAttackBoostMoveEffect(u32 effect); bool32 IsUngroundingEffect(u32 effect); bool32 IsSemiInvulnerable(u32 battlerDef, u32 move); @@ -201,6 +203,7 @@ void IncreaseConfusionScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score void IncreaseFrostbiteScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score); s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, bool32 isPartyMonAttacker, enum DamageRollType rollType); +u32 AI_WhoStrikesFirstPartyMon(u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, u32 moveConsidered); s32 AI_TryToClearStats(u32 battlerAtk, u32 battlerDef, bool32 isDoubleBattle); bool32 AI_ShouldCopyStatChanges(u32 battlerAtk, u32 battlerDef); bool32 AI_ShouldSetUpHazards(u32 battlerAtk, u32 battlerDef, struct AiLogicData *aiData); diff --git a/include/config/battle.h b/include/config/battle.h index d280ff12b3..ab2178eacc 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -69,6 +69,7 @@ #define B_RECOIL_IF_MISS_DMG GEN_LATEST // In Gen5+, Jump Kick and High Jump Kick will always do half of the user's max HP when missing. #define B_KLUTZ_FLING_INTERACTION GEN_LATEST // In Gen5+, Pokémon with the Klutz ability can't use Fling. #define B_UPDATED_CONVERSION GEN_LATEST // In Gen6+, Conversion changes the user's type to match their first move's. Before, it would choose a move at random. +#define B_UPDATED_CONVERSION_2 GEN_LATEST // In Gen5+, Conversion 2 changes the user's type to a type that resists the last move used by the selected target. Before, it would consider the last move being successfully hit by. Additionally, Struggle is considered Normal type before Gen 5. #define B_PP_REDUCED_BY_SPITE GEN_LATEST // In Gen4+, Spite reduces the foe's last move's PP by 4, instead of 2 to 5. #define B_EXTRAPOLATED_MOVE_FLAGS TRUE // Adds move flags to moves that they don't officially have but would likely have if they were in the latest core series game. diff --git a/include/config/overworld.h b/include/config/overworld.h index 0762197c7b..c7bb8d10d6 100644 --- a/include/config/overworld.h +++ b/include/config/overworld.h @@ -109,6 +109,8 @@ #define OW_POPUP_BW_ALPHA_BLEND FALSE // Enables alpha blending/transparency for the pop-ups. Mainly intended to be used with the black color option. // Pokémon Center -#define OW_IGNORE_EGGS_ON_HEAL GEN_LATEST // In Gen 4+, the nurse in the Pokémon Center does not heal Eggs on healing machine. +#define OW_IGNORE_EGGS_ON_HEAL GEN_LATEST // In Gen 4+, the nurse in the Pokémon Center does not heal Eggs on healing machine. +#define OW_UNION_DISABLE_CHECK FALSE // When TRUE, the nurse does not inform the player if there is a trainer waiting in the Union Room. This speeds up the loading of the Pokémon Center. +#define OW_FLAG_MOVE_UNION_ROOM_CHECK 0 // If this flag is set, the game will only check if players are in the Union Room while healing Pokémon, and not when players enter the Pokémon Center. This speeds up the loading of the Pokémon Center. This is ignored if OW_UNION_DISABLE_CHECK is TRUE. #endif // GUARD_CONFIG_OVERWORLD_H diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 156eeda613..3476dc5ef2 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -265,46 +265,50 @@ #define PARTY_SCREEN_OPTIONAL (1 << 7) // Flag for first argument to openpartyscreen // cases for Cmd_moveend -#define MOVEEND_SUM_DAMAGE 0 -#define MOVEEND_PROTECT_LIKE_EFFECT 1 -#define MOVEEND_RAGE 2 -#define MOVEEND_SYNCHRONIZE_TARGET 3 -#define MOVEEND_ABILITIES 4 -#define MOVEEND_ABILITIES_ATTACKER 5 -#define MOVEEND_STATUS_IMMUNITY_ABILITIES 6 -#define MOVEEND_SYNCHRONIZE_ATTACKER 7 -#define MOVEEND_CHOICE_MOVE 8 -#define MOVEEND_ATTACKER_INVISIBLE 9 -#define MOVEEND_ATTACKER_VISIBLE 10 -#define MOVEEND_TARGET_VISIBLE 11 -#define MOVEEND_ITEM_EFFECTS_TARGET 12 -#define MOVEEND_MOVE_EFFECTS2 13 -#define MOVEEND_ITEM_EFFECTS_ALL 14 -#define MOVEEND_KINGSROCK 15 // These item effects will occur each strike of a multi-hit move -#define MOVEEND_NUM_HITS 16 -#define MOVEEND_SUBSTITUTE 17 -#define MOVEEND_SKY_DROP_CONFUSE 18 -#define MOVEEND_UPDATE_LAST_MOVES 19 -#define MOVEEND_MIRROR_MOVE 20 -#define MOVEEND_NEXT_TARGET 21 // Everything up until here is handled for each strike of a multi-hit move -#define MOVEEND_MULTIHIT_MOVE 22 -#define MOVEEND_DEFROST 23 -#define MOVEEND_RECOIL 24 -#define MOVEEND_MAGICIAN 25 // Occurs after final multi-hit strike, and after other items/abilities would activate -#define MOVEEND_EJECT_ITEMS 26 -#define MOVEEND_WHITE_HERB 27 -#define MOVEEND_RED_CARD 28 -#define MOVEEND_LIFEORB_SHELLBELL 29 // Includes shell bell, throat spray, etc -#define MOVEEND_CHANGED_ITEMS 30 -#define MOVEEND_PICKPOCKET 31 -#define MOVEEND_DANCER 32 -#define MOVEEND_EMERGENCY_EXIT 33 -#define MOVEEND_SYMBIOSIS 34 -#define MOVEEND_OPPORTUNIST 35 // Occurs after other stat change items/abilities to try and copy the boosts -#define MOVEEND_SAME_MOVE_TURNS 36 -#define MOVEEND_SET_EVOLUTION_TRACKER 37 -#define MOVEEND_CLEAR_BITS 38 -#define MOVEEND_COUNT 39 +enum MoveEndEffects +{ + MOVEEND_SUM_DAMAGE, + MOVEEND_PROTECT_LIKE_EFFECT, + MOVEEND_RAGE, + MOVEEND_SYNCHRONIZE_TARGET, + MOVEEND_ABILITIES, + MOVEEND_ABILITIES_ATTACKER, + MOVEEND_STATUS_IMMUNITY_ABILITIES, + MOVEEND_SYNCHRONIZE_ATTACKER, + MOVEEND_CHOICE_MOVE, + MOVEEND_ATTACKER_INVISIBLE, + MOVEEND_ATTACKER_VISIBLE, + MOVEEND_TARGET_VISIBLE, + MOVEEND_ITEM_EFFECTS_TARGET, + MOVEEND_MOVE_EFFECTS2, + MOVEEND_ITEM_EFFECTS_ALL, + MOVEEND_KINGSROCK, // These item effects will occur each strike of a multi-hit move + MOVEEND_NUM_HITS, + MOVEEND_SUBSTITUTE, + MOVEEND_SKY_DROP_CONFUSE, + MOVEEND_UPDATE_LAST_MOVES, + MOVEEND_MIRROR_MOVE, + MOVEEND_NEXT_TARGET, // Everything up until here is handled for each strike of a multi-hit move + MOVEEND_MULTIHIT_MOVE, + MOVEEND_DEFROST, + MOVEEND_RECOIL, + MOVEEND_ITEM_EFFECTS_ATTACKER, + MOVEEND_MAGICIAN, // Occurs after final multi-hit strike, and after other items/abilities would activate + MOVEEND_EJECT_ITEMS, + MOVEEND_WHITE_HERB, + MOVEEND_RED_CARD, + MOVEEND_LIFEORB_SHELLBELL, // Includes shell bell, throat spray, etc + MOVEEND_CHANGED_ITEMS, + MOVEEND_PICKPOCKET, + MOVEEND_DANCER, + MOVEEND_EMERGENCY_EXIT, + MOVEEND_SYMBIOSIS, + MOVEEND_OPPORTUNIST, // Occurs after other stat change items/abilities to try and copy the boosts + MOVEEND_SAME_MOVE_TURNS, + MOVEEND_SET_EVOLUTION_TRACKER, + MOVEEND_CLEAR_BITS, + MOVEEND_COUNT, +}; // switch cases #define B_SWITCH_NORMAL 0 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 08c80248fe..1cb5657391 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -713,8 +713,11 @@ #define STRINGID_PKMNMADESHELLGLEAM 711 #define STRINGID_FICKLEBEAMDOUBLED 712 #define STRINGID_COMMANDERACTIVATES 713 +#define STRINGID_POKEFLUTECATCHY 714 +#define STRINGID_POKEFLUTE 715 +#define STRINGID_MONHEARINGFLUTEAWOKE 716 -#define BATTLESTRINGS_COUNT 714 +#define BATTLESTRINGS_COUNT 717 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, diff --git a/include/constants/cries.h b/include/constants/cries.h index 3213f62d3f..ca1529bbdf 100644 --- a/include/constants/cries.h +++ b/include/constants/cries.h @@ -1636,7 +1636,7 @@ enum { #if P_FAMILY_FLABEBE CRY_FLABEBE, CRY_FLOETTE, - CRY_FLOETTE_ETERNAL_FLOWER, + CRY_FLOETTE_ETERNAL, CRY_FLORGES, #endif //P_FAMILY_FLABEBE #if P_FAMILY_SKIDDO @@ -2084,12 +2084,12 @@ enum { CRY_STONJOURNER, #endif //P_FAMILY_STONJOURNER #if P_FAMILY_EISCUE - CRY_EISCUE_ICE_FACE, + CRY_EISCUE_ICE, CRY_EISCUE_NOICE_FACE, #endif //P_FAMILY_EISCUE #if P_FAMILY_INDEEDEE - CRY_INDEEDEE_MALE, - CRY_INDEEDEE_FEMALE, + CRY_INDEEDEE_M, + CRY_INDEEDEE_F, #endif //P_FAMILY_INDEEDEE #if P_FAMILY_MORPEKO CRY_MORPEKO_FULL_BELLY, @@ -2123,11 +2123,11 @@ enum { CRY_DRAGAPULT, #endif //P_FAMILY_DREEPY #if P_FAMILY_ZACIAN - CRY_ZACIAN_HERO_OF_MANY_BATTLES, + CRY_ZACIAN_HERO, CRY_ZACIAN_CROWNED_SWORD, #endif //P_FAMILY_ZACIAN #if P_FAMILY_ZAMAZENTA - CRY_ZAMAZENTA_HERO_OF_MANY_BATTLES, + CRY_ZAMAZENTA_HERO, CRY_ZAMAZENTA_CROWNED_SHIELD, #endif //P_FAMILY_ZAMAZENTA #if P_FAMILY_ETERNATUS @@ -2182,8 +2182,8 @@ enum { #endif //P_FAMILY_QUAXLY #if P_FAMILY_LECHONK CRY_LECHONK, - CRY_OINKOLOGNE_MALE, - CRY_OINKOLOGNE_FEMALE, + CRY_OINKOLOGNE_M, + CRY_OINKOLOGNE_F, #endif //P_FAMILY_LECHONK #if P_FAMILY_TAROUNTULA CRY_TAROUNTULA, diff --git a/include/constants/expansion.h b/include/constants/expansion.h index 72a4865242..327a502e22 100644 --- a/include/constants/expansion.h +++ b/include/constants/expansion.h @@ -1,7 +1,7 @@ #ifndef GUARD_CONSTANTS_EXPANSION_H #define GUARD_CONSTANTS_EXPANSION_H -// 1.10.0 +// Last version: 1.9.3 #define EXPANSION_VERSION_MAJOR 1 #define EXPANSION_VERSION_MINOR 10 #define EXPANSION_VERSION_PATCH 0 diff --git a/include/constants/items.h b/include/constants/items.h index bc9fdf2dc4..c5bd7096a9 100644 --- a/include/constants/items.h +++ b/include/constants/items.h @@ -1077,6 +1077,7 @@ #define EFFECT_ITEM_REVIVE 9 #define EFFECT_ITEM_RESTORE_PP 10 #define EFFECT_ITEM_INCREASE_ALL_STATS 11 +#define EFFECT_ITEM_USE_POKE_FLUTE 12 // Enigma Berry dummy constant #define EFFECT_ITEM_ENIGMA_BERRY_EREADER 1 diff --git a/include/constants/species.h b/include/constants/species.h index a0cce51398..4c9a32bb13 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -1,6 +1,11 @@ #ifndef GUARD_CONSTANTS_SPECIES_H #define GUARD_CONSTANTS_SPECIES_H +// NOTE: The defines here are named in order to match Pokémon Showdown's naming conventions. This is done to avoid issues with trainerproc parsing species names. If a Pokémon does not have an entry on Showdown, use your best judgement. +// Additionally, we have tried to reduce down to as few defines as possible, because programs like porymap does not always properly handle having multiple defines. +// Discussion: https://github.com/rh-hideout/pokeemerald-expansion/pull/5075#issuecomment-2384088602 +// Showdown: https://github.com/smogon/Pokemon-Showdown/blob/master/data/pokedex.ts + #define SPECIES_NONE 0 #define SPECIES_BULBASAUR 1 #define SPECIES_IVYSAUR 2 @@ -415,12 +420,12 @@ #define SPECIES_RAMPARDOS 409 #define SPECIES_SHIELDON 410 #define SPECIES_BASTIODON 411 -#define SPECIES_BURMY SPECIES_BURMY_PLANT_CLOAK -#define SPECIES_BURMY_PLANT_CLOAK 412 -#define SPECIES_WORMADAM SPECIES_WORMADAM_PLANT_CLOAK -#define SPECIES_WORMADAM_PLANT_CLOAK 413 -#define SPECIES_MOTHIM SPECIES_MOTHIM_PLANT_CLOAK -#define SPECIES_MOTHIM_PLANT_CLOAK 414 +#define SPECIES_BURMY_PLANT 412 +#define SPECIES_BURMY SPECIES_BURMY_PLANT +#define SPECIES_WORMADAM_PLANT 413 +#define SPECIES_WORMADAM SPECIES_WORMADAM_PLANT +#define SPECIES_MOTHIM_PLANT 414 +#define SPECIES_MOTHIM SPECIES_MOTHIM_PLANT #define SPECIES_COMBEE 415 #define SPECIES_VESPIQUEN 416 #define SPECIES_PACHIRISU 417 @@ -429,10 +434,10 @@ #define SPECIES_CHERUBI 420 #define SPECIES_CHERRIM SPECIES_CHERRIM_OVERCAST #define SPECIES_CHERRIM_OVERCAST 421 -#define SPECIES_SHELLOS SPECIES_SHELLOS_WEST_SEA -#define SPECIES_SHELLOS_WEST_SEA 422 -#define SPECIES_GASTRODON SPECIES_GASTRODON_WEST_SEA -#define SPECIES_GASTRODON_WEST_SEA 423 +#define SPECIES_SHELLOS_WEST 422 +#define SPECIES_SHELLOS SPECIES_SHELLOS_WEST +#define SPECIES_GASTRODON_WEST 423 +#define SPECIES_GASTRODON SPECIES_GASTRODON_WEST #define SPECIES_AMBIPOM 424 #define SPECIES_DRIFLOON 425 #define SPECIES_DRIFBLIM 426 @@ -568,8 +573,8 @@ #define SPECIES_KROKOROK 552 #define SPECIES_KROOKODILE 553 #define SPECIES_DARUMAKA 554 -#define SPECIES_DARMANITAN SPECIES_DARMANITAN_STANDARD_MODE -#define SPECIES_DARMANITAN_STANDARD_MODE 555 +#define SPECIES_DARMANITAN SPECIES_DARMANITAN_STANDARD +#define SPECIES_DARMANITAN_STANDARD 555 #define SPECIES_MARACTUS 556 #define SPECIES_DWEBBLE 557 #define SPECIES_CRUSTLE 558 @@ -693,12 +698,12 @@ #define SPECIES_VIVILLON_ICY_SNOW 666 #define SPECIES_LITLEO 667 #define SPECIES_PYROAR 668 -#define SPECIES_FLABEBE SPECIES_FLABEBE_RED_FLOWER -#define SPECIES_FLABEBE_RED_FLOWER 669 -#define SPECIES_FLOETTE SPECIES_FLOETTE_RED_FLOWER -#define SPECIES_FLOETTE_RED_FLOWER 670 -#define SPECIES_FLORGES SPECIES_FLORGES_RED_FLOWER -#define SPECIES_FLORGES_RED_FLOWER 671 +#define SPECIES_FLABEBE SPECIES_FLABEBE_RED +#define SPECIES_FLABEBE_RED 669 +#define SPECIES_FLOETTE SPECIES_FLOETTE_RED +#define SPECIES_FLOETTE_RED 670 +#define SPECIES_FLORGES SPECIES_FLORGES_RED +#define SPECIES_FLORGES_RED 671 #define SPECIES_SKIDDO 672 #define SPECIES_GOGOAT 673 #define SPECIES_PANCHAM 674 @@ -706,8 +711,8 @@ #define SPECIES_FURFROU SPECIES_FURFROU_NATURAL #define SPECIES_FURFROU_NATURAL 676 #define SPECIES_ESPURR 677 -#define SPECIES_MEOWSTIC SPECIES_MEOWSTIC_MALE -#define SPECIES_MEOWSTIC_MALE 678 +#define SPECIES_MEOWSTIC SPECIES_MEOWSTIC_M +#define SPECIES_MEOWSTIC_M 678 #define SPECIES_HONEDGE 679 #define SPECIES_DOUBLADE 680 #define SPECIES_AEGISLASH SPECIES_AEGISLASH_SHIELD @@ -752,8 +757,7 @@ #define SPECIES_XERNEAS_NEUTRAL 716 #define SPECIES_YVELTAL 717 #define SPECIES_ZYGARDE SPECIES_ZYGARDE_50 -#define SPECIES_ZYGARDE_50 SPECIES_ZYGARDE_50_AURA_BREAK -#define SPECIES_ZYGARDE_50_AURA_BREAK 718 +#define SPECIES_ZYGARDE_50 718 #define SPECIES_DIANCIE 719 #define SPECIES_HOOPA SPECIES_HOOPA_CONFINED #define SPECIES_HOOPA_CONFINED 720 @@ -925,10 +929,10 @@ #define SPECIES_SNOM 872 #define SPECIES_FROSMOTH 873 #define SPECIES_STONJOURNER 874 -#define SPECIES_EISCUE SPECIES_EISCUE_ICE_FACE -#define SPECIES_EISCUE_ICE_FACE 875 -#define SPECIES_INDEEDEE SPECIES_INDEEDEE_MALE -#define SPECIES_INDEEDEE_MALE 876 +#define SPECIES_EISCUE SPECIES_EISCUE_ICE +#define SPECIES_EISCUE_ICE 875 +#define SPECIES_INDEEDEE SPECIES_INDEEDEE_M +#define SPECIES_INDEEDEE_M 876 #define SPECIES_MORPEKO SPECIES_MORPEKO_FULL_BELLY #define SPECIES_MORPEKO_FULL_BELLY 877 #define SPECIES_CUFANT 878 @@ -941,14 +945,14 @@ #define SPECIES_DREEPY 885 #define SPECIES_DRAKLOAK 886 #define SPECIES_DRAGAPULT 887 -#define SPECIES_ZACIAN SPECIES_ZACIAN_HERO_OF_MANY_BATTLES -#define SPECIES_ZACIAN_HERO_OF_MANY_BATTLES 888 -#define SPECIES_ZAMAZENTA SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES -#define SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES 889 +#define SPECIES_ZACIAN SPECIES_ZACIAN_HERO +#define SPECIES_ZACIAN_HERO 888 +#define SPECIES_ZAMAZENTA SPECIES_ZAMAZENTA_HERO +#define SPECIES_ZAMAZENTA_HERO 889 #define SPECIES_ETERNATUS 890 #define SPECIES_KUBFU 891 -#define SPECIES_URSHIFU SPECIES_URSHIFU_SINGLE_STRIKE_STYLE -#define SPECIES_URSHIFU_SINGLE_STRIKE_STYLE 892 +#define SPECIES_URSHIFU SPECIES_URSHIFU_SINGLE_STRIKE +#define SPECIES_URSHIFU_SINGLE_STRIKE 892 #define SPECIES_ZARUDE 893 #define SPECIES_REGIELEKI 894 #define SPECIES_REGIDRAGO 895 @@ -958,8 +962,8 @@ #define SPECIES_WYRDEER 899 #define SPECIES_KLEAVOR 900 #define SPECIES_URSALUNA 901 -#define SPECIES_BASCULEGION SPECIES_BASCULEGION_MALE -#define SPECIES_BASCULEGION_MALE 902 +#define SPECIES_BASCULEGION SPECIES_BASCULEGION_M +#define SPECIES_BASCULEGION_M 902 #define SPECIES_SNEASLER 903 #define SPECIES_OVERQWIL 904 #define SPECIES_ENAMORUS SPECIES_ENAMORUS_INCARNATE @@ -1014,78 +1018,78 @@ #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 990 -#define SPECIES_YAMASK_GALARIAN 991 -#define SPECIES_STUNFISK_GALARIAN 992 +#define SPECIES_RATTATA_ALOLA 956 +#define SPECIES_RATICATE_ALOLA 957 +#define SPECIES_RAICHU_ALOLA 958 +#define SPECIES_SANDSHREW_ALOLA 959 +#define SPECIES_SANDSLASH_ALOLA 960 +#define SPECIES_VULPIX_ALOLA 961 +#define SPECIES_NINETALES_ALOLA 962 +#define SPECIES_DIGLETT_ALOLA 963 +#define SPECIES_DUGTRIO_ALOLA 964 +#define SPECIES_MEOWTH_ALOLA 965 +#define SPECIES_PERSIAN_ALOLA 966 +#define SPECIES_GEODUDE_ALOLA 967 +#define SPECIES_GRAVELER_ALOLA 968 +#define SPECIES_GOLEM_ALOLA 969 +#define SPECIES_GRIMER_ALOLA 970 +#define SPECIES_MUK_ALOLA 971 +#define SPECIES_EXEGGUTOR_ALOLA 972 +#define SPECIES_MAROWAK_ALOLA 973 +#define SPECIES_MEOWTH_GALAR 974 +#define SPECIES_PONYTA_GALAR 975 +#define SPECIES_RAPIDASH_GALAR 976 +#define SPECIES_SLOWPOKE_GALAR 977 +#define SPECIES_SLOWBRO_GALAR 978 +#define SPECIES_FARFETCHD_GALAR 979 +#define SPECIES_WEEZING_GALAR 980 +#define SPECIES_MR_MIME_GALAR 981 +#define SPECIES_ARTICUNO_GALAR 982 +#define SPECIES_ZAPDOS_GALAR 983 +#define SPECIES_MOLTRES_GALAR 984 +#define SPECIES_SLOWKING_GALAR 985 +#define SPECIES_CORSOLA_GALAR 986 +#define SPECIES_ZIGZAGOON_GALAR 987 +#define SPECIES_LINOONE_GALAR 988 +#define SPECIES_DARUMAKA_GALAR 989 +#define SPECIES_DARMANITAN_GALAR_STANDARD 990 +#define SPECIES_DARMANITAN_GALAR SPECIES_DARMANITAN_GALAR_STANDARD +#define SPECIES_YAMASK_GALAR 991 +#define SPECIES_STUNFISK_GALAR 992 //Hisuian Forms -#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 +#define SPECIES_GROWLITHE_HISUI 993 +#define SPECIES_ARCANINE_HISUI 994 +#define SPECIES_VOLTORB_HISUI 995 +#define SPECIES_ELECTRODE_HISUI 996 +#define SPECIES_TYPHLOSION_HISUI 997 +#define SPECIES_QWILFISH_HISUI 998 +#define SPECIES_SNEASEL_HISUI 999 +#define SPECIES_SAMUROTT_HISUI 1000 +#define SPECIES_LILLIGANT_HISUI 1001 +#define SPECIES_ZORUA_HISUI 1002 +#define SPECIES_ZOROARK_HISUI 1003 +#define SPECIES_BRAVIARY_HISUI 1004 +#define SPECIES_SLIGGOO_HISUI 1005 +#define SPECIES_GOODRA_HISUI 1006 +#define SPECIES_AVALUGG_HISUI 1007 +#define SPECIES_DECIDUEYE_HISUI 1008 // Misc Forms #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_PHD 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_ORIGINAL 1015 +#define SPECIES_PIKACHU_HOENN 1016 +#define SPECIES_PIKACHU_SINNOH 1017 +#define SPECIES_PIKACHU_UNOVA 1018 +#define SPECIES_PIKACHU_KALOS 1019 +#define SPECIES_PIKACHU_ALOLA 1020 #define SPECIES_PIKACHU_PARTNER_CAP 1021 -#define SPECIES_PIKACHU_WORLD_CAP 1022 +#define SPECIES_PIKACHU_WORLD 1022 #define SPECIES_PICHU_SPIKY_EARED 1023 #define SPECIES_UNOWN_B 1024 #define SPECIES_UNOWN_C 1025 @@ -1112,21 +1116,21 @@ #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_UNOWN_EXCLAMATION 1049 +#define SPECIES_UNOWN_QUESTION 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_BURMY_SANDY 1057 +#define SPECIES_BURMY_TRASH 1058 +#define SPECIES_WORMADAM_SANDY 1059 +#define SPECIES_WORMADAM_TRASH 1060 #define SPECIES_CHERRIM_SUNSHINE 1061 -#define SPECIES_SHELLOS_EAST_SEA 1062 -#define SPECIES_GASTRODON_EAST_SEA 1063 +#define SPECIES_SHELLOS_EAST 1062 +#define SPECIES_GASTRODON_EAST 1063 #define SPECIES_ROTOM_HEAT 1064 #define SPECIES_ROTOM_WASH 1065 #define SPECIES_ROTOM_FROST 1066 @@ -1155,8 +1159,8 @@ #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_DARMANITAN_ZEN 1092 +#define SPECIES_DARMANITAN_GALAR_ZEN 1093 #define SPECIES_DEERLING_SUMMER 1094 #define SPECIES_DEERLING_AUTUMN 1095 #define SPECIES_DEERLING_WINTER 1096 @@ -1171,11 +1175,12 @@ #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_GENESECT_DOUSE 1108 +#define SPECIES_GENESECT_SHOCK 1109 +#define SPECIES_GENESECT_BURN 1110 +#define SPECIES_GENESECT_CHILL 1111 +#define SPECIES_GRENINJA_BOND 1112 +#define SPECIES_GRENINJA_BATTLE_BOND SPECIES_GRENINJA_BOND #define SPECIES_GRENINJA_ASH 1113 #define SPECIES_VIVILLON_POLAR 1114 #define SPECIES_VIVILLON_TUNDRA 1115 @@ -1195,20 +1200,20 @@ #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_VIVILLON_POKEBALL 1132 +#define SPECIES_FLABEBE_YELLOW 1133 +#define SPECIES_FLABEBE_ORANGE 1134 +#define SPECIES_FLABEBE_BLUE 1135 +#define SPECIES_FLABEBE_WHITE 1136 +#define SPECIES_FLOETTE_YELLOW 1137 +#define SPECIES_FLOETTE_ORANGE 1138 +#define SPECIES_FLOETTE_BLUE 1139 +#define SPECIES_FLOETTE_WHITE 1140 +#define SPECIES_FLOETTE_ETERNAL 1141 +#define SPECIES_FLORGES_YELLOW 1142 +#define SPECIES_FLORGES_ORANGE 1143 +#define SPECIES_FLORGES_BLUE 1144 +#define SPECIES_FLORGES_WHITE 1145 #define SPECIES_FURFROU_HEART_TRIM 1146 #define SPECIES_FURFROU_STAR_TRIM 1147 #define SPECIES_FURFROU_DIAMOND_TRIM 1148 @@ -1218,7 +1223,7 @@ #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_MEOWSTIC_F 1155 #define SPECIES_AEGISLASH_BLADE 1156 #define SPECIES_PUMPKABOO_SMALL 1157 #define SPECIES_PUMPKABOO_LARGE 1158 @@ -1281,7 +1286,7 @@ #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_MAGEARNA_ORIGINAL 1210 #define SPECIES_CRAMORANT_GULPING 1211 #define SPECIES_CRAMORANT_GORGING 1212 #define SPECIES_TOXTRICITY_LOW_KEY 1213 @@ -1303,17 +1308,17 @@ #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_EISCUE_NOICE 1224 +#define SPECIES_INDEEDEE_F 1225 #define SPECIES_MORPEKO_HANGRY 1226 -#define SPECIES_ZACIAN_CROWNED_SWORD 1227 -#define SPECIES_ZAMAZENTA_CROWNED_SHIELD 1228 +#define SPECIES_ZACIAN_CROWNED 1227 +#define SPECIES_ZAMAZENTA_CROWNED 1228 #define SPECIES_ETERNATUS_ETERNAMAX 1229 -#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE 1230 +#define SPECIES_URSHIFU_RAPID_STRIKE 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_CALYREX_ICE 1232 +#define SPECIES_CALYREX_SHADOW 1233 +#define SPECIES_BASCULEGION_F 1234 #define SPECIES_ALCREMIE_BERRY SPECIES_ALCREMIE_BERRY_VANILLA_CREAM #define SPECIES_ALCREMIE_BERRY_VANILLA_CREAM 1235 #define SPECIES_ALCREMIE_BERRY_RUBY_CREAM 1236 @@ -1387,9 +1392,9 @@ #define SPECIES_QUAXWELL 1296 #define SPECIES_QUAQUAVAL 1297 #define SPECIES_LECHONK 1298 -#define SPECIES_OINKOLOGNE SPECIES_OINKOLOGNE_MALE -#define SPECIES_OINKOLOGNE_MALE 1299 -#define SPECIES_OINKOLOGNE_FEMALE 1300 +#define SPECIES_OINKOLOGNE SPECIES_OINKOLOGNE_M +#define SPECIES_OINKOLOGNE_M 1299 +#define SPECIES_OINKOLOGNE_F 1300 #define SPECIES_TAROUNTULA 1301 #define SPECIES_SPIDOPS 1302 #define SPECIES_NYMBLE 1303 @@ -1398,19 +1403,19 @@ #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 1309 -#define SPECIES_MAUSHOLD_FAMILY_OF_FOUR 1310 +#define SPECIES_MAUSHOLD SPECIES_MAUSHOLD_THREE +#define SPECIES_MAUSHOLD_THREE 1309 +#define SPECIES_MAUSHOLD_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 1316 -#define SPECIES_SQUAWKABILLY_BLUE_PLUMAGE 1317 -#define SPECIES_SQUAWKABILLY_YELLOW_PLUMAGE 1318 -#define SPECIES_SQUAWKABILLY_WHITE_PLUMAGE 1319 +#define SPECIES_SQUAWKABILLY SPECIES_SQUAWKABILLY_GREEN +#define SPECIES_SQUAWKABILLY_GREEN 1316 +#define SPECIES_SQUAWKABILLY_BLUE 1317 +#define SPECIES_SQUAWKABILLY_YELLOW 1318 +#define SPECIES_SQUAWKABILLY_WHITE 1319 #define SPECIES_NACLI 1320 #define SPECIES_NACLSTACK 1321 #define SPECIES_GARGANACL 1322 @@ -1498,10 +1503,10 @@ #define SPECIES_KORAIDON 1400 #define SPECIES_MIRAIDON 1401 // Paldean Forms -#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 +#define SPECIES_TAUROS_PALDEA_COMBAT 1402 +#define SPECIES_TAUROS_PALDEA_BLAZE 1403 +#define SPECIES_TAUROS_PALDEA_AQUA 1404 +#define SPECIES_WOOPER_PALDEA 1405 // Scarlet and Violet 1.2.0 #define SPECIES_WALKING_WAKE 1406 #define SPECIES_IRON_LEAVES 1407 @@ -1516,15 +1521,15 @@ #define SPECIES_OKIDOGI 1413 #define SPECIES_MUNKIDORI 1414 #define SPECIES_FEZANDIPITI 1415 -#define SPECIES_OGERPON SPECIES_OGERPON_TEAL_MASK -#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_OGERPON SPECIES_OGERPON_TEAL +#define SPECIES_OGERPON_TEAL 1416 +#define SPECIES_OGERPON_WELLSPRING 1417 +#define SPECIES_OGERPON_HEARTHFLAME 1418 +#define SPECIES_OGERPON_CORNERSTONE 1419 +#define SPECIES_OGERPON_TEAL_TERA 1420 +#define SPECIES_OGERPON_WELLSPRING_TERA 1421 +#define SPECIES_OGERPON_HEARTHFLAME_TERA 1422 +#define SPECIES_OGERPON_CORNERSTONE_TERA 1423 #define SPECIES_URSALUNA_BLOODMOON 1424 // Indigo Disk #define SPECIES_ARCHALUDON 1425 @@ -1539,8 +1544,8 @@ #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_MOTHIM_SANDY 1436 +#define SPECIES_MOTHIM_TRASH 1437 #define SPECIES_SCATTERBUG_POLAR 1438 #define SPECIES_SCATTERBUG_TUNDRA 1439 #define SPECIES_SCATTERBUG_CONTINENTAL 1440 @@ -1559,7 +1564,7 @@ #define SPECIES_SCATTERBUG_OCEAN 1453 #define SPECIES_SCATTERBUG_JUNGLE 1454 #define SPECIES_SCATTERBUG_FANCY 1455 -#define SPECIES_SCATTERBUG_POKE_BALL 1456 +#define SPECIES_SCATTERBUG_POKEBALL 1456 #define SPECIES_SPEWPA_POLAR 1457 #define SPECIES_SPEWPA_TUNDRA 1458 #define SPECIES_SPEWPA_CONTINENTAL 1459 @@ -1578,8 +1583,8 @@ #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_SPEWPA_POKEBALL 1475 +#define SPECIES_RATICATE_ALOLA_TOTEM 1476 #define SPECIES_GUMSHOOS_TOTEM 1477 #define SPECIES_VIKAVOLT_TOTEM 1478 #define SPECIES_LURANTIS_TOTEM 1479 @@ -1587,191 +1592,56 @@ #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_MAROWAK_ALOLA_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 SPECIES_PIKACHU_STARTER 1487 +#define SPECIES_EEVEE_STARTER 1488 +#define SPECIES_VENUSAUR_GMAX 1489 +#define SPECIES_BLASTOISE_GMAX 1490 +#define SPECIES_CHARIZARD_GMAX 1491 +#define SPECIES_BUTTERFREE_GMAX 1492 +#define SPECIES_PIKACHU_GMAX 1493 +#define SPECIES_MEOWTH_GMAX 1494 +#define SPECIES_MACHAMP_GMAX 1495 +#define SPECIES_GENGAR_GMAX 1496 +#define SPECIES_KINGLER_GMAX 1497 +#define SPECIES_LAPRAS_GMAX 1498 +#define SPECIES_EEVEE_GMAX 1499 +#define SPECIES_SNORLAX_GMAX 1500 +#define SPECIES_GARBODOR_GMAX 1501 +#define SPECIES_MELMETAL_GMAX 1502 +#define SPECIES_RILLABOOM_GMAX 1503 +#define SPECIES_CINDERACE_GMAX 1504 +#define SPECIES_INTELEON_GMAX 1505 +#define SPECIES_CORVIKNIGHT_GMAX 1506 +#define SPECIES_ORBEETLE_GMAX 1507 +#define SPECIES_DREDNAW_GMAX 1508 +#define SPECIES_COALOSSAL_GMAX 1509 +#define SPECIES_FLAPPLE_GMAX 1510 +#define SPECIES_APPLETUN_GMAX 1511 +#define SPECIES_SANDACONDA_GMAX 1512 +#define SPECIES_TOXTRICITY_AMPED_GMAX 1513 +#define SPECIES_TOXTRICITY_LOW_KEY_GMAX 1514 +#define SPECIES_CENTISKORCH_GMAX 1515 +#define SPECIES_HATTERENE_GMAX 1516 +#define SPECIES_GRIMMSNARL_GMAX 1517 +#define SPECIES_ALCREMIE_GMAX 1518 +#define SPECIES_COPPERAJAH_GMAX 1519 +#define SPECIES_DURALUDON_GMAX 1520 +#define SPECIES_URSHIFU_SINGLE_STRIKE_GMAX 1521 +#define SPECIES_URSHIFU_GMAX SPECIES_URSHIFU_SINGLE_STRIKE_GMAX +#define SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GMAX SPECIES_URSHIFU_SINGLE_STRIKE_GMAX +#define SPECIES_URSHIFU_RAPID_STRIKE_GMAX 1522 +#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX SPECIES_URSHIFU_RAPID_STRIKE_GMAX +#define SPECIES_MIMIKYU_BUSTED_TOTEM 1523 +#define SPECIES_MIMIKYU_TOTEM_BUSTED SPECIES_MIMIKYU_BUSTED_TOTEM -#define SPECIES_EGG (SPECIES_MIMIKYU_TOTEM_BUSTED + 1) +#define SPECIES_EGG (SPECIES_MIMIKYU_BUSTED_TOTEM + 1) #define NUM_SPECIES SPECIES_EGG #define SPECIES_SHINY_TAG 5000 -// Competitive format aliases -#define SPECIES_ALCREMIE_GMAX SPECIES_ALCREMIE_GIGANTAMAX -#define SPECIES_APPLETUN_GMAX SPECIES_APPLETUN_GIGANTAMAX -#define SPECIES_ARCANINE_HISUI SPECIES_ARCANINE_HISUIAN -#define SPECIES_ARTICUNO_GALAR SPECIES_ARTICUNO_GALARIAN -#define SPECIES_AVALUGG_HISUI SPECIES_AVALUGG_HISUIAN -#define SPECIES_BLASTOISE_GMAX SPECIES_BLASTOISE_GIGANTAMAX -#define SPECIES_BRAVIARY_HISUI SPECIES_BRAVIARY_HISUIAN -#define SPECIES_BURMY_SANDY SPECIES_BURMY_SANDY_CLOAK -#define SPECIES_BURMY_TRASH SPECIES_BURMY_TRASH_CLOAK -#define SPECIES_BUTTERFREE_GMAX SPECIES_BUTTERFREE_GIGANTAMAX -#define SPECIES_CALYREX_ICE SPECIES_CALYREX_ICE_RIDER -#define SPECIES_CALYREX_SHADOW SPECIES_CALYREX_SHADOW_RIDER -#define SPECIES_CENTISKORCH_GMAX SPECIES_CENTISKORCH_GIGANTAMAX -#define SPECIES_CHARIZARD_GMAX SPECIES_CHARIZARD_GIGANTAMAX -#define SPECIES_CINDERACE_GMAX SPECIES_CINDERACE_GIGANTAMAX -#define SPECIES_COALOSSAL_GMAX SPECIES_COALOSSAL_GIGANTAMAX -#define SPECIES_COPPERAJAH_GMAX SPECIES_COPPERAJAH_GIGANTAMAX -#define SPECIES_CORSOLA_GALAR SPECIES_CORSOLA_GALARIAN -#define SPECIES_CORVIKNIGHT_GMAX SPECIES_CORVIKNIGHT_GIGANTAMAX -#define SPECIES_DARMANITAN_GALAR SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE -#define SPECIES_DARMANITAN_GALAR_ZEN SPECIES_DARMANITAN_GALARIAN_ZEN_MODE -#define SPECIES_DARMANITAN_ZEN SPECIES_DARMANITAN_ZEN_MODE -#define SPECIES_DARUMAKA_GALAR SPECIES_DARUMAKA_GALARIAN -#define SPECIES_DECIDUEYE_HISUI SPECIES_DECIDUEYE_HISUIAN -#define SPECIES_DIGLETT_ALOLA SPECIES_DIGLETT_ALOLAN -#define SPECIES_DREDNAW_GMAX SPECIES_DREDNAW_GIGANTAMAX -#define SPECIES_DUGTRIO_ALOLA SPECIES_DUGTRIO_ALOLAN -#define SPECIES_DURALUDON_GMAX SPECIES_DURALUDON_GIGANTAMAX -#define SPECIES_EEVEE_GMAX SPECIES_EEVEE_GIGANTAMAX -#define SPECIES_EEVEE_STARTER SPECIES_EEVEE_PARTNER -#define SPECIES_EISCUE_NOICE SPECIES_EISCUE_NOICE_FACE -#define SPECIES_ELECTRODE_HISUI SPECIES_ELECTRODE_HISUIAN -#define SPECIES_EXEGGUTOR_ALOLA SPECIES_EXEGGUTOR_ALOLAN -#define SPECIES_FARFETCHD_GALAR SPECIES_FARFETCHD_GALARIAN -#define SPECIES_FLAPPLE_GMAX SPECIES_FLAPPLE_GIGANTAMAX -#define SPECIES_FLOETTE_ETERNAL SPECIES_FLOETTE_ETERNAL_FLOWER -#define SPECIES_GARBODOR_GMAX SPECIES_GARBODOR_GIGANTAMAX -#define SPECIES_GASTRODON_EAST SPECIES_GASTRODON_EAST_SEA -#define SPECIES_GENESECT_BURN SPECIES_GENESECT_BURN_DRIVE -#define SPECIES_GENESECT_CHILL SPECIES_GENESECT_CHILL_DRIVE -#define SPECIES_GENESECT_DOUSE SPECIES_GENESECT_DOUSE_DRIVE -#define SPECIES_GENESECT_SHOCK SPECIES_GENESECT_SHOCK_DRIVE -#define SPECIES_GENGAR_GMAX SPECIES_GENGAR_GIGANTAMAX -#define SPECIES_GEODUDE_ALOLA SPECIES_GEODUDE_ALOLAN -#define SPECIES_GOLEM_ALOLA SPECIES_GOLEM_ALOLAN -#define SPECIES_GOODRA_HISUI SPECIES_GOODRA_HISUIAN -#define SPECIES_GRAVELER_ALOLA SPECIES_GRAVELER_ALOLAN -#define SPECIES_GRENINJA_BOND SPECIES_GRENINJA_BATTLE_BOND -#define SPECIES_GRIMER_ALOLA SPECIES_GRIMER_ALOLAN -#define SPECIES_GRIMMSNARL_GMAX SPECIES_GRIMMSNARL_GIGANTAMAX -#define SPECIES_GROWLITHE_HISUI SPECIES_GROWLITHE_HISUIAN -#define SPECIES_HATTERENE_GMAX SPECIES_HATTERENE_GIGANTAMAX -#define SPECIES_INTELEON_GMAX SPECIES_INTELEON_GIGANTAMAX -#define SPECIES_KINGLER_GMAX SPECIES_KINGLER_GIGANTAMAX -#define SPECIES_LAPRAS_GMAX SPECIES_LAPRAS_GIGANTAMAX -#define SPECIES_LILLIGANT_HISUI SPECIES_LILLIGANT_HISUIAN -#define SPECIES_LINOONE_GALAR SPECIES_LINOONE_GALARIAN -#define SPECIES_MACHAMP_GMAX SPECIES_MACHAMP_GIGANTAMAX -#define SPECIES_MAGEARNA_ORIGINAL SPECIES_MAGEARNA_ORIGINAL_COLOR -#define SPECIES_MAROWAK_ALOLA SPECIES_MAROWAK_ALOLAN -#define SPECIES_MAROWAK_ALOLA_TOTEM SPECIES_MAROWAK_ALOLAN_TOTEM -#define SPECIES_MAUSHOLD_FOUR SPECIES_MAUSHOLD_FAMILY_OF_FOUR -#define SPECIES_MELMETAL_GMAX SPECIES_MELMETAL_GIGANTAMAX -#define SPECIES_MEOWTH_ALOLA SPECIES_MEOWTH_ALOLAN -#define SPECIES_MEOWTH_GALAR SPECIES_MEOWTH_GALARIAN -#define SPECIES_MEOWTH_GMAX SPECIES_MEOWTH_GIGANTAMAX -#define SPECIES_MOLTRES_GALAR SPECIES_MOLTRES_GALARIAN -#define SPECIES_MR_MIME_GALAR SPECIES_MR_MIME_GALARIAN -#define SPECIES_MUK_ALOLA SPECIES_MUK_ALOLAN -#define SPECIES_NINETALES_ALOLA SPECIES_NINETALES_ALOLAN -#define SPECIES_OGERPON_TEAL SPECIES_OGERPON_TEAL_MASK -#define SPECIES_OGERPON_WELLSPRING SPECIES_OGERPON_WELLSPRING_MASK -#define SPECIES_OGERPON_HEARTHFLAME SPECIES_OGERPON_HEARTHFLAME_MASK -#define SPECIES_OGERPON_CORNERSTONE SPECIES_OGERPON_CORNERSTONE_MASK -#define SPECIES_ORBEETLE_GMAX SPECIES_ORBEETLE_GIGANTAMAX -#define SPECIES_PERSIAN_ALOLA SPECIES_PERSIAN_ALOLAN -#define SPECIES_PIKACHU_ALOLA SPECIES_PIKACHU_ALOLA_CAP -#define SPECIES_PIKACHU_GMAX SPECIES_PIKACHU_GIGANTAMAX -#define SPECIES_PIKACHU_HOENN SPECIES_PIKACHU_HOENN_CAP -#define SPECIES_PIKACHU_KALOS SPECIES_PIKACHU_KALOS_CAP -#define SPECIES_PIKACHU_ORIGINAL SPECIES_PIKACHU_ORIGINAL_CAP -//#define SPECIES_PIKACHU_PARTNER SPECIES_PIKACHU_PARTNER_CAP -#define SPECIES_PIKACHU_PHD SPECIES_PIKACHU_PH_D -#define SPECIES_PIKACHU_SINNOH SPECIES_PIKACHU_SINNOH_CAP -#define SPECIES_PIKACHU_STARTER SPECIES_PIKACHU_PARTNER -#define SPECIES_PIKACHU_UNOVA SPECIES_PIKACHU_UNOVA_CAP -#define SPECIES_PIKACHU_WORLD SPECIES_PIKACHU_WORLD_CAP -#define SPECIES_PONYTA_GALAR SPECIES_PONYTA_GALARIAN -#define SPECIES_QWILFISH_HISUI SPECIES_QWILFISH_HISUIAN -#define SPECIES_RAICHU_ALOLA SPECIES_RAICHU_ALOLAN -#define SPECIES_RAPIDASH_GALAR SPECIES_RAPIDASH_GALARIAN -#define SPECIES_RATICATE_ALOLA SPECIES_RATICATE_ALOLAN -#define SPECIES_RATICATE_ALOLA_TOTEM SPECIES_RATICATE_ALOLAN_TOTEM -#define SPECIES_RATTATA_ALOLA SPECIES_RATTATA_ALOLAN -#define SPECIES_RILLABOOM_GMAX SPECIES_RILLABOOM_GIGANTAMAX -#define SPECIES_SAMUROTT_HISUI SPECIES_SAMUROTT_HISUIAN -#define SPECIES_SANDACONDA_GMAX SPECIES_SANDACONDA_GIGANTAMAX -#define SPECIES_SANDSHREW_ALOLA SPECIES_SANDSHREW_ALOLAN -#define SPECIES_SANDSLASH_ALOLA SPECIES_SANDSLASH_ALOLAN -#define SPECIES_SHELLOS_EAST SPECIES_SHELLOS_EAST_SEA -#define SPECIES_SIRFETCH_D SPECIES_SIRFETCHD -#define SPECIES_SLIGGOO_HISUI SPECIES_SLIGGOO_HISUIAN -#define SPECIES_SLOWBRO_GALAR SPECIES_SLOWBRO_GALARIAN -#define SPECIES_SLOWKING_GALAR SPECIES_SLOWKING_GALARIAN -#define SPECIES_SLOWPOKE_GALAR SPECIES_SLOWPOKE_GALARIAN -#define SPECIES_SNEASEL_HISUI SPECIES_SNEASEL_HISUIAN -#define SPECIES_SNORLAX_GMAX SPECIES_SNORLAX_GIGANTAMAX -#define SPECIES_SQUAWKABILLY_BLUE SPECIES_SQUAWKABILLY_BLUE_PLUMAGE -#define SPECIES_SQUAWKABILLY_WHITE SPECIES_SQUAWKABILLY_WHITE_PLUMAGE -#define SPECIES_SQUAWKABILLY_YELLOW SPECIES_SQUAWKABILLY_YELLOW_PLUMAGE -#define SPECIES_STUNFISK_GALAR SPECIES_STUNFISK_GALARIAN -#define SPECIES_TAUROS_PALDEA_AQUA SPECIES_TAUROS_PALDEAN_AQUA_BREED -#define SPECIES_TAUROS_PALDEA_BLAZE SPECIES_TAUROS_PALDEAN_BLAZE_BREED -#define SPECIES_TAUROS_PALDEA_COMBAT SPECIES_TAUROS_PALDEAN_COMBAT_BREED -#define SPECIES_TOXTRICITY_AMPED_GMAX SPECIES_TOXTRICITY_AMPED_GIGANTAMAX -#define SPECIES_TOXTRICITY_LOW_KEY_GMAX SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX -#define SPECIES_TYPHLOSION_HISUI SPECIES_TYPHLOSION_HISUIAN -#define SPECIES_UNOWN_EXCLAMATION SPECIES_UNOWN_EMARK -#define SPECIES_UNOWN_QUESTION SPECIES_UNOWN_QMARK -#define SPECIES_URSHIFU_GMAX SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX -#define SPECIES_URSHIFU_RAPID_STRIKE SPECIES_URSHIFU_RAPID_STRIKE_STYLE -#define SPECIES_URSHIFU_RAPID_STRIKE_GMAX SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX -#define SPECIES_VENUSAUR_GMAX SPECIES_VENUSAUR_GIGANTAMAX -#define SPECIES_VIVILLON_POKEBALL SPECIES_VIVILLON_POKE_BALL -#define SPECIES_VOLTORB_HISUI SPECIES_VOLTORB_HISUIAN -#define SPECIES_VULPIX_ALOLA SPECIES_VULPIX_ALOLAN -#define SPECIES_WEEZING_GALAR SPECIES_WEEZING_GALARIAN -#define SPECIES_WOOPER_PALDEA SPECIES_WOOPER_PALDEAN -#define SPECIES_WORMADAM_SANDY SPECIES_WORMADAM_SANDY_CLOAK -#define SPECIES_WORMADAM_TRASH SPECIES_WORMADAM_TRASH_CLOAK -#define SPECIES_YAMASK_GALAR SPECIES_YAMASK_GALARIAN -#define SPECIES_ZACIAN_CROWNED SPECIES_ZACIAN_CROWNED_SWORD -#define SPECIES_ZAMAZENTA_CROWNED SPECIES_ZAMAZENTA_CROWNED_SHIELD -#define SPECIES_ZAPDOS_GALAR SPECIES_ZAPDOS_GALARIAN -#define SPECIES_ZIGZAGOON_GALAR SPECIES_ZIGZAGOON_GALARIAN -#define SPECIES_ZOROARK_HISUI SPECIES_ZOROARK_HISUIAN -#define SPECIES_ZORUA_HISUI SPECIES_ZORUA_HISUIAN - #endif // GUARD_CONSTANTS_SPECIES_H diff --git a/include/item_use.h b/include/item_use.h index c5a21862fd..d7871fd6f2 100644 --- a/include/item_use.h +++ b/include/item_use.h @@ -47,6 +47,8 @@ u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId); void FieldUseFunc_VsSeeker(u8 taskId); void Task_ItemUse_CloseMessageBoxAndReturnToField_VsSeeker(u8 taskId); void DisplayDadsAdviceCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField); +void ItemUseOutOfBattle_PokeFlute(u8 taskId); +void ItemUseOutOfBattle_TownMap(u8 taskId); enum { BALL_THROW_UNABLE_TWO_MONS, diff --git a/include/link.h b/include/link.h index 66dd5fecd2..6763065055 100644 --- a/include/link.h +++ b/include/link.h @@ -344,5 +344,6 @@ bool8 DoesLinkPlayerCountMatchSaved(void); void SetCloseLinkCallbackAndType(u16 type); bool32 IsSendingKeysToLink(void); u32 GetLinkRecvQueueLength(void); +bool32 ShouldCheckForUnionRoom(void); #endif // GUARD_LINK_H diff --git a/include/party_menu.h b/include/party_menu.h index a34f06cec6..abea29b6bb 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -102,5 +102,6 @@ void MoveDeleterForgetMove(void); void BufferMoveDeleterNicknameAndMove(void); void GetNumMovesSelectedMonHas(void); void MoveDeleterChooseMoveToForget(void); +bool32 IsItemFlute(u16 item); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon.h b/include/pokemon.h index 4dbd86a391..14288ddee7 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -457,9 +457,12 @@ struct SpeciesInfo /*0xC4*/ /* 0x94 */ const struct FormChange *formChangeTable; #if OW_POKEMON_OBJECT_EVENTS /* 0x98 */ struct ObjectEventGraphicsInfo overworldData; + struct ObjectEventGraphicsInfo overworldDataFemale; #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE /* 0xBC */ const void* overworldPalette; + const void* overworldPaletteFemale; /* 0xC0 */ const void* overworldShinyPalette; + const void* overworldShinyPaletteFemale; #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS }; diff --git a/include/strings.h b/include/strings.h index 84f87ff491..b1078bed0a 100644 --- a/include/strings.h +++ b/include/strings.h @@ -833,6 +833,9 @@ extern const u8 gText_UsedVar2WildRepelled[]; extern const u8 gText_BoxFull[]; extern const u8 gText_WontHaveEffect[]; extern const u8 gText_NextFusionMon[]; +extern const u8 gText_PlayedPokeFluteCatchy[]; +extern const u8 gText_PlayedPokeFlute[]; +extern const u8 gText_PokeFluteAwakenedMon[]; extern const u8 gText_LevelSymbol[]; extern const u8 gText_PkmnInfo[]; diff --git a/include/test/battle.h b/include/test/battle.h index c28410948d..041ebc1c72 100644 --- a/include/test/battle.h +++ b/include/test/battle.h @@ -645,6 +645,15 @@ struct AILogLine s16 score; }; +// Data which is updated by the test runner during a battle and needs to +// be reset between trials. +struct BattleTrialData +{ + u8 lastActionTurn; + u8 queuedEvent; + u8 aiActionsPlayed[MAX_BATTLERS_COUNT]; +}; + struct BattleTestData { u8 stack[BATTLE_TEST_STACK_SIZE]; @@ -676,20 +685,19 @@ struct BattleTestData u8 battleRecordSourceLineOffsets[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE]; u16 recordIndexes[MAX_BATTLERS_COUNT]; struct BattlerTurn battleRecordTurns[MAX_TURNS][MAX_BATTLERS_COUNT]; - u8 lastActionTurn; u8 queuedEventsCount; u8 queueGroupType; u8 queueGroupStart; - u8 queuedEvent; struct QueuedEvent queuedEvents[MAX_QUEUED_EVENTS]; u8 expectedAiActionIndex[MAX_BATTLERS_COUNT]; - u8 aiActionsPlayed[MAX_BATTLERS_COUNT]; struct ExpectedAIAction expectedAiActions[MAX_BATTLERS_COUNT][MAX_EXPECTED_ACTIONS]; struct ExpectedAiScore expectedAiScores[MAX_BATTLERS_COUNT][MAX_TURNS][MAX_AI_SCORE_COMPARISION_PER_TURN]; // Max 4 comparisions per turn struct AILogLine aiLogLines[MAX_BATTLERS_COUNT][MAX_MON_MOVES][MAX_AI_LOG_LINES]; u8 aiLogPrintedForMove[MAX_BATTLERS_COUNT]; // Marks ai score log as printed for move, so the same log isn't displayed multiple times. u16 flagId; + + struct BattleTrialData trial; }; struct BattleTestRunnerState diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index 7855bf8d21..5e9a4d7532 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -744,6 +744,9 @@ $(POKEMONGFXDIR)/ivysaur/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/venusaur/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/venusaur/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/charmander/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -771,6 +774,9 @@ $(POKEMONGFXDIR)/metapod/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/butterfree/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/butterfree/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/weedle/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -792,9 +798,15 @@ $(POKEMONGFXDIR)/pidgeot/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/rattata/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/rattata/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/raticate/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/raticate/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/spearow/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -810,9 +822,15 @@ $(POKEMONGFXDIR)/arbok/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/pikachu/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/pikachu/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/raichu/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/raichu/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/sandshrew/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -858,18 +876,30 @@ $(POKEMONGFXDIR)/wigglytuff/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/zubat/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/zubat/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/golbat/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/golbat/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/oddish/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 $(POKEMONGFXDIR)/gloom/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/gloom/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/vileplume/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/vileplume/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/paras/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -927,9 +957,15 @@ $(POKEMONGFXDIR)/abra/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/kadabra/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/kadabra/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/alakazam/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/alakazam/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/machop/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -987,9 +1023,15 @@ $(POKEMONGFXDIR)/farfetchd/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/doduo/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/doduo/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/dodrio/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/dodrio/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/seel/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1026,6 +1068,9 @@ $(POKEMONGFXDIR)/drowzee/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/hypno/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/hypno/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/krabby/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1068,9 +1113,15 @@ $(POKEMONGFXDIR)/weezing/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/rhyhorn/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/rhyhorn/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/rhydon/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/rhydon/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/chansey/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1089,9 +1140,15 @@ $(POKEMONGFXDIR)/seadra/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/goldeen/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/goldeen/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/seaking/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/seaking/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/staryu/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1104,6 +1161,9 @@ $(POKEMONGFXDIR)/mr_mime/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/scyther/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/scyther/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/jynx/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1122,9 +1182,15 @@ $(POKEMONGFXDIR)/tauros/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/magikarp/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/magikarp/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/gyarados/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/gyarados/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/lapras/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1134,6 +1200,9 @@ $(POKEMONGFXDIR)/ditto/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/eevee/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/eevee/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/vaporeon/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1197,6 +1266,9 @@ $(POKEMONGFXDIR)/bayleef/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/meganium/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/meganium/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/cyndaquil/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1230,9 +1302,15 @@ $(POKEMONGFXDIR)/noctowl/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/ledyba/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/ledyba/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/ledian/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/ledian/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/spinarak/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1269,6 +1347,9 @@ $(POKEMONGFXDIR)/natu/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/xatu/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/xatu/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/mareep/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1290,9 +1371,15 @@ $(POKEMONGFXDIR)/azumarill/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/sudowoodo/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/sudowoodo/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/politoed/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/politoed/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/hoppip/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1305,6 +1392,9 @@ $(POKEMONGFXDIR)/jumpluff/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/aipom/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/aipom/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/sunkern/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1317,9 +1407,15 @@ $(POKEMONGFXDIR)/yanma/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/wooper/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/wooper/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/quagsire/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/quagsire/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/espeon/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1329,6 +1425,9 @@ $(POKEMONGFXDIR)/umbreon/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/murkrow/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/murkrow/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/slowking/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1422,9 +1521,15 @@ $(POKEMONGFXDIR)/unown/question_mark/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/wobbuffet/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/wobbuffet/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/girafarig/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/girafarig/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/pineco/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1437,9 +1542,15 @@ $(POKEMONGFXDIR)/dunsparce/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/gligar/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/gligar/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/steelix/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 8 -mheight 8 +$(POKEMONGFXDIR)/steelix/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + $(POKEMONGFXDIR)/snubbull/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1452,21 +1563,33 @@ $(POKEMONGFXDIR)/qwilfish/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/scizor/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/scizor/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/shuckle/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 $(POKEMONGFXDIR)/heracross/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/heracross/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/sneasel/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/sneasel/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/teddiursa/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 $(POKEMONGFXDIR)/ursaring/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/ursaring/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/slugma/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1479,6 +1602,9 @@ $(POKEMONGFXDIR)/swinub/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/piloswine/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/piloswine/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/corsola/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1488,6 +1614,9 @@ $(POKEMONGFXDIR)/remoraid/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/octillery/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/octillery/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/delibird/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1503,6 +1632,9 @@ $(POKEMONGFXDIR)/houndour/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/houndoom/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/houndoom/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/kingdra/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1512,6 +1644,9 @@ $(POKEMONGFXDIR)/phanpy/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/donphan/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/donphan/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/porygon2/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1581,12 +1716,21 @@ $(POKEMONGFXDIR)/sceptile/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/torchic/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/torchic/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/combusken/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/combusken/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/blaziken/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/blaziken/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/mudkip/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1617,12 +1761,18 @@ $(POKEMONGFXDIR)/silcoon/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/beautifly/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/beautifly/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/cascoon/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 $(POKEMONGFXDIR)/dustox/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/dustox/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/lotad/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1632,15 +1782,24 @@ $(POKEMONGFXDIR)/lombre/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/ludicolo/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/ludicolo/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/seedot/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 $(POKEMONGFXDIR)/nuzleaf/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/nuzleaf/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/shiftry/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/shiftry/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/taillow/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1737,9 +1896,15 @@ $(POKEMONGFXDIR)/aggron/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/meditite/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/meditite/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/medicham/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/medicham/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/electrike/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1761,12 +1926,21 @@ $(POKEMONGFXDIR)/illumise/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/roselia/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/roselia/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/gulpin/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/gulpin/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/swalot/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/swalot/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/carvanha/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1782,9 +1956,15 @@ $(POKEMONGFXDIR)/wailord/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/numel/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/numel/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/camerupt/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/camerupt/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/torkoal/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1812,6 +1992,9 @@ $(POKEMONGFXDIR)/cacnea/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/cacturne/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/cacturne/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/swablu/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1866,6 +2049,9 @@ $(POKEMONGFXDIR)/feebas/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/milotic/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/milotic/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/castform/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -1932,6 +2118,9 @@ $(POKEMONGFXDIR)/gorebyss/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/relicanth/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/relicanth/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/luvdisc/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -2013,39 +2202,72 @@ $(POKEMONGFXDIR)/empoleon/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/starly/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/starly/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/staravia/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/staravia/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/staraptor/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/staraptor/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/bidoof/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/bidoof/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/bibarel/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/bibarel/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/kricketot/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/kricketot/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/kricketune/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/kricketune/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/shinx/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/shinx/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/luxio/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/luxio/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/luxray/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/luxray/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/budew/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 $(POKEMONGFXDIR)/roserade/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/roserade/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/cranidos/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -2070,18 +2292,30 @@ $(POKEMONGFXDIR)/mothim/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/combee/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/combee/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/vespiquen/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 $(POKEMONGFXDIR)/pachirisu/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/pachirisu/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/buizel/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/buizel/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/floatzel/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/floatzel/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/cherubi/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -2097,6 +2331,9 @@ $(POKEMONGFXDIR)/gastrodon/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/ambipom/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/ambipom/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/drifloon/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -2154,12 +2391,21 @@ $(POKEMONGFXDIR)/spiritomb/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/gible/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/gible/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/gabite/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/gabite/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/garchomp/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/garchomp/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/munchlax/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -2172,9 +2418,15 @@ $(POKEMONGFXDIR)/lucario/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/hippopotas/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/hippopotas/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/hippowdon/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/hippowdon/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/skorupi/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -2184,30 +2436,51 @@ $(POKEMONGFXDIR)/drapion/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/croagunk/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/croagunk/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/toxicroak/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/toxicroak/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/carnivine/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 $(POKEMONGFXDIR)/finneon/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/finneon/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/lumineon/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/lumineon/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/mantyke/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 $(POKEMONGFXDIR)/snover/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/snover/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/abomasnow/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/abomasnow/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/weavile/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/weavile/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/magnezone/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -2217,9 +2490,15 @@ $(POKEMONGFXDIR)/lickilicky/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/rhyperior/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/rhyperior/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/tangrowth/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/tangrowth/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/electivire/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -2244,6 +2523,9 @@ $(POKEMONGFXDIR)/gliscor/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/mamoswine/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/mamoswine/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/porygon_z/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -2388,6 +2670,9 @@ $(POKEMONGFXDIR)/tranquill/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/unfezant/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/unfezant/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/blitzle/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -2601,9 +2886,15 @@ $(POKEMONGFXDIR)/amoonguss/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/frillish/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/frillish/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/jellicent/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/jellicent/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/alomomola/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -2829,6 +3120,9 @@ $(POKEMONGFXDIR)/litleo/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/pyroar/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/pyroar/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/flabebe/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -3633,6 +3927,9 @@ $(POKEMONGFXDIR)/qwilfish/hisuian/overworld.4bpp: %.4bpp: %.png $(POKEMONGFXDIR)/sneasel/hisuian/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(POKEMONGFXDIR)/sneasel/hisuian/overworldf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(POKEMONGFXDIR)/zorua/hisuian/overworld.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index e686b52071..5ab8e652c6 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -389,7 +389,7 @@ void Ai_UpdateFaintData(u32 battler) aiMon->isFainted = TRUE; } -static void SetBattlerAiData(u32 battler, struct AiLogicData *aiData) +void SetBattlerAiData(u32 battler, struct AiLogicData *aiData) { u32 ability, holdEffect; @@ -3348,6 +3348,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case EFFECT_ABSORB: if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_BIG_ROOT && effectiveness >= AI_EFFECTIVENESS_x1) ADJUST_SCORE(DECENT_EFFECT); + break; case EFFECT_EXPLOSION: case EFFECT_MEMENTO: if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_WILL_SUICIDE && gBattleMons[battlerDef].statStages[STAT_EVASION] < 7) @@ -3362,7 +3363,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) break; case EFFECT_MIRROR_MOVE: if (predictedMove != MOVE_NONE) - return AI_CheckViability(battlerAtk, battlerDef, gLastMoves[battlerDef], score); + return AI_CheckViability(battlerAtk, battlerDef, predictedMove, score); break; case EFFECT_ATTACK_UP: case EFFECT_ATTACK_UP_USER_ALLY: diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 3f13a8c3f4..9731a6393b 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -1789,30 +1789,60 @@ static bool32 CanAbilityTrapOpponent(u16 ability, u32 opponent) return FALSE; } -// This function splits switching behaviour mid-battle from after a KO. -// Mid battle, it integrates GetBestMonTypeMatchup (vanilla with modifications), GetBestMonDefensive (custom), and GetBestMonBatonPass (vanilla with modifications) -// After a KO, integrates GetBestMonRevengeKiller (custom), GetBestMonTypeMatchup (vanilla with modifications), GetBestMonBatonPass (vanilla with modifications), and GetBestMonDmg (vanilla) -// the Type Matchup code will prioritize switching into a mon with the best type matchup and also a super effective move, or just best type matchup if no super effective move is found -// the Most Defensive code will prioritize switching into the mon that takes the most hits to KO, with a minimum of 4 hits required to be considered a valid option -// the Baton Pass code will prioritize switching into a mon with Baton Pass if it can get in, boost, and BP out without being KO'd, and randomizes between multiple valid options -// the Revenge Killer code will prioritize, in order, OHKO and outspeeds / OHKO, slower but not 2HKO'd / 2HKO, outspeeds and not OHKO'd / 2HKO, slower but not 3HKO'd -// the Most Damage code will prioritize switching into whatever mon deals the most damage, which is generally not as good as having a good Type Matchup -// Everything runs in the same loop to minimize computation time. This makes it harder to read, but hopefully the comments can guide you! +static inline bool32 IsFreeSwitch(bool32 isSwitchAfterKO, u32 battlerSwitchingOut, u32 opposingBattler) +{ + bool32 movedSecond = GetBattlerTurnOrderNum(battlerSwitchingOut) > GetBattlerTurnOrderNum(opposingBattler) ? TRUE : FALSE; + // Switch out effects + if (!IsDoubleBattle()) // Not handling doubles' additional complexity + { + if (IsSwitchOutEffect(gMovesInfo[gLastUsedMove].effect) && movedSecond) + return TRUE; + if (AI_DATA->ejectButtonSwitch) + return TRUE; + if (AI_DATA->ejectPackSwitch) + { + // If faster, not a free switch; likely lowered own stats + if (!movedSecond) + return FALSE; + // Otherwise, free switch + return TRUE; + } + } + + // Post KO check has to be last because the GetMostSuitableMonToSwitchInto call in OpponentHandleChoosePokemon assumes a KO rather than a forced switch choice + if (isSwitchAfterKO) + return TRUE; + else + return FALSE; +} + +static inline bool32 CanSwitchinWin1v1(u32 hitsToKOAI, u32 hitsToKOPlayer, bool32 isSwitchinFirst, bool32 isFreeSwitch) +{ + // Free switch, need to outspeed or take 1 extra hit + if (isFreeSwitch) + { + if (hitsToKOAI > hitsToKOPlayer || (hitsToKOAI == hitsToKOPlayer && isSwitchinFirst)) + return TRUE; + } + // Mid battle switch, need to take 1 or 2 extra hits depending on speed + if (hitsToKOAI > hitsToKOPlayer + 1 || (hitsToKOAI == hitsToKOPlayer + 1 && isSwitchinFirst)) + return TRUE; + return FALSE; +} + +// This function splits switching behaviour depending on whether the switch is free. +// Everything runs in the same loop to minimize computation time. This makes it harder to read, but hopefully the comments can guide you! static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, u32 battler, u32 opposingBattler, u32 battlerIn1, u32 battlerIn2, bool32 isSwitchAfterKO) { int revengeKillerId = PARTY_SIZE, slowRevengeKillerId = PARTY_SIZE, fastThreatenId = PARTY_SIZE, slowThreatenId = PARTY_SIZE, damageMonId = PARTY_SIZE; int batonPassId = PARTY_SIZE, typeMatchupId = PARTY_SIZE, typeMatchupEffectiveId = PARTY_SIZE, defensiveMonId = PARTY_SIZE, aceMonId = PARTY_SIZE, trapperId = PARTY_SIZE; int i, j, aliveCount = 0, bits = 0; s32 defensiveMonHitKOThreshold = 3; // 3HKO threshold that candidate defensive mons must exceed - u32 aiMove, hitsToKOAI, hitsToKOPlayer, hitsToKOAIThreshold, maxHitsToKO = 0; - s32 playerMonSpeed = gBattleMons[opposingBattler].speed, playerMonHP = gBattleMons[opposingBattler].hp, aiMonSpeed, aiMovePriority = 0, maxDamageDealt = 0, damageDealt = 0; + s32 playerMonHP = gBattleMons[opposingBattler].hp, maxDamageDealt = 0, damageDealt = 0; + u32 aiMove, hitsToKOAI, maxHitsToKO = 0; u16 bestResist = UQ_4_12(1.0), bestResistEffective = UQ_4_12(1.0), typeMatchup; - - if (isSwitchAfterKO) - hitsToKOAIThreshold = 1; // After a KO, mons at minimum need to not be 1-shot, as they switch in for free - else - hitsToKOAIThreshold = 2; // When switching in otherwise need to not be 2-shot, as they do not switch in for free + bool32 isFreeSwitch = IsFreeSwitch(isSwitchAfterKO, battlerIn1, opposingBattler), isSwitchinFirst, canSwitchinWin1v1; // Iterate through mons for (i = firstId; i < lastId; i++) @@ -1841,10 +1871,11 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, if (AI_DATA->switchinCandidate.battleMon.ability == ABILITY_TRUANT && IsTruantMonVulnerable(battler, opposingBattler)) continue; - // Get max number of hits for player to KO AI mon + // Get max number of hits for player to KO AI mon and type matchup for defensive switching hitsToKOAI = GetSwitchinHitsToKO(GetMaxDamagePlayerCouldDealToSwitchin(battler, opposingBattler, AI_DATA->switchinCandidate.battleMon), battler); + typeMatchup = GetSwitchinTypeMatchup(opposingBattler, AI_DATA->switchinCandidate.battleMon); - // Track max hits to KO and set GetBestMonDefensive if applicable + // Track max hits to KO and set defensive mon if(hitsToKOAI > maxHitsToKO) { maxHitsToKO = hitsToKOAI; @@ -1852,28 +1883,12 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, defensiveMonId = i; } - typeMatchup = GetSwitchinTypeMatchup(opposingBattler, AI_DATA->switchinCandidate.battleMon); - - // Check that good type matchups gets at least two turns and set GetBestMonTypeMatchup if applicable - if (typeMatchup < bestResist) - { - if ((hitsToKOAI > hitsToKOAIThreshold && AI_DATA->switchinCandidate.battleMon.speed > playerMonSpeed) || hitsToKOAI > hitsToKOAIThreshold + 1) // Need to take an extra hit if slower - { - bestResist = typeMatchup; - typeMatchupId = i; - } - } - - aiMonSpeed = AI_DATA->switchinCandidate.battleMon.speed; - // Check through current mon's moves for (j = 0; j < MAX_MON_MOVES; j++) { aiMove = AI_DATA->switchinCandidate.battleMon.moves[j]; - aiMovePriority = gMovesInfo[aiMove].priority; - // Only do damage calc if switching after KO, don't need it otherwise and saves ~0.02s per turn - if (isSwitchAfterKO && aiMove != MOVE_NONE && gMovesInfo[aiMove].power != 0) + if (aiMove != MOVE_NONE && gMovesInfo[aiMove].power != 0) { if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_CONSERVATIVE) damageDealt = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, AI_DATA->switchinCandidate.battleMon, TRUE, DMG_ROLL_LOWEST); @@ -1881,19 +1896,35 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, damageDealt = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, AI_DATA->switchinCandidate.battleMon, TRUE, DMG_ROLL_DEFAULT); } - // Check for Baton Pass; hitsToKO requirements mean mon can boost and BP without dying whether it's slower or not - if (aiMove == MOVE_BATON_PASS && ((hitsToKOAI > hitsToKOAIThreshold + 1 && AI_DATA->switchinCandidate.battleMon.speed < playerMonSpeed) || (hitsToKOAI > hitsToKOAIThreshold && AI_DATA->switchinCandidate.battleMon.speed > playerMonSpeed))) - bits |= 1u << i; + // Offensive switchin decisions are based on which whether switchin moves first and whether it can win a 1v1 + isSwitchinFirst = AI_WhoStrikesFirstPartyMon(battler, opposingBattler, AI_DATA->switchinCandidate.battleMon, aiMove); + canSwitchinWin1v1 = CanSwitchinWin1v1(hitsToKOAI, GetNoOfHitsToKOBattlerDmg(damageDealt, opposingBattler), isSwitchinFirst, isFreeSwitch); - // Check for mon with resistance and super effective move for GetBestMonTypeMatchup + // Check for Baton Pass; hitsToKO requirements mean mon can boost and BP without dying whether it's slower or not + if (aiMove == MOVE_BATON_PASS) + { + if ((isSwitchinFirst && hitsToKOAI > 1) || hitsToKOAI > 2) // Need to take an extra hit if slower + bits |= 1u << i; + } + + // Check that good type matchups get at least two turns and set best type matchup mon + if (typeMatchup < bestResist) + { + if (canSwitchinWin1v1) + { + bestResist = typeMatchup; + typeMatchupId = i; + } + } + + // Check for mon with resistance and super effective move for best type matchup mon with effective move if (aiMove != MOVE_NONE && gMovesInfo[aiMove].power != 0) { if (typeMatchup < bestResistEffective) { if (AI_GetTypeEffectiveness(aiMove, battler, opposingBattler) >= UQ_4_12(2.0)) { - // Assuming a super effective move would do significant damage or scare the player out, so not being as conservative here - if (hitsToKOAI > hitsToKOAIThreshold) + if (canSwitchinWin1v1) { bestResistEffective = typeMatchup; typeMatchupEffectiveId = i; @@ -1905,10 +1936,10 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, if (gMovesInfo[aiMove].effect == EFFECT_EXPLOSION && damageDealt < playerMonHP) continue; - // Check that mon isn't one shot and set GetBestMonDmg if applicable + // Check that mon isn't one shot and set best damage mon if (damageDealt > maxDamageDealt) { - if(hitsToKOAI > hitsToKOAIThreshold) + if((isFreeSwitch && hitsToKOAI > 1) || hitsToKOAI > 2) // This is a "default", we have uniquely low standards { maxDamageDealt = damageDealt; damageMonId = i; @@ -1919,74 +1950,40 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, // If AI mon can one shot if (damageDealt > playerMonHP) { - // If AI mon outspeeds and doesn't die to hazards - if ((((aiMonSpeed > playerMonSpeed && !(gFieldStatuses & STATUS_FIELD_TRICK_ROOM)) || aiMovePriority > 0) // Outspeed if not Trick Room - || ((gFieldStatuses & STATUS_FIELD_TRICK_ROOM) // Trick Room - && (aiMonSpeed < playerMonSpeed || (ItemId_GetHoldEffect(AI_DATA->switchinCandidate.battleMon.item) == HOLD_EFFECT_ROOM_SERVICE && aiMonSpeed * 2 / 3 < playerMonSpeed)))) // Trick Room speeds - && AI_DATA->switchinCandidate.battleMon.hp > GetSwitchinHazardsDamage(battler, &AI_DATA->switchinCandidate.battleMon)) // Hazards + if (canSwitchinWin1v1) { - // We have a revenge killer - revengeKillerId = i; - } - - // If AI mon is outsped - else - { - // If AI mon can't be OHKO'd - if (hitsToKOAI > hitsToKOAIThreshold) - { - // We have a slow revenge killer + if (isSwitchinFirst) + revengeKillerId = i; + else slowRevengeKillerId = i; - } } } // If AI mon can two shot if (damageDealt > playerMonHP / 2) { - // If AI mon outspeeds - if (((aiMonSpeed > playerMonSpeed && !(gFieldStatuses & STATUS_FIELD_TRICK_ROOM)) || aiMovePriority > 0) // Outspeed if not Trick Room - || (((gFieldStatuses & STATUS_FIELD_TRICK_ROOM) && gFieldTimers.trickRoomTimer > 1) // Trick Room has at least 2 turns left - && (aiMonSpeed < playerMonSpeed || (ItemId_GetHoldEffect(AI_DATA->switchinCandidate.battleMon.item) == HOLD_EFFECT_ROOM_SERVICE && aiMonSpeed * 2/ 3 < playerMonSpeed)))) // Trick Room speeds + if (canSwitchinWin1v1) { - // If AI mon can't be OHKO'd - if (hitsToKOAI > hitsToKOAIThreshold) - { - // We have a fast threaten + if (isSwitchinFirst) fastThreatenId = i; - } - } - // If AI mon is outsped - else - { - // If AI mon can't be 2HKO'd - if (hitsToKOAI > hitsToKOAIThreshold + 1) - { - // We have a slow threaten + else slowThreatenId = i; - } } } // If mon can trap - if (CanAbilityTrapOpponent(AI_DATA->switchinCandidate.battleMon.ability, opposingBattler)) - { - hitsToKOPlayer = GetNoOfHitsToKOBattlerDmg(damageDealt, opposingBattler); - if (CountUsablePartyMons(opposingBattler) > 0 - && (((hitsToKOAI > hitsToKOPlayer && isSwitchAfterKO) // If can 1v1 after a KO - || (hitsToKOAI == hitsToKOPlayer && isSwitchAfterKO && (aiMonSpeed > playerMonSpeed || aiMovePriority > 0))) - || ((hitsToKOAI > hitsToKOPlayer + 1 && !isSwitchAfterKO) // If can 1v1 after mid battle - || (hitsToKOAI == hitsToKOPlayer + 1 && !isSwitchAfterKO && (aiMonSpeed > playerMonSpeed || aiMovePriority > 0))))) - trapperId = i; - } + if (CanAbilityTrapOpponent(AI_DATA->switchinCandidate.battleMon.ability, opposingBattler) + && CountUsablePartyMons(opposingBattler) > 0 + && canSwitchinWin1v1) + trapperId = i; } } } batonPassId = GetRandomSwitchinWithBatonPass(aliveCount, bits, firstId, lastId, i); - // Different switching priorities depending on switching mid battle vs switching after a KO - if (isSwitchAfterKO) + // Different switching priorities depending on switching mid battle vs switching after a KO or slow switch + if (isFreeSwitch) { // Return Trapper > Revenge Killer > Type Matchup > Baton Pass > Best Damage if (trapperId != PARTY_SIZE) return trapperId; @@ -2009,8 +2006,7 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, else if (batonPassId != PARTY_SIZE) return batonPassId; } // If ace mon is the last available Pokemon and U-Turn/Volt Switch was used - switch to the mon. - if (aceMonId != PARTY_SIZE - && (gMovesInfo[gLastUsedMove].effect == EFFECT_HIT_ESCAPE || gMovesInfo[gLastUsedMove].effect == EFFECT_PARTING_SHOT || gMovesInfo[gLastUsedMove].effect == EFFECT_BATON_PASS || gMovesInfo[gLastUsedMove].effect == EFFECT_CHILLY_RECEPTION || gMovesInfo[gLastUsedMove].effect == EFFECT_SHED_TAIL)) + if (aceMonId != PARTY_SIZE && IsSwitchOutEffect(gMovesInfo[gLastUsedMove].effect)) return aceMonId; return PARTY_SIZE; @@ -2082,7 +2078,6 @@ u32 GetMostSuitableMonToSwitchInto(u32 battler, bool32 switchAfterMonKOd) return bestMonId; } - // Split ideal mon decision between after previous mon KO'd (prioritize offensive options) and after switching active mon out (prioritize defensive options), and expand the scope of both. // Only use better mon selection if AI_FLAG_SMART_MON_CHOICES is set for the trainer. if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_SMART_MON_CHOICES && !IsDoubleBattle()) // Double Battles aren't included in AI_FLAG_SMART_MON_CHOICE. Defaults to regular switch in logic { @@ -2103,11 +2098,11 @@ u32 GetMostSuitableMonToSwitchInto(u32 battler, bool32 switchAfterMonKOd) || gBattlerPartyIndexes[battlerIn2] == i || i == gBattleStruct->monToSwitchIntoId[battlerIn1] || i == gBattleStruct->monToSwitchIntoId[battlerIn2] - || (GetMonAbility(&party[i]) == ABILITY_TRUANT && IsTruantMonVulnerable(battler, opposingBattler))) // While not really invalid per se, not really wise to switch into this mon.) + || (GetMonAbility(&party[i]) == ABILITY_TRUANT && IsTruantMonVulnerable(battler, opposingBattler))) // While not really invalid per se, not really wise to switch into this mon. { invalidMons |= 1u << i; } - else if (IsAceMon(battler, i))// Save Ace Pokemon for last. + else if (IsAceMon(battler, i)) // Save Ace Pokemon for last. { aceMonId = i; invalidMons |= 1u << i; @@ -2249,6 +2244,10 @@ static bool32 ShouldUseItem(u32 battler) if (gBattleStruct->itemPartyIndex[battler] != PARTY_SIZE) // Revive if possible. shouldUse = TRUE; break; + case EFFECT_ITEM_USE_POKE_FLUTE: + if (gBattleMons[battler].status1 & STATUS1_SLEEP) + shouldUse = TRUE; + break; default: return FALSE; } diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 05dbbe916a..612e89c9ce 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -2375,6 +2375,22 @@ bool32 IsSelfStatLoweringEffect(u32 effect) } } +bool32 IsSwitchOutEffect(u32 effect) +{ + // Switch out effects like U-Turn, Volt Switch, etc. + switch (effect) + { + case EFFECT_HIT_ESCAPE: + case EFFECT_PARTING_SHOT: + case EFFECT_BATON_PASS: + case EFFECT_CHILLY_RECEPTION: + case EFFECT_SHED_TAIL: + return TRUE; + default: + return FALSE; + } +} + bool32 HasDamagingMove(u32 battlerId) { u32 i; @@ -3492,14 +3508,14 @@ s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct Battl { gBattleMons[battlerAtk] = switchinCandidate; AI_THINKING_STRUCT->saved[battlerDef].saved = TRUE; - SetBattlerData(battlerDef); // set known opposing battler data + SetBattlerAiData(battlerDef, AI_DATA); // set known opposing battler data AI_THINKING_STRUCT->saved[battlerDef].saved = FALSE; } else { gBattleMons[battlerDef] = switchinCandidate; AI_THINKING_STRUCT->saved[battlerAtk].saved = TRUE; - SetBattlerData(battlerAtk); // set known opposing battler data + SetBattlerAiData(battlerAtk, AI_DATA); // set known opposing battler data AI_THINKING_STRUCT->saved[battlerAtk].saved = FALSE; } @@ -3509,6 +3525,18 @@ s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct Battl return dmg.expected; } +u32 AI_WhoStrikesFirstPartyMon(u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, u32 moveConsidered) +{ + struct BattlePokemon *savedBattleMons = AllocSaveBattleMons(); + gBattleMons[battlerAtk] = switchinCandidate; + + SetBattlerAiData(battlerAtk, AI_DATA); + u32 aiMonFaster = AI_IsFaster(battlerAtk, battlerDef, moveConsidered); + FreeRestoreBattleMons(savedBattleMons); + + return aiMonFaster; +} + s32 CountUsablePartyMons(u32 battlerId) { s32 battlerOnField1, battlerOnField2, i, ret; @@ -3953,7 +3981,7 @@ bool32 ShouldUseZMove(u32 battlerAtk, u32 battlerDef, u32 chosenMove) return FALSE; // Don't waste a Z-Move busting disguise if (gBattleMons[battlerDef].ability == ABILITY_ICE_FACE && !gMovesInfo[zMove].ignoresTargetAbility - && gBattleMons[battlerDef].species == SPECIES_EISCUE_ICE_FACE && IS_MOVE_PHYSICAL(chosenMove)) + && gBattleMons[battlerDef].species == SPECIES_EISCUE_ICE && IS_MOVE_PHYSICAL(chosenMove)) return FALSE; // Don't waste a Z-Move busting Ice Face if (IS_MOVE_STATUS(chosenMove) && !IS_MOVE_STATUS(zMove)) diff --git a/src/battle_anim_rock.c b/src/battle_anim_rock.c index b6239ca063..354fb21014 100644 --- a/src/battle_anim_rock.c +++ b/src/battle_anim_rock.c @@ -479,7 +479,7 @@ void AnimRockFragment(struct Sprite *sprite) void AnimParticleInVortex(struct Sprite *sprite) { if (IsDoubleBattle() //got a little lazy here will fix later - && (gAnimMoveIndex == MOVE_BLEAKWIND_STORM + && (gAnimMoveIndex == MOVE_BLEAKWIND_STORM || gAnimMoveIndex == MOVE_SANDSEAR_STORM || gAnimMoveIndex == MOVE_SPRINGTIDE_STORM || gAnimMoveIndex == MOVE_WILDBOLT_STORM)) diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index cc5454ad54..16fae14e48 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -384,8 +384,8 @@ static void HandleInputChooseAction(u32 battler) && !(gAbsentBattlerFlags & (1u << GetBattlerAtPosition(B_POSITION_PLAYER_LEFT))) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - // Return item to bag if partner had selected one. - if (gBattleResources->bufferA[battler][1] == B_ACTION_USE_ITEM) + // Return item to bag if partner had selected one (except flutes). + if (gBattleResources->bufferA[battler][1] == B_ACTION_USE_ITEM && !IsItemFlute(itemId)) { AddBagItem(itemId, 1); } @@ -1725,9 +1725,9 @@ static void MoveSelectionDisplayMoveType(u32 battler) { speciesId = gBattleMons[battler].species; - if (speciesId == SPECIES_OGERPON_WELLSPRING_MASK || speciesId == SPECIES_OGERPON_WELLSPRING_MASK_TERA - || speciesId == SPECIES_OGERPON_HEARTHFLAME_MASK || speciesId == SPECIES_OGERPON_HEARTHFLAME_MASK_TERA - || speciesId == SPECIES_OGERPON_CORNERSTONE_MASK || speciesId == SPECIES_OGERPON_CORNERSTONE_MASK_TERA) + if (speciesId == SPECIES_OGERPON_WELLSPRING || speciesId == SPECIES_OGERPON_WELLSPRING_TERA + || speciesId == SPECIES_OGERPON_HEARTHFLAME || speciesId == SPECIES_OGERPON_HEARTHFLAME_TERA + || speciesId == SPECIES_OGERPON_CORNERSTONE || speciesId == SPECIES_OGERPON_CORNERSTONE_TERA) type = gBattleMons[battler].types[1]; } else if (gMovesInfo[moveInfo->moves[gMoveSelectionCursor[battler]]].category == DAMAGE_CATEGORY_STATUS diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 073e2c55bc..75ea78460c 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -34,40 +34,40 @@ struct GMaxMove static const struct GMaxMove sGMaxMoveTable[] = { - {SPECIES_VENUSAUR_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_VINE_LASH}, - {SPECIES_BLASTOISE_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_CANNONADE}, - {SPECIES_CHARIZARD_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_WILDFIRE}, - {SPECIES_BUTTERFREE_GIGANTAMAX, TYPE_BUG, MOVE_G_MAX_BEFUDDLE}, - {SPECIES_PIKACHU_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_VOLT_CRASH}, - {SPECIES_MEOWTH_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_GOLD_RUSH}, - {SPECIES_MACHAMP_GIGANTAMAX, TYPE_FIGHTING, MOVE_G_MAX_CHI_STRIKE}, - {SPECIES_GENGAR_GIGANTAMAX, TYPE_GHOST, MOVE_G_MAX_TERROR}, - {SPECIES_KINGLER_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_FOAM_BURST}, - {SPECIES_LAPRAS_GIGANTAMAX, TYPE_ICE, MOVE_G_MAX_RESONANCE}, - {SPECIES_EEVEE_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_CUDDLE}, - {SPECIES_SNORLAX_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_REPLENISH}, - {SPECIES_GARBODOR_GIGANTAMAX, TYPE_POISON, MOVE_G_MAX_MALODOR}, - {SPECIES_MELMETAL_GIGANTAMAX, TYPE_STEEL, MOVE_G_MAX_MELTDOWN}, - {SPECIES_RILLABOOM_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_DRUM_SOLO}, - {SPECIES_CINDERACE_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_FIREBALL}, - {SPECIES_INTELEON_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_HYDROSNIPE}, - {SPECIES_CORVIKNIGHT_GIGANTAMAX, TYPE_FLYING, MOVE_G_MAX_WIND_RAGE}, - {SPECIES_ORBEETLE_GIGANTAMAX, TYPE_PSYCHIC, MOVE_G_MAX_GRAVITAS}, - {SPECIES_DREDNAW_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_STONESURGE}, - {SPECIES_COALOSSAL_GIGANTAMAX, TYPE_ROCK, MOVE_G_MAX_VOLCALITH}, - {SPECIES_FLAPPLE_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_TARTNESS}, - {SPECIES_APPLETUN_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_SWEETNESS}, - {SPECIES_SANDACONDA_GIGANTAMAX, TYPE_GROUND, MOVE_G_MAX_SANDBLAST}, - {SPECIES_TOXTRICITY_AMPED_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, - {SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, - {SPECIES_CENTISKORCH_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_CENTIFERNO}, - {SPECIES_HATTERENE_GIGANTAMAX, TYPE_FAIRY, MOVE_G_MAX_SMITE}, - {SPECIES_GRIMMSNARL_GIGANTAMAX, TYPE_DARK, MOVE_G_MAX_SNOOZE}, - {SPECIES_ALCREMIE_GIGANTAMAX, TYPE_FAIRY, MOVE_G_MAX_FINALE}, - {SPECIES_COPPERAJAH_GIGANTAMAX, TYPE_STEEL, MOVE_G_MAX_STEELSURGE}, - {SPECIES_DURALUDON_GIGANTAMAX, TYPE_DRAGON, MOVE_G_MAX_DEPLETION}, - {SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX,TYPE_DARK, MOVE_G_MAX_ONE_BLOW}, - {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, + {SPECIES_VENUSAUR_GMAX, TYPE_GRASS, MOVE_G_MAX_VINE_LASH}, + {SPECIES_BLASTOISE_GMAX, TYPE_WATER, MOVE_G_MAX_CANNONADE}, + {SPECIES_CHARIZARD_GMAX, TYPE_FIRE, MOVE_G_MAX_WILDFIRE}, + {SPECIES_BUTTERFREE_GMAX, TYPE_BUG, MOVE_G_MAX_BEFUDDLE}, + {SPECIES_PIKACHU_GMAX, TYPE_ELECTRIC, MOVE_G_MAX_VOLT_CRASH}, + {SPECIES_MEOWTH_GMAX, TYPE_NORMAL, MOVE_G_MAX_GOLD_RUSH}, + {SPECIES_MACHAMP_GMAX, TYPE_FIGHTING, MOVE_G_MAX_CHI_STRIKE}, + {SPECIES_GENGAR_GMAX, TYPE_GHOST, MOVE_G_MAX_TERROR}, + {SPECIES_KINGLER_GMAX, TYPE_WATER, MOVE_G_MAX_FOAM_BURST}, + {SPECIES_LAPRAS_GMAX, TYPE_ICE, MOVE_G_MAX_RESONANCE}, + {SPECIES_EEVEE_GMAX, TYPE_NORMAL, MOVE_G_MAX_CUDDLE}, + {SPECIES_SNORLAX_GMAX, TYPE_NORMAL, MOVE_G_MAX_REPLENISH}, + {SPECIES_GARBODOR_GMAX, TYPE_POISON, MOVE_G_MAX_MALODOR}, + {SPECIES_MELMETAL_GMAX, TYPE_STEEL, MOVE_G_MAX_MELTDOWN}, + {SPECIES_RILLABOOM_GMAX, TYPE_GRASS, MOVE_G_MAX_DRUM_SOLO}, + {SPECIES_CINDERACE_GMAX, TYPE_FIRE, MOVE_G_MAX_FIREBALL}, + {SPECIES_INTELEON_GMAX, TYPE_WATER, MOVE_G_MAX_HYDROSNIPE}, + {SPECIES_CORVIKNIGHT_GMAX, TYPE_FLYING, MOVE_G_MAX_WIND_RAGE}, + {SPECIES_ORBEETLE_GMAX, TYPE_PSYCHIC, MOVE_G_MAX_GRAVITAS}, + {SPECIES_DREDNAW_GMAX, TYPE_WATER, MOVE_G_MAX_STONESURGE}, + {SPECIES_COALOSSAL_GMAX, TYPE_ROCK, MOVE_G_MAX_VOLCALITH}, + {SPECIES_FLAPPLE_GMAX, TYPE_GRASS, MOVE_G_MAX_TARTNESS}, + {SPECIES_APPLETUN_GMAX, TYPE_GRASS, MOVE_G_MAX_SWEETNESS}, + {SPECIES_SANDACONDA_GMAX, TYPE_GROUND, MOVE_G_MAX_SANDBLAST}, + {SPECIES_TOXTRICITY_AMPED_GMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, + {SPECIES_TOXTRICITY_LOW_KEY_GMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, + {SPECIES_CENTISKORCH_GMAX, TYPE_FIRE, MOVE_G_MAX_CENTIFERNO}, + {SPECIES_HATTERENE_GMAX, TYPE_FAIRY, MOVE_G_MAX_SMITE}, + {SPECIES_GRIMMSNARL_GMAX, TYPE_DARK, MOVE_G_MAX_SNOOZE}, + {SPECIES_ALCREMIE_GMAX, TYPE_FAIRY, MOVE_G_MAX_FINALE}, + {SPECIES_COPPERAJAH_GMAX, TYPE_STEEL, MOVE_G_MAX_STEELSURGE}, + {SPECIES_DURALUDON_GMAX, TYPE_DRAGON, MOVE_G_MAX_DEPLETION}, + {SPECIES_URSHIFU_SINGLE_STRIKE_GMAX,TYPE_DARK, MOVE_G_MAX_ONE_BLOW}, + {SPECIES_URSHIFU_RAPID_STRIKE_GMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, }; // Returns whether a battler can Dynamax. diff --git a/src/battle_main.c b/src/battle_main.c index d30d7a927f..c1974e0f6a 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -183,6 +183,7 @@ EWRAM_DATA u16 gLastPrintedMoves[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u16 gLastMoves[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u16 gLastLandedMoves[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u16 gLastHitByType[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u16 gLastUsedMoveType[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u16 gLastResultingMoves[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u16 gLockedMoves[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u16 gLastUsedMove = 0; @@ -3021,6 +3022,7 @@ static void BattleStartClearSetData(void) gLastMoves[i] = MOVE_NONE; gLastLandedMoves[i] = MOVE_NONE; gLastHitByType[i] = 0; + gLastUsedMoveType[i] = 0; gLastResultingMoves[i] = MOVE_NONE; gLastHitBy[i] = 0xFF; gLockedMoves[i] = MOVE_NONE; @@ -3199,6 +3201,7 @@ void SwitchInClearSetData(u32 battler) gLastMoves[battler] = MOVE_NONE; gLastLandedMoves[battler] = MOVE_NONE; gLastHitByType[battler] = 0; + gLastUsedMoveType[battler] = 0; gLastResultingMoves[battler] = MOVE_NONE; gLastPrintedMoves[battler] = MOVE_NONE; gLastHitBy[battler] = 0xFF; @@ -3239,6 +3242,10 @@ void SwitchInClearSetData(u32 battler) gSpecialStatuses[battler].specialDmg = 0; gBattleStruct->enduredDamage &= ~(1u << battler); + // Reset Eject Button / Eject Pack switch detection + AI_DATA->ejectButtonSwitch = FALSE; + AI_DATA->ejectPackSwitch = FALSE; + // Reset G-Max Chi Strike boosts. gBattleStruct->bonusCritStages[battler] = 0; @@ -3328,6 +3335,7 @@ const u8* FaintClearSetData(u32 battler) gLastMoves[battler] = MOVE_NONE; gLastLandedMoves[battler] = MOVE_NONE; gLastHitByType[battler] = 0; + gLastUsedMoveType[battler] = 0; gLastResultingMoves[battler] = MOVE_NONE; gLastPrintedMoves[battler] = MOVE_NONE; gLastHitBy[battler] = 0xFF; @@ -4744,9 +4752,9 @@ u32 GetBattlerTotalSpeedStatArgs(u32 battler, u32 ability, u32 holdEffect) speed *= 2; else if (ability == ABILITY_SLOW_START && gDisableStructs[battler].slowStartTimer != 0) speed /= 2; - else if (ability == ABILITY_PROTOSYNTHESIS && (gBattleWeather & B_WEATHER_SUN || gBattleStruct->boosterEnergyActivates & (1u << battler))) + else if (ability == ABILITY_PROTOSYNTHESIS && !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) && ((gBattleWeather & B_WEATHER_SUN && WEATHER_HAS_EFFECT) || gBattleStruct->boosterEnergyActivates & (1u << battler))) speed = (GetHighestStatId(battler) == STAT_SPEED) ? (speed * 150) / 100 : speed; - else if (ability == ABILITY_QUARK_DRIVE && (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN || gBattleStruct->boosterEnergyActivates & (1u << battler))) + else if (ability == ABILITY_QUARK_DRIVE && !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) && (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN || gBattleStruct->boosterEnergyActivates & (1u << battler))) speed = (GetHighestStatId(battler) == STAT_SPEED) ? (speed * 150) / 100 : speed; // stat stages @@ -5825,8 +5833,9 @@ u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, u8 *ateBoost) type3 = TYPE_MYSTERY; } - if (moveEffect == EFFECT_WEATHER_BALL) + switch (moveEffect) { + case EFFECT_WEATHER_BALL: if (gMain.inBattle && WEATHER_HAS_EFFECT) { if (gBattleWeather & B_WEATHER_RAIN && holdEffect != HOLD_EFFECT_UTILITY_UMBRELLA) @@ -5860,79 +5869,86 @@ u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, u8 *ateBoost) } return moveType; } - } - else if (moveEffect == EFFECT_HIDDEN_POWER) - { - u8 typeBits; - if (gMain.inBattle) + break; + case EFFECT_HIDDEN_POWER: { - typeBits = ((gBattleMons[battler].hpIV & 1) << 0) - | ((gBattleMons[battler].attackIV & 1) << 1) - | ((gBattleMons[battler].defenseIV & 1) << 2) - | ((gBattleMons[battler].speedIV & 1) << 3) - | ((gBattleMons[battler].spAttackIV & 1) << 4) - | ((gBattleMons[battler].spDefenseIV & 1) << 5); - } - else - { - typeBits = ((GetMonData(mon, MON_DATA_HP_IV) & 1) << 0) - | ((GetMonData(mon, MON_DATA_ATK_IV) & 1) << 1) - | ((GetMonData(mon, MON_DATA_DEF_IV) & 1) << 2) - | ((GetMonData(mon, MON_DATA_SPEED_IV) & 1) << 3) - | ((GetMonData(mon, MON_DATA_SPATK_IV) & 1) << 4) - | ((GetMonData(mon, MON_DATA_SPDEF_IV) & 1) << 5); - } + u32 typeBits = 0; + if (gMain.inBattle) + { + typeBits = ((gBattleMons[battler].hpIV & 1) << 0) + | ((gBattleMons[battler].attackIV & 1) << 1) + | ((gBattleMons[battler].defenseIV & 1) << 2) + | ((gBattleMons[battler].speedIV & 1) << 3) + | ((gBattleMons[battler].spAttackIV & 1) << 4) + | ((gBattleMons[battler].spDefenseIV & 1) << 5); + } + else + { + typeBits = ((GetMonData(mon, MON_DATA_HP_IV) & 1) << 0) + | ((GetMonData(mon, MON_DATA_ATK_IV) & 1) << 1) + | ((GetMonData(mon, MON_DATA_DEF_IV) & 1) << 2) + | ((GetMonData(mon, MON_DATA_SPEED_IV) & 1) << 3) + | ((GetMonData(mon, MON_DATA_SPATK_IV) & 1) << 4) + | ((GetMonData(mon, MON_DATA_SPDEF_IV) & 1) << 5); + } - // Subtract 6 instead of 1 below because 5 types are excluded (TYPE_NONE, TYPE_NORMAL, TYPE_MYSTERY, TYPE_FAIRY and TYPE_STELLAR) - // The final + 2 skips past TYPE_NONE and Normal. - moveType = ((NUMBER_OF_MON_TYPES - 6) * typeBits) / 63 + 2; - if (moveType >= TYPE_MYSTERY) - moveType++; - return (moveType | F_DYNAMIC_TYPE_IGNORE_PHYSICALITY); - } - else if (moveEffect == EFFECT_CHANGE_TYPE_ON_ITEM && holdEffect == gMovesInfo[move].argument) - { - return ItemId_GetSecondaryId(heldItem); - } - else if (moveEffect == EFFECT_REVELATION_DANCE && GetActiveGimmick(battler) != GIMMICK_Z_MOVE) - { - u8 teraType; - if (GetActiveGimmick(battler) == GIMMICK_TERA && ((teraType = GetMonData(mon, MON_DATA_TERA_TYPE)) != TYPE_STELLAR)) - return teraType; - else if (type1 != TYPE_MYSTERY && !(gBattleResources->flags->flags[battler] & RESOURCE_FLAG_ROOST && type1 == TYPE_FLYING)) - return type1; - else if (type2 != TYPE_MYSTERY && !(gBattleResources->flags->flags[battler] & RESOURCE_FLAG_ROOST && type2 == TYPE_FLYING)) + // Subtract 6 instead of 1 below because 5 types are excluded (TYPE_NONE, TYPE_NORMAL, TYPE_MYSTERY, TYPE_FAIRY and TYPE_STELLAR) + // The final + 2 skips past TYPE_NONE and Normal. + moveType = ((NUMBER_OF_MON_TYPES - 6) * typeBits) / 63 + 2; + if (moveType >= TYPE_MYSTERY) + moveType++; + return ((moveType | F_DYNAMIC_TYPE_IGNORE_PHYSICALITY) & 0x3F); + } + break; + case EFFECT_CHANGE_TYPE_ON_ITEM: + if (holdEffect == gMovesInfo[move].argument) + return ItemId_GetSecondaryId(heldItem); + break; + case EFFECT_REVELATION_DANCE: + if (GetActiveGimmick(battler) != GIMMICK_Z_MOVE) + { + u32 teraType; + if (GetActiveGimmick(battler) == GIMMICK_TERA && ((teraType = GetMonData(mon, MON_DATA_TERA_TYPE)) != TYPE_STELLAR)) + return teraType; + else if (type1 != TYPE_MYSTERY && !(gBattleResources->flags->flags[battler] & RESOURCE_FLAG_ROOST && type1 == TYPE_FLYING)) + return type1; + else if (type2 != TYPE_MYSTERY && !(gBattleResources->flags->flags[battler] & RESOURCE_FLAG_ROOST && type2 == TYPE_FLYING)) + return type2; + else if (gBattleResources->flags->flags[battler] & RESOURCE_FLAG_ROOST) + return (B_ROOST_PURE_FLYING >= GEN_5 ? TYPE_NORMAL : TYPE_MYSTERY); + else if (type3 != TYPE_MYSTERY) + return type3; + else + return TYPE_MYSTERY; + } + break; + case EFFECT_RAGING_BULL: + switch (species) + { + case SPECIES_TAUROS_PALDEA_COMBAT: + case SPECIES_TAUROS_PALDEA_BLAZE: + case SPECIES_TAUROS_PALDEA_AQUA: return type2; - else if (gBattleResources->flags->flags[battler] & RESOURCE_FLAG_ROOST) - return (B_ROOST_PURE_FLYING >= GEN_5 ? TYPE_NORMAL : TYPE_MYSTERY); - else if (type3 != TYPE_MYSTERY) - return type3; - else - return TYPE_MYSTERY; - } - else if (moveEffect == EFFECT_RAGING_BULL - && (species == SPECIES_TAUROS_PALDEAN_COMBAT_BREED - || species == SPECIES_TAUROS_PALDEAN_BLAZE_BREED - || species == SPECIES_TAUROS_PALDEAN_AQUA_BREED)) - { - return type2; - } - else if (moveEffect == EFFECT_IVY_CUDGEL - && (species == SPECIES_OGERPON_WELLSPRING_MASK || species == SPECIES_OGERPON_WELLSPRING_MASK_TERA - || species == SPECIES_OGERPON_HEARTHFLAME_MASK || species == SPECIES_OGERPON_HEARTHFLAME_MASK_TERA - || species == SPECIES_OGERPON_CORNERSTONE_MASK || species == SPECIES_OGERPON_CORNERSTONE_MASK_TERA)) - { - return type2; - } - else if (moveEffect == EFFECT_NATURAL_GIFT) - { + } + break; + case EFFECT_IVY_CUDGEL: + switch (species) + { + case SPECIES_OGERPON_WELLSPRING: + case SPECIES_OGERPON_HEARTHFLAME: + case SPECIES_OGERPON_CORNERSTONE: + case SPECIES_OGERPON_WELLSPRING_TERA: + case SPECIES_OGERPON_HEARTHFLAME_TERA: + case SPECIES_OGERPON_CORNERSTONE_TERA: + return type2; + } + break; + case EFFECT_NATURAL_GIFT: if (ItemId_GetPocket(heldItem) == POCKET_BERRIES) return gNaturalGiftTable[ITEM_TO_BERRY(heldItem)].type; else return moveType; - } - else if (moveEffect == EFFECT_TERRAIN_PULSE) - { + case EFFECT_TERRAIN_PULSE: if (gMain.inBattle) { if (IsBattlerTerrainAffected(battler, STATUS_FIELD_TERRAIN_ANY)) @@ -5965,14 +5981,15 @@ u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, u8 *ateBoost) } return moveType; } - } - else if (moveEffect == EFFECT_TERA_BLAST && GetActiveGimmick(battler) == GIMMICK_TERA) - { - return GetMonData(mon, MON_DATA_TERA_TYPE); - } - else if (moveEffect == EFFECT_TERA_STARSTORM && species == SPECIES_TERAPAGOS_STELLAR) - { - return TYPE_STELLAR; + break; + case EFFECT_TERA_BLAST: + if (GetActiveGimmick(battler) == GIMMICK_TERA) + return GetMonData(mon, MON_DATA_TERA_TYPE); + break; + case EFFECT_TERA_STARSTORM: + if (species == SPECIES_TERAPAGOS_STELLAR) + return TYPE_STELLAR; + break; } if (moveType == TYPE_NORMAL diff --git a/src/battle_message.c b/src/battle_message.c index d90113b5ea..30f83b14c4 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -517,6 +517,9 @@ static const u8 sText_PkmnsItemRestoredHPALittle[] = _("{B_SCR_ACTIVE_NAME_WITH_ static const u8 sText_ItemAllowsOnlyYMove[] = _("{B_LAST_ITEM} allows the\nuse of only {B_CURRENT_MOVE}!\p"); static const u8 sText_PkmnHungOnWithX[] = _("{B_DEF_NAME_WITH_PREFIX} hung on\nusing its {B_LAST_ITEM}!"); const u8 gText_EmptyString3[] = _(""); +static const u8 sText_PlayedFluteCatchyTune[] = _("{B_PLAYER_NAME} played the {B_LAST_ITEM}.\pNow, that's a catchy tune!"); +static const u8 sText_PlayedThe[] = _("{B_PLAYER_NAME} played the\n{B_LAST_ITEM}."); +static const u8 sText_PkmnHearingFluteAwoke[] = _("The POKéMON hearing the FLUTE\nawoke!"); static const u8 sText_YouThrowABallNowRight[] = _("You throw a BALL now, right?\nI… I'll do my best!"); // early declaration of strings @@ -1555,6 +1558,9 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_ITEMWASUSEDUP - BATTLESTRINGS_TABLE_START] = sText_ItemWasUsedUp, [STRINGID_ATTACKERLOSTITSTYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostItsType, [STRINGID_CLOAKEDINAHARSHLIGHT - BATTLESTRINGS_TABLE_START] = sText_PkmnIsCloakedInAHarshLight, + [STRINGID_POKEFLUTECATCHY - BATTLESTRINGS_TABLE_START] = sText_PlayedFluteCatchyTune, + [STRINGID_POKEFLUTE - BATTLESTRINGS_TABLE_START] = sText_PlayedThe, + [STRINGID_MONHEARINGFLUTEAWOKE - BATTLESTRINGS_TABLE_START] = sText_PkmnHearingFluteAwoke, }; const u16 gTrainerUsedItemStringIds[] = diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 897bf1dab3..5c7be23e7d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1988,7 +1988,7 @@ s32 CalcCritChanceStageGen1(u8 battlerAtk, u8 battlerDef, u32 move, bool32 recor // Crit scaling if (moveCritStage > 0) critChance = critChance * highCritRatioScaler * moveCritStage; - + if (bonusCritStage > 0) critChance = critChance * bonusCritStage; @@ -2432,7 +2432,7 @@ static void Cmd_datahpupdate(void) if (gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[battler]] == SPECIES_NONE) gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[battler]] = gBattleMons[battler].species; if (gBattleMons[battler].species == SPECIES_MIMIKYU_TOTEM_DISGUISED) - gBattleMons[battler].species = SPECIES_MIMIKYU_TOTEM_BUSTED; + gBattleMons[battler].species = SPECIES_MIMIKYU_BUSTED_TOTEM; else gBattleMons[battler].species = SPECIES_MIMIKYU_BUSTED; if (B_DISGUISE_HP_LOSS >= GEN_8) @@ -2617,7 +2617,7 @@ static void Cmd_resultmessage(void) if (gBattleResources->flags->flags[gBattlerTarget] & RESOURCE_FLAG_ICE_FACE) { gBattleResources->flags->flags[gBattlerTarget] &= ~(RESOURCE_FLAG_ICE_FACE); - gBattleMons[gBattlerTarget].species = SPECIES_EISCUE_NOICE_FACE; + gBattleMons[gBattlerTarget].species = SPECIES_EISCUE_NOICE; gBattleScripting.battler = gBattlerTarget; // For STRINGID_PKMNTRANSFORMED BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_IceFaceNullsDamage; @@ -5740,6 +5740,11 @@ static void Cmd_moveend(void) } gBattleScripting.moveendState++; break; + case MOVEEND_ITEM_EFFECTS_ATTACKER: + if (ItemBattleEffects(ITEMEFFECT_MOVE_END, gBattlerAttacker, FALSE)) + effect = TRUE; + gBattleScripting.moveendState++; + break; case MOVEEND_SYNCHRONIZE_TARGET: // target synchronize if (AbilityBattleEffects(ABILITYEFFECT_SYNCHRONIZE, gBattlerTarget, 0, 0, 0)) effect = TRUE; @@ -6037,12 +6042,14 @@ static void Cmd_moveend(void) gLastMoves[gBattlerAttacker] = gChosenMove; RecordKnownMove(gBattlerAttacker, gChosenMove); gLastResultingMoves[gBattlerAttacker] = gCurrentMove; + gLastUsedMoveType[gBattlerAttacker] = GetMoveType(gCurrentMove); } } else { gLastMoves[gBattlerAttacker] = MOVE_UNAVAILABLE; gLastResultingMoves[gBattlerAttacker] = MOVE_UNAVAILABLE; + gLastUsedMoveType[gBattlerAttacker] = 0; } if (!(gHitMarker & HITMARKER_FAINTED(gBattlerTarget))) @@ -6296,10 +6303,12 @@ static void Cmd_moveend(void) if (ejectButtonBattlers & (1u << battler)) { gBattlescriptCurrInstr = BattleScript_EjectButtonActivates; + AI_DATA->ejectButtonSwitch = TRUE; } else // Eject Pack { gBattlescriptCurrInstr = BattleScript_EjectPackActivates; + AI_DATA->ejectPackSwitch = TRUE; // Are these 2 lines below needed? gProtectStructs[battler].statFell = FALSE; gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = TRUE; @@ -8925,12 +8934,15 @@ u32 GetHighestStatId(u32 battler) for (i = STAT_DEF; i < NUM_STATS; i++) { u16 *statVal = &gBattleMons[battler].attack + (i - 1); - if (*statVal > highestStat) + if (*statVal > highestStat && i != STAT_SPEED) { highestStat = *statVal; highestId = i; } } + if (gBattleMons[battler].speed > highestStat) + highestId = STAT_SPEED; + return highestId; } @@ -11602,7 +11614,7 @@ static void Cmd_stockpiletohpheal(void) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; - + gBattlescriptCurrInstr = cmd->nextInstr; gBattlerTarget = gBattlerAttacker; } @@ -12554,14 +12566,19 @@ static void Cmd_updatestatusicon(void) if (gBattleControllerExecFlags) return; - if (cmd->battler != BS_ATTACKER_WITH_PARTNER) + if (cmd->battler == BS_PLAYER2) { - battler = GetBattlerForBattleScript(cmd->battler); - BtlController_EmitStatusIconUpdate(battler, BUFFER_A, gBattleMons[battler].status1, gBattleMons[battler].status2); - MarkBattlerForControllerExec(battler); + for (battler = gBattleControllerExecFlags; battler < gBattlersCount; battler++) + { + if (!(gAbsentBattlerFlags & (1u << battler))) + { + BtlController_EmitStatusIconUpdate(battler, BUFFER_A, gBattleMons[battler].status1, gBattleMons[battler].status2); + MarkBattlerForControllerExec(battler); + } + } gBattlescriptCurrInstr = cmd->nextInstr; } - else + else if (cmd->battler == BS_ATTACKER_WITH_PARTNER) { battler = gBattlerAttacker; if (!(gAbsentBattlerFlags & (1u << battler))) @@ -12580,6 +12597,13 @@ static void Cmd_updatestatusicon(void) } gBattlescriptCurrInstr = cmd->nextInstr; } + else + { + battler = GetBattlerForBattleScript(cmd->battler); + BtlController_EmitStatusIconUpdate(battler, BUFFER_A, gBattleMons[battler].status1, gBattleMons[battler].status2); + MarkBattlerForControllerExec(battler); + gBattlescriptCurrInstr = cmd->nextInstr; + } } static void Cmd_setmist(void) @@ -12977,60 +13001,122 @@ static void Cmd_settypetorandomresistance(void) { CMD_ARGS(const u8 *failInstr); - if (gLastLandedMoves[gBattlerAttacker] == MOVE_NONE - || gLastLandedMoves[gBattlerAttacker] == MOVE_UNAVAILABLE) + // Before Gen 5 Conversion 2 only worked on a move the attacker was actually hit by. + // This changed later to the last move used by the selected target. + if (B_UPDATED_CONVERSION_2 < GEN_5) { - gBattlescriptCurrInstr = cmd->failInstr; - } - else if (gBattleMoveEffects[gMovesInfo[gLastLandedMoves[gBattlerAttacker]].effect].twoTurnEffect - && gBattleMons[gLastHitBy[gBattlerAttacker]].status2 & STATUS2_MULTIPLETURNS) - { - gBattlescriptCurrInstr = cmd->failInstr; - } - else if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_TERA) - { - gBattlescriptCurrInstr = cmd->failInstr; - } - else if (gLastHitByType[gBattlerAttacker] == TYPE_STELLAR || gLastHitByType[gBattlerAttacker] == TYPE_MYSTERY) - { - gBattlescriptCurrInstr = cmd->failInstr; + if (gLastLandedMoves[gBattlerAttacker] == MOVE_NONE + || gLastLandedMoves[gBattlerAttacker] == MOVE_UNAVAILABLE) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else if (gBattleMoveEffects[gMovesInfo[gLastLandedMoves[gBattlerAttacker]].effect].twoTurnEffect + && gBattleMons[gLastHitBy[gBattlerAttacker]].status2 & STATUS2_MULTIPLETURNS) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_TERA) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else if (gLastHitByType[gBattlerAttacker] == TYPE_STELLAR || gLastHitByType[gBattlerAttacker] == TYPE_MYSTERY) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else + { + u32 i, resistTypes = 0; + u32 hitByType = gLastHitByType[gBattlerAttacker]; + + for (i = 0; i < NUMBER_OF_MON_TYPES; i++) // Find all types that resist. + { + switch (GetTypeModifier(hitByType, i)) + { + case UQ_4_12(0): + case UQ_4_12(0.5): + resistTypes |= 1u << i; + break; + } + } + + while (resistTypes != 0) + { + i = Random() % NUMBER_OF_MON_TYPES; + if (resistTypes & 1u << i) + { + if (IS_BATTLER_OF_TYPE(gBattlerAttacker, i)) + { + resistTypes &= ~(1u << i); // Type resists, but the user is already of this type. + } + else + { + SET_BATTLER_TYPE(gBattlerAttacker, i); + PREPARE_TYPE_BUFFER(gBattleTextBuff1, i); + gBattlescriptCurrInstr = cmd->nextInstr; + return; + } + } + } + + gBattlescriptCurrInstr = cmd->failInstr; + } } else { - u32 i, resistTypes = 0; - u32 hitByType = gLastHitByType[gBattlerAttacker]; - - for (i = 0; i < NUMBER_OF_MON_TYPES; i++) // Find all types that resist. + if (gLastResultingMoves[gBattlerTarget] == MOVE_NONE + || gLastResultingMoves[gBattlerTarget] == MOVE_UNAVAILABLE + || gLastResultingMoves[gBattlerTarget] == MOVE_STRUGGLE) { - switch (GetTypeModifier(hitByType, i)) - { - case UQ_4_12(0): - case UQ_4_12(0.5): - resistTypes |= 1u << i; - break; - } + gBattlescriptCurrInstr = cmd->failInstr; } - - while (resistTypes != 0) + else if (IsSemiInvulnerable(gBattlerTarget, gCurrentMove)) { - i = Random() % NUMBER_OF_MON_TYPES; - if (resistTypes & (1u << i)) + gBattlescriptCurrInstr = cmd->failInstr; + } + else if (gLastUsedMoveType[gBattlerTarget] == TYPE_NONE || gLastUsedMoveType[gBattlerTarget] == TYPE_STELLAR || gLastUsedMoveType[gBattlerTarget] == TYPE_MYSTERY) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_TERA) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else + { + u32 i, resistTypes = 0; + + for (i = 0; i < NUMBER_OF_MON_TYPES; i++) // Find all types that resist. { - if (IS_BATTLER_OF_TYPE(gBattlerAttacker, i)) + switch (GetTypeModifier(gLastUsedMoveType[gBattlerTarget], i)) { - resistTypes &= ~(1u << i); // Type resists, but the user is already of this type. - } - else - { - SET_BATTLER_TYPE(gBattlerAttacker, i); - PREPARE_TYPE_BUFFER(gBattleTextBuff1, i); - gBattlescriptCurrInstr = cmd->nextInstr; - return; + case UQ_4_12(0): + case UQ_4_12(0.5): + resistTypes |= 1u << i; + break; } } - } - gBattlescriptCurrInstr = cmd->failInstr; + while (resistTypes != 0) + { + i = Random() % NUMBER_OF_MON_TYPES; + if (resistTypes & 1u << i) + { + if (IS_BATTLER_OF_TYPE(gBattlerAttacker, i)) + { + resistTypes &= ~(1u << i); // Type resists, but the user is already of this type. + } + else + { + SET_BATTLER_TYPE(gBattlerAttacker, i); + PREPARE_TYPE_BUFFER(gBattleTextBuff1, i); + gBattlescriptCurrInstr = cmd->nextInstr; + return; + } + } + } + + gBattlescriptCurrInstr = cmd->failInstr; + } } } @@ -15713,8 +15799,8 @@ static const u16 sTelekinesisBanList[] = { SPECIES_DIGLETT, SPECIES_DUGTRIO, - SPECIES_DIGLETT_ALOLAN, - SPECIES_DUGTRIO_ALOLAN, + SPECIES_DIGLETT_ALOLA, + SPECIES_DUGTRIO_ALOLA, SPECIES_SANDYGAST, SPECIES_PALOSSAND, SPECIES_GENGAR_MEGA, @@ -17423,3 +17509,62 @@ void BS_JumpIfCommanderActive(void) else gBattlescriptCurrInstr = cmd->nextInstr; } + +static void UpdatePokeFlutePartyStatus(struct Pokemon* party, u8 position) +{ + s32 i; + u8 battler; + u32 monToCheck, status; + u16 species, abilityNum; + monToCheck = 0; + for (i = 0; i < PARTY_SIZE; i++) + { + species = GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG); + abilityNum = GetMonData(&party[i], MON_DATA_ABILITY_NUM); + status = GetMonData(&party[i], MON_DATA_STATUS); + if (species != SPECIES_NONE + && species != SPECIES_EGG + && status & AILMENT_FNT + && GetAbilityBySpecies(species, abilityNum) != ABILITY_SOUNDPROOF) + monToCheck |= (1 << i); + } + if (monToCheck) + { + battler = GetBattlerAtPosition(position); + status = 0; + BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, monToCheck, 4, &status); + MarkBattlerForControllerExec(battler); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } +} + +void BS_CheckPokeFlute(void) +{ + NATIVE_ARGS(); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + + s32 i; + for (i = 0; i < gBattlersCount; i++) + { + if (GetBattlerAbility(i) != ABILITY_SOUNDPROOF) + { + gBattleMons[i].status1 &= ~STATUS1_SLEEP; + gBattleMons[i].status2 &= ~STATUS2_NIGHTMARE; + } + } + + UpdatePokeFlutePartyStatus(gPlayerParty, B_POSITION_PLAYER_LEFT); + UpdatePokeFlutePartyStatus(gEnemyParty, B_POSITION_OPPONENT_LEFT); + + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_WaitFanfare(void) +{ + NATIVE_ARGS(); + + if (!IsFanfareTaskInactive()) + return; + + gBattlescriptCurrInstr = cmd->nextInstr; +} diff --git a/src/battle_util.c b/src/battle_util.c index e32e21cf2a..bac1d33325 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4972,11 +4972,11 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 break; case ABILITY_ICE_FACE: if (IsBattlerWeatherAffected(battler, B_WEATHER_HAIL | B_WEATHER_SNOW) - && gBattleMons[battler].species == SPECIES_EISCUE_NOICE_FACE + && gBattleMons[battler].species == SPECIES_EISCUE_NOICE && !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED)) { // TODO: Convert this to a proper FORM_CHANGE type. - gBattleMons[battler].species = SPECIES_EISCUE_ICE_FACE; + gBattleMons[battler].species = SPECIES_EISCUE_ICE; BattleScriptPushCursorAndCallback(BattleScript_BattlerFormChangeWithStringEnd3); effect++; } @@ -6339,18 +6339,21 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 break; case ABILITY_ICE_FACE: if (IsBattlerWeatherAffected(battler, B_WEATHER_HAIL | B_WEATHER_SNOW) - && gBattleMons[battler].species == SPECIES_EISCUE_NOICE_FACE + && gBattleMons[battler].species == SPECIES_EISCUE_NOICE && !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED)) { // TODO: Convert this to a proper FORM_CHANGE type. gBattleScripting.battler = battler; - gBattleMons[battler].species = SPECIES_EISCUE_ICE_FACE; + gBattleMons[battler].species = SPECIES_EISCUE_ICE; BattleScriptPushCursorAndCallback(BattleScript_BattlerFormChangeWithStringEnd3); effect++; } break; case ABILITY_PROTOSYNTHESIS: - if (!gDisableStructs[battler].weatherAbilityDone && IsBattlerWeatherAffected(battler, B_WEATHER_SUN)) + if (!gDisableStructs[battler].weatherAbilityDone + && (gBattleWeather & B_WEATHER_SUN) && WEATHER_HAS_EFFECT + && !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) + && !(gBattleStruct->boosterEnergyActivates & (1u << battler))) { gDisableStructs[battler].weatherAbilityDone = TRUE; PREPARE_STAT_BUFFER(gBattleTextBuff1, GetHighestStatId(battler)); @@ -6376,7 +6379,10 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } break; case ABILITY_QUARK_DRIVE: - if (!gDisableStructs[battler].terrainAbilityDone && IsBattlerTerrainAffected(battler, STATUS_FIELD_ELECTRIC_TERRAIN)) + if (!gDisableStructs[battler].terrainAbilityDone + && gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN + && !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) + && !(gBattleStruct->boosterEnergyActivates & (1u << battler))) { gDisableStructs[battler].terrainAbilityDone = TRUE; PREPARE_STAT_BUFFER(gBattleTextBuff1, GetHighestStatId(battler)); @@ -7617,7 +7623,8 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) break; case HOLD_EFFECT_BOOSTER_ENERGY: if (!(gBattleStruct->boosterEnergyActivates & (1u << battler)) - && (((GetBattlerAbility(battler) == ABILITY_PROTOSYNTHESIS) && !(gBattleWeather & B_WEATHER_SUN)) + && !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) + && (((GetBattlerAbility(battler) == ABILITY_PROTOSYNTHESIS) && !((gBattleWeather & B_WEATHER_SUN) && WEATHER_HAS_EFFECT)) || ((GetBattlerAbility(battler) == ABILITY_QUARK_DRIVE) && !(gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN)))) { PREPARE_STAT_BUFFER(gBattleTextBuff1, GetHighestStatId(battler)); @@ -7884,7 +7891,8 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) break; case HOLD_EFFECT_BOOSTER_ENERGY: if (!(gBattleStruct->boosterEnergyActivates & (1u << battler)) - && (((GetBattlerAbility(battler) == ABILITY_PROTOSYNTHESIS) && !(gBattleWeather & B_WEATHER_SUN)) + && !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) + && (((GetBattlerAbility(battler) == ABILITY_PROTOSYNTHESIS) && !((gBattleWeather & B_WEATHER_SUN) && WEATHER_HAS_EFFECT)) || ((GetBattlerAbility(battler) == ABILITY_QUARK_DRIVE) && !(gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN)))) { PREPARE_STAT_BUFFER(gBattleTextBuff1, GetHighestStatId(battler)); @@ -9303,8 +9311,9 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 case ABILITY_PROTOSYNTHESIS: { u8 atkHighestStat = GetHighestStatId(battlerAtk); - if ((weather & B_WEATHER_SUN || gBattleStruct->boosterEnergyActivates & (1u << battlerAtk)) - && ((IS_MOVE_PHYSICAL(move) && atkHighestStat == STAT_ATK) || (IS_MOVE_SPECIAL(move) && atkHighestStat == STAT_SPATK))) + if (((weather & B_WEATHER_SUN && WEATHER_HAS_EFFECT) || gBattleStruct->boosterEnergyActivates & (1u << battlerAtk)) + && ((IS_MOVE_PHYSICAL(move) && atkHighestStat == STAT_ATK) || (IS_MOVE_SPECIAL(move) && atkHighestStat == STAT_SPATK)) + && !(gBattleMons[battlerAtk].status2 & STATUS2_TRANSFORMED)) modifier = uq4_12_multiply(modifier, UQ_4_12(1.3)); } break; @@ -9312,16 +9321,17 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 { u8 atkHighestStat = GetHighestStatId(battlerAtk); if ((gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN || gBattleStruct->boosterEnergyActivates & (1u << battlerAtk)) - && ((IS_MOVE_PHYSICAL(move) && atkHighestStat == STAT_ATK) || (IS_MOVE_SPECIAL(move) && atkHighestStat == STAT_SPATK))) + && ((IS_MOVE_PHYSICAL(move) && atkHighestStat == STAT_ATK) || (IS_MOVE_SPECIAL(move) && atkHighestStat == STAT_SPATK)) + && !(gBattleMons[battlerAtk].status2 & STATUS2_TRANSFORMED)) modifier = uq4_12_multiply(modifier, UQ_4_12(1.3)); } break; case ABILITY_ORICHALCUM_PULSE: - if (weather & B_WEATHER_SUN) + if (weather & B_WEATHER_SUN && WEATHER_HAS_EFFECT && IS_MOVE_PHYSICAL(move)) modifier = uq4_12_multiply(modifier, UQ_4_12(1.3)); break; case ABILITY_HADRON_ENGINE: - if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN) + if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN && IS_MOVE_SPECIAL(move)) modifier = uq4_12_multiply(modifier, UQ_4_12(1.3)); break; case ABILITY_SHARPNESS: @@ -9381,8 +9391,9 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 case ABILITY_PROTOSYNTHESIS: { u8 defHighestStat = GetHighestStatId(battlerDef); - if ((weather & B_WEATHER_SUN || gBattleStruct->boosterEnergyActivates & (1u << battlerDef)) - && ((IS_MOVE_PHYSICAL(move) && defHighestStat == STAT_DEF) || (IS_MOVE_SPECIAL(move) && defHighestStat == STAT_SPDEF))) + if (((weather & B_WEATHER_SUN && WEATHER_HAS_EFFECT) || gBattleStruct->boosterEnergyActivates & (1u << battlerDef)) + && ((IS_MOVE_PHYSICAL(move) && defHighestStat == STAT_DEF) || (IS_MOVE_SPECIAL(move) && defHighestStat == STAT_SPDEF)) + && !(gBattleMons[battlerDef].status2 & STATUS2_TRANSFORMED)) modifier = uq4_12_multiply(modifier, UQ_4_12(0.7)); } break; @@ -9390,7 +9401,8 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 { u8 defHighestStat = GetHighestStatId(battlerDef); if ((gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN || gBattleStruct->boosterEnergyActivates & (1u << battlerDef)) - && ((IS_MOVE_PHYSICAL(move) && defHighestStat == STAT_DEF) || (IS_MOVE_SPECIAL(move) && defHighestStat == STAT_SPDEF))) + && ((IS_MOVE_PHYSICAL(move) && defHighestStat == STAT_DEF) || (IS_MOVE_SPECIAL(move) && defHighestStat == STAT_SPDEF)) + && !(gBattleMons[battlerDef].status2 & STATUS2_TRANSFORMED)) modifier = uq4_12_multiply(modifier, UQ_4_12(0.7)); } break; diff --git a/src/battle_z_move.c b/src/battle_z_move.c index 5a5816142c..436ffb8428 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -56,10 +56,10 @@ static const struct SignatureZMove sSignatureZMoves[] = {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_PHD, 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_RAICHU_ALOLA, 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}, @@ -72,15 +72,15 @@ static const struct SignatureZMove sSignatureZMoves[] = {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_MIMIKYU_BUSTED_TOTEM, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, + {SPECIES_PIKACHU_ORIGINAL, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, + {SPECIES_PIKACHU_HOENN, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, + {SPECIES_PIKACHU_SINNOH, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, + {SPECIES_PIKACHU_UNOVA, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, + {SPECIES_PIKACHU_KALOS, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, + {SPECIES_PIKACHU_ALOLA, 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_PIKACHU_WORLD, 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}, diff --git a/src/berry.c b/src/berry.c index 5c23623e3b..1f41973e74 100644 --- a/src/berry.c +++ b/src/berry.c @@ -2144,7 +2144,7 @@ void ObjectEventInteractionGetBerryCountString(void) u8 treeId = GetObjectEventBerryTreeId(gSelectedObjectEvent); u8 berry = GetBerryTypeByBerryTreeId(treeId); u8 count = GetBerryCountByBerryTreeId(treeId); - + gSpecialVar_0x8006 = BerryTypeToItemId(berry); CopyItemNameHandlePlural(BerryTypeToItemId(berry), gStringVar1, count); berry = GetTreeMutationValue(treeId); @@ -2422,7 +2422,7 @@ static u16 GetBerryPestSpecies(u8 berryId) return P_FAMILY_VOLBEAT_ILLUMISE ? SPECIES_ILLUMISE : SPECIES_NONE; break; case BERRY_COLOR_GREEN: - return P_FAMILY_BURMY ? SPECIES_BURMY_PLANT_CLOAK : SPECIES_NONE; + return P_FAMILY_BURMY ? SPECIES_BURMY_PLANT : SPECIES_NONE; break; case BERRY_COLOR_YELLOW: return P_FAMILY_COMBEE ? SPECIES_COMBEE : SPECIES_NONE; diff --git a/src/bike.c b/src/bike.c index 427dfdfcf2..b369883093 100644 --- a/src/bike.c +++ b/src/bike.c @@ -142,7 +142,7 @@ static u8 GetMachBikeTransition(u8 *dirTraveling) { // if the dir updated before this function, get the relevent new direction to check later. u8 direction = GetPlayerMovementDirection(); - + // fix direction when moving on sideways stairs switch (direction) { @@ -249,7 +249,7 @@ static void MachBikeTransition_TrySpeedUp(u8 direction) // we did not hit anything that can slow us down, so perform the advancement callback depending on the bikeFrameCounter and try to increase the mach bike's speed. if (ObjectMovingOnRockStairs(playerObjEvent, direction) && gPlayerAvatar.bikeFrameCounter > 1) gPlayerAvatar.bikeFrameCounter--; - + sMachBikeSpeedCallbacks[gPlayerAvatar.bikeFrameCounter](direction); gPlayerAvatar.bikeSpeed = gPlayerAvatar.bikeFrameCounter + (gPlayerAvatar.bikeFrameCounter >> 1); // same as dividing by 2, but compiler is insistent on >> 1 if (gPlayerAvatar.bikeFrameCounter < 2) // do not go faster than the last element in the mach bike array @@ -384,7 +384,7 @@ static u8 AcroBikeHandleInputWheelieStanding(u8 *newDirection, u16 newKeys, u16 struct ObjectEvent *playerObjEvent; direction = GetPlayerMovementDirection(); - + playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; gPlayerAvatar.runningState = NOT_MOVING; @@ -716,7 +716,7 @@ static void AcroBikeTransition_WheelieMoving(u8 direction) } return; } - + PlayerWheelieMove(direction); gPlayerAvatar.runningState = MOVING; } diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index a1c1a20108..9a3c1d1711 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -65,6 +65,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_VenusaurF[] = INCBIN_U32("graphics/pokemon/venusaur/anim_frontf.4bpp.lz"); const u32 gMonBackPic_VenusaurF[] = INCBIN_U32("graphics/pokemon/venusaur/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_VenusaurF[] = INCBIN_COMP("graphics/pokemon/venusaur/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/front.4bpp.lz"); @@ -321,6 +324,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_ButterfreeF[] = INCBIN_U32("graphics/pokemon/butterfree/anim_frontf.4bpp.lz"); const u32 gMonBackPic_ButterfreeF[] = INCBIN_U32("graphics/pokemon/butterfree/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ButterfreeF[] = INCBIN_COMP("graphics/pokemon/butterfree/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_ButterfreeGigantamax[] = INCBIN_U32("graphics/pokemon/butterfree/gigantamax/front.4bpp.lz"); @@ -487,6 +493,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_RattataF[] = INCBIN_U32("graphics/pokemon/rattata/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RattataF[] = INCBIN_U32("graphics/pokemon/rattata/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_RattataF[] = INCBIN_COMP("graphics/pokemon/rattata/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/anim_front.4bpp.lz"); const u32 gMonPalette_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/normal.gbapal.lz"); @@ -506,6 +515,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_RaticateF[] = INCBIN_U32("graphics/pokemon/raticate/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RaticateF[] = INCBIN_U32("graphics/pokemon/raticate/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_RaticateF[] = INCBIN_COMP("graphics/pokemon/raticate/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_RattataAlolan[] = INCBIN_U32("graphics/pokemon/rattata/alolan/front.4bpp.lz"); @@ -657,6 +669,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_CUSTOM_GENDER_DIFF_ICONS const u8 gMonIcon_PikachuF[] = INCBIN_U8("graphics/pokemon/pikachu/iconf.4bpp"); #endif +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_PikachuF[] = INCBIN_COMP("graphics/pokemon/pikachu/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_COSPLAY_PIKACHU_FORMS const u32 gMonFrontPic_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/front.4bpp.lz"); @@ -803,6 +818,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_RaichuF[] = INCBIN_U32("graphics/pokemon/raichu/anim_frontf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_RaichuF[] = INCBIN_COMP("graphics/pokemon/raichu/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_RaichuAlolan[] = INCBIN_U32("graphics/pokemon/raichu/alolan/front.4bpp.lz"); @@ -1165,6 +1183,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_ZubatF[] = INCBIN_U32("graphics/pokemon/zubat/anim_frontf.4bpp.lz"); const u32 gMonBackPic_ZubatF[] = INCBIN_U32("graphics/pokemon/zubat/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ZubatF[] = INCBIN_COMP("graphics/pokemon/zubat/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/anim_front.4bpp.lz"); const u32 gMonPalette_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/normal.gbapal.lz"); @@ -1184,6 +1205,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_GolbatF[] = INCBIN_U32("graphics/pokemon/golbat/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GolbatF[] = INCBIN_U32("graphics/pokemon/golbat/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GolbatF[] = INCBIN_COMP("graphics/pokemon/golbat/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/anim_front.4bpp.lz"); @@ -1239,6 +1263,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_GloomF[] = INCBIN_U32("graphics/pokemon/gloom/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GloomF[] = INCBIN_U32("graphics/pokemon/gloom/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GloomF[] = INCBIN_COMP("graphics/pokemon/gloom/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/anim_front.4bpp.lz"); const u32 gMonPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/normal.gbapal.lz"); @@ -1258,6 +1285,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_VileplumeF[] = INCBIN_U32("graphics/pokemon/vileplume/anim_frontf.4bpp.lz"); const u32 gMonBackPic_VileplumeF[] = INCBIN_U32("graphics/pokemon/vileplume/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_VileplumeF[] = INCBIN_COMP("graphics/pokemon/vileplume/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/anim_front.4bpp.lz"); @@ -1732,6 +1762,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_PolitoedF[] = INCBIN_U32("graphics/pokemon/politoed/anim_frontf.4bpp.lz"); const u32 gMonBackPic_PolitoedF[] = INCBIN_U32("graphics/pokemon/politoed/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_PolitoedF[] = INCBIN_COMP("graphics/pokemon/politoed/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_POLIWAG @@ -1770,6 +1803,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_KadabraF[] = INCBIN_U32("graphics/pokemon/kadabra/anim_frontf.4bpp.lz"); const u32 gMonBackPic_KadabraF[] = INCBIN_U32("graphics/pokemon/kadabra/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_KadabraF[] = INCBIN_COMP("graphics/pokemon/kadabra/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/anim_front.4bpp.lz"); const u32 gMonPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/normal.gbapal.lz"); @@ -1789,6 +1825,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_AlakazamF[] = INCBIN_U32("graphics/pokemon/alakazam/anim_frontf.4bpp.lz"); const u32 gMonBackPic_AlakazamF[] = INCBIN_U32("graphics/pokemon/alakazam/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_AlakazamF[] = INCBIN_COMP("graphics/pokemon/alakazam/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AlakazamMega[] = INCBIN_U32("graphics/pokemon/alakazam/mega/front.4bpp.lz"); @@ -2338,6 +2377,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_DoduoF[] = INCBIN_U32("graphics/pokemon/doduo/anim_frontf.4bpp.lz"); const u32 gMonBackPic_DoduoF[] = INCBIN_U32("graphics/pokemon/doduo/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_DoduoF[] = INCBIN_COMP("graphics/pokemon/doduo/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/anim_front.4bpp.lz"); const u32 gMonPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/normal.gbapal.lz"); @@ -2357,6 +2399,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_DodrioF[] = INCBIN_U32("graphics/pokemon/dodrio/anim_frontf.4bpp.lz"); const u32 gMonBackPic_DodrioF[] = INCBIN_U32("graphics/pokemon/dodrio/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_DodrioF[] = INCBIN_COMP("graphics/pokemon/dodrio/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DODUO #if P_FAMILY_SEEL @@ -2605,6 +2650,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_SteelixF[] = INCBIN_U32("graphics/pokemon/steelix/anim_frontf.4bpp.lz"); const u32 gMonBackPic_SteelixF[] = INCBIN_U32("graphics/pokemon/steelix/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SteelixF[] = INCBIN_COMP("graphics/pokemon/steelix/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_SteelixMega[] = INCBIN_U32("graphics/pokemon/steelix/mega/front.4bpp.lz"); @@ -2658,6 +2706,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_HypnoF[] = INCBIN_U32("graphics/pokemon/hypno/anim_frontf.4bpp.lz"); const u32 gMonBackPic_HypnoF[] = INCBIN_U32("graphics/pokemon/hypno/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_HypnoF[] = INCBIN_COMP("graphics/pokemon/hypno/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DROWZEE #if P_FAMILY_KRABBY @@ -3043,6 +3094,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_RhyhornF[] = INCBIN_U32("graphics/pokemon/rhyhorn/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RhyhornF[] = INCBIN_U32("graphics/pokemon/rhyhorn/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_RhyhornF[] = INCBIN_COMP("graphics/pokemon/rhyhorn/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/anim_front.4bpp.lz"); const u32 gMonPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/normal.gbapal.lz"); @@ -3062,6 +3116,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_RhydonF[] = INCBIN_U32("graphics/pokemon/rhydon/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RhydonF[] = INCBIN_U32("graphics/pokemon/rhydon/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_RhydonF[] = INCBIN_COMP("graphics/pokemon/rhydon/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/anim_front.4bpp.lz"); @@ -3082,6 +3139,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_RhyperiorF[] = INCBIN_U32("graphics/pokemon/rhyperior/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RhyperiorF[] = INCBIN_U32("graphics/pokemon/rhyperior/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_RhyperiorF[] = INCBIN_COMP("graphics/pokemon/rhyperior/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_RHYHORN @@ -3174,6 +3234,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_TangrowthF[] = INCBIN_U32("graphics/pokemon/tangrowth/anim_frontf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_TangrowthF[] = INCBIN_COMP("graphics/pokemon/tangrowth/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_TANGELA @@ -3281,6 +3344,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_GoldeenF[] = INCBIN_U32("graphics/pokemon/goldeen/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GoldeenF[] = INCBIN_U32("graphics/pokemon/goldeen/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GoldeenF[] = INCBIN_COMP("graphics/pokemon/goldeen/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/anim_front.4bpp.lz"); const u32 gMonPalette_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/normal.gbapal.lz"); @@ -3300,6 +3366,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_SeakingF[] = INCBIN_U32("graphics/pokemon/seaking/anim_frontf.4bpp.lz"); const u32 gMonBackPic_SeakingF[] = INCBIN_U32("graphics/pokemon/seaking/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SeakingF[] = INCBIN_COMP("graphics/pokemon/seaking/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GOLDEEN #if P_FAMILY_STARYU @@ -3421,6 +3490,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_ScytherF[] = INCBIN_U32("graphics/pokemon/scyther/anim_frontf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ScytherF[] = INCBIN_COMP("graphics/pokemon/scyther/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/anim_front.4bpp.lz"); @@ -3440,6 +3512,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_ScizorF[] = INCBIN_U32("graphics/pokemon/scizor/anim_frontf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ScizorF[] = INCBIN_COMP("graphics/pokemon/scizor/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_ScizorMega[] = INCBIN_U32("graphics/pokemon/scizor/mega/front.4bpp.lz"); @@ -3724,6 +3799,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_MagikarpF[] = INCBIN_U32("graphics/pokemon/magikarp/anim_frontf.4bpp.lz"); const u32 gMonBackPic_MagikarpF[] = INCBIN_U32("graphics/pokemon/magikarp/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MagikarpF[] = INCBIN_COMP("graphics/pokemon/magikarp/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/anim_front.4bpp.lz"); const u32 gMonPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/normal.gbapal.lz"); @@ -3743,6 +3821,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_GyaradosF[] = INCBIN_U32("graphics/pokemon/gyarados/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GyaradosF[] = INCBIN_U32("graphics/pokemon/gyarados/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GyaradosF[] = INCBIN_COMP("graphics/pokemon/gyarados/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_GyaradosMega[] = INCBIN_U32("graphics/pokemon/gyarados/mega/front.4bpp.lz"); @@ -3830,6 +3911,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_EeveeF[] = INCBIN_U32("graphics/pokemon/eevee/anim_frontf.4bpp.lz"); const u32 gMonBackPic_EeveeF[] = INCBIN_U32("graphics/pokemon/eevee/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_EeveeF[] = INCBIN_COMP("graphics/pokemon/eevee/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_EeveeGigantamax[] = INCBIN_U32("graphics/pokemon/eevee/gigantamax/front.4bpp.lz"); @@ -4456,6 +4540,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_MeganiumF[] = INCBIN_U32("graphics/pokemon/meganium/anim_frontf.4bpp.lz"); const u32 gMonBackPic_MeganiumF[] = INCBIN_U32("graphics/pokemon/meganium/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MeganiumF[] = INCBIN_COMP("graphics/pokemon/meganium/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHIKORITA #if P_FAMILY_CYNDAQUIL @@ -4660,6 +4747,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_LedybaF[] = INCBIN_U32("graphics/pokemon/ledyba/anim_frontf.4bpp.lz"); const u32 gMonBackPic_LedybaF[] = INCBIN_U32("graphics/pokemon/ledyba/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_LedybaF[] = INCBIN_COMP("graphics/pokemon/ledyba/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/anim_front.4bpp.lz"); const u32 gMonPalette_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/normal.gbapal.lz"); @@ -4679,6 +4769,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_LedianF[] = INCBIN_U32("graphics/pokemon/ledian/anim_frontf.4bpp.lz"); const u32 gMonBackPic_LedianF[] = INCBIN_U32("graphics/pokemon/ledian/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_LedianF[] = INCBIN_COMP("graphics/pokemon/ledian/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LEDYBA #if P_FAMILY_SPINARAK @@ -4835,6 +4928,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_XatuF[] = INCBIN_U32("graphics/pokemon/xatu/anim_frontf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_XatuF[] = INCBIN_COMP("graphics/pokemon/xatu/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_NATU #if P_FAMILY_MAREEP @@ -4991,6 +5087,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_SudowoodoF[] = INCBIN_U32("graphics/pokemon/sudowoodo/anim_frontf.4bpp.lz"); const u32 gMonBackPic_SudowoodoF[] = INCBIN_U32("graphics/pokemon/sudowoodo/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SudowoodoF[] = INCBIN_COMP("graphics/pokemon/sudowoodo/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SUDOWOODO #if P_FAMILY_HOPPIP @@ -5062,6 +5161,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_AipomF[] = INCBIN_U32("graphics/pokemon/aipom/anim_frontf.4bpp.lz"); const u32 gMonBackPic_AipomF[] = INCBIN_U32("graphics/pokemon/aipom/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_AipomF[] = INCBIN_COMP("graphics/pokemon/aipom/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/anim_front.4bpp.lz"); @@ -5082,6 +5184,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_AmbipomF[] = INCBIN_U32("graphics/pokemon/ambipom/anim_frontf.4bpp.lz"); const u32 gMonBackPic_AmbipomF[] = INCBIN_U32("graphics/pokemon/ambipom/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_AmbipomF[] = INCBIN_COMP("graphics/pokemon/ambipom/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_AIPOM @@ -5174,6 +5279,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_WooperF[] = INCBIN_U32("graphics/pokemon/wooper/anim_frontf.4bpp.lz"); const u32 gMonBackPic_WooperF[] = INCBIN_U32("graphics/pokemon/wooper/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_WooperF[] = INCBIN_COMP("graphics/pokemon/wooper/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/anim_front.4bpp.lz"); const u32 gMonPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/normal.gbapal.lz"); @@ -5193,6 +5301,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_QuagsireF[] = INCBIN_U32("graphics/pokemon/quagsire/anim_frontf.4bpp.lz"); const u32 gMonBackPic_QuagsireF[] = INCBIN_U32("graphics/pokemon/quagsire/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_QuagsireF[] = INCBIN_COMP("graphics/pokemon/quagsire/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_PALDEAN_FORMS const u32 gMonFrontPic_WooperPaldean[] = INCBIN_U32("graphics/pokemon/wooper/wooper_paldean/front.4bpp.lz"); @@ -5245,6 +5356,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_MurkrowF[] = INCBIN_U32("graphics/pokemon/murkrow/anim_frontf.4bpp.lz"); const u32 gMonBackPic_MurkrowF[] = INCBIN_U32("graphics/pokemon/murkrow/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MurkrowF[] = INCBIN_COMP("graphics/pokemon/murkrow/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/anim_front.4bpp.lz"); @@ -5496,6 +5610,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_CUSTOM_GENDER_DIFF_ICONS const u8 gMonIcon_WobbuffetF[] = INCBIN_U8("graphics/pokemon/wobbuffet/iconf.4bpp"); #endif +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_WobbuffetF[] = INCBIN_COMP("graphics/pokemon/wobbuffet/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WOBBUFFET #if P_FAMILY_GIRAFARIG @@ -5517,6 +5634,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_GirafarigF[] = INCBIN_U32("graphics/pokemon/girafarig/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GirafarigF[] = INCBIN_U32("graphics/pokemon/girafarig/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GirafarigF[] = INCBIN_COMP("graphics/pokemon/girafarig/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_9_CROSS_EVOS const u32 gMonFrontPic_Farigiraf[] = INCBIN_U32("graphics/pokemon/farigiraf/front.4bpp.lz"); @@ -5633,6 +5753,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_GligarF[] = INCBIN_U32("graphics/pokemon/gligar/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GligarF[] = INCBIN_U32("graphics/pokemon/gligar/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GligarF[] = INCBIN_COMP("graphics/pokemon/gligar/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/anim_front.4bpp.lz"); @@ -5773,6 +5896,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_HeracrossF[] = INCBIN_U32("graphics/pokemon/heracross/anim_frontf.4bpp.lz"); const u32 gMonBackPic_HeracrossF[] = INCBIN_U32("graphics/pokemon/heracross/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_HeracrossF[] = INCBIN_COMP("graphics/pokemon/heracross/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_HeracrossMega[] = INCBIN_U32("graphics/pokemon/heracross/mega/front.4bpp.lz"); @@ -5809,6 +5935,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_SneaselF[] = INCBIN_U32("graphics/pokemon/sneasel/anim_frontf.4bpp.lz"); const u32 gMonBackPic_SneaselF[] = INCBIN_U32("graphics/pokemon/sneasel/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SneaselF[] = INCBIN_COMP("graphics/pokemon/sneasel/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/anim_front.4bpp.lz"); @@ -5829,6 +5958,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_WeavileF[] = INCBIN_U32("graphics/pokemon/weavile/anim_frontf.4bpp.lz"); const u32 gMonBackPic_WeavileF[] = INCBIN_U32("graphics/pokemon/weavile/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_WeavileF[] = INCBIN_COMP("graphics/pokemon/weavile/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #if P_HISUIAN_FORMS @@ -5847,6 +5979,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_SneaselHisuianF[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/frontf.4bpp.lz"); const u32 gMonBackPic_SneaselHisuianF[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SneaselHisuianF[] = INCBIN_COMP("graphics/pokemon/sneasel/hisuian/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/front.4bpp.lz"); const u32 gMonPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/normal.gbapal.lz"); @@ -5901,6 +6036,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_UrsaringF[] = INCBIN_U32("graphics/pokemon/ursaring/anim_frontf.4bpp.lz"); const u32 gMonBackPic_UrsaringF[] = INCBIN_U32("graphics/pokemon/ursaring/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_UrsaringF[] = INCBIN_COMP("graphics/pokemon/ursaring/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_8_CROSS_EVOS const u32 gMonFrontPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/front.4bpp.lz"); @@ -6003,6 +6141,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_PiloswineF[] = INCBIN_U32("graphics/pokemon/piloswine/anim_frontf.4bpp.lz"); const u32 gMonBackPic_PiloswineF[] = INCBIN_U32("graphics/pokemon/piloswine/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_PiloswineF[] = INCBIN_COMP("graphics/pokemon/piloswine/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/anim_front.4bpp.lz"); @@ -6022,6 +6163,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_MamoswineF[] = INCBIN_U32("graphics/pokemon/mamoswine/anim_frontf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MamoswineF[] = INCBIN_COMP("graphics/pokemon/mamoswine/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_SWINUB @@ -6109,6 +6253,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_OctilleryF[] = INCBIN_U32("graphics/pokemon/octillery/anim_frontf.4bpp.lz"); const u32 gMonBackPic_OctilleryF[] = INCBIN_U32("graphics/pokemon/octillery/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_OctilleryF[] = INCBIN_COMP("graphics/pokemon/octillery/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_REMORAID #if P_FAMILY_DELIBIRD @@ -6218,6 +6365,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_HoundoomF[] = INCBIN_U32("graphics/pokemon/houndoom/anim_frontf.4bpp.lz"); const u32 gMonBackPic_HoundoomF[] = INCBIN_U32("graphics/pokemon/houndoom/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_HoundoomF[] = INCBIN_COMP("graphics/pokemon/houndoom/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_HoundoomMega[] = INCBIN_U32("graphics/pokemon/houndoom/mega/front.4bpp.lz"); @@ -6270,6 +6420,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_DonphanF[] = INCBIN_U32("graphics/pokemon/donphan/anim_frontf.4bpp.lz"); const u32 gMonBackPic_DonphanF[] = INCBIN_U32("graphics/pokemon/donphan/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_DonphanF[] = INCBIN_COMP("graphics/pokemon/donphan/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PHANPY #if P_FAMILY_STANTLER @@ -6600,6 +6753,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonBackPic_TorchicF[] = INCBIN_U32("graphics/pokemon/torchic/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_TorchicF[] = INCBIN_COMP("graphics/pokemon/torchic/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/anim_front.4bpp.lz"); const u32 gMonPalette_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/normal.gbapal.lz"); @@ -6619,6 +6775,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_CombuskenF[] = INCBIN_U32("graphics/pokemon/combusken/anim_frontf.4bpp.lz"); const u32 gMonBackPic_CombuskenF[] = INCBIN_U32("graphics/pokemon/combusken/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_CombuskenF[] = INCBIN_COMP("graphics/pokemon/combusken/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/anim_front.4bpp.lz"); const u32 gMonPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/normal.gbapal.lz"); @@ -6638,6 +6797,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_BlazikenF[] = INCBIN_U32("graphics/pokemon/blaziken/anim_frontf.4bpp.lz"); const u32 gMonBackPic_BlazikenF[] = INCBIN_U32("graphics/pokemon/blaziken/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_BlazikenF[] = INCBIN_COMP("graphics/pokemon/blaziken/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_BlazikenMega[] = INCBIN_U32("graphics/pokemon/blaziken/mega/front.4bpp.lz"); @@ -6883,6 +7045,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_BeautiflyF[] = INCBIN_U32("graphics/pokemon/beautifly/anim_frontf.4bpp.lz"); const u32 gMonBackPic_BeautiflyF[] = INCBIN_U32("graphics/pokemon/beautifly/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_BeautiflyF[] = INCBIN_COMP("graphics/pokemon/beautifly/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/anim_front.4bpp.lz"); const u32 gMonPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/normal.gbapal.lz"); @@ -6918,6 +7083,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_DustoxF[] = INCBIN_U32("graphics/pokemon/dustox/anim_frontf.4bpp.lz"); const u32 gMonBackPic_DustoxF[] = INCBIN_U32("graphics/pokemon/dustox/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_DustoxF[] = INCBIN_COMP("graphics/pokemon/dustox/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WURMPLE #if P_FAMILY_LOTAD @@ -6971,6 +7139,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_LudicoloF[] = INCBIN_U32("graphics/pokemon/ludicolo/anim_frontf.4bpp.lz"); const u32 gMonBackPic_LudicoloF[] = INCBIN_U32("graphics/pokemon/ludicolo/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_LudicoloF[] = INCBIN_COMP("graphics/pokemon/ludicolo/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LOTAD #if P_FAMILY_SEEDOT @@ -7008,6 +7179,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_NuzleafF[] = INCBIN_U32("graphics/pokemon/nuzleaf/anim_frontf.4bpp.lz"); const u32 gMonBackPic_NuzleafF[] = INCBIN_U32("graphics/pokemon/nuzleaf/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_NuzleafF[] = INCBIN_COMP("graphics/pokemon/nuzleaf/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/anim_front.4bpp.lz"); const u32 gMonPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/normal.gbapal.lz"); @@ -7027,6 +7201,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_ShiftryF[] = INCBIN_U32("graphics/pokemon/shiftry/anim_frontf.4bpp.lz"); const u32 gMonBackPic_ShiftryF[] = INCBIN_U32("graphics/pokemon/shiftry/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ShiftryF[] = INCBIN_COMP("graphics/pokemon/shiftry/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SEEDOT #if P_FAMILY_TAILLOW @@ -7667,6 +7844,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_MedititeF[] = INCBIN_U32("graphics/pokemon/meditite/anim_frontf.4bpp.lz"); const u32 gMonBackPic_MedititeF[] = INCBIN_U32("graphics/pokemon/meditite/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MedititeF[] = INCBIN_COMP("graphics/pokemon/meditite/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/anim_front.4bpp.lz"); const u32 gMonPalette_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/normal.gbapal.lz"); @@ -7686,6 +7866,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_MedichamF[] = INCBIN_U32("graphics/pokemon/medicham/anim_frontf.4bpp.lz"); const u32 gMonBackPic_MedichamF[] = INCBIN_U32("graphics/pokemon/medicham/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MedichamF[] = INCBIN_COMP("graphics/pokemon/medicham/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_MedichamMega[] = INCBIN_U32("graphics/pokemon/medicham/mega/front.4bpp.lz"); @@ -7859,6 +8042,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_RoseliaF[] = INCBIN_U32("graphics/pokemon/roselia/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RoseliaF[] = INCBIN_U32("graphics/pokemon/roselia/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_RoseliaF[] = INCBIN_COMP("graphics/pokemon/roselia/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/anim_front.4bpp.lz"); @@ -7879,6 +8065,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_RoseradeF[] = INCBIN_U32("graphics/pokemon/roserade/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RoseradeF[] = INCBIN_U32("graphics/pokemon/roserade/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_RoseradeF[] = INCBIN_COMP("graphics/pokemon/roserade/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_ROSELIA @@ -7901,6 +8090,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_GulpinF[] = INCBIN_U32("graphics/pokemon/gulpin/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GulpinF[] = INCBIN_U32("graphics/pokemon/gulpin/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GulpinF[] = INCBIN_COMP("graphics/pokemon/gulpin/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/anim_front.4bpp.lz"); const u32 gMonPalette_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/normal.gbapal.lz"); @@ -7920,6 +8112,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_SwalotF[] = INCBIN_U32("graphics/pokemon/swalot/anim_frontf.4bpp.lz"); const u32 gMonBackPic_SwalotF[] = INCBIN_U32("graphics/pokemon/swalot/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SwalotF[] = INCBIN_COMP("graphics/pokemon/swalot/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GULPIN #if P_FAMILY_CARVANHA @@ -8024,6 +8219,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_NumelF[] = INCBIN_U32("graphics/pokemon/numel/anim_frontf.4bpp.lz"); const u32 gMonBackPic_NumelF[] = INCBIN_U32("graphics/pokemon/numel/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_NumelF[] = INCBIN_COMP("graphics/pokemon/numel/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/anim_front.4bpp.lz"); const u32 gMonPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/normal.gbapal.lz"); @@ -8043,6 +8241,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_CameruptF[] = INCBIN_U32("graphics/pokemon/camerupt/anim_frontf.4bpp.lz"); const u32 gMonBackPic_CameruptF[] = INCBIN_U32("graphics/pokemon/camerupt/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_CameruptF[] = INCBIN_COMP("graphics/pokemon/camerupt/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_CameruptMega[] = INCBIN_U32("graphics/pokemon/camerupt/mega/front.4bpp.lz"); @@ -8214,6 +8415,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_CacturneF[] = INCBIN_U32("graphics/pokemon/cacturne/anim_frontf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_CacturneF[] = INCBIN_COMP("graphics/pokemon/cacturne/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CACNEA #if P_FAMILY_SWABLU @@ -8542,6 +8746,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_MiloticF[] = INCBIN_U32("graphics/pokemon/milotic/anim_frontf.4bpp.lz"); const u32 gMonBackPic_MiloticF[] = INCBIN_U32("graphics/pokemon/milotic/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MiloticF[] = INCBIN_COMP("graphics/pokemon/milotic/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FEEBAS #if P_FAMILY_CASTFORM @@ -8982,6 +9189,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_RelicanthF[] = INCBIN_U32("graphics/pokemon/relicanth/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RelicanthF[] = INCBIN_U32("graphics/pokemon/relicanth/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_RelicanthF[] = INCBIN_COMP("graphics/pokemon/relicanth/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_RELICANTH #if P_FAMILY_LUVDISC @@ -9584,6 +9794,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_StarlyF[] = INCBIN_U32("graphics/pokemon/starly/anim_frontf.4bpp.lz"); const u32 gMonBackPic_StarlyF[] = INCBIN_U32("graphics/pokemon/starly/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_StarlyF[] = INCBIN_COMP("graphics/pokemon/starly/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/anim_front.4bpp.lz"); const u32 gMonPalette_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/normal.gbapal.lz"); @@ -9603,6 +9816,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_StaraviaF[] = INCBIN_U32("graphics/pokemon/staravia/anim_frontf.4bpp.lz"); const u32 gMonBackPic_StaraviaF[] = INCBIN_U32("graphics/pokemon/staravia/back.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_StaraviaF[] = INCBIN_COMP("graphics/pokemon/staravia/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/anim_front.4bpp.lz"); const u32 gMonPalette_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/normal.gbapal.lz"); @@ -9621,6 +9837,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_StaraptorF[] = INCBIN_U32("graphics/pokemon/staraptor/anim_frontf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_StaraptorF[] = INCBIN_COMP("graphics/pokemon/staraptor/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_STARLY #if P_FAMILY_BIDOOF @@ -9642,6 +9861,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_BidoofF[] = INCBIN_U32("graphics/pokemon/bidoof/anim_frontf.4bpp.lz"); const u32 gMonBackPic_BidoofF[] = INCBIN_U32("graphics/pokemon/bidoof/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_BidoofF[] = INCBIN_COMP("graphics/pokemon/bidoof/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/anim_front.4bpp.lz"); const u32 gMonPalette_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/normal.gbapal.lz"); @@ -9660,6 +9882,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_BibarelF[] = INCBIN_U32("graphics/pokemon/bibarel/anim_frontf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_BibarelF[] = INCBIN_COMP("graphics/pokemon/bibarel/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BIDOOF #if P_FAMILY_KRICKETOT @@ -9681,6 +9906,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_KricketotF[] = INCBIN_U32("graphics/pokemon/kricketot/anim_frontf.4bpp.lz"); const u32 gMonBackPic_KricketotF[] = INCBIN_U32("graphics/pokemon/kricketot/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_KricketotF[] = INCBIN_COMP("graphics/pokemon/kricketot/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/anim_front.4bpp.lz"); const u32 gMonPalette_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/normal.gbapal.lz"); @@ -9700,6 +9928,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_KricketuneF[] = INCBIN_U32("graphics/pokemon/kricketune/anim_frontf.4bpp.lz"); const u32 gMonBackPic_KricketuneF[] = INCBIN_U32("graphics/pokemon/kricketune/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_KricketuneF[] = INCBIN_COMP("graphics/pokemon/kricketune/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KRICKETOT #if P_FAMILY_SHINX @@ -9721,6 +9952,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_ShinxF[] = INCBIN_U32("graphics/pokemon/shinx/anim_frontf.4bpp.lz"); const u32 gMonBackPic_ShinxF[] = INCBIN_U32("graphics/pokemon/shinx/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ShinxF[] = INCBIN_COMP("graphics/pokemon/shinx/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/anim_front.4bpp.lz"); const u32 gMonPalette_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/normal.gbapal.lz"); @@ -9740,6 +9974,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_LuxioF[] = INCBIN_U32("graphics/pokemon/luxio/anim_frontf.4bpp.lz"); const u32 gMonBackPic_LuxioF[] = INCBIN_U32("graphics/pokemon/luxio/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_LuxioF[] = INCBIN_COMP("graphics/pokemon/luxio/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/anim_front.4bpp.lz"); const u32 gMonPalette_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/normal.gbapal.lz"); @@ -9759,6 +9996,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_LuxrayF[] = INCBIN_U32("graphics/pokemon/luxray/anim_frontf.4bpp.lz"); const u32 gMonBackPic_LuxrayF[] = INCBIN_U32("graphics/pokemon/luxray/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_LuxrayF[] = INCBIN_COMP("graphics/pokemon/luxray/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHINX #if P_FAMILY_CRANIDOS @@ -9937,7 +10177,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/normalf.gbapal.lz"); const u32 gMonShinyPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/shinyf.gbapal.lz"); #if OW_POKEMON_OBJECT_EVENTS - const u32 gObjectEventPic_CombeeF[] = INCBIN_COMP("graphics/pokemon/combee/followerf.4bpp"); + const u32 gObjectEventPic_CombeeF[] = INCBIN_COMP("graphics/pokemon/combee/overworldf.4bpp"); #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/anim_front.4bpp.lz"); @@ -9975,6 +10215,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_PachirisuF[] = INCBIN_U32("graphics/pokemon/pachirisu/anim_frontf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_PachirisuF[] = INCBIN_COMP("graphics/pokemon/pachirisu/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PACHIRISU #if P_FAMILY_BUIZEL @@ -9995,6 +10238,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonBackPic_BuizelF[] = INCBIN_U32("graphics/pokemon/buizel/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_BuizelF[] = INCBIN_COMP("graphics/pokemon/buizel/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/anim_front.4bpp.lz"); const u32 gMonPalette_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/normal.gbapal.lz"); @@ -10013,6 +10259,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonBackPic_FloatzelF[] = INCBIN_U32("graphics/pokemon/floatzel/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_FloatzelF[] = INCBIN_COMP("graphics/pokemon/floatzel/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BUIZEL #if P_FAMILY_CHERUBI @@ -10352,6 +10601,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_GibleF[] = INCBIN_U32("graphics/pokemon/gible/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GibleF[] = INCBIN_U32("graphics/pokemon/gible/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GibleF[] = INCBIN_COMP("graphics/pokemon/gible/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/anim_front.4bpp.lz"); const u32 gMonPalette_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/normal.gbapal.lz"); @@ -10371,6 +10623,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_GabiteF[] = INCBIN_U32("graphics/pokemon/gabite/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GabiteF[] = INCBIN_U32("graphics/pokemon/gabite/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GabiteF[] = INCBIN_COMP("graphics/pokemon/gabite/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/anim_front.4bpp.lz"); const u32 gMonPalette_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/normal.gbapal.lz"); @@ -10389,6 +10644,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_GarchompF[] = INCBIN_U32("graphics/pokemon/garchomp/anim_frontf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GarchompF[] = INCBIN_COMP("graphics/pokemon/garchomp/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_GarchompMega[] = INCBIN_U32("graphics/pokemon/garchomp/mega/front.4bpp.lz"); @@ -10478,11 +10736,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u8 gMonIcon_HippopotasF[] = INCBIN_U8("graphics/pokemon/hippopotas/iconf.4bpp"); #endif #if OW_POKEMON_OBJECT_EVENTS - const u32 gObjectEventPic_HippopotasF[] = INCBIN_COMP("graphics/pokemon/hippopotas/overworld.4bpp"); -#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_HippopotasF[] = INCBIN_U32("graphics/pokemon/hippopotas/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_HippopotasF[] = INCBIN_U32("graphics/pokemon/hippopotas/overworld_shiny.gbapal.lz"); -#endif //OW_PKMN_OBJECTS_SHARE_PALETTES + const u32 gObjectEventPic_HippopotasF[] = INCBIN_COMP("graphics/pokemon/hippopotas/overworldf.4bpp"); #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/anim_front.4bpp.lz"); @@ -10507,10 +10761,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u8 gMonIcon_HippowdonF[] = INCBIN_U8("graphics/pokemon/hippowdon/iconf.4bpp"); #endif #if OW_POKEMON_OBJECT_EVENTS - const u32 gObjectEventPic_HippowdonF[] = INCBIN_COMP("graphics/pokemon/hippowdon/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/overworld_shiny.gbapal.lz"); + const u32 gOverworldPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/overworld_normalf.gbapal.lz"); + const u32 gShinyOverworldPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/overworld_shinyf.gbapal.lz"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HIPPOPOTAS @@ -10568,6 +10821,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_CroagunkF[] = INCBIN_U32("graphics/pokemon/croagunk/anim_frontf.4bpp.lz"); const u32 gMonBackPic_CroagunkF[] = INCBIN_U32("graphics/pokemon/croagunk/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_CroagunkF[] = INCBIN_COMP("graphics/pokemon/croagunk/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/anim_front.4bpp.lz"); const u32 gMonPalette_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/normal.gbapal.lz"); @@ -10587,6 +10843,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_ToxicroakF[] = INCBIN_U32("graphics/pokemon/toxicroak/anim_frontf.4bpp.lz"); const u32 gMonBackPic_ToxicroakF[] = INCBIN_U32("graphics/pokemon/toxicroak/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ToxicroakF[] = INCBIN_COMP("graphics/pokemon/toxicroak/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CROAGUNK #if P_FAMILY_CARNIVINE @@ -10626,6 +10885,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_FinneonF[] = INCBIN_U32("graphics/pokemon/finneon/anim_frontf.4bpp.lz"); const u32 gMonBackPic_FinneonF[] = INCBIN_U32("graphics/pokemon/finneon/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_FinneonF[] = INCBIN_COMP("graphics/pokemon/finneon/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/anim_front.4bpp.lz"); const u32 gMonPalette_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/normal.gbapal.lz"); @@ -10645,6 +10907,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_LumineonF[] = INCBIN_U32("graphics/pokemon/lumineon/anim_frontf.4bpp.lz"); const u32 gMonBackPic_LumineonF[] = INCBIN_U32("graphics/pokemon/lumineon/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_LumineonF[] = INCBIN_COMP("graphics/pokemon/lumineon/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FINNEON #if P_FAMILY_SNOVER @@ -10666,6 +10931,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_SnoverF[] = INCBIN_U32("graphics/pokemon/snover/anim_frontf.4bpp.lz"); const u32 gMonBackPic_SnoverF[] = INCBIN_U32("graphics/pokemon/snover/backf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SnoverF[] = INCBIN_COMP("graphics/pokemon/snover/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/anim_front.4bpp.lz"); const u32 gMonPalette_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/normal.gbapal.lz"); @@ -10684,6 +10952,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_AbomasnowF[] = INCBIN_U32("graphics/pokemon/abomasnow/anim_frontf.4bpp.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_AbomasnowF[] = INCBIN_COMP("graphics/pokemon/abomasnow/overworldf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AbomasnowMega[] = INCBIN_U32("graphics/pokemon/abomasnow/mega/front.4bpp.lz"); @@ -11685,10 +11956,10 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonShinyPalette_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant/shinyf.gbapal.lz"); const u8 gMonIcon_UnfezantF[] = INCBIN_U8("graphics/pokemon/unfezant/iconf.4bpp"); #if OW_POKEMON_OBJECT_EVENTS - const u32 gObjectEventPic_UnfezantF[] = INCBIN_COMP("graphics/pokemon/unfezant_f/overworld.4bpp"); + const u32 gObjectEventPic_UnfezantF[] = INCBIN_COMP("graphics/pokemon/unfezant/overworldf.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant_f/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant_f/overworld_shiny.gbapal.lz"); + const u32 gOverworldPalette_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant/overworld_normalf.gbapal.lz"); + const u32 gShinyOverworldPalette_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant/overworld_shinyf.gbapal.lz"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PIDOVE @@ -13165,10 +13436,10 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonShinyPalette_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/shinyf.gbapal.lz"); const u8 gMonIcon_FrillishF[] = INCBIN_U8("graphics/pokemon/frillish/iconf.4bpp"); #if OW_POKEMON_OBJECT_EVENTS - const u32 gObjectEventPic_FrillishF[] = INCBIN_COMP("graphics/pokemon/frillish/followerf.4bpp"); + const u32 gObjectEventPic_FrillishF[] = INCBIN_COMP("graphics/pokemon/frillish/overworldf.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/overworld_normalf.gbapal.lz"); - // const u32 gShinyOverworldPalette_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/overworld_shinyf.gbapal.lz"); + const u32 gOverworldPalette_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/overworld_normalf.gbapal.lz"); + const u32 gShinyOverworldPalette_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/overworld_shinyf.gbapal.lz"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -13194,10 +13465,10 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonShinyPalette_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/shinyf.gbapal.lz"); const u8 gMonIcon_JellicentF[] = INCBIN_U8("graphics/pokemon/jellicent/iconf.4bpp"); #if OW_POKEMON_OBJECT_EVENTS - const u32 gObjectEventPic_JellicentF[] = INCBIN_COMP("graphics/pokemon/jellicent/followerf.4bpp"); + const u32 gObjectEventPic_JellicentF[] = INCBIN_COMP("graphics/pokemon/jellicent/overworldf.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/overworld_shiny.gbapal.lz"); + const u32 gOverworldPalette_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/overworld_normalf.gbapal.lz"); + const u32 gShinyOverworldPalette_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/overworld_shinyf.gbapal.lz"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FRILLISH @@ -14858,11 +15129,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonBackPic_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/backf.4bpp.lz"); const u8 gMonIcon_PyroarF[] = INCBIN_U8("graphics/pokemon/pyroar/iconf.4bpp"); #if OW_POKEMON_OBJECT_EVENTS - const u32 gObjectEventPic_PyroarF[] = INCBIN_COMP("graphics/pokemon/pyroar/followerf.4bpp"); -#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/overworld_normalf.gbapal.lz"); - // const u32 gShinyOverworldPalette_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/overworld_shinyf.gbapal.lz"); -#endif //OW_PKMN_OBJECTS_SHARE_PALETTES + const u32 gObjectEventPic_PyroarF[] = INCBIN_COMP("graphics/pokemon/pyroar/overworldf.4bpp"); #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LITLEO @@ -21882,7 +22149,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gShinyOverworldPalette_OgerponCornerstoneMask[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/overworld_shiny.gbapal.lz"); const u32 gOverworldPalette_OgerponTealMask[] = INCBIN_U32("graphics/pokemon/ogerpon/overworld_normal.gbapal.lz"); const u32 gShinyOverworldPalette_OgerponTealMask[] = INCBIN_U32("graphics/pokemon/ogerpon/overworld_shiny.gbapal.lz"); - + const u32 gObjectEventPic_OgerponTealMaskTeraTera[] = INCBIN_COMP("graphics/pokemon/ogerpon/overworld.4bpp"); const u32 gObjectEventPic_OgerponWellspringMaskTera[] = INCBIN_COMP("graphics/pokemon/ogerpon/wellspring/overworld.4bpp"); const u32 gObjectEventPic_OgerponHearthflameMaskTera[] = INCBIN_COMP("graphics/pokemon/ogerpon/hearthflame/overworld.4bpp"); diff --git a/src/data/graphics/rayquaza_scene.h b/src/data/graphics/rayquaza_scene.h index 660f07416c..e999e947fb 100644 --- a/src/data/graphics/rayquaza_scene.h +++ b/src/data/graphics/rayquaza_scene.h @@ -24,9 +24,7 @@ const u32 gRaySceneTakesFlight_Bg_Tilemap[] = INCBIN_U32("graphics/rayquaz // Scene 3 (RAY_ANIM_DESCENDS) const u32 gRaySceneDescends_Rayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/rayquaza.4bpp.lz"); -// for some reason there are an extra 0xC bytes at the end of the original rayquaza_tail.4bpp, so in order to produce the correct lz, -// we have to cat the bytes at the end with a make rule. not sure why those bytes are there, it may have been a bug in Game Freak's software. -const u32 gRaySceneDescends_RayquazaTail_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/rayquaza_tail_fix.4bpp.lz"); +const u32 gRaySceneDescends_RayquazaTail_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/rayquaza_tail.4bpp.lz"); const u32 gRaySceneDescends_Bg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/bg.4bpp.lz"); const u32 gRaySceneDescends_Light_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/light.4bpp.lz"); // uses pal 2 of gRaySceneDescends_Bg_Pal const u32 gRaySceneDescends_Bg_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/bg.gbapal.lz"); diff --git a/src/data/heal_locations_pkm_center.h b/src/data/heal_locations_pkm_center.h index 58be0be05e..278f5d68b0 100644 --- a/src/data/heal_locations_pkm_center.h +++ b/src/data/heal_locations_pkm_center.h @@ -24,7 +24,7 @@ static const struct HealLocation sHealLocationsPokemonCenter[HEAL_LOCATION_COUNT }, [HEAL_LOCATION_SLATEPORT_CITY - 1] = { - .group = MAP_GROUP(SLATEPORT_CITY_POKEMON_CENTER_1F), + .group = MAP_GROUP(SLATEPORT_CITY_POKEMON_CENTER_1F), .map = MAP_NUM(SLATEPORT_CITY_POKEMON_CENTER_1F), DEFAULT_POKEMON_CENTER_COORDS, }, diff --git a/src/data/items.h b/src/data/items.h index 4c56c015b9..c3d8469e68 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -12262,7 +12262,7 @@ const struct Item gItemsInfo[] = .importance = 1, .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .fieldUseFunc = ItemUseOutOfBattle_TownMap, .iconPic = gItemIcon_TownMap, .iconPalette = gItemIconPalette_TownMap, }, @@ -12442,7 +12442,8 @@ const struct Item gItemsInfo[] = .importance = 1, .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .fieldUseFunc = ItemUseOutOfBattle_PokeFlute, + .battleUsage = EFFECT_ITEM_USE_POKE_FLUTE, .iconPic = gItemIcon_PokeFlute, .iconPalette = gItemIconPalette_PokeFlute, }, @@ -13861,6 +13862,7 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Medicine, .battleUsage = EFFECT_ITEM_CURE_STATUS, + .effect = gItemEffect_FullHeal, .flingPower = 30, .iconPic = gItemIcon_JubilifeMuffin, .iconPalette = gItemIconPalette_JubilifeMuffin, diff --git a/src/data/moves_info.h b/src/data/moves_info.h index 0d754f479d..f42886bf61 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -4505,7 +4505,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .type = TYPE_NORMAL, .accuracy = 0, .pp = 30, - .target = MOVE_TARGET_USER, + .target = B_UPDATED_MOVE_DATA >= GEN_5 ? MOVE_TARGET_SELECTED : MOVE_TARGET_USER, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, diff --git a/src/data/object_events/object_event_pic_tables_followers.h b/src/data/object_events/object_event_pic_tables_followers.h index 6ad602a629..1164e92c52 100644 --- a/src/data/object_events/object_event_pic_tables_followers.h +++ b/src/data/object_events/object_event_pic_tables_followers.h @@ -13,6 +13,9 @@ static const struct SpriteFrameImage sPicTable_Ivysaur[] = { static const struct SpriteFrameImage sPicTable_Venusaur[] = { overworld_ascending_frames(gObjectEventPic_Venusaur, 4, 4), }; +static const struct SpriteFrameImage sPicTable_VenusaurF[] = { + overworld_ascending_frames(gObjectEventPic_VenusaurF, 4, 4), +}; #if P_MEGA_EVOLUTIONS /*static const struct SpriteFrameImage sPicTable_VenusaurMega[] = { overworld_ascending_frames(gObjectEventPic_VenusaurMega, 4, 4), @@ -82,6 +85,9 @@ static const struct SpriteFrameImage sPicTable_Metapod[] = { static const struct SpriteFrameImage sPicTable_Butterfree[] = { overworld_ascending_frames(gObjectEventPic_Butterfree, 4, 4), }; +static const struct SpriteFrameImage sPicTable_ButterfreeF[] = { + overworld_ascending_frames(gObjectEventPic_ButterfreeF, 4, 4), +}; #if P_GIGANTAMAX_FORMS /*static const struct SpriteFrameImage sPicTable_ButterfreeGigantamax[] = { overworld_ascending_frames(gObjectEventPic_ButterfreeGigantamax, 4, 4), @@ -127,9 +133,15 @@ static const struct SpriteFrameImage sPicTable_Pidgeot[] = { static const struct SpriteFrameImage sPicTable_Rattata[] = { overworld_ascending_frames(gObjectEventPic_Rattata, 4, 4), }; +static const struct SpriteFrameImage sPicTable_RattataF[] = { + overworld_ascending_frames(gObjectEventPic_RattataF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Raticate[] = { overworld_ascending_frames(gObjectEventPic_Raticate, 4, 4), }; +static const struct SpriteFrameImage sPicTable_RaticateF[] = { + overworld_ascending_frames(gObjectEventPic_RaticateF, 4, 4), +}; #if P_ALOLAN_FORMS static const struct SpriteFrameImage sPicTable_RattataAlolan[] = { overworld_ascending_frames(gObjectEventPic_RattataAlolan, 4, 4), @@ -170,6 +182,9 @@ static const struct SpriteFrameImage sPicTable_PichuSpikyEared[] = { static const struct SpriteFrameImage sPicTable_Pikachu[] = { overworld_ascending_frames(gObjectEventPic_Pikachu, 4, 4), }; +static const struct SpriteFrameImage sPicTable_PikachuF[] = { + overworld_ascending_frames(gObjectEventPic_PikachuF, 4, 4), +}; #if P_COSPLAY_PIKACHU_FORMS /*static const struct SpriteFrameImage sPicTable_PikachuCosplay[] = { overworld_ascending_frames(gObjectEventPic_PikachuCosplay, 4, 4), @@ -227,6 +242,9 @@ static const struct SpriteFrameImage sPicTable_PikachuWorldCap[] = { static const struct SpriteFrameImage sPicTable_Raichu[] = { overworld_ascending_frames(gObjectEventPic_Raichu, 4, 4), }; +static const struct SpriteFrameImage sPicTable_RaichuF[] = { + overworld_ascending_frames(gObjectEventPic_RaichuF, 4, 4), +}; #if P_ALOLAN_FORMS static const struct SpriteFrameImage sPicTable_RaichuAlolan[] = { overworld_ascending_frames(gObjectEventPic_RaichuAlolan, 4, 4), @@ -321,9 +339,15 @@ static const struct SpriteFrameImage sPicTable_Wigglytuff[] = { static const struct SpriteFrameImage sPicTable_Zubat[] = { overworld_ascending_frames(gObjectEventPic_Zubat, 4, 4), }; +static const struct SpriteFrameImage sPicTable_ZubatF[] = { + overworld_ascending_frames(gObjectEventPic_ZubatF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Golbat[] = { overworld_ascending_frames(gObjectEventPic_Golbat, 4, 4), }; +static const struct SpriteFrameImage sPicTable_GolbatF[] = { + overworld_ascending_frames(gObjectEventPic_GolbatF, 4, 4), +}; #if P_GEN_2_CROSS_EVOS static const struct SpriteFrameImage sPicTable_Crobat[] = { overworld_ascending_frames(gObjectEventPic_Crobat, 4, 4), @@ -338,9 +362,15 @@ static const struct SpriteFrameImage sPicTable_Oddish[] = { static const struct SpriteFrameImage sPicTable_Gloom[] = { overworld_ascending_frames(gObjectEventPic_Gloom, 4, 4), }; +static const struct SpriteFrameImage sPicTable_GloomF[] = { + overworld_ascending_frames(gObjectEventPic_GloomF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Vileplume[] = { overworld_ascending_frames(gObjectEventPic_Vileplume, 4, 4), }; +static const struct SpriteFrameImage sPicTable_VileplumeF[] = { + overworld_ascending_frames(gObjectEventPic_VileplumeF, 4, 4), +}; #if P_GEN_2_CROSS_EVOS static const struct SpriteFrameImage sPicTable_Bellossom[] = { overworld_ascending_frames(gObjectEventPic_Bellossom, 4, 4), @@ -469,7 +499,9 @@ static const struct SpriteFrameImage sPicTable_Poliwrath[] = { static const struct SpriteFrameImage sPicTable_Politoed[] = { overworld_ascending_frames(gObjectEventPic_Politoed, 4, 4), }; - +static const struct SpriteFrameImage sPicTable_PolitoedF[] = { + overworld_ascending_frames(gObjectEventPic_PolitoedF, 4, 4), +}; #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_POLIWAG @@ -480,9 +512,15 @@ static const struct SpriteFrameImage sPicTable_Abra[] = { static const struct SpriteFrameImage sPicTable_Kadabra[] = { overworld_ascending_frames(gObjectEventPic_Kadabra, 4, 4), }; +static const struct SpriteFrameImage sPicTable_KadabraF[] = { + overworld_ascending_frames(gObjectEventPic_KadabraF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Alakazam[] = { overworld_ascending_frames(gObjectEventPic_Alakazam, 4, 4), }; +static const struct SpriteFrameImage sPicTable_AlakazamF[] = { + overworld_ascending_frames(gObjectEventPic_AlakazamF, 4, 4), +}; #if P_MEGA_EVOLUTIONS /*static const struct SpriteFrameImage sPicTable_AlakazamMega[] = { overworld_ascending_frames(gObjectEventPic_AlakazamMega, 4, 4), @@ -634,9 +672,15 @@ static const struct SpriteFrameImage sPicTable_Sirfetchd[] = { static const struct SpriteFrameImage sPicTable_Doduo[] = { overworld_ascending_frames(gObjectEventPic_Doduo, 4, 4), }; +static const struct SpriteFrameImage sPicTable_DoduoF[] = { + overworld_ascending_frames(gObjectEventPic_DoduoF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Dodrio[] = { overworld_ascending_frames(gObjectEventPic_Dodrio, 4, 4), }; +static const struct SpriteFrameImage sPicTable_DodrioF[] = { + overworld_ascending_frames(gObjectEventPic_DodrioF, 4, 4), +}; #endif //P_FAMILY_DODUO #if P_FAMILY_SEEL @@ -704,6 +748,9 @@ static const struct SpriteFrameImage sPicTable_Onix[] = { static const struct SpriteFrameImage sPicTable_Steelix[] = { overworld_ascending_frames(gObjectEventPic_Steelix, 4, 4), }; +static const struct SpriteFrameImage sPicTable_SteelixF[] = { + overworld_ascending_frames(gObjectEventPic_SteelixF, 4, 4), +}; #if P_MEGA_EVOLUTIONS /*static const struct SpriteFrameImage sPicTable_SteelixMega[] = { overworld_ascending_frames(gObjectEventPic_SteelixMega, 4, 4), @@ -719,6 +766,9 @@ static const struct SpriteFrameImage sPicTable_Drowzee[] = { static const struct SpriteFrameImage sPicTable_Hypno[] = { overworld_ascending_frames(gObjectEventPic_Hypno, 4, 4), }; +static const struct SpriteFrameImage sPicTable_HypnoF[] = { + overworld_ascending_frames(gObjectEventPic_HypnoF, 4, 4), +}; #endif //P_FAMILY_DROWZEE #if P_FAMILY_KRABBY @@ -828,14 +878,22 @@ static const struct SpriteFrameImage sPicTable_WeezingGalarian[] = { static const struct SpriteFrameImage sPicTable_Rhyhorn[] = { overworld_ascending_frames(gObjectEventPic_Rhyhorn, 4, 4), }; +static const struct SpriteFrameImage sPicTable_RhyhornF[] = { + overworld_ascending_frames(gObjectEventPic_RhyhornF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Rhydon[] = { overworld_ascending_frames(gObjectEventPic_Rhydon, 4, 4), }; +static const struct SpriteFrameImage sPicTable_RhydonF[] = { + overworld_ascending_frames(gObjectEventPic_RhydonF, 4, 4), +}; #if P_GEN_4_CROSS_EVOS static const struct SpriteFrameImage sPicTable_Rhyperior[] = { overworld_ascending_frames(gObjectEventPic_Rhyperior, 4, 4), }; - +static const struct SpriteFrameImage sPicTable_RhyperiorF[] = { + overworld_ascending_frames(gObjectEventPic_RhyperiorF, 4, 4), +}; #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_RHYHORN @@ -863,7 +921,9 @@ static const struct SpriteFrameImage sPicTable_Tangela[] = { static const struct SpriteFrameImage sPicTable_Tangrowth[] = { overworld_ascending_frames(gObjectEventPic_Tangrowth, 4, 4), }; - +static const struct SpriteFrameImage sPicTable_TangrowthF[] = { + overworld_ascending_frames(gObjectEventPic_TangrowthF, 4, 4), +}; #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_TANGELA @@ -896,9 +956,15 @@ static const struct SpriteFrameImage sPicTable_Kingdra[] = { static const struct SpriteFrameImage sPicTable_Goldeen[] = { overworld_ascending_frames(gObjectEventPic_Goldeen, 4, 4), }; +static const struct SpriteFrameImage sPicTable_GoldeenF[] = { + overworld_ascending_frames(gObjectEventPic_GoldeenF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Seaking[] = { overworld_ascending_frames(gObjectEventPic_Seaking, 4, 4), }; +static const struct SpriteFrameImage sPicTable_SeakingF[] = { + overworld_ascending_frames(gObjectEventPic_SeakingF, 4, 4), +}; #endif //P_FAMILY_GOLDEEN #if P_FAMILY_STARYU @@ -933,10 +999,16 @@ static const struct SpriteFrameImage sPicTable_MrRime[] = { static const struct SpriteFrameImage sPicTable_Scyther[] = { overworld_ascending_frames(gObjectEventPic_Scyther, 4, 4), }; +static const struct SpriteFrameImage sPicTable_ScytherF[] = { + overworld_ascending_frames(gObjectEventPic_ScytherF, 4, 4), +}; #if P_GEN_2_CROSS_EVOS static const struct SpriteFrameImage sPicTable_Scizor[] = { overworld_ascending_frames(gObjectEventPic_Scizor, 4, 4), }; +static const struct SpriteFrameImage sPicTable_ScizorF[] = { + overworld_ascending_frames(gObjectEventPic_ScizorF, 4, 4), +}; #if P_MEGA_EVOLUTIONS /*static const struct SpriteFrameImage sPicTable_ScizorMega[] = { overworld_ascending_frames(gObjectEventPic_ScizorMega, 4, 4), @@ -1026,9 +1098,15 @@ static const struct SpriteFrameImage sPicTable_TaurosPaldeanAquaBreed[] = { static const struct SpriteFrameImage sPicTable_Magikarp[] = { overworld_ascending_frames(gObjectEventPic_Magikarp, 4, 4), }; +static const struct SpriteFrameImage sPicTable_MagikarpF[] = { + overworld_ascending_frames(gObjectEventPic_MagikarpF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Gyarados[] = { overworld_ascending_frames(gObjectEventPic_Gyarados, 4, 4), }; +static const struct SpriteFrameImage sPicTable_GyaradosF[] = { + overworld_ascending_frames(gObjectEventPic_GyaradosF, 4, 4), +}; #if P_MEGA_EVOLUTIONS /*static const struct SpriteFrameImage sPicTable_GyaradosMega[] = { overworld_ascending_frames(gObjectEventPic_GyaradosMega, 4, 4), @@ -1057,6 +1135,9 @@ static const struct SpriteFrameImage sPicTable_Ditto[] = { static const struct SpriteFrameImage sPicTable_Eevee[] = { overworld_ascending_frames(gObjectEventPic_Eevee, 4, 4), }; +static const struct SpriteFrameImage sPicTable_EeveeF[] = { + overworld_ascending_frames(gObjectEventPic_EeveeF, 4, 4), +}; #if P_GIGANTAMAX_FORMS /*static const struct SpriteFrameImage sPicTable_EeveeGigantamax[] = { overworld_ascending_frames(gObjectEventPic_EeveeGigantamax, 4, 4), @@ -1233,6 +1314,9 @@ static const struct SpriteFrameImage sPicTable_Bayleef[] = { static const struct SpriteFrameImage sPicTable_Meganium[] = { overworld_ascending_frames(gObjectEventPic_Meganium, 4, 4), }; +static const struct SpriteFrameImage sPicTable_MeganiumF[] = { + overworld_ascending_frames(gObjectEventPic_MeganiumF, 4, 4), +}; #endif //P_FAMILY_CHIKORITA #if P_FAMILY_CYNDAQUIL @@ -1286,9 +1370,15 @@ static const struct SpriteFrameImage sPicTable_Noctowl[] = { static const struct SpriteFrameImage sPicTable_Ledyba[] = { overworld_ascending_frames(gObjectEventPic_Ledyba, 4, 4), }; +static const struct SpriteFrameImage sPicTable_LedybaF[] = { + overworld_ascending_frames(gObjectEventPic_LedybaF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Ledian[] = { overworld_ascending_frames(gObjectEventPic_Ledian, 4, 4), }; +static const struct SpriteFrameImage sPicTable_LedianF[] = { + overworld_ascending_frames(gObjectEventPic_LedianF, 4, 4), +}; #endif //P_FAMILY_LEDYBA #if P_FAMILY_SPINARAK @@ -1330,6 +1420,9 @@ static const struct SpriteFrameImage sPicTable_Natu[] = { static const struct SpriteFrameImage sPicTable_Xatu[] = { overworld_ascending_frames(gObjectEventPic_Xatu, 4, 4), }; +static const struct SpriteFrameImage sPicTable_XatuF[] = { + overworld_ascending_frames(gObjectEventPic_XatuF, 4, 4), +}; #endif //P_FAMILY_NATU #if P_FAMILY_MAREEP @@ -1372,6 +1465,9 @@ static const struct SpriteFrameImage sPicTable_Bonsly[] = { static const struct SpriteFrameImage sPicTable_Sudowoodo[] = { overworld_ascending_frames(gObjectEventPic_Sudowoodo, 4, 4), }; +static const struct SpriteFrameImage sPicTable_SudowoodoF[] = { + overworld_ascending_frames(gObjectEventPic_SudowoodoF, 4, 4), +}; #endif //P_FAMILY_SUDOWOODO #if P_FAMILY_HOPPIP @@ -1390,11 +1486,16 @@ static const struct SpriteFrameImage sPicTable_Jumpluff[] = { static const struct SpriteFrameImage sPicTable_Aipom[] = { overworld_ascending_frames(gObjectEventPic_Aipom, 4, 4), }; +static const struct SpriteFrameImage sPicTable_AipomF[] = { + overworld_ascending_frames(gObjectEventPic_AipomF, 4, 4), +}; #if P_GEN_4_CROSS_EVOS static const struct SpriteFrameImage sPicTable_Ambipom[] = { overworld_ascending_frames(gObjectEventPic_Ambipom, 4, 4), }; - +static const struct SpriteFrameImage sPicTable_AmbipomF[] = { + overworld_ascending_frames(gObjectEventPic_AmbipomF, 4, 4), +}; #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_AIPOM @@ -1422,9 +1523,15 @@ static const struct SpriteFrameImage sPicTable_Yanmega[] = { static const struct SpriteFrameImage sPicTable_Wooper[] = { overworld_ascending_frames(gObjectEventPic_Wooper, 4, 4), }; +static const struct SpriteFrameImage sPicTable_WooperF[] = { + overworld_ascending_frames(gObjectEventPic_WooperF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Quagsire[] = { overworld_ascending_frames(gObjectEventPic_Quagsire, 4, 4), }; +static const struct SpriteFrameImage sPicTable_QuagsireF[] = { + overworld_ascending_frames(gObjectEventPic_QuagsireF, 4, 4), +}; #if P_PALDEAN_FORMS static const struct SpriteFrameImage sPicTable_WooperPaldean[] = { overworld_ascending_frames(gObjectEventPic_WooperPaldean, 4, 4), @@ -1439,6 +1546,9 @@ static const struct SpriteFrameImage sPicTable_Clodsire[] = { static const struct SpriteFrameImage sPicTable_Murkrow[] = { overworld_ascending_frames(gObjectEventPic_Murkrow, 4, 4), }; +static const struct SpriteFrameImage sPicTable_MurkrowF[] = { + overworld_ascending_frames(gObjectEventPic_MurkrowF, 4, 4), +}; #if P_GEN_4_CROSS_EVOS static const struct SpriteFrameImage sPicTable_Honchkrow[] = { overworld_ascending_frames(gObjectEventPic_Honchkrow, 4, 4), @@ -1553,12 +1663,18 @@ static const struct SpriteFrameImage sPicTable_Wynaut[] = { static const struct SpriteFrameImage sPicTable_Wobbuffet[] = { overworld_ascending_frames(gObjectEventPic_Wobbuffet, 4, 4), }; +static const struct SpriteFrameImage sPicTable_WobbuffetF[] = { + overworld_ascending_frames(gObjectEventPic_WobbuffetF, 4, 4), +}; #endif //P_FAMILY_WOBBUFFET #if P_FAMILY_GIRAFARIG static const struct SpriteFrameImage sPicTable_Girafarig[] = { overworld_ascending_frames(gObjectEventPic_Girafarig, 4, 4), }; +static const struct SpriteFrameImage sPicTable_GirafarigF[] = { + overworld_ascending_frames(gObjectEventPic_GirafarigF, 4, 4), +}; #if P_GEN_9_CROSS_EVOS static const struct SpriteFrameImage sPicTable_Farigiraf[] = { overworld_ascending_frames(gObjectEventPic_Farigiraf, 4, 4), @@ -1595,6 +1711,9 @@ static const struct SpriteFrameImage sPicTable_DudunsparceThreeSegment[] = { static const struct SpriteFrameImage sPicTable_Gligar[] = { overworld_ascending_frames(gObjectEventPic_Gligar, 4, 4), }; +static const struct SpriteFrameImage sPicTable_GligarF[] = { + overworld_ascending_frames(gObjectEventPic_GligarF, 4, 4), +}; #if P_GEN_4_CROSS_EVOS static const struct SpriteFrameImage sPicTable_Gliscor[] = { overworld_ascending_frames(gObjectEventPic_Gliscor, 4, 4), @@ -1635,6 +1754,9 @@ static const struct SpriteFrameImage sPicTable_Shuckle[] = { static const struct SpriteFrameImage sPicTable_Heracross[] = { overworld_ascending_frames(gObjectEventPic_Heracross, 4, 4), }; +static const struct SpriteFrameImage sPicTable_HeracrossF[] = { + overworld_ascending_frames(gObjectEventPic_HeracrossF, 4, 4), +}; #if P_MEGA_EVOLUTIONS /*static const struct SpriteFrameImage sPicTable_HeracrossMega[] = { overworld_ascending_frames(gObjectEventPic_HeracrossMega, 4, 4), @@ -1646,17 +1768,25 @@ static const struct SpriteFrameImage sPicTable_Heracross[] = { static const struct SpriteFrameImage sPicTable_Sneasel[] = { overworld_ascending_frames(gObjectEventPic_Sneasel, 4, 4), }; +static const struct SpriteFrameImage sPicTable_SneaselF[] = { + overworld_ascending_frames(gObjectEventPic_SneaselF, 4, 4), +}; #if P_GEN_4_CROSS_EVOS static const struct SpriteFrameImage sPicTable_Weavile[] = { overworld_ascending_frames(gObjectEventPic_Weavile, 4, 4), }; - +static const struct SpriteFrameImage sPicTable_WeavileF[] = { + overworld_ascending_frames(gObjectEventPic_WeavileF, 4, 4), +}; #endif //P_GEN_4_CROSS_EVOS #if P_HISUIAN_FORMS static const struct SpriteFrameImage sPicTable_SneaselHisuian[] = { overworld_ascending_frames(gObjectEventPic_SneaselHisuian, 4, 4), }; +static const struct SpriteFrameImage sPicTable_SneaselHisuianF[] = { + overworld_ascending_frames(gObjectEventPic_SneaselHisuianF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Sneasler[] = { overworld_ascending_frames(gObjectEventPic_Sneasler, 4, 4), }; @@ -1670,6 +1800,9 @@ static const struct SpriteFrameImage sPicTable_Teddiursa[] = { static const struct SpriteFrameImage sPicTable_Ursaring[] = { overworld_ascending_frames(gObjectEventPic_Ursaring, 4, 4), }; +static const struct SpriteFrameImage sPicTable_UrsaringF[] = { + overworld_ascending_frames(gObjectEventPic_UrsaringF, 4, 4), +}; #if P_GEN_8_CROSS_EVOS static const struct SpriteFrameImage sPicTable_Ursaluna[] = { overworld_ascending_frames(gObjectEventPic_Ursaluna, 4, 4), @@ -1696,11 +1829,16 @@ static const struct SpriteFrameImage sPicTable_Swinub[] = { static const struct SpriteFrameImage sPicTable_Piloswine[] = { overworld_ascending_frames(gObjectEventPic_Piloswine, 4, 4), }; +static const struct SpriteFrameImage sPicTable_PiloswineF[] = { + overworld_ascending_frames(gObjectEventPic_PiloswineF, 4, 4), +}; #if P_GEN_4_CROSS_EVOS static const struct SpriteFrameImage sPicTable_Mamoswine[] = { overworld_ascending_frames(gObjectEventPic_Mamoswine, 4, 4), }; - +static const struct SpriteFrameImage sPicTable_MamoswineF[] = { + overworld_ascending_frames(gObjectEventPic_MamoswineF, 4, 4), +}; #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_SWINUB @@ -1725,6 +1863,9 @@ static const struct SpriteFrameImage sPicTable_Remoraid[] = { static const struct SpriteFrameImage sPicTable_Octillery[] = { overworld_ascending_frames(gObjectEventPic_Octillery, 4, 4), }; +static const struct SpriteFrameImage sPicTable_OctilleryF[] = { + overworld_ascending_frames(gObjectEventPic_OctilleryF, 4, 4), +}; #endif //P_FAMILY_REMORAID #if P_FAMILY_DELIBIRD @@ -1757,6 +1898,9 @@ static const struct SpriteFrameImage sPicTable_Houndour[] = { static const struct SpriteFrameImage sPicTable_Houndoom[] = { overworld_ascending_frames(gObjectEventPic_Houndoom, 4, 4), }; +static const struct SpriteFrameImage sPicTable_HoundoomF[] = { + overworld_ascending_frames(gObjectEventPic_HoundoomF, 4, 4), +}; #if P_MEGA_EVOLUTIONS /*static const struct SpriteFrameImage sPicTable_HoundoomMega[] = { overworld_ascending_frames(gObjectEventPic_HoundoomMega, 4, 4), @@ -1771,6 +1915,9 @@ static const struct SpriteFrameImage sPicTable_Phanpy[] = { static const struct SpriteFrameImage sPicTable_Donphan[] = { overworld_ascending_frames(gObjectEventPic_Donphan, 4, 4), }; +static const struct SpriteFrameImage sPicTable_DonphanF[] = { + overworld_ascending_frames(gObjectEventPic_DonphanF, 4, 4), +}; #endif //P_FAMILY_PHANPY #if P_FAMILY_STANTLER @@ -1870,12 +2017,21 @@ static const struct SpriteFrameImage sPicTable_Sceptile[] = { static const struct SpriteFrameImage sPicTable_Torchic[] = { overworld_ascending_frames(gObjectEventPic_Torchic, 4, 4), }; +static const struct SpriteFrameImage sPicTable_TorchicF[] = { + overworld_ascending_frames(gObjectEventPic_TorchicF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Combusken[] = { overworld_ascending_frames(gObjectEventPic_Combusken, 4, 4), }; +static const struct SpriteFrameImage sPicTable_CombuskenF[] = { + overworld_ascending_frames(gObjectEventPic_CombuskenF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Blaziken[] = { overworld_ascending_frames(gObjectEventPic_Blaziken, 4, 4), }; +static const struct SpriteFrameImage sPicTable_BlazikenF[] = { + overworld_ascending_frames(gObjectEventPic_BlazikenF, 4, 4), +}; #if P_MEGA_EVOLUTIONS /*static const struct SpriteFrameImage sPicTable_BlazikenMega[] = { overworld_ascending_frames(gObjectEventPic_BlazikenMega, 4, 4), @@ -1939,12 +2095,18 @@ static const struct SpriteFrameImage sPicTable_Silcoon[] = { static const struct SpriteFrameImage sPicTable_Beautifly[] = { overworld_ascending_frames(gObjectEventPic_Beautifly, 4, 4), }; +static const struct SpriteFrameImage sPicTable_BeautiflyF[] = { + overworld_ascending_frames(gObjectEventPic_BeautiflyF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Cascoon[] = { overworld_ascending_frames(gObjectEventPic_Cascoon, 4, 4), }; static const struct SpriteFrameImage sPicTable_Dustox[] = { overworld_ascending_frames(gObjectEventPic_Dustox, 4, 4), }; +static const struct SpriteFrameImage sPicTable_DustoxF[] = { + overworld_ascending_frames(gObjectEventPic_DustoxF, 4, 4), +}; #endif //P_FAMILY_WURMPLE #if P_FAMILY_LOTAD @@ -1957,6 +2119,9 @@ static const struct SpriteFrameImage sPicTable_Lombre[] = { static const struct SpriteFrameImage sPicTable_Ludicolo[] = { overworld_ascending_frames(gObjectEventPic_Ludicolo, 4, 4), }; +static const struct SpriteFrameImage sPicTable_LudicoloF[] = { + overworld_ascending_frames(gObjectEventPic_LudicoloF, 4, 4), +}; #endif //P_FAMILY_LOTAD #if P_FAMILY_SEEDOT @@ -1966,9 +2131,15 @@ static const struct SpriteFrameImage sPicTable_Seedot[] = { static const struct SpriteFrameImage sPicTable_Nuzleaf[] = { overworld_ascending_frames(gObjectEventPic_Nuzleaf, 4, 4), }; +static const struct SpriteFrameImage sPicTable_NuzleafF[] = { + overworld_ascending_frames(gObjectEventPic_NuzleafF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Shiftry[] = { overworld_ascending_frames(gObjectEventPic_Shiftry, 4, 4), }; +static const struct SpriteFrameImage sPicTable_ShiftryF[] = { + overworld_ascending_frames(gObjectEventPic_ShiftryF, 4, 4), +}; #endif //P_FAMILY_SEEDOT #if P_FAMILY_TAILLOW @@ -2143,9 +2314,15 @@ static const struct SpriteFrameImage sPicTable_Aggron[] = { static const struct SpriteFrameImage sPicTable_Meditite[] = { overworld_ascending_frames(gObjectEventPic_Meditite, 4, 4), }; +static const struct SpriteFrameImage sPicTable_MedititeF[] = { + overworld_ascending_frames(gObjectEventPic_MedititeF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Medicham[] = { overworld_ascending_frames(gObjectEventPic_Medicham, 4, 4), }; +static const struct SpriteFrameImage sPicTable_MedichamF[] = { + overworld_ascending_frames(gObjectEventPic_MedichamF, 4, 4), +}; #if P_MEGA_EVOLUTIONS /*static const struct SpriteFrameImage sPicTable_MedichamMega[] = { overworld_ascending_frames(gObjectEventPic_MedichamMega, 4, 4), @@ -2197,10 +2374,16 @@ static const struct SpriteFrameImage sPicTable_Budew[] = { static const struct SpriteFrameImage sPicTable_Roselia[] = { overworld_ascending_frames(gObjectEventPic_Roselia, 4, 4), }; +static const struct SpriteFrameImage sPicTable_RoseliaF[] = { + overworld_ascending_frames(gObjectEventPic_RoseliaF, 4, 4), +}; #if P_GEN_4_CROSS_EVOS static const struct SpriteFrameImage sPicTable_Roserade[] = { overworld_ascending_frames(gObjectEventPic_Roserade, 4, 4), }; +static const struct SpriteFrameImage sPicTable_RoseradeF[] = { + overworld_ascending_frames(gObjectEventPic_RoseradeF, 4, 4), +}; #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_ROSELIA @@ -2209,9 +2392,15 @@ static const struct SpriteFrameImage sPicTable_Roserade[] = { static const struct SpriteFrameImage sPicTable_Gulpin[] = { overworld_ascending_frames(gObjectEventPic_Gulpin, 4, 4), }; +static const struct SpriteFrameImage sPicTable_GulpinF[] = { + overworld_ascending_frames(gObjectEventPic_GulpinF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Swalot[] = { overworld_ascending_frames(gObjectEventPic_Swalot, 4, 4), }; +static const struct SpriteFrameImage sPicTable_SwalotF[] = { + overworld_ascending_frames(gObjectEventPic_SwalotF, 4, 4), +}; #endif //P_FAMILY_GULPIN #if P_FAMILY_CARVANHA @@ -2241,9 +2430,15 @@ static const struct SpriteFrameImage sPicTable_Wailord[] = { static const struct SpriteFrameImage sPicTable_Numel[] = { overworld_ascending_frames(gObjectEventPic_Numel, 4, 4), }; +static const struct SpriteFrameImage sPicTable_NumelF[] = { + overworld_ascending_frames(gObjectEventPic_NumelF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Camerupt[] = { overworld_ascending_frames(gObjectEventPic_Camerupt, 4, 4), }; +static const struct SpriteFrameImage sPicTable_CameruptF[] = { + overworld_ascending_frames(gObjectEventPic_CameruptF, 4, 4), +}; #if P_MEGA_EVOLUTIONS /*static const struct SpriteFrameImage sPicTable_CameruptMega[] = { overworld_ascending_frames(gObjectEventPic_CameruptMega, 4, 4), @@ -2291,6 +2486,9 @@ static const struct SpriteFrameImage sPicTable_Cacnea[] = { static const struct SpriteFrameImage sPicTable_Cacturne[] = { overworld_ascending_frames(gObjectEventPic_Cacturne, 4, 4), }; +static const struct SpriteFrameImage sPicTable_CacturneF[] = { + overworld_ascending_frames(gObjectEventPic_CacturneF, 4, 4), +}; #endif //P_FAMILY_CACNEA #if P_FAMILY_SWABLU @@ -2383,6 +2581,9 @@ static const struct SpriteFrameImage sPicTable_Feebas[] = { static const struct SpriteFrameImage sPicTable_Milotic[] = { overworld_ascending_frames(gObjectEventPic_Milotic, 4, 4), }; +static const struct SpriteFrameImage sPicTable_MiloticF[] = { + overworld_ascending_frames(gObjectEventPic_MiloticF, 4, 4), +}; #endif //P_FAMILY_FEEBAS #if P_FAMILY_CASTFORM @@ -2510,6 +2711,9 @@ static const struct SpriteFrameImage sPicTable_Gorebyss[] = { static const struct SpriteFrameImage sPicTable_Relicanth[] = { overworld_ascending_frames(gObjectEventPic_Relicanth, 4, 4), }; +static const struct SpriteFrameImage sPicTable_RelicanthF[] = { + overworld_ascending_frames(gObjectEventPic_RelicanthF, 4, 4), +}; #endif //P_FAMILY_RELICANTH #if P_FAMILY_LUVDISC @@ -2686,42 +2890,72 @@ static const struct SpriteFrameImage sPicTable_Empoleon[] = { static const struct SpriteFrameImage sPicTable_Starly[] = { overworld_ascending_frames(gObjectEventPic_Starly, 4, 4), }; +static const struct SpriteFrameImage sPicTable_StarlyF[] = { + overworld_ascending_frames(gObjectEventPic_StarlyF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Staravia[] = { overworld_ascending_frames(gObjectEventPic_Staravia, 4, 4), }; +static const struct SpriteFrameImage sPicTable_StaraviaF[] = { + overworld_ascending_frames(gObjectEventPic_StaraviaF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Staraptor[] = { overworld_ascending_frames(gObjectEventPic_Staraptor, 4, 4), }; +static const struct SpriteFrameImage sPicTable_StaraptorF[] = { + overworld_ascending_frames(gObjectEventPic_StaraptorF, 4, 4), +}; #endif //P_FAMILY_STARLY #if P_FAMILY_BIDOOF static const struct SpriteFrameImage sPicTable_Bidoof[] = { overworld_ascending_frames(gObjectEventPic_Bidoof, 4, 4), }; +static const struct SpriteFrameImage sPicTable_BidoofF[] = { + overworld_ascending_frames(gObjectEventPic_BidoofF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Bibarel[] = { overworld_ascending_frames(gObjectEventPic_Bibarel, 4, 4), }; +static const struct SpriteFrameImage sPicTable_BibarelF[] = { + overworld_ascending_frames(gObjectEventPic_BibarelF, 4, 4), +}; #endif //P_FAMILY_BIDOOF #if P_FAMILY_KRICKETOT static const struct SpriteFrameImage sPicTable_Kricketot[] = { overworld_ascending_frames(gObjectEventPic_Kricketot, 4, 4), }; +static const struct SpriteFrameImage sPicTable_KricketotF[] = { + overworld_ascending_frames(gObjectEventPic_KricketotF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Kricketune[] = { overworld_ascending_frames(gObjectEventPic_Kricketune, 4, 4), }; +static const struct SpriteFrameImage sPicTable_KricketuneF[] = { + overworld_ascending_frames(gObjectEventPic_KricketuneF, 4, 4), +}; #endif //P_FAMILY_KRICKETOT #if P_FAMILY_SHINX static const struct SpriteFrameImage sPicTable_Shinx[] = { overworld_ascending_frames(gObjectEventPic_Shinx, 4, 4), }; +static const struct SpriteFrameImage sPicTable_ShinxF[] = { + overworld_ascending_frames(gObjectEventPic_ShinxF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Luxio[] = { overworld_ascending_frames(gObjectEventPic_Luxio, 4, 4), }; +static const struct SpriteFrameImage sPicTable_LuxioF[] = { + overworld_ascending_frames(gObjectEventPic_LuxioF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Luxray[] = { overworld_ascending_frames(gObjectEventPic_Luxray, 4, 4), }; +static const struct SpriteFrameImage sPicTable_LuxrayF[] = { + overworld_ascending_frames(gObjectEventPic_LuxrayF, 4, 4), +}; #endif //P_FAMILY_SHINX #if P_FAMILY_CRANIDOS @@ -2782,15 +3016,24 @@ static const struct SpriteFrameImage sPicTable_Vespiquen[] = { static const struct SpriteFrameImage sPicTable_Pachirisu[] = { overworld_ascending_frames(gObjectEventPic_Pachirisu, 4, 4), }; +static const struct SpriteFrameImage sPicTable_PachirisuF[] = { + overworld_ascending_frames(gObjectEventPic_PachirisuF, 4, 4), +}; #endif //P_FAMILY_PACHIRISU #if P_FAMILY_BUIZEL static const struct SpriteFrameImage sPicTable_Buizel[] = { overworld_ascending_frames(gObjectEventPic_Buizel, 4, 4), }; +static const struct SpriteFrameImage sPicTable_BuizelF[] = { + overworld_ascending_frames(gObjectEventPic_BuizelF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Floatzel[] = { overworld_ascending_frames(gObjectEventPic_Floatzel, 4, 4), }; +static const struct SpriteFrameImage sPicTable_FloatzelF[] = { + overworld_ascending_frames(gObjectEventPic_FloatzelF, 4, 4), +}; #endif //P_FAMILY_BUIZEL #if P_FAMILY_CHERUBI @@ -2886,12 +3129,21 @@ static const struct SpriteFrameImage sPicTable_Spiritomb[] = { static const struct SpriteFrameImage sPicTable_Gible[] = { overworld_ascending_frames(gObjectEventPic_Gible, 4, 4), }; +static const struct SpriteFrameImage sPicTable_GibleF[] = { + overworld_ascending_frames(gObjectEventPic_GibleF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Gabite[] = { overworld_ascending_frames(gObjectEventPic_Gabite, 4, 4), }; +static const struct SpriteFrameImage sPicTable_GabiteF[] = { + overworld_ascending_frames(gObjectEventPic_GabiteF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Garchomp[] = { overworld_ascending_frames(gObjectEventPic_Garchomp, 4, 4), }; +static const struct SpriteFrameImage sPicTable_GarchompF[] = { + overworld_ascending_frames(gObjectEventPic_GarchompF, 4, 4), +}; #if P_MEGA_EVOLUTIONS /*static const struct SpriteFrameImage sPicTable_GarchompMega[] = { overworld_ascending_frames(gObjectEventPic_GarchompMega, 4, 4), @@ -2923,9 +3175,6 @@ static const struct SpriteFrameImage sPicTable_HippopotasF[] = { static const struct SpriteFrameImage sPicTable_Hippowdon[] = { overworld_ascending_frames(gObjectEventPic_Hippowdon, 4, 4), }; -static const struct SpriteFrameImage sPicTable_HippowdonF[] = { - overworld_ascending_frames(gObjectEventPic_HippowdonF, 4, 4), -}; #endif //P_FAMILY_HIPPOPOTAS #if P_FAMILY_SKORUPI @@ -2941,9 +3190,15 @@ static const struct SpriteFrameImage sPicTable_Drapion[] = { static const struct SpriteFrameImage sPicTable_Croagunk[] = { overworld_ascending_frames(gObjectEventPic_Croagunk, 4, 4), }; +static const struct SpriteFrameImage sPicTable_CroagunkF[] = { + overworld_ascending_frames(gObjectEventPic_CroagunkF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Toxicroak[] = { overworld_ascending_frames(gObjectEventPic_Toxicroak, 4, 4), }; +static const struct SpriteFrameImage sPicTable_ToxicroakF[] = { + overworld_ascending_frames(gObjectEventPic_ToxicroakF, 4, 4), +}; #endif //P_FAMILY_CROAGUNK #if P_FAMILY_CARNIVINE @@ -2956,18 +3211,30 @@ static const struct SpriteFrameImage sPicTable_Carnivine[] = { static const struct SpriteFrameImage sPicTable_Finneon[] = { overworld_ascending_frames(gObjectEventPic_Finneon, 4, 4), }; +static const struct SpriteFrameImage sPicTable_FinneonF[] = { + overworld_ascending_frames(gObjectEventPic_FinneonF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Lumineon[] = { overworld_ascending_frames(gObjectEventPic_Lumineon, 4, 4), }; +static const struct SpriteFrameImage sPicTable_LumineonF[] = { + overworld_ascending_frames(gObjectEventPic_LumineonF, 4, 4), +}; #endif //P_FAMILY_FINNEON #if P_FAMILY_SNOVER static const struct SpriteFrameImage sPicTable_Snover[] = { overworld_ascending_frames(gObjectEventPic_Snover, 4, 4), }; +static const struct SpriteFrameImage sPicTable_SnoverF[] = { + overworld_ascending_frames(gObjectEventPic_SnoverF, 4, 4), +}; static const struct SpriteFrameImage sPicTable_Abomasnow[] = { overworld_ascending_frames(gObjectEventPic_Abomasnow, 4, 4), }; +static const struct SpriteFrameImage sPicTable_AbomasnowF[] = { + overworld_ascending_frames(gObjectEventPic_AbomasnowF, 4, 4), +}; #if P_MEGA_EVOLUTIONS /*static const struct SpriteFrameImage sPicTable_AbomasnowMega[] = { overworld_ascending_frames(gObjectEventPic_AbomasnowMega, 4, 4), diff --git a/src/data/pokemon/form_change_table_pointers.h b/src/data/pokemon/form_change_table_pointers.h index 4d26837b28..ea2cdfd2a2 100644 --- a/src/data/pokemon/form_change_table_pointers.h +++ b/src/data/pokemon/form_change_table_pointers.h @@ -24,11 +24,11 @@ const struct Fusion *const gFusionTablePointers[NUM_SPECIES] = #if P_FAMILY_CALYREX [SPECIES_CALYREX] = sCalyrexFusionTable, #if P_FAMILY_SPECTRIER - [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexFusionTable, + [SPECIES_CALYREX_SHADOW] = sCalyrexFusionTable, [SPECIES_SPECTRIER] = sCalyrexFusionTable, #endif //P_FAMILY_SPECTRIER #if P_FAMILY_GLASTRIER - [SPECIES_CALYREX_ICE_RIDER] = sCalyrexFusionTable, + [SPECIES_CALYREX_ICE] = sCalyrexFusionTable, [SPECIES_GLASTRIER] = sCalyrexFusionTable, #endif //P_FAMILY_GLASTRIER #endif //P_FAMILY_CALYREX diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index 52f888a55b..5316427b4c 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -4,7 +4,7 @@ static const struct FormChange sVenusaurFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_VENUSAUR_MEGA, ITEM_VENUSAURITE}, #endif #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_VENUSAUR_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_VENUSAUR_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -17,7 +17,7 @@ static const struct FormChange sCharizardFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CHARIZARD_MEGA_Y, ITEM_CHARIZARDITE_Y}, #endif #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CHARIZARD_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CHARIZARD_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -29,7 +29,7 @@ static const struct FormChange sBlastoiseFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BLASTOISE_MEGA, ITEM_BLASTOISINITE}, #endif #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BLASTOISE_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BLASTOISE_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -39,7 +39,7 @@ static const struct FormChange sBlastoiseFormChangeTable[] = { static const struct FormChange sButterfreeFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BUTTERFREE_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BUTTERFREE_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -67,7 +67,7 @@ static const struct FormChange sPidgeotFormChangeTable[] = { static const struct FormChange sPikachuFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_PIKACHU_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_PIKACHU_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -77,7 +77,7 @@ static const struct FormChange sPikachuFormChangeTable[] = static const struct FormChange sMeowthFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MEOWTH_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MEOWTH_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -96,7 +96,7 @@ static const struct FormChange sAlakazamFormChangeTable[] = { static const struct FormChange sMachampFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MACHAMP_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MACHAMP_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -117,7 +117,7 @@ static const struct FormChange sGengarFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GENGAR_MEGA, ITEM_GENGARITE}, #endif #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GENGAR_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GENGAR_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -138,7 +138,7 @@ static const struct FormChange sSteelixFormChangeTable[] = { static const struct FormChange sKinglerFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_KINGLER_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_KINGLER_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -185,7 +185,7 @@ static const struct FormChange sGyaradosFormChangeTable[] = { #if P_FAMILY_LAPRAS static const struct FormChange sLaprasFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_LAPRAS_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_LAPRAS_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -194,7 +194,7 @@ static const struct FormChange sLaprasFormChangeTable[] = { #if P_FAMILY_EEVEE static const struct FormChange sEeveeFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_EEVEE_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_EEVEE_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -212,7 +212,7 @@ static const struct FormChange sAerodactylFormChangeTable[] = { #if P_FAMILY_SNORLAX static const struct FormChange sSnorlaxFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_SNORLAX_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_SNORLAX_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -517,14 +517,14 @@ static const struct FormChange sDeoxysSpeedFormChangeTable[] = { #if P_FAMILY_BURMY static const struct FormChange sBurmyFormChangeTable[] = { - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_GRASS}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_LONG_GRASS}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_POND}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_MOUNTAIN}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_PLAIN}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY_CLOAK, BATTLE_TERRAIN_CAVE}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY_CLOAK, BATTLE_TERRAIN_SAND}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_TRASH_CLOAK, BATTLE_TERRAIN_BUILDING}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT, BATTLE_TERRAIN_GRASS}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT, BATTLE_TERRAIN_LONG_GRASS}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT, BATTLE_TERRAIN_POND}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT, BATTLE_TERRAIN_MOUNTAIN}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT, BATTLE_TERRAIN_PLAIN}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY, BATTLE_TERRAIN_CAVE}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY, BATTLE_TERRAIN_SAND}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_TRASH, BATTLE_TERRAIN_BUILDING}, {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_BURMY @@ -684,19 +684,19 @@ static const struct FormChange sAudinoFormChangeTable[] = { #if P_FAMILY_DARUMAKA static const struct FormChange sDarmanitanFormChangeTable[] = { - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_STANDARD_MODE, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_ZEN_MODE, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, - {FORM_CHANGE_FAINT, SPECIES_DARMANITAN_STANDARD_MODE}, - {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_STANDARD_MODE}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_STANDARD, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_ZEN, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_FAINT, SPECIES_DARMANITAN_STANDARD}, + {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_STANDARD}, {FORM_CHANGE_TERMINATOR}, }; #if P_GALARIAN_FORMS static const struct FormChange sDarmanitanGalarianFormChangeTable[] = { - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALARIAN_ZEN_MODE, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, - {FORM_CHANGE_FAINT, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}, - {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALAR_STANDARD, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALAR_ZEN, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_FAINT, SPECIES_DARMANITAN_GALAR_STANDARD}, + {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_GALAR_STANDARD}, {FORM_CHANGE_TERMINATOR}, }; #endif //P_GALARIAN_FORMS @@ -706,7 +706,7 @@ static const struct FormChange sDarmanitanGalarianFormChangeTable[] = { static const struct FormChange sGarbodorFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GARBODOR_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GARBODOR_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -763,10 +763,10 @@ static const struct FormChange sMeloettaFormChangeTable[] = { #if P_FAMILY_GENESECT static const struct FormChange sGenesectFormChangeTable[] = { {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT, ITEM_NONE}, - {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_DOUSE_DRIVE, ITEM_DOUSE_DRIVE}, - {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_SHOCK_DRIVE, ITEM_SHOCK_DRIVE}, - {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_BURN_DRIVE, ITEM_BURN_DRIVE}, - {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_CHILL_DRIVE, ITEM_CHILL_DRIVE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_DOUSE, ITEM_DOUSE_DRIVE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_SHOCK, ITEM_SHOCK_DRIVE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_BURN, ITEM_BURN_DRIVE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_CHILL, ITEM_CHILL_DRIVE}, {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_GENESECT @@ -812,14 +812,14 @@ static const struct FormChange sZygarde50AuraBreakFormChangeTable[] = { }; static const struct FormChange sZygarde10AuraBreakFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_50_AURA_BREAK, ITEM_ZYGARDE_CUBE, 0}, + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_50, ITEM_ZYGARDE_CUBE, 0}, {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_10_POWER_CONSTRUCT, ITEM_ZYGARDE_CUBE, 1}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sZygarde50PowerConstructFormChangeTable[] = { {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_10_POWER_CONSTRUCT, ITEM_ZYGARDE_CUBE, 0}, - {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_50_AURA_BREAK, ITEM_ZYGARDE_CUBE, 1}, + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_50, ITEM_ZYGARDE_CUBE, 1}, {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_ZYGARDE_COMPLETE, ABILITY_POWER_CONSTRUCT, HP_LOWER_EQ_THAN, 50}, {FORM_CHANGE_TERMINATOR}, }; @@ -999,7 +999,7 @@ static const struct FormChange sNecrozmaDawnWingsFormChangeTable[] = { static const struct FormChange sMelmetalFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MELMETAL_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MELMETAL_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1009,7 +1009,7 @@ static const struct FormChange sMelmetalFormChangeTable[] = static const struct FormChange sRillaboomFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_RILLABOOM_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_RILLABOOM_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1019,7 +1019,7 @@ static const struct FormChange sRillaboomFormChangeTable[] = static const struct FormChange sCinderaceFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CINDERACE_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CINDERACE_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1029,7 +1029,7 @@ static const struct FormChange sCinderaceFormChangeTable[] = static const struct FormChange sInteleonFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_INTELEON_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_INTELEON_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1039,7 +1039,7 @@ static const struct FormChange sInteleonFormChangeTable[] = static const struct FormChange sCorviknightFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CORVIKNIGHT_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CORVIKNIGHT_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1049,7 +1049,7 @@ static const struct FormChange sCorviknightFormChangeTable[] = static const struct FormChange sOrbeetleFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_ORBEETLE_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_ORBEETLE_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1059,7 +1059,7 @@ static const struct FormChange sOrbeetleFormChangeTable[] = static const struct FormChange sDrednawFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_DREDNAW_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_DREDNAW_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1069,7 +1069,7 @@ static const struct FormChange sDrednawFormChangeTable[] = static const struct FormChange sCoalossalFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_COALOSSAL_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_COALOSSAL_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1079,7 +1079,7 @@ static const struct FormChange sCoalossalFormChangeTable[] = static const struct FormChange sFlappleFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_FLAPPLE_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_FLAPPLE_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1087,7 +1087,7 @@ static const struct FormChange sFlappleFormChangeTable[] = static const struct FormChange sAppletunFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_APPLETUN_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_APPLETUN_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1097,7 +1097,7 @@ static const struct FormChange sAppletunFormChangeTable[] = static const struct FormChange sSandacondaFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_SANDACONDA_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_SANDACONDA_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1119,7 +1119,7 @@ static const struct FormChange sCramorantFormChangeTable[] = { static const struct FormChange sToxtricityAmpedFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_TOXTRICITY_AMPED_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_TOXTRICITY_AMPED_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1127,7 +1127,7 @@ static const struct FormChange sToxtricityAmpedFormChangeTable[] = static const struct FormChange sToxtricityLowKeyFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_TOXTRICITY_LOW_KEY_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1137,7 +1137,7 @@ static const struct FormChange sToxtricityLowKeyFormChangeTable[] = static const struct FormChange sCentiskorchFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CENTISKORCH_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CENTISKORCH_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1147,7 +1147,7 @@ static const struct FormChange sCentiskorchFormChangeTable[] = static const struct FormChange sHattereneFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_HATTERENE_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_HATTERENE_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1157,7 +1157,7 @@ static const struct FormChange sHattereneFormChangeTable[] = static const struct FormChange sGrimmsnarlFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GRIMMSNARL_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GRIMMSNARL_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1167,7 +1167,7 @@ static const struct FormChange sGrimmsnarlFormChangeTable[] = static const struct FormChange sAlcremieFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_ALCREMIE_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_ALCREMIE_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1175,8 +1175,8 @@ static const struct FormChange sAlcremieFormChangeTable[] = #if P_FAMILY_EISCUE static const struct FormChange sEiscueFormChangeTable[] = { - {FORM_CHANGE_FAINT, SPECIES_EISCUE_ICE_FACE}, - {FORM_CHANGE_END_BATTLE, SPECIES_EISCUE_ICE_FACE}, + {FORM_CHANGE_FAINT, SPECIES_EISCUE_ICE}, + {FORM_CHANGE_END_BATTLE, SPECIES_EISCUE_ICE}, {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_EISCUE @@ -1195,7 +1195,7 @@ static const struct FormChange sMorpekoFormChangeTable[] = { #if P_FAMILY_CUFANT static const struct FormChange sCopperajahFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_COPPERAJAH_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_COPPERAJAH_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1204,7 +1204,7 @@ static const struct FormChange sCopperajahFormChangeTable[] = { #if P_FAMILY_DURALUDON static const struct FormChange sDuraludonFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_DURALUDON_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_DURALUDON_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1212,16 +1212,16 @@ static const struct FormChange sDuraludonFormChangeTable[] = { #if P_FAMILY_ZACIAN static const struct FormChange sZacianFormChangeTable[] = { - {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZACIAN_CROWNED_SWORD, ITEM_RUSTED_SWORD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BLADE}, - {FORM_CHANGE_END_BATTLE, SPECIES_ZACIAN_HERO_OF_MANY_BATTLES, ITEM_RUSTED_SWORD, MOVE_BEHEMOTH_BLADE, MOVE_IRON_HEAD}, + {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZACIAN_CROWNED, ITEM_RUSTED_SWORD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BLADE}, + {FORM_CHANGE_END_BATTLE, SPECIES_ZACIAN_HERO, ITEM_RUSTED_SWORD, MOVE_BEHEMOTH_BLADE, MOVE_IRON_HEAD}, {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_ZACIAN #if P_FAMILY_ZAMAZENTA static const struct FormChange sZamazentaFormChangeTable[] = { - {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZAMAZENTA_CROWNED_SHIELD, ITEM_RUSTED_SHIELD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BASH}, - {FORM_CHANGE_END_BATTLE, SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES, ITEM_RUSTED_SHIELD, MOVE_BEHEMOTH_BASH, MOVE_IRON_HEAD}, + {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZAMAZENTA_CROWNED, ITEM_RUSTED_SHIELD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BASH}, + {FORM_CHANGE_END_BATTLE, SPECIES_ZAMAZENTA_HERO, ITEM_RUSTED_SHIELD, MOVE_BEHEMOTH_BASH, MOVE_IRON_HEAD}, {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_ZAMAZENTA @@ -1229,14 +1229,14 @@ static const struct FormChange sZamazentaFormChangeTable[] = { #if P_FAMILY_KUBFU static const struct FormChange sUrshifuSingleStrikeFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_SINGLE_STRIKE_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sUrshifuRapidStrikeFormChangeTable[] = { #if P_GIGANTAMAX_FORMS - {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_RAPID_STRIKE_GMAX}, #endif {FORM_CHANGE_TERMINATOR}, }; @@ -1244,8 +1244,8 @@ static const struct FormChange sUrshifuRapidStrikeFormChangeTable[] = { #if P_FAMILY_CALYREX static const struct Fusion sCalyrexFusionTable[] = { - {3, ITEM_REINS_OF_UNITY, SPECIES_CALYREX, SPECIES_GLASTRIER, SPECIES_CALYREX_ICE_RIDER, MOVE_GLACIAL_LANCE, MOVE_CONFUSION}, - {3, ITEM_REINS_OF_UNITY, SPECIES_CALYREX, SPECIES_SPECTRIER, SPECIES_CALYREX_SHADOW_RIDER, MOVE_ASTRAL_BARRAGE, MOVE_CONFUSION}, + {3, ITEM_REINS_OF_UNITY, SPECIES_CALYREX, SPECIES_GLASTRIER, SPECIES_CALYREX_ICE, MOVE_GLACIAL_LANCE, MOVE_CONFUSION}, + {3, ITEM_REINS_OF_UNITY, SPECIES_CALYREX, SPECIES_SPECTRIER, SPECIES_CALYREX_SHADOW, MOVE_ASTRAL_BARRAGE, MOVE_CONFUSION}, {FUSION_TERMINATOR}, }; #endif //P_FAMILY_CALYREX @@ -1268,15 +1268,15 @@ static const struct FormChange sPalafinZeroFormChangeTable[] = #if P_FAMILY_OGERPON static const struct FormChange sOgerponFormChangeTable[] = { - {FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_TEAL_MASK, ITEM_NONE}, - {FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_WELLSPRING_MASK, ITEM_WELLSPRING_MASK}, - {FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_HEARTHFLAME_MASK, ITEM_HEARTHFLAME_MASK}, - {FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_CORNERSTONE_MASK, ITEM_CORNERSTONE_MASK}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_TEAL, ITEM_NONE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_WELLSPRING, ITEM_WELLSPRING_MASK}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_HEARTHFLAME, ITEM_HEARTHFLAME_MASK}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_CORNERSTONE, ITEM_CORNERSTONE_MASK}, #if P_TERA_FORMS - {FORM_CHANGE_BATTLE_TERASTALLIZATION, SPECIES_OGERPON_TEAL_MASK_TERA, TYPE_GRASS}, - {FORM_CHANGE_BATTLE_TERASTALLIZATION, SPECIES_OGERPON_WELLSPRING_MASK_TERA, TYPE_WATER}, - {FORM_CHANGE_BATTLE_TERASTALLIZATION, SPECIES_OGERPON_HEARTHFLAME_MASK_TERA, TYPE_FIRE}, - {FORM_CHANGE_BATTLE_TERASTALLIZATION, SPECIES_OGERPON_CORNERSTONE_MASK_TERA, TYPE_ROCK}, + {FORM_CHANGE_BATTLE_TERASTALLIZATION, SPECIES_OGERPON_TEAL_TERA, TYPE_GRASS}, + {FORM_CHANGE_BATTLE_TERASTALLIZATION, SPECIES_OGERPON_WELLSPRING_TERA, TYPE_WATER}, + {FORM_CHANGE_BATTLE_TERASTALLIZATION, SPECIES_OGERPON_HEARTHFLAME_TERA, TYPE_FIRE}, + {FORM_CHANGE_BATTLE_TERASTALLIZATION, SPECIES_OGERPON_CORNERSTONE_TERA, TYPE_ROCK}, #endif {FORM_CHANGE_TERMINATOR}, }; diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index f099f8665f..1a8e1818ef 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -5,7 +5,7 @@ static const u16 sVenusaurFormSpeciesIdTable[] = { SPECIES_VENUSAUR_MEGA, #endif #if P_GIGANTAMAX_FORMS - SPECIES_VENUSAUR_GIGANTAMAX, + SPECIES_VENUSAUR_GMAX, #endif FORM_SPECIES_END, }; @@ -19,7 +19,7 @@ static const u16 sCharizardFormSpeciesIdTable[] = { SPECIES_CHARIZARD_MEGA_Y, #endif #if P_GIGANTAMAX_FORMS - SPECIES_CHARIZARD_GIGANTAMAX, + SPECIES_CHARIZARD_GMAX, #endif FORM_SPECIES_END, }; @@ -32,7 +32,7 @@ static const u16 sBlastoiseFormSpeciesIdTable[] = { SPECIES_BLASTOISE_MEGA, #endif #if P_GIGANTAMAX_FORMS - SPECIES_BLASTOISE_GIGANTAMAX, + SPECIES_BLASTOISE_GMAX, #endif FORM_SPECIES_END, }; @@ -42,7 +42,7 @@ static const u16 sBlastoiseFormSpeciesIdTable[] = { static const u16 sButterfreeFormSpeciesIdTable[] = { SPECIES_BUTTERFREE, #if P_GIGANTAMAX_FORMS - SPECIES_BUTTERFREE_GIGANTAMAX, + SPECIES_BUTTERFREE_GMAX, #endif FORM_SPECIES_END, }; @@ -72,7 +72,7 @@ static const u16 sPidgeotFormSpeciesIdTable[] = { static const u16 sRattataFormSpeciesIdTable[] = { SPECIES_RATTATA, #if P_ALOLAN_FORMS - SPECIES_RATTATA_ALOLAN, + SPECIES_RATTATA_ALOLA, #endif FORM_SPECIES_END, }; @@ -80,8 +80,8 @@ static const u16 sRattataFormSpeciesIdTable[] = { static const u16 sRaticateFormSpeciesIdTable[] = { SPECIES_RATICATE, #if P_ALOLAN_FORMS - SPECIES_RATICATE_ALOLAN, - SPECIES_RATICATE_ALOLAN_TOTEM, + SPECIES_RATICATE_ALOLA, + SPECIES_RATICATE_ALOLA_TOTEM, #endif FORM_SPECIES_END, }; @@ -103,30 +103,30 @@ static const u16 sPikachuFormSpeciesIdTable[] = { SPECIES_PIKACHU_ROCK_STAR, SPECIES_PIKACHU_BELLE, SPECIES_PIKACHU_POP_STAR, - SPECIES_PIKACHU_PH_D, + SPECIES_PIKACHU_PHD, SPECIES_PIKACHU_LIBRE, #endif #if P_CAP_PIKACHU_FORMS - SPECIES_PIKACHU_ORIGINAL_CAP, - SPECIES_PIKACHU_HOENN_CAP, - SPECIES_PIKACHU_SINNOH_CAP, - SPECIES_PIKACHU_UNOVA_CAP, - SPECIES_PIKACHU_KALOS_CAP, - SPECIES_PIKACHU_ALOLA_CAP, + SPECIES_PIKACHU_ORIGINAL, + SPECIES_PIKACHU_HOENN, + SPECIES_PIKACHU_SINNOH, + SPECIES_PIKACHU_UNOVA, + SPECIES_PIKACHU_KALOS, + SPECIES_PIKACHU_ALOLA, SPECIES_PIKACHU_PARTNER_CAP, - SPECIES_PIKACHU_WORLD_CAP, + SPECIES_PIKACHU_WORLD, #endif #if P_GIGANTAMAX_FORMS - SPECIES_PIKACHU_GIGANTAMAX, + SPECIES_PIKACHU_GMAX, #endif - SPECIES_PIKACHU_PARTNER, + SPECIES_PIKACHU_STARTER, FORM_SPECIES_END, }; static const u16 sRaichuFormSpeciesIdTable[] = { SPECIES_RAICHU, #if P_ALOLAN_FORMS - SPECIES_RAICHU_ALOLAN, + SPECIES_RAICHU_ALOLA, #endif FORM_SPECIES_END, }; @@ -136,7 +136,7 @@ static const u16 sRaichuFormSpeciesIdTable[] = { static const u16 sSandshrewFormSpeciesIdTable[] = { SPECIES_SANDSHREW, #if P_ALOLAN_FORMS - SPECIES_SANDSHREW_ALOLAN, + SPECIES_SANDSHREW_ALOLA, #endif FORM_SPECIES_END, }; @@ -144,7 +144,7 @@ static const u16 sSandshrewFormSpeciesIdTable[] = { static const u16 sSandslashFormSpeciesIdTable[] = { SPECIES_SANDSLASH, #if P_ALOLAN_FORMS - SPECIES_SANDSLASH_ALOLAN, + SPECIES_SANDSLASH_ALOLA, #endif FORM_SPECIES_END, }; @@ -154,7 +154,7 @@ static const u16 sSandslashFormSpeciesIdTable[] = { static const u16 sVulpixFormSpeciesIdTable[] = { SPECIES_VULPIX, #if P_ALOLAN_FORMS - SPECIES_VULPIX_ALOLAN, + SPECIES_VULPIX_ALOLA, #endif FORM_SPECIES_END, }; @@ -162,7 +162,7 @@ static const u16 sVulpixFormSpeciesIdTable[] = { static const u16 sNinetalesFormSpeciesIdTable[] = { SPECIES_NINETALES, #if P_ALOLAN_FORMS - SPECIES_NINETALES_ALOLAN, + SPECIES_NINETALES_ALOLA, #endif FORM_SPECIES_END, }; @@ -172,7 +172,7 @@ static const u16 sNinetalesFormSpeciesIdTable[] = { static const u16 sDiglettFormSpeciesIdTable[] = { SPECIES_DIGLETT, #if P_ALOLAN_FORMS - SPECIES_DIGLETT_ALOLAN, + SPECIES_DIGLETT_ALOLA, #endif FORM_SPECIES_END, }; @@ -180,7 +180,7 @@ static const u16 sDiglettFormSpeciesIdTable[] = { static const u16 sDugtrioFormSpeciesIdTable[] = { SPECIES_DUGTRIO, #if P_ALOLAN_FORMS - SPECIES_DUGTRIO_ALOLAN, + SPECIES_DUGTRIO_ALOLA, #endif FORM_SPECIES_END, }; @@ -190,13 +190,13 @@ static const u16 sDugtrioFormSpeciesIdTable[] = { static const u16 sMeowthFormSpeciesIdTable[] = { SPECIES_MEOWTH, #if P_ALOLAN_FORMS - SPECIES_MEOWTH_ALOLAN, + SPECIES_MEOWTH_ALOLA, #endif #if P_GALARIAN_FORMS - SPECIES_MEOWTH_GALARIAN, + SPECIES_MEOWTH_GALAR, #endif #if P_GIGANTAMAX_FORMS - SPECIES_MEOWTH_GIGANTAMAX, + SPECIES_MEOWTH_GMAX, #endif FORM_SPECIES_END, }; @@ -204,7 +204,7 @@ static const u16 sMeowthFormSpeciesIdTable[] = { static const u16 sPersianFormSpeciesIdTable[] = { SPECIES_PERSIAN, #if P_ALOLAN_FORMS - SPECIES_PERSIAN_ALOLAN, + SPECIES_PERSIAN_ALOLA, #endif FORM_SPECIES_END, }; @@ -214,7 +214,7 @@ static const u16 sPersianFormSpeciesIdTable[] = { static const u16 sGrowlitheFormSpeciesIdTable[] = { SPECIES_GROWLITHE, #if P_HISUIAN_FORMS - SPECIES_GROWLITHE_HISUIAN, + SPECIES_GROWLITHE_HISUI, #endif FORM_SPECIES_END, }; @@ -222,7 +222,7 @@ static const u16 sGrowlitheFormSpeciesIdTable[] = { static const u16 sArcanineFormSpeciesIdTable[] = { SPECIES_ARCANINE, #if P_HISUIAN_FORMS - SPECIES_ARCANINE_HISUIAN, + SPECIES_ARCANINE_HISUI, #endif FORM_SPECIES_END, }; @@ -242,7 +242,7 @@ static const u16 sAlakazamFormSpeciesIdTable[] = { static const u16 sMachampFormSpeciesIdTable[] = { SPECIES_MACHAMP, #if P_GIGANTAMAX_FORMS - SPECIES_MACHAMP_GIGANTAMAX, + SPECIES_MACHAMP_GMAX, #endif FORM_SPECIES_END, }; @@ -252,7 +252,7 @@ static const u16 sMachampFormSpeciesIdTable[] = { static const u16 sGeodudeFormSpeciesIdTable[] = { SPECIES_GEODUDE, #if P_ALOLAN_FORMS - SPECIES_GEODUDE_ALOLAN, + SPECIES_GEODUDE_ALOLA, #endif FORM_SPECIES_END, }; @@ -260,7 +260,7 @@ static const u16 sGeodudeFormSpeciesIdTable[] = { static const u16 sGravelerFormSpeciesIdTable[] = { SPECIES_GRAVELER, #if P_ALOLAN_FORMS - SPECIES_GRAVELER_ALOLAN, + SPECIES_GRAVELER_ALOLA, #endif FORM_SPECIES_END, }; @@ -268,7 +268,7 @@ static const u16 sGravelerFormSpeciesIdTable[] = { static const u16 sGolemFormSpeciesIdTable[] = { SPECIES_GOLEM, #if P_ALOLAN_FORMS - SPECIES_GOLEM_ALOLAN, + SPECIES_GOLEM_ALOLA, #endif FORM_SPECIES_END, }; @@ -278,7 +278,7 @@ static const u16 sGolemFormSpeciesIdTable[] = { static const u16 sPonytaFormSpeciesIdTable[] = { SPECIES_PONYTA, #if P_GALARIAN_FORMS - SPECIES_PONYTA_GALARIAN, + SPECIES_PONYTA_GALAR, #endif FORM_SPECIES_END, }; @@ -286,7 +286,7 @@ static const u16 sPonytaFormSpeciesIdTable[] = { static const u16 sRapidashFormSpeciesIdTable[] = { SPECIES_RAPIDASH, #if P_GALARIAN_FORMS - SPECIES_RAPIDASH_GALARIAN, + SPECIES_RAPIDASH_GALAR, #endif FORM_SPECIES_END, }; @@ -296,7 +296,7 @@ static const u16 sRapidashFormSpeciesIdTable[] = { static const u16 sSlowpokeFormSpeciesIdTable[] = { SPECIES_SLOWPOKE, #if P_GALARIAN_FORMS - SPECIES_SLOWPOKE_GALARIAN, + SPECIES_SLOWPOKE_GALAR, #endif FORM_SPECIES_END, }; @@ -307,7 +307,7 @@ static const u16 sSlowbroFormSpeciesIdTable[] = { SPECIES_SLOWBRO_MEGA, #endif #if P_GALARIAN_FORMS - SPECIES_SLOWBRO_GALARIAN, + SPECIES_SLOWBRO_GALAR, #endif FORM_SPECIES_END, }; @@ -316,7 +316,7 @@ static const u16 sSlowbroFormSpeciesIdTable[] = { static const u16 sSlowkingFormSpeciesIdTable[] = { SPECIES_SLOWKING, #if P_GALARIAN_FORMS - SPECIES_SLOWKING_GALARIAN, + SPECIES_SLOWKING_GALAR, #endif FORM_SPECIES_END, }; @@ -327,7 +327,7 @@ static const u16 sSlowkingFormSpeciesIdTable[] = { static const u16 sFarfetchdFormSpeciesIdTable[] = { SPECIES_FARFETCHD, #if P_GALARIAN_FORMS - SPECIES_FARFETCHD_GALARIAN, + SPECIES_FARFETCHD_GALAR, #endif FORM_SPECIES_END, }; @@ -337,7 +337,7 @@ static const u16 sFarfetchdFormSpeciesIdTable[] = { static const u16 sGrimerFormSpeciesIdTable[] = { SPECIES_GRIMER, #if P_ALOLAN_FORMS - SPECIES_GRIMER_ALOLAN, + SPECIES_GRIMER_ALOLA, #endif FORM_SPECIES_END, }; @@ -345,7 +345,7 @@ static const u16 sGrimerFormSpeciesIdTable[] = { static const u16 sMukFormSpeciesIdTable[] = { SPECIES_MUK, #if P_ALOLAN_FORMS - SPECIES_MUK_ALOLAN, + SPECIES_MUK_ALOLA, #endif FORM_SPECIES_END, }; @@ -358,7 +358,7 @@ static const u16 sGengarFormSpeciesIdTable[] = { SPECIES_GENGAR_MEGA, #endif #if P_GIGANTAMAX_FORMS - SPECIES_GENGAR_GIGANTAMAX, + SPECIES_GENGAR_GMAX, #endif FORM_SPECIES_END, }; @@ -380,7 +380,7 @@ static const u16 sSteelixFormSpeciesIdTable[] = { static const u16 sKinglerFormSpeciesIdTable[] = { SPECIES_KINGLER, #if P_GIGANTAMAX_FORMS - SPECIES_KINGLER_GIGANTAMAX, + SPECIES_KINGLER_GMAX, #endif FORM_SPECIES_END, }; @@ -390,7 +390,7 @@ static const u16 sKinglerFormSpeciesIdTable[] = { static const u16 sVoltorbFormSpeciesIdTable[] = { SPECIES_VOLTORB, #if P_HISUIAN_FORMS - SPECIES_VOLTORB_HISUIAN, + SPECIES_VOLTORB_HISUI, #endif FORM_SPECIES_END, }; @@ -398,7 +398,7 @@ static const u16 sVoltorbFormSpeciesIdTable[] = { static const u16 sElectrodeFormSpeciesIdTable[] = { SPECIES_ELECTRODE, #if P_HISUIAN_FORMS - SPECIES_ELECTRODE_HISUIAN, + SPECIES_ELECTRODE_HISUI, #endif FORM_SPECIES_END, }; @@ -408,7 +408,7 @@ static const u16 sElectrodeFormSpeciesIdTable[] = { static const u16 sExeggutorFormSpeciesIdTable[] = { SPECIES_EXEGGUTOR, #if P_ALOLAN_FORMS - SPECIES_EXEGGUTOR_ALOLAN, + SPECIES_EXEGGUTOR_ALOLA, #endif FORM_SPECIES_END, }; @@ -418,8 +418,8 @@ static const u16 sExeggutorFormSpeciesIdTable[] = { static const u16 sMarowakFormSpeciesIdTable[] = { SPECIES_MAROWAK, #if P_ALOLAN_FORMS - SPECIES_MAROWAK_ALOLAN, - SPECIES_MAROWAK_ALOLAN_TOTEM, + SPECIES_MAROWAK_ALOLA, + SPECIES_MAROWAK_ALOLA_TOTEM, #endif FORM_SPECIES_END, }; @@ -429,7 +429,7 @@ static const u16 sMarowakFormSpeciesIdTable[] = { static const u16 sWeezingFormSpeciesIdTable[] = { SPECIES_WEEZING, #if P_GALARIAN_FORMS - SPECIES_WEEZING_GALARIAN, + SPECIES_WEEZING_GALAR, #endif FORM_SPECIES_END, }; @@ -449,7 +449,7 @@ static const u16 sKangaskhanFormSpeciesIdTable[] = { static const u16 sMrMimeFormSpeciesIdTable[] = { SPECIES_MR_MIME, #if P_GALARIAN_FORMS - SPECIES_MR_MIME_GALARIAN, + SPECIES_MR_MIME_GALAR, #endif FORM_SPECIES_END, }; @@ -481,9 +481,9 @@ static const u16 sPinsirFormSpeciesIdTable[] = { static const u16 sTaurosFormSpeciesIdTable[] = { SPECIES_TAUROS, #if P_PALDEAN_FORMS - SPECIES_TAUROS_PALDEAN_COMBAT_BREED, - SPECIES_TAUROS_PALDEAN_BLAZE_BREED, - SPECIES_TAUROS_PALDEAN_AQUA_BREED, + SPECIES_TAUROS_PALDEA_COMBAT, + SPECIES_TAUROS_PALDEA_BLAZE, + SPECIES_TAUROS_PALDEA_AQUA, #endif FORM_SPECIES_END, }; @@ -503,7 +503,7 @@ static const u16 sGyaradosFormSpeciesIdTable[] = { static const u16 sLaprasFormSpeciesIdTable[] = { SPECIES_LAPRAS, #if P_GIGANTAMAX_FORMS - SPECIES_LAPRAS_GIGANTAMAX, + SPECIES_LAPRAS_GMAX, #endif FORM_SPECIES_END, }; @@ -513,9 +513,9 @@ static const u16 sLaprasFormSpeciesIdTable[] = { static const u16 sEeveeFormSpeciesIdTable[] = { SPECIES_EEVEE, #if P_GIGANTAMAX_FORMS - SPECIES_EEVEE_GIGANTAMAX, + SPECIES_EEVEE_GMAX, #endif - SPECIES_EEVEE_PARTNER, + SPECIES_EEVEE_STARTER, FORM_SPECIES_END, }; #endif //P_FAMILY_EEVEE @@ -534,7 +534,7 @@ static const u16 sAerodactylFormSpeciesIdTable[] = { static const u16 sSnorlaxFormSpeciesIdTable[] = { SPECIES_SNORLAX, #if P_GIGANTAMAX_FORMS - SPECIES_SNORLAX_GIGANTAMAX, + SPECIES_SNORLAX_GMAX, #endif FORM_SPECIES_END, }; @@ -544,7 +544,7 @@ static const u16 sSnorlaxFormSpeciesIdTable[] = { static const u16 sArticunoFormSpeciesIdTable[] = { SPECIES_ARTICUNO, #if P_GALARIAN_FORMS - SPECIES_ARTICUNO_GALARIAN, + SPECIES_ARTICUNO_GALAR, #endif FORM_SPECIES_END, }; @@ -554,7 +554,7 @@ static const u16 sArticunoFormSpeciesIdTable[] = { static const u16 sZapdosFormSpeciesIdTable[] = { SPECIES_ZAPDOS, #if P_GALARIAN_FORMS - SPECIES_ZAPDOS_GALARIAN, + SPECIES_ZAPDOS_GALAR, #endif FORM_SPECIES_END, }; @@ -564,7 +564,7 @@ static const u16 sZapdosFormSpeciesIdTable[] = { static const u16 sMoltresFormSpeciesIdTable[] = { SPECIES_MOLTRES, #if P_GALARIAN_FORMS - SPECIES_MOLTRES_GALARIAN, + SPECIES_MOLTRES_GALAR, #endif FORM_SPECIES_END, }; @@ -585,7 +585,7 @@ static const u16 sMewtwoFormSpeciesIdTable[] = { static const u16 sTyphlosionFormSpeciesIdTable[] = { SPECIES_TYPHLOSION, #if P_HISUIAN_FORMS - SPECIES_TYPHLOSION_HISUIAN, + SPECIES_TYPHLOSION_HISUI, #endif FORM_SPECIES_END, }; @@ -605,7 +605,7 @@ static const u16 sAmpharosFormSpeciesIdTable[] = { static const u16 sWooperFormSpeciesIdTable[] = { SPECIES_WOOPER, #if P_PALDEAN_FORMS - SPECIES_WOOPER_PALDEAN, + SPECIES_WOOPER_PALDEA, #endif FORM_SPECIES_END, }; @@ -639,8 +639,8 @@ static const u16 sUnownFormSpeciesIdTable[] = { SPECIES_UNOWN_X, SPECIES_UNOWN_Y, SPECIES_UNOWN_Z, - SPECIES_UNOWN_EMARK, - SPECIES_UNOWN_QMARK, + SPECIES_UNOWN_EXCLAMATION, + SPECIES_UNOWN_QUESTION, FORM_SPECIES_END, }; #endif //P_FAMILY_UNOWN @@ -657,7 +657,7 @@ static const u16 sDudunsparceFormSpeciesIdTable[] = { static const u16 sQwilfishFormSpeciesIdTable[] = { SPECIES_QWILFISH, #if P_HISUIAN_FORMS - SPECIES_QWILFISH_HISUIAN, + SPECIES_QWILFISH_HISUI, #endif FORM_SPECIES_END, }; @@ -677,7 +677,7 @@ static const u16 sHeracrossFormSpeciesIdTable[] = { static const u16 sSneaselFormSpeciesIdTable[] = { SPECIES_SNEASEL, #if P_HISUIAN_FORMS - SPECIES_SNEASEL_HISUIAN, + SPECIES_SNEASEL_HISUI, #endif FORM_SPECIES_END, }; @@ -695,7 +695,7 @@ static const u16 sUrsalunaFormSpeciesIdTable[] = { static const u16 sCorsolaFormSpeciesIdTable[] = { SPECIES_CORSOLA, #if P_GALARIAN_FORMS - SPECIES_CORSOLA_GALARIAN, + SPECIES_CORSOLA_GALAR, #endif FORM_SPECIES_END, }; @@ -755,7 +755,7 @@ static const u16 sSwampertFormSpeciesIdTable[] = { static const u16 sZigzagoonFormSpeciesIdTable[] = { SPECIES_ZIGZAGOON, #if P_GALARIAN_FORMS - SPECIES_ZIGZAGOON_GALARIAN, + SPECIES_ZIGZAGOON_GALAR, #endif FORM_SPECIES_END, }; @@ -763,7 +763,7 @@ static const u16 sZigzagoonFormSpeciesIdTable[] = { static const u16 sLinooneFormSpeciesIdTable[] = { SPECIES_LINOONE, #if P_GALARIAN_FORMS - SPECIES_LINOONE_GALARIAN, + SPECIES_LINOONE_GALAR, #endif FORM_SPECIES_END, }; @@ -991,23 +991,23 @@ static const u16 sDeoxysFormSpeciesIdTable[] = { #if P_FAMILY_BURMY static const u16 sBurmyFormSpeciesIdTable[] = { - SPECIES_BURMY_PLANT_CLOAK, - SPECIES_BURMY_SANDY_CLOAK, - SPECIES_BURMY_TRASH_CLOAK, + SPECIES_BURMY_PLANT, + SPECIES_BURMY_SANDY, + SPECIES_BURMY_TRASH, FORM_SPECIES_END, }; static const u16 sWormadamFormSpeciesIdTable[] = { - SPECIES_WORMADAM_PLANT_CLOAK, - SPECIES_WORMADAM_SANDY_CLOAK, - SPECIES_WORMADAM_TRASH_CLOAK, + SPECIES_WORMADAM_PLANT, + SPECIES_WORMADAM_SANDY, + SPECIES_WORMADAM_TRASH, FORM_SPECIES_END, }; static const u16 sMothimFormSpeciesIdTable[] = { - SPECIES_MOTHIM_PLANT_CLOAK, - SPECIES_MOTHIM_SANDY_CLOAK, - SPECIES_MOTHIM_TRASH_CLOAK, + SPECIES_MOTHIM_PLANT, + SPECIES_MOTHIM_SANDY, + SPECIES_MOTHIM_TRASH, FORM_SPECIES_END, }; #endif //P_FAMILY_BURMY @@ -1022,14 +1022,14 @@ static const u16 sCherrimFormSpeciesIdTable[] = { #if P_FAMILY_SHELLOS static const u16 sShellosFormSpeciesIdTable[] = { - SPECIES_SHELLOS_WEST_SEA, - SPECIES_SHELLOS_EAST_SEA, + SPECIES_SHELLOS_WEST, + SPECIES_SHELLOS_EAST, FORM_SPECIES_END, }; static const u16 sGastrodonFormSpeciesIdTable[] = { - SPECIES_GASTRODON_WEST_SEA, - SPECIES_GASTRODON_EAST_SEA, + SPECIES_GASTRODON_WEST, + SPECIES_GASTRODON_EAST, FORM_SPECIES_END, }; #endif //P_FAMILY_SHELLOS @@ -1146,7 +1146,7 @@ static const u16 sArceusFormSpeciesIdTable[] = { static const u16 sSamurottFormSpeciesIdTable[] = { SPECIES_SAMUROTT, #if P_HISUIAN_FORMS - SPECIES_SAMUROTT_HISUIAN, + SPECIES_SAMUROTT_HISUI, #endif FORM_SPECIES_END, }; @@ -1166,7 +1166,7 @@ static const u16 sAudinoFormSpeciesIdTable[] = { static const u16 sLilligantFormSpeciesIdTable[] = { SPECIES_LILLIGANT, #if P_HISUIAN_FORMS - SPECIES_LILLIGANT_HISUIAN, + SPECIES_LILLIGANT_HISUI, #endif FORM_SPECIES_END, }; @@ -1181,8 +1181,8 @@ static const u16 sBasculinFormSpeciesIdTable[] = { }; static const u16 sBasculegionFormSpeciesIdTable[] = { - SPECIES_BASCULEGION_MALE, - SPECIES_BASCULEGION_FEMALE, + SPECIES_BASCULEGION_M, + SPECIES_BASCULEGION_F, FORM_SPECIES_END, }; #endif //P_FAMILY_BASCULIN @@ -1191,17 +1191,17 @@ static const u16 sBasculegionFormSpeciesIdTable[] = { static const u16 sDarumakaFormSpeciesIdTable[] = { SPECIES_DARUMAKA, #if P_GALARIAN_FORMS - SPECIES_DARUMAKA_GALARIAN, + SPECIES_DARUMAKA_GALAR, #endif FORM_SPECIES_END, }; static const u16 sDarmanitanFormSpeciesIdTable[] = { - SPECIES_DARMANITAN_STANDARD_MODE, - SPECIES_DARMANITAN_ZEN_MODE, + SPECIES_DARMANITAN_STANDARD, + SPECIES_DARMANITAN_ZEN, #if P_GALARIAN_FORMS - SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE, - SPECIES_DARMANITAN_GALARIAN_ZEN_MODE, + SPECIES_DARMANITAN_GALAR_STANDARD, + SPECIES_DARMANITAN_GALAR_ZEN, #endif FORM_SPECIES_END, }; @@ -1211,7 +1211,7 @@ static const u16 sDarmanitanFormSpeciesIdTable[] = { static const u16 sYamaskFormSpeciesIdTable[] = { SPECIES_YAMASK, #if P_GALARIAN_FORMS - SPECIES_YAMASK_GALARIAN, + SPECIES_YAMASK_GALAR, #endif FORM_SPECIES_END, }; @@ -1221,7 +1221,7 @@ static const u16 sYamaskFormSpeciesIdTable[] = { static const u16 sGarbodorFormSpeciesIdTable[] = { SPECIES_GARBODOR, #if P_GIGANTAMAX_FORMS - SPECIES_GARBODOR_GIGANTAMAX, + SPECIES_GARBODOR_GMAX, #endif FORM_SPECIES_END, }; @@ -1231,7 +1231,7 @@ static const u16 sGarbodorFormSpeciesIdTable[] = { static const u16 sZoruaFormSpeciesIdTable[] = { SPECIES_ZORUA, #if P_HISUIAN_FORMS - SPECIES_ZORUA_HISUIAN, + SPECIES_ZORUA_HISUI, #endif FORM_SPECIES_END, }; @@ -1239,7 +1239,7 @@ static const u16 sZoruaFormSpeciesIdTable[] = { static const u16 sZoroarkFormSpeciesIdTable[] = { SPECIES_ZOROARK, #if P_HISUIAN_FORMS - SPECIES_ZOROARK_HISUIAN, + SPECIES_ZOROARK_HISUI, #endif FORM_SPECIES_END, }; @@ -1267,7 +1267,7 @@ static const u16 sSawsbuckFormSpeciesIdTable[] = { static const u16 sStunfiskFormSpeciesIdTable[] = { SPECIES_STUNFISK, #if P_GALARIAN_FORMS - SPECIES_STUNFISK_GALARIAN, + SPECIES_STUNFISK_GALAR, #endif FORM_SPECIES_END, }; @@ -1277,7 +1277,7 @@ static const u16 sStunfiskFormSpeciesIdTable[] = { static const u16 sBraviaryFormSpeciesIdTable[] = { SPECIES_BRAVIARY, #if P_HISUIAN_FORMS - SPECIES_BRAVIARY_HISUIAN, + SPECIES_BRAVIARY_HISUI, #endif FORM_SPECIES_END, }; @@ -1335,10 +1335,10 @@ static const u16 sMeloettaFormSpeciesIdTable[] = { #if P_FAMILY_GENESECT static const u16 sGenesectFormSpeciesIdTable[] = { SPECIES_GENESECT, - SPECIES_GENESECT_DOUSE_DRIVE, - SPECIES_GENESECT_SHOCK_DRIVE, - SPECIES_GENESECT_BURN_DRIVE, - SPECIES_GENESECT_CHILL_DRIVE, + SPECIES_GENESECT_DOUSE, + SPECIES_GENESECT_SHOCK, + SPECIES_GENESECT_BURN, + SPECIES_GENESECT_CHILL, FORM_SPECIES_END, }; #endif //P_FAMILY_GENESECT @@ -1373,7 +1373,7 @@ static const u16 sScatterbugFormSpeciesIdTable[] = { SPECIES_SCATTERBUG_OCEAN, SPECIES_SCATTERBUG_JUNGLE, SPECIES_SCATTERBUG_FANCY, - SPECIES_SCATTERBUG_POKE_BALL, + SPECIES_SCATTERBUG_POKEBALL, FORM_SPECIES_END, }; @@ -1397,7 +1397,7 @@ static const u16 sSpewpaFormSpeciesIdTable[] = { SPECIES_SPEWPA_OCEAN, SPECIES_SPEWPA_JUNGLE, SPECIES_SPEWPA_FANCY, - SPECIES_SPEWPA_POKE_BALL, + SPECIES_SPEWPA_POKEBALL, FORM_SPECIES_END, }; @@ -1421,37 +1421,37 @@ static const u16 sVivillonFormSpeciesIdTable[] = { SPECIES_VIVILLON_OCEAN, SPECIES_VIVILLON_JUNGLE, SPECIES_VIVILLON_FANCY, - SPECIES_VIVILLON_POKE_BALL, + SPECIES_VIVILLON_POKEBALL, FORM_SPECIES_END, }; #endif //P_FAMILY_SCATTERBUG #if P_FAMILY_FLABEBE static const u16 sFlabebeFormSpeciesIdTable[] = { - SPECIES_FLABEBE_RED_FLOWER, - SPECIES_FLABEBE_YELLOW_FLOWER, - SPECIES_FLABEBE_ORANGE_FLOWER, - SPECIES_FLABEBE_BLUE_FLOWER, - SPECIES_FLABEBE_WHITE_FLOWER, + SPECIES_FLABEBE_RED, + SPECIES_FLABEBE_YELLOW, + SPECIES_FLABEBE_ORANGE, + SPECIES_FLABEBE_BLUE, + SPECIES_FLABEBE_WHITE, FORM_SPECIES_END, }; static const u16 sFloetteFormSpeciesIdTable[] = { - SPECIES_FLOETTE_RED_FLOWER, - SPECIES_FLOETTE_YELLOW_FLOWER, - SPECIES_FLOETTE_ORANGE_FLOWER, - SPECIES_FLOETTE_BLUE_FLOWER, - SPECIES_FLOETTE_WHITE_FLOWER, - SPECIES_FLOETTE_ETERNAL_FLOWER, + SPECIES_FLOETTE_RED, + SPECIES_FLOETTE_YELLOW, + SPECIES_FLOETTE_ORANGE, + SPECIES_FLOETTE_BLUE, + SPECIES_FLOETTE_WHITE, + SPECIES_FLOETTE_ETERNAL, FORM_SPECIES_END, }; static const u16 sFlorgesFormSpeciesIdTable[] = { - SPECIES_FLORGES_RED_FLOWER, - SPECIES_FLORGES_YELLOW_FLOWER, - SPECIES_FLORGES_ORANGE_FLOWER, - SPECIES_FLORGES_BLUE_FLOWER, - SPECIES_FLORGES_WHITE_FLOWER, + SPECIES_FLORGES_RED, + SPECIES_FLORGES_YELLOW, + SPECIES_FLORGES_ORANGE, + SPECIES_FLORGES_BLUE, + SPECIES_FLORGES_WHITE, FORM_SPECIES_END, }; #endif //P_FAMILY_FLABEBE @@ -1474,8 +1474,8 @@ static const u16 sFurfrouFormSpeciesIdTable[] = { #if P_FAMILY_ESPURR static const u16 sMeowsticFormSpeciesIdTable[] = { - SPECIES_MEOWSTIC_MALE, - SPECIES_MEOWSTIC_FEMALE, + SPECIES_MEOWSTIC_M, + SPECIES_MEOWSTIC_F, FORM_SPECIES_END, }; #endif //P_FAMILY_ESPURR @@ -1492,7 +1492,7 @@ static const u16 sAegislashFormSpeciesIdTable[] = { static const u16 sSliggooFormSpeciesIdTable[] = { SPECIES_SLIGGOO, #if P_HISUIAN_FORMS - SPECIES_SLIGGOO_HISUIAN, + SPECIES_SLIGGOO_HISUI, #endif FORM_SPECIES_END, }; @@ -1500,7 +1500,7 @@ static const u16 sSliggooFormSpeciesIdTable[] = { static const u16 sGoodraFormSpeciesIdTable[] = { SPECIES_GOODRA, #if P_HISUIAN_FORMS - SPECIES_GOODRA_HISUIAN, + SPECIES_GOODRA_HISUI, #endif FORM_SPECIES_END, }; @@ -1528,7 +1528,7 @@ static const u16 sGourgeistFormSpeciesIdTable[] = { static const u16 sAvaluggFormSpeciesIdTable[] = { SPECIES_AVALUGG, #if P_HISUIAN_FORMS - SPECIES_AVALUGG_HISUIAN, + SPECIES_AVALUGG_HISUI, #endif FORM_SPECIES_END, }; @@ -1544,7 +1544,7 @@ static const u16 sXerneasFormSpeciesIdTable[] = { #if P_FAMILY_ZYGARDE static const u16 sZygardeFormSpeciesIdTable[] = { - SPECIES_ZYGARDE_50_AURA_BREAK, + SPECIES_ZYGARDE_50, SPECIES_ZYGARDE_10_AURA_BREAK, SPECIES_ZYGARDE_10_POWER_CONSTRUCT, SPECIES_ZYGARDE_50_POWER_CONSTRUCT, @@ -1575,7 +1575,7 @@ static const u16 sHoopaFormSpeciesIdTable[] = { static const u16 sDecidueyeFormSpeciesIdTable[] = { SPECIES_DECIDUEYE, #if P_HISUIAN_FORMS - SPECIES_DECIDUEYE_HISUIAN, + SPECIES_DECIDUEYE_HISUI, #endif FORM_SPECIES_END, }; @@ -1719,7 +1719,7 @@ static const u16 sMimikyuFormSpeciesIdTable[] = { SPECIES_MIMIKYU_DISGUISED, SPECIES_MIMIKYU_BUSTED, SPECIES_MIMIKYU_TOTEM_DISGUISED, - SPECIES_MIMIKYU_TOTEM_BUSTED, + SPECIES_MIMIKYU_BUSTED_TOTEM, FORM_SPECIES_END, }; #endif //P_FAMILY_MIMIKYU @@ -1747,7 +1747,7 @@ static const u16 sNecrozmaFormSpeciesIdTable[] = { #if P_FAMILY_MAGEARNA static const u16 sMagearnaFormSpeciesIdTable[] = { SPECIES_MAGEARNA, - SPECIES_MAGEARNA_ORIGINAL_COLOR, + SPECIES_MAGEARNA_ORIGINAL, FORM_SPECIES_END, }; #endif //P_FAMILY_MAGEARNA @@ -1756,7 +1756,7 @@ static const u16 sMagearnaFormSpeciesIdTable[] = { static const u16 sMelmetalFormSpeciesIdTable[] = { SPECIES_MELMETAL, #if P_GIGANTAMAX_FORMS - SPECIES_MELMETAL_GIGANTAMAX, + SPECIES_MELMETAL_GMAX, #endif FORM_SPECIES_END, }; @@ -1766,7 +1766,7 @@ static const u16 sMelmetalFormSpeciesIdTable[] = { static const u16 sRillaboomFormSpeciesIdTable[] = { SPECIES_RILLABOOM, #if P_GIGANTAMAX_FORMS - SPECIES_RILLABOOM_GIGANTAMAX, + SPECIES_RILLABOOM_GMAX, #endif FORM_SPECIES_END, }; @@ -1776,7 +1776,7 @@ static const u16 sRillaboomFormSpeciesIdTable[] = { static const u16 sCinderaceFormSpeciesIdTable[] = { SPECIES_CINDERACE, #if P_GIGANTAMAX_FORMS - SPECIES_CINDERACE_GIGANTAMAX, + SPECIES_CINDERACE_GMAX, #endif FORM_SPECIES_END, }; @@ -1786,7 +1786,7 @@ static const u16 sCinderaceFormSpeciesIdTable[] = { static const u16 sInteleonFormSpeciesIdTable[] = { SPECIES_INTELEON, #if P_GIGANTAMAX_FORMS - SPECIES_INTELEON_GIGANTAMAX, + SPECIES_INTELEON_GMAX, #endif FORM_SPECIES_END, }; @@ -1796,7 +1796,7 @@ static const u16 sInteleonFormSpeciesIdTable[] = { static const u16 sCorviknightFormSpeciesIdTable[] = { SPECIES_CORVIKNIGHT, #if P_GIGANTAMAX_FORMS - SPECIES_CORVIKNIGHT_GIGANTAMAX, + SPECIES_CORVIKNIGHT_GMAX, #endif FORM_SPECIES_END, }; @@ -1806,7 +1806,7 @@ static const u16 sCorviknightFormSpeciesIdTable[] = { static const u16 sOrbeetleFormSpeciesIdTable[] = { SPECIES_ORBEETLE, #if P_GIGANTAMAX_FORMS - SPECIES_ORBEETLE_GIGANTAMAX, + SPECIES_ORBEETLE_GMAX, #endif FORM_SPECIES_END, }; @@ -1816,7 +1816,7 @@ static const u16 sOrbeetleFormSpeciesIdTable[] = { static const u16 sDrednawFormSpeciesIdTable[] = { SPECIES_DREDNAW, #if P_GIGANTAMAX_FORMS - SPECIES_DREDNAW_GIGANTAMAX, + SPECIES_DREDNAW_GMAX, #endif FORM_SPECIES_END, }; @@ -1826,7 +1826,7 @@ static const u16 sDrednawFormSpeciesIdTable[] = { static const u16 sCoalossalFormSpeciesIdTable[] = { SPECIES_COALOSSAL, #if P_GIGANTAMAX_FORMS - SPECIES_COALOSSAL_GIGANTAMAX, + SPECIES_COALOSSAL_GMAX, #endif FORM_SPECIES_END, }; @@ -1836,7 +1836,7 @@ static const u16 sCoalossalFormSpeciesIdTable[] = { static const u16 sFlappleFormSpeciesIdTable[] = { SPECIES_FLAPPLE, #if P_GIGANTAMAX_FORMS - SPECIES_FLAPPLE_GIGANTAMAX, + SPECIES_FLAPPLE_GMAX, #endif FORM_SPECIES_END, }; @@ -1844,7 +1844,7 @@ static const u16 sFlappleFormSpeciesIdTable[] = { static const u16 sAppletunFormSpeciesIdTable[] = { SPECIES_APPLETUN, #if P_GIGANTAMAX_FORMS - SPECIES_APPLETUN_GIGANTAMAX, + SPECIES_APPLETUN_GMAX, #endif FORM_SPECIES_END, }; @@ -1854,7 +1854,7 @@ static const u16 sAppletunFormSpeciesIdTable[] = { static const u16 sSandacondaFormSpeciesIdTable[] = { SPECIES_SANDACONDA, #if P_GIGANTAMAX_FORMS - SPECIES_SANDACONDA_GIGANTAMAX, + SPECIES_SANDACONDA_GMAX, #endif FORM_SPECIES_END, }; @@ -1874,10 +1874,10 @@ static const u16 sToxtricityFormSpeciesIdTable[] = { SPECIES_TOXTRICITY_AMPED, SPECIES_TOXTRICITY_LOW_KEY, #if P_GIGANTAMAX_FORMS - SPECIES_TOXTRICITY_AMPED_GIGANTAMAX, + SPECIES_TOXTRICITY_AMPED_GMAX, #endif #if P_GIGANTAMAX_FORMS - SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX, + SPECIES_TOXTRICITY_LOW_KEY_GMAX, #endif FORM_SPECIES_END, }; @@ -1887,7 +1887,7 @@ static const u16 sToxtricityFormSpeciesIdTable[] = { static const u16 sCentiskorchFormSpeciesIdTable[] = { SPECIES_CENTISKORCH, #if P_GIGANTAMAX_FORMS - SPECIES_CENTISKORCH_GIGANTAMAX, + SPECIES_CENTISKORCH_GMAX, #endif FORM_SPECIES_END, }; @@ -1911,7 +1911,7 @@ static const u16 sPolteageistFormSpeciesIdTable[] = { static const u16 sHattereneFormSpeciesIdTable[] = { SPECIES_HATTERENE, #if P_GIGANTAMAX_FORMS - SPECIES_HATTERENE_GIGANTAMAX, + SPECIES_HATTERENE_GMAX, #endif FORM_SPECIES_END, }; @@ -1921,7 +1921,7 @@ static const u16 sHattereneFormSpeciesIdTable[] = { static const u16 sGrimmsnarlFormSpeciesIdTable[] = { SPECIES_GRIMMSNARL, #if P_GIGANTAMAX_FORMS - SPECIES_GRIMMSNARL_GIGANTAMAX, + SPECIES_GRIMMSNARL_GMAX, #endif FORM_SPECIES_END, }; @@ -1993,7 +1993,7 @@ static const u16 sAlcremieFormSpeciesIdTable[] = { SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL, SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL, #if P_GIGANTAMAX_FORMS - SPECIES_ALCREMIE_GIGANTAMAX, + SPECIES_ALCREMIE_GMAX, #endif FORM_SPECIES_END, }; @@ -2001,16 +2001,16 @@ static const u16 sAlcremieFormSpeciesIdTable[] = { #if P_FAMILY_EISCUE static const u16 sEiscueFormSpeciesIdTable[] = { - SPECIES_EISCUE_ICE_FACE, - SPECIES_EISCUE_NOICE_FACE, + SPECIES_EISCUE_ICE, + SPECIES_EISCUE_NOICE, FORM_SPECIES_END, }; #endif //P_FAMILY_EISCUE #if P_FAMILY_INDEEDEE static const u16 sIndeedeeFormSpeciesIdTable[] = { - SPECIES_INDEEDEE_MALE, - SPECIES_INDEEDEE_FEMALE, + SPECIES_INDEEDEE_M, + SPECIES_INDEEDEE_F, FORM_SPECIES_END, }; #endif //P_FAMILY_INDEEDEE @@ -2027,7 +2027,7 @@ static const u16 sMorpekoFormSpeciesIdTable[] = { static const u16 sCopperajahFormSpeciesIdTable[] = { SPECIES_COPPERAJAH, #if P_GIGANTAMAX_FORMS - SPECIES_COPPERAJAH_GIGANTAMAX, + SPECIES_COPPERAJAH_GMAX, #endif FORM_SPECIES_END, }; @@ -2037,7 +2037,7 @@ static const u16 sCopperajahFormSpeciesIdTable[] = { static const u16 sDuraludonFormSpeciesIdTable[] = { SPECIES_DURALUDON, #if P_GIGANTAMAX_FORMS - SPECIES_DURALUDON_GIGANTAMAX, + SPECIES_DURALUDON_GMAX, #endif FORM_SPECIES_END, }; @@ -2045,16 +2045,16 @@ static const u16 sDuraludonFormSpeciesIdTable[] = { #if P_FAMILY_ZACIAN static const u16 sZacianFormSpeciesIdTable[] = { - SPECIES_ZACIAN_HERO_OF_MANY_BATTLES, - SPECIES_ZACIAN_CROWNED_SWORD, + SPECIES_ZACIAN_HERO, + SPECIES_ZACIAN_CROWNED, FORM_SPECIES_END, }; #endif //P_FAMILY_ZACIAN #if P_FAMILY_ZAMAZENTA static const u16 sZamazentaFormSpeciesIdTable[] = { - SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES, - SPECIES_ZAMAZENTA_CROWNED_SHIELD, + SPECIES_ZAMAZENTA_HERO, + SPECIES_ZAMAZENTA_CROWNED, FORM_SPECIES_END, }; #endif //P_FAMILY_ZAMAZENTA @@ -2069,11 +2069,11 @@ static const u16 sEternatusFormSpeciesIdTable[] = { #if P_FAMILY_KUBFU static const u16 sUrshifuFormSpeciesIdTable[] = { - SPECIES_URSHIFU_SINGLE_STRIKE_STYLE, - SPECIES_URSHIFU_RAPID_STRIKE_STYLE, + SPECIES_URSHIFU_SINGLE_STRIKE, + SPECIES_URSHIFU_RAPID_STRIKE, #if P_GIGANTAMAX_FORMS - SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX, - SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, + SPECIES_URSHIFU_SINGLE_STRIKE_GMAX, + SPECIES_URSHIFU_RAPID_STRIKE_GMAX, #endif FORM_SPECIES_END, }; @@ -2090,8 +2090,8 @@ static const u16 sZarudeFormSpeciesIdTable[] = { #if P_FAMILY_CALYREX static const u16 sCalyrexFormSpeciesIdTable[] = { SPECIES_CALYREX, - SPECIES_CALYREX_ICE_RIDER, - SPECIES_CALYREX_SHADOW_RIDER, + SPECIES_CALYREX_ICE, + SPECIES_CALYREX_SHADOW, FORM_SPECIES_END, }; #endif //P_FAMILY_CALYREX @@ -2106,26 +2106,26 @@ static const u16 sEnamorusFormSpeciesIdTable[] = { #if P_FAMILY_LECHONK static const u16 sOinkologneFormSpeciesIdTable[] = { - SPECIES_OINKOLOGNE_MALE, - SPECIES_OINKOLOGNE_FEMALE, + SPECIES_OINKOLOGNE_M, + SPECIES_OINKOLOGNE_F, FORM_SPECIES_END, }; #endif //P_FAMILY_LECHONK #if P_FAMILY_TANDEMAUS static const u16 sMausholdFormSpeciesIdTable[] = { - SPECIES_MAUSHOLD_FAMILY_OF_THREE, - SPECIES_MAUSHOLD_FAMILY_OF_FOUR, + SPECIES_MAUSHOLD_THREE, + SPECIES_MAUSHOLD_FOUR, FORM_SPECIES_END, }; #endif //P_FAMILY_TANDEMAUS #if P_FAMILY_SQUAWKABILLY static const u16 sSquawkabillyFormSpeciesIdTable[] = { - SPECIES_SQUAWKABILLY_GREEN_PLUMAGE, - SPECIES_SQUAWKABILLY_BLUE_PLUMAGE, - SPECIES_SQUAWKABILLY_YELLOW_PLUMAGE, - SPECIES_SQUAWKABILLY_WHITE_PLUMAGE, + SPECIES_SQUAWKABILLY_GREEN, + SPECIES_SQUAWKABILLY_BLUE, + SPECIES_SQUAWKABILLY_YELLOW, + SPECIES_SQUAWKABILLY_WHITE, FORM_SPECIES_END, }; #endif //P_FAMILY_SQUAWKABILLY @@ -2157,15 +2157,15 @@ static const u16 sGimmighoulFormSpeciesIdTable[] = { #if P_FAMILY_OGERPON static const u16 sOgerponFormSpeciesIdTable[] = { - SPECIES_OGERPON_TEAL_MASK, - SPECIES_OGERPON_WELLSPRING_MASK, - SPECIES_OGERPON_HEARTHFLAME_MASK, - SPECIES_OGERPON_CORNERSTONE_MASK, + SPECIES_OGERPON_TEAL, + SPECIES_OGERPON_WELLSPRING, + SPECIES_OGERPON_HEARTHFLAME, + SPECIES_OGERPON_CORNERSTONE, #if P_TERA_FORMS - SPECIES_OGERPON_TEAL_MASK_TERA, - SPECIES_OGERPON_WELLSPRING_MASK_TERA, - SPECIES_OGERPON_HEARTHFLAME_MASK_TERA, - SPECIES_OGERPON_CORNERSTONE_MASK_TERA, + SPECIES_OGERPON_TEAL_TERA, + SPECIES_OGERPON_WELLSPRING_TERA, + SPECIES_OGERPON_HEARTHFLAME_TERA, + SPECIES_OGERPON_CORNERSTONE_TERA, #endif FORM_SPECIES_END, }; diff --git a/src/data/pokemon/pokedex_orders.h b/src/data/pokemon/pokedex_orders.h index 21968dd6ea..9cbca9ba63 100644 --- a/src/data/pokemon/pokedex_orders.h +++ b/src/data/pokemon/pokedex_orders.h @@ -1366,16 +1366,16 @@ const u16 gPokedexOrder_Weight[] = //NATIONAL_DEX_PIKACHU_ROCK_STAR, //NATIONAL_DEX_PIKACHU_BELLE, //NATIONAL_DEX_PIKACHU_POP_STAR, - //NATIONAL_DEX_PIKACHU_PH_D, + //NATIONAL_DEX_PIKACHU_PHD, //NATIONAL_DEX_PIKACHU_LIBRE, - //NATIONAL_DEX_PIKACHU_ORIGINAL_CAP, - //NATIONAL_DEX_PIKACHU_HOENN_CAP, - //NATIONAL_DEX_PIKACHU_SINNOH_CAP, - //NATIONAL_DEX_PIKACHU_UNOVA_CAP, - //NATIONAL_DEX_PIKACHU_KALOS_CAP, - //NATIONAL_DEX_PIKACHU_ALOLA_CAP, + //NATIONAL_DEX_PIKACHU_ORIGINAL, + //NATIONAL_DEX_PIKACHU_HOENN, + //NATIONAL_DEX_PIKACHU_SINNOH, + //NATIONAL_DEX_PIKACHU_UNOVA, + //NATIONAL_DEX_PIKACHU_KALOS, + //NATIONAL_DEX_PIKACHU_ALOLA, //NATIONAL_DEX_PIKACHU_PARTNER_CAP, - //NATIONAL_DEX_PIKACHU_WORLD_CAP, + //NATIONAL_DEX_PIKACHU_WORLD, NATIONAL_DEX_MAGNEMITE, NATIONAL_DEX_SENTRET, NATIONAL_DEX_SMOOCHUM, diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index e24f1b7cc6..65b8c90876 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -30,8 +30,12 @@ #define OVERWORLD_PAL(...) \ .overworldPalette = DEFAULT(NULL, __VA_ARGS__), \ .overworldShinyPalette = DEFAULT_2(NULL, __VA_ARGS__), +#define OVERWORLD_PAL_FEMALE(...) \ + .overworldPaletteFemale = DEFAULT(NULL, __VA_ARGS__), \ + .overworldShinyPaletteFemale = DEFAULT_2(NULL, __VA_ARGS__), #else #define OVERWORLD_PAL(...) +#define OVERWORLD_PAL_FEMALE(...) #endif //OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE #define OVERWORLD(picTable, _size, shadow, _tracks, ...) \ @@ -75,9 +79,34 @@ .affineAnims = gDummySpriteAffineAnimTable, \ }, \ OVERWORLD_PAL(__VA_ARGS__) + +#define OVERWORLD_FEMALE(picTable, _size, shadow, _tracks, ...) \ +.overworldDataFemale = { \ + .tileTag = TAG_NONE, \ + .paletteTag = OBJ_EVENT_PAL_TAG_DYNAMIC, \ + .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, \ + .size = (_size == SIZE_32x32 ? 512 : 2048), \ + .width = (_size == SIZE_32x32 ? 32 : 64), \ + .height = (_size == SIZE_32x32 ? 32 : 64), \ + .paletteSlot = PALSLOT_NPC_1, \ + .shadowSize = shadow, \ + .inanimate = FALSE, \ + .compressed = COMP, \ + .tracks = _tracks, \ + .oam = (_size == SIZE_32x32 ? &gObjectEventBaseOam_32x32 : &gObjectEventBaseOam_64x64), \ + .subspriteTables = (_size == SIZE_32x32 ? sOamTables_32x32 : sOamTables_64x64), \ + .anims = sAnimTable_Following, \ + .images = picTable, \ + .affineAnims = gDummySpriteAffineAnimTable, \ +}, \ + OVERWORLD_PAL_FEMALE(__VA_ARGS__) + #else #define OVERWORLD(picTable, _size, shadow, _tracks, ...) #define OVERWORLD_SET_ANIM(picTable, _size, shadow, _tracks, _anims, ...) +#define OVERWORLD_FEMALE(picTable, _size, shadow, _tracks, ...) +#define OVERWORLD_PAL(...) +#define OVERWORLD_PAL_FEMALE(...) #endif //OW_POKEMON_OBJECT_EVENTS // Maximum value for a female Pokémon is 254 (MON_FEMALE) which is 100% female. diff --git a/src/data/pokemon/species_info/gen_1_families.h b/src/data/pokemon/species_info/gen_1_families.h index 6f5dfeb054..5a518e0122 100644 --- a/src/data/pokemon/species_info/gen_1_families.h +++ b/src/data/pokemon/species_info/gen_1_families.h @@ -198,6 +198,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Venusaur, gShinyOverworldPalette_Venusaur ) + OVERWORLD_FEMALE( + sPicTable_VenusaurF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sVenusaurLevelUpLearnset, .teachableLearnset = sVenusaurTeachableLearnset, .formSpeciesIdTable = sVenusaurFormSpeciesIdTable, @@ -263,7 +269,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #endif //P_MEGA_EVOLUTIONS #if P_GIGANTAMAX_FORMS - [SPECIES_VENUSAUR_GIGANTAMAX] = + [SPECIES_VENUSAUR_GMAX] = { .baseHP = 80, .baseAttack = 82, @@ -632,7 +638,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #endif //P_MEGA_EVOLUTIONS #if P_GIGANTAMAX_FORMS - [SPECIES_CHARIZARD_GIGANTAMAX] = + [SPECIES_CHARIZARD_GMAX] = { .baseHP = 78, .baseAttack = 84, @@ -946,7 +952,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #endif //P_MEGA_EVOLUTIONS #if P_GIGANTAMAX_FORMS - [SPECIES_BLASTOISE_GIGANTAMAX] = + [SPECIES_BLASTOISE_GMAX] = { .baseHP = 79, .baseAttack = 83, @@ -1205,6 +1211,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Butterfree, gShinyOverworldPalette_Butterfree ) + OVERWORLD_FEMALE( + sPicTable_ButterfreeF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sButterfreeLevelUpLearnset, .teachableLearnset = sButterfreeTeachableLearnset, .formSpeciesIdTable = sButterfreeFormSpeciesIdTable, @@ -1212,7 +1224,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_BUTTERFREE_GIGANTAMAX] = + [SPECIES_BUTTERFREE_GMAX] = { .baseHP = 60, .baseAttack = 45, @@ -1874,6 +1886,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Rattata, gShinyOverworldPalette_Rattata ) + OVERWORLD_FEMALE( + sPicTable_RattataF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sRattataLevelUpLearnset, .teachableLearnset = sRattataTeachableLearnset, .eggMoveLearnset = sRattataEggMoveLearnset, @@ -1942,13 +1960,19 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Raticate, gShinyOverworldPalette_Raticate ) + OVERWORLD_FEMALE( + sPicTable_RaticateF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sRaticateLevelUpLearnset, .teachableLearnset = sRaticateTeachableLearnset, .formSpeciesIdTable = sRaticateFormSpeciesIdTable, }, #if P_ALOLAN_FORMS - [SPECIES_RATTATA_ALOLAN] = + [SPECIES_RATTATA_ALOLA] = { .baseHP = 30, .baseAttack = 56, @@ -2011,11 +2035,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sRattataAlolanTeachableLearnset, .eggMoveLearnset = sRattataAlolanEggMoveLearnset, .formSpeciesIdTable = sRattataFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 20, SPECIES_RATICATE_ALOLAN}, - {EVO_NONE, 0, SPECIES_RATICATE_ALOLAN_TOTEM}), + .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 20, SPECIES_RATICATE_ALOLA}, + {EVO_NONE, 0, SPECIES_RATICATE_ALOLA_TOTEM}), }, - [SPECIES_RATICATE_ALOLAN] = + [SPECIES_RATICATE_ALOLA] = { .baseHP = 75, .baseAttack = 71, @@ -2075,7 +2099,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .formSpeciesIdTable = sRaticateFormSpeciesIdTable, }, - [SPECIES_RATICATE_ALOLAN_TOTEM] = + [SPECIES_RATICATE_ALOLA_TOTEM] = { .baseHP = 75, .baseAttack = 71, @@ -2596,13 +2620,19 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Pikachu, gShinyOverworldPalette_Pikachu ) + OVERWORLD_FEMALE( + sPicTable_PikachuF, + 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}), + {EVO_NONE, 0, SPECIES_RAICHU_ALOLA}), }, #if P_COSPLAY_PIKACHU_FORMS @@ -2812,7 +2842,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, - [SPECIES_PIKACHU_PH_D] = + [SPECIES_PIKACHU_PHD] = { .baseHP = 35, .baseAttack = 55, @@ -2917,7 +2947,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #endif //P_COSPLAY_PIKACHU_FORMS #if P_CAP_PIKACHU_FORMS - [SPECIES_PIKACHU_ORIGINAL_CAP] = + [SPECIES_PIKACHU_ORIGINAL] = { .baseHP = 35, .baseAttack = 55, @@ -2973,7 +3003,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, - [SPECIES_PIKACHU_HOENN_CAP] = + [SPECIES_PIKACHU_HOENN] = { .baseHP = 35, .baseAttack = 55, @@ -3028,7 +3058,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, - [SPECIES_PIKACHU_SINNOH_CAP] = + [SPECIES_PIKACHU_SINNOH] = { .baseHP = 35, .baseAttack = 55, @@ -3083,7 +3113,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, - [SPECIES_PIKACHU_UNOVA_CAP] = + [SPECIES_PIKACHU_UNOVA] = { .baseHP = 35, .baseAttack = 55, @@ -3138,7 +3168,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, - [SPECIES_PIKACHU_KALOS_CAP] = + [SPECIES_PIKACHU_KALOS] = { .baseHP = 35, .baseAttack = 55, @@ -3193,7 +3223,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, - [SPECIES_PIKACHU_ALOLA_CAP] = + [SPECIES_PIKACHU_ALOLA] = { .baseHP = 35, .baseAttack = 55, @@ -3304,7 +3334,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .formSpeciesIdTable = sPikachuFormSpeciesIdTable, }, - [SPECIES_PIKACHU_WORLD_CAP] = + [SPECIES_PIKACHU_WORLD] = { .baseHP = 35, .baseAttack = 55, @@ -3362,7 +3392,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #endif //P_CAP_PIKACHU_FORMS #if P_GIGANTAMAX_FORMS - [SPECIES_PIKACHU_GIGANTAMAX] = + [SPECIES_PIKACHU_GMAX] = { .baseHP = 35, .baseAttack = 55, @@ -3420,7 +3450,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #endif //P_GIGANTAMAX_FORMS - [SPECIES_PIKACHU_PARTNER] = + [SPECIES_PIKACHU_STARTER] = { .baseHP = 45, .baseAttack = 80, @@ -3561,13 +3591,19 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Raichu, gShinyOverworldPalette_Raichu ) + OVERWORLD_FEMALE( + sPicTable_RaichuF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sRaichuLevelUpLearnset, .teachableLearnset = sRaichuTeachableLearnset, .formSpeciesIdTable = sRaichuFormSpeciesIdTable, }, #if P_ALOLAN_FORMS - [SPECIES_RAICHU_ALOLAN] = + [SPECIES_RAICHU_ALOLA] = { .baseHP = 60, .baseAttack = 85, @@ -3763,7 +3799,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_ALOLAN_FORMS - [SPECIES_SANDSHREW_ALOLAN] = + [SPECIES_SANDSHREW_ALOLA] = { .baseHP = 50, .baseAttack = 75, @@ -3826,10 +3862,10 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sSandshrewAlolanTeachableLearnset, .eggMoveLearnset = sSandshrewAlolanEggMoveLearnset, .formSpeciesIdTable = sSandshrewFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_SANDSLASH_ALOLAN}), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_SANDSLASH_ALOLA}), }, - [SPECIES_SANDSLASH_ALOLAN] = + [SPECIES_SANDSLASH_ALOLA] = { .baseHP = 75, .baseAttack = 100, @@ -4664,7 +4700,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_ALOLAN_FORMS - [SPECIES_VULPIX_ALOLAN] = + [SPECIES_VULPIX_ALOLA] = { .baseHP = 38, .baseAttack = 41, @@ -4727,10 +4763,10 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sVulpixAlolanTeachableLearnset, .eggMoveLearnset = sVulpixAlolanEggMoveLearnset, .formSpeciesIdTable = sVulpixFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_NINETALES_ALOLAN}), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_NINETALES_ALOLA}), }, - [SPECIES_NINETALES_ALOLAN] = + [SPECIES_NINETALES_ALOLA] = { .baseHP = 73, .baseAttack = 67, @@ -5081,6 +5117,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Zubat, gShinyOverworldPalette_Zubat ) + OVERWORLD_FEMALE( + sPicTable_ZubatF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sZubatLevelUpLearnset, .teachableLearnset = sZubatTeachableLearnset, .eggMoveLearnset = sZubatEggMoveLearnset, @@ -5149,6 +5191,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Golbat, gShinyOverworldPalette_Golbat ) + OVERWORLD_FEMALE( + sPicTable_GolbatF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sGolbatLevelUpLearnset, .teachableLearnset = sGolbatTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_CROBAT}), @@ -5352,6 +5400,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Gloom, gShinyOverworldPalette_Gloom ) + OVERWORLD_FEMALE( + sPicTable_GloomF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sGloomLevelUpLearnset, .teachableLearnset = sGloomTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, @@ -5428,6 +5482,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Vileplume, gShinyOverworldPalette_Vileplume ) + OVERWORLD_FEMALE( + sPicTable_VileplumeF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sVileplumeLevelUpLearnset, .teachableLearnset = sVileplumeTeachableLearnset, }, @@ -5927,7 +5987,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_ALOLAN_FORMS - [SPECIES_DIGLETT_ALOLAN] = + [SPECIES_DIGLETT_ALOLA] = { .baseHP = 10, .baseAttack = 55, @@ -5990,10 +6050,10 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sDiglettAlolanTeachableLearnset, .eggMoveLearnset = sDiglettAlolanEggMoveLearnset, .formSpeciesIdTable = sDiglettFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_DUGTRIO_ALOLAN}), + .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_DUGTRIO_ALOLA}), }, - [SPECIES_DUGTRIO_ALOLAN] = + [SPECIES_DUGTRIO_ALOLA] = { .baseHP = 35, .baseAttack = DUGTRIO_ATTACK, @@ -6201,7 +6261,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_ALOLAN_FORMS - [SPECIES_MEOWTH_ALOLAN] = + [SPECIES_MEOWTH_ALOLA] = { .baseHP = 40, .baseAttack = 35, @@ -6264,10 +6324,10 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sMeowthAlolanTeachableLearnset, .eggMoveLearnset = sMeowthAlolanEggMoveLearnset, .formSpeciesIdTable = sMeowthFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_PERSIAN_ALOLAN}), + .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_PERSIAN_ALOLA}), }, - [SPECIES_PERSIAN_ALOLAN] = + [SPECIES_PERSIAN_ALOLA] = { .baseHP = 65, .baseAttack = 60, @@ -6333,7 +6393,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #endif //P_ALOLAN_FORMS #if P_GALARIAN_FORMS - [SPECIES_MEOWTH_GALARIAN] = + [SPECIES_MEOWTH_GALAR] = { .baseHP = 50, .baseAttack = 65, @@ -6460,7 +6520,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #endif //P_GALARIAN_FORMS #if P_GIGANTAMAX_FORMS - [SPECIES_MEOWTH_GIGANTAMAX] = + [SPECIES_MEOWTH_GMAX] = { .baseHP = 40, .baseAttack = 45, @@ -6975,7 +7035,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_HISUIAN_FORMS - [SPECIES_GROWLITHE_HISUIAN] = + [SPECIES_GROWLITHE_HISUI] = { .baseHP = 60, .baseAttack = 75, @@ -7036,10 +7096,10 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .levelUpLearnset = sGrowlitheHisuianLevelUpLearnset, .teachableLearnset = sGrowlitheHisuianTeachableLearnset, .formSpeciesIdTable = sGrowlitheFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE_HISUIAN}), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE_HISUI}), }, - [SPECIES_ARCANINE_HISUIAN] = + [SPECIES_ARCANINE_HISUI] = { .baseHP = 95, .baseAttack = 115, @@ -7378,6 +7438,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Politoed, gShinyOverworldPalette_Politoed ) + OVERWORLD_FEMALE( + sPicTable_PolitoedF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sPolitoedLevelUpLearnset, .teachableLearnset = sPolitoedTeachableLearnset, }, @@ -7518,6 +7584,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Kadabra, gShinyOverworldPalette_Kadabra ) + OVERWORLD_FEMALE( + sPicTable_KadabraF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE + ) .levelUpLearnset = sKadabraLevelUpLearnset, .teachableLearnset = sKadabraTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_ALAKAZAM}, @@ -7596,6 +7668,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Alakazam, gShinyOverworldPalette_Alakazam ) + OVERWORLD_FEMALE( + sPicTable_AlakazamF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE + ) .levelUpLearnset = sAlakazamLevelUpLearnset, .teachableLearnset = sAlakazamTeachableLearnset, .formSpeciesIdTable = sAlakazamFormSpeciesIdTable, @@ -7883,7 +7961,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_MACHAMP_GIGANTAMAX] = + [SPECIES_MACHAMP_GMAX] = { .baseHP = 90, .baseAttack = 130, @@ -8488,7 +8566,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_ALOLAN_FORMS - [SPECIES_GEODUDE_ALOLAN] = + [SPECIES_GEODUDE_ALOLA] = { .baseHP = 40, .baseAttack = 80, @@ -8552,10 +8630,10 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sGeodudeAlolanTeachableLearnset, .eggMoveLearnset = sGeodudeAlolanEggMoveLearnset, .formSpeciesIdTable = sGeodudeFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_GRAVELER_ALOLAN}), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_GRAVELER_ALOLA}), }, - [SPECIES_GRAVELER_ALOLAN] = + [SPECIES_GRAVELER_ALOLA] = { .baseHP = 55, .baseAttack = 95, @@ -8617,11 +8695,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .levelUpLearnset = sGravelerAlolanLevelUpLearnset, .teachableLearnset = sGravelerAlolanTeachableLearnset, .formSpeciesIdTable = sGravelerFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOLEM_ALOLAN}, - {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOLEM_ALOLAN}), + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOLEM_ALOLA}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOLEM_ALOLA}), }, - [SPECIES_GOLEM_ALOLAN] = + [SPECIES_GOLEM_ALOLA] = { .baseHP = 80, .baseAttack = GOLEM_ATTACK, @@ -8816,7 +8894,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_GALARIAN_FORMS - [SPECIES_PONYTA_GALARIAN] = + [SPECIES_PONYTA_GALAR] = { .baseHP = 50, .baseAttack = 85, @@ -8878,10 +8956,10 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sPonytaGalarianTeachableLearnset, .eggMoveLearnset = sPonytaGalarianEggMoveLearnset, .formSpeciesIdTable = sPonytaFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_RAPIDASH_GALARIAN}), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_RAPIDASH_GALAR}), }, - [SPECIES_RAPIDASH_GALARIAN] = + [SPECIES_RAPIDASH_GALAR] = { .baseHP = 65, .baseAttack = 100, @@ -9203,7 +9281,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #endif //P_MEGA_EVOLUTIONS #if P_GALARIAN_FORMS - [SPECIES_SLOWPOKE_GALARIAN] = + [SPECIES_SLOWPOKE_GALAR] = { .baseHP = 90, .baseAttack = 65, @@ -9265,11 +9343,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sSlowpokeGalarianTeachableLearnset, .eggMoveLearnset = sSlowpokeGalarianEggMoveLearnset, .formSpeciesIdTable = sSlowpokeFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_ITEM, ITEM_GALARICA_CUFF, SPECIES_SLOWBRO_GALARIAN}, - {EVO_ITEM, ITEM_GALARICA_WREATH, SPECIES_SLOWKING_GALARIAN}), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_GALARICA_CUFF, SPECIES_SLOWBRO_GALAR}, + {EVO_ITEM, ITEM_GALARICA_WREATH, SPECIES_SLOWKING_GALAR}), }, - [SPECIES_SLOWBRO_GALARIAN] = + [SPECIES_SLOWBRO_GALAR] = { .baseHP = 95, .baseAttack = 100, @@ -9335,7 +9413,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_GEN_2_CROSS_EVOS - [SPECIES_SLOWKING_GALARIAN] = + [SPECIES_SLOWKING_GALAR] = { .baseHP = 95, .baseAttack = 65, @@ -9680,7 +9758,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_GALARIAN_FORMS - [SPECIES_FARFETCHD_GALARIAN] = + [SPECIES_FARFETCHD_GALAR] = { .baseHP = 52, .baseAttack = FARFETCHD_ATTACK + 5, @@ -9873,6 +9951,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Doduo, gShinyOverworldPalette_Doduo ) + OVERWORLD_FEMALE( + sPicTable_DoduoF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sDoduoLevelUpLearnset, .teachableLearnset = sDoduoTeachableLearnset, .eggMoveLearnset = sDoduoEggMoveLearnset, @@ -9947,6 +10031,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Dodrio, gShinyOverworldPalette_Dodrio ) + OVERWORLD_FEMALE( + sPicTable_DodrioF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sDodrioLevelUpLearnset, .teachableLearnset = sDodrioTeachableLearnset, }, @@ -10218,7 +10308,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_ALOLAN_FORMS - [SPECIES_GRIMER_ALOLAN] = + [SPECIES_GRIMER_ALOLA] = { .baseHP = 80, .baseAttack = 80, @@ -10281,10 +10371,10 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sGrimerAlolanTeachableLearnset, .eggMoveLearnset = sGrimerAlolanEggMoveLearnset, .formSpeciesIdTable = sGrimerFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_MUK_ALOLAN}), + .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_MUK_ALOLA}), }, - [SPECIES_MUK_ALOLAN] = + [SPECIES_MUK_ALOLA] = { .baseHP = 105, .baseAttack = 105, @@ -10755,7 +10845,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #endif //P_MEGA_EVOLUTIONS #if P_GIGANTAMAX_FORMS - [SPECIES_GENGAR_GIGANTAMAX] = + [SPECIES_GENGAR_GMAX] = { .baseHP = 60, .baseAttack = 65, @@ -10942,6 +11032,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Steelix, gShinyOverworldPalette_Steelix ) + OVERWORLD_FEMALE( + sPicTable_SteelixF, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_SLITHER + ) .levelUpLearnset = sSteelixLevelUpLearnset, .teachableLearnset = sSteelixTeachableLearnset, .formSpeciesIdTable = sSteelixFormSpeciesIdTable, @@ -11144,6 +11240,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Hypno, gShinyOverworldPalette_Hypno ) + OVERWORLD_FEMALE( + sPicTable_HypnoF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sHypnoLevelUpLearnset, .teachableLearnset = sHypnoTeachableLearnset, }, @@ -11279,7 +11381,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_KINGLER_GIGANTAMAX] = + [SPECIES_KINGLER_GMAX] = { .baseHP = 55, .baseAttack = 130, @@ -11473,7 +11575,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_HISUIAN_FORMS - [SPECIES_VOLTORB_HISUIAN] = + [SPECIES_VOLTORB_HISUI] = { .baseHP = 40, .baseAttack = 30, @@ -11534,10 +11636,10 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .levelUpLearnset = sVoltorbHisuianLevelUpLearnset, .teachableLearnset = sVoltorbHisuianTeachableLearnset, .formSpeciesIdTable = sVoltorbFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_ELECTRODE_HISUIAN}), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_ELECTRODE_HISUI}), }, - [SPECIES_ELECTRODE_HISUIAN] = + [SPECIES_ELECTRODE_HISUI] = { .baseHP = 60, .baseAttack = 50, @@ -11665,7 +11767,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sExeggcuteTeachableLearnset, .eggMoveLearnset = sExeggcuteEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}, - {EVO_NONE, 0, SPECIES_EXEGGUTOR_ALOLAN}), + {EVO_NONE, 0, SPECIES_EXEGGUTOR_ALOLA}), }, #if P_UPDATED_EXP_YIELDS >= GEN_7 @@ -11741,7 +11843,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_ALOLAN_FORMS - [SPECIES_EXEGGUTOR_ALOLAN] = + [SPECIES_EXEGGUTOR_ALOLA] = { .baseHP = 95, .baseAttack = 105, @@ -11870,8 +11972,8 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sCuboneTeachableLearnset, .eggMoveLearnset = sCuboneEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_MAROWAK}, - {EVO_NONE, 0, SPECIES_MAROWAK_ALOLAN}, - {EVO_NONE, 0, SPECIES_MAROWAK_ALOLAN_TOTEM}), + {EVO_NONE, 0, SPECIES_MAROWAK_ALOLA}, + {EVO_NONE, 0, SPECIES_MAROWAK_ALOLA_TOTEM}), }, [SPECIES_MAROWAK] = @@ -11938,7 +12040,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_ALOLAN_FORMS - [SPECIES_MAROWAK_ALOLAN] = + [SPECIES_MAROWAK_ALOLA] = { .baseHP = 60, .baseAttack = 80, @@ -11998,7 +12100,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .formSpeciesIdTable = sMarowakFormSpeciesIdTable, }, - [SPECIES_MAROWAK_ALOLAN_TOTEM] = + [SPECIES_MAROWAK_ALOLA_TOTEM] = { .baseHP = 60, .baseAttack = 80, @@ -12530,7 +12632,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sKoffingTeachableLearnset, .eggMoveLearnset = sKoffingEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_WEEZING}, - {EVO_NONE, 0, SPECIES_WEEZING_GALARIAN}), + {EVO_NONE, 0, SPECIES_WEEZING_GALAR}), }, [SPECIES_WEEZING] = @@ -12603,7 +12705,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_GALARIAN_FORMS - [SPECIES_WEEZING_GALARIAN] = + [SPECIES_WEEZING_GALAR] = { .baseHP = 65, .baseAttack = 90, @@ -12733,6 +12835,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Rhyhorn, gShinyOverworldPalette_Rhyhorn ) + OVERWORLD_FEMALE( + sPicTable_RhyhornF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sRhyhornLevelUpLearnset, .teachableLearnset = sRhyhornTeachableLearnset, .eggMoveLearnset = sRhyhornEggMoveLearnset, @@ -12800,6 +12908,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Rhydon, gShinyOverworldPalette_Rhydon ) + OVERWORLD_FEMALE( + sPicTable_RhydonF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sRhydonLevelUpLearnset, .teachableLearnset = sRhydonTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}, @@ -12874,6 +12988,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Rhyperior, gShinyOverworldPalette_Rhyperior ) + OVERWORLD_FEMALE( + sPicTable_RhyperiorF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sRhyperiorLevelUpLearnset, .teachableLearnset = sRhyperiorTeachableLearnset, }, @@ -13205,6 +13325,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Tangrowth, gShinyOverworldPalette_Tangrowth ) + OVERWORLD_FEMALE( + sPicTable_TangrowthF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sTangrowthLevelUpLearnset, .teachableLearnset = sTangrowthTeachableLearnset, }, @@ -13614,6 +13740,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Goldeen, gShinyOverworldPalette_Goldeen ) + OVERWORLD_FEMALE( + sPicTable_GoldeenF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT + ) .levelUpLearnset = sGoldeenLevelUpLearnset, .teachableLearnset = sGoldeenTeachableLearnset, .eggMoveLearnset = sGoldeenEggMoveLearnset, @@ -13682,6 +13814,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Seaking, gShinyOverworldPalette_Seaking ) + OVERWORLD_FEMALE( + sPicTable_SeakingF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT + ) .levelUpLearnset = sSeakingLevelUpLearnset, .teachableLearnset = sSeakingTeachableLearnset, }, @@ -13888,7 +14026,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sMimeJrTeachableLearnset, .eggMoveLearnset = sMimeJrEggMoveLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_MIMIC, SPECIES_MR_MIME}, - {EVO_NONE, 0, SPECIES_MR_MIME_GALARIAN}), + {EVO_NONE, 0, SPECIES_MR_MIME_GALAR}), }, #endif //P_GEN_4_CROSS_EVOS @@ -13960,7 +14098,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_GALARIAN_FORMS - [SPECIES_MR_MIME_GALARIAN] = + [SPECIES_MR_MIME_GALAR] = { .baseHP = 50, .baseAttack = 65, @@ -14152,6 +14290,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Scyther, gShinyOverworldPalette_Scyther ) + OVERWORLD_FEMALE( + sPicTable_ScytherF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sScytherLevelUpLearnset, .teachableLearnset = sScytherTeachableLearnset, .eggMoveLearnset = sScytherEggMoveLearnset, @@ -14225,6 +14369,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Scizor, gShinyOverworldPalette_Scizor ) + OVERWORLD_FEMALE( + sPicTable_ScizorF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sScizorLevelUpLearnset, .teachableLearnset = sScizorTeachableLearnset, .formSpeciesIdTable = sScizorFormSpeciesIdTable, @@ -15099,7 +15249,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_PALDEAN_FORMS - [SPECIES_TAUROS_PALDEAN_COMBAT_BREED] = + [SPECIES_TAUROS_PALDEA_COMBAT] = { .baseHP = 75, .baseAttack = 110, @@ -15163,7 +15313,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .formSpeciesIdTable = sTaurosFormSpeciesIdTable, }, - [SPECIES_TAUROS_PALDEAN_BLAZE_BREED] = + [SPECIES_TAUROS_PALDEA_BLAZE] = { .baseHP = 75, .baseAttack = 110, @@ -15227,7 +15377,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .formSpeciesIdTable = sTaurosFormSpeciesIdTable, }, - [SPECIES_TAUROS_PALDEAN_AQUA_BREED] = + [SPECIES_TAUROS_PALDEA_AQUA] = { .baseHP = 75, .baseAttack = 110, @@ -15355,6 +15505,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Magikarp, gShinyOverworldPalette_Magikarp ) + OVERWORLD_FEMALE( + sPicTable_MagikarpF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT + ) .tmIlliterate = TRUE, .levelUpLearnset = sMagikarpLevelUpLearnset, .teachableLearnset = sMagikarpTeachableLearnset, @@ -15422,6 +15578,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Gyarados, gShinyOverworldPalette_Gyarados ) + OVERWORLD_FEMALE( + sPicTable_GyaradosF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER + ) .levelUpLearnset = sGyaradosLevelUpLearnset, .teachableLearnset = sGyaradosTeachableLearnset, .formSpeciesIdTable = sGyaradosFormSpeciesIdTable, @@ -15556,7 +15718,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_LAPRAS_GIGANTAMAX] = + [SPECIES_LAPRAS_GMAX] = { .baseHP = 130, .baseAttack = 85, @@ -15745,6 +15907,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = gOverworldPalette_Eevee, gShinyOverworldPalette_Eevee ) + OVERWORLD_FEMALE( + sPicTable_EeveeF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sEeveeLevelUpLearnset, .teachableLearnset = sEeveeTeachableLearnset, .eggMoveLearnset = sEeveeEggMoveLearnset, @@ -15763,7 +15931,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_EEVEE_GIGANTAMAX] = + [SPECIES_EEVEE_GMAX] = { .baseHP = 55, .baseAttack = 55, @@ -15821,7 +15989,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #endif //P_GIGANTAMAX_FORMS - [SPECIES_EEVEE_PARTNER] = + [SPECIES_EEVEE_STARTER] = { .baseHP = 65, .baseAttack = 75, @@ -17126,7 +17294,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_SNORLAX_GIGANTAMAX] = + [SPECIES_SNORLAX_GMAX] = { .baseHP = 160, .baseAttack = 110, @@ -17259,7 +17427,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_GALARIAN_FORMS - [SPECIES_ARTICUNO_GALARIAN] = + [SPECIES_ARTICUNO_GALAR] = { .baseHP = 90, .baseAttack = 85, @@ -17404,7 +17572,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_GALARIAN_FORMS - [SPECIES_ZAPDOS_GALARIAN] = + [SPECIES_ZAPDOS_GALAR] = { .baseHP = 90, .baseAttack = 125, @@ -17543,7 +17711,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_GALARIAN_FORMS - [SPECIES_MOLTRES_GALARIAN] = + [SPECIES_MOLTRES_GALAR] = { .baseHP = 90, .baseAttack = 85, diff --git a/src/data/pokemon/species_info/gen_2_families.h b/src/data/pokemon/species_info/gen_2_families.h index f59e8a5417..ae5a69439a 100644 --- a/src/data/pokemon/species_info/gen_2_families.h +++ b/src/data/pokemon/species_info/gen_2_families.h @@ -198,6 +198,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Meganium, gShinyOverworldPalette_Meganium ) + OVERWORLD_FEMALE( + sPicTable_MeganiumF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sMeganiumLevelUpLearnset, .teachableLearnset = sMeganiumTeachableLearnset, }, @@ -328,7 +334,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .levelUpLearnset = sQuilavaLevelUpLearnset, .teachableLearnset = sQuilavaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_TYPHLOSION}, - {EVO_NONE, 0, SPECIES_TYPHLOSION_HISUIAN}), + {EVO_NONE, 0, SPECIES_TYPHLOSION_HISUI}), }, #if P_UPDATED_EXP_YIELDS >= GEN_8 @@ -403,7 +409,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = }, #if P_HISUIAN_FORMS - [SPECIES_TYPHLOSION_HISUIAN] = + [SPECIES_TYPHLOSION_HISUI] = { .baseHP = 73, .baseAttack = 84, @@ -986,6 +992,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Ledyba, gShinyOverworldPalette_Ledyba ) + OVERWORLD_FEMALE( + sPicTable_LedybaF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_BUG + ) .levelUpLearnset = sLedybaLevelUpLearnset, .teachableLearnset = sLedybaTeachableLearnset, .eggMoveLearnset = sLedybaEggMoveLearnset, @@ -1054,6 +1066,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Ledian, gShinyOverworldPalette_Ledian ) + OVERWORLD_FEMALE( + sPicTable_LedianF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sLedianLevelUpLearnset, .teachableLearnset = sLedianTeachableLearnset, }, @@ -1645,6 +1663,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Xatu, gShinyOverworldPalette_Xatu ) + OVERWORLD_FEMALE( + sPicTable_XatuF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sXatuLevelUpLearnset, .teachableLearnset = sXatuTeachableLearnset, }, @@ -2248,6 +2272,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Sudowoodo, gShinyOverworldPalette_Sudowoodo ) + OVERWORLD_FEMALE( + sPicTable_SudowoodoF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sSudowoodoLevelUpLearnset, .teachableLearnset = sSudowoodoTeachableLearnset, .eggMoveLearnset = sSudowoodoEggMoveLearnset, @@ -2527,6 +2557,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Aipom, gShinyOverworldPalette_Aipom ) + OVERWORLD_FEMALE( + sPicTable_AipomF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sAipomLevelUpLearnset, .teachableLearnset = sAipomTeachableLearnset, .eggMoveLearnset = sAipomEggMoveLearnset, @@ -2595,6 +2631,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Ambipom, gShinyOverworldPalette_Ambipom ) + OVERWORLD_FEMALE( + sPicTable_AmbipomF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sAmbipomLevelUpLearnset, .teachableLearnset = sAmbipomTeachableLearnset, }, @@ -2929,6 +2971,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Wooper, gShinyOverworldPalette_Wooper ) + OVERWORLD_FEMALE( + sPicTable_WooperF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sWooperLevelUpLearnset, .teachableLearnset = sWooperTeachableLearnset, .eggMoveLearnset = sWooperEggMoveLearnset, @@ -2997,12 +3045,18 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Quagsire, gShinyOverworldPalette_Quagsire ) + OVERWORLD_FEMALE( + sPicTable_QuagsireF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sQuagsireLevelUpLearnset, .teachableLearnset = sQuagsireTeachableLearnset, }, #if P_PALDEAN_FORMS - [SPECIES_WOOPER_PALDEAN] = + [SPECIES_WOOPER_PALDEA] = { .baseHP = 55, .baseAttack = 45, @@ -3197,6 +3251,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Murkrow, gShinyOverworldPalette_Murkrow ) + OVERWORLD_FEMALE( + sPicTable_MurkrowF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sMurkrowLevelUpLearnset, .teachableLearnset = sMurkrowTeachableLearnset, .eggMoveLearnset = sMurkrowEggMoveLearnset, @@ -3462,34 +3522,34 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .formSpeciesIdTable = sUnownFormSpeciesIdTable, \ } - [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 ), + [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_EXCLAMATION] = UNOWN_MISC_INFO(ExclamationMark, FALSE, 24, 40, 24, 56, 6 ), + [SPECIES_UNOWN_QUESTION] = UNOWN_MISC_INFO(QuestionMark, TRUE, 24, 40, 32, 56, 6 ), #endif //P_FAMILY_UNOWN #if P_FAMILY_WOBBUFFET @@ -3624,6 +3684,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Wobbuffet, gShinyOverworldPalette_Wobbuffet ) + OVERWORLD_FEMALE( + sPicTable_WobbuffetF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .tmIlliterate = TRUE, .levelUpLearnset = sWobbuffetLevelUpLearnset, .teachableLearnset = sWobbuffetTeachableLearnset, @@ -3692,6 +3758,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Girafarig, gShinyOverworldPalette_Girafarig ) + OVERWORLD_FEMALE( + sPicTable_GirafarigF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sGirafarigLevelUpLearnset, .teachableLearnset = sGirafarigTeachableLearnset, .eggMoveLearnset = sGirafarigEggMoveLearnset, @@ -4150,6 +4222,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Gligar, gShinyOverworldPalette_Gligar ) + OVERWORLD_FEMALE( + sPicTable_GligarF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE + ) .levelUpLearnset = sGligarLevelUpLearnset, .teachableLearnset = sGligarTeachableLearnset, .eggMoveLearnset = sGligarEggMoveLearnset, @@ -4436,7 +4514,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = }, #if P_HISUIAN_FORMS - [SPECIES_QWILFISH_HISUIAN] = + [SPECIES_QWILFISH_HISUI] = { .baseHP = 65, .baseAttack = 95, @@ -4698,6 +4776,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Heracross, gShinyOverworldPalette_Heracross ) + OVERWORLD_FEMALE( + sPicTable_HeracrossF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sHeracrossLevelUpLearnset, .teachableLearnset = sHeracrossTeachableLearnset, .eggMoveLearnset = sHeracrossEggMoveLearnset, @@ -4829,6 +4913,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Sneasel, gShinyOverworldPalette_Sneasel ) + OVERWORLD_FEMALE( + sPicTable_SneaselF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sSneaselLevelUpLearnset, .teachableLearnset = sSneaselTeachableLearnset, .eggMoveLearnset = sSneaselEggMoveLearnset, @@ -4901,13 +4991,19 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Weavile, gShinyOverworldPalette_Weavile ) + OVERWORLD_FEMALE( + sPicTable_WeavileF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sWeavileLevelUpLearnset, .teachableLearnset = sWeavileTeachableLearnset, }, #endif //P_GEN_4_CROSS_EVOS #if P_HISUIAN_FORMS - [SPECIES_SNEASEL_HISUIAN] = + [SPECIES_SNEASEL_HISUI] = { .baseHP = 55, .baseAttack = 95, @@ -4970,6 +5066,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_SneaselHisuian, gShinyOverworldPalette_SneaselHisuian ) + OVERWORLD_FEMALE( + sPicTable_SneaselHisuianF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .isHisuianForm = TRUE, .levelUpLearnset = sSneaselHisuianLevelUpLearnset, .teachableLearnset = sSneaselHisuianTeachableLearnset, @@ -5176,6 +5278,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Ursaring, gShinyOverworldPalette_Ursaring ) + OVERWORLD_FEMALE( + sPicTable_UrsaringF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sUrsaringLevelUpLearnset, .teachableLearnset = sUrsaringTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM_NIGHT, ITEM_PEAT_BLOCK, SPECIES_URSALUNA}, @@ -5567,6 +5675,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Piloswine, gShinyOverworldPalette_Piloswine ) + OVERWORLD_FEMALE( + sPicTable_PiloswineF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sPiloswineLevelUpLearnset, .teachableLearnset = sPiloswineTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_MAMOSWINE}), @@ -5638,6 +5752,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Mamoswine, gShinyOverworldPalette_Mamoswine ) + OVERWORLD_FEMALE( + sPicTable_MamoswineF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sMamoswineLevelUpLearnset, .teachableLearnset = sMamoswineTeachableLearnset, }, @@ -5721,7 +5841,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = }, #if P_GALARIAN_FORMS - [SPECIES_CORSOLA_GALARIAN] = + [SPECIES_CORSOLA_GALAR] = { .baseHP = CORSOLA_HP - 5, .baseAttack = 55, @@ -5984,6 +6104,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Octillery, gShinyOverworldPalette_Octillery ) + OVERWORLD_FEMALE( + sPicTable_OctilleryF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER + ) .levelUpLearnset = sOctilleryLevelUpLearnset, .teachableLearnset = sOctilleryTeachableLearnset, }, @@ -6379,6 +6505,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Houndoom, gShinyOverworldPalette_Houndoom ) + OVERWORLD_FEMALE( + sPicTable_HoundoomF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sHoundoomLevelUpLearnset, .teachableLearnset = sHoundoomTeachableLearnset, .formSpeciesIdTable = sHoundoomFormSpeciesIdTable, @@ -6569,6 +6701,12 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = gOverworldPalette_Donphan, gShinyOverworldPalette_Donphan ) + OVERWORLD_FEMALE( + sPicTable_DonphanF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sDonphanLevelUpLearnset, .teachableLearnset = sDonphanTeachableLearnset, }, diff --git a/src/data/pokemon/species_info/gen_3_families.h b/src/data/pokemon/species_info/gen_3_families.h index e9d566096a..002e0d460c 100644 --- a/src/data/pokemon/species_info/gen_3_families.h +++ b/src/data/pokemon/species_info/gen_3_families.h @@ -317,6 +317,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Torchic, gShinyOverworldPalette_Torchic ) + OVERWORLD_FEMALE( + sPicTable_TorchicF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sTorchicLevelUpLearnset, .teachableLearnset = sTorchicTeachableLearnset, .eggMoveLearnset = sTorchicEggMoveLearnset, @@ -385,6 +391,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Combusken, gShinyOverworldPalette_Combusken ) + OVERWORLD_FEMALE( + sPicTable_CombuskenF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sCombuskenLevelUpLearnset, .teachableLearnset = sCombuskenTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_BLAZIKEN}), @@ -457,6 +469,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Blaziken, gShinyOverworldPalette_Blaziken ) + OVERWORLD_FEMALE( + sPicTable_BlazikenF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sBlazikenLevelUpLearnset, .teachableLearnset = sBlazikenTeachableLearnset, .formSpeciesIdTable = sBlazikenFormSpeciesIdTable, @@ -1064,7 +1082,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = }, #if P_GALARIAN_FORMS - [SPECIES_ZIGZAGOON_GALARIAN] = + [SPECIES_ZIGZAGOON_GALAR] = { .baseHP = 38, .baseAttack = 30, @@ -1126,10 +1144,10 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .teachableLearnset = sZigzagoonGalarianTeachableLearnset, .eggMoveLearnset = sZigzagoonGalarianEggMoveLearnset, .formSpeciesIdTable = sZigzagoonFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LINOONE_GALARIAN}), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LINOONE_GALAR}), }, - [SPECIES_LINOONE_GALARIAN] = + [SPECIES_LINOONE_GALAR] = { .baseHP = 78, .baseAttack = 70, @@ -1463,6 +1481,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Beautifly, gShinyOverworldPalette_Beautifly ) + OVERWORLD_FEMALE( + sPicTable_BeautiflyF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE + ) .levelUpLearnset = sBeautiflyLevelUpLearnset, .teachableLearnset = sBeautiflyTeachableLearnset, }, @@ -1609,6 +1633,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Dustox, gShinyOverworldPalette_Dustox ) + OVERWORLD_FEMALE( + sPicTable_DustoxF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE + ) .levelUpLearnset = sDustoxLevelUpLearnset, .teachableLearnset = sDustoxTeachableLearnset, }, @@ -1810,6 +1840,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Ludicolo, gShinyOverworldPalette_Ludicolo ) + OVERWORLD_FEMALE( + sPicTable_LudicoloF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sLudicoloLevelUpLearnset, .teachableLearnset = sLudicoloTeachableLearnset, }, @@ -1942,6 +1978,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Nuzleaf, gShinyOverworldPalette_Nuzleaf ) + OVERWORLD_FEMALE( + sPicTable_NuzleafF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sNuzleafLevelUpLearnset, .teachableLearnset = sNuzleafTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}), @@ -2019,6 +2061,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Shiftry, gShinyOverworldPalette_Shiftry ) + OVERWORLD_FEMALE( + sPicTable_ShiftryF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sShiftryLevelUpLearnset, .teachableLearnset = sShiftryTeachableLearnset, }, @@ -4538,6 +4586,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Meditite, gShinyOverworldPalette_Meditite ) + OVERWORLD_FEMALE( + sPicTable_MedititeF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sMedititeLevelUpLearnset, .teachableLearnset = sMedititeTeachableLearnset, .eggMoveLearnset = sMedititeEggMoveLearnset, @@ -4605,6 +4659,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Medicham, gShinyOverworldPalette_Medicham ) + OVERWORLD_FEMALE( + sPicTable_MedichamF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sMedichamLevelUpLearnset, .teachableLearnset = sMedichamTeachableLearnset, .formSpeciesIdTable = sMedichamFormSpeciesIdTable, @@ -5268,6 +5328,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Roselia, gShinyOverworldPalette_Roselia ) + OVERWORLD_FEMALE( + sPicTable_RoseliaF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sRoseliaLevelUpLearnset, .teachableLearnset = sRoseliaTeachableLearnset, .eggMoveLearnset = sRoseliaEggMoveLearnset, @@ -5346,6 +5412,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Roserade, gShinyOverworldPalette_Roserade ) + OVERWORLD_FEMALE( + sPicTable_RoseradeF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sRoseradeLevelUpLearnset, .teachableLearnset = sRoseradeTeachableLearnset, }, @@ -5416,6 +5488,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Gulpin, gShinyOverworldPalette_Gulpin ) + OVERWORLD_FEMALE( + sPicTable_GulpinF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT + ) .levelUpLearnset = sGulpinLevelUpLearnset, .teachableLearnset = sGulpinTeachableLearnset, .eggMoveLearnset = sGulpinEggMoveLearnset, @@ -5485,6 +5563,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Swalot, gShinyOverworldPalette_Swalot ) + OVERWORLD_FEMALE( + sPicTable_SwalotF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER + ) .levelUpLearnset = sSwalotLevelUpLearnset, .teachableLearnset = sSwalotTeachableLearnset, }, @@ -5873,6 +5957,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Numel, gShinyOverworldPalette_Numel ) + OVERWORLD_FEMALE( + sPicTable_NumelF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sNumelLevelUpLearnset, .teachableLearnset = sNumelTeachableLearnset, .eggMoveLearnset = sNumelEggMoveLearnset, @@ -5945,6 +6035,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Camerupt, gShinyOverworldPalette_Camerupt ) + OVERWORLD_FEMALE( + sPicTable_CameruptF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sCameruptLevelUpLearnset, .teachableLearnset = sCameruptTeachableLearnset, .formSpeciesIdTable = sCameruptFormSpeciesIdTable, @@ -6612,6 +6708,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Cacturne, gShinyOverworldPalette_Cacturne ) + OVERWORLD_FEMALE( + sPicTable_CacturneF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sCacturneLevelUpLearnset, .teachableLearnset = sCacturneTeachableLearnset, }, @@ -7885,6 +7987,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Milotic, gShinyOverworldPalette_Milotic ) + OVERWORLD_FEMALE( + sPicTable_MiloticF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER + ) .levelUpLearnset = sMiloticLevelUpLearnset, .teachableLearnset = sMiloticTeachableLearnset, }, @@ -9712,6 +9820,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = gOverworldPalette_Relicanth, gShinyOverworldPalette_Relicanth ) + OVERWORLD_FEMALE( + sPicTable_RelicanthF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE + ) .levelUpLearnset = sRelicanthLevelUpLearnset, .teachableLearnset = sRelicanthTeachableLearnset, .eggMoveLearnset = sRelicanthEggMoveLearnset, diff --git a/src/data/pokemon/species_info/gen_4_families.h b/src/data/pokemon/species_info/gen_4_families.h index da7eaee7e9..fd7b8c0f70 100644 --- a/src/data/pokemon/species_info/gen_4_families.h +++ b/src/data/pokemon/species_info/gen_4_families.h @@ -671,6 +671,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Starly, gShinyOverworldPalette_Starly ) + OVERWORLD_FEMALE( + sPicTable_StarlyF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sStarlyLevelUpLearnset, .teachableLearnset = sStarlyTeachableLearnset, .eggMoveLearnset = sStarlyEggMoveLearnset, @@ -738,6 +744,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Staravia, gShinyOverworldPalette_Staravia ) + OVERWORLD_FEMALE( + sPicTable_StaraviaF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sStaraviaLevelUpLearnset, .teachableLearnset = sStaraviaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_STARAPTOR}), @@ -810,6 +822,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Staraptor, gShinyOverworldPalette_Staraptor ) + OVERWORLD_FEMALE( + sPicTable_StaraptorF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sStaraptorLevelUpLearnset, .teachableLearnset = sStaraptorTeachableLearnset, }, @@ -877,6 +895,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Bidoof, gShinyOverworldPalette_Bidoof ) + OVERWORLD_FEMALE( + sPicTable_BidoofF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sBidoofLevelUpLearnset, .teachableLearnset = sBidoofTeachableLearnset, .eggMoveLearnset = sBidoofEggMoveLearnset, @@ -942,6 +966,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Bibarel, gShinyOverworldPalette_Bibarel ) + OVERWORLD_FEMALE( + sPicTable_BibarelF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sBibarelLevelUpLearnset, .teachableLearnset = sBibarelTeachableLearnset, }, @@ -1010,6 +1040,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Kricketot, gShinyOverworldPalette_Kricketot ) + OVERWORLD_FEMALE( + sPicTable_KricketotF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .tmIlliterate = TRUE, .levelUpLearnset = sKricketotLevelUpLearnset, .teachableLearnset = sKricketotTeachableLearnset, @@ -1078,6 +1114,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Kricketune, gShinyOverworldPalette_Kricketune ) + OVERWORLD_FEMALE( + sPicTable_KricketuneF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sKricketuneLevelUpLearnset, .teachableLearnset = sKricketuneTeachableLearnset, }, @@ -1145,6 +1187,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Shinx, gShinyOverworldPalette_Shinx ) + OVERWORLD_FEMALE( + sPicTable_ShinxF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sShinxLevelUpLearnset, .teachableLearnset = sShinxTeachableLearnset, .eggMoveLearnset = sShinxEggMoveLearnset, @@ -1212,6 +1260,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Luxio, gShinyOverworldPalette_Luxio ) + OVERWORLD_FEMALE( + sPicTable_LuxioF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sLuxioLevelUpLearnset, .teachableLearnset = sLuxioTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_LUXRAY}), @@ -1284,6 +1338,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Luxray, gShinyOverworldPalette_Luxray ) + OVERWORLD_FEMALE( + sPicTable_LuxrayF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sLuxrayLevelUpLearnset, .teachableLearnset = sLuxrayTeachableLearnset, }, @@ -1542,7 +1602,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = #endif //P_FAMILY_SHIELDON #if P_FAMILY_BURMY - [SPECIES_BURMY_PLANT_CLOAK] = + [SPECIES_BURMY_PLANT] = { .baseHP = 40, .baseAttack = 29, @@ -1605,11 +1665,11 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .teachableLearnset = sBurmyTeachableLearnset, .formSpeciesIdTable = sBurmyFormSpeciesIdTable, .formChangeTable = sBurmyFormChangeTable, - .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_PLANT_CLOAK}, - {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM_PLANT_CLOAK}), + .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_PLANT}, + {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM_PLANT}), }, - [SPECIES_BURMY_SANDY_CLOAK] = + [SPECIES_BURMY_SANDY] = { .baseHP = 40, .baseAttack = 29, @@ -1672,11 +1732,11 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .teachableLearnset = sBurmyTeachableLearnset, .formSpeciesIdTable = sBurmyFormSpeciesIdTable, .formChangeTable = sBurmyFormChangeTable, - .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_SANDY_CLOAK}, - {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM_SANDY_CLOAK}), + .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_SANDY}, + {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM_SANDY}), }, - [SPECIES_BURMY_TRASH_CLOAK] = + [SPECIES_BURMY_TRASH] = { .baseHP = 40, .baseAttack = 29, @@ -1739,11 +1799,11 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .teachableLearnset = sBurmyTeachableLearnset, .formSpeciesIdTable = sBurmyFormSpeciesIdTable, .formChangeTable = sBurmyFormChangeTable, - .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_TRASH_CLOAK}, - {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM_TRASH_CLOAK}), + .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_TRASH}, + {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM_TRASH}), }, - [SPECIES_WORMADAM_PLANT_CLOAK] = + [SPECIES_WORMADAM_PLANT] = { .baseHP = 60, .baseAttack = 59, @@ -1807,7 +1867,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .formSpeciesIdTable = sWormadamFormSpeciesIdTable, }, - [SPECIES_WORMADAM_SANDY_CLOAK] = + [SPECIES_WORMADAM_SANDY] = { .baseHP = 60, .baseAttack = 79, @@ -1871,7 +1931,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .formSpeciesIdTable = sWormadamFormSpeciesIdTable, }, - [SPECIES_WORMADAM_TRASH_CLOAK] = + [SPECIES_WORMADAM_TRASH] = { .baseHP = 60, .baseAttack = 69, @@ -1997,9 +2057,9 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .formSpeciesIdTable = sMothimFormSpeciesIdTable, \ } - [SPECIES_MOTHIM_PLANT_CLOAK] = MOTHIM_SPECIES_INFO, - [SPECIES_MOTHIM_SANDY_CLOAK] = MOTHIM_SPECIES_INFO, - [SPECIES_MOTHIM_TRASH_CLOAK] = MOTHIM_SPECIES_INFO, + [SPECIES_MOTHIM_PLANT] = MOTHIM_SPECIES_INFO, + [SPECIES_MOTHIM_SANDY] = MOTHIM_SPECIES_INFO, + [SPECIES_MOTHIM_TRASH] = MOTHIM_SPECIES_INFO, #endif //P_FAMILY_BURMY #if P_FAMILY_COMBEE @@ -2064,6 +2124,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Combee, gShinyOverworldPalette_Combee ) + OVERWORLD_FEMALE( + sPicTable_CombeeF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .tmIlliterate = TRUE, .levelUpLearnset = sCombeeLevelUpLearnset, .teachableLearnset = sCombeeTeachableLearnset, @@ -2195,6 +2261,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Pachirisu, gShinyOverworldPalette_Pachirisu ) + OVERWORLD_FEMALE( + sPicTable_PachirisuF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sPachirisuLevelUpLearnset, .teachableLearnset = sPachirisuTeachableLearnset, .eggMoveLearnset = sPachirisuEggMoveLearnset, @@ -2261,6 +2333,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Buizel, gShinyOverworldPalette_Buizel ) + OVERWORLD_FEMALE( + sPicTable_BuizelF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sBuizelLevelUpLearnset, .teachableLearnset = sBuizelTeachableLearnset, .eggMoveLearnset = sBuizelEggMoveLearnset, @@ -2326,6 +2404,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Floatzel, gShinyOverworldPalette_Floatzel ) + OVERWORLD_FEMALE( + sPicTable_FloatzelF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sFloatzelLevelUpLearnset, .teachableLearnset = sFloatzelTeachableLearnset, }, @@ -2518,7 +2602,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = #endif //P_FAMILY_CHERUBI #if P_FAMILY_SHELLOS - [SPECIES_SHELLOS_WEST_SEA] = + [SPECIES_SHELLOS_WEST] = { .baseHP = 76, .baseAttack = 48, @@ -2579,10 +2663,10 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .teachableLearnset = sShellosTeachableLearnset, .eggMoveLearnset = sShellosEggMoveLearnset, .formSpeciesIdTable = sShellosFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GASTRODON_WEST_SEA}), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GASTRODON_WEST}), }, - [SPECIES_SHELLOS_EAST_SEA] = + [SPECIES_SHELLOS_EAST] = { .baseHP = 76, .baseAttack = 48, @@ -2643,10 +2727,10 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .teachableLearnset = sShellosTeachableLearnset, .eggMoveLearnset = sShellosEggMoveLearnset, .formSpeciesIdTable = sShellosFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GASTRODON_EAST_SEA}), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GASTRODON_EAST}), }, - [SPECIES_GASTRODON_WEST_SEA] = + [SPECIES_GASTRODON_WEST] = { .baseHP = 111, .baseAttack = 83, @@ -2708,7 +2792,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .formSpeciesIdTable = sGastrodonFormSpeciesIdTable, }, - [SPECIES_GASTRODON_EAST_SEA] = + [SPECIES_GASTRODON_EAST] = { .baseHP = 111, .baseAttack = 83, @@ -3659,6 +3743,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Gible, gShinyOverworldPalette_Gible ) + OVERWORLD_FEMALE( + sPicTable_GibleF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sGibleLevelUpLearnset, .teachableLearnset = sGibleTeachableLearnset, .eggMoveLearnset = sGibleEggMoveLearnset, @@ -3726,6 +3816,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Gabite, gShinyOverworldPalette_Gabite ) + OVERWORLD_FEMALE( + sPicTable_GabiteF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sGabiteLevelUpLearnset, .teachableLearnset = sGabiteTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_GARCHOMP}), @@ -3796,6 +3892,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Garchomp, gShinyOverworldPalette_Garchomp ) + OVERWORLD_FEMALE( + sPicTable_GarchompF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sGarchompLevelUpLearnset, .teachableLearnset = sGarchompTeachableLearnset, .formSpeciesIdTable = sGarchompFormSpeciesIdTable, @@ -4113,6 +4215,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Hippopotas, gShinyOverworldPalette_Hippopotas ) + OVERWORLD_FEMALE( + sPicTable_HippopotasF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sHippopotasLevelUpLearnset, .teachableLearnset = sHippopotasTeachableLearnset, .eggMoveLearnset = sHippopotasEggMoveLearnset, @@ -4182,6 +4290,10 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Hippowdon, gShinyOverworldPalette_Hippowdon ) + OVERWORLD_PAL_FEMALE( + gOverworldPalette_HippowdonF, + gShinyOverworldPalette_HippowdonF + ) .levelUpLearnset = sHippowdonLevelUpLearnset, .teachableLearnset = sHippowdonTeachableLearnset, }, @@ -4378,6 +4490,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Croagunk, gShinyOverworldPalette_Croagunk ) + OVERWORLD_FEMALE( + sPicTable_CroagunkF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sCroagunkLevelUpLearnset, .teachableLearnset = sCroagunkTeachableLearnset, .eggMoveLearnset = sCroagunkEggMoveLearnset, @@ -4446,6 +4564,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Toxicroak, gShinyOverworldPalette_Toxicroak ) + OVERWORLD_FEMALE( + sPicTable_ToxicroakF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sToxicroakLevelUpLearnset, .teachableLearnset = sToxicroakTeachableLearnset, }, @@ -4578,6 +4702,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Finneon, gShinyOverworldPalette_Finneon ) + OVERWORLD_FEMALE( + sPicTable_FinneonF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sFinneonLevelUpLearnset, .teachableLearnset = sFinneonTeachableLearnset, .eggMoveLearnset = sFinneonEggMoveLearnset, @@ -4645,6 +4775,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Lumineon, gShinyOverworldPalette_Lumineon ) + OVERWORLD_FEMALE( + sPicTable_LumineonF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sLumineonLevelUpLearnset, .teachableLearnset = sLumineonTeachableLearnset, }, @@ -4713,6 +4849,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Snover, gShinyOverworldPalette_Snover ) + OVERWORLD_FEMALE( + sPicTable_SnoverF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sSnoverLevelUpLearnset, .teachableLearnset = sSnoverTeachableLearnset, .eggMoveLearnset = sSnoverEggMoveLearnset, @@ -4780,6 +4922,12 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = gOverworldPalette_Abomasnow, gShinyOverworldPalette_Abomasnow ) + OVERWORLD_FEMALE( + sPicTable_AbomasnowF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sAbomasnowLevelUpLearnset, .teachableLearnset = sAbomasnowTeachableLearnset, .formSpeciesIdTable = sAbomasnowFormSpeciesIdTable, diff --git a/src/data/pokemon/species_info/gen_5_families.h b/src/data/pokemon/species_info/gen_5_families.h index dca0676af6..87c1bf561c 100644 --- a/src/data/pokemon/species_info/gen_5_families.h +++ b/src/data/pokemon/species_info/gen_5_families.h @@ -570,7 +570,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .levelUpLearnset = sDewottLevelUpLearnset, .teachableLearnset = sDewottTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SAMUROTT}, - {EVO_NONE, 0, SPECIES_SAMUROTT_HISUIAN}), + {EVO_NONE, 0, SPECIES_SAMUROTT_HISUI}), }, [SPECIES_SAMUROTT] = @@ -636,7 +636,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = }, #if P_HISUIAN_FORMS - [SPECIES_SAMUROTT_HISUIAN] = + [SPECIES_SAMUROTT_HISUI] = { .baseHP = 90, .baseAttack = 108, @@ -1852,6 +1852,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = gOverworldPalette_Unfezant, gShinyOverworldPalette_Unfezant ) + OVERWORLD_FEMALE( + sPicTable_UnfezantF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_UnfezantF, + gShinyOverworldPalette_UnfezantF + ) .levelUpLearnset = sUnfezantLevelUpLearnset, .teachableLearnset = sUnfezantTeachableLearnset, }, @@ -3698,7 +3706,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .teachableLearnset = sPetililTeachableLearnset, .eggMoveLearnset = sPetililEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_LILLIGANT}, - {EVO_NONE, 0, SPECIES_LILLIGANT_HISUIAN}), + {EVO_NONE, 0, SPECIES_LILLIGANT_HISUI}), }, [SPECIES_LILLIGANT] = @@ -3766,7 +3774,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = }, #if P_HISUIAN_FORMS - [SPECIES_LILLIGANT_HISUIAN] = + [SPECIES_LILLIGANT_HISUI] = { .baseHP = 70, .baseAttack = 105, @@ -4028,11 +4036,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .levelUpLearnset = sBasculinWhiteStripedLevelUpLearnset, .teachableLearnset = sBasculinWhiteStripedTeachableLearnset, .formSpeciesIdTable = sBasculinFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_RECOIL_DAMAGE_MALE, 294, SPECIES_BASCULEGION_MALE}, - {EVO_RECOIL_DAMAGE_FEMALE, 294, SPECIES_BASCULEGION_FEMALE}), + .evolutions = EVOLUTION({EVO_RECOIL_DAMAGE_MALE, 294, SPECIES_BASCULEGION_M}, + {EVO_RECOIL_DAMAGE_FEMALE, 294, SPECIES_BASCULEGION_F}), }, - [SPECIES_BASCULEGION_MALE] = + [SPECIES_BASCULEGION_M] = { .baseHP = 120, .baseAttack = 112, @@ -4095,7 +4103,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .formSpeciesIdTable = sBasculegionFormSpeciesIdTable, }, - [SPECIES_BASCULEGION_FEMALE] = + [SPECIES_BASCULEGION_F] = { .baseHP = 120, .baseAttack = 92, @@ -4418,10 +4426,10 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .teachableLearnset = sDarumakaTeachableLearnset, .eggMoveLearnset = sDarumakaEggMoveLearnset, .formSpeciesIdTable = sDarumakaFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_DARMANITAN_STANDARD_MODE}), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_DARMANITAN_STANDARD}), }, - [SPECIES_DARMANITAN_STANDARD_MODE] = + [SPECIES_DARMANITAN_STANDARD] = { .baseHP = 105, .baseAttack = 140, @@ -4484,7 +4492,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .formChangeTable = sDarmanitanFormChangeTable, }, - [SPECIES_DARMANITAN_ZEN_MODE] = + [SPECIES_DARMANITAN_ZEN] = { .baseHP = 105, .baseAttack = 30, @@ -4539,7 +4547,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = }, #if P_GALARIAN_FORMS - [SPECIES_DARUMAKA_GALARIAN] = + [SPECIES_DARUMAKA_GALAR] = { .baseHP = 70, .baseAttack = 90, @@ -4601,10 +4609,10 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .teachableLearnset = sDarumakaGalarianTeachableLearnset, .eggMoveLearnset = sDarumakaGalarianEggMoveLearnset, .formSpeciesIdTable = sDarumakaFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALAR_STANDARD}), }, - [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = + [SPECIES_DARMANITAN_GALAR_STANDARD] = { .baseHP = 105, .baseAttack = 140, @@ -4668,7 +4676,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .formChangeTable = sDarmanitanGalarianFormChangeTable, }, - [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = + [SPECIES_DARMANITAN_GALAR_ZEN] = { .baseHP = 105, .baseAttack = 160, @@ -5243,7 +5251,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = }, #if P_GALARIAN_FORMS - [SPECIES_YAMASK_GALARIAN] = + [SPECIES_YAMASK_GALAR] = { .baseHP = 38, .baseAttack = 55, @@ -5757,7 +5765,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_GARBODOR_GIGANTAMAX] = + [SPECIES_GARBODOR_GMAX] = { .baseHP = 80, .baseAttack = 95, @@ -5946,7 +5954,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = }, #if P_HISUIAN_FORMS - [SPECIES_ZORUA_HISUIAN] = + [SPECIES_ZORUA_HISUI] = { .baseHP = 35, .baseAttack = 60, @@ -6007,10 +6015,10 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .levelUpLearnset = sZoruaHisuianLevelUpLearnset, .teachableLearnset = sZoruaHisuianTeachableLearnset, .formSpeciesIdTable = sZoruaFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ZOROARK_HISUIAN}), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ZOROARK_HISUI}), }, - [SPECIES_ZOROARK_HISUIAN] = + [SPECIES_ZOROARK_HISUI] = { .baseHP = 55, .baseAttack = 100, @@ -7818,6 +7826,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = gOverworldPalette_Frillish, gShinyOverworldPalette_Frillish ) + OVERWORLD_FEMALE( + sPicTable_FrillishF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_FrillishF, + gShinyOverworldPalette_FrillishF + ) .levelUpLearnset = sFrillishLevelUpLearnset, .teachableLearnset = sFrillishTeachableLearnset, .eggMoveLearnset = sFrillishEggMoveLearnset, @@ -7889,6 +7905,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = gOverworldPalette_Jellicent, gShinyOverworldPalette_Jellicent ) + OVERWORLD_FEMALE( + sPicTable_JellicentF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_JellicentF, + gShinyOverworldPalette_JellicentF + ) .levelUpLearnset = sJellicentLevelUpLearnset, .teachableLearnset = sJellicentTeachableLearnset, }, @@ -9509,7 +9533,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = }, #if P_GALARIAN_FORMS - [SPECIES_STUNFISK_GALARIAN] = + [SPECIES_STUNFISK_GALAR] = { .baseHP = 109, .baseAttack = 81, @@ -10211,7 +10235,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .levelUpLearnset = sRuffletLevelUpLearnset, .teachableLearnset = sRuffletTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 54, SPECIES_BRAVIARY}, - {EVO_NONE, 0, SPECIES_BRAVIARY_HISUIAN}), + {EVO_NONE, 0, SPECIES_BRAVIARY_HISUI}), }, [SPECIES_BRAVIARY] = @@ -10278,7 +10302,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = }, #if P_HISUIAN_FORMS - [SPECIES_BRAVIARY_HISUIAN] = + [SPECIES_BRAVIARY_HISUI] = { .baseHP = 110, .baseAttack = 83, @@ -12198,10 +12222,10 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = } [SPECIES_GENESECT] = GENESECT_SPECIES_INFO(Genesect), - [SPECIES_GENESECT_DOUSE_DRIVE] = GENESECT_SPECIES_INFO(GenesectDouseDrive), - [SPECIES_GENESECT_SHOCK_DRIVE] = GENESECT_SPECIES_INFO(GenesectShockDrive), - [SPECIES_GENESECT_BURN_DRIVE] = GENESECT_SPECIES_INFO(GenesectBurnDrive), - [SPECIES_GENESECT_CHILL_DRIVE] = GENESECT_SPECIES_INFO(GenesectChillDrive), + [SPECIES_GENESECT_DOUSE] = GENESECT_SPECIES_INFO(GenesectDouseDrive), + [SPECIES_GENESECT_SHOCK] = GENESECT_SPECIES_INFO(GenesectShockDrive), + [SPECIES_GENESECT_BURN] = GENESECT_SPECIES_INFO(GenesectBurnDrive), + [SPECIES_GENESECT_CHILL] = GENESECT_SPECIES_INFO(GenesectChillDrive), #endif //P_FAMILY_GENESECT #ifdef __INTELLISENSE__ diff --git a/src/data/pokemon/species_info/gen_6_families.h b/src/data/pokemon/species_info/gen_6_families.h index ec81e16e7e..47df7969ca 100644 --- a/src/data/pokemon/species_info/gen_6_families.h +++ b/src/data/pokemon/species_info/gen_6_families.h @@ -1078,7 +1078,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = [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), + [SPECIES_SCATTERBUG_POKEBALL] = SCATTERBUG_SPECIES_INFO(POKEBALL), #define SPEWPA_SPECIES_INFO(evolution) \ { \ @@ -1159,7 +1159,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = [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), + [SPECIES_SPEWPA_POKEBALL] = SPEWPA_SPECIES_INFO(POKEBALL), #define VIVILLON_MISC_INFO(form, color, iconPal) \ .baseHP = 80, \ @@ -1390,7 +1390,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = "This form is from a mysterious land.\n" "It scatters toxic color scales in battle."), }, - [SPECIES_VIVILLON_POKE_BALL] = + [SPECIES_VIVILLON_POKEBALL] = { VIVILLON_MISC_INFO(PokeBall, BODY_COLOR_RED, 2), .description = COMPOUND_STRING( @@ -1528,6 +1528,12 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = gOverworldPalette_Pyroar, gShinyOverworldPalette_Pyroar ) + OVERWORLD_FEMALE( + sPicTable_PyroarF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT + ) .levelUpLearnset = sPyroarLevelUpLearnset, .teachableLearnset = sPyroarTeachableLearnset, }, @@ -1590,9 +1596,9 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .teachableLearnset = sFlabebeTeachableLearnset, \ .eggMoveLearnset = sFlabebeEggMoveLearnset, \ .formSpeciesIdTable = sFlabebeFormSpeciesIdTable, \ - .evolutions = EVOLUTION({EVO_LEVEL, 19, SPECIES_FLOETTE_ ##FORM##_FLOWER}) + .evolutions = EVOLUTION({EVO_LEVEL, 19, SPECIES_FLOETTE_ ##FORM}) - [SPECIES_FLABEBE_RED_FLOWER] = + [SPECIES_FLABEBE_RED] = { FLABEBE_MISC_INFO(Red, RED, 1), .description = COMPOUND_STRING( @@ -1601,7 +1607,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = "begins flying around in search of a\n" "flower it likes."), }, - [SPECIES_FLABEBE_YELLOW_FLOWER] = + [SPECIES_FLABEBE_YELLOW] = { FLABEBE_MISC_INFO(Yellow, YELLOW, 1), .description = COMPOUND_STRING( @@ -1610,7 +1616,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = "within flowers. This Pokémon is\n" "particularly fond of yellow flowers."), }, - [SPECIES_FLABEBE_ORANGE_FLOWER] = + [SPECIES_FLABEBE_ORANGE] = { FLABEBE_MISC_INFO(Orange, ORANGE, 0), .description = COMPOUND_STRING( @@ -1619,7 +1625,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = "return. This Pokémon likes orange\n" "flowers best of all."), }, - [SPECIES_FLABEBE_BLUE_FLOWER] = + [SPECIES_FLABEBE_BLUE] = { FLABEBE_MISC_INFO(Blue, BLUE, 0), .description = COMPOUND_STRING( @@ -1628,7 +1634,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = "power emanating from its flower\n" "and bobs along lightly through the air."), }, - [SPECIES_FLABEBE_WHITE_FLOWER] = + [SPECIES_FLABEBE_WHITE] = { FLABEBE_MISC_INFO(White, WHITE, 1), .description = COMPOUND_STRING( @@ -1695,10 +1701,10 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backPicYOffset = 2, \ .levelUpLearnset = sFloetteLevelUpLearnset, \ .teachableLearnset = sFloetteTeachableLearnset, \ - .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_ ##FORM##_FLOWER}),\ + .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_ ##FORM}),\ FLOETTE_MISC_INFO(form, FORM, iconPal) - [SPECIES_FLOETTE_RED_FLOWER] = + [SPECIES_FLOETTE_RED] = { FLOETTE_NORMAL_INFO(Red, RED, 1), .description = COMPOUND_STRING( @@ -1707,7 +1713,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = "into flowers and draw forth their\n" "latent potential."), }, - [SPECIES_FLOETTE_YELLOW_FLOWER] = + [SPECIES_FLOETTE_YELLOW] = { FLOETTE_NORMAL_INFO(Yellow, YELLOW, 1), .description = COMPOUND_STRING( @@ -1716,7 +1722,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = "This power then becomes the moves\n" "Floette uses to protect itself."), }, - [SPECIES_FLOETTE_ORANGE_FLOWER] = + [SPECIES_FLOETTE_ORANGE] = { FLOETTE_NORMAL_INFO(Orange, ORANGE, 0), .description = COMPOUND_STRING( @@ -1725,7 +1731,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = "flowers, compared to flowers of other\n" "colors."), }, - [SPECIES_FLOETTE_BLUE_FLOWER] = + [SPECIES_FLOETTE_BLUE] = { FLOETTE_NORMAL_INFO(Blue, BLUE, 0), .description = COMPOUND_STRING( @@ -1734,7 +1740,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = "will bring them back to its territory\n" "and care for them."), }, - [SPECIES_FLOETTE_WHITE_FLOWER] = + [SPECIES_FLOETTE_WHITE] = { FLOETTE_NORMAL_INFO(White, WHITE, 1), .description = COMPOUND_STRING( @@ -1743,7 +1749,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = "without mercy. This Floette takes\n" "particularly good care of white flowers."), }, - [SPECIES_FLOETTE_ETERNAL_FLOWER] = + [SPECIES_FLOETTE_ETERNAL] = { FLOETTE_MISC_INFO(Eternal, ETERNAL, 0), .baseHP = 74, @@ -1754,7 +1760,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .baseSpDefense = 128, .expYield = 243, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), - .cryId = CRY_FLOETTE_ETERNAL_FLOWER, + .cryId = CRY_FLOETTE_ETERNAL, .description = COMPOUND_STRING( "The flower it's holding can no\n" "longer be found blooming anywhere. It's\n" @@ -1826,7 +1832,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .teachableLearnset = sFlorgesTeachableLearnset, \ .formSpeciesIdTable = sFlorgesFormSpeciesIdTable - [SPECIES_FLORGES_RED_FLOWER] = + [SPECIES_FLORGES_RED] = { FLORGES_MISC_INFO(Red, 0), .description = COMPOUND_STRING( @@ -1835,7 +1841,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = "draws forth the power of the red\n" "flowers around its neck."), }, - [SPECIES_FLORGES_YELLOW_FLOWER] = + [SPECIES_FLORGES_YELLOW] = { FLORGES_MISC_INFO(Yellow, 1), .description = COMPOUND_STRING( @@ -1844,7 +1850,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = "ruthlessly punishes anyone who\n" "tramples on flowering plants."), }, - [SPECIES_FLORGES_ORANGE_FLOWER] = + [SPECIES_FLORGES_ORANGE] = { FLORGES_MISC_INFO(Orange, 0), .description = COMPOUND_STRING( @@ -1853,7 +1859,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = "care for their castles' exquisite\n" "gardens."), }, - [SPECIES_FLORGES_BLUE_FLOWER] = + [SPECIES_FLORGES_BLUE] = { FLORGES_MISC_INFO(Blue, 0), .description = COMPOUND_STRING( @@ -1861,7 +1867,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = "expensive in the past, so paintings\n" "of blue Florges are highly valuable."), }, - [SPECIES_FLORGES_WHITE_FLOWER] = + [SPECIES_FLORGES_WHITE] = { FLORGES_MISC_INFO(White, 0), .description = COMPOUND_STRING( @@ -2261,11 +2267,11 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .levelUpLearnset = sEspurrLevelUpLearnset, .teachableLearnset = sEspurrTeachableLearnset, .eggMoveLearnset = sEspurrEggMoveLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_MALE, 25, SPECIES_MEOWSTIC_MALE}, - {EVO_LEVEL_FEMALE, 25, SPECIES_MEOWSTIC_FEMALE}), + .evolutions = EVOLUTION({EVO_LEVEL_MALE, 25, SPECIES_MEOWSTIC_M}, + {EVO_LEVEL_FEMALE, 25, SPECIES_MEOWSTIC_F}), }, - [SPECIES_MEOWSTIC_MALE] = + [SPECIES_MEOWSTIC_M] = { .baseHP = 74, .baseAttack = 48, @@ -2327,7 +2333,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .formSpeciesIdTable = sMeowsticFormSpeciesIdTable, }, - [SPECIES_MEOWSTIC_FEMALE] = + [SPECIES_MEOWSTIC_F] = { .baseHP = 74, .baseAttack = 48, @@ -4051,7 +4057,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .teachableLearnset = sGoomyTeachableLearnset, .eggMoveLearnset = sGoomyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_SLIGGOO}, - {EVO_NONE, 0, SPECIES_SLIGGOO_HISUIAN}), + {EVO_NONE, 0, SPECIES_SLIGGOO_HISUI}), }, [SPECIES_SLIGGOO] = @@ -4182,7 +4188,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = }, #if P_HISUIAN_FORMS - [SPECIES_SLIGGOO_HISUIAN] = + [SPECIES_SLIGGOO_HISUI] = { .baseHP = 58, .baseAttack = 75, @@ -4244,11 +4250,11 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .levelUpLearnset = sSliggooHisuianLevelUpLearnset, .teachableLearnset = sSliggooHisuianTeachableLearnset, .formSpeciesIdTable = sSliggooFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL_RAIN, 50, SPECIES_GOODRA_HISUIAN}, - {EVO_LEVEL_FOG, 50, SPECIES_GOODRA_HISUIAN}), + .evolutions = EVOLUTION({EVO_LEVEL_RAIN, 50, SPECIES_GOODRA_HISUI}, + {EVO_LEVEL_FOG, 50, SPECIES_GOODRA_HISUI}), }, - [SPECIES_GOODRA_HISUIAN] = + [SPECIES_GOODRA_HISUI] = { .baseHP = 80, .baseAttack = 100, @@ -5086,7 +5092,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .teachableLearnset = sBergmiteTeachableLearnset, .eggMoveLearnset = sBergmiteEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_AVALUGG}, - {EVO_NONE, 0, SPECIES_AVALUGG_HISUIAN}), + {EVO_NONE, 0, SPECIES_AVALUGG_HISUI}), }, [SPECIES_AVALUGG] = @@ -5152,7 +5158,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = }, #if P_HISUIAN_FORMS - [SPECIES_AVALUGG_HISUIAN] = + [SPECIES_AVALUGG_HISUI] = { .baseHP = 95, .baseAttack = 127, @@ -5545,7 +5551,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = #endif //P_FAMILY_YVELTAL #if P_FAMILY_ZYGARDE - [SPECIES_ZYGARDE_50_AURA_BREAK] = + [SPECIES_ZYGARDE_50] = { .baseHP = 108, .baseAttack = 100, diff --git a/src/data/pokemon/species_info/gen_7_families.h b/src/data/pokemon/species_info/gen_7_families.h index 2bbe9e646a..c6f0e0faf3 100644 --- a/src/data/pokemon/species_info/gen_7_families.h +++ b/src/data/pokemon/species_info/gen_7_families.h @@ -128,7 +128,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .levelUpLearnset = sDartrixLevelUpLearnset, .teachableLearnset = sDartrixTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_DECIDUEYE}, - {EVO_NONE, 0, SPECIES_DECIDUEYE_HISUIAN}), + {EVO_NONE, 0, SPECIES_DECIDUEYE_HISUI}), }, [SPECIES_DECIDUEYE] = @@ -194,7 +194,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = }, #if P_HISUIAN_FORMS - [SPECIES_DECIDUEYE_HISUIAN] = + [SPECIES_DECIDUEYE_HISUI] = { .baseHP = 88, .baseAttack = 112, @@ -4745,7 +4745,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .formChangeTable = sMimikyuTotemFormChangeTable, }, - [SPECIES_MIMIKYU_TOTEM_BUSTED] = + [SPECIES_MIMIKYU_BUSTED_TOTEM] = { .baseHP = 55, .baseAttack = 90, @@ -6577,7 +6577,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .teachableLearnset = sMagearnaTeachableLearnset, .formSpeciesIdTable = sMagearnaFormSpeciesIdTable, }, - [SPECIES_MAGEARNA_ORIGINAL_COLOR] = + [SPECIES_MAGEARNA_ORIGINAL] = { .baseHP = 80, .baseAttack = 95, @@ -7165,7 +7165,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_MELMETAL_GIGANTAMAX] = + [SPECIES_MELMETAL_GMAX] = { .baseHP = 135, .baseAttack = 143, diff --git a/src/data/pokemon/species_info/gen_8_families.h b/src/data/pokemon/species_info/gen_8_families.h index d4473fa5d4..0794527921 100644 --- a/src/data/pokemon/species_info/gen_8_families.h +++ b/src/data/pokemon/species_info/gen_8_families.h @@ -191,7 +191,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_RILLABOOM_GIGANTAMAX] = + [SPECIES_RILLABOOM_GMAX] = { .baseHP = 100, .baseAttack = 125, @@ -437,7 +437,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_CINDERACE_GIGANTAMAX] = + [SPECIES_CINDERACE_GMAX] = { .baseHP = 80, .baseAttack = 116, @@ -685,7 +685,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_INTELEON_GIGANTAMAX] = + [SPECIES_INTELEON_GMAX] = { .baseHP = 70, .baseAttack = 85, @@ -1061,7 +1061,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_CORVIKNIGHT_GIGANTAMAX] = + [SPECIES_CORVIKNIGHT_GMAX] = { .baseHP = 98, .baseAttack = 87, @@ -1312,7 +1312,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_ORBEETLE_GIGANTAMAX] = + [SPECIES_ORBEETLE_GMAX] = { .baseHP = 60, .baseAttack = 45, @@ -1875,7 +1875,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_DREDNAW_GIGANTAMAX] = + [SPECIES_DREDNAW_GMAX] = { .baseHP = 90, .baseAttack = 115, @@ -2248,7 +2248,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_COALOSSAL_GIGANTAMAX] = + [SPECIES_COALOSSAL_GMAX] = { .baseHP = 110, .baseAttack = 80, @@ -2437,7 +2437,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_FLAPPLE_GIGANTAMAX] = + [SPECIES_FLAPPLE_GMAX] = { .baseHP = 70, .baseAttack = 110, @@ -2557,7 +2557,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_APPLETUN_GIGANTAMAX] = + [SPECIES_APPLETUN_GMAX] = { .baseHP = 110, .baseAttack = 85, @@ -2866,7 +2866,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_SANDACONDA_GIGANTAMAX] = + [SPECIES_SANDACONDA_GMAX] = { .baseHP = 72, .baseAttack = 107, @@ -3356,7 +3356,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = + [SPECIES_TOXTRICITY_AMPED_GMAX] = { .baseHP = 75, .baseAttack = 98, @@ -3472,7 +3472,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = + [SPECIES_TOXTRICITY_LOW_KEY_GMAX] = { .baseHP = 75, .baseAttack = 98, @@ -3653,7 +3653,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_CENTISKORCH_GIGANTAMAX] = + [SPECIES_CENTISKORCH_GMAX] = { .baseHP = 100, .baseAttack = 115, @@ -4278,7 +4278,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_HATTERENE_GIGANTAMAX] = + [SPECIES_HATTERENE_GMAX] = { .baseHP = 57, .baseAttack = 90, @@ -4525,7 +4525,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_GRIMMSNARL_GIGANTAMAX] = + [SPECIES_GRIMMSNARL_GMAX] = { .baseHP = 95, .baseAttack = 120, @@ -4781,7 +4781,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Ribbon, CaramelSwirl, BODY_COLOR_BROWN), [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Ribbon, RainbowSwirl, BODY_COLOR_YELLOW), #if P_GIGANTAMAX_FORMS - [SPECIES_ALCREMIE_GIGANTAMAX] = + [SPECIES_ALCREMIE_GMAX] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW), .speciesName = _("Alcremie"), @@ -5141,7 +5141,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = #endif //P_FAMILY_STONJOURNER #if P_FAMILY_EISCUE - [SPECIES_EISCUE_ICE_FACE] = + [SPECIES_EISCUE_ICE] = { .baseHP = 75, .baseAttack = 80, @@ -5161,7 +5161,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .abilities = { ABILITY_ICE_FACE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Eiscue"), - .cryId = CRY_EISCUE_ICE_FACE, + .cryId = CRY_EISCUE_ICE, .natDexNum = NATIONAL_DEX_EISCUE, .categoryName = _("Penguin"), .height = 14, @@ -5205,7 +5205,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .formChangeTable = sEiscueFormChangeTable, }, - [SPECIES_EISCUE_NOICE_FACE] = + [SPECIES_EISCUE_NOICE] = { .baseHP = 75, .baseAttack = 80, @@ -5263,7 +5263,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = #endif //P_FAMILY_EISCUE #if P_FAMILY_INDEEDEE - [SPECIES_INDEEDEE_MALE] = + [SPECIES_INDEEDEE_M] = { .baseHP = 60, .baseAttack = 65, @@ -5283,7 +5283,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .abilities = { ABILITY_INNER_FOCUS, ABILITY_SYNCHRONIZE, ABILITY_PSYCHIC_SURGE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Indeedee"), - .cryId = CRY_INDEEDEE_MALE, + .cryId = CRY_INDEEDEE_M, .natDexNum = NATIONAL_DEX_INDEEDEE, .categoryName = _("Emotion"), .height = 9, @@ -5325,7 +5325,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .formSpeciesIdTable = sIndeedeeFormSpeciesIdTable, }, - [SPECIES_INDEEDEE_FEMALE] = + [SPECIES_INDEEDEE_F] = { .baseHP = 70, .baseAttack = 55, @@ -5345,7 +5345,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .abilities = { ABILITY_OWN_TEMPO, ABILITY_SYNCHRONIZE, ABILITY_PSYCHIC_SURGE }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Indeedee"), - .cryId = CRY_INDEEDEE_FEMALE, + .cryId = CRY_INDEEDEE_F, .natDexNum = NATIONAL_DEX_INDEEDEE, .categoryName = _("Emotion"), .height = 9, @@ -5640,7 +5640,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_COPPERAJAH_GIGANTAMAX] = + [SPECIES_COPPERAJAH_GMAX] = { .baseHP = 122, .baseAttack = 130, @@ -6016,7 +6016,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_DURALUDON_GIGANTAMAX] = + [SPECIES_DURALUDON_GMAX] = { .baseHP = 70, .baseAttack = 95, @@ -6329,7 +6329,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = #endif //P_FAMILY_DREEPY #if P_FAMILY_ZACIAN - [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = + [SPECIES_ZACIAN_HERO] = { .baseHP = 92, .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, @@ -6349,7 +6349,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .abilities = { ABILITY_INTREPID_SWORD, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Zacian"), - .cryId = CRY_ZACIAN_HERO_OF_MANY_BATTLES, + .cryId = CRY_ZACIAN_HERO, .natDexNum = NATIONAL_DEX_ZACIAN, .categoryName = _("Warrior"), .height = 28, @@ -6394,7 +6394,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .formChangeTable = sZacianFormChangeTable, }, - [SPECIES_ZACIAN_CROWNED_SWORD] = + [SPECIES_ZACIAN_CROWNED] = { .baseHP = 92, .baseAttack = P_UPDATED_STATS >= GEN_9 ? 150 : 170, @@ -6462,7 +6462,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = #endif //P_FAMILY_ZACIAN #if P_FAMILY_ZAMAZENTA - [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = + [SPECIES_ZAMAZENTA_HERO] = { .baseHP = 92, .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, @@ -6482,7 +6482,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .abilities = { ABILITY_DAUNTLESS_SHIELD, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, .speciesName = _("Zamazenta"), - .cryId = CRY_ZAMAZENTA_HERO_OF_MANY_BATTLES, + .cryId = CRY_ZAMAZENTA_HERO, .natDexNum = NATIONAL_DEX_ZAMAZENTA, .categoryName = _("Warrior"), .height = 29, @@ -6528,7 +6528,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .formChangeTable = sZamazentaFormChangeTable, }, - [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = + [SPECIES_ZAMAZENTA_CROWNED] = { .baseHP = 92, .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, @@ -6782,13 +6782,13 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .perfectIVCount = LEGENDARY_PERFECT_IV_COUNT, .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}), + .evolutions = EVOLUTION({EVO_DARK_SCROLL, 0, SPECIES_URSHIFU_SINGLE_STRIKE}, + {EVO_ITEM, ITEM_SCROLL_OF_DARKNESS, SPECIES_URSHIFU_SINGLE_STRIKE}, + {EVO_WATER_SCROLL, 0, SPECIES_URSHIFU_RAPID_STRIKE}, + {EVO_ITEM, ITEM_SCROLL_OF_WATERS, SPECIES_URSHIFU_RAPID_STRIKE}), }, - [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = + [SPECIES_URSHIFU_SINGLE_STRIKE] = { .baseHP = 100, .baseAttack = 130, @@ -6854,7 +6854,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = + [SPECIES_URSHIFU_SINGLE_STRIKE_GMAX] = { .baseHP = 100, .baseAttack = 130, @@ -6912,7 +6912,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #endif //P_GIGANTAMAX_FORMS - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = + [SPECIES_URSHIFU_RAPID_STRIKE] = { .baseHP = 100, .baseAttack = 130, @@ -6978,7 +6978,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_GIGANTAMAX_FORMS - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = + [SPECIES_URSHIFU_RAPID_STRIKE_GMAX] = { .baseHP = 100, .baseAttack = 130, @@ -7489,7 +7489,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = }, #if P_FUSION_FORMS - [SPECIES_CALYREX_ICE_RIDER] = + [SPECIES_CALYREX_ICE] = { .baseHP = 100, .baseAttack = 165, @@ -7555,7 +7555,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .formSpeciesIdTable = sCalyrexFormSpeciesIdTable, }, - [SPECIES_CALYREX_SHADOW_RIDER] = + [SPECIES_CALYREX_SHADOW] = { .baseHP = 100, .baseAttack = 85, diff --git a/src/data/pokemon/species_info/gen_9_families.h b/src/data/pokemon/species_info/gen_9_families.h index 427090cef6..e0346d63a9 100644 --- a/src/data/pokemon/species_info/gen_9_families.h +++ b/src/data/pokemon/species_info/gen_9_families.h @@ -628,11 +628,11 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .levelUpLearnset = sLechonkLevelUpLearnset, .teachableLearnset = sLechonkTeachableLearnset, .eggMoveLearnset = sLechonkEggMoveLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_MALE, 18, SPECIES_OINKOLOGNE_MALE}, - {EVO_LEVEL_FEMALE, 18, SPECIES_OINKOLOGNE_FEMALE}), + .evolutions = EVOLUTION({EVO_LEVEL_MALE, 18, SPECIES_OINKOLOGNE_M}, + {EVO_LEVEL_FEMALE, 18, SPECIES_OINKOLOGNE_F}), }, - [SPECIES_OINKOLOGNE_MALE] = + [SPECIES_OINKOLOGNE_M] = { .baseHP = 110, .baseAttack = 100, @@ -652,7 +652,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .abilities = { ABILITY_LINGERING_AROMA, ABILITY_GLUTTONY, ABILITY_THICK_FAT }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Oinkologne"), - .cryId = CRY_OINKOLOGNE_MALE, + .cryId = CRY_OINKOLOGNE_M, .natDexNum = NATIONAL_DEX_OINKOLOGNE, .categoryName = _("Hog"), .height = 10, @@ -693,7 +693,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .formSpeciesIdTable = sOinkologneFormSpeciesIdTable, }, - [SPECIES_OINKOLOGNE_FEMALE] = + [SPECIES_OINKOLOGNE_F] = { .baseHP = 115, .baseAttack = 90, @@ -713,7 +713,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .abilities = { ABILITY_AROMA_VEIL, ABILITY_GLUTTONY, ABILITY_THICK_FAT }, .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Oinkologne"), - .cryId = CRY_OINKOLOGNE_FEMALE, + .cryId = CRY_OINKOLOGNE_F, .natDexNum = NATIONAL_DEX_OINKOLOGNE, .categoryName = _("Hog"), .height = 10, @@ -1257,11 +1257,11 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .levelUpLearnset = sTandemausLevelUpLearnset, .teachableLearnset = sTandemausTeachableLearnset, .eggMoveLearnset = sTandemausEggMoveLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_FAMILY_OF_FOUR, 25, SPECIES_MAUSHOLD_FAMILY_OF_FOUR}, - {EVO_LEVEL_FAMILY_OF_THREE, 25, SPECIES_MAUSHOLD_FAMILY_OF_THREE}), + .evolutions = EVOLUTION({EVO_LEVEL_FAMILY_OF_FOUR, 25, SPECIES_MAUSHOLD_FOUR}, + {EVO_LEVEL_FAMILY_OF_THREE, 25, SPECIES_MAUSHOLD_THREE}), }, - [SPECIES_MAUSHOLD_FAMILY_OF_THREE] = + [SPECIES_MAUSHOLD_THREE] = { .baseHP = 74, .baseAttack = 75, @@ -1322,7 +1322,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .teachableLearnset = sMausholdTeachableLearnset, .formSpeciesIdTable = sMausholdFormSpeciesIdTable, }, - [SPECIES_MAUSHOLD_FAMILY_OF_FOUR] = + [SPECIES_MAUSHOLD_FOUR] = { .baseHP = 74, .baseAttack = 75, @@ -1700,7 +1700,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = #endif //P_FAMILY_SMOLIV #if P_FAMILY_SQUAWKABILLY - [SPECIES_SQUAWKABILLY_GREEN_PLUMAGE] = + [SPECIES_SQUAWKABILLY_GREEN] = { .baseHP = 82, .baseAttack = 96, @@ -1763,7 +1763,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .formSpeciesIdTable = sSquawkabillyFormSpeciesIdTable, }, - [SPECIES_SQUAWKABILLY_BLUE_PLUMAGE] = + [SPECIES_SQUAWKABILLY_BLUE] = { .baseHP = 82, .baseAttack = 96, @@ -1826,7 +1826,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .formSpeciesIdTable = sSquawkabillyFormSpeciesIdTable, }, - [SPECIES_SQUAWKABILLY_YELLOW_PLUMAGE] = + [SPECIES_SQUAWKABILLY_YELLOW] = { .baseHP = 82, .baseAttack = 96, @@ -1889,7 +1889,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .formSpeciesIdTable = sSquawkabillyFormSpeciesIdTable, }, - [SPECIES_SQUAWKABILLY_WHITE_PLUMAGE] = + [SPECIES_SQUAWKABILLY_WHITE] = { .baseHP = 82, .baseAttack = 96, @@ -7361,7 +7361,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = TRACKS_FOOT, gOverworldPalette_Fezandipiti, gShinyOverworldPalette_Fezandipiti - ) + ) .isLegendary = TRUE, .perfectIVCount = LEGENDARY_PERFECT_IV_COUNT, .levelUpLearnset = sFezandipitiLevelUpLearnset, @@ -7433,15 +7433,15 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .perfectIVCount = LEGENDARY_PERFECT_IV_COUNT, \ } - [SPECIES_OGERPON_TEAL_MASK] = OGERPON_SPECIES_INFO(Teal, Mask, TYPE_GRASS, ABILITY_DEFIANT, BODY_COLOR_GREEN, 1, FALSE), - [SPECIES_OGERPON_WELLSPRING_MASK] = OGERPON_SPECIES_INFO(Wellspring, Mask, TYPE_WATER, ABILITY_WATER_ABSORB, BODY_COLOR_BLUE, 0, FALSE), - [SPECIES_OGERPON_HEARTHFLAME_MASK] = OGERPON_SPECIES_INFO(Hearthflame, Mask, TYPE_FIRE, ABILITY_MOLD_BREAKER, BODY_COLOR_RED, 0, FALSE), - [SPECIES_OGERPON_CORNERSTONE_MASK] = OGERPON_SPECIES_INFO(Cornerstone, Mask, TYPE_ROCK, ABILITY_STURDY, BODY_COLOR_GRAY, 0, FALSE), + [SPECIES_OGERPON_TEAL] = OGERPON_SPECIES_INFO(Teal, Mask, TYPE_GRASS, ABILITY_DEFIANT, BODY_COLOR_GREEN, 1, FALSE), + [SPECIES_OGERPON_WELLSPRING] = OGERPON_SPECIES_INFO(Wellspring, Mask, TYPE_WATER, ABILITY_WATER_ABSORB, BODY_COLOR_BLUE, 0, FALSE), + [SPECIES_OGERPON_HEARTHFLAME] = OGERPON_SPECIES_INFO(Hearthflame, Mask, TYPE_FIRE, ABILITY_MOLD_BREAKER, BODY_COLOR_RED, 0, FALSE), + [SPECIES_OGERPON_CORNERSTONE] = OGERPON_SPECIES_INFO(Cornerstone, Mask, TYPE_ROCK, ABILITY_STURDY, BODY_COLOR_GRAY, 0, FALSE), #if P_TERA_FORMS - [SPECIES_OGERPON_TEAL_MASK_TERA] = OGERPON_SPECIES_INFO(Teal, MaskTera, TYPE_GRASS, ABILITY_EMBODY_ASPECT_TEAL_MASK, BODY_COLOR_GREEN, 1, TRUE), - [SPECIES_OGERPON_WELLSPRING_MASK_TERA] = OGERPON_SPECIES_INFO(Wellspring, MaskTera, TYPE_WATER, ABILITY_EMBODY_ASPECT_WELLSPRING_MASK, BODY_COLOR_BLUE, 0, TRUE), - [SPECIES_OGERPON_HEARTHFLAME_MASK_TERA] = OGERPON_SPECIES_INFO(Hearthflame, MaskTera, TYPE_FIRE, ABILITY_EMBODY_ASPECT_HEARTHFLAME_MASK, BODY_COLOR_RED, 0, TRUE), - [SPECIES_OGERPON_CORNERSTONE_MASK_TERA] = OGERPON_SPECIES_INFO(Cornerstone, MaskTera, TYPE_ROCK, ABILITY_EMBODY_ASPECT_CORNERSTONE_MASK, BODY_COLOR_GRAY, 0, TRUE), + [SPECIES_OGERPON_TEAL_TERA] = OGERPON_SPECIES_INFO(Teal, MaskTera, TYPE_GRASS, ABILITY_EMBODY_ASPECT_TEAL_MASK, BODY_COLOR_GREEN, 1, TRUE), + [SPECIES_OGERPON_WELLSPRING_TERA] = OGERPON_SPECIES_INFO(Wellspring, MaskTera, TYPE_WATER, ABILITY_EMBODY_ASPECT_WELLSPRING_MASK, BODY_COLOR_BLUE, 0, TRUE), + [SPECIES_OGERPON_HEARTHFLAME_TERA] = OGERPON_SPECIES_INFO(Hearthflame, MaskTera, TYPE_FIRE, ABILITY_EMBODY_ASPECT_HEARTHFLAME_MASK, BODY_COLOR_RED, 0, TRUE), + [SPECIES_OGERPON_CORNERSTONE_TERA] = OGERPON_SPECIES_INFO(Cornerstone, MaskTera, TYPE_ROCK, ABILITY_EMBODY_ASPECT_CORNERSTONE_MASK, BODY_COLOR_GRAY, 0, TRUE), #endif //P_TERA_FORMS #endif //P_FAMILY_OGERPON diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 213c888f77..f8a56f8ef6 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1869,16 +1869,23 @@ u8 CreateObjectGraphicsSpriteWithTag(u16 graphicsId, void (*callback)(struct Spr { struct SpriteTemplate *spriteTemplate; const struct SubspriteTable *subspriteTables; - const struct ObjectEventGraphicsInfo *graphicsInfo; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); struct Sprite *sprite; u8 spriteId; bool32 isShiny = graphicsId >= SPECIES_SHINY_TAG + OBJ_EVENT_GFX_MON_BASE; + spriteTemplate = Alloc(sizeof(struct SpriteTemplate)); + CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, callback, spriteTemplate, &subspriteTables); + if (isShiny) graphicsId -= SPECIES_SHINY_TAG; - spriteTemplate = Alloc(sizeof(struct SpriteTemplate)); - CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, callback, spriteTemplate, &subspriteTables); + if (OW_GFX_COMPRESS) + { + // Checking only for compressed here so as not to mess with decorations + if (graphicsInfo->compressed) + spriteTemplate->tileTag = LoadSheetGraphicsInfo(graphicsInfo, graphicsId, NULL); + } if (spriteTemplate->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) { @@ -1896,13 +1903,6 @@ u8 CreateObjectGraphicsSpriteWithTag(u16 graphicsId, void (*callback)(struct Spr } } - if (OW_GFX_COMPRESS) - { - graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); - // Checking only for compressed here so as not to mess with decorations - if (graphicsInfo->compressed) - spriteTemplate->tileTag = LoadSheetGraphicsInfo(graphicsInfo, graphicsId, NULL); - } spriteId = CreateSprite(spriteTemplate, x, y, subpriority); Free(spriteTemplate); @@ -2007,9 +2007,17 @@ static const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(u16 species, graphicsInfo = &gSpeciesInfo[form ? SPECIES_UNOWN_B + form - 1 : species].overworldData; break; default: - graphicsInfo = &gSpeciesInfo[species].overworldData; + if (form == 1 && gSpeciesInfo[species].overworldDataFemale.paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) + { + graphicsInfo = &gSpeciesInfo[species].overworldDataFemale; + } + else + { + graphicsInfo = &gSpeciesInfo[species].overworldData; + } break; } + // Try to avoid OOB or undefined access if ((graphicsInfo->tileTag == 0 && species < NUM_SPECIES) || (graphicsInfo->tileTag != TAG_NONE && species >= NUM_SPECIES)) { @@ -2025,6 +2033,7 @@ static const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(u16 species, static u8 LoadDynamicFollowerPalette(u16 species, u8 form, bool32 shiny) { u32 paletteNum; + bool32 female = (form == 1); // Use standalone palette, unless entry is OOB or NULL (fallback to front-sprite-based) #if OW_POKEMON_OBJECT_EVENTS == TRUE && OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE if ((shiny && gSpeciesInfo[species].overworldPalette) @@ -2036,10 +2045,21 @@ static u8 LoadDynamicFollowerPalette(u16 species, u8 form, bool32 shiny) if ((paletteNum = IndexOfSpritePaletteTag(palTag)) < 16) return paletteNum; spritePalette.tag = palTag; - if (shiny) - spritePalette.data = gSpeciesInfo[species].overworldShinyPalette; + if (female && gSpeciesInfo[species].overworldPaletteFemale != NULL) + { + if (shiny) + spritePalette.data = gSpeciesInfo[species].overworldShinyPaletteFemale; + else + spritePalette.data = gSpeciesInfo[species].overworldPaletteFemale; + } else - spritePalette.data = gSpeciesInfo[species].overworldPalette; + { + if (shiny) + spritePalette.data = gSpeciesInfo[species].overworldShinyPalette; + else + spritePalette.data = gSpeciesInfo[species].overworldPalette; + } + // Check if pal data must be decompressed if (IsLZ77Data(spritePalette.data, PLTT_SIZE_4BPP, PLTT_SIZE_4BPP)) @@ -2055,7 +2075,7 @@ static u8 LoadDynamicFollowerPalette(u16 species, u8 form, bool32 shiny) { // Note that the shiny palette tag is `species + SPECIES_SHINY_TAG`, which must be increased with more pokemon // so that palette tags do not overlap - const u32 *palette = GetMonSpritePalFromSpecies(species, shiny, FALSE); //ETODO + const u32 *palette = GetMonSpritePalFromSpecies(species, shiny, female); //ETODO // palette already loaded if ((paletteNum = IndexOfSpritePaletteTag(species)) < 16) return paletteNum; @@ -2168,6 +2188,7 @@ static bool8 GetMonInfo(struct Pokemon *mon, u16 *species, u8 *form, u8 *shiny) return FALSE; } *species = GetMonData(mon, MON_DATA_SPECIES); + *form = GetMonGender(mon) == MON_FEMALE; *shiny = IsMonShiny(mon); switch (*species) { @@ -2814,18 +2835,25 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(objectEvent->graphicsId, objectEvent->movementType, &spriteTemplate, &subspriteTables); spriteFrameImage.size = graphicsInfo->size; spriteTemplate.images = &spriteFrameImage; + if (OW_GFX_COMPRESS) spriteTemplate.tileTag = LoadSheetGraphicsInfo(graphicsInfo, objectEvent->graphicsId, NULL); - if (spriteTemplate.paletteTag != TAG_NONE && spriteTemplate.paletteTag != OBJ_EVENT_PAL_TAG_DYNAMIC) + + if (spriteTemplate.paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) + { + u32 paletteNum = LoadDynamicFollowerPalette(OW_SPECIES(objectEvent), OW_FORM(objectEvent), objectEvent->shiny); + spriteTemplate.paletteTag = GetSpritePaletteTagByPaletteNum(paletteNum); + } + else if (spriteTemplate.paletteTag != TAG_NONE) + { LoadObjectEventPalette(spriteTemplate.paletteTag); + } i = CreateSprite(&spriteTemplate, 0, 0, 0); if (i != MAX_SPRITES) { sprite = &gSprites[i]; // Use palette from species palette table - if (spriteTemplate.paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) - sprite->oam.paletteNum = LoadDynamicFollowerPalette(OW_SPECIES(objectEvent), OW_FORM(objectEvent), objectEvent->shiny); if (OW_GFX_COMPRESS && sprite->usingSheet) sprite->sheetSpan = GetSpanPerImage(sprite->oam.shape, sprite->oam.size); GetMapCoordsFromSpritePos(x + objectEvent->currentCoords.x, y + objectEvent->currentCoords.y, &sprite->x, &sprite->y); @@ -5651,7 +5679,7 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri s16 targetX; s16 targetY; u32 playerAction = gObjectEvents[gPlayerAvatar.objectEventId].movementActionId; - + targetX = gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.x; targetY = gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.y; x = gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x; @@ -6204,11 +6232,11 @@ u8 GetSidewaysStairsCollision(struct ObjectEvent *objectEvent, u8 dir, u8 curren { if ((dir == DIR_SOUTH || dir == DIR_NORTH) && collision != COLLISION_NONE) return collision; - + // cant descend stairs into water if (MetatileBehavior_IsSurfableFishableWater(nextBehavior)) return collision; - + if (MetatileBehavior_IsSidewaysStairsLeftSide(nextBehavior)) { //moving ONTO left side stair @@ -6241,12 +6269,12 @@ u8 GetSidewaysStairsCollision(struct ObjectEvent *objectEvent, u8 dir, u8 curren else return collision; } - + return collision; } static u8 GetVanillaCollision(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 direction) -{ +{ if (IsCoordOutsideObjectEventMovementRange(objectEvent, x, y)) return COLLISION_OUTSIDE_RANGE; else if (MapGridGetCollisionAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(objectEvent, x, y, direction)) @@ -6257,7 +6285,7 @@ static u8 GetVanillaCollision(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 return COLLISION_ELEVATION_MISMATCH; else if (DoesObjectCollideWithObjectAt(objectEvent, x, y)) return COLLISION_OBJECT_EVENT; - + return COLLISION_NONE; } @@ -6296,14 +6324,14 @@ u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir) u8 currentBehavior = MapGridGetMetatileBehaviorAt(objectEvent->currentCoords.x, objectEvent->currentCoords.y); u8 nextBehavior = MapGridGetMetatileBehaviorAt(x, y); u8 collision; - + #if OW_FLAG_NO_COLLISION != 0 if (FlagGet(OW_FLAG_NO_COLLISION)) return COLLISION_NONE; #endif - + objectEvent->directionOverwrite = DIR_NONE; - + //sideways stairs checks if (MetatileBehavior_IsSidewaysStairsLeftSideTop(nextBehavior) && dir == DIR_EAST) return COLLISION_IMPASSABLE; //moving onto left-side top edge east from regular ground -> nope @@ -6322,10 +6350,10 @@ u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir) else if (!(MetatileBehavior_IsSidewaysStairsLeftSideBottom(currentBehavior) || MetatileBehavior_IsSidewaysStairsRightSideBottom(currentBehavior)) && dir == DIR_NORTH && (MetatileBehavior_IsSidewaysStairsLeftSideBottom(nextBehavior) || MetatileBehavior_IsSidewaysStairsRightSideBottom(nextBehavior))) return COLLISION_IMPASSABLE; //trying to move north onto top stair tile at same level from non-stair -> no - + // regular checks collision = GetVanillaCollision(objectEvent, x, y, dir); - + //sideways stairs direction change checks collision = GetSidewaysStairsCollision(objectEvent, dir, currentBehavior, nextBehavior, collision); switch (collision) @@ -6341,7 +6369,7 @@ u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir) objectEvent->directionOverwrite = GetRightSideStairsDirection(dir); return COLLISION_NONE; } - + return collision; } @@ -6549,10 +6577,10 @@ static u8 TryUpdateMovementActionOnStairs(struct ObjectEvent *objectEvent, u8 mo { if (objectEvent->isPlayer || objectEvent->localId == OBJ_EVENT_ID_FOLLOWER) return movementActionId; // handled separately - + if (!ObjectMovingOnRockStairs(objectEvent, objectEvent->movementDirection)) return movementActionId; - + switch (movementActionId) { case MOVEMENT_ACTION_WALK_NORMAL_DOWN: @@ -6572,7 +6600,7 @@ bool8 ObjectEventSetHeldMovement(struct ObjectEvent *objectEvent, u8 movementAct { if (ObjectEventIsMovementOverridden(objectEvent)) return TRUE; - + movementActionId = TryUpdateMovementActionOnStairs(objectEvent, movementActionId); UnfreezeObjectEvent(objectEvent); diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 51952c3627..2a20ae5a78 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -335,7 +335,7 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8 s16 currX = gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x; s16 currY = gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y; u8 currBehavior = MapGridGetMetatileBehaviorAt(currX, currY); - + switch (direction) { case DIR_EAST: @@ -364,7 +364,7 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8 objectEventId = GetObjectEventIdByPosition(position->x, position->y, position->elevation); break; } - + if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER) { if (MetatileBehavior_IsCounter(metatileBehavior) != TRUE) diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 5f1710dbff..6cb46cb378 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -460,7 +460,7 @@ static bool8 DoForcedMovement(u8 direction, void (*moveFunc)(u8)) { struct PlayerAvatar *playerAvatar = &gPlayerAvatar; u8 collision; - + // Check for sideways stairs onto ice movement. switch (direction) { @@ -473,7 +473,7 @@ static bool8 DoForcedMovement(u8 direction, void (*moveFunc)(u8)) direction = DIR_EAST; break; } - + collision = CheckForPlayerAvatarCollision(direction); playerAvatar->flags |= PLAYER_AVATAR_FLAG_FORCED_MOVE; @@ -679,7 +679,7 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) PlayerRunSlow(direction); else PlayerRun(direction); - + gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_DASH; return; } @@ -720,7 +720,7 @@ static u8 CheckForPlayerAvatarStaticCollision(u8 direction) u8 CheckForObjectEventCollision(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 direction, u8 metatileBehavior) { u8 collision = GetCollisionAtCoords(objectEvent, x, y, direction); - + if (collision == COLLISION_ELEVATION_MISMATCH && CanStopSurfing(x, y, direction)) return COLLISION_STOP_SURFING; @@ -738,7 +738,7 @@ u8 CheckForObjectEventCollision(struct ObjectEvent *objectEvent, s16 x, s16 y, u return COLLISION_ROTATING_GATE; CheckAcroBikeCollision(x, y, metatileBehavior, &collision); } - + return collision; } @@ -2481,7 +2481,7 @@ u8 GetRightSideStairsDirection(u8 direction) if (direction > DIR_EAST) direction -= DIR_EAST; return direction; - } + } } u8 GetLeftSideStairsDirection(u8 direction) @@ -2504,11 +2504,11 @@ bool8 ObjectMovingOnRockStairs(struct ObjectEvent *objectEvent, u8 direction) #if SLOW_MOVEMENT_ON_STAIRS == TRUE s16 x = objectEvent->currentCoords.x; s16 y = objectEvent->currentCoords.y; - + // TODO followers on sideways stairs if (IsFollowerVisible() && GetFollowerObject() != NULL && (objectEvent->isPlayer || objectEvent->localId == OBJ_EVENT_ID_FOLLOWER)) return FALSE; - + switch (direction) { case DIR_NORTH: diff --git a/src/item_use.c b/src/item_use.c index d38c4b1f98..c04d9b9911 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -1284,7 +1284,7 @@ void ItemUseInBattle_BagMenu(u8 taskId) else { PlaySE(SE_SELECT); - if (!(B_TRY_CATCH_TRAINER_BALL >= GEN_4 && (ItemId_GetBattleUsage(gSpecialVar_ItemId) == EFFECT_ITEM_THROW_BALL) && (gBattleTypeFlags & BATTLE_TYPE_TRAINER))) + if (!ItemId_GetImportance(gSpecialVar_ItemId) && !(B_TRY_CATCH_TRAINER_BALL >= GEN_4 && (ItemId_GetBattleUsage(gSpecialVar_ItemId) == EFFECT_ITEM_THROW_BALL) && (gBattleTypeFlags & BATTLE_TYPE_TRAINER))) RemoveUsedItem(); ScheduleBgCopyTilemapToVram(2); if (!InBattlePyramid()) @@ -1499,4 +1499,63 @@ void Task_ItemUse_CloseMessageBoxAndReturnToField_VsSeeker(u8 taskId) Task_CloseCantUseKeyItemMessage(taskId); } +static void Task_DisplayPokeFluteMessage(u8 taskId) +{ + if (WaitFanfare(FALSE)) + { + if (gTasks[taskId].data[3] == 0) + DisplayItemMessage(taskId, FONT_NORMAL, gText_PokeFluteAwakenedMon, CloseItemMessage); + else + DisplayItemMessageOnField(taskId, gText_PokeFluteAwakenedMon, Task_CloseCantUseKeyItemMessage); + } +} + +static void Task_PlayPokeFlute(u8 taskId) +{ + PlayFanfareByFanfareNum(FANFARE_RG_POKE_FLUTE); + gTasks[taskId].func = Task_DisplayPokeFluteMessage; +} + +void ItemUseOutOfBattle_PokeFlute(u8 taskId) +{ + bool32 wokeSomeoneUp = FALSE; + u32 i; + + for (i = 0; i < CalculatePlayerPartyCount(); i++) + { + if (!ExecuteTableBasedItemEffect(&gPlayerParty[i], ITEM_AWAKENING, i, 0)) + wokeSomeoneUp = TRUE; + } + + if (wokeSomeoneUp) + { + if (gTasks[taskId].data[3] == 0) + DisplayItemMessage(taskId, FONT_NORMAL, gText_PlayedPokeFlute, Task_PlayPokeFlute); + else + DisplayItemMessageOnField(taskId, gText_PlayedPokeFlute, Task_PlayPokeFlute); + } + else + { + if (gTasks[taskId].data[3] == 0) + DisplayItemMessage(taskId, FONT_NORMAL, gText_PlayedPokeFluteCatchy, CloseItemMessage); + else + DisplayItemMessageOnField(taskId, gText_PlayedPokeFluteCatchy, Task_CloseCantUseKeyItemMessage); + } +} + +static void ItemUseOnFieldCB_TownMap(u8 taskId) +{ + LockPlayerFieldControls(); + ScriptContext_SetupScript(EventScript_RegionMap); + DestroyTask(taskId); +} + +void ItemUseOutOfBattle_TownMap(u8 taskId) +{ + sItemUseOnFieldCB = ItemUseOnFieldCB_TownMap; + gFieldCallback = FieldCB_UseItemOnField; + gBagMenu->newScreenCallback = CB2_ReturnToField; + Task_FadeAndCloseBagMenu(taskId); +} + #undef tUsingRegisteredKeyItem diff --git a/src/link.c b/src/link.c index f784a36c67..a78e69260a 100644 --- a/src/link.c +++ b/src/link.c @@ -2367,3 +2367,17 @@ void ResetRecvBuffer(void) } } } + +bool32 ShouldCheckForUnionRoom(void) +{ + if (OW_UNION_DISABLE_CHECK) + return FALSE; + + if (OW_FLAG_MOVE_UNION_ROOM_CHECK == 0) + return TRUE; + + if (FlagGet(OW_FLAG_MOVE_UNION_ROOM_CHECK)) + return TRUE; + + return FALSE; +} diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c index 98914ae5e8..e432827f31 100644 --- a/src/metatile_behavior.c +++ b/src/metatile_behavior.c @@ -1527,7 +1527,7 @@ bool8 MetatileBehavior_IsSidewaysStairsRightSideAny(u8 metatileBehavior) bool8 MetatileBehavior_IsSidewaysStairsLeftSideAny(u8 metatileBehavior) { - if (metatileBehavior == MB_SIDEWAYS_STAIRS_LEFT_SIDE + if (metatileBehavior == MB_SIDEWAYS_STAIRS_LEFT_SIDE || metatileBehavior == MB_SIDEWAYS_STAIRS_LEFT_SIDE_BOTTOM || metatileBehavior == MB_SIDEWAYS_STAIRS_LEFT_SIDE_TOP) return TRUE; diff --git a/src/overworld.c b/src/overworld.c index afc3c76e8e..5b8310f167 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -3486,7 +3486,7 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite) #define ITEM_TAG 0x2722 //same as money label bool8 GetSetItemObtained(u16 item, enum ItemObtainFlags caseId) -{ +{ #if OW_SHOW_ITEM_DESCRIPTIONS == OW_ITEM_DESCRIPTIONS_FIRST_TIME u8 index = item / 8; u8 bit = item % 8; @@ -3611,7 +3611,7 @@ void ScriptHideItemDescription(struct ScriptContext *ctx) static void ShowItemIconSprite(u16 item, bool8 firstTime, bool8 flash) { s16 x = 0, y = 0; - u8 iconSpriteId; + u8 iconSpriteId; u8 spriteId2 = MAX_SPRITES; if (flash) diff --git a/src/party_menu.c b/src/party_menu.c index 85109415b2..d737fd3df1 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -4578,7 +4578,7 @@ static bool8 NotUsingHPEVItemOnShedinja(struct Pokemon *mon, u16 item) return TRUE; } -static bool8 IsItemFlute(u16 item) +bool32 IsItemFlute(u16 item) { if (item == ITEM_BLUE_FLUTE || item == ITEM_RED_FLUTE || item == ITEM_YELLOW_FLUTE) return TRUE; @@ -4672,7 +4672,7 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task) if (canHeal == TRUE) { if (hp == 0) - AnimatePartySlot(gPartyMenu.slotId, 1); + AnimatePartySlot(gPartyMenu.slotId, 1); PartyMenuModifyHP(taskId, gPartyMenu.slotId, 1, GetMonData(mon, MON_DATA_HP) - hp, Task_DisplayHPRestoredMessage); ResetHPTaskData(taskId, 0, hp); return; diff --git a/src/pokemon.c b/src/pokemon.c index 3929303e70..84e0688c6b 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -6675,8 +6675,8 @@ void TrySpecialOverworldEvo(void) bool32 SpeciesHasGenderDifferences(u16 species) { if (gSpeciesInfo[species].frontPicFemale != NULL - || gSpeciesInfo[species].paletteFemale != NULL || gSpeciesInfo[species].backPicFemale != NULL + || gSpeciesInfo[species].paletteFemale != NULL || gSpeciesInfo[species].shinyPaletteFemale != NULL || gSpeciesInfo[species].iconSpriteFemale != NULL) return TRUE; @@ -6931,25 +6931,6 @@ void UpdateDaysPassedSinceFormChange(u16 days) } } -static inline u32 CalculateHiddenPowerType(struct Pokemon *mon) -{ - u32 typehp; - u32 type; - u8 typeBits = ((GetMonData(mon, MON_DATA_HP_IV) & 1) << 0) - | ((GetMonData(mon, MON_DATA_ATK_IV) & 1) << 1) - | ((GetMonData(mon, MON_DATA_DEF_IV) & 1) << 2) - | ((GetMonData(mon, MON_DATA_SPEED_IV) & 1) << 3) - | ((GetMonData(mon, MON_DATA_SPATK_IV) & 1) << 4) - | ((GetMonData(mon, MON_DATA_SPDEF_IV) & 1) << 5); - - type = (15 * typeBits) / 63 + 2; - if (type >= TYPE_MYSTERY) - type++; - type |= 0xC0; - typehp = type & 0x3F; - return typehp; -} - u32 CheckDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler) { u32 moveType = GetDynamicMoveType(mon, move, battler, NULL); diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index c2a0a4170a..0f21e7b282 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -435,38 +435,38 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_WEEDLE, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_KAKUNA, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_RATTATA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATTATA_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATTATA_ALOLA, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_RATICATE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATICATE_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATICATE_ALOLA, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_PIKACHU, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_PIKACHU_COSPLAY, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_PIKACHU_ROCK_STAR, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_PIKACHU_BELLE, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_PIKACHU_POP_STAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_PH_D, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_PHD, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_PIKACHU_LIBRE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_ORIGINAL_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_HOENN_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_SINNOH_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_UNOVA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_KALOS_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_ALOLA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_ORIGINAL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_HOENN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_SINNOH, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_UNOVA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_KALOS, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_ALOLA, .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_PIKACHU_WORLD, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_STARTER, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_SANDSHREW, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SANDSHREW_ALOLAN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SANDSHREW_ALOLA, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_NIDORAN_F, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_NIDORAN_M, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_CLEFAIRY, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_VULPIX, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_VULPIX_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_VULPIX_ALOLA, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_JIGGLYPUFF, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_ODDISH, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_PARAS, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_MEOWTH, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWTH_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWTH_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWTH_ALOLA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWTH_GALAR, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_PSYDUCK, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_MANKEY, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_GROWLITHE, .jumpType = JUMP_TYPE_FAST, }, @@ -478,7 +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_EEVEE_STARTER, .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, }, @@ -495,7 +495,7 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_MARILL, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_SUNKERN, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_WOOPER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_WOOPER_PALDEAN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_WOOPER_PALDEA, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_PINECO, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_SNUBBULL, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_SHUCKLE, .jumpType = JUMP_TYPE_SLOW, }, @@ -516,9 +516,9 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_MARSHTOMP, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_POOCHYENA, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_ZIGZAGOON, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ZIGZAGOON_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ZIGZAGOON_GALAR, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_LINOONE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LINOONE_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LINOONE_GALAR, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_WURMPLE, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_SILCOON, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_CASCOON, .jumpType = JUMP_TYPE_SLOW, }, @@ -567,8 +567,8 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_CHERUBI, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_CHERRIM_OVERCAST, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_CHERRIM_SUNSHINE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHELLOS_WEST_SEA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHELLOS_EAST_SEA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHELLOS_WEST, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHELLOS_EAST, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_BUNEARY, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_GLAMEOW, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_STUNKY, .jumpType = JUMP_TYPE_NORMAL, }, @@ -599,7 +599,7 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_PETILIL, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_SANDILE, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_DARUMAKA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DARUMAKA_GALARIAN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DARUMAKA_GALAR, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_DWEBBLE, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_SCRAGGY, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_ARCHEN, .jumpType = JUMP_TYPE_NORMAL, }, @@ -622,7 +622,7 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_CUBCHOO, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_SHELMET, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_STUNFISK, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_STUNFISK_GALARIAN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_STUNFISK_GALAR, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_PAWNIARD, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_DURANT, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_CHESPIN, .jumpType = JUMP_TYPE_SLOW, }, @@ -649,7 +649,7 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .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_SCATTERBUG_POKEBALL, .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, }, @@ -668,12 +668,12 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .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_SPEWPA_POKEBALL, .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, }, - { .species = SPECIES_MEOWSTIC_MALE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWSTIC_FEMALE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWSTIC_M, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWSTIC_F, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_BINACLE, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_CLAUNCHER, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_HELIOPTILE, .jumpType = JUMP_TYPE_NORMAL, }, diff --git a/src/pokemon_sprite_visualizer.c b/src/pokemon_sprite_visualizer.c index fea6324129..87caf862ae 100644 --- a/src/pokemon_sprite_visualizer.c +++ b/src/pokemon_sprite_visualizer.c @@ -1621,7 +1621,7 @@ static void UpdateShadowSizeValue(u8 taskId, bool8 increment) else { update = 1; - data->shadowSettings.overrideSize += 1; + data->shadowSettings.overrideSize += 1; } } else @@ -2001,7 +2001,10 @@ static void ReloadPokemonSprites(struct PokemonSpriteVisualizer *data) gSprites[data->iconspriteId].oam.priority = 0; //Follower Sprite - data->followerspriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MON_BASE + species + (data->isShiny ? SPECIES_SHINY_TAG : 0), + u16 graphicsId = (OBJ_EVENT_GFX_MON_BASE + species) & OBJ_EVENT_GFX_SPECIES_MASK; + graphicsId |= data->isFemale << OBJ_EVENT_GFX_SPECIES_BITS; + graphicsId += data->isShiny ? SPECIES_SHINY_TAG : 0; + data->followerspriteId = CreateObjectGraphicsSprite(graphicsId, SpriteCB_Follower, VISUALIZER_FOLLOWER_X, VISUALIZER_FOLLOWER_Y, diff --git a/src/strings.c b/src/strings.c index 3f21f86c47..ff1dde2cce 100644 --- a/src/strings.c +++ b/src/strings.c @@ -196,6 +196,9 @@ const u8 gText_TheBattle[] = _("the battle"); const u8 gText_ThePokemonList[] = _("the POKéMON LIST"); const u8 gText_TheShop[] = _("the shop"); const u8 gText_ThePC[] = _("the PC"); +const u8 gText_PlayedPokeFluteCatchy[] = _("Played the POKé FLUTE.\pNow, that's a catchy tune!{PAUSE_UNTIL_PRESS}"); +const u8 gText_PlayedPokeFlute[] = _("Played the POKé FLUTE."); +const u8 gText_PokeFluteAwakenedMon[] = _("The POKé FLUTE awakened sleeping\nPOKéMON.{PAUSE_UNTIL_PRESS}"); const u8 *const gBagMenu_ReturnToStrings[] = { diff --git a/src/union_room.c b/src/union_room.c index f4ee01d1b4..ac4c61035a 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -3294,6 +3294,9 @@ void InitUnionRoom(void) { struct WirelessLink_URoom *data; + if (!ShouldCheckForUnionRoom()) + return; + sUnionRoomPlayerName[0] = EOS; CreateTask(Task_InitUnionRoom, 0); sWirelessLinkMain.uRoom = sWirelessLinkMain.uRoom; // Needed to match. @@ -3377,6 +3380,9 @@ static void Task_InitUnionRoom(u8 taskId) bool16 BufferUnionRoomPlayerName(void) { + if (!ShouldCheckForUnionRoom()) + return FALSE; + if (sUnionRoomPlayerName[0] != EOS) { StringCopy(gStringVar1, sUnionRoomPlayerName); diff --git a/test/battle/ability/commander.c b/test/battle/ability/commander.c index af02f971a3..e6a85b0681 100644 --- a/test/battle/ability/commander.c +++ b/test/battle/ability/commander.c @@ -254,7 +254,7 @@ DOUBLE_BATTLE_TEST("Commander doesn't prevent Imposter from working on a Command } } -DOUBLE_BATTLE_TEST("Commander Tatsugiri is still affected by Haze while controlling Dondozo") +DOUBLE_BATTLE_TEST("Commander Tatsugiri is still affected by Perish Song while controlling Dondozo") { GIVEN { PLAYER(SPECIES_DONDOZO); diff --git a/test/battle/ability/cud_chew.c b/test/battle/ability/cud_chew.c index 305969aa93..297635c9f3 100644 --- a/test/battle/ability/cud_chew.c +++ b/test/battle/ability/cud_chew.c @@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Cud Chew will activate Kee Berry effect again on the next tu ASSUME(gItemsInfo[ITEM_KEE_BERRY].holdEffect == HOLD_EFFECT_KEE_BERRY); ASSUME(gMovesInfo[MOVE_TACKLE].category == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_TAUROS_PALDEAN_COMBAT_BREED) { Ability(ABILITY_CUD_CHEW); Item(ITEM_KEE_BERRY); } + OPPONENT(SPECIES_TAUROS_PALDEA_COMBAT) { Ability(ABILITY_CUD_CHEW); Item(ITEM_KEE_BERRY); } } WHEN { TURN { MOVE(player, MOVE_TACKLE); } TURN { MOVE(player, MOVE_CELEBRATE);} @@ -31,7 +31,7 @@ SINGLE_BATTLE_TEST("Cud Chew will activate Oran Berry effect again on the next t ASSUME(gMovesInfo[MOVE_DRAGON_RAGE].effect == EFFECT_FIXED_DAMAGE_ARG); ASSUME(gMovesInfo[MOVE_DRAGON_RAGE].argument == 40); PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_TAUROS_PALDEAN_COMBAT_BREED) { MaxHP(60); HP(60); Ability(ABILITY_CUD_CHEW); Item(ITEM_ORAN_BERRY); } + OPPONENT(SPECIES_TAUROS_PALDEA_COMBAT) { MaxHP(60); HP(60); Ability(ABILITY_CUD_CHEW); Item(ITEM_ORAN_BERRY); } } WHEN { TURN { MOVE(player, MOVE_DRAGON_RAGE); } TURN { MOVE(player, MOVE_CELEBRATE);} diff --git a/test/battle/ability/embody_aspect.c b/test/battle/ability/embody_aspect.c index a2427875f6..c5c8f5d610 100644 --- a/test/battle/ability/embody_aspect.c +++ b/test/battle/ability/embody_aspect.c @@ -6,10 +6,10 @@ SINGLE_BATTLE_TEST("Embody Aspect raises a stat depending on the users form by o { u16 species, ability; - PARAMETRIZE { species = SPECIES_OGERPON_TEAL_MASK_TERA; ability = ABILITY_EMBODY_ASPECT_TEAL_MASK; } - PARAMETRIZE { species = SPECIES_OGERPON_HEARTHFLAME_MASK_TERA; ability = ABILITY_EMBODY_ASPECT_HEARTHFLAME_MASK; } - PARAMETRIZE { species = SPECIES_OGERPON_WELLSPRING_MASK_TERA; ability = ABILITY_EMBODY_ASPECT_WELLSPRING_MASK; } - PARAMETRIZE { species = SPECIES_OGERPON_CORNERSTONE_MASK_TERA; ability = ABILITY_EMBODY_ASPECT_CORNERSTONE_MASK; } + PARAMETRIZE { species = SPECIES_OGERPON_TEAL_TERA; ability = ABILITY_EMBODY_ASPECT_TEAL_MASK; } + PARAMETRIZE { species = SPECIES_OGERPON_HEARTHFLAME_TERA; ability = ABILITY_EMBODY_ASPECT_HEARTHFLAME_MASK; } + PARAMETRIZE { species = SPECIES_OGERPON_WELLSPRING_TERA; ability = ABILITY_EMBODY_ASPECT_WELLSPRING_MASK; } + PARAMETRIZE { species = SPECIES_OGERPON_CORNERSTONE_TERA; ability = ABILITY_EMBODY_ASPECT_CORNERSTONE_MASK; } GIVEN { PLAYER(SPECIES_WOBBUFFET); @@ -44,7 +44,7 @@ SINGLE_BATTLE_TEST("Embody Aspect activates when it's no longer effected by Neut GIVEN { PLAYER(SPECIES_WEEZING) { Ability(ABILITY_NEUTRALIZING_GAS); } PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_OGERPON_TEAL_MASK_TERA) { Ability(ABILITY_EMBODY_ASPECT_TEAL_MASK); } + OPPONENT(SPECIES_OGERPON_TEAL_TERA) { Ability(ABILITY_EMBODY_ASPECT_TEAL_MASK); } } WHEN { TURN { SWITCH(player, 1); } } SCENE { diff --git a/test/battle/ability/galvanize.c b/test/battle/ability/galvanize.c index 7f604f3dac..1da82e861d 100644 --- a/test/battle/ability/galvanize.c +++ b/test/battle/ability/galvanize.c @@ -11,7 +11,7 @@ SINGLE_BATTLE_TEST("Galvanize turns a normal type move into Electric") { GIVEN { PLAYER(SPECIES_KRABBY); - OPPONENT(SPECIES_GEODUDE_ALOLAN) { Ability(ABILITY_GALVANIZE); } + OPPONENT(SPECIES_GEODUDE_ALOLA) { Ability(ABILITY_GALVANIZE); } } WHEN { TURN { MOVE(opponent, MOVE_TACKLE); } } SCENE { @@ -33,7 +33,7 @@ SINGLE_BATTLE_TEST("Galvanize can not turn certain moves into Electric type move ASSUME(gMovesInfo[MOVE_WEATHER_BALL].effect == EFFECT_WEATHER_BALL); ASSUME(gMovesInfo[MOVE_MULTI_ATTACK].effect == EFFECT_CHANGE_TYPE_ON_ITEM); PLAYER(SPECIES_KRABBY); - OPPONENT(SPECIES_GEODUDE_ALOLAN) { Ability(ABILITY_GALVANIZE); } + OPPONENT(SPECIES_GEODUDE_ALOLA) { Ability(ABILITY_GALVANIZE); } } WHEN { TURN { MOVE(opponent, move); } } SCENE { diff --git a/test/battle/ability/grim_neigh.c b/test/battle/ability/grim_neigh.c index b4d82487d8..1d1e50ee12 100644 --- a/test/battle/ability/grim_neigh.c +++ b/test/battle/ability/grim_neigh.c @@ -5,7 +5,7 @@ DOUBLE_BATTLE_TEST("Grim Neigh raises Sp. Attack by one stage after directly cau { u32 species = 0, ability = 0, abilityPopUp = 0; PARAMETRIZE { species = SPECIES_SPECTRIER; ability = ABILITY_GRIM_NEIGH; abilityPopUp = ABILITY_GRIM_NEIGH; } - PARAMETRIZE { species = SPECIES_CALYREX_SHADOW_RIDER; ability = ABILITY_AS_ONE_SHADOW_RIDER; abilityPopUp = ABILITY_GRIM_NEIGH; } + PARAMETRIZE { species = SPECIES_CALYREX_SHADOW; ability = ABILITY_AS_ONE_SHADOW_RIDER; abilityPopUp = ABILITY_GRIM_NEIGH; } GIVEN { ASSUME(gMovesInfo[MOVE_DISCHARGE].target == MOVE_TARGET_FOES_AND_ALLY); PLAYER(species) { Ability(ability); } @@ -41,7 +41,7 @@ DOUBLE_BATTLE_TEST("Grim Neigh does not trigger if Pokemon faint to indirect dam { u32 species = 0, ability = 0, abilityPopUp = 0; PARAMETRIZE { species = SPECIES_SPECTRIER; ability = ABILITY_GRIM_NEIGH; abilityPopUp = ABILITY_GRIM_NEIGH; } - PARAMETRIZE { species = SPECIES_CALYREX_SHADOW_RIDER; ability = ABILITY_AS_ONE_SHADOW_RIDER; abilityPopUp = ABILITY_GRIM_NEIGH; } + PARAMETRIZE { species = SPECIES_CALYREX_SHADOW; ability = ABILITY_AS_ONE_SHADOW_RIDER; abilityPopUp = ABILITY_GRIM_NEIGH; } GIVEN { PLAYER(species) { Ability(ability); } PLAYER(SPECIES_SNORUNT) { HP(1); Status1(STATUS1_POISON); } @@ -78,7 +78,7 @@ DOUBLE_BATTLE_TEST("Grim Neigh does not increase damage done by the same move th s16 damage[2]; u32 species = 0, ability = 0, abilityPopUp = 0; PARAMETRIZE { species = SPECIES_SPECTRIER; ability = ABILITY_GRIM_NEIGH; abilityPopUp = ABILITY_GRIM_NEIGH; } - PARAMETRIZE { species = SPECIES_CALYREX_SHADOW_RIDER; ability = ABILITY_AS_ONE_SHADOW_RIDER; abilityPopUp = ABILITY_GRIM_NEIGH; } + PARAMETRIZE { species = SPECIES_CALYREX_SHADOW; ability = ABILITY_AS_ONE_SHADOW_RIDER; abilityPopUp = ABILITY_GRIM_NEIGH; } KNOWN_FAILING; // Requires simultaneous damage implementation GIVEN { diff --git a/test/battle/ability/moxie.c b/test/battle/ability/moxie.c index 79b1fc989f..28fb9333fe 100644 --- a/test/battle/ability/moxie.c +++ b/test/battle/ability/moxie.c @@ -6,7 +6,7 @@ DOUBLE_BATTLE_TEST("Moxie/Chilling Neigh raises Attack by one stage after direct u32 species = 0, ability = 0, abilityPopUp = 0; PARAMETRIZE { species = SPECIES_SALAMENCE; ability = ABILITY_MOXIE; abilityPopUp = ABILITY_MOXIE; } PARAMETRIZE { species = SPECIES_GLASTRIER; ability = ABILITY_CHILLING_NEIGH; abilityPopUp = ABILITY_CHILLING_NEIGH; } - PARAMETRIZE { species = SPECIES_CALYREX_ICE_RIDER; ability = ABILITY_AS_ONE_ICE_RIDER; abilityPopUp = ABILITY_CHILLING_NEIGH; } + PARAMETRIZE { species = SPECIES_CALYREX_ICE; ability = ABILITY_AS_ONE_ICE_RIDER; abilityPopUp = ABILITY_CHILLING_NEIGH; } GIVEN { ASSUME(gMovesInfo[MOVE_EARTHQUAKE].target == MOVE_TARGET_FOES_AND_ALLY); PLAYER(species) { Ability(ability); } @@ -45,7 +45,7 @@ DOUBLE_BATTLE_TEST("Moxie/Chilling Neigh does not trigger if Pokemon faint to in u32 species = 0, ability = 0, abilityPopUp = 0; PARAMETRIZE { species = SPECIES_SALAMENCE; ability = ABILITY_MOXIE; abilityPopUp = ABILITY_MOXIE; } PARAMETRIZE { species = SPECIES_GLASTRIER; ability = ABILITY_CHILLING_NEIGH; abilityPopUp = ABILITY_CHILLING_NEIGH; } - PARAMETRIZE { species = SPECIES_CALYREX_ICE_RIDER; ability = ABILITY_AS_ONE_ICE_RIDER; abilityPopUp = ABILITY_CHILLING_NEIGH; } + PARAMETRIZE { species = SPECIES_CALYREX_ICE; ability = ABILITY_AS_ONE_ICE_RIDER; abilityPopUp = ABILITY_CHILLING_NEIGH; } GIVEN { PLAYER(species) { Ability(ability); } PLAYER(SPECIES_SNORUNT) { HP(1); Status1(STATUS1_POISON); } @@ -82,7 +82,7 @@ SINGLE_BATTLE_TEST("Moxie/Chilling Neigh does not trigger when already at maximu u32 species = 0, ability = 0, abilityPopUp = 0; PARAMETRIZE { species = SPECIES_SALAMENCE; ability = ABILITY_MOXIE; abilityPopUp = ABILITY_MOXIE; } PARAMETRIZE { species = SPECIES_GLASTRIER; ability = ABILITY_CHILLING_NEIGH; abilityPopUp = ABILITY_CHILLING_NEIGH; } - PARAMETRIZE { species = SPECIES_CALYREX_ICE_RIDER; ability = ABILITY_AS_ONE_ICE_RIDER; abilityPopUp = ABILITY_CHILLING_NEIGH; } + PARAMETRIZE { species = SPECIES_CALYREX_ICE; ability = ABILITY_AS_ONE_ICE_RIDER; abilityPopUp = ABILITY_CHILLING_NEIGH; } GIVEN { ASSUME(gMovesInfo[MOVE_BELLY_DRUM].effect == EFFECT_BELLY_DRUM); PLAYER(species) { Ability(ability); } @@ -120,7 +120,7 @@ DOUBLE_BATTLE_TEST("Moxie/Chilling Neigh does not increase damage done by the sa u32 species = 0, ability = 0, abilityPopUp = 0; PARAMETRIZE { species = SPECIES_SALAMENCE; ability = ABILITY_MOXIE; abilityPopUp = ABILITY_MOXIE; } PARAMETRIZE { species = SPECIES_GLASTRIER; ability = ABILITY_CHILLING_NEIGH; abilityPopUp = ABILITY_CHILLING_NEIGH; } - PARAMETRIZE { species = SPECIES_CALYREX_ICE_RIDER; ability = ABILITY_AS_ONE_ICE_RIDER; abilityPopUp = ABILITY_CHILLING_NEIGH; } + PARAMETRIZE { species = SPECIES_CALYREX_ICE; ability = ABILITY_AS_ONE_ICE_RIDER; abilityPopUp = ABILITY_CHILLING_NEIGH; } KNOWN_FAILING; // Requires simultaneous damage implementation GIVEN { diff --git a/test/battle/ability/mummy.c b/test/battle/ability/mummy.c index ed80a178e6..b6323e83ee 100644 --- a/test/battle/ability/mummy.c +++ b/test/battle/ability/mummy.c @@ -81,8 +81,8 @@ SINGLE_BATTLE_TEST("Mummy doesn't replace abilities that can't be suppressed") PARAMETRIZE { species = SPECIES_CRAMORANT; ability = ABILITY_GULP_MISSILE; } PARAMETRIZE { species = SPECIES_PALAFIN_ZERO; ability = ABILITY_ZERO_TO_HERO; } PARAMETRIZE { species = SPECIES_TATSUGIRI; ability = ABILITY_COMMANDER; } - PARAMETRIZE { species = SPECIES_CALYREX_SHADOW_RIDER; ability = ABILITY_AS_ONE_SHADOW_RIDER; } - PARAMETRIZE { species = SPECIES_CALYREX_ICE_RIDER; ability = ABILITY_AS_ONE_ICE_RIDER; } + PARAMETRIZE { species = SPECIES_CALYREX_SHADOW; ability = ABILITY_AS_ONE_SHADOW_RIDER; } + PARAMETRIZE { species = SPECIES_CALYREX_ICE; ability = ABILITY_AS_ONE_ICE_RIDER; } GIVEN { PLAYER(SPECIES_YAMASK); diff --git a/test/battle/ability/pastel_veil.c b/test/battle/ability/pastel_veil.c index ebf9d74645..8ea83bbf86 100644 --- a/test/battle/ability/pastel_veil.c +++ b/test/battle/ability/pastel_veil.c @@ -6,7 +6,7 @@ SINGLE_BATTLE_TEST("Pastel Veil prevents Poison Sting poison") GIVEN { ASSUME(MoveHasAdditionalEffect(MOVE_POISON_STING, MOVE_EFFECT_POISON) == TRUE); PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } } WHEN { TURN { MOVE(player, MOVE_POISON_STING); } } SCENE { @@ -21,7 +21,7 @@ DOUBLE_BATTLE_TEST("Pastel Veil prevents Poison Sting poison on partner") ASSUME(MoveHasAdditionalEffect(MOVE_POISON_STING, MOVE_EFFECT_POISON) == TRUE); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); - OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } OPPONENT(SPECIES_WYNAUT); } WHEN { TURN { MOVE(playerLeft, MOVE_POISON_STING, target: opponentRight); } @@ -37,7 +37,7 @@ SINGLE_BATTLE_TEST("Pastel Veil immediately cures Mold Breaker poison") GIVEN { ASSUME(gMovesInfo[MOVE_TOXIC].effect == EFFECT_TOXIC); PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); } - OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } } WHEN { TURN { MOVE(player, MOVE_TOXIC); MOVE(opponent, MOVE_TACKLE); } } SCENE { @@ -56,7 +56,7 @@ DOUBLE_BATTLE_TEST("Pastel Veil does not cure Mold Breaker poison on partner") ASSUME(gMovesInfo[MOVE_TOXIC].effect == EFFECT_TOXIC); PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); } PLAYER(SPECIES_WYNAUT); - OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } OPPONENT(SPECIES_WYNAUT); } WHEN { TURN { MOVE(playerLeft, MOVE_TOXIC, target: opponentRight); } @@ -72,7 +72,7 @@ SINGLE_BATTLE_TEST("Pastel Veil prevents Toxic bad poison") GIVEN { ASSUME(gMovesInfo[MOVE_TOXIC].effect == EFFECT_TOXIC); PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } } WHEN { TURN { MOVE(player, MOVE_TOXIC); } } SCENE { @@ -89,7 +89,7 @@ DOUBLE_BATTLE_TEST("Pastel Veil prevents Toxic bad poison on partner") ASSUME(gMovesInfo[MOVE_TOXIC].effect == EFFECT_TOXIC); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); - OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } OPPONENT(SPECIES_WYNAUT); } WHEN { TURN { MOVE(playerLeft, MOVE_TOXIC, target: opponentRight); } @@ -107,7 +107,7 @@ SINGLE_BATTLE_TEST("Pastel Veil prevents Toxic Spikes poison") ASSUME(gMovesInfo[MOVE_TOXIC_SPIKES].effect == EFFECT_TOXIC_SPIKES); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } } WHEN { TURN { MOVE(player, MOVE_TOXIC_SPIKES); } TURN { SWITCH(opponent, 1); } @@ -123,7 +123,7 @@ DOUBLE_BATTLE_TEST("Pastel Veil prevents Toxic Spikes poison on partner") ASSUME(gMovesInfo[MOVE_TOXIC_SPIKES].effect == EFFECT_TOXIC_SPIKES); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); - OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { @@ -141,7 +141,7 @@ DOUBLE_BATTLE_TEST("Pastel Veil cures partner's poison on initial switch in") PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); } - OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } } WHEN { TURN {} } SCENE { @@ -159,7 +159,7 @@ DOUBLE_BATTLE_TEST("Pastel Veil cures partner's poison on switch in") PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); } OPPONENT(SPECIES_WYNAUT); - OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } } WHEN { TURN { SWITCH(opponentRight, 2); } } SCENE { diff --git a/test/battle/ability/protosynthesis.c b/test/battle/ability/protosynthesis.c index 58f10b366f..2be9f81d28 100644 --- a/test/battle/ability/protosynthesis.c +++ b/test/battle/ability/protosynthesis.c @@ -100,6 +100,125 @@ SINGLE_BATTLE_TEST("Protosynthesis activates on switch-in") } } -TO_DO_BATTLE_TEST("Protosynthesis activates in sun before Booster Energy"); -TO_DO_BATTLE_TEST("Protosynthesis activates even if the Pokémon is holding an Utility Umbrella"); -TO_DO_BATTLE_TEST("Protosynthesis doesn't activate if Cloud Nine/Air Lock is on the field"); +SINGLE_BATTLE_TEST("Protosynthesis boosts Attack 1st in case of a stat tie") +{ + GIVEN { + PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); Attack(5); Defense(5); SpAttack(5); SpDefense(5); Speed(5); } + OPPONENT(SPECIES_GROUDON) { Ability(ABILITY_DROUGHT); Speed(5); } + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_DROUGHT); + ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); + MESSAGE("Great Tusk's Attack was heightened!"); + } +} + +SINGLE_BATTLE_TEST("Protosynthesis boosts Defense 2nd in case of a stat tie") +{ + GIVEN { + PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); Attack(4); Defense(5); SpAttack(5); SpDefense(5); Speed(5); } + OPPONENT(SPECIES_GROUDON) { Ability(ABILITY_DROUGHT); Speed(5); } + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_DROUGHT); + ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); + MESSAGE("Great Tusk's Defense was heightened!"); + } +} + +SINGLE_BATTLE_TEST("Protosynthesis boosts Special Attack 3rd in case of a stat tie") +{ + GIVEN { + PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); Attack(4); Defense(4); SpAttack(5); SpDefense(5); Speed(5); } + OPPONENT(SPECIES_GROUDON) { Ability(ABILITY_DROUGHT); Speed(5); } + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_DROUGHT); + ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); + MESSAGE("Great Tusk's Sp. Atk was heightened!"); + } +} + +SINGLE_BATTLE_TEST("Protosynthesis boosts Special Defense 4th in case of a stat tie") +{ + GIVEN { + PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); Attack(4); Defense(4); SpAttack(4); SpDefense(5); Speed(5); } + OPPONENT(SPECIES_GROUDON) { Ability(ABILITY_DROUGHT); Speed(5); } + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_DROUGHT); + ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); + MESSAGE("Great Tusk's Sp. Def was heightened!"); + } +} + +SINGLE_BATTLE_TEST("Protosynthesis activates in Sun before Booster Energy") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); Item(ITEM_BOOSTER_ENERGY); } + OPPONENT(SPECIES_NINETALES) { Ability(ABILITY_DROUGHT); } + } WHEN { + TURN { SWITCH(player, 1); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_DROUGHT); + ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); + } THEN { + EXPECT_EQ(player->item, ITEM_BOOSTER_ENERGY); + } +} + +SINGLE_BATTLE_TEST("Protosynthesis doesn't activate for a transformed battler") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); Item(ITEM_BOOSTER_ENERGY); } + OPPONENT(SPECIES_NINETALES) { Ability(ABILITY_DROUGHT); Item(ITEM_BOOSTER_ENERGY); } + } WHEN { + TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TRANSFORM); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_DROUGHT); + ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRANSFORM, opponent); + NOT ABILITY_POPUP(opponent, ABILITY_PROTOSYNTHESIS); + } THEN { + EXPECT_EQ(player->item, ITEM_BOOSTER_ENERGY); + EXPECT_EQ(opponent->item, ITEM_BOOSTER_ENERGY); + EXPECT_EQ(opponent->ability, ABILITY_PROTOSYNTHESIS); + } +} + +SINGLE_BATTLE_TEST("Protosynthesis activates even if the Pokémon is holding an Utility Umbrella") +{ + GIVEN { + PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); Item(ITEM_UTILITY_UMBRELLA); } + OPPONENT(SPECIES_NINETALES) { Ability(ABILITY_DROUGHT); } + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_DROUGHT); + ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); + } +} + +SINGLE_BATTLE_TEST("Protosynthesis doesn't activate if Cloud Nine/Air Lock is on the field") +{ + u32 species, ability; + PARAMETRIZE { species = SPECIES_RAYQUAZA; ability = ABILITY_AIR_LOCK; } + PARAMETRIZE { species = SPECIES_GOLDUCK; ability = ABILITY_CLOUD_NINE; } + + GIVEN { + PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); } + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); } + } SCENE { + ABILITY_POPUP(opponent, ability); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SUNNY_DAY, opponent); + NOT ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); + } +} diff --git a/test/battle/ability/quark_drive.c b/test/battle/ability/quark_drive.c index 4e81b012ae..928ee45eb5 100644 --- a/test/battle/ability/quark_drive.c +++ b/test/battle/ability/quark_drive.c @@ -100,3 +100,109 @@ SINGLE_BATTLE_TEST("Quark Drive activates on switch-in") MESSAGE("Iron Moth's Sp. Atk was heightened!"); } } + +SINGLE_BATTLE_TEST("Quark Drive activates on Electric Terrain even if not grounded") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_IRON_JUGULIS].types[0] == TYPE_FLYING || gSpeciesInfo[SPECIES_IRON_JUGULIS].types[1] == TYPE_FLYING); + PLAYER(SPECIES_IRON_JUGULIS) { Ability(ABILITY_QUARK_DRIVE); } + OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); }; + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE); + ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); + } +} + +SINGLE_BATTLE_TEST("Quark Drive boosts Attack 1st in case of a stat tie") +{ + GIVEN { + PLAYER(SPECIES_IRON_TREADS) { Ability(ABILITY_QUARK_DRIVE); Attack(5); Defense(5); SpAttack(5); SpDefense(5); Speed(5); } + OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); Speed(5); } + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE); + ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); + MESSAGE("Iron Treads's Attack was heightened!"); + } +} + +SINGLE_BATTLE_TEST("Quark Drive boosts Defense 2nd in case of a stat tie") +{ + GIVEN { + PLAYER(SPECIES_IRON_TREADS) { Ability(ABILITY_QUARK_DRIVE); Attack(4); Defense(5); SpAttack(5); SpDefense(5); Speed(5); } + OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); Speed(5); } + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE); + ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); + MESSAGE("Iron Treads's Defense was heightened!"); + } +} + +SINGLE_BATTLE_TEST("Quark Drive boosts Special Attack 3rd in case of a stat tie") +{ + GIVEN { + PLAYER(SPECIES_IRON_TREADS) { Ability(ABILITY_QUARK_DRIVE); Attack(4); Defense(4); SpAttack(5); SpDefense(5); Speed(5); } + OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); Speed(5); } + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE); + ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); + MESSAGE("Iron Treads's Sp. Atk was heightened!"); + } +} + +SINGLE_BATTLE_TEST("Quark Drive boosts Special Defense 4th in case of a stat tie") +{ + GIVEN { + PLAYER(SPECIES_IRON_TREADS) { Ability(ABILITY_QUARK_DRIVE); Attack(4); Defense(4); SpAttack(4); SpDefense(5); Speed(5); } + OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); Speed(5); } + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE); + ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); + MESSAGE("Iron Treads's Sp. Def was heightened!"); + } +} + +SINGLE_BATTLE_TEST("Quark Drive activates in Electric Terrain before Booster Energy") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_IRON_TREADS) { Ability(ABILITY_QUARK_DRIVE); Item(ITEM_BOOSTER_ENERGY); } + OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); } + } WHEN { + TURN { SWITCH(player, 1); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE); + ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); + } THEN { + EXPECT_EQ(player->item, ITEM_BOOSTER_ENERGY); + } +} + +SINGLE_BATTLE_TEST("Quark Drive doesn't activate for a transformed battler") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_IRON_TREADS) { Ability(ABILITY_QUARK_DRIVE); Item(ITEM_BOOSTER_ENERGY); } + OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); Item(ITEM_BOOSTER_ENERGY); } + } WHEN { + TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TRANSFORM); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE); + ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRANSFORM, opponent); + NOT ABILITY_POPUP(opponent, ABILITY_QUARK_DRIVE); + } THEN { + EXPECT_EQ(player->item, ITEM_BOOSTER_ENERGY); + EXPECT_EQ(opponent->item, ITEM_BOOSTER_ENERGY); + EXPECT_EQ(opponent->ability, ABILITY_QUARK_DRIVE); + } +} diff --git a/test/battle/ability/quick_draw.c b/test/battle/ability/quick_draw.c index cdf237475b..9c5afb6193 100644 --- a/test/battle/ability/quick_draw.c +++ b/test/battle/ability/quick_draw.c @@ -5,7 +5,7 @@ SINGLE_BATTLE_TEST("Quick Draw has a 30% chance of going first") { PASSES_RANDOMLY(3, 10, RNG_QUICK_DRAW); GIVEN { - PLAYER(SPECIES_SLOWBRO_GALARIAN) { Ability(ABILITY_QUICK_DRAW); Speed(1); } + PLAYER(SPECIES_SLOWBRO_GALAR) { Ability(ABILITY_QUICK_DRAW); Speed(1); } OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } } WHEN { TURN { MOVE(player, MOVE_TACKLE); } @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Quick Draw does not activate 70% of the time") { PASSES_RANDOMLY(7, 10, RNG_QUICK_DRAW); GIVEN { - PLAYER(SPECIES_SLOWBRO_GALARIAN) { Ability(ABILITY_QUICK_DRAW); Speed(1); } + PLAYER(SPECIES_SLOWBRO_GALAR) { Ability(ABILITY_QUICK_DRAW); Speed(1); } OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } } WHEN { TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_TACKLE); } diff --git a/test/battle/ability/storm_drain.c b/test/battle/ability/storm_drain.c index 38d4a9be75..01f97de6fc 100644 --- a/test/battle/ability/storm_drain.c +++ b/test/battle/ability/storm_drain.c @@ -6,7 +6,7 @@ SINGLE_BATTLE_TEST("Storm Drain absorbs Water-type moves and increases the Sp. A GIVEN { ASSUME(gMovesInfo[MOVE_WATER_GUN].type == TYPE_WATER); PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_GASTRODON_EAST_SEA) { Ability(ABILITY_STORM_DRAIN); } + OPPONENT(SPECIES_GASTRODON_EAST) { Ability(ABILITY_STORM_DRAIN); } } WHEN { TURN { MOVE(player, MOVE_WATER_GUN); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { @@ -37,7 +37,7 @@ DOUBLE_BATTLE_TEST("Storm Drain forces single-target Water-type moves to target ASSUME(gMovesInfo[MOVE_WATER_GUN].type == TYPE_WATER); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_GASTRODON_EAST_SEA) { Ability(ABILITY_STORM_DRAIN); } + OPPONENT(SPECIES_GASTRODON_EAST) { Ability(ABILITY_STORM_DRAIN); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { diff --git a/test/battle/ability/switch_in_abilities.c b/test/battle/ability/switch_in_abilities.c index 79cf2b2dc9..c8a8c54dd3 100644 --- a/test/battle/ability/switch_in_abilities.c +++ b/test/battle/ability/switch_in_abilities.c @@ -101,8 +101,8 @@ DOUBLE_BATTLE_TEST("Switch-in abilities trigger in Speed Order after post-KO swi PLAYER(SPECIES_GYARADOS) { Speed(spdPlayer2); Ability(ABILITY_INTIMIDATE); } OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(1); } OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(1); } - OPPONENT(SPECIES_WEEZING_GALARIAN) { Speed(spdOpponent1); Ability(ABILITY_MISTY_SURGE); } - OPPONENT(SPECIES_VULPIX_ALOLAN) { Speed(spdOpponent2); Ability(ABILITY_SNOW_WARNING); } + OPPONENT(SPECIES_WEEZING_GALAR) { Speed(spdOpponent1); Ability(ABILITY_MISTY_SURGE); } + OPPONENT(SPECIES_VULPIX_ALOLA) { Speed(spdOpponent2); Ability(ABILITY_SNOW_WARNING); } } WHEN { TURN { MOVE(playerLeft, MOVE_EXPLOSION); SEND_OUT(playerLeft, 2); SEND_OUT(opponentLeft, 2); SEND_OUT(playerRight, 3); SEND_OUT(opponentRight, 3); } TURN { ; } diff --git a/test/battle/ability/volt_absorb.c b/test/battle/ability/volt_absorb.c index b438e794f0..93498bd1c7 100644 --- a/test/battle/ability/volt_absorb.c +++ b/test/battle/ability/volt_absorb.c @@ -51,7 +51,7 @@ SINGLE_BATTLE_TEST("Volt Absorb is only triggered once on multi strike moves") ASSUME(gMovesInfo[MOVE_FURY_SWIPES].type == TYPE_NORMAL); ASSUME(gMovesInfo[MOVE_FURY_SWIPES].effect == EFFECT_MULTI_HIT); PLAYER(SPECIES_JOLTEON) { Ability(ABILITY_VOLT_ABSORB); HP(1); MaxHP(100); } - OPPONENT(SPECIES_GRAVELER_ALOLAN) { Ability(ABILITY_GALVANIZE); } + OPPONENT(SPECIES_GRAVELER_ALOLA) { Ability(ABILITY_GALVANIZE); } } WHEN { TURN { MOVE(opponent, MOVE_FURY_SWIPES); } } SCENE { @@ -69,7 +69,7 @@ DOUBLE_BATTLE_TEST("Volt Absorb does not stop Electric Typed Explosion from dama ASSUME(gMovesInfo[MOVE_EXPLOSION].type == TYPE_NORMAL); PLAYER(SPECIES_JOLTEON) { Ability(ABILITY_VOLT_ABSORB); HP(1); MaxHP(100); } PLAYER(SPECIES_ABRA); - OPPONENT(SPECIES_GRAVELER_ALOLAN) { Ability(ABILITY_GALVANIZE); } + OPPONENT(SPECIES_GRAVELER_ALOLA) { Ability(ABILITY_GALVANIZE); } OPPONENT(SPECIES_WYNAUT); } WHEN { TURN { MOVE(opponentLeft, MOVE_EXPLOSION); } diff --git a/test/battle/ability/zen_mode.c b/test/battle/ability/zen_mode.c index 2734f7a9ec..728921a484 100644 --- a/test/battle/ability/zen_mode.c +++ b/test/battle/ability/zen_mode.c @@ -4,8 +4,8 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less at the end of the turn") { u16 standardSpecies, zenSpecies; - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_GALARIAN_ZEN_MODE; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD; zenSpecies = SPECIES_DARMANITAN_ZEN; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALAR_STANDARD; zenSpecies = SPECIES_DARMANITAN_GALAR_ZEN; } GIVEN { ASSUME(gSpeciesInfo[standardSpecies].baseHP == 105); @@ -33,8 +33,8 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less before the first turn") { u16 standardSpecies, zenSpecies; - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_GALARIAN_ZEN_MODE; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD; zenSpecies = SPECIES_DARMANITAN_ZEN; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALAR_STANDARD; zenSpecies = SPECIES_DARMANITAN_GALAR_ZEN; } GIVEN { ASSUME(gSpeciesInfo[standardSpecies].baseHP == 105); @@ -61,8 +61,8 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is healed above half") { u16 standardSpecies, zenSpecies; - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_GALARIAN_ZEN_MODE; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD; zenSpecies = SPECIES_DARMANITAN_ZEN; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALAR_STANDARD; zenSpecies = SPECIES_DARMANITAN_GALAR_ZEN; } GIVEN { ASSUME(gSpeciesInfo[standardSpecies].baseHP == 105); diff --git a/test/battle/ai/ai_switching.c b/test/battle/ai/ai_switching.c index 6fb9b499d9..f3b2429dd8 100644 --- a/test/battle/ai/ai_switching.c +++ b/test/battle/ai/ai_switching.c @@ -88,7 +88,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Number of hits to KO calculati PLAYER(SPECIES_VENUSAUR) { Level(30); Moves(MOVE_TACKLE); } // Opponent party courtesy of Skolgrahd, who triggered the bug in the first place OPPONENT(SPECIES_PIKACHU) { Level(100); Moves(MOVE_ZIPPY_ZAP, MOVE_EXTREME_SPEED, MOVE_IRON_TAIL, MOVE_KNOCK_OFF); } - OPPONENT(SPECIES_NINETALES_ALOLAN) { Level(100); Moves(MOVE_AURORA_VEIL, MOVE_BLIZZARD, MOVE_MOONBLAST, MOVE_DISABLE); } + OPPONENT(SPECIES_NINETALES_ALOLA) { Level(100); Moves(MOVE_AURORA_VEIL, MOVE_BLIZZARD, MOVE_MOONBLAST, MOVE_DISABLE); } OPPONENT(SPECIES_WEAVILE) { Level(100); Moves(MOVE_NIGHT_SLASH, MOVE_TRIPLE_AXEL, MOVE_ICE_SHARD, MOVE_FAKE_OUT); } OPPONENT(SPECIES_DITTO) { Level(100); Moves(MOVE_TRANSFORM); } OPPONENT(SPECIES_TYPHLOSION) { Level(100); Moves(MOVE_ERUPTION, MOVE_HEAT_WAVE, MOVE_FOCUS_BLAST, MOVE_EXTRASENSORY); } @@ -122,9 +122,9 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Avoid infinite loop if damage GIVEN { ASSUME(gItemsInfo[ITEM_LEFTOVERS].holdEffect == HOLD_EFFECT_LEFTOVERS); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SMART_MON_CHOICES); - PLAYER(SPECIES_MEOWTH_GALARIAN) { Level(100); Moves(MOVE_GROWL, MOVE_FAKE_OUT, MOVE_HONE_CLAWS); } + PLAYER(SPECIES_MEOWTH_GALAR) { Level(100); Moves(MOVE_GROWL, MOVE_FAKE_OUT, MOVE_HONE_CLAWS); } // Scenario courtesy of Duke, who triggered the bug in the first place - OPPONENT(SPECIES_MEOWTH_GALARIAN) { Level(5); Moves(MOVE_GROWL, MOVE_FAKE_OUT, MOVE_HONE_CLAWS); } + OPPONENT(SPECIES_MEOWTH_GALAR) { Level(5); Moves(MOVE_GROWL, MOVE_FAKE_OUT, MOVE_HONE_CLAWS); } OPPONENT(SPECIES_GEODUDE) { Level(5); Moves(MOVE_DOUBLE_EDGE); } OPPONENT(SPECIES_GEODUDE) { Level(5); Moves(MOVE_DOUBLE_EDGE); } OPPONENT(SPECIES_NOSEPASS) { Level(5); Moves(MOVE_DOUBLE_EDGE); } @@ -215,23 +215,97 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Mid-battle switches prioritize { GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES); - PLAYER(SPECIES_SWELLOW) { Level(30); Moves(MOVE_WING_ATTACK, MOVE_BOOMBURST); Speed(5); } + PLAYER(SPECIES_SWELLOW) { Level(30); Moves(MOVE_WING_ATTACK, MOVE_BOOMBURST); Speed(5); SpAttack(50); } OPPONENT(SPECIES_PONYTA) { Level(1); Moves(MOVE_NONE); Speed(4); } // Forces switchout - OPPONENT(SPECIES_ARON) { Level(30); Moves(MOVE_HEADBUTT); Speed(4); SpDefense(41); } // Mid battle, AI sends out Aron - OPPONENT(SPECIES_ELECTRODE) { Level(30); Moves(MOVE_CHARGE_BEAM); Speed(6); } + OPPONENT(SPECIES_ARON) { Level(30); Moves(MOVE_IRON_HEAD); Speed(4); SpDefense(50); } // Mid battle, AI sends out Aron + OPPONENT(SPECIES_ELECTRODE) { Level(30); Ability(ABILITY_STATIC); Moves(MOVE_CHARGE_BEAM); Speed(6); SpDefense(53);} } WHEN { TURN { MOVE(player, MOVE_WING_ATTACK); EXPECT_SWITCH(opponent, 1); } } } +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Mid-battle switches prioritize offensive options after slow U-Turn") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_FALSE_SWIPE].effect == EFFECT_FALSE_SWIPE); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_SWELLOW) { Level(30); Moves(MOVE_FALSE_SWIPE, MOVE_BOOMBURST); Speed(5); SpAttack(50); } + OPPONENT(SPECIES_PONYTA) { Level(1); Moves(MOVE_U_TURN); Speed(4); } // Forces switchout + OPPONENT(SPECIES_ARON) { Level(30); Moves(MOVE_IRON_HEAD); Speed(4); SpDefense(50); } + OPPONENT(SPECIES_ELECTRODE) { Level(30); Ability(ABILITY_STATIC); Moves(MOVE_CHARGE_BEAM); Speed(6); SpDefense(53); } + } WHEN { + TURN { MOVE(player, MOVE_FALSE_SWIPE); EXPECT_SEND_OUT(opponent, 2); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Mid-battle switches prioritize offensive options after Eject Button") +{ + GIVEN { + ASSUME(gItemsInfo[ITEM_EJECT_BUTTON].holdEffect == HOLD_EFFECT_EJECT_BUTTON); + ASSUME(gMovesInfo[MOVE_FALSE_SWIPE].effect == EFFECT_FALSE_SWIPE); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_SWELLOW) { Level(30); Moves(MOVE_FALSE_SWIPE, MOVE_BOOMBURST); Speed(5); SpAttack(50); } + OPPONENT(SPECIES_PONYTA) { Level(1); Item(ITEM_EJECT_BUTTON); Moves(MOVE_TACKLE); Speed(4); } // Forces switchout + OPPONENT(SPECIES_ARON) { Level(30); Moves(MOVE_IRON_HEAD); Speed(4); SpDefense(50); } + OPPONENT(SPECIES_ELECTRODE) { Level(30); Ability(ABILITY_STATIC); Moves(MOVE_CHARGE_BEAM); Speed(6); SpDefense(53); } + } WHEN { + TURN { MOVE(player, MOVE_FALSE_SWIPE); EXPECT_SEND_OUT(opponent, 2); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Mid-battle switches prioritize offensive options after Eject Pack") +{ + GIVEN { + ASSUME(gItemsInfo[ITEM_EJECT_PACK].holdEffect == HOLD_EFFECT_EJECT_PACK); + ASSUME(gMovesInfo[MOVE_GROWL].effect == EFFECT_ATTACK_DOWN); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_SWELLOW) { Level(30); Moves(MOVE_GROWL, MOVE_BOOMBURST); Speed(5); SpAttack(50); } + OPPONENT(SPECIES_PONYTA) { Level(1); Item(ITEM_EJECT_PACK); Moves(MOVE_TACKLE); Speed(4); } // Forces switchout + OPPONENT(SPECIES_ARON) { Level(30); Moves(MOVE_IRON_HEAD); Speed(4); SpDefense(50); } + OPPONENT(SPECIES_ELECTRODE) { Level(30); Ability(ABILITY_STATIC); Moves(MOVE_CHARGE_BEAM); Speed(6); SpDefense(53); } + } WHEN { + TURN { MOVE(player, MOVE_GROWL); EXPECT_SEND_OUT(opponent, 2); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Mid-battle switches prioritize defensive options after Eject Pack if mon outspeeds") +{ + GIVEN { + ASSUME(gItemsInfo[ITEM_EJECT_PACK].holdEffect == HOLD_EFFECT_EJECT_PACK); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_OVERHEAT, MOVE_EFFECT_SP_ATK_MINUS_2) == TRUE); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_SWELLOW) { Level(30); Moves(MOVE_WING_ATTACK, MOVE_BOOMBURST); Speed(5); SpAttack(50); } + OPPONENT(SPECIES_PONYTA) { Level(1); Item(ITEM_EJECT_PACK); Moves(MOVE_OVERHEAT); Speed(6); } // Forces switchout + OPPONENT(SPECIES_ARON) { Level(30); Moves(MOVE_IRON_HEAD); Speed(4); SpDefense(50); } + OPPONENT(SPECIES_ELECTRODE) { Level(30); Ability(ABILITY_STATIC); Moves(MOVE_CHARGE_BEAM); Speed(6); SpDefense(53); } + } WHEN { + TURN { MOVE(player, MOVE_WING_ATTACK); EXPECT_SEND_OUT(opponent, 1); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Mid-battle switches prioritize offensive options after Eject Pack if mon outspeeds but was Intimidate'd") +{ + GIVEN { + ASSUME(gItemsInfo[ITEM_EJECT_PACK].holdEffect == HOLD_EFFECT_EJECT_PACK); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_OVERHEAT, MOVE_EFFECT_SP_ATK_MINUS_2) == TRUE); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_STARAPTOR) { Level(30); Ability(ABILITY_INTIMIDATE); Moves(MOVE_WING_ATTACK, MOVE_BOOMBURST); Speed(5); SpAttack(50); } + OPPONENT(SPECIES_PONYTA) { Level(1); Item(ITEM_EJECT_PACK); Moves(MOVE_OVERHEAT); Speed(6); } // Forces switchout + OPPONENT(SPECIES_ARON) { Level(30); Moves(MOVE_IRON_HEAD); Speed(4); SpDefense(50); } + OPPONENT(SPECIES_ELECTRODE) { Level(30); Ability(ABILITY_STATIC); Moves(MOVE_CHARGE_BEAM); Speed(6); SpDefense(53); } + } WHEN { + TURN { MOVE(player, MOVE_WING_ATTACK); EXPECT_SWITCH(opponent, 2); } + } +} + AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Post-KO switches prioritize offensive options") { GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES); PLAYER(SPECIES_SWELLOW) { Level(30); Moves(MOVE_WING_ATTACK, MOVE_BOOMBURST); Speed(5); } OPPONENT(SPECIES_PONYTA) { Level(1); Moves(MOVE_TACKLE); Speed(4); } - OPPONENT(SPECIES_ARON) { Level(30); Moves(MOVE_HEADBUTT); Speed(4); } // Mid battle, AI sends out Aron - OPPONENT(SPECIES_ELECTRODE) { Level(30); Moves(MOVE_CHARGE_BEAM); Speed(6); } + OPPONENT(SPECIES_ARON) { Level(30); Moves(MOVE_IRON_HEAD); Speed(4); } // Mid battle, AI sends out Aron + OPPONENT(SPECIES_ELECTRODE) { Level(30); Ability(ABILITY_STATIC); Moves(MOVE_CHARGE_BEAM); Speed(6); } } WHEN { TURN { MOVE(player, MOVE_WING_ATTACK); EXPECT_SEND_OUT(opponent, 2); } } @@ -378,28 +452,18 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if mon would AI_SINGLE_BATTLE_TEST("Switch AI: AI will switch out if it can't deal damage to a mon with Wonder Guard 66% of the time") { - u32 aiOmniscientFlag = 0; - PARAMETRIZE { aiOmniscientFlag = 0; } - PARAMETRIZE { aiOmniscientFlag = AI_FLAG_OMNISCIENT; } PASSES_RANDOMLY(66, 100, RNG_AI_SWITCH_WONDER_GUARD); GIVEN { ASSUME(gSpeciesInfo[SPECIES_SHEDINJA].types[0] == TYPE_BUG); ASSUME(gSpeciesInfo[SPECIES_SHEDINJA].types[1] == TYPE_GHOST); ASSUME(gMovesInfo[MOVE_TACKLE].type == TYPE_NORMAL); ASSUME(gMovesInfo[MOVE_SHADOW_BALL].type == TYPE_GHOST); - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiOmniscientFlag); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_SHEDINJA) { Moves(MOVE_TACKLE); } OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SHADOW_BALL); } } WHEN { - if(aiOmniscientFlag == 0) { - TURN { MOVE(player, MOVE_TACKLE) ; EXPECT_MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_TACKLE) ; EXPECT_SWITCH(opponent, 1); } - } - else { - TURN { MOVE(player, MOVE_TACKLE) ; EXPECT_SWITCH(opponent, 1); } - } - + TURN { MOVE(player, MOVE_TACKLE) ; EXPECT_SWITCH(opponent, 1); } } } @@ -420,5 +484,5 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it can't d OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SHADOW_BALL); } } WHEN { TURN { MOVE(player, MOVE_TACKLE) ; EXPECT_SWITCH(opponent, 1); } - } + } } diff --git a/test/battle/crit_chance.c b/test/battle/crit_chance.c index d4c8e2b1a0..2f057cc99b 100644 --- a/test/battle/crit_chance.c +++ b/test/battle/crit_chance.c @@ -215,7 +215,7 @@ SINGLE_BATTLE_TEST("Crit Chance: Signature items Leek and Lucky Punch increase t PASSES_RANDOMLY(1, 2, RNG_CRITICAL_HIT); PARAMETRIZE { species = SPECIES_FARFETCHD; item = ITEM_LEEK; } - PARAMETRIZE { species = SPECIES_FARFETCHD_GALARIAN; item = ITEM_LEEK; } + PARAMETRIZE { species = SPECIES_FARFETCHD_GALAR; item = ITEM_LEEK; } PARAMETRIZE { species = SPECIES_SIRFETCHD; item = ITEM_LEEK; } PARAMETRIZE { species = SPECIES_CHANSEY; item = ITEM_LUCKY_PUNCH; } diff --git a/test/battle/form_change/begin_battle.c b/test/battle/form_change/begin_battle.c index f240b5ca07..bee9c4fe6b 100644 --- a/test/battle/form_change/begin_battle.c +++ b/test/battle/form_change/begin_battle.c @@ -19,27 +19,27 @@ SINGLE_BATTLE_TEST("Zacian changes into its Crowned Form when holding the Rusted PARAMETRIZE { item = ITEM_NONE; } PARAMETRIZE { item = ITEM_RUSTED_SWORD; } GIVEN { - PLAYER(SPECIES_ZACIAN_HERO_OF_MANY_BATTLES) { Item(item); } + PLAYER(SPECIES_ZACIAN_HERO) { Item(item); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } } THEN { if (item == ITEM_NONE) - EXPECT_EQ(player->species, SPECIES_ZACIAN_HERO_OF_MANY_BATTLES); + EXPECT_EQ(player->species, SPECIES_ZACIAN_HERO); else - EXPECT_EQ(player->species, SPECIES_ZACIAN_CROWNED_SWORD); + EXPECT_EQ(player->species, SPECIES_ZACIAN_CROWNED); } } SINGLE_BATTLE_TEST("Zacian's Iron Head becomes Behemoth Blade upon form change") { GIVEN { - PLAYER(SPECIES_ZACIAN_HERO_OF_MANY_BATTLES) { Item(ITEM_RUSTED_SWORD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } + PLAYER(SPECIES_ZACIAN_HERO) { Item(ITEM_RUSTED_SWORD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } } THEN { - ASSUME(player->species == SPECIES_ZACIAN_CROWNED_SWORD); // Assumes form change worked. + ASSUME(player->species == SPECIES_ZACIAN_CROWNED); // Assumes form change worked. EXPECT_EQ(player->moves[0], MOVE_BEHEMOTH_BLADE); } } @@ -50,27 +50,27 @@ SINGLE_BATTLE_TEST("Zamazenta changes into its Crowned Form when holding the Rus PARAMETRIZE { item = ITEM_NONE; } PARAMETRIZE { item = ITEM_RUSTED_SHIELD; } GIVEN { - PLAYER(SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES) { Item(item); } + PLAYER(SPECIES_ZAMAZENTA_HERO) { Item(item); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } } THEN { if (item == ITEM_NONE) - EXPECT_EQ(player->species, SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES); + EXPECT_EQ(player->species, SPECIES_ZAMAZENTA_HERO); else - EXPECT_EQ(player->species, SPECIES_ZAMAZENTA_CROWNED_SHIELD); + EXPECT_EQ(player->species, SPECIES_ZAMAZENTA_CROWNED); } } SINGLE_BATTLE_TEST("Zamazenta's Iron Head becomes Behemoth Bash upon form change") { GIVEN { - PLAYER(SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES) { Item(ITEM_RUSTED_SHIELD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } + PLAYER(SPECIES_ZAMAZENTA_HERO) { Item(ITEM_RUSTED_SHIELD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } } THEN { - ASSUME(player->species == SPECIES_ZAMAZENTA_CROWNED_SHIELD); // Assumes form change worked. + ASSUME(player->species == SPECIES_ZAMAZENTA_CROWNED); // Assumes form change worked. EXPECT_EQ(player->moves[0], MOVE_BEHEMOTH_BASH); } } diff --git a/test/battle/gimmick/dynamax.c b/test/battle/gimmick/dynamax.c index f9865f7b6c..036706190d 100644 --- a/test/battle/gimmick/dynamax.c +++ b/test/battle/gimmick/dynamax.c @@ -457,7 +457,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Pokemon with Gigantamax forms change upon Dynamaxi u32 species; bool32 gigantamaxFactor; PARAMETRIZE { gigantamaxFactor = FALSE; species = SPECIES_VENUSAUR; } - PARAMETRIZE { gigantamaxFactor = TRUE; species = SPECIES_VENUSAUR_GIGANTAMAX; } + PARAMETRIZE { gigantamaxFactor = TRUE; species = SPECIES_VENUSAUR_GMAX; } GIVEN { PLAYER(SPECIES_VENUSAUR) { GigantamaxFactor(gigantamaxFactor); } OPPONENT(SPECIES_WOBBUFFET); @@ -1505,7 +1505,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves don't bypass absorbing abilities") PARAMETRIZE { move = MOVE_WATER_GUN; ability = ABILITY_DRY_SKIN; species = SPECIES_PARASECT; } PARAMETRIZE { move = MOVE_MUD_BOMB; ability = ABILITY_EARTH_EATER; species = SPECIES_ORTHWORM; } PARAMETRIZE { move = MOVE_VINE_WHIP; ability = ABILITY_SAP_SIPPER; species = SPECIES_MILTANK; } - + GIVEN { ASSUME(gMovesInfo[MOVE_WATER_GUN].type == TYPE_WATER); ASSUME(gMovesInfo[MOVE_SPARK].type == TYPE_ELECTRIC); diff --git a/test/battle/gimmick/terastal.c b/test/battle/gimmick/terastal.c index 1b50bc4bcc..200d646bfb 100644 --- a/test/battle/gimmick/terastal.c +++ b/test/battle/gimmick/terastal.c @@ -509,6 +509,7 @@ SINGLE_BATTLE_TEST("(TERA) Revelation Dance uses a Stellar-type Pokemon's base t } } +#if B_UPDATED_CONVERSION_2 < GEN_5 SINGLE_BATTLE_TEST("(TERA) Conversion2 fails if last hit by a Stellar-type move") { GIVEN { @@ -526,6 +527,7 @@ SINGLE_BATTLE_TEST("(TERA) Conversion2 fails if last hit by a Stellar-type move" MESSAGE("But it failed!"); } } +#endif SINGLE_BATTLE_TEST("(TERA) Roost does not remove Flying-type ground immunity when Terastallized into the Stellar type") { @@ -790,10 +792,10 @@ SINGLE_BATTLE_TEST("(TERA) Transformed pokemon can't Terastalize") SINGLE_BATTLE_TEST("(TERA) Pokemon with Tera forms change upon Terastallizing") { u32 species, targetSpecies; - PARAMETRIZE { species = SPECIES_OGERPON_TEAL_MASK; targetSpecies = SPECIES_OGERPON_TEAL_MASK_TERA; } - PARAMETRIZE { species = SPECIES_OGERPON_WELLSPRING_MASK; targetSpecies = SPECIES_OGERPON_WELLSPRING_MASK_TERA; } - PARAMETRIZE { species = SPECIES_OGERPON_HEARTHFLAME_MASK; targetSpecies = SPECIES_OGERPON_HEARTHFLAME_MASK_TERA; } - PARAMETRIZE { species = SPECIES_OGERPON_CORNERSTONE_MASK; targetSpecies = SPECIES_OGERPON_CORNERSTONE_MASK_TERA; } + PARAMETRIZE { species = SPECIES_OGERPON_TEAL; targetSpecies = SPECIES_OGERPON_TEAL_TERA; } + PARAMETRIZE { species = SPECIES_OGERPON_WELLSPRING; targetSpecies = SPECIES_OGERPON_WELLSPRING_TERA; } + PARAMETRIZE { species = SPECIES_OGERPON_HEARTHFLAME; targetSpecies = SPECIES_OGERPON_HEARTHFLAME_TERA; } + PARAMETRIZE { species = SPECIES_OGERPON_CORNERSTONE; targetSpecies = SPECIES_OGERPON_CORNERSTONE_TERA; } PARAMETRIZE { species = SPECIES_TERAPAGOS_TERASTAL; targetSpecies = SPECIES_TERAPAGOS_STELLAR; } GIVEN { PLAYER(species); diff --git a/test/battle/hold_effect/ogerpon_mask.c b/test/battle/hold_effect/ogerpon_mask.c index 31fb0511f4..209b854d66 100644 --- a/test/battle/hold_effect/ogerpon_mask.c +++ b/test/battle/hold_effect/ogerpon_mask.c @@ -15,10 +15,10 @@ SINGLE_BATTLE_TEST("Ogerpon Masks increase the base power of moves by 20%", s16 { u32 species; u32 item; - PARAMETRIZE { species = SPECIES_OGERPON_TEAL_MASK; item = ITEM_NONE; } - PARAMETRIZE { species = SPECIES_OGERPON_WELLSPRING_MASK; item = ITEM_CORNERSTONE_MASK; } - PARAMETRIZE { species = SPECIES_OGERPON_HEARTHFLAME_MASK; item = ITEM_WELLSPRING_MASK; } - PARAMETRIZE { species = SPECIES_OGERPON_CORNERSTONE_MASK; item = ITEM_HEARTHFLAME_MASK; } + PARAMETRIZE { species = SPECIES_OGERPON_TEAL; item = ITEM_NONE; } + PARAMETRIZE { species = SPECIES_OGERPON_WELLSPRING; item = ITEM_CORNERSTONE_MASK; } + PARAMETRIZE { species = SPECIES_OGERPON_HEARTHFLAME; item = ITEM_WELLSPRING_MASK; } + PARAMETRIZE { species = SPECIES_OGERPON_CORNERSTONE; item = ITEM_HEARTHFLAME_MASK; } GIVEN { ASSUME(gMovesInfo[MOVE_TACKLE].power > 0); diff --git a/test/battle/hold_effect/protective_pads.c b/test/battle/hold_effect/protective_pads.c index 914118d2d8..22032112f4 100644 --- a/test/battle/hold_effect/protective_pads.c +++ b/test/battle/hold_effect/protective_pads.c @@ -46,7 +46,7 @@ SINGLE_BATTLE_TEST("Protective Pads doesn't reduce tough claws damage", s16 dama SINGLE_BATTLE_TEST("Protective Pads doesn't invalid unseen fist") { GIVEN { - PLAYER(SPECIES_URSHIFU_RAPID_STRIKE_STYLE) { Ability(ABILITY_UNSEEN_FIST); Item(ITEM_PROTECTIVE_PADS); } + PLAYER(SPECIES_URSHIFU_RAPID_STRIKE) { Ability(ABILITY_UNSEEN_FIST); Item(ITEM_PROTECTIVE_PADS); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_PROTECT); MOVE(player, MOVE_TACKLE); } diff --git a/test/battle/hold_effect/restore_hp.c b/test/battle/hold_effect/restore_hp.c index 09daecc860..c19433751c 100644 --- a/test/battle/hold_effect/restore_hp.c +++ b/test/battle/hold_effect/restore_hp.c @@ -27,3 +27,39 @@ DOUBLE_BATTLE_TEST("Restore HP Item effects do not miss timing") MESSAGE("The opposing Foe Wobbuffet was hurt by the sea of fire!"); } } + +DOUBLE_BATTLE_TEST("Restore HP Item effects do not miss timing after a recoil move") +{ + u16 item; + + PARAMETRIZE { item = ITEM_BERRY_JUICE; } + PARAMETRIZE { item = ITEM_ORAN_BERRY; } + PARAMETRIZE { item = ITEM_SITRUS_BERRY; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_TAKE_DOWN].recoil == 25); + ASSUME(gItemsInfo[ITEM_ORAN_BERRY].holdEffect == HOLD_EFFECT_RESTORE_HP); + ASSUME(gItemsInfo[ITEM_BERRY_JUICE].holdEffect == HOLD_EFFECT_RESTORE_HP); + ASSUME(gItemsInfo[ITEM_SITRUS_BERRY].holdEffect == HOLD_EFFECT_RESTORE_PCT_HP); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT) { MaxHP(100); HP(51); Item(item); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { + MOVE(opponentLeft, MOVE_TAKE_DOWN, target: playerLeft); + MOVE(opponentRight, MOVE_CELEBRATE); + MOVE(playerLeft, MOVE_CELEBRATE); + MOVE(playerRight, MOVE_CELEBRATE); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TAKE_DOWN, opponentLeft); + HP_BAR(playerLeft); + HP_BAR(opponentLeft); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponentLeft); + HP_BAR(opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerRight); + } +} diff --git a/test/battle/hold_effect/restore_stats.c b/test/battle/hold_effect/restore_stats.c index fb455f47c6..2958cdacae 100644 --- a/test/battle/hold_effect/restore_stats.c +++ b/test/battle/hold_effect/restore_stats.c @@ -99,8 +99,8 @@ SINGLE_BATTLE_TEST("White Herb restores stats after all hits of a multi hit move u16 species; u16 ability; - PARAMETRIZE { species = SPECIES_SLIGGOO_HISUIAN; ability = ABILITY_GOOEY; } - PARAMETRIZE { species = SPECIES_DUGTRIO_ALOLAN; ability = ABILITY_TANGLING_HAIR; } + PARAMETRIZE { species = SPECIES_SLIGGOO_HISUI; ability = ABILITY_GOOEY; } + PARAMETRIZE { species = SPECIES_DUGTRIO_ALOLA; ability = ABILITY_TANGLING_HAIR; } GIVEN { ASSUME(gMovesInfo[MOVE_DUAL_WINGBEAT].strikeCount == 2); diff --git a/test/battle/item_effect/cure_status.c b/test/battle/item_effect/cure_status.c index 6c7cc2e64d..7f5601ab3c 100644 --- a/test/battle/item_effect/cure_status.c +++ b/test/battle/item_effect/cure_status.c @@ -94,11 +94,14 @@ SINGLE_BATTLE_TEST("Burn Heal heals a battler from being burned") } } -SINGLE_BATTLE_TEST("Ice Heal heals a battler from being frozen") +SINGLE_BATTLE_TEST("Ice Heal heals a battler from being frozen or frostbite") { + u16 status; + PARAMETRIZE { status = STATUS1_FREEZE; } + PARAMETRIZE { status = STATUS1_FROSTBITE; } GIVEN { ASSUME(gItemsInfo[ITEM_ICE_HEAL].battleUsage == EFFECT_ITEM_CURE_STATUS); - PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_FREEZE); } + PLAYER(SPECIES_WOBBUFFET) { Status1(status); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { USE_ITEM(player, ITEM_ICE_HEAL, partyIndex: 0); } @@ -112,12 +115,13 @@ SINGLE_BATTLE_TEST("Ice Heal heals a battler from being frozen") SINGLE_BATTLE_TEST("Full Heal heals a battler from any primary status") { u16 status; + PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_BURN; } PARAMETRIZE { status = STATUS1_FREEZE; } PARAMETRIZE { status = STATUS1_PARALYSIS; } - PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_TOXIC_POISON; } - PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_FROSTBITE; } GIVEN { ASSUME(gItemsInfo[ITEM_FULL_HEAL].battleUsage == EFFECT_ITEM_CURE_STATUS); PLAYER(SPECIES_WOBBUFFET) { Status1(status); } @@ -134,12 +138,13 @@ SINGLE_BATTLE_TEST("Full Heal heals a battler from any primary status") SINGLE_BATTLE_TEST("Heal Powder heals a battler from any primary status") { u16 status; + PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_BURN; } PARAMETRIZE { status = STATUS1_FREEZE; } PARAMETRIZE { status = STATUS1_PARALYSIS; } - PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_TOXIC_POISON; } - PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_FROSTBITE; } GIVEN { ASSUME(gItemsInfo[ITEM_HEAL_POWDER].battleUsage == EFFECT_ITEM_CURE_STATUS); PLAYER(SPECIES_WOBBUFFET) { Status1(status); } @@ -156,12 +161,13 @@ SINGLE_BATTLE_TEST("Heal Powder heals a battler from any primary status") SINGLE_BATTLE_TEST("Pewter Crunchies heals a battler from any primary status") { u16 status; + PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_BURN; } PARAMETRIZE { status = STATUS1_FREEZE; } PARAMETRIZE { status = STATUS1_PARALYSIS; } - PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_TOXIC_POISON; } - PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_FROSTBITE; } GIVEN { ASSUME(gItemsInfo[ITEM_PEWTER_CRUNCHIES].battleUsage == EFFECT_ITEM_CURE_STATUS); PLAYER(SPECIES_WOBBUFFET) { Status1(status); } @@ -178,12 +184,13 @@ SINGLE_BATTLE_TEST("Pewter Crunchies heals a battler from any primary status") SINGLE_BATTLE_TEST("Lava Cookies heals a battler from any primary status") { u16 status; + PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_BURN; } PARAMETRIZE { status = STATUS1_FREEZE; } PARAMETRIZE { status = STATUS1_PARALYSIS; } - PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_TOXIC_POISON; } - PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_FROSTBITE; } GIVEN { ASSUME(gItemsInfo[ITEM_LAVA_COOKIE].battleUsage == EFFECT_ITEM_CURE_STATUS); PLAYER(SPECIES_WOBBUFFET) { Status1(status); } @@ -200,12 +207,13 @@ SINGLE_BATTLE_TEST("Lava Cookies heals a battler from any primary status") SINGLE_BATTLE_TEST("Rage Candy Bar heals a battler from any primary status") { u16 status; + PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_BURN; } PARAMETRIZE { status = STATUS1_FREEZE; } PARAMETRIZE { status = STATUS1_PARALYSIS; } - PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_TOXIC_POISON; } - PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_FROSTBITE; } GIVEN { ASSUME(gItemsInfo[ITEM_RAGE_CANDY_BAR].battleUsage == EFFECT_ITEM_CURE_STATUS); PLAYER(SPECIES_WOBBUFFET) { Status1(status); } @@ -222,12 +230,13 @@ SINGLE_BATTLE_TEST("Rage Candy Bar heals a battler from any primary status") SINGLE_BATTLE_TEST("Old Gateu heals a battler from any primary status") { u16 status; + PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_BURN; } PARAMETRIZE { status = STATUS1_FREEZE; } PARAMETRIZE { status = STATUS1_PARALYSIS; } - PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_TOXIC_POISON; } - PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_FROSTBITE; } GIVEN { ASSUME(gItemsInfo[ITEM_OLD_GATEAU].battleUsage == EFFECT_ITEM_CURE_STATUS); PLAYER(SPECIES_WOBBUFFET) { Status1(status); } @@ -244,12 +253,13 @@ SINGLE_BATTLE_TEST("Old Gateu heals a battler from any primary status") SINGLE_BATTLE_TEST("Casteliacone heals a battler from any primary status") { u16 status; + PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_BURN; } PARAMETRIZE { status = STATUS1_FREEZE; } PARAMETRIZE { status = STATUS1_PARALYSIS; } - PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_TOXIC_POISON; } - PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_FROSTBITE; } GIVEN { ASSUME(gItemsInfo[ITEM_CASTELIACONE].battleUsage == EFFECT_ITEM_CURE_STATUS); PLAYER(SPECIES_WOBBUFFET) { Status1(status); } @@ -266,12 +276,13 @@ SINGLE_BATTLE_TEST("Casteliacone heals a battler from any primary status") SINGLE_BATTLE_TEST("Lumiose Galette heals a battler from any primary status") { u16 status; + PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_BURN; } PARAMETRIZE { status = STATUS1_FREEZE; } PARAMETRIZE { status = STATUS1_PARALYSIS; } - PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_TOXIC_POISON; } - PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_FROSTBITE; } GIVEN { ASSUME(gItemsInfo[ITEM_LUMIOSE_GALETTE].battleUsage == EFFECT_ITEM_CURE_STATUS); PLAYER(SPECIES_WOBBUFFET) { Status1(status); } @@ -288,12 +299,13 @@ SINGLE_BATTLE_TEST("Lumiose Galette heals a battler from any primary status") SINGLE_BATTLE_TEST("Shalour Sable heals a battler from any primary status") { u16 status; + PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_BURN; } PARAMETRIZE { status = STATUS1_FREEZE; } PARAMETRIZE { status = STATUS1_PARALYSIS; } - PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_TOXIC_POISON; } - PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_FROSTBITE; } GIVEN { ASSUME(gItemsInfo[ITEM_SHALOUR_SABLE].battleUsage == EFFECT_ITEM_CURE_STATUS); PLAYER(SPECIES_WOBBUFFET) { Status1(status); } @@ -310,12 +322,13 @@ SINGLE_BATTLE_TEST("Shalour Sable heals a battler from any primary status") SINGLE_BATTLE_TEST("Big Malasada heals a battler from any primary status") { u16 status; + PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_BURN; } PARAMETRIZE { status = STATUS1_FREEZE; } PARAMETRIZE { status = STATUS1_PARALYSIS; } - PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_TOXIC_POISON; } - PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_FROSTBITE; } GIVEN { ASSUME(gItemsInfo[ITEM_BIG_MALASADA].battleUsage == EFFECT_ITEM_CURE_STATUS); PLAYER(SPECIES_WOBBUFFET) { Status1(status); } @@ -329,6 +342,29 @@ SINGLE_BATTLE_TEST("Big Malasada heals a battler from any primary status") } } +SINGLE_BATTLE_TEST("Jubilife Muffin heals a battler from any primary status") +{ + u16 status; + PARAMETRIZE { status = STATUS1_SLEEP; } + PARAMETRIZE { status = STATUS1_POISON; } + PARAMETRIZE { status = STATUS1_BURN; } + PARAMETRIZE { status = STATUS1_FREEZE; } + PARAMETRIZE { status = STATUS1_PARALYSIS; } + PARAMETRIZE { status = STATUS1_TOXIC_POISON; } + PARAMETRIZE { status = STATUS1_FROSTBITE; } + GIVEN { + ASSUME(gItemsInfo[ITEM_JUBILIFE_MUFFIN].battleUsage == EFFECT_ITEM_CURE_STATUS); + PLAYER(SPECIES_WOBBUFFET) { Status1(status); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { USE_ITEM(player, ITEM_JUBILIFE_MUFFIN, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet had its status healed!"); + } THEN { + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + SINGLE_BATTLE_TEST("Full Heal, Heal Powder and Local Specialties heal a battler from being confused") { u16 item; @@ -342,6 +378,7 @@ SINGLE_BATTLE_TEST("Full Heal, Heal Powder and Local Specialties heal a battler PARAMETRIZE { item = ITEM_LUMIOSE_GALETTE; } PARAMETRIZE { item = ITEM_SHALOUR_SABLE; } PARAMETRIZE { item = ITEM_BIG_MALASADA; } + PARAMETRIZE { item = ITEM_JUBILIFE_MUFFIN; } GIVEN { ASSUME(gItemsInfo[item].battleUsage == EFFECT_ITEM_CURE_STATUS); PLAYER(SPECIES_WOBBUFFET); diff --git a/test/battle/move_effect/chilly_reception.c b/test/battle/move_effect/chilly_reception.c index 8b64a30f28..7e821abe3d 100644 --- a/test/battle/move_effect/chilly_reception.c +++ b/test/battle/move_effect/chilly_reception.c @@ -9,8 +9,8 @@ ASSUMPTIONS SINGLE_BATTLE_TEST("Chilly Reception sets up snow and switches the user out") { GIVEN { - PLAYER(SPECIES_SLOWKING_GALARIAN); - PLAYER(SPECIES_SLOWPOKE_GALARIAN); + PLAYER(SPECIES_SLOWKING_GALAR); + PLAYER(SPECIES_SLOWPOKE_GALAR); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CHILLY_RECEPTION); SEND_OUT(player, 1); } @@ -27,8 +27,8 @@ SINGLE_BATTLE_TEST("Chilly Reception sets up snow and switches the user out") SINGLE_BATTLE_TEST("Chilly Reception switches the user out, even if the weather does not change") { GIVEN { - PLAYER(SPECIES_SLOWKING_GALARIAN); - PLAYER(SPECIES_SLOWPOKE_GALARIAN); + PLAYER(SPECIES_SLOWKING_GALAR); + PLAYER(SPECIES_SLOWPOKE_GALAR); OPPONENT(SPECIES_KYOGRE) { Item(ITEM_BLUE_ORB); } } WHEN { TURN { MOVE(player, MOVE_CHILLY_RECEPTION); SEND_OUT(player, 1); } @@ -45,7 +45,7 @@ SINGLE_BATTLE_TEST("Chilly Reception switches the user out, even if the weather SINGLE_BATTLE_TEST("Chilly Reception does not switch the user out if no replacements") { GIVEN { - PLAYER(SPECIES_SLOWKING_GALARIAN); + PLAYER(SPECIES_SLOWKING_GALAR); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CHILLY_RECEPTION); } @@ -60,8 +60,8 @@ SINGLE_BATTLE_TEST("Chilly Reception does not switch the user out if no replacem SINGLE_BATTLE_TEST("Chilly Reception does not switch the user out if replacements fainted") { GIVEN { - PLAYER(SPECIES_SLOWKING_GALARIAN); - PLAYER(SPECIES_SLOWPOKE_GALARIAN) { HP(0); } + PLAYER(SPECIES_SLOWKING_GALAR); + PLAYER(SPECIES_SLOWPOKE_GALAR) { HP(0); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CHILLY_RECEPTION); } @@ -76,7 +76,7 @@ SINGLE_BATTLE_TEST("Chilly Reception does not switch the user out if replacement SINGLE_BATTLE_TEST("Chilly Reception changes the weather, even if the user cannot switch out") { GIVEN { - PLAYER(SPECIES_SLOWKING_GALARIAN); + PLAYER(SPECIES_SLOWKING_GALAR); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CHILLY_RECEPTION); } diff --git a/test/battle/move_effect/conversion_2.c b/test/battle/move_effect/conversion_2.c index 2e81212ef1..6c2d4d7f54 100644 --- a/test/battle/move_effect/conversion_2.c +++ b/test/battle/move_effect/conversion_2.c @@ -1,14 +1,207 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("Conversion 2 randomly changes the type of the user to a type that resists the last move that hit the user (Gen 3-4)"); -TO_DO_BATTLE_TEST("Conversion 2 randomly changes the type of the user to a type that resists the last move used by the target (Gen 5+)"); -TO_DO_BATTLE_TEST("Conversion 2's type change considers the type of moves called by other moves"); -TO_DO_BATTLE_TEST("Conversion 2's type change considers dynamic type moves"); // Eg. Weather Ball -TO_DO_BATTLE_TEST("Conversion 2's type change considers move types changed by Normalize and Electrify"); -TO_DO_BATTLE_TEST("Conversion 2's type change considers move types changed by Normalize"); -TO_DO_BATTLE_TEST("Conversion 2's type change considers Struggle to be Normal type (Gen 3-4)"); -TO_DO_BATTLE_TEST("Conversion 2 fails if the move used is of typeless damage (Gen 5+)"); -TO_DO_BATTLE_TEST("Conversion 2's type change considers status moves (Gen 5+)"); TO_DO_BATTLE_TEST("Conversion 2's type change considers Inverse Battles"); -TO_DO_BATTLE_TEST("Conversion 2 fails if the move used is Stellar Type"); + +#if B_UPDATED_CONVERSION_2 < GEN_5 +SINGLE_BATTLE_TEST("Conversion 2 randomly changes the type of the user to a type that resists the last move that hit the user (Gen 3-4)") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_OMINOUS_WIND); MOVE(opponent, MOVE_CONVERSION_2); } + } SCENE { + // turn 1 + MESSAGE("Wobbuffet used Ominous Wind!"); + // turn 1 + ONE_OF { + MESSAGE("Foe Wobbuffet transformed into the Normal type!"); + MESSAGE("Foe Wobbuffet transformed into the Dark type!"); + } + } +} + +SINGLE_BATTLE_TEST("Conversion 2's type change considers Struggle to be Normal type (Gen 3-4)") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_STRUGGLE); } + TURN { MOVE(player, MOVE_CONVERSION_2); } + } SCENE { + // turn 1 + MESSAGE("Foe Wobbuffet used Struggle!"); + // turn 2 + ONE_OF { + MESSAGE("Wobbuffet transformed into the Steel type!"); + MESSAGE("Wobbuffet transformed into the Rock type!"); + MESSAGE("Wobbuffet transformed into the Ghost type!"); + } + } +} +#endif + +#if B_UPDATED_CONVERSION_2 >= GEN_5 +SINGLE_BATTLE_TEST("Conversion 2 randomly changes the type of the user to a type that resists the last used target's move (Gen 5+)") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_OMINOUS_WIND); MOVE(opponent, MOVE_CONVERSION_2); } + } SCENE { + // turn 1 + MESSAGE("Wobbuffet used Ominous Wind!"); + // turn 1 + ONE_OF { + MESSAGE("Foe Wobbuffet transformed into the Normal type!"); + MESSAGE("Foe Wobbuffet transformed into the Dark type!"); + } + } +} + +SINGLE_BATTLE_TEST("Conversion 2's type change considers status moves (Gen 5+)") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_CURSE); } + TURN { MOVE(player, MOVE_CONVERSION_2); } + } SCENE { + // turn 1 + MESSAGE("Foe Wobbuffet used Curse!"); + // turn 2 + ONE_OF { + MESSAGE("Wobbuffet transformed into the Normal type!"); + MESSAGE("Wobbuffet transformed into the Dark type!"); + } + } +} + +SINGLE_BATTLE_TEST("Conversion 2's type change considers the type of moves called by other moves") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_OMINOUS_WIND); MOVE(opponent, MOVE_MIRROR_MOVE); } + TURN { MOVE(player, MOVE_CONVERSION_2); } + } SCENE { + // turn 1 + MESSAGE("Foe Wobbuffet used Mirror Move!"); + // turn 2 + ONE_OF { + MESSAGE("Wobbuffet transformed into the Normal type!"); + MESSAGE("Wobbuffet transformed into the Dark type!"); + } + } +} + +SINGLE_BATTLE_TEST("Conversion 2's type change considers dynamic type moves") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_HAIL); MOVE(opponent, MOVE_WEATHER_BALL); } + TURN { MOVE(player, MOVE_CONVERSION_2); } + } SCENE { + // turn 1 + MESSAGE("Foe Wobbuffet used Weather Ball!"); + // turn 2 + ONE_OF { + MESSAGE("Wobbuffet transformed into the Steel type!"); + MESSAGE("Wobbuffet transformed into the Fire type!"); + MESSAGE("Wobbuffet transformed into the Water type!"); + MESSAGE("Wobbuffet transformed into the Ice type!"); + } + } +} + +SINGLE_BATTLE_TEST("Conversion 2's type change considers move types changed by Normalize and Electrify") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_NORMALIZE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_ELECTRIFY); MOVE(opponent, MOVE_POUND); } + TURN { MOVE(player, MOVE_CONVERSION_2); } + TURN { MOVE(player, MOVE_WATER_GUN); MOVE(opponent, MOVE_CONVERSION_2); } + } SCENE { + // turn 1 + MESSAGE("Wobbuffet used Electrify!"); + MESSAGE("Foe Wobbuffet used Pound!"); + // turn 2 + ONE_OF { + MESSAGE("Wobbuffet transformed into the Ground type!"); + MESSAGE("Wobbuffet transformed into the Dragon type!"); + MESSAGE("Wobbuffet transformed into the Grass type!"); + MESSAGE("Wobbuffet transformed into the Electric type!"); + } + // turn 3 + MESSAGE("Wobbuffet used Water Gun!"); + ONE_OF { + MESSAGE("Foe Wobbuffet transformed into the Steel type!"); + MESSAGE("Foe Wobbuffet transformed into the Rock type!"); + MESSAGE("Foe Wobbuffet transformed into the Ghost type!"); + } + } +} + +SINGLE_BATTLE_TEST("Conversion 2's type change fails targeting Struggle (Gen 5+)") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_STRUGGLE); } + TURN { MOVE(player, MOVE_CONVERSION_2); } + } SCENE { + // turn 1 + MESSAGE("Foe Wobbuffet used Struggle!"); + // turn 2 + MESSAGE("Wobbuffet used Conversion 2!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Conversion 2 fails if the move used is of typeless damage (Gen 5+)") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ENTEI); + } WHEN { + TURN { MOVE(opponent, MOVE_BURN_UP); } + TURN { MOVE(opponent, MOVE_REVELATION_DANCE); } + TURN { MOVE(player, MOVE_CONVERSION_2); } + } SCENE { + // turn 1 + MESSAGE("Foe Entei used Burn Up!"); + // turn 2 + MESSAGE("Foe Entei used Revelation Dance!"); + // turn 3 + MESSAGE("Wobbuffet used Conversion 2!"); + MESSAGE("But it failed!"); + } +} +#endif + +SINGLE_BATTLE_TEST("Conversion 2 fails if the targeted move is Stellar Type") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TERA_BLAST, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_CONVERSION_2); } + } SCENE { + // turn 1 + MESSAGE("Wobbuffet used Tera Blast!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TERA_BLAST, player); + // turn 1 + MESSAGE("Foe Wobbuffet used Conversion 2!"); + MESSAGE("But it failed!"); + } +} diff --git a/test/battle/move_effect/explosion.c b/test/battle/move_effect/explosion.c index a45a465ba2..a0825aac62 100644 --- a/test/battle/move_effect/explosion.c +++ b/test/battle/move_effect/explosion.c @@ -127,7 +127,7 @@ SINGLE_BATTLE_TEST("Explosion does not trigger Destiny Bond") DOUBLE_BATTLE_TEST("Explosion boosted by Galvanize is correctly blocked by Volt Absorb") { GIVEN { - PLAYER(SPECIES_GEODUDE_ALOLAN) { Ability(ABILITY_GALVANIZE); } + PLAYER(SPECIES_GEODUDE_ALOLA) { Ability(ABILITY_GALVANIZE); } PLAYER(SPECIES_WYNAUT) { HP(1); } OPPONENT(SPECIES_LANTURN) { Ability(ABILITY_VOLT_ABSORB); } OPPONENT(SPECIES_WOBBUFFET) { HP(1); } diff --git a/test/battle/move_effect/gastro_acid.c b/test/battle/move_effect/gastro_acid.c index e4f1aa5354..b3ce378794 100644 --- a/test/battle/move_effect/gastro_acid.c +++ b/test/battle/move_effect/gastro_acid.c @@ -26,8 +26,8 @@ SINGLE_BATTLE_TEST("Gastro Acid fails if target has a banned ability") // Needs confirmation since those abilities can be suppressed by Neutralizing Gas // PARAMETRIZE { species = SPECIES_IRON_MOTH; ability = ABILITY_QUARK_DRIVE; } // PARAMETRIZE { species = SPECIES_WALKING_WAKE; ability = ABILITY_PROTOSYNTHESIS; } - PARAMETRIZE { species = SPECIES_CALYREX_SHADOW_RIDER; ability = ABILITY_AS_ONE_SHADOW_RIDER; } - PARAMETRIZE { species = SPECIES_CALYREX_ICE_RIDER; ability = ABILITY_AS_ONE_ICE_RIDER; } + PARAMETRIZE { species = SPECIES_CALYREX_SHADOW; ability = ABILITY_AS_ONE_SHADOW_RIDER; } + PARAMETRIZE { species = SPECIES_CALYREX_ICE; ability = ABILITY_AS_ONE_ICE_RIDER; } GIVEN { PLAYER(SPECIES_WOBBUFFET); diff --git a/test/battle/move_effect/ivy_cudgel.c b/test/battle/move_effect/ivy_cudgel.c index 1693c439c0..095f4d8eff 100644 --- a/test/battle/move_effect/ivy_cudgel.c +++ b/test/battle/move_effect/ivy_cudgel.c @@ -12,10 +12,10 @@ SINGLE_BATTLE_TEST("Ivy Cudgel changes the move type depending on the form of Og u16 ogerpon; u16 item; - PARAMETRIZE { species = SPECIES_BLASTOISE; ogerpon = SPECIES_OGERPON_TEAL_MASK; item = ITEM_NONE; } - PARAMETRIZE { species = SPECIES_CHARIZARD; ogerpon = SPECIES_OGERPON_CORNERSTONE_MASK; item = ITEM_CORNERSTONE_MASK; } - PARAMETRIZE { species = SPECIES_CHARIZARD; ogerpon = SPECIES_OGERPON_WELLSPRING_MASK; item = ITEM_WELLSPRING_MASK; } - PARAMETRIZE { species = SPECIES_VENUSAUR; ogerpon = SPECIES_OGERPON_HEARTHFLAME_MASK; item = ITEM_HEARTHFLAME_MASK; } + PARAMETRIZE { species = SPECIES_BLASTOISE; ogerpon = SPECIES_OGERPON_TEAL; item = ITEM_NONE; } + PARAMETRIZE { species = SPECIES_CHARIZARD; ogerpon = SPECIES_OGERPON_CORNERSTONE; item = ITEM_CORNERSTONE_MASK; } + PARAMETRIZE { species = SPECIES_CHARIZARD; ogerpon = SPECIES_OGERPON_WELLSPRING; item = ITEM_WELLSPRING_MASK; } + PARAMETRIZE { species = SPECIES_VENUSAUR; ogerpon = SPECIES_OGERPON_HEARTHFLAME; item = ITEM_HEARTHFLAME_MASK; } GIVEN { PLAYER(ogerpon) { Item(item); } diff --git a/test/battle/move_effect/pledge.c b/test/battle/move_effect/pledge.c index 2098217827..bd68b1e733 100644 --- a/test/battle/move_effect/pledge.c +++ b/test/battle/move_effect/pledge.c @@ -823,7 +823,7 @@ DOUBLE_BATTLE_TEST("Pledge move combo doesn't trigger on opponent's Pledge move OPPONENT(SPECIES_WYNAUT) { Speed(5); Status1(STATUS1_SLEEP_TURN(2)); } } WHEN { TURN { MOVE(opponentLeft, MOVE_FIRE_PLEDGE, target: playerLeft); - MOVE(opponentRight, MOVE_GRASS_PLEDGE, target: playerLeft); + MOVE(opponentRight, MOVE_GRASS_PLEDGE, target: playerLeft); MOVE(playerLeft, MOVE_GRASS_PLEDGE, target: opponentRight); } } SCENE { NONE_OF { diff --git a/test/battle/move_effect/raging_bull.c b/test/battle/move_effect/raging_bull.c index 23b138ca41..7e72ca8273 100644 --- a/test/battle/move_effect/raging_bull.c +++ b/test/battle/move_effect/raging_bull.c @@ -143,9 +143,9 @@ SINGLE_BATTLE_TEST("Move Raging Bull changes it's type depending on the Tauros F u16 speciesPlayer; u16 speciesOpponent; - PARAMETRIZE { speciesPlayer = SPECIES_TAUROS_PALDEAN_COMBAT_BREED; speciesOpponent = SPECIES_CHARIZARD; } - PARAMETRIZE { speciesPlayer = SPECIES_TAUROS_PALDEAN_BLAZE_BREED; speciesOpponent = SPECIES_BLASTOISE; } - PARAMETRIZE { speciesPlayer = SPECIES_TAUROS_PALDEAN_AQUA_BREED; speciesOpponent = SPECIES_VENUSAUR; } + PARAMETRIZE { speciesPlayer = SPECIES_TAUROS_PALDEA_COMBAT; speciesOpponent = SPECIES_CHARIZARD; } + PARAMETRIZE { speciesPlayer = SPECIES_TAUROS_PALDEA_BLAZE; speciesOpponent = SPECIES_BLASTOISE; } + PARAMETRIZE { speciesPlayer = SPECIES_TAUROS_PALDEA_AQUA; speciesOpponent = SPECIES_VENUSAUR; } GIVEN { PLAYER(speciesPlayer); diff --git a/test/battle/move_effect/role_play.c b/test/battle/move_effect/role_play.c index 46452ec3ff..cf82632fd8 100644 --- a/test/battle/move_effect/role_play.c +++ b/test/battle/move_effect/role_play.c @@ -19,7 +19,7 @@ SINGLE_BATTLE_TEST("Role Play fails if target has a banned ability") PARAMETRIZE { species = SPECIES_DARMANITAN; ability = ABILITY_ZEN_MODE; } PARAMETRIZE { species = SPECIES_DITTO; ability = ABILITY_IMPOSTER; } PARAMETRIZE { species = SPECIES_AEGISLASH; ability = ABILITY_STANCE_CHANGE; } - PARAMETRIZE { species = SPECIES_MUK_ALOLAN; ability = ABILITY_POWER_OF_ALCHEMY; } + PARAMETRIZE { species = SPECIES_MUK_ALOLA; ability = ABILITY_POWER_OF_ALCHEMY; } PARAMETRIZE { species = SPECIES_PASSIMIAN; ability = ABILITY_RECEIVER; } PARAMETRIZE { species = SPECIES_WISHIWASHI; ability = ABILITY_SCHOOLING; } PARAMETRIZE { species = SPECIES_KOMALA; ability = ABILITY_COMATOSE; } diff --git a/test/battle/move_effect/wake_up_slap.c b/test/battle/move_effect/wake_up_slap.c index 2c9dd7ed24..20b22ca660 100644 --- a/test/battle/move_effect/wake_up_slap.c +++ b/test/battle/move_effect/wake_up_slap.c @@ -35,7 +35,7 @@ SINGLE_BATTLE_TEST("Wake-Up Slap does not cure paralyzed pokemons behind substit } } -SINGLE_BATTLE_TEST("Wake-Up Slap get incread power vs. sleeping targets") +SINGLE_BATTLE_TEST("Wake-Up Slap gets increased power against sleeping targets") { u32 status1; PARAMETRIZE { status1 = STATUS1_SLEEP; } diff --git a/test/battle/move_effect_secondary/freeze.c b/test/battle/move_effect_secondary/freeze.c index 1539c8a25b..45005cf5d7 100644 --- a/test/battle/move_effect_secondary/freeze.c +++ b/test/battle/move_effect_secondary/freeze.c @@ -90,11 +90,11 @@ SINGLE_BATTLE_TEST("Freezing Glare shouldn't freeze Psychic-types") #endif { GIVEN { - ASSUME(gSpeciesInfo[SPECIES_ARTICUNO_GALARIAN].types[0] == TYPE_PSYCHIC); + ASSUME(gSpeciesInfo[SPECIES_ARTICUNO_GALAR].types[0] == TYPE_PSYCHIC); 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); + PLAYER(SPECIES_ARTICUNO_GALAR); + OPPONENT(SPECIES_ARTICUNO_GALAR); } WHEN { TURN { MOVE(player, MOVE_FREEZING_GLARE); } } SCENE { diff --git a/test/battle/terrain/electric.c b/test/battle/terrain/electric.c index c39bfbbb71..bb72efdcb7 100644 --- a/test/battle/terrain/electric.c +++ b/test/battle/terrain/electric.c @@ -25,7 +25,7 @@ SINGLE_BATTLE_TEST("Electric Terrain activates Electric Seed and Mimicry") ASSUME(gItemsInfo[ITEM_ELECTRIC_SEED].holdEffect == HOLD_EFFECT_SEEDS); ASSUME(gItemsInfo[ITEM_ELECTRIC_SEED].holdEffectParam == HOLD_EFFECT_PARAM_ELECTRIC_TERRAIN); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_ELECTRIC_SEED); } - OPPONENT(SPECIES_STUNFISK_GALARIAN) { Ability(ABILITY_MIMICRY); } + OPPONENT(SPECIES_STUNFISK_GALAR) { Ability(ABILITY_MIMICRY); } } WHEN { TURN { MOVE(player, MOVE_ELECTRIC_TERRAIN); } } SCENE { diff --git a/test/battle/terrain/grassy.c b/test/battle/terrain/grassy.c index 5840f0310c..5508255afd 100644 --- a/test/battle/terrain/grassy.c +++ b/test/battle/terrain/grassy.c @@ -21,7 +21,7 @@ SINGLE_BATTLE_TEST("Grassy Terrain activates Grassy Seed and Mimicry") ASSUME(gItemsInfo[ITEM_GRASSY_SEED].holdEffect == HOLD_EFFECT_SEEDS); ASSUME(gItemsInfo[ITEM_GRASSY_SEED].holdEffectParam == HOLD_EFFECT_PARAM_GRASSY_TERRAIN); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_GRASSY_SEED); } - OPPONENT(SPECIES_STUNFISK_GALARIAN) { Ability(ABILITY_MIMICRY); } + OPPONENT(SPECIES_STUNFISK_GALAR) { Ability(ABILITY_MIMICRY); } } WHEN { TURN { MOVE(player, MOVE_GRASSY_TERRAIN); } } SCENE { diff --git a/test/battle/terrain/misty.c b/test/battle/terrain/misty.c index fbf04fcba9..d6fde8fb7d 100644 --- a/test/battle/terrain/misty.c +++ b/test/battle/terrain/misty.c @@ -25,7 +25,7 @@ SINGLE_BATTLE_TEST("Misty Terrain activates Misty Seed and Mimicry") ASSUME(gItemsInfo[ITEM_MISTY_SEED].holdEffect == HOLD_EFFECT_SEEDS); ASSUME(gItemsInfo[ITEM_MISTY_SEED].holdEffectParam == HOLD_EFFECT_PARAM_MISTY_TERRAIN); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_MISTY_SEED); } - OPPONENT(SPECIES_STUNFISK_GALARIAN) { Ability(ABILITY_MIMICRY); } + OPPONENT(SPECIES_STUNFISK_GALAR) { Ability(ABILITY_MIMICRY); } } WHEN { TURN { MOVE(player, MOVE_MISTY_TERRAIN); } } SCENE { diff --git a/test/battle/terrain/psychic.c b/test/battle/terrain/psychic.c index 44a89598d2..9a015a2c89 100644 --- a/test/battle/terrain/psychic.c +++ b/test/battle/terrain/psychic.c @@ -24,7 +24,7 @@ SINGLE_BATTLE_TEST("Psychic Terrain activates Psychic Seed and Mimicry") ASSUME(gItemsInfo[ITEM_PSYCHIC_SEED].holdEffect == HOLD_EFFECT_SEEDS); ASSUME(gItemsInfo[ITEM_PSYCHIC_SEED].holdEffectParam == HOLD_EFFECT_PARAM_PSYCHIC_TERRAIN); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PSYCHIC_SEED); } - OPPONENT(SPECIES_STUNFISK_GALARIAN) { Ability(ABILITY_MIMICRY); } + OPPONENT(SPECIES_STUNFISK_GALAR) { Ability(ABILITY_MIMICRY); } } WHEN { TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); } } SCENE { diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index 9a1ad8d708..92f041b9f6 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -559,19 +559,19 @@ void TestRunner_Battle_RecordAbilityPopUp(u32 battlerId, u32 ability) s32 match; struct QueuedEvent *event; - if (DATA.queuedEvent == DATA.queuedEventsCount) + if (DATA.trial.queuedEvent == DATA.queuedEventsCount) return; - event = &DATA.queuedEvents[DATA.queuedEvent]; + event = &DATA.queuedEvents[DATA.trial.queuedEvent]; switch (event->groupType) { case QUEUE_GROUP_NONE: case QUEUE_GROUP_ONE_OF: - if (TryAbilityPopUp(DATA.queuedEvent, event->groupSize, battlerId, ability) != -1) - DATA.queuedEvent += event->groupSize; + if (TryAbilityPopUp(DATA.trial.queuedEvent, event->groupSize, battlerId, ability) != -1) + DATA.trial.queuedEvent += event->groupSize; break; case QUEUE_GROUP_NONE_OF: - queuedEvent = DATA.queuedEvent; + queuedEvent = DATA.trial.queuedEvent; do { if ((match = TryAbilityPopUp(queuedEvent, event->groupSize, battlerId, ability)) != -1) @@ -590,7 +590,7 @@ void TestRunner_Battle_RecordAbilityPopUp(u32 battlerId, u32 ability) continue; if (TryAbilityPopUp(queuedEvent, event->groupSize, battlerId, ability) != -1) - DATA.queuedEvent = queuedEvent + event->groupSize; + DATA.trial.queuedEvent = queuedEvent + event->groupSize; } while (FALSE); break; } @@ -622,19 +622,19 @@ void TestRunner_Battle_RecordAnimation(u32 animType, u32 animId) s32 match; struct QueuedEvent *event; - if (DATA.queuedEvent == DATA.queuedEventsCount) + if (DATA.trial.queuedEvent == DATA.queuedEventsCount) return; - event = &DATA.queuedEvents[DATA.queuedEvent]; + event = &DATA.queuedEvents[DATA.trial.queuedEvent]; switch (event->groupType) { case QUEUE_GROUP_NONE: case QUEUE_GROUP_ONE_OF: - if (TryAnimation(DATA.queuedEvent, event->groupSize, animType, animId) != -1) - DATA.queuedEvent += event->groupSize; + if (TryAnimation(DATA.trial.queuedEvent, event->groupSize, animType, animId) != -1) + DATA.trial.queuedEvent += event->groupSize; break; case QUEUE_GROUP_NONE_OF: - queuedEvent = DATA.queuedEvent; + queuedEvent = DATA.trial.queuedEvent; do { if ((match = TryAnimation(queuedEvent, event->groupSize, animType, animId)) != -1) @@ -653,7 +653,7 @@ void TestRunner_Battle_RecordAnimation(u32 animType, u32 animId) continue; if (TryAnimation(queuedEvent, event->groupSize, animType, animId) != -1) - DATA.queuedEvent = queuedEvent + event->groupSize; + DATA.trial.queuedEvent = queuedEvent + event->groupSize; } while (FALSE); break; } @@ -712,19 +712,19 @@ void TestRunner_Battle_RecordHP(u32 battlerId, u32 oldHP, u32 newHP) s32 match; struct QueuedEvent *event; - if (DATA.queuedEvent == DATA.queuedEventsCount) + if (DATA.trial.queuedEvent == DATA.queuedEventsCount) return; - event = &DATA.queuedEvents[DATA.queuedEvent]; + event = &DATA.queuedEvents[DATA.trial.queuedEvent]; switch (event->groupType) { case QUEUE_GROUP_NONE: case QUEUE_GROUP_ONE_OF: - if (TryHP(DATA.queuedEvent, event->groupSize, battlerId, oldHP, newHP) != -1) - DATA.queuedEvent += event->groupSize; + if (TryHP(DATA.trial.queuedEvent, event->groupSize, battlerId, oldHP, newHP) != -1) + DATA.trial.queuedEvent += event->groupSize; break; case QUEUE_GROUP_NONE_OF: - queuedEvent = DATA.queuedEvent; + queuedEvent = DATA.trial.queuedEvent; do { if ((match = TryHP(queuedEvent, event->groupSize, battlerId, oldHP, newHP)) != -1) @@ -743,7 +743,7 @@ void TestRunner_Battle_RecordHP(u32 battlerId, u32 oldHP, u32 newHP) continue; if (TryHP(queuedEvent, event->groupSize, battlerId, oldHP, newHP) != -1) - DATA.queuedEvent = queuedEvent + event->groupSize; + DATA.trial.queuedEvent = queuedEvent + event->groupSize; } while (FALSE); break; } @@ -774,7 +774,7 @@ static u32 CountAiExpectMoves(struct ExpectedAIAction *expectedAction, u32 battl void TestRunner_Battle_CheckChosenMove(u32 battlerId, u32 moveId, u32 target) { const char *filename = gTestRunnerState.test->filename; - u32 id = DATA.aiActionsPlayed[battlerId]; + u32 id = DATA.trial.aiActionsPlayed[battlerId]; struct ExpectedAIAction *expectedAction = &DATA.expectedAiActions[battlerId][id]; if (!expectedAction->actionSet) @@ -837,13 +837,13 @@ void TestRunner_Battle_CheckChosenMove(u32 battlerId, u32 moveId, u32 target) } // Turn passed, clear logs from the turn ClearAiLog(battlerId); - DATA.aiActionsPlayed[battlerId]++; + DATA.trial.aiActionsPlayed[battlerId]++; } void TestRunner_Battle_CheckSwitch(u32 battlerId, u32 partyIndex) { const char *filename = gTestRunnerState.test->filename; - u32 id = DATA.aiActionsPlayed[battlerId]; + u32 id = DATA.trial.aiActionsPlayed[battlerId]; struct ExpectedAIAction *expectedAction = &DATA.expectedAiActions[battlerId][id]; if (!expectedAction->actionSet) @@ -857,7 +857,7 @@ void TestRunner_Battle_CheckSwitch(u32 battlerId, u32 partyIndex) if (expectedAction->target != partyIndex) Test_ExitWithResult(TEST_RESULT_FAIL, SourceLine(0), ":L%s:%d: Expected partyIndex %d, got %d", filename, expectedAction->sourceLine, expectedAction->target, partyIndex); } - DATA.aiActionsPlayed[battlerId]++; + DATA.trial.aiActionsPlayed[battlerId]++; } void TestRunner_Battle_InvalidNoHPMon(u32 battlerId, u32 partyIndex) @@ -1021,7 +1021,7 @@ void TestRunner_Battle_CheckAiMoveScores(u32 battlerId) } // We need to make sure that the expected move has the best score. We have to rule out a situation where the expected move is used, but it has the same number of points as some other moves. - aiAction = &DATA.expectedAiActions[battlerId][DATA.aiActionsPlayed[battlerId]]; + aiAction = &DATA.expectedAiActions[battlerId][DATA.trial.aiActionsPlayed[battlerId]]; if (aiAction->actionSet && !aiAction->pass) { s32 target = aiAction->target; @@ -1094,19 +1094,19 @@ void TestRunner_Battle_RecordExp(u32 battlerId, u32 oldExp, u32 newExp) s32 match; struct QueuedEvent *event; - if (DATA.queuedEvent == DATA.queuedEventsCount) + if (DATA.trial.queuedEvent == DATA.queuedEventsCount) return; - event = &DATA.queuedEvents[DATA.queuedEvent]; + event = &DATA.queuedEvents[DATA.trial.queuedEvent]; switch (event->groupType) { case QUEUE_GROUP_NONE: case QUEUE_GROUP_ONE_OF: - if (TryExp(DATA.queuedEvent, event->groupSize, battlerId, oldExp, newExp) != -1) - DATA.queuedEvent += event->groupSize; + if (TryExp(DATA.trial.queuedEvent, event->groupSize, battlerId, oldExp, newExp) != -1) + DATA.trial.queuedEvent += event->groupSize; break; case QUEUE_GROUP_NONE_OF: - queuedEvent = DATA.queuedEvent; + queuedEvent = DATA.trial.queuedEvent; do { if ((match = TryExp(queuedEvent, event->groupSize, battlerId, oldExp, newExp)) != -1) @@ -1125,7 +1125,7 @@ void TestRunner_Battle_RecordExp(u32 battlerId, u32 oldExp, u32 newExp) continue; if (TryExp(queuedEvent, event->groupSize, battlerId, oldExp, newExp) != -1) - DATA.queuedEvent = queuedEvent + event->groupSize; + DATA.trial.queuedEvent = queuedEvent + event->groupSize; } while (FALSE); break; } @@ -1183,19 +1183,19 @@ void TestRunner_Battle_RecordMessage(const u8 *string) s32 match; struct QueuedEvent *event; - if (DATA.queuedEvent == DATA.queuedEventsCount) + if (DATA.trial.queuedEvent == DATA.queuedEventsCount) return; - event = &DATA.queuedEvents[DATA.queuedEvent]; + event = &DATA.queuedEvents[DATA.trial.queuedEvent]; switch (event->groupType) { case QUEUE_GROUP_NONE: case QUEUE_GROUP_ONE_OF: - if (TryMessage(DATA.queuedEvent, event->groupSize, string) != -1) - DATA.queuedEvent += event->groupSize; + if (TryMessage(DATA.trial.queuedEvent, event->groupSize, string) != -1) + DATA.trial.queuedEvent += event->groupSize; break; case QUEUE_GROUP_NONE_OF: - queuedEvent = DATA.queuedEvent; + queuedEvent = DATA.trial.queuedEvent; do { if ((match = TryMessage(queuedEvent, event->groupSize, string)) != -1) @@ -1214,7 +1214,7 @@ void TestRunner_Battle_RecordMessage(const u8 *string) continue; if (TryMessage(queuedEvent, event->groupSize, string) != -1) - DATA.queuedEvent = queuedEvent + event->groupSize; + DATA.trial.queuedEvent = queuedEvent + event->groupSize; } while (FALSE); break; } @@ -1248,19 +1248,19 @@ void TestRunner_Battle_RecordStatus1(u32 battlerId, u32 status1) s32 match; struct QueuedEvent *event; - if (DATA.queuedEvent == DATA.queuedEventsCount) + if (DATA.trial.queuedEvent == DATA.queuedEventsCount) return; - event = &DATA.queuedEvents[DATA.queuedEvent]; + event = &DATA.queuedEvents[DATA.trial.queuedEvent]; switch (event->groupType) { case QUEUE_GROUP_NONE: case QUEUE_GROUP_ONE_OF: - if (TryStatus(DATA.queuedEvent, event->groupSize, battlerId, status1) != -1) - DATA.queuedEvent += event->groupSize; + if (TryStatus(DATA.trial.queuedEvent, event->groupSize, battlerId, status1) != -1) + DATA.trial.queuedEvent += event->groupSize; break; case QUEUE_GROUP_NONE_OF: - queuedEvent = DATA.queuedEvent; + queuedEvent = DATA.trial.queuedEvent; do { if ((match = TryStatus(queuedEvent, event->groupSize, battlerId, status1)) != -1) @@ -1279,7 +1279,7 @@ void TestRunner_Battle_RecordStatus1(u32 battlerId, u32 status1) continue; if (TryStatus(queuedEvent, event->groupSize, battlerId, status1) != -1) - DATA.queuedEvent = queuedEvent + event->groupSize; + DATA.trial.queuedEvent = queuedEvent + event->groupSize; } while (FALSE); break; } @@ -1299,22 +1299,22 @@ void TestRunner_Battle_AfterLastTurn(void) { const struct BattleTest *test = GetBattleTest(); - if (DATA.turns - 1 != DATA.lastActionTurn) + if (DATA.turns - 1 != DATA.trial.lastActionTurn) { const char *filename = gTestRunnerState.test->filename; - Test_ExitWithResult(TEST_RESULT_FAIL, SourceLine(0), ":L%s:%d: %d TURNs specified, but %d ran", filename, SourceLine(0), DATA.turns, DATA.lastActionTurn + 1); + Test_ExitWithResult(TEST_RESULT_FAIL, SourceLine(0), ":L%s:%d: %d TURNs specified, but %d ran", filename, SourceLine(0), DATA.turns, DATA.trial.lastActionTurn + 1); } - while (DATA.queuedEvent < DATA.queuedEventsCount - && DATA.queuedEvents[DATA.queuedEvent].groupType == QUEUE_GROUP_NONE_OF) + while (DATA.trial.queuedEvent < DATA.queuedEventsCount + && DATA.queuedEvents[DATA.trial.queuedEvent].groupType == QUEUE_GROUP_NONE_OF) { - DATA.queuedEvent += DATA.queuedEvents[DATA.queuedEvent].groupSize; + DATA.trial.queuedEvent += DATA.queuedEvents[DATA.trial.queuedEvent].groupSize; } - if (DATA.queuedEvent != DATA.queuedEventsCount) + if (DATA.trial.queuedEvent != DATA.queuedEventsCount) { const char *filename = gTestRunnerState.test->filename; - u32 line = SourceLine(DATA.queuedEvents[DATA.queuedEvent].sourceLineOffset); - const char *macro = sEventTypeMacros[DATA.queuedEvents[DATA.queuedEvent].type]; + u32 line = SourceLine(DATA.queuedEvents[DATA.trial.queuedEvent].sourceLineOffset); + const char *macro = sEventTypeMacros[DATA.queuedEvents[DATA.trial.queuedEvent].type]; Test_ExitWithResult(TEST_RESULT_FAIL, line, ":L%s:%d: Unmatched %s", filename, line, macro); } @@ -1383,8 +1383,7 @@ static void CB2_BattleTest_NextTrial(void) PrintTestName(); gTestRunnerState.result = TEST_RESULT_PASS; DATA.recordedBattle.rngSeed = MakeRngValue(STATE->runTrial); - DATA.queuedEvent = 0; - DATA.lastActionTurn = 0; + memset(&DATA.trial, 0, sizeof(DATA.trial)); SetVariablesForRecordedBattle(&DATA.recordedBattle); SetMainCallback2(CB2_InitBattle); } @@ -1880,7 +1879,7 @@ void TestRunner_Battle_CheckBattleRecordActionType(u32 battlerId, u32 recordInde if (DATA.battleRecordTypes[battlerId][recordIndex] != RECORDED_BYTE) { - DATA.lastActionTurn = gBattleResults.battleTurnCounter; + DATA.trial.lastActionTurn = gBattleResults.battleTurnCounter; if (actionType != DATA.battleRecordTypes[battlerId][recordIndex]) { @@ -1914,7 +1913,7 @@ void TestRunner_Battle_CheckBattleRecordActionType(u32 battlerId, u32 recordInde } else { - if (DATA.lastActionTurn == gBattleResults.battleTurnCounter) + if (DATA.trial.lastActionTurn == gBattleResults.battleTurnCounter) { const char *filename = gTestRunnerState.test->filename; Test_ExitWithResult(TEST_RESULT_FAIL, SourceLine(0), ":L%s:%d: TURN %d incomplete", filename, SourceLine(0), gBattleResults.battleTurnCounter + 1); diff --git a/tools/mgba-rom-test-hydra/main.c b/tools/mgba-rom-test-hydra/main.c index d9d8417e18..2c49b1dde8 100644 --- a/tools/mgba-rom-test-hydra/main.c +++ b/tools/mgba-rom-test-hydra/main.c @@ -65,8 +65,8 @@ struct Runner char failed_TestFilenameLine[MAX_SUMMARY_TESTS_TO_LIST][MAX_TEST_LIST_BUFFER_LENGTH]; char knownFailingPassed_TestNames[MAX_SUMMARY_TESTS_TO_LIST][MAX_TEST_LIST_BUFFER_LENGTH]; char knownFailingPassed_FilenameLine[MAX_SUMMARY_TESTS_TO_LIST][MAX_TEST_LIST_BUFFER_LENGTH]; - char assumeFailed_TestNames[MAX_SUMMARY_TESTS_TO_LIST * MAX_PROCESSES][MAX_TEST_LIST_BUFFER_LENGTH]; - char assumeFailed_FilenameLine[MAX_SUMMARY_TESTS_TO_LIST * MAX_PROCESSES][MAX_TEST_LIST_BUFFER_LENGTH]; + char assumeFailed_TestNames[MAX_SUMMARY_TESTS_TO_LIST][MAX_TEST_LIST_BUFFER_LENGTH]; + char assumeFailed_FilenameLine[MAX_SUMMARY_TESTS_TO_LIST][MAX_TEST_LIST_BUFFER_LENGTH]; }; static unsigned nrunners = 0;