diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml index cdffd6838c..32a1ce2626 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.8.3 (Latest release) + - 1.8.4 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.8.3 - 1.8.2 - 1.8.1 - 1.8.0 diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml index bf31df9931..3e21436c1a 100644 --- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml +++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml @@ -23,10 +23,10 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.8.3 (Latest release) + - 1.8.4 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) - - 1.8.2 + - 1.8.3 - 1.8.1 - 1.8.0 - 1.7.4 diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml index 6920d34a83..fcbf4b8884 100644 --- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml +++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml @@ -23,10 +23,10 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.8.3 (Latest release) + - 1.8.4 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) - - 1.8.2 + - 1.8.3 - 1.8.1 - 1.8.0 - 1.7.4 diff --git a/CHANGELOG.md b/CHANGELOG.md index 8aeeac5dec..f513818cbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Pokeemerald-Expansion Changelogs ## 1.8.x +- ### [Version 1.8.4](docs/changelogs/1.8.x/1.8.4.md) - Bugfix Release 🧹 - ### [Version 1.8.3](docs/changelogs/1.8.x/1.8.3.md) - Bugfix Release 🧹 - ### [Version 1.8.2](docs/changelogs/1.8.x/1.8.2.md) - Bugfix Release 🧹 - ### [Version 1.8.1](docs/changelogs/1.8.x/1.8.1.md) - HOTFIX Release 🔥 diff --git a/README.md b/README.md index 855ddc7b7f..c567cd72d0 100644 --- a/README.md +++ b/README.md @@ -170,7 +170,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.8.3, use `git pull RHH expansion/1.8.3`). +- 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.8.4, use `git pull RHH expansion/1.8.4`). - ***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 f661ad9dc2..cb6e2ff6a3 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -856,8 +856,9 @@ .byte 0x99 .endm - .macro setfocusenergy + .macro setfocusenergy battler:req .byte 0x9a + .byte \battler .endm .macro transformdataexecution @@ -1388,9 +1389,10 @@ .4byte \jumpInstr .endm - .macro itemrestorehp jumpInstr:req + .macro itemrestorehp jumpInstr:req, restoreBattlerInstr:req callnative BS_ItemRestoreHP .4byte \jumpInstr + .4byte \restoreBattlerInstr .endm .macro itemcurestatus jumpInstr:req diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 394ebd8e17..e03e8e2d20 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -121,7 +121,7 @@ BattleScript_EffectShedTail:: jumpifcantswitch SWITCH_IGNORE_ESCAPE_PREVENTION | BS_ATTACKER, BattleScript_ButItFailed setsubstitute jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_SUBSTITUTE_FAILED, BattleScript_SubstituteString - orword gHitMarker, HITMARKER_PASSIVE_DAMAGE + orword gHitMarker, HITMARKER_PASSIVE_DAMAGE attackanimation waitanimation healthbarupdate BS_ATTACKER @@ -3522,7 +3522,7 @@ BattleScript_EffectFocusEnergy:: attackstring ppreduce jumpifstatus2 BS_ATTACKER, STATUS2_FOCUS_ENERGY_ANY, BattleScript_ButItFailed - setfocusenergy + setfocusenergy BS_TARGET attackanimation waitanimation printfromtable gFocusEnergyUsedStringIds @@ -3821,7 +3821,7 @@ BattleScript_EffectSubstitute:: jumpifstatus2 BS_ATTACKER, STATUS2_SUBSTITUTE, BattleScript_AlreadyHasSubstitute setsubstitute jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_SUBSTITUTE_FAILED, BattleScript_SubstituteString - orword gHitMarker, HITMARKER_PASSIVE_DAMAGE + orword gHitMarker, HITMARKER_PASSIVE_DAMAGE attackanimation waitanimation healthbarupdate BS_ATTACKER @@ -7457,6 +7457,12 @@ BattleScript_TargetBurnHeal:: updatestatusicon BS_TARGET return +BattleScript_TargetPoisonHealed:: + printstring STRINGID_PASTELVEILENTERS + waitmessage B_WAIT_TIME_LONG + updatestatusicon BS_TARGET + return + BattleScript_MoveEffectSleep:: statusanimation BS_EFFECT_BATTLER printfromtable gFellAsleepStringIds @@ -7567,6 +7573,7 @@ BattleScript_MoveEffectConfusion:: BattleScript_MoveEffectRecoil:: jumpifmove MOVE_STRUGGLE, BattleScript_DoRecoil jumpifability BS_ATTACKER, ABILITY_ROCK_HEAD, BattleScript_RecoilEnd + jumpifability BS_ATTACKER, ABILITY_MAGIC_GUARD, BattleScript_RecoilEnd BattleScript_DoRecoil:: orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_IGNORE_DISGUISE healthbarupdate BS_ATTACKER @@ -7825,6 +7832,12 @@ BattleScript_IntimidateLoop: jumpiftargetally BattleScript_IntimidateLoopIncrement jumpifabsent BS_TARGET, BattleScript_IntimidateLoopIncrement jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_IntimidateLoopIncrement +.if B_UPDATED_INTIMIDATE >= GEN_8 @These abilties specifically prevent just intimidate, without blocking stat decreases + jumpifability BS_TARGET, ABILITY_INNER_FOCUS, BattleScript_IntimidatePrevented + jumpifability BS_TARGET, ABILITY_SCRAPPY, BattleScript_IntimidatePrevented + jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_IntimidatePrevented + jumpifability BS_TARGET, ABILITY_OBLIVIOUS, BattleScript_IntimidatePrevented +.endif jumpifability BS_TARGET, ABILITY_GUARD_DOG, BattleScript_IntimidateInReverse BattleScript_IntimidateEffect: copybyte sBATTLER, gBattlerAttacker @@ -7849,6 +7862,12 @@ BattleScript_IntimidateEnd: pause B_WAIT_TIME_MED end3 +BattleScript_IntimidatePrevented: + copybyte sBATTLER, gBattlerTarget + call BattleScript_AbilityPopUp + printstring STRINGID_PKMNPREVENTSSTATLOSSWITH + goto BattleScript_IntimidateEffect_WaitString + BattleScript_IntimidateWontDecrease: printstring STRINGID_STATSWONTDECREASE goto BattleScript_IntimidateEffect_WaitString @@ -8196,7 +8215,6 @@ BattleScript_MoveStatDrain:: .endif BattleScript_MoveStatDrain_Cont: clearsemiinvulnerablebit - tryfaintmon BS_ATTACKER goto BattleScript_MoveEnd BattleScript_MonMadeMoveUseless_PPLoss:: @@ -8207,7 +8225,6 @@ BattleScript_MonMadeMoveUseless:: call BattleScript_AbilityPopUp printstring STRINGID_PKMNSXMADEYUSELESS waitmessage B_WAIT_TIME_LONG - tryfaintmon BS_ATTACKER orhalfword gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE goto BattleScript_MoveEnd @@ -8219,7 +8236,6 @@ BattleScript_FlashFireBoost:: call BattleScript_AbilityPopUp printfromtable gFlashFireStringIds waitmessage B_WAIT_TIME_LONG - tryfaintmon BS_ATTACKER goto BattleScript_MoveEnd BattleScript_AbilityPreventsPhasingOut:: diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index db30a69322..3cee2d32ae 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -57,7 +57,11 @@ BattleScript_ItemRestoreHPRet: BattleScript_ItemRestoreHP:: call BattleScript_UseItemMessage - itemrestorehp BattleScript_ItemRestoreHPEnd + itemrestorehp BattleScript_ItemRestoreHPEnd, BattleScript_ItemRestoreHP_Battler + call BattleScript_ItemRestoreHP_Party + goto BattleScript_ItemRestoreHPEnd + +BattleScript_ItemRestoreHP_Battler:: call BattleScript_ItemRestoreHPRet BattleScript_ItemRestoreHPEnd: end @@ -67,7 +71,7 @@ BattleScript_ItemRestoreHP_Party:: bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT printstring STRINGID_ITEMRESTOREDSPECIESHEALTH waitmessage B_WAIT_TIME_LONG - end + return BattleScript_ItemRestoreHP_SendOutRevivedBattler: switchinanim BS_SCRIPTING, FALSE @@ -87,8 +91,13 @@ BattleScript_ItemCureStatusEnd: BattleScript_ItemHealAndCureStatus:: call BattleScript_UseItemMessage - itemrestorehp BattleScript_ItemCureStatusAfterItemMsg + itemrestorehp BattleScript_ItemCureStatusAfterItemMsg, BattleScript_ItemHealAndCureStatus_Battler + call BattleScript_ItemRestoreHP_Party + goto BattleScript_ItemHealAndCureStatusEnd + +BattleScript_ItemHealAndCureStatus_Battler:: call BattleScript_ItemRestoreHPRet +BattleScript_ItemHealAndCureStatusEnd:: goto BattleScript_ItemCureStatusAfterItemMsg BattleScript_ItemIncreaseStat:: @@ -113,7 +122,7 @@ BattleScript_ItemSetMist:: BattleScript_ItemSetFocusEnergy:: call BattleScript_UseItemMessage jumpifstatus2 BS_ATTACKER, STATUS2_FOCUS_ENERGY_ANY, BattleScript_ButItFailed - setfocusenergy + setfocusenergy BS_ATTACKER playmoveanimation BS_ATTACKER, MOVE_FOCUS_ENERGY waitanimation copybyte sBATTLER, gBattlerAttacker diff --git a/data/scripts/safari_zone.inc b/data/scripts/safari_zone.inc index eb6a90abdf..77e795a0eb 100644 --- a/data/scripts/safari_zone.inc +++ b/data/scripts/safari_zone.inc @@ -53,6 +53,9 @@ SafariZone_EventScript_ChoosePokeblock:: special OpenPokeblockCaseOnFeeder waitstate goto_if_ne VAR_RESULT, 0xFFFF, SafariZone_EventScript_PokeblockPlaced +#ifdef BUGFIX + releaseall @ Only gets called from EventScript_PokeBlockFeeder which uses lockall. +#endif end SafariZone_EventScript_PokeblockPlaced:: diff --git a/docs/changelogs/1.8.x/1.8.4.md b/docs/changelogs/1.8.x/1.8.4.md new file mode 100644 index 0000000000..09daf973c7 --- /dev/null +++ b/docs/changelogs/1.8.x/1.8.4.md @@ -0,0 +1,174 @@ +# Version 1.8.4 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.8.4`. +``` + +## 🌋 *IMPORTANT CHANGES* 🌋 +### ***[Reverted Guillotine feature branch](https://github.com/rh-hideout/pokeemerald-expansion/pull/4525)*** by @AsparagusEduardo: +* This was a runtime decapitalization branch introduced silently in version 1.8.0. We didn't properly announce as it was hastily merged and we were hoping that future versions of it would have fixed issues that we encountered after the merge. However, issues kept piling on and we felt the need to revert it as it was also silently breaking other features as well. +* ***We will work on an alternate decapitalization option in the future***. + +## 💥 *Softlock/Crash fixes* 💥 +* Fixed softlock caused by Destiny Bond triggering after Explosion by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4516 +* Fixed softlock caused by Future Sight trying to hit a fainted target by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4543 +* Fixed softlock caused by Galvanized Explosion being absorbed by Volt Absorb by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4601 +* Fixed softlock caused by Flinging a Razor Fang when the target had already moved by @hedara90 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4625 + +## 🧬 General 🧬 +### Fixed +* Fixed instances of Level Caps causing absurd amounts of Exp. by @Nopinou in https://github.com/rh-hideout/pokeemerald-expansion/pull/4505 +* Fixed `GetBoxMonData` evolution tracker reading garbage data if compiled with `agbcc` by @cawtds in https://github.com/rh-hideout/pokeemerald-expansion/pull/4510 +* Fixed potential Berry Tree mutation corruptions when compiling with `agbcc` by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4535 +* Added missing EOF newlines to `species_info` files by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4584 +* Fixed `EVO_MODE_BATTLE_SPECIAL` evolutions (only Sirfetch'd currently) triggering twice under certain situations by @cawtds in https://github.com/rh-hideout/pokeemerald-expansion/pull/4553 + * As a side effect, these evolutions no longer happen before other ones, instead being triggered in party order alongside `EVO_MODE_NORMAL`. + +## ✨ Feature Branches ✨ +### ***TheXaman's Debug Menu***: +#### Fixed +* Fixed abilities past ID 255 not being properly being given to Pokémon using the debug menu's Give Pokémon option by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4576 +### ***SBird/Karathan's Dynamic Multichoices***: +#### Changed +* Dynamic Multichoice no longer plays sound on init by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4480 +### ***TheXaman's HGSS Pokédex Plus***: +#### Fixed +* Multiple evolution page fixes by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4514 + * Fixed duplicate icons when 2 or more evolution methods share the same target species (eg. Magnezone evolution via Thunder Stone or Electromagnetic field). + * Fixed arrow not loading when there are multiple evolution methods to the same target species that hadn't been caught. + * Fixed wonky D-Pad inconsistency when scrolling down. + * Fixed regression from #3562 (1.7.0) that caused non-evolving Pokémon to not show their "X has no evolution" text. + * **Change from the original branch:** The message no longer shows for Pokémon that are part of an evolutionary family, even if they don't evolve themselves (eg. Venusaur). +* Added failsafe for Egg Groups without text defined by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4628 +### ***ghoulslash's Saveblock Cleansing***: +#### Changed +* Adjusted description of `FREE_MATCH_CALL` config to clarify that the VS Seeker also utilizes that data by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/4590 + +## 🐉 Pokémon 🐉 +### Added +* Added missing Gen 9 and PLA footprints + update some footprints by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4621 + * Credits to Caruban for creating the sprites: eeveeexpo.com/resources/1101 https://eeveeexpo.com/resources/1101/ +### Changed +* Update various sprites to ones from PokeCommunity by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4554 +* Updated footprints to Gen 4/5 designs, being more accurate to their designs @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4621 + * Golem, Ludicolo, Shroomish and Mawile. + * Also updated Origin Giratina to have an empty footprint. +* Explicitly define Gengar's 3rd ability slot (Hidden Ability) by @lhearachel in https://github.com/rh-hideout/pokeemerald-expansion/pull/4633 +### Fixed +* Fixed animation errors by adding missing 2nd frames: + * Keldeo Resolute and Meloetta Pirouette by @TheJamesLJ in https://github.com/rh-hideout/pokeemerald-expansion/pull/4541 + * White-Striped Basculin and Neutral Xerneas @cafei-uh in https://github.com/rh-hideout/pokeemerald-expansion/pull/4552 + * Summer, Autumn and Winter Sawsbuck by @cafei-uh in https://github.com/rh-hideout/pokeemerald-expansion/pull/4592 +* Fixed Unown B-Z and Punctuation Marks entry animations by @cafei-uh in https://github.com/rh-hideout/pokeemerald-expansion/pull/4546 +* Fixed Iron Hands and Iron Bundle incorrect backsprite palettes @cafei-uh in https://github.com/rh-hideout/pokeemerald-expansion/pull/4552 +* Fixed transparent pixel in Mega Mewtwo Y's backsprite eye by @TheJamesLJ in https://github.com/rh-hideout/pokeemerald-expansion/pull/4541 +* Fixed floating Munkidori backsprite @cafei-uh in https://github.com/rh-hideout/pokeemerald-expansion/pull/4552 +* Fixed Salandit's sprite and palettes by @BlueAnthem37510 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4614 +* Fixed regression from #4230 (1.8.0) that caused Mr. Mime's typing to ignore `P_UPDATED_TYPES` by @PhallenTree in https://github.com/rh-hideout/pokeemerald-expansion/pull/4547 +* Fixed silent Oricorio Pom-Pom cry by @cafei-uh in https://github.com/rh-hideout/pokeemerald-expansion/pull/4551 +* Fixed regression from #4360 (1.8.2) that caused Shaymin to changing form with the incorrect status + receiving damage upon form change by @TheJamesLJ in https://github.com/rh-hideout/pokeemerald-expansion/pull/4559 + +## ⚔️ Battle General ⚔️ ## +### Fixed +* Fixed Imposter and Transform causing the user to look shiny until screen is refreshed if they're not in the first party slot by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4486 +* Fixed regression in #4307 (1.8.2) that caused special battle types to not finish correctly by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4536 +* Fixed multiple Speed ignoring effects by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4613 + * Fixed Quick Draw always outspeeding Quick Claw and Custap Berry. + * Fixed Myceleum Might always outspeeding Stall. + +## 🤹 Moves 🤹 +### Changed +* Ported Explosion/Mind Blown/Steel Beam implementation from CFRU (with tweaks) by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4516 +### Fixed +* Fixes Thief and Covet used by an opponent not stealing items by @PhallenTree in https://github.com/rh-hideout/pokeemerald-expansion/pull/4506 +* Fixed Substitute, Fillet Away, Shed Tail and Belly Drum missing their `HITMARKER_PASSIVE_DAMAGE`, which weretriggering effects where they shouldn't by @hedara90 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4533 + * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4629 +* Fixed Copycat issues by @PhallenTree in https://github.com/rh-hideout/pokeemerald-expansion/pull/4549 + * Copycat can no longer call Z-Moves. + * 2-turn moves no longer play their animation twice when called by Copycat. +* Fixed Substitute issues by @hedara90 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4558 + * The following secondary effects no longer occur if the target is behind a Substitute. + * Knock Off + * Salt Cure + * Smack Down/Thousand Arrows + * Wake-Up Slap/Smelling Salts, including doubling in damage, unless they have the `ignoresSubstitute` like Sparkling Aria. +* Fixed move animations by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4560 + * Animations using `AnimTask_ShakeMonInPlace`: Last Resort,, Aqua Tail, Earth Power, Giga Impact, Zen Headbutt, Rock Climb, Stone Edge and Attack Order + * Animations using `AnimTask_HorizontalShake`: Sunsteel Strike and Chloroblast +* Fixed Future Sight/Doom Desire triggering Focus Sash but not consuming the item moves by @hedara90 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4625 + +## 🎭 Abilities 🎭 +### Fixed +* Fixed Gulp Missile not triggering before fainting by @BlueAnthem37510 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4502 +* Fixed Parental Bond converting Multi-Hit moves into in two-hit moves by @iriv24 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4570 +* Fixed Magic Guard not preventing recoil damage by @iriv24 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4578 +* Fixed Inner Focus, Scrappy, Oblivious and Own Temp granting immunity to all stat drops if the attacker has Intimidate by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4606 +* Fixed Moxie-like abilities not triggering when fainting the target with G-Max/Max Moves by @hedara90 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4625 + +## 🧶 Items 🧶 +### Added +* Added missing Stellar Tera Shard sprite by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4595 +### Fixed +* Fixed overflowing item descriptions for Dubious Disc and for Ice Beam and Blizzard TMs when `B_USE_FROSTBITE` is set to `TRUE` by @WillKolada in https://github.com/rh-hideout/pokeemerald-expansion/pull/4540 +* Fixed plural of "Exp. Candy XL" by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4574 +* Fixed Elixir only being usable if the first move was missing PP by @hedara90 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4594 +* Fixed Full Restore not curing statuses when used on party member that's not in battle by @cawtds in https://github.com/rh-hideout/pokeemerald-expansion/pull/4603 +* Fixed Sceptilite using Tyranitarite's palette by @BlueAnthem37510 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4614 +* Fixed Dire Hit being used on incorrect targets by @cawtds in https://github.com/rh-hideout/pokeemerald-expansion/pull/4626 + +## 🤖 Battle AI 🤖 +### Changed +* AI is now aware that Dynamaxed targets are immune to Heat Crash's effect by @WillKolada in https://github.com/rh-hideout/pokeemerald-expansion/pull/4521 +* AI now ignores resistances that don't actually apply when checking for bad moves by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4524 + * For example: Super Fang, Counter and Endeavor. +* Stat stage related AI improvements by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4548 + * Contrary is now properly checked. + * Some evasion and accuracy checks that were incorrectly handled are now fixed. +* Updated AI scores for Status moves that Dynamax Pokémon are immune to by @WillKolada in https://github.com/rh-hideout/pokeemerald-expansion/pull/4523 + * Roar, One-Hit KO moves, Disable, Encore, Torment, Destiny Bond, Skill Swap, Entrainment, Instruct and Skill Swappokeemerald-expansion/pull/4518 +### Fixed +* Various AI switching logic fixes by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4571 + * Weather-based healing was treated as damage + * Damage and healing from multiple sources overwrote each other + * Utility Umbrella and Magic Guard were ignored. + * Max G-Steelsurge was ignored. + * Sitrus Berry's Gen 4+ effect was ignored. + * Removed item ID hardcoding for confuse berries. +* Various AI switching logic fixes Part 2 by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4572 + * AI now calculates damage from the badly poisoned status. + * AI now removes weather damage from current AI instead of adding it. + * Cleanup for #4571 +* AI respects partner when using spread moves in double battles by @AlexOn1ine in https://github.com/rh-hideout/ +* Fixed AI not properly reading that Belch could be used after eating a berry by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/4616 + +## 🧹 Other Cleanup 🧹 +### Fixed +* Fixed `BS_SetGlaiveRush` formatting by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4610 + +## 🧪 Test Runner 🧪 +### Added +* Added tests to verify Parental Bond doesn't affect `EFFECT_MULTI_HIT` moves by @iriv24 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4573 +* Added missing Move Effect TODO tests - Volume A by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4569 + * Handles all `EFFECTS_x` that start with A, other effects will follow. Once all TODO tests are added, tests can begin to be written to assure that all current functionalities are fully functional. +### Fixed +* Fixed incorrect Quick Claw test name by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4613 + +## 📦 Pret merges 📦 +* Pre-1.8.4 pret merge (2024/05/26) (v2) by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4637 + * Fix poison projectile array being incorrectly combined into three separate arrays by @NTx86 in https://github.com/pret/pokeemerald/pull/1989 + * Fix hoenn pokedex palette being split in two by @NTx86 in https://github.com/pret/pokeemerald/pull/1990 + * Fix Pokeblock script missing a releaseall by @Jaizu in https://github.com/pret/pokeemerald/pull/1996 + * Fix Pokeblock script missing a releaseall by @Jaizu in https://github.com/pret/pokeemerald/pull/1996 + * Make AdjustFriendship more readable by @Jaizu in https://github.com/pret/pokeemerald/pull/1995 + * Move POKE_ICON_BASE_PAL_TAG to a header by @Sneed69 in https://github.com/pret/pokeemerald/pull/1998 + +## New Contributors +* @BlueAnthem37510 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/4502 +* @TheJamesLJ made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/4541 +* @iriv24 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/4570 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.8.3...expansion/1.8.4 + + \ No newline at end of file diff --git a/graphics/items/icon_palettes/sceptilite.pal b/graphics/items/icon_palettes/sceptilite.pal index 579e9c4198..9c8978d4b5 100644 --- a/graphics/items/icon_palettes/sceptilite.pal +++ b/graphics/items/icon_palettes/sceptilite.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 255 0 128 -48 48 48 -80 96 80 -184 40 48 -248 32 32 -128 160 104 -168 192 160 -248 160 152 -192 96 64 -248 248 248 -64 64 64 -96 120 88 -192 208 120 -0 0 0 -0 0 0 -0 0 0 +115 57 41 +197 148 123 +255 255 255 +197 148 115 +82 131 74 +172 197 164 +189 115 82 +148 115 74 +65 106 65 +164 139 90 +115 189 115 +222 98 82 +41 74 41 +49 49 49 +189 246 213 diff --git a/graphics/items/icon_palettes/stellar_tera_shard.pal b/graphics/items/icon_palettes/stellar_tera_shard.pal new file mode 100644 index 0000000000..8afcf6cab2 --- /dev/null +++ b/graphics/items/icon_palettes/stellar_tera_shard.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +0 255 92 +147 87 0 +0 161 79 +0 0 0 +209 155 7 +57 67 189 +167 25 135 +217 120 165 +189 109 220 +167 219 139 +255 239 132 +246 240 183 +171 225 199 +137 195 227 +233 240 241 diff --git a/graphics/items/icons/sceptilite.png b/graphics/items/icons/sceptilite.png index ba61c74aac..d68d90aebd 100644 Binary files a/graphics/items/icons/sceptilite.png and b/graphics/items/icons/sceptilite.png differ diff --git a/graphics/items/icons/stellar_tera_shard.png b/graphics/items/icons/stellar_tera_shard.png new file mode 100644 index 0000000000..a4bdfa3f2c Binary files /dev/null and b/graphics/items/icons/stellar_tera_shard.png differ diff --git a/graphics/pokedex/bg_hoenn.pal b/graphics/pokedex/bg_hoenn.pal index 569c7821a9..01bd8a3a3d 100644 --- a/graphics/pokedex/bg_hoenn.pal +++ b/graphics/pokedex/bg_hoenn.pal @@ -1,6 +1,6 @@ JASC-PAL 0100 -48 +96 123 131 0 255 255 255 222 222 222 @@ -49,3 +49,51 @@ JASC-PAL 49 139 255 189 156 90 0 0 0 +123 131 0 +255 255 255 +255 238 0 +255 189 0 +255 115 0 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +49 213 74 +24 131 32 +189 156 90 +0 0 0 +123 131 0 +255 255 255 +197 32 32 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +189 0 0 +74 148 180 +8 90 131 +189 156 90 +0 0 0 +123 131 0 +255 255 255 +197 32 32 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +180 205 246 +49 139 255 +189 156 90 +0 0 0 diff --git a/graphics/pokedex/caught_screen.pal b/graphics/pokedex/caught_screen.pal deleted file mode 100644 index 26da98a84c..0000000000 --- a/graphics/pokedex/caught_screen.pal +++ /dev/null @@ -1,51 +0,0 @@ -JASC-PAL -0100 -48 -123 131 0 -255 255 255 -255 238 0 -255 189 0 -255 115 0 -98 98 115 -41 57 65 -41 57 106 -0 0 41 -255 255 255 -238 246 57 -255 0 189 -49 213 74 -24 131 32 -189 156 90 -0 0 0 -123 131 0 -255 255 255 -197 32 32 -189 189 189 -164 164 164 -98 98 115 -41 57 65 -41 57 106 -0 0 41 -255 255 255 -238 246 57 -189 0 0 -74 148 180 -8 90 131 -189 156 90 -0 0 0 -123 131 0 -255 255 255 -197 32 32 -189 189 189 -164 164 164 -98 98 115 -41 57 65 -41 57 106 -0 0 41 -255 255 255 -238 246 57 -255 0 189 -180 205 246 -49 139 255 -189 156 90 -0 0 0 diff --git a/graphics/pokemon/annihilape/footprint.png b/graphics/pokemon/annihilape/footprint.png new file mode 100644 index 0000000000..e97bb4b618 Binary files /dev/null and b/graphics/pokemon/annihilape/footprint.png differ diff --git a/graphics/pokemon/arboliva/footprint.png b/graphics/pokemon/arboliva/footprint.png new file mode 100644 index 0000000000..a5932a9eae Binary files /dev/null and b/graphics/pokemon/arboliva/footprint.png differ diff --git a/graphics/pokemon/archaludon/footprint.png b/graphics/pokemon/archaludon/footprint.png new file mode 100644 index 0000000000..c526325d90 Binary files /dev/null and b/graphics/pokemon/archaludon/footprint.png differ diff --git a/graphics/pokemon/arctibax/footprint.png b/graphics/pokemon/arctibax/footprint.png new file mode 100644 index 0000000000..d2e07ad6fd Binary files /dev/null and b/graphics/pokemon/arctibax/footprint.png differ diff --git a/graphics/pokemon/armarouge/footprint.png b/graphics/pokemon/armarouge/footprint.png new file mode 100644 index 0000000000..f852f63d08 Binary files /dev/null and b/graphics/pokemon/armarouge/footprint.png differ diff --git a/graphics/pokemon/basculegion/footprint.png b/graphics/pokemon/basculegion/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/basculegion/footprint.png differ diff --git a/graphics/pokemon/baxcalibur/footprint.png b/graphics/pokemon/baxcalibur/footprint.png new file mode 100644 index 0000000000..10b05c8762 Binary files /dev/null and b/graphics/pokemon/baxcalibur/footprint.png differ diff --git a/graphics/pokemon/bellibolt/footprint.png b/graphics/pokemon/bellibolt/footprint.png new file mode 100644 index 0000000000..32c340152b Binary files /dev/null and b/graphics/pokemon/bellibolt/footprint.png differ diff --git a/graphics/pokemon/bombirdier/footprint.png b/graphics/pokemon/bombirdier/footprint.png new file mode 100644 index 0000000000..2389712efb Binary files /dev/null and b/graphics/pokemon/bombirdier/footprint.png differ diff --git a/graphics/pokemon/brambleghast/footprint.png b/graphics/pokemon/brambleghast/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/brambleghast/footprint.png differ diff --git a/graphics/pokemon/bramblin/footprint.png b/graphics/pokemon/bramblin/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/bramblin/footprint.png differ diff --git a/graphics/pokemon/brute_bonnet/footprint.png b/graphics/pokemon/brute_bonnet/footprint.png new file mode 100644 index 0000000000..5bafea5781 Binary files /dev/null and b/graphics/pokemon/brute_bonnet/footprint.png differ diff --git a/graphics/pokemon/capsakid/footprint.png b/graphics/pokemon/capsakid/footprint.png new file mode 100644 index 0000000000..9cdf12b7d9 Binary files /dev/null and b/graphics/pokemon/capsakid/footprint.png differ diff --git a/graphics/pokemon/ceruledge/footprint.png b/graphics/pokemon/ceruledge/footprint.png new file mode 100644 index 0000000000..cbad1d4a4c Binary files /dev/null and b/graphics/pokemon/ceruledge/footprint.png differ diff --git a/graphics/pokemon/cetitan/footprint.png b/graphics/pokemon/cetitan/footprint.png new file mode 100644 index 0000000000..791ae8ad23 Binary files /dev/null and b/graphics/pokemon/cetitan/footprint.png differ diff --git a/graphics/pokemon/cetoddle/footprint.png b/graphics/pokemon/cetoddle/footprint.png new file mode 100644 index 0000000000..ede12242e3 Binary files /dev/null and b/graphics/pokemon/cetoddle/footprint.png differ diff --git a/graphics/pokemon/charcadet/footprint.png b/graphics/pokemon/charcadet/footprint.png new file mode 100644 index 0000000000..e1c41f7938 Binary files /dev/null and b/graphics/pokemon/charcadet/footprint.png differ diff --git a/graphics/pokemon/chi_yu/footprint.png b/graphics/pokemon/chi_yu/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/chi_yu/footprint.png differ diff --git a/graphics/pokemon/chien_pao/footprint.png b/graphics/pokemon/chien_pao/footprint.png new file mode 100644 index 0000000000..d99c06cccc Binary files /dev/null and b/graphics/pokemon/chien_pao/footprint.png differ diff --git a/graphics/pokemon/clodsire/footprint.png b/graphics/pokemon/clodsire/footprint.png new file mode 100644 index 0000000000..1934312a41 Binary files /dev/null and b/graphics/pokemon/clodsire/footprint.png differ diff --git a/graphics/pokemon/crocalor/footprint.png b/graphics/pokemon/crocalor/footprint.png new file mode 100644 index 0000000000..b67e6334e5 Binary files /dev/null and b/graphics/pokemon/crocalor/footprint.png differ diff --git a/graphics/pokemon/cyclizar/footprint.png b/graphics/pokemon/cyclizar/footprint.png new file mode 100644 index 0000000000..fcb669eee3 Binary files /dev/null and b/graphics/pokemon/cyclizar/footprint.png differ diff --git a/graphics/pokemon/dachsbun/footprint.png b/graphics/pokemon/dachsbun/footprint.png new file mode 100644 index 0000000000..38c40c9b1f Binary files /dev/null and b/graphics/pokemon/dachsbun/footprint.png differ diff --git a/graphics/pokemon/dipplin/footprint.png b/graphics/pokemon/dipplin/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/dipplin/footprint.png differ diff --git a/graphics/pokemon/dolliv/footprint.png b/graphics/pokemon/dolliv/footprint.png new file mode 100644 index 0000000000..a406355176 Binary files /dev/null and b/graphics/pokemon/dolliv/footprint.png differ diff --git a/graphics/pokemon/dondozo/footprint.png b/graphics/pokemon/dondozo/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/dondozo/footprint.png differ diff --git a/graphics/pokemon/dudunsparce/footprint.png b/graphics/pokemon/dudunsparce/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/dudunsparce/footprint.png differ diff --git a/graphics/pokemon/enamorus/footprint.png b/graphics/pokemon/enamorus/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/enamorus/footprint.png differ diff --git a/graphics/pokemon/espathra/footprint.png b/graphics/pokemon/espathra/footprint.png new file mode 100644 index 0000000000..79ef25cf42 Binary files /dev/null and b/graphics/pokemon/espathra/footprint.png differ diff --git a/graphics/pokemon/farigiraf/footprint.png b/graphics/pokemon/farigiraf/footprint.png new file mode 100644 index 0000000000..a9377213fd Binary files /dev/null and b/graphics/pokemon/farigiraf/footprint.png differ diff --git a/graphics/pokemon/fezandipiti/footprint.png b/graphics/pokemon/fezandipiti/footprint.png new file mode 100644 index 0000000000..5e8437c6da Binary files /dev/null and b/graphics/pokemon/fezandipiti/footprint.png differ diff --git a/graphics/pokemon/fidough/footprint.png b/graphics/pokemon/fidough/footprint.png new file mode 100644 index 0000000000..218192e037 Binary files /dev/null and b/graphics/pokemon/fidough/footprint.png differ diff --git a/graphics/pokemon/finizen/footprint.png b/graphics/pokemon/finizen/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/finizen/footprint.png differ diff --git a/graphics/pokemon/flamigo/footprint.png b/graphics/pokemon/flamigo/footprint.png new file mode 100644 index 0000000000..dd0c280bfe Binary files /dev/null and b/graphics/pokemon/flamigo/footprint.png differ diff --git a/graphics/pokemon/flittle/footprint.png b/graphics/pokemon/flittle/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/flittle/footprint.png differ diff --git a/graphics/pokemon/floragato/footprint.png b/graphics/pokemon/floragato/footprint.png new file mode 100644 index 0000000000..058111ad28 Binary files /dev/null and b/graphics/pokemon/floragato/footprint.png differ diff --git a/graphics/pokemon/flutter_mane/footprint.png b/graphics/pokemon/flutter_mane/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/flutter_mane/footprint.png differ diff --git a/graphics/pokemon/frigibax/footprint.png b/graphics/pokemon/frigibax/footprint.png new file mode 100644 index 0000000000..9f1c1ac999 Binary files /dev/null and b/graphics/pokemon/frigibax/footprint.png differ diff --git a/graphics/pokemon/fuecoco/footprint.png b/graphics/pokemon/fuecoco/footprint.png new file mode 100644 index 0000000000..be38770a08 Binary files /dev/null and b/graphics/pokemon/fuecoco/footprint.png differ diff --git a/graphics/pokemon/garganacl/footprint.png b/graphics/pokemon/garganacl/footprint.png new file mode 100644 index 0000000000..d91f5eea5f Binary files /dev/null and b/graphics/pokemon/garganacl/footprint.png differ diff --git a/graphics/pokemon/gholdengo/footprint.png b/graphics/pokemon/gholdengo/footprint.png new file mode 100644 index 0000000000..00fa1399cb Binary files /dev/null and b/graphics/pokemon/gholdengo/footprint.png differ diff --git a/graphics/pokemon/gimmighoul/footprint.png b/graphics/pokemon/gimmighoul/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/gimmighoul/footprint.png differ diff --git a/graphics/pokemon/gimmighoul/roaming/footprint.png b/graphics/pokemon/gimmighoul/roaming/footprint.png new file mode 100644 index 0000000000..afbe34b847 Binary files /dev/null and b/graphics/pokemon/gimmighoul/roaming/footprint.png differ diff --git a/graphics/pokemon/giratina/origin/footprint.png b/graphics/pokemon/giratina/origin/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/giratina/origin/footprint.png differ diff --git a/graphics/pokemon/glimmet/footprint.png b/graphics/pokemon/glimmet/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/glimmet/footprint.png differ diff --git a/graphics/pokemon/glimmora/footprint.png b/graphics/pokemon/glimmora/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/glimmora/footprint.png differ diff --git a/graphics/pokemon/golem/footprint.png b/graphics/pokemon/golem/footprint.png index c9f6144429..0db6de32c7 100644 Binary files a/graphics/pokemon/golem/footprint.png and b/graphics/pokemon/golem/footprint.png differ diff --git a/graphics/pokemon/gouging_fire/footprint.png b/graphics/pokemon/gouging_fire/footprint.png new file mode 100644 index 0000000000..c8be58fdd1 Binary files /dev/null and b/graphics/pokemon/gouging_fire/footprint.png differ diff --git a/graphics/pokemon/grafaiai/footprint.png b/graphics/pokemon/grafaiai/footprint.png new file mode 100644 index 0000000000..073c30a370 Binary files /dev/null and b/graphics/pokemon/grafaiai/footprint.png differ diff --git a/graphics/pokemon/great_tusk/footprint.png b/graphics/pokemon/great_tusk/footprint.png new file mode 100644 index 0000000000..98bc6c9db4 Binary files /dev/null and b/graphics/pokemon/great_tusk/footprint.png differ diff --git a/graphics/pokemon/greavard/footprint.png b/graphics/pokemon/greavard/footprint.png new file mode 100644 index 0000000000..44323de9cd Binary files /dev/null and b/graphics/pokemon/greavard/footprint.png differ diff --git a/graphics/pokemon/houndstone/footprint.png b/graphics/pokemon/houndstone/footprint.png new file mode 100644 index 0000000000..c6c40f1b34 Binary files /dev/null and b/graphics/pokemon/houndstone/footprint.png differ diff --git a/graphics/pokemon/hydrapple/footprint.png b/graphics/pokemon/hydrapple/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/hydrapple/footprint.png differ diff --git a/graphics/pokemon/iron_boulder/footprint.png b/graphics/pokemon/iron_boulder/footprint.png new file mode 100644 index 0000000000..47710dbb18 Binary files /dev/null and b/graphics/pokemon/iron_boulder/footprint.png differ diff --git a/graphics/pokemon/iron_bundle/footprint.png b/graphics/pokemon/iron_bundle/footprint.png new file mode 100644 index 0000000000..f457d28252 Binary files /dev/null and b/graphics/pokemon/iron_bundle/footprint.png differ diff --git a/graphics/pokemon/iron_crown/footprint.png b/graphics/pokemon/iron_crown/footprint.png new file mode 100644 index 0000000000..a41a305317 Binary files /dev/null and b/graphics/pokemon/iron_crown/footprint.png differ diff --git a/graphics/pokemon/iron_hands/footprint.png b/graphics/pokemon/iron_hands/footprint.png new file mode 100644 index 0000000000..18671be158 Binary files /dev/null and b/graphics/pokemon/iron_hands/footprint.png differ diff --git a/graphics/pokemon/iron_jugulis/footprint.png b/graphics/pokemon/iron_jugulis/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/iron_jugulis/footprint.png differ diff --git a/graphics/pokemon/iron_leaves/footprint.png b/graphics/pokemon/iron_leaves/footprint.png new file mode 100644 index 0000000000..2850ad76c8 Binary files /dev/null and b/graphics/pokemon/iron_leaves/footprint.png differ diff --git a/graphics/pokemon/iron_moth/footprint.png b/graphics/pokemon/iron_moth/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/iron_moth/footprint.png differ diff --git a/graphics/pokemon/iron_thorns/footprint.png b/graphics/pokemon/iron_thorns/footprint.png new file mode 100644 index 0000000000..b1f2f978b3 Binary files /dev/null and b/graphics/pokemon/iron_thorns/footprint.png differ diff --git a/graphics/pokemon/iron_treads/footprint.png b/graphics/pokemon/iron_treads/footprint.png new file mode 100644 index 0000000000..b0b7534d3b Binary files /dev/null and b/graphics/pokemon/iron_treads/footprint.png differ diff --git a/graphics/pokemon/iron_valiant/footprint.png b/graphics/pokemon/iron_valiant/footprint.png new file mode 100644 index 0000000000..63d1f9d64a Binary files /dev/null and b/graphics/pokemon/iron_valiant/footprint.png differ diff --git a/graphics/pokemon/kilowattrel/footprint.png b/graphics/pokemon/kilowattrel/footprint.png new file mode 100644 index 0000000000..4240923c42 Binary files /dev/null and b/graphics/pokemon/kilowattrel/footprint.png differ diff --git a/graphics/pokemon/kingambit/footprint.png b/graphics/pokemon/kingambit/footprint.png new file mode 100644 index 0000000000..3d73465ed9 Binary files /dev/null and b/graphics/pokemon/kingambit/footprint.png differ diff --git a/graphics/pokemon/klawf/footprint.png b/graphics/pokemon/klawf/footprint.png new file mode 100644 index 0000000000..9a3814bedd Binary files /dev/null and b/graphics/pokemon/klawf/footprint.png differ diff --git a/graphics/pokemon/kleavor/footprint.png b/graphics/pokemon/kleavor/footprint.png new file mode 100644 index 0000000000..0c6a894993 Binary files /dev/null and b/graphics/pokemon/kleavor/footprint.png differ diff --git a/graphics/pokemon/koraidon/footprint.png b/graphics/pokemon/koraidon/footprint.png new file mode 100644 index 0000000000..10257b056e Binary files /dev/null and b/graphics/pokemon/koraidon/footprint.png differ diff --git a/graphics/pokemon/lechonk/footprint.png b/graphics/pokemon/lechonk/footprint.png new file mode 100644 index 0000000000..bf7b5845f8 Binary files /dev/null and b/graphics/pokemon/lechonk/footprint.png differ diff --git a/graphics/pokemon/lokix/footprint.png b/graphics/pokemon/lokix/footprint.png new file mode 100644 index 0000000000..dd2e7977ce Binary files /dev/null and b/graphics/pokemon/lokix/footprint.png differ diff --git a/graphics/pokemon/ludicolo/footprint.png b/graphics/pokemon/ludicolo/footprint.png index e5aa759abc..a85dc2742f 100644 Binary files a/graphics/pokemon/ludicolo/footprint.png and b/graphics/pokemon/ludicolo/footprint.png differ diff --git a/graphics/pokemon/mabosstiff/footprint.png b/graphics/pokemon/mabosstiff/footprint.png new file mode 100644 index 0000000000..31c2d2e5b1 Binary files /dev/null and b/graphics/pokemon/mabosstiff/footprint.png differ diff --git a/graphics/pokemon/maschiff/footprint.png b/graphics/pokemon/maschiff/footprint.png new file mode 100644 index 0000000000..64cbfc512a Binary files /dev/null and b/graphics/pokemon/maschiff/footprint.png differ diff --git a/graphics/pokemon/maushold/footprint.png b/graphics/pokemon/maushold/footprint.png new file mode 100644 index 0000000000..f35d7021d9 Binary files /dev/null and b/graphics/pokemon/maushold/footprint.png differ diff --git a/graphics/pokemon/maushold/four/footprint.png b/graphics/pokemon/maushold/four/footprint.png new file mode 100644 index 0000000000..020c31fdb4 Binary files /dev/null and b/graphics/pokemon/maushold/four/footprint.png differ diff --git a/graphics/pokemon/mawile/footprint.png b/graphics/pokemon/mawile/footprint.png index 2aa7148e79..3cd7a16a4c 100644 Binary files a/graphics/pokemon/mawile/footprint.png and b/graphics/pokemon/mawile/footprint.png differ diff --git a/graphics/pokemon/meowscarada/footprint.png b/graphics/pokemon/meowscarada/footprint.png new file mode 100644 index 0000000000..058111ad28 Binary files /dev/null and b/graphics/pokemon/meowscarada/footprint.png differ diff --git a/graphics/pokemon/miraidon/footprint.png b/graphics/pokemon/miraidon/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/miraidon/footprint.png differ diff --git a/graphics/pokemon/munkidori/footprint.png b/graphics/pokemon/munkidori/footprint.png new file mode 100644 index 0000000000..52b6602fcd Binary files /dev/null and b/graphics/pokemon/munkidori/footprint.png differ diff --git a/graphics/pokemon/nacli/footprint.png b/graphics/pokemon/nacli/footprint.png new file mode 100644 index 0000000000..d4703463c1 Binary files /dev/null and b/graphics/pokemon/nacli/footprint.png differ diff --git a/graphics/pokemon/naclstack/footprint.png b/graphics/pokemon/naclstack/footprint.png new file mode 100644 index 0000000000..14e4bcbc22 Binary files /dev/null and b/graphics/pokemon/naclstack/footprint.png differ diff --git a/graphics/pokemon/nymble/footprint.png b/graphics/pokemon/nymble/footprint.png new file mode 100644 index 0000000000..8c50a10c1e Binary files /dev/null and b/graphics/pokemon/nymble/footprint.png differ diff --git a/graphics/pokemon/ogerpon/footprint.png b/graphics/pokemon/ogerpon/footprint.png new file mode 100644 index 0000000000..3dc4bcbc9b Binary files /dev/null and b/graphics/pokemon/ogerpon/footprint.png differ diff --git a/graphics/pokemon/oinkologne/footprint.png b/graphics/pokemon/oinkologne/footprint.png new file mode 100644 index 0000000000..d52b365f1d Binary files /dev/null and b/graphics/pokemon/oinkologne/footprint.png differ diff --git a/graphics/pokemon/okidogi/footprint.png b/graphics/pokemon/okidogi/footprint.png new file mode 100644 index 0000000000..73f8f47a40 Binary files /dev/null and b/graphics/pokemon/okidogi/footprint.png differ diff --git a/graphics/pokemon/orthworm/footprint.png b/graphics/pokemon/orthworm/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/orthworm/footprint.png differ diff --git a/graphics/pokemon/overqwil/footprint.png b/graphics/pokemon/overqwil/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/overqwil/footprint.png differ diff --git a/graphics/pokemon/palafin/footprint.png b/graphics/pokemon/palafin/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/palafin/footprint.png differ diff --git a/graphics/pokemon/pawmi/footprint.png b/graphics/pokemon/pawmi/footprint.png new file mode 100644 index 0000000000..41a6a95d83 Binary files /dev/null and b/graphics/pokemon/pawmi/footprint.png differ diff --git a/graphics/pokemon/pawmo/footprint.png b/graphics/pokemon/pawmo/footprint.png new file mode 100644 index 0000000000..ba420dc472 Binary files /dev/null and b/graphics/pokemon/pawmo/footprint.png differ diff --git a/graphics/pokemon/pawmot/footprint.png b/graphics/pokemon/pawmot/footprint.png new file mode 100644 index 0000000000..62e330603c Binary files /dev/null and b/graphics/pokemon/pawmot/footprint.png differ diff --git a/graphics/pokemon/pecharunt/footprint.png b/graphics/pokemon/pecharunt/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/pecharunt/footprint.png differ diff --git a/graphics/pokemon/poltchageist/footprint.png b/graphics/pokemon/poltchageist/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/poltchageist/footprint.png differ diff --git a/graphics/pokemon/quaquaval/footprint.png b/graphics/pokemon/quaquaval/footprint.png new file mode 100644 index 0000000000..3fa649f999 Binary files /dev/null and b/graphics/pokemon/quaquaval/footprint.png differ diff --git a/graphics/pokemon/quaxly/footprint.png b/graphics/pokemon/quaxly/footprint.png new file mode 100644 index 0000000000..9f25aa9d23 Binary files /dev/null and b/graphics/pokemon/quaxly/footprint.png differ diff --git a/graphics/pokemon/quaxwell/footprint.png b/graphics/pokemon/quaxwell/footprint.png new file mode 100644 index 0000000000..b4c98450a6 Binary files /dev/null and b/graphics/pokemon/quaxwell/footprint.png differ diff --git a/graphics/pokemon/question_mark/footprint.png b/graphics/pokemon/question_mark/footprint.png index 8da752a46b..9a019bb167 100644 Binary files a/graphics/pokemon/question_mark/footprint.png and b/graphics/pokemon/question_mark/footprint.png differ diff --git a/graphics/pokemon/rabsca/footprint.png b/graphics/pokemon/rabsca/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/rabsca/footprint.png differ diff --git a/graphics/pokemon/raging_bolt/footprint.png b/graphics/pokemon/raging_bolt/footprint.png new file mode 100644 index 0000000000..07df1f47dd Binary files /dev/null and b/graphics/pokemon/raging_bolt/footprint.png differ diff --git a/graphics/pokemon/rellor/footprint.png b/graphics/pokemon/rellor/footprint.png new file mode 100644 index 0000000000..8512367993 Binary files /dev/null and b/graphics/pokemon/rellor/footprint.png differ diff --git a/graphics/pokemon/revavroom/footprint.png b/graphics/pokemon/revavroom/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/revavroom/footprint.png differ diff --git a/graphics/pokemon/roaring_moon/footprint.png b/graphics/pokemon/roaring_moon/footprint.png new file mode 100644 index 0000000000..37eaedcb45 Binary files /dev/null and b/graphics/pokemon/roaring_moon/footprint.png differ diff --git a/graphics/pokemon/salandit/anim_front.png b/graphics/pokemon/salandit/anim_front.png index 6bcd63d4d3..6197504ef2 100644 Binary files a/graphics/pokemon/salandit/anim_front.png and b/graphics/pokemon/salandit/anim_front.png differ diff --git a/graphics/pokemon/salandit/back.png b/graphics/pokemon/salandit/back.png index 461f7015a3..1563a0d0c1 100644 Binary files a/graphics/pokemon/salandit/back.png and b/graphics/pokemon/salandit/back.png differ diff --git a/graphics/pokemon/salandit/normal.pal b/graphics/pokemon/salandit/normal.pal index ba5c7e8bfe..02630e94b3 100644 --- a/graphics/pokemon/salandit/normal.pal +++ b/graphics/pokemon/salandit/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 32 32 -16 16 8 +37 34 33 +50 45 44 16 16 16 240 80 8 104 104 96 -40 32 24 -64 56 48 +55 50 50 +67 62 60 112 88 88 184 152 200 216 200 224 88 80 136 64 64 64 136 120 112 -0 0 0 -0 0 0 +255 255 255 +196 18 18 diff --git a/graphics/pokemon/salandit/shiny.pal b/graphics/pokemon/salandit/shiny.pal index 77e8261440..a24b6f5dfe 100644 --- a/graphics/pokemon/salandit/shiny.pal +++ b/graphics/pokemon/salandit/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +37 34 33 112 96 96 -16 16 8 16 16 16 240 80 8 200 192 200 -40 32 24 -64 56 48 +55 50 50 +67 62 60 112 88 88 184 152 200 216 200 224 88 80 136 144 136 144 224 224 224 -0 0 0 -0 0 0 +255 255 255 +196 18 18 diff --git a/graphics/pokemon/sandy_shocks/footprint.png b/graphics/pokemon/sandy_shocks/footprint.png new file mode 100644 index 0000000000..a703fdf646 Binary files /dev/null and b/graphics/pokemon/sandy_shocks/footprint.png differ diff --git a/graphics/pokemon/sawsbuck/autumn/anim_front.png b/graphics/pokemon/sawsbuck/autumn/anim_front.png new file mode 100644 index 0000000000..91d0c0ef30 Binary files /dev/null and b/graphics/pokemon/sawsbuck/autumn/anim_front.png differ diff --git a/graphics/pokemon/sawsbuck/autumn/front.png b/graphics/pokemon/sawsbuck/autumn/front.png deleted file mode 100644 index 97c43db22c..0000000000 Binary files a/graphics/pokemon/sawsbuck/autumn/front.png and /dev/null differ diff --git a/graphics/pokemon/sawsbuck/summer/anim_front.png b/graphics/pokemon/sawsbuck/summer/anim_front.png new file mode 100644 index 0000000000..f54e11a79b Binary files /dev/null and b/graphics/pokemon/sawsbuck/summer/anim_front.png differ diff --git a/graphics/pokemon/sawsbuck/summer/front.png b/graphics/pokemon/sawsbuck/summer/front.png deleted file mode 100644 index 96a0c150c4..0000000000 Binary files a/graphics/pokemon/sawsbuck/summer/front.png and /dev/null differ diff --git a/graphics/pokemon/sawsbuck/winter/anim_front.png b/graphics/pokemon/sawsbuck/winter/anim_front.png new file mode 100644 index 0000000000..2682758814 Binary files /dev/null and b/graphics/pokemon/sawsbuck/winter/anim_front.png differ diff --git a/graphics/pokemon/sawsbuck/winter/front.png b/graphics/pokemon/sawsbuck/winter/front.png deleted file mode 100644 index d97aa2a90d..0000000000 Binary files a/graphics/pokemon/sawsbuck/winter/front.png and /dev/null differ diff --git a/graphics/pokemon/scovillain/footprint.png b/graphics/pokemon/scovillain/footprint.png new file mode 100644 index 0000000000..3a0f6e16af Binary files /dev/null and b/graphics/pokemon/scovillain/footprint.png differ diff --git a/graphics/pokemon/scream_tail/footprint.png b/graphics/pokemon/scream_tail/footprint.png new file mode 100644 index 0000000000..dbef95b02e Binary files /dev/null and b/graphics/pokemon/scream_tail/footprint.png differ diff --git a/graphics/pokemon/shroodle/footprint.png b/graphics/pokemon/shroodle/footprint.png new file mode 100644 index 0000000000..9cdf12b7d9 Binary files /dev/null and b/graphics/pokemon/shroodle/footprint.png differ diff --git a/graphics/pokemon/shroomish/footprint.png b/graphics/pokemon/shroomish/footprint.png index 1187f2d5e7..4cd1538b6d 100644 Binary files a/graphics/pokemon/shroomish/footprint.png and b/graphics/pokemon/shroomish/footprint.png differ diff --git a/graphics/pokemon/sinistcha/footprint.png b/graphics/pokemon/sinistcha/footprint.png new file mode 100644 index 0000000000..f6fbd6c15c Binary files /dev/null and b/graphics/pokemon/sinistcha/footprint.png differ diff --git a/graphics/pokemon/skeledirge/footprint.png b/graphics/pokemon/skeledirge/footprint.png new file mode 100644 index 0000000000..4f35da0fe0 Binary files /dev/null and b/graphics/pokemon/skeledirge/footprint.png differ diff --git a/graphics/pokemon/slither_wing/footprint.png b/graphics/pokemon/slither_wing/footprint.png new file mode 100644 index 0000000000..874f7e0ce9 Binary files /dev/null and b/graphics/pokemon/slither_wing/footprint.png differ diff --git a/graphics/pokemon/smoliv/footprint.png b/graphics/pokemon/smoliv/footprint.png new file mode 100644 index 0000000000..05c8160689 Binary files /dev/null and b/graphics/pokemon/smoliv/footprint.png differ diff --git a/graphics/pokemon/sneasler/footprint.png b/graphics/pokemon/sneasler/footprint.png new file mode 100644 index 0000000000..de724e5ffd Binary files /dev/null and b/graphics/pokemon/sneasler/footprint.png differ diff --git a/graphics/pokemon/spidops/footprint.png b/graphics/pokemon/spidops/footprint.png new file mode 100644 index 0000000000..a767aece51 Binary files /dev/null and b/graphics/pokemon/spidops/footprint.png differ diff --git a/graphics/pokemon/sprigatito/footprint.png b/graphics/pokemon/sprigatito/footprint.png new file mode 100644 index 0000000000..abc95f45cc Binary files /dev/null and b/graphics/pokemon/sprigatito/footprint.png differ diff --git a/graphics/pokemon/squawkabilly/footprint.png b/graphics/pokemon/squawkabilly/footprint.png new file mode 100644 index 0000000000..55c31ea4cd Binary files /dev/null and b/graphics/pokemon/squawkabilly/footprint.png differ diff --git a/graphics/pokemon/tadbulb/footprint.png b/graphics/pokemon/tadbulb/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/tadbulb/footprint.png differ diff --git a/graphics/pokemon/tandemaus/footprint.png b/graphics/pokemon/tandemaus/footprint.png new file mode 100644 index 0000000000..172901f83d Binary files /dev/null and b/graphics/pokemon/tandemaus/footprint.png differ diff --git a/graphics/pokemon/tarountula/footprint.png b/graphics/pokemon/tarountula/footprint.png new file mode 100644 index 0000000000..f6fbd6c15c Binary files /dev/null and b/graphics/pokemon/tarountula/footprint.png differ diff --git a/graphics/pokemon/tatsugiri/footprint.png b/graphics/pokemon/tatsugiri/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/tatsugiri/footprint.png differ diff --git a/graphics/pokemon/terapagos/footprint.png b/graphics/pokemon/terapagos/footprint.png new file mode 100644 index 0000000000..570798fc8f Binary files /dev/null and b/graphics/pokemon/terapagos/footprint.png differ diff --git a/graphics/pokemon/terapagos/stellar/footprint.png b/graphics/pokemon/terapagos/stellar/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/terapagos/stellar/footprint.png differ diff --git a/graphics/pokemon/terapagos/terastal/footprint.png b/graphics/pokemon/terapagos/terastal/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/terapagos/terastal/footprint.png differ diff --git a/graphics/pokemon/ting_lu/footprint.png b/graphics/pokemon/ting_lu/footprint.png new file mode 100644 index 0000000000..4990ad586f Binary files /dev/null and b/graphics/pokemon/ting_lu/footprint.png differ diff --git a/graphics/pokemon/tinkatink/footprint.png b/graphics/pokemon/tinkatink/footprint.png new file mode 100644 index 0000000000..9b369e78dc Binary files /dev/null and b/graphics/pokemon/tinkatink/footprint.png differ diff --git a/graphics/pokemon/tinkaton/footprint.png b/graphics/pokemon/tinkaton/footprint.png new file mode 100644 index 0000000000..08b25e2c6b Binary files /dev/null and b/graphics/pokemon/tinkaton/footprint.png differ diff --git a/graphics/pokemon/tinkatuff/footprint.png b/graphics/pokemon/tinkatuff/footprint.png new file mode 100644 index 0000000000..48f91a2703 Binary files /dev/null and b/graphics/pokemon/tinkatuff/footprint.png differ diff --git a/graphics/pokemon/toedscool/footprint.png b/graphics/pokemon/toedscool/footprint.png new file mode 100644 index 0000000000..62c7136a64 Binary files /dev/null and b/graphics/pokemon/toedscool/footprint.png differ diff --git a/graphics/pokemon/toedscruel/footprint.png b/graphics/pokemon/toedscruel/footprint.png new file mode 100644 index 0000000000..49599c8555 Binary files /dev/null and b/graphics/pokemon/toedscruel/footprint.png differ diff --git a/graphics/pokemon/ursaluna/footprint.png b/graphics/pokemon/ursaluna/footprint.png new file mode 100644 index 0000000000..2613a0290e Binary files /dev/null and b/graphics/pokemon/ursaluna/footprint.png differ diff --git a/graphics/pokemon/varoom/footprint.png b/graphics/pokemon/varoom/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/varoom/footprint.png differ diff --git a/graphics/pokemon/veluza/footprint.png b/graphics/pokemon/veluza/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/veluza/footprint.png differ diff --git a/graphics/pokemon/walking_wake/footprint.png b/graphics/pokemon/walking_wake/footprint.png new file mode 100644 index 0000000000..b359e266ea Binary files /dev/null and b/graphics/pokemon/walking_wake/footprint.png differ diff --git a/graphics/pokemon/wattrel/footprint.png b/graphics/pokemon/wattrel/footprint.png new file mode 100644 index 0000000000..71c5d0e921 Binary files /dev/null and b/graphics/pokemon/wattrel/footprint.png differ diff --git a/graphics/pokemon/wiglett/footprint.png b/graphics/pokemon/wiglett/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/wiglett/footprint.png differ diff --git a/graphics/pokemon/wo_chien/footprint.png b/graphics/pokemon/wo_chien/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/wo_chien/footprint.png differ diff --git a/graphics/pokemon/wugtrio/footprint.png b/graphics/pokemon/wugtrio/footprint.png new file mode 100644 index 0000000000..aa3e48b0e8 Binary files /dev/null and b/graphics/pokemon/wugtrio/footprint.png differ diff --git a/graphics/pokemon/wyrdeer/footprint.png b/graphics/pokemon/wyrdeer/footprint.png new file mode 100644 index 0000000000..2188abb4fc Binary files /dev/null and b/graphics/pokemon/wyrdeer/footprint.png differ diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 39ff811af9..93b9567f85 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -141,6 +141,7 @@ extern const u8 BattleScript_CurseTurnDmg[]; extern const u8 BattleScript_TargetPRLZHeal[]; extern const u8 BattleScript_TargetWokeUp[]; extern const u8 BattleScript_TargetBurnHeal[]; +extern const u8 BattleScript_TargetPoisonHealed[]; extern const u8 BattleScript_MoveEffectSleep[]; extern const u8 BattleScript_YawnMakesAsleep[]; extern const u8 BattleScript_MoveEffectPoison[]; @@ -503,7 +504,6 @@ extern const u8 BattleScript_TheRainbowDisappeared[]; extern const u8 BattleScript_HurtByTheSeaOfFire[]; extern const u8 BattleScript_TheSeaOfFireDisappeared[]; extern const u8 BattleScript_TheSwampDisappeared[]; -extern const u8 BattleScript_ItemRestoreHP_Party[]; extern const u8 BattleScript_EffectPsychicNoise[]; extern const u8 BattleScript_AromaVeilProtectsRet[]; extern const u8 BattleScript_LowerAtkSpAtk[]; diff --git a/include/battle_util.h b/include/battle_util.h index ff8bc7e5d2..df32314039 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -202,6 +202,7 @@ u8 GetBattleMoveCategory(u32 moveId); bool32 CanFling(u32 battler); bool32 IsTelekinesisBannedSpecies(u16 species); bool32 IsHealBlockPreventingMove(u32 battler, u32 move); +bool32 IsBelchPreventingMove(u32 battler, u32 move); bool32 HasEnoughHpToEatBerry(u32 battler, u32 hpFraction, u32 itemId); bool32 IsPartnerMonFromSameTrainer(u32 battler); u8 GetCategoryBasedOnStats(u32 battler); diff --git a/include/config/save.h b/include/config/save.h index bf89bae9fb..11836396af 100644 --- a/include/config/save.h +++ b/include/config/save.h @@ -5,7 +5,7 @@ #define FREE_EXTRA_SEEN_FLAGS_SAVEBLOCK1 FALSE // Free up unused Pokédex seen flags (52 bytes). #define FREE_TRAINER_HILL FALSE // Frees up Trainer Hill data (28 bytes). #define FREE_MYSTERY_EVENT_BUFFERS FALSE // Frees up ramScript (1104 bytes). -#define FREE_MATCH_CALL FALSE // Frees up match call and rematch data. (104 bytes). +#define FREE_MATCH_CALL FALSE // Frees up match call and rematch / VS Seeker data. (104 bytes). #define FREE_UNION_ROOM_CHAT FALSE // Frees up union room chat (212 bytes). #define FREE_ENIGMA_BERRY FALSE // Frees up E-Reader Enigma Berry data (52 bytes). #define FREE_LINK_BATTLE_RECORDS FALSE // Frees up link battle record data (88 bytes). diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 04ddb6d881..6061373d0e 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -191,7 +191,6 @@ enum { EFFECT_ROUND, EFFECT_BRINE, EFFECT_RETALIATE, - EFFECT_BULLDOZE, EFFECT_FOUL_PLAY, EFFECT_PSYSHOCK, EFFECT_ROOST, diff --git a/include/constants/expansion.h b/include/constants/expansion.h index e1e228fd9b..43afdbe212 100644 --- a/include/constants/expansion.h +++ b/include/constants/expansion.h @@ -1,10 +1,10 @@ #ifndef GUARD_CONSTANTS_EXPANSION_H #define GUARD_CONSTANTS_EXPANSION_H -// 1.8.3 +// 1.8.4 #define EXPANSION_VERSION_MAJOR 1 #define EXPANSION_VERSION_MINOR 8 -#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. diff --git a/include/constants/pokemon_icon.h b/include/constants/pokemon_icon.h new file mode 100644 index 0000000000..d57d5111a9 --- /dev/null +++ b/include/constants/pokemon_icon.h @@ -0,0 +1,6 @@ +#ifndef GUARD_CONSTANTS_POKEMON_ICON_H +#define GUARD_CONSTANTS_POKEMON_ICON_H + +#define POKE_ICON_BASE_PAL_TAG 56000 + +#endif // GUARD_CONSTANTS_POKEMON_ICON_H diff --git a/include/graphics.h b/include/graphics.h index e8054d08f6..a563cb064a 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -1681,6 +1681,9 @@ extern const u32 gItemIconPalette_DragonTeraShard[]; extern const u32 gItemIconPalette_SteelTeraShard[]; extern const u32 gItemIconPalette_FairyTeraShard[]; +extern const u32 gItemIcon_StellarTeraShard[]; +extern const u32 gItemIconPalette_StellarTeraShard[]; + extern const u32 gItemIcon_AdamantCrystal[]; extern const u32 gItemIconPalette_AdamantCrystal[]; extern const u32 gItemIcon_GriseousCore[]; diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 3489cdfcbf..09dd5b44d0 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -443,7 +443,7 @@ static void SetBattlerAiMovesData(struct AiLogicData *aiData, u32 battlerAtk, u3 // Simulate dmg for both ai controlled mons and for player controlled mons. for (battlerDef = 0; battlerDef < battlersCount; battlerDef++) { - if (battlerAtk == battlerDef) + if (battlerAtk == battlerDef || !IsBattlerAlive(battlerDef)) continue; SaveBattlerData(battlerDef); @@ -3061,21 +3061,6 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) else if (IsAbilityOfRating(aiData->abilities[battlerAtk], 0) || IsAbilityOfRating(aiData->abilities[battlerDef], 10)) ADJUST_SCORE(DECENT_EFFECT); // we want to transfer our bad ability or take their awesome ability break; - case EFFECT_EARTHQUAKE: - case EFFECT_MAGNITUDE: - if (!IsBattlerGrounded(battlerAtkPartner) - || (IsBattlerGrounded(battlerAtkPartner) - && AI_WhoStrikesFirst(battlerAtk, battlerAtkPartner, move) == AI_IS_SLOWER - && IsUngroundingEffect(gMovesInfo[aiData->partnerMove].effect))) - ADJUST_SCORE(DECENT_EFFECT); - else if (IS_BATTLER_OF_TYPE(battlerAtkPartner, TYPE_FIRE) - || IS_BATTLER_OF_TYPE(battlerAtkPartner, TYPE_ELECTRIC) - || IS_BATTLER_OF_TYPE(battlerAtkPartner, TYPE_POISON) - || IS_BATTLER_OF_TYPE(battlerAtkPartner, TYPE_ROCK)) - ADJUST_SCORE(-10); // partner will be hit by earthquake and is weak to it - else if (IsBattlerAlive(battlerAtkPartner)) - ADJUST_SCORE(-3); - break; } // lightning rod, flash fire against enemy handled in AI_CheckBadMove @@ -3115,6 +3100,18 @@ static s32 CompareMoveAccuracies(u32 battlerAtk, u32 battlerDef, u32 moveSlot1, return 0; } +static inline bool32 ShouldUseSpreadDamageMove(u32 battlerAtk, u32 move, u32 moveIndex, u32 hitsToFaintOpposingBattler) +{ + u32 partnerBattler = BATTLE_PARTNER(battlerAtk); + u32 noOfHitsToFaintPartner = GetNoOfHitsToKOBattler(battlerAtk, partnerBattler, moveIndex); + return (IsDoubleBattle() + && noOfHitsToFaintPartner != 0 // Immunity check + && IsBattlerAlive(partnerBattler) + && gMovesInfo[move].target == MOVE_TARGET_FOES_AND_ALLY + && !(noOfHitsToFaintPartner < 4 && hitsToFaintOpposingBattler == 1) + && noOfHitsToFaintPartner < 7); +} + static s32 AI_CompareDamagingMoves(u32 battlerAtk, u32 battlerDef, u32 currId) { u32 i; @@ -3132,7 +3129,13 @@ static s32 AI_CompareDamagingMoves(u32 battlerAtk, u32 battlerDef, u32 currId) if (moves[i] != MOVE_NONE && gMovesInfo[moves[i]].power) { noOfHits[i] = GetNoOfHitsToKOBattler(battlerAtk, battlerDef, i); - if (noOfHits[i] < leastHits && noOfHits[i] != 0) + if (ShouldUseSpreadDamageMove(battlerAtk,moves[i], i, noOfHits[i])) + { + noOfHits[i] = -1; + viableMoveScores[i] = 0; + isTwoTurnNotSemiInvulnerableMove[i] = FALSE; + } + else if (noOfHits[i] < leastHits && noOfHits[i] != 0) { leastHits = noOfHits[i]; } diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 6e1cf45d64..093db185d9 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -1326,12 +1326,11 @@ static u32 GetSwitchinHazardsDamage(u32 battler, struct BattlePokemon *battleMon // Gets damage / healing from weather static s32 GetSwitchinWeatherImpact(void) { - s32 weatherDamage = 0, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP, ability = AI_DATA->switchinCandidate.battleMon.ability; + s32 weatherImpact = 0, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP, ability = AI_DATA->switchinCandidate.battleMon.ability; u32 holdEffect = gItemsInfo[AI_DATA->switchinCandidate.battleMon.item].holdEffect; if (WEATHER_HAS_EFFECT) { - s32 weatherImpact = 0; // Damage if (holdEffect != HOLD_EFFECT_SAFETY_GOGGLES && ability != ABILITY_MAGIC_GUARD && ability != ABILITY_OVERCOAT) { @@ -1362,34 +1361,30 @@ static s32 GetSwitchinWeatherImpact(void) weatherImpact = 1; } - weatherDamage += weatherImpact; - // Healing if (gBattleWeather & B_WEATHER_RAIN && holdEffect != HOLD_EFFECT_UTILITY_UMBRELLA) { if (ability == ABILITY_DRY_SKIN) { - weatherImpact = maxHP / 8; + weatherImpact = -(maxHP / 8); if (weatherImpact == 0) - weatherImpact = 1; + weatherImpact = -1; } else if (ability == ABILITY_RAIN_DISH) { - weatherImpact = maxHP / 16; + weatherImpact = -(maxHP / 16); if (weatherImpact == 0) - weatherImpact = 1; + weatherImpact = -1; } } if (((gBattleWeather & B_WEATHER_HAIL) || (gBattleWeather & B_WEATHER_SNOW)) && ability == ABILITY_ICE_BODY) { - weatherImpact = maxHP / 16; + weatherImpact = -(maxHP / 16); if (weatherImpact == 0) - weatherImpact = 1; + weatherImpact = -1; } - - weatherDamage -= weatherImpact; } - return weatherDamage; + return weatherImpact; } // Gets one turn of recurring healing @@ -1499,6 +1494,7 @@ static u32 GetSwitchinStatusDamage(u32 battler) { if ((status & STATUS1_TOXIC_COUNTER) != STATUS1_TOXIC_TURN(15)) // not 16 turns AI_DATA->switchinCandidate.battleMon.status1 += STATUS1_TOXIC_TURN(1); + statusDamage = maxHP / 16; statusDamage *= AI_DATA->switchinCandidate.battleMon.status1 & STATUS1_TOXIC_COUNTER >> 8; if (statusDamage == 0) statusDamage = 1; @@ -1566,7 +1562,7 @@ static u32 GetSwitchinHitsToKO(s32 damageTaken, u32 battler) // If mon is still alive, apply weather impact first, as it might KO the mon before it can heal with its item (order is weather -> item -> status) if (currentHP != 0) - currentHP = currentHP + weatherImpact; + currentHP = currentHP - weatherImpact; // Check if we're at a single use healing item threshold if (AI_DATA->switchinCandidate.battleMon.ability != ABILITY_KLUTZ && usedSingleUseHealingItem == FALSE diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index ca3014aa6d..345ef5e9ad 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -379,14 +379,17 @@ bool32 IsDamageMoveUnusable(u32 move, u32 battlerAtk, u32 battlerDef) s32 moveType; struct AiLogicData *aiData = AI_DATA; u32 battlerDefAbility; + GET_MOVE_TYPE(move, moveType); if (DoesBattlerIgnoreAbilityChecks(aiData->abilities[battlerAtk], move)) battlerDefAbility = ABILITY_NONE; else battlerDefAbility = aiData->abilities[battlerDef]; - SetTypeBeforeUsingMove(move, battlerAtk); - GET_MOVE_TYPE(move, moveType); + // Battler doesn't see partners Ability for some reason. + // This is a small hack to avoid the issue but should be investigated + if (battlerDef == BATTLE_PARTNER(battlerAtk)) + battlerDefAbility = GetBattlerAbility(battlerDef); switch (battlerDefAbility) { @@ -431,7 +434,7 @@ bool32 IsDamageMoveUnusable(u32 move, u32 battlerAtk, u32 battlerDef) return TRUE; break; case EFFECT_BELCH: - if (ItemId_GetPocket(GetUsedHeldItem(battlerAtk)) != POCKET_BERRIES) + if (IsBelchPreventingMove(battlerAtk, move)) return TRUE; break; case EFFECT_LAST_RESORT: @@ -491,14 +494,13 @@ s32 AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectivenes gBattleStruct->dynamicMoveType = 0; - SetTypeBeforeUsingMove(move, battlerAtk); GET_MOVE_TYPE(move, moveType); + effectivenessMultiplier = CalcTypeEffectivenessMultiplier(move, moveType, battlerAtk, battlerDef, aiData->abilities[battlerDef], FALSE); if (gMovesInfo[move].power) isDamageMoveUnusable = IsDamageMoveUnusable(move, battlerAtk, battlerDef); - effectivenessMultiplier = CalcTypeEffectivenessMultiplier(move, moveType, battlerAtk, battlerDef, aiData->abilities[battlerDef], FALSE); if (gMovesInfo[move].power && !isDamageMoveUnusable) { s32 critChanceIndex, normalDmg, fixedBasePower, n; diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index 9b25909ddd..fed928e747 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -3950,7 +3950,7 @@ const struct SpriteTemplate gAppleAcidDripTemplate = .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_BUBBLE, .oam = &gOamData_AffineDouble_ObjNormal_16x16, - .anims = gAnims_AcidPoisonDroplet, + .anims = &gAnims_PoisonProjectile[1], .images = NULL, .affineAnims = gAffineAnims_Droplet, .callback = SpriteCB_AcidDripSingleTarget diff --git a/src/battle_anim_poison.c b/src/battle_anim_poison.c index 0ed4e43090..dfaa32cc5e 100644 --- a/src/battle_anim_poison.c +++ b/src/battle_anim_poison.c @@ -62,15 +62,7 @@ static const union AnimCmd sAnim_SludgeBombHit[] = const union AnimCmd *const gAnims_PoisonProjectile[] = { sAnim_PoisonProjectile, -}; - -const union AnimCmd *const gAnims_AcidPoisonDroplet[] = -{ sAnim_AcidPoisonDroplet, -}; - -static const union AnimCmd *const sAnims_SludgeBombHit[] = -{ sAnim_SludgeBombHit, }; @@ -125,7 +117,7 @@ const struct SpriteTemplate gSludgeBombHitParticleSpriteTemplate = .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_BUBBLE, .oam = &gOamData_AffineNormal_ObjNormal_16x16, - .anims = sAnims_SludgeBombHit, + .anims = &gAnims_PoisonProjectile[2], .images = NULL, .affineAnims = sAffineAnims_SludgeBombHit, .callback = AnimSludgeBombHitParticle, @@ -148,7 +140,7 @@ const struct SpriteTemplate gAcidPoisonDropletSpriteTemplate = .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_BUBBLE, .oam = &gOamData_AffineDouble_ObjNormal_16x16, - .anims = gAnims_AcidPoisonDroplet, + .anims = &gAnims_PoisonProjectile[1], .images = NULL, .affineAnims = gAffineAnims_Droplet, .callback = AnimAcidPoisonDroplet, @@ -193,7 +185,7 @@ const struct SpriteTemplate gGreenPoisonDrip = .tileTag = ANIM_TAG_GREEN_POISON_BUBBLE, .paletteTag = ANIM_TAG_GREEN_POISON_BUBBLE, .oam = &gOamData_AffineDouble_ObjNormal_16x16, - .anims = gAnims_AcidPoisonDroplet, + .anims = &gAnims_PoisonProjectile[1], .images = NULL, .affineAnims = gAffineAnims_Droplet, .callback = AnimAcidPoisonDroplet, diff --git a/src/battle_main.c b/src/battle_main.c index 6e67d831c8..8168d10207 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -115,7 +115,6 @@ static void HandleEndTurn_MonFled(void); static void HandleEndTurn_FinishBattle(void); static void SpriteCB_UnusedBattleInit(struct Sprite *sprite); static void SpriteCB_UnusedBattleInit_Main(struct Sprite *sprite); -static void TrySpecialEvolution(void); static u32 Crc32B (const u8 *data, u32 size); static u32 GeneratePartyHash(const struct Trainer *trainer, u32 i); @@ -5113,29 +5112,25 @@ s32 GetWhichBattlerFasterArgs(u32 battler1, u32 battler2, bool32 ignoreChosenMov if (priority1 == priority2) { - // QUICK CLAW / CUSTAP - always first - // LAGGING TAIL - always last - // STALL - always last + // Quick Claw / Quick Draw / Custap Berry - always first + // Stall / Mycelium Might - last but before Lagging Tail + // Lagging Tail - always last + bool32 battler1HasQuickEffect = gProtectStructs[battler1].quickDraw || gProtectStructs[battler1].usedCustapBerry; + bool32 battler2HasQuickEffect = gProtectStructs[battler2].quickDraw || gProtectStructs[battler2].usedCustapBerry; + bool32 battler1HasStallingAbility = ability1 == ABILITY_STALL || (ability1 == ABILITY_MYCELIUM_MIGHT && IS_MOVE_STATUS(gChosenMoveByBattler[battler1])); + bool32 battler2HasStallingAbility = ability2 == ABILITY_STALL || (ability2 == ABILITY_MYCELIUM_MIGHT && IS_MOVE_STATUS(gChosenMoveByBattler[battler2])); - if (gProtectStructs[battler1].quickDraw && !gProtectStructs[battler2].quickDraw) + if (battler1HasQuickEffect && !battler2HasQuickEffect) strikesFirst = 1; - else if (!gProtectStructs[battler1].quickDraw && gProtectStructs[battler2].quickDraw) - strikesFirst = -1; - else if (gProtectStructs[battler1].usedCustapBerry && !gProtectStructs[battler2].usedCustapBerry) - strikesFirst = 1; - else if (gProtectStructs[battler2].usedCustapBerry && !gProtectStructs[battler1].usedCustapBerry) + else if (battler2HasQuickEffect && !battler1HasQuickEffect) strikesFirst = -1; else if (holdEffectBattler1 == HOLD_EFFECT_LAGGING_TAIL && holdEffectBattler2 != HOLD_EFFECT_LAGGING_TAIL) strikesFirst = -1; else if (holdEffectBattler2 == HOLD_EFFECT_LAGGING_TAIL && holdEffectBattler1 != HOLD_EFFECT_LAGGING_TAIL) strikesFirst = 1; - else if (ability1 == ABILITY_STALL && ability2 != ABILITY_STALL) + else if (battler1HasStallingAbility && !battler2HasStallingAbility) strikesFirst = -1; - else if (ability2 == ABILITY_STALL && ability1 != ABILITY_STALL) - strikesFirst = 1; - else if (ability1 == ABILITY_MYCELIUM_MIGHT && ability2 != ABILITY_MYCELIUM_MIGHT && IS_MOVE_STATUS(gChosenMoveByBattler[battler1])) - strikesFirst = -1; - else if (ability2 == ABILITY_MYCELIUM_MIGHT && ability1 != ABILITY_MYCELIUM_MIGHT && IS_MOVE_STATUS(gChosenMoveByBattler[battler2])) + else if (battler2HasStallingAbility && !battler1HasStallingAbility) strikesFirst = 1; else { @@ -5861,7 +5856,7 @@ static void FreeResetData_ReturnToOvOrDoEvolutions(void) || gBattleOutcome == B_OUTCOME_WON || gBattleOutcome == B_OUTCOME_CAUGHT)) { - gBattleMainFunc = TrySpecialEvolution; + gBattleMainFunc = TryEvolvePokemon; } else { @@ -5879,68 +5874,48 @@ static void FreeResetData_ReturnToOvOrDoEvolutions(void) } } -static void TrySpecialEvolution(void) // Attempts to perform non-level related battle evolutions (not the script command). +static void TryEvolvePokemon(void) { s32 i; for (i = 0; i < PARTY_SIZE; i++) { - u16 species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_BATTLE_SPECIAL, i, NULL); - if (species != SPECIES_NONE && !(sTriedEvolving & gBitTable[i])) + if (!(sTriedEvolving & gBitTable[i])) { + u16 species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_BATTLE_SPECIAL, i, NULL); + bool32 evoModeNormal = TRUE; sTriedEvolving |= gBitTable[i]; - FreeAllWindowBuffers(); - gBattleMainFunc = WaitForEvoSceneToFinish; - EvolutionScene(&gPlayerParty[i], species, TRUE, i); - return; - } - } - sTriedEvolving = 0; - gBattleMainFunc = TryEvolvePokemon; -} -static void TryEvolvePokemon(void) -{ - s32 i; + if (species == SPECIES_NONE && (gLeveledUpInBattle & gBitTable[i])) + { + gLeveledUpInBattle &= ~(gBitTable[i]); + species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_NORMAL, gLeveledUpInBattle, NULL); + } - while (gLeveledUpInBattle != 0) - { - for (i = 0; i < PARTY_SIZE; i++) - { - if (gLeveledUpInBattle & gBitTable[i]) + if (species == SPECIES_NONE) { - u16 species; - u8 levelUpBits = gLeveledUpInBattle; - bool32 evoModeNormal = TRUE; + species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_CANT_STOP, ITEM_NONE, NULL); + evoModeNormal = FALSE; + } - levelUpBits &= ~(gBitTable[i]); - gLeveledUpInBattle = levelUpBits; - - species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_NORMAL, ITEM_NONE, NULL); - if (species == SPECIES_NONE) - { - species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_CANT_STOP, ITEM_NONE, NULL); - evoModeNormal = FALSE; - } - - if (species != SPECIES_NONE) - { - FreeAllWindowBuffers(); - gBattleMainFunc = WaitForEvoSceneToFinish; - EvolutionScene(&gPlayerParty[i], species, evoModeNormal, i); - return; - } + if (species != SPECIES_NONE) + { + FreeAllWindowBuffers(); + gBattleMainFunc = WaitForEvoSceneToFinish; + EvolutionScene(&gPlayerParty[i], species, evoModeNormal, i); + return; } } } - + sTriedEvolving = 0; + gLeveledUpInBattle = 0; gBattleMainFunc = ReturnFromBattleToOverworld; } static void WaitForEvoSceneToFinish(void) { if (gMain.callback2 == BattleMainCB2) - gBattleMainFunc = TrySpecialEvolution; + gBattleMainFunc = TryEvolvePokemon; } static void ReturnFromBattleToOverworld(void) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 1f2f65428b..3d975176e1 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -332,7 +332,7 @@ static bool32 ChangeOrderTargetAfterAttacker(void); void ApplyExperienceMultipliers(s32 *expAmount, u8 expGetterMonId, u8 faintedBattler); static void RemoveAllWeather(void); static void RemoveAllTerrains(void); -static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 isIntimidate); +static bool8 CanAbilityPreventStatLoss(u16 abilityDef); static bool8 CanBurnHitThaw(u16 move); static u32 GetNextTarget(u32 moveTarget, bool32 excludeCurrent); static void TryUpdateEvolutionTracker(u32 evolutionMethod, u32 upAmount, u16 usedMove); @@ -2025,6 +2025,9 @@ static void Cmd_adjustdamage(void) { gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON; gLastUsedItem = gBattleMons[gBattlerTarget].item; + gSpecialStatuses[gBattlerTarget].focusBanded = FALSE; + gSpecialStatuses[gBattlerTarget].focusSashed = FALSE; + } else if (gSpecialStatuses[gBattlerTarget].sturdied) { @@ -2115,6 +2118,7 @@ static void Cmd_multihitresultmessage(void) if (gSpecialStatuses[gBattlerTarget].berryReduced && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { + gBattleStruct->ateBerry[gBattlerTarget & BIT_SIDE] |= gBitTable[gBattlerPartyIndexes[gBattlerTarget]]; gSpecialStatuses[gBattlerTarget].berryReduced = FALSE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_PrintBerryReduceString; @@ -2575,6 +2579,7 @@ static void Cmd_resultmessage(void) if (gSpecialStatuses[gBattlerTarget].berryReduced && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { + gBattleStruct->ateBerry[gBattlerTarget & BIT_SIDE] |= gBitTable[gBattlerPartyIndexes[gBattlerTarget]]; gSpecialStatuses[gBattlerTarget].berryReduced = FALSE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_PrintBerryReduceString; @@ -3144,6 +3149,10 @@ void SetMoveEffect(bool32 primary, bool32 certain) { gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; gBattlescriptCurrInstr++; + } + else + { + gBattlescriptCurrInstr++; } break; case MOVE_EFFECT_UPROAR: @@ -5344,7 +5353,6 @@ static void Cmd_moveend(void) u16 *choicedMoveAtk = NULL; u32 endMode, endState; u32 originallyUsedMove; - u8 currBattler, liveBattlerCount; if (gChosenMove == MOVE_UNAVAILABLE) originallyUsedMove = MOVE_NONE; @@ -5655,28 +5663,19 @@ static void Cmd_moveend(void) gBattlescriptCurrInstr = BattleScript_TargetWokeUp; break; case STATUS1_BURN: - // Checks to see if Sparkling Aria should cure a Shield Dust pokemon - if (gBattleMons[gBattlerTarget].ability == ABILITY_SHIELD_DUST || gBattleMons[gBattlerTarget].item == ITEM_COVERT_CLOAK) - { - liveBattlerCount = 0; - for (currBattler = 0; currBattler < gBattlersCount; currBattler++) - { - if (gBattleMons[currBattler].hp != 0) - { - liveBattlerCount++; - } - } - if (liveBattlerCount > 2) - { - gBattlescriptCurrInstr = BattleScript_TargetBurnHeal; - } - break; - } - else - { - gBattlescriptCurrInstr = BattleScript_TargetBurnHeal; - break; - } + gBattlescriptCurrInstr = BattleScript_TargetBurnHeal; + break; + case STATUS1_FREEZE: + gBattlescriptCurrInstr = BattleScript_FrostbiteHealedViaFireMove; + break; + case STATUS1_FROSTBITE: + gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove; + break; + case STATUS1_POISON: + case STATUS1_TOXIC_POISON: + case STATUS1_PSN_ANY: + gBattlescriptCurrInstr = BattleScript_TargetPoisonHealed; + break; } } break; // MOVE_EFFECT_REMOVE_STATUS @@ -8355,7 +8354,7 @@ static bool32 HasAttackerFaintedTarget(void) && gBattleStruct->moveTarget[gBattlerAttacker] == gBattlerTarget && gBattlerTarget != gBattlerAttacker && gCurrentTurnActionNumber == GetBattlerTurnOrderNum(gBattlerAttacker) - && (gChosenMove == gChosenMoveByBattler[gBattlerAttacker] || gChosenMove == gBattleMons[gBattlerAttacker].moves[gChosenMovePos])) + && (gChosenMove == gChosenMoveByBattler[gBattlerAttacker] || gChosenMove == gBattleMons[gBattlerAttacker].moves[gChosenMovePos] || gChosenMove == GetMaxMove(gBattlerAttacker, gChosenMoveByBattler[gBattlerAttacker]))) return TRUE; else return FALSE; @@ -9466,6 +9465,7 @@ static void Cmd_various(void) case VARIOUS_TRY_ACTIVATE_BEAST_BOOST: { VARIOUS_ARGS(); + i = GetHighestStatId(battler); if (GetBattlerAbility(battler) == ABILITY_BEAST_BOOST && HasAttackerFaintedTarget() @@ -11569,8 +11569,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr gBattlescriptCurrInstr = BattleScript_ButItFailed; return STAT_CHANGE_DIDNT_WORK; } - else if ((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET - || CanAbilityPreventStatLoss(battlerAbility, GetBattlerAbility(gBattlerAttacker) == ABILITY_INTIMIDATE)) + else if ((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET || CanAbilityPreventStatLoss(battlerAbility)) && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) { if (flags == STAT_CHANGE_ALLOW_PTR) @@ -12474,22 +12473,23 @@ static void Cmd_setmist(void) static void Cmd_setfocusenergy(void) { - CMD_ARGS(); + CMD_ARGS(u8 battler); + u8 battler = GetBattlerForBattleScript(cmd->battler); - if ((gMovesInfo[gCurrentMove].effect == EFFECT_DRAGON_CHEER && (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE) || (gAbsentBattlerFlags & gBitTable[gBattlerTarget]))) - || gBattleMons[gBattlerTarget].status2 & STATUS2_FOCUS_ENERGY_ANY) + if ((gMovesInfo[gCurrentMove].effect == EFFECT_DRAGON_CHEER && (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE) || (gAbsentBattlerFlags & gBitTable[battler]))) + || gBattleMons[battler].status2 & STATUS2_FOCUS_ENERGY_ANY) { gMoveResultFlags |= MOVE_RESULT_FAILED; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FOCUS_ENERGY_FAILED; } - else if (gMovesInfo[gCurrentMove].effect == EFFECT_DRAGON_CHEER && !IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_DRAGON)) + else if (gMovesInfo[gCurrentMove].effect == EFFECT_DRAGON_CHEER && !IS_BATTLER_OF_TYPE(battler, TYPE_DRAGON)) { - gBattleMons[gBattlerTarget].status2 |= STATUS2_DRAGON_CHEER; + gBattleMons[battler].status2 |= STATUS2_DRAGON_CHEER; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_GETTING_PUMPED; } else { - gBattleMons[gBattlerTarget].status2 |= STATUS2_FOCUS_ENERGY; + gBattleMons[battler].status2 |= STATUS2_FOCUS_ENERGY; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_GETTING_PUMPED; } gBattlescriptCurrInstr = cmd->nextInstr; @@ -15795,7 +15795,7 @@ static bool8 IsFinalStrikeEffect(u16 move) return FALSE; } -static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 byIntimidate) +static bool8 CanAbilityPreventStatLoss(u16 abilityDef) { switch (abilityDef) { @@ -15803,13 +15803,6 @@ static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 byIntimidate) case ABILITY_FULL_METAL_BODY: case ABILITY_WHITE_SMOKE: return TRUE; - case ABILITY_INNER_FOCUS: - case ABILITY_SCRAPPY: - case ABILITY_OWN_TEMPO: - case ABILITY_OBLIVIOUS: - if (byIntimidate && (B_UPDATED_INTIMIDATE >= GEN_8)) - return TRUE; - break; } return FALSE; } @@ -15999,7 +15992,7 @@ void ApplyExperienceMultipliers(s32 *expAmount, u8 expGetterMonId, u8 faintedBat void BS_ItemRestoreHP(void) { - NATIVE_ARGS(const u8 *alreadyMaxHpInstr); + NATIVE_ARGS(const u8 *alreadyMaxHpInstr, const u8 *restoreBattlerInstr); u16 healAmount; u32 battler = MAX_BATTLERS_COUNT; u32 healParam = ItemId_GetEffect(gLastUsedItem)[6]; @@ -16052,7 +16045,7 @@ void BS_ItemRestoreHP(void) if (battler != MAX_BATTLERS_COUNT && hp != 0) { gBattleMoveDamage = -healAmount; - gBattlescriptCurrInstr = cmd->nextInstr; + gBattlescriptCurrInstr = cmd->restoreBattlerInstr; } else { @@ -16065,7 +16058,7 @@ void BS_ItemRestoreHP(void) gAbsentBattlerFlags &= ~gBitTable[battler]; gBattleCommunication[MULTIUSE_STATE] = TRUE; } - gBattlescriptCurrInstr = BattleScript_ItemRestoreHP_Party; + gBattlescriptCurrInstr = cmd->nextInstr; } } } @@ -16435,9 +16428,7 @@ void BS_TrySetOctolock(void) void BS_SetGlaiveRush(void) { NATIVE_ARGS(); - gStatuses4[gBattlerAttacker] |= STATUS4_GLAIVE_RUSH; - gBattlescriptCurrInstr = cmd->nextInstr; } diff --git a/src/battle_util.c b/src/battle_util.c index ef2a63600c..c76a17ed2e 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1272,7 +1272,7 @@ bool32 IsHealBlockPreventingMove(u32 battler, u32 move) return gMovesInfo[move].healingMove; } -static bool32 IsBelchPreventingMove(u32 battler, u32 move) +bool32 IsBelchPreventingMove(u32 battler, u32 move) { if (gMovesInfo[move].effect != EFFECT_BELCH) return FALSE; @@ -8945,7 +8945,6 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 if (gBattleStruct->lastMoveFailed & gBitTable[battlerAtk]) modifier = uq4_12_multiply(modifier, UQ_4_12(2.0)); break; - case EFFECT_BULLDOZE: case EFFECT_MAGNITUDE: case EFFECT_EARTHQUAKE: if (gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN && !(gStatuses3[battlerDef] & STATUS3_SEMI_INVULNERABLE)) diff --git a/src/data/battle_move_effects.h b/src/data/battle_move_effects.h index 1f474206cc..7354a8cea5 100644 --- a/src/data/battle_move_effects.h +++ b/src/data/battle_move_effects.h @@ -1228,12 +1228,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleTvScore = 0, // TODO: Assign points }, - [EFFECT_BULLDOZE] = - { - .battleScript = BattleScript_EffectHit, - .battleTvScore = 0, // TODO: Assign points - }, - [EFFECT_FOUL_PLAY] = { .battleScript = BattleScript_EffectHit, diff --git a/src/data/graphics/items.h b/src/data/graphics/items.h index 6506ba402e..45e3ec0e2c 100644 --- a/src/data/graphics/items.h +++ b/src/data/graphics/items.h @@ -2025,6 +2025,9 @@ const u32 gItemIconPalette_DragonTeraShard[] = INCBIN_U32("graphics/items/icon_p const u32 gItemIconPalette_SteelTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/steel_tera_shard.gbapal.lz"); const u32 gItemIconPalette_FairyTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/fairy_tera_shard.gbapal.lz"); +const u32 gItemIcon_StellarTeraShard[] = INCBIN_U32("graphics/items/icons/stellar_tera_shard.4bpp.lz"); +const u32 gItemIconPalette_StellarTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/stellar_tera_shard.gbapal.lz"); + // Mochi const u32 gItemIcon_Mochi[] = INCBIN_U32("graphics/items/icons/mochi.4bpp.lz"); diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index ef0755e9be..88164f9337 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -947,7 +947,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Annihilape[] = INCBIN_U32("graphics/pokemon/annihilape/shiny.gbapal.lz"); const u8 gMonIcon_Annihilape[] = INCBIN_U8("graphics/pokemon/annihilape/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Annihilape[] = INCBIN_U8("graphics/pokemon/annihilape/footprint.1bpp"); + const u8 gMonFootprint_Annihilape[] = INCBIN_U8("graphics/pokemon/annihilape/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_MANKEY @@ -2044,7 +2044,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/shiny.gbapal.lz"); const u8 gMonIcon_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/icon.4bpp"); #if P_FOOTPRINTS - //const u8 gMonFootprint_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/footprint.1bpp"); + const u8 gMonFootprint_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_GEN_8_CROSS_EVOS #endif //P_FAMILY_SCYTHER @@ -3087,7 +3087,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Clodsire[] = INCBIN_U32("graphics/pokemon/clodsire/shiny.gbapal.lz"); const u8 gMonIcon_Clodsire[] = INCBIN_U8("graphics/pokemon/clodsire/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Clodsire[] = INCBIN_U8("graphics/pokemon/clodsire/footprint.1bpp"); + const u8 gMonFootprint_Clodsire[] = INCBIN_U8("graphics/pokemon/clodsire/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_PALDEAN_FORMS #endif //P_FAMILY_WOOPER @@ -3307,7 +3307,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Farigiraf[] = INCBIN_U32("graphics/pokemon/farigiraf/shiny.gbapal.lz"); const u8 gMonIcon_Farigiraf[] = INCBIN_U8("graphics/pokemon/farigiraf/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Farigiraf[] = INCBIN_U8("graphics/pokemon/farigiraf/footprint.1bpp"); + const u8 gMonFootprint_Farigiraf[] = INCBIN_U8("graphics/pokemon/farigiraf/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_GIRAFARIG @@ -3347,7 +3347,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Dudunsparce[] = INCBIN_U32("graphics/pokemon/dudunsparce/shiny.gbapal.lz"); const u8 gMonIcon_Dudunsparce[] = INCBIN_U8("graphics/pokemon/dudunsparce/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Dudunsparce[] = INCBIN_U8("graphics/pokemon/dudunsparce/footprint.1bpp"); + const u8 gMonFootprint_Dudunsparce[] = INCBIN_U8("graphics/pokemon/dudunsparce/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_DudunsparceTwoSegment[] = INCBIN_U32("graphics/pokemon/dudunsparce/front.4bpp.lz"); @@ -3426,7 +3426,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/shiny.gbapal.lz"); const u8 gMonIcon_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/icon.4bpp"); #if P_FOOTPRINTS - //const u8 gMonFootprint_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/footprint.1bpp"); + const u8 gMonFootprint_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_QWILFISH @@ -3507,7 +3507,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/shiny.gbapal.lz"); const u8 gMonIcon_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/icon.4bpp"); #if P_FOOTPRINTS - //const u8 gMonFootprint_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/footprint.1bpp"); + const u8 gMonFootprint_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_SNEASEL @@ -3541,7 +3541,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/shiny.gbapal.lz"); const u8 gMonIcon_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/icon.4bpp"); #if P_FOOTPRINTS - //const u8 gMonFootprint_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/footprint.1bpp"); + const u8 gMonFootprint_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_UrsalunaBloodmoon[] = INCBIN_U32("graphics/pokemon/ursaluna/bloodmoon/front.4bpp.lz"); @@ -3774,7 +3774,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/shiny.gbapal.lz"); const u8 gMonIcon_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/icon.4bpp"); #if P_FOOTPRINTS - //const u8 gMonFootprint_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/footprint.1bpp"); + const u8 gMonFootprint_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_GEN_8_CROSS_EVOS #endif //P_FAMILY_STANTLER @@ -6532,7 +6532,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/shiny.gbapal.lz"); const u8 gMonIcon_GiratinaAltered[] = INCBIN_U8("graphics/pokemon/giratina/icon.4bpp"); #if P_FOOTPRINTS - const u8 gMonFootprint_Giratina[] = INCBIN_U8("graphics/pokemon/giratina/footprint.1bpp"); + const u8 gMonFootprint_GiratinaAltered[] = INCBIN_U8("graphics/pokemon/giratina/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/anim_front.4bpp.lz"); @@ -6540,6 +6540,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/back.4bpp.lz"); const u32 gMonShinyPalette_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/shiny.gbapal.lz"); const u8 gMonIcon_GiratinaOrigin[] = INCBIN_U8("graphics/pokemon/giratina/origin/icon.4bpp"); +#if P_FOOTPRINTS + const u8 gMonFootprint_GiratinaOrigin[] = INCBIN_U8("graphics/pokemon/giratina/origin/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_GIRATINA #if P_FAMILY_CRESSELIA @@ -7297,7 +7300,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/shiny.gbapal.lz"); const u8 gMonIcon_BasculegionMale[] = INCBIN_U8("graphics/pokemon/basculegion/icon.4bpp"); #if P_FOOTPRINTS - //const u8 gMonFootprint_Basculegion[] = INCBIN_U8("graphics/pokemon/basculegion/footprint.1bpp"); + const u8 gMonFootprint_Basculegion[] = INCBIN_U8("graphics/pokemon/basculegion/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/front.4bpp.lz"); @@ -7743,19 +7746,19 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u8 gMonFootprint_Sawsbuck[] = INCBIN_U8("graphics/pokemon/sawsbuck/footprint.1bpp"); #endif //P_FOOTPRINTS - const u32 gMonFrontPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/front.4bpp.lz"); + const u32 gMonFrontPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/anim_front.4bpp.lz"); const u32 gMonPalette_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/normal.gbapal.lz"); const u32 gMonBackPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/back.4bpp.lz"); const u32 gMonShinyPalette_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/shiny.gbapal.lz"); const u8 gMonIcon_SawsbuckSummer[] = INCBIN_U8("graphics/pokemon/sawsbuck/summer/icon.4bpp"); - const u32 gMonFrontPic_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/front.4bpp.lz"); + const u32 gMonFrontPic_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/anim_front.4bpp.lz"); const u32 gMonPalette_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/normal.gbapal.lz"); const u32 gMonBackPic_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/back.4bpp.lz"); const u32 gMonShinyPalette_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/shiny.gbapal.lz"); const u8 gMonIcon_SawsbuckAutumn[] = INCBIN_U8("graphics/pokemon/sawsbuck/autumn/icon.4bpp"); - const u32 gMonFrontPic_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/front.4bpp.lz"); + const u32 gMonFrontPic_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/anim_front.4bpp.lz"); const u32 gMonPalette_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/normal.gbapal.lz"); const u32 gMonBackPic_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/back.4bpp.lz"); const u32 gMonShinyPalette_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/shiny.gbapal.lz"); @@ -8179,7 +8182,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Kingambit[] = INCBIN_U32("graphics/pokemon/kingambit/shiny.gbapal.lz"); const u8 gMonIcon_Kingambit[] = INCBIN_U8("graphics/pokemon/kingambit/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Kingambit[] = INCBIN_U8("graphics/pokemon/kingambit/footprint.1bpp"); + const u8 gMonFootprint_Kingambit[] = INCBIN_U8("graphics/pokemon/kingambit/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_PAWNIARD @@ -8427,7 +8430,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/shiny.gbapal.lz"); const u8 gMonIcon_EnamorusIncarnate[] = INCBIN_U8("graphics/pokemon/enamorus/icon.4bpp"); #if P_FOOTPRINTS - //const u8 gMonFootprint_Enamorus[] = INCBIN_U8("graphics/pokemon/enamorus/footprint.1bpp"); + const u8 gMonFootprint_Enamorus[] = INCBIN_U8("graphics/pokemon/enamorus/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/front.4bpp.lz"); @@ -11021,7 +11024,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Dipplin[] = INCBIN_U32("graphics/pokemon/dipplin/shiny.gbapal.lz"); const u8 gMonIcon_Dipplin[] = INCBIN_U8("graphics/pokemon/dipplin/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Dipplin[] = INCBIN_U8("graphics/pokemon/dipplin/footprint.1bpp"); + const u8 gMonFootprint_Dipplin[] = INCBIN_U8("graphics/pokemon/dipplin/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/front.4bpp.lz"); @@ -11030,7 +11033,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/shiny.gbapal.lz"); const u8 gMonIcon_Hydrapple[] = INCBIN_U8("graphics/pokemon/hydrapple/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Hydrapple[] = INCBIN_U8("graphics/pokemon/hydrapple/footprint.1bpp"); + const u8 gMonFootprint_Hydrapple[] = INCBIN_U8("graphics/pokemon/hydrapple/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_APPLIN @@ -11610,7 +11613,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/shiny.gbapal.lz"); const u8 gMonIcon_Archaludon[] = INCBIN_U8("graphics/pokemon/archaludon/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Archaludon[] = INCBIN_U8("graphics/pokemon/archaludon/footprint.1bpp"); + const u8 gMonFootprint_Archaludon[] = INCBIN_U8("graphics/pokemon/archaludon/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_DURALUDON @@ -11827,7 +11830,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Sprigatito[] = INCBIN_U32("graphics/pokemon/sprigatito/shiny.gbapal.lz"); const u8 gMonIcon_Sprigatito[] = INCBIN_U8("graphics/pokemon/sprigatito/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Sprigatito[] = INCBIN_U8("graphics/pokemon/sprigatito/footprint.1bpp"); + const u8 gMonFootprint_Sprigatito[] = INCBIN_U8("graphics/pokemon/sprigatito/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/front.4bpp.lz"); @@ -11836,7 +11839,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/shiny.gbapal.lz"); const u8 gMonIcon_Floragato[] = INCBIN_U8("graphics/pokemon/floragato/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Floragato[] = INCBIN_U8("graphics/pokemon/floragato/footprint.1bpp"); + const u8 gMonFootprint_Floragato[] = INCBIN_U8("graphics/pokemon/floragato/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/front.4bpp.lz"); @@ -11845,7 +11848,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/shiny.gbapal.lz"); const u8 gMonIcon_Meowscarada[] = INCBIN_U8("graphics/pokemon/meowscarada/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Meowscarada[] = INCBIN_U8("graphics/pokemon/meowscarada/footprint.1bpp"); + const u8 gMonFootprint_Meowscarada[] = INCBIN_U8("graphics/pokemon/meowscarada/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_SPRIGATITO @@ -11856,7 +11859,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Fuecoco[] = INCBIN_U32("graphics/pokemon/fuecoco/shiny.gbapal.lz"); const u8 gMonIcon_Fuecoco[] = INCBIN_U8("graphics/pokemon/fuecoco/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Fuecoco[] = INCBIN_U8("graphics/pokemon/fuecoco/footprint.1bpp"); + const u8 gMonFootprint_Fuecoco[] = INCBIN_U8("graphics/pokemon/fuecoco/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/front.4bpp.lz"); @@ -11865,7 +11868,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/shiny.gbapal.lz"); const u8 gMonIcon_Crocalor[] = INCBIN_U8("graphics/pokemon/crocalor/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Crocalor[] = INCBIN_U8("graphics/pokemon/crocalor/footprint.1bpp"); + const u8 gMonFootprint_Crocalor[] = INCBIN_U8("graphics/pokemon/crocalor/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/front.4bpp.lz"); @@ -11874,7 +11877,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/shiny.gbapal.lz"); const u8 gMonIcon_Skeledirge[] = INCBIN_U8("graphics/pokemon/skeledirge/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Skeledirge[] = INCBIN_U8("graphics/pokemon/skeledirge/footprint.1bpp"); + const u8 gMonFootprint_Skeledirge[] = INCBIN_U8("graphics/pokemon/skeledirge/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_FUECOCO @@ -11885,7 +11888,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Quaxly[] = INCBIN_U32("graphics/pokemon/quaxly/shiny.gbapal.lz"); const u8 gMonIcon_Quaxly[] = INCBIN_U8("graphics/pokemon/quaxly/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Quaxly[] = INCBIN_U8("graphics/pokemon/quaxly/footprint.1bpp"); + const u8 gMonFootprint_Quaxly[] = INCBIN_U8("graphics/pokemon/quaxly/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/front.4bpp.lz"); @@ -11894,7 +11897,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/shiny.gbapal.lz"); const u8 gMonIcon_Quaxwell[] = INCBIN_U8("graphics/pokemon/quaxwell/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Quaxwell[] = INCBIN_U8("graphics/pokemon/quaxwell/footprint.1bpp"); + const u8 gMonFootprint_Quaxwell[] = INCBIN_U8("graphics/pokemon/quaxwell/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/front.4bpp.lz"); @@ -11903,7 +11906,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/shiny.gbapal.lz"); const u8 gMonIcon_Quaquaval[] = INCBIN_U8("graphics/pokemon/quaquaval/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Quaquaval[] = INCBIN_U8("graphics/pokemon/quaquaval/footprint.1bpp"); + const u8 gMonFootprint_Quaquaval[] = INCBIN_U8("graphics/pokemon/quaquaval/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_QUAXLY @@ -11914,7 +11917,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Lechonk[] = INCBIN_U32("graphics/pokemon/lechonk/shiny.gbapal.lz"); const u8 gMonIcon_Lechonk[] = INCBIN_U8("graphics/pokemon/lechonk/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Lechonk[] = INCBIN_U8("graphics/pokemon/lechonk/footprint.1bpp"); + const u8 gMonFootprint_Lechonk[] = INCBIN_U8("graphics/pokemon/lechonk/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_OinkologneMale[] = INCBIN_U32("graphics/pokemon/oinkologne/front.4bpp.lz"); @@ -11923,7 +11926,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_OinkologneMale[] = INCBIN_U32("graphics/pokemon/oinkologne/shiny.gbapal.lz"); const u8 gMonIcon_OinkologneMale[] = INCBIN_U8("graphics/pokemon/oinkologne/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Oinkologne[] = INCBIN_U8("graphics/pokemon/oinkologne/footprint.1bpp"); + const u8 gMonFootprint_Oinkologne[] = INCBIN_U8("graphics/pokemon/oinkologne/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_OinkologneFemale[] = INCBIN_U32("graphics/pokemon/oinkologne/female/front.4bpp.lz"); @@ -11940,7 +11943,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Tarountula[] = INCBIN_U32("graphics/pokemon/tarountula/shiny.gbapal.lz"); const u8 gMonIcon_Tarountula[] = INCBIN_U8("graphics/pokemon/tarountula/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Tarountula[] = INCBIN_U8("graphics/pokemon/tarountula/footprint.1bpp"); + const u8 gMonFootprint_Tarountula[] = INCBIN_U8("graphics/pokemon/tarountula/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/front.4bpp.lz"); @@ -11949,7 +11952,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/shiny.gbapal.lz"); const u8 gMonIcon_Spidops[] = INCBIN_U8("graphics/pokemon/spidops/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Spidops[] = INCBIN_U8("graphics/pokemon/spidops/footprint.1bpp"); + const u8 gMonFootprint_Spidops[] = INCBIN_U8("graphics/pokemon/spidops/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_TAROUNTULA @@ -11960,7 +11963,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Nymble[] = INCBIN_U32("graphics/pokemon/nymble/shiny.gbapal.lz"); const u8 gMonIcon_Nymble[] = INCBIN_U8("graphics/pokemon/nymble/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Nymble[] = INCBIN_U8("graphics/pokemon/nymble/footprint.1bpp"); + const u8 gMonFootprint_Nymble[] = INCBIN_U8("graphics/pokemon/nymble/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/front.4bpp.lz"); @@ -11969,7 +11972,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/shiny.gbapal.lz"); const u8 gMonIcon_Lokix[] = INCBIN_U8("graphics/pokemon/lokix/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Lokix[] = INCBIN_U8("graphics/pokemon/lokix/footprint.1bpp"); + const u8 gMonFootprint_Lokix[] = INCBIN_U8("graphics/pokemon/lokix/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_NYMBLE @@ -11980,7 +11983,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Pawmi[] = INCBIN_U32("graphics/pokemon/pawmi/shiny.gbapal.lz"); const u8 gMonIcon_Pawmi[] = INCBIN_U8("graphics/pokemon/pawmi/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Pawmi[] = INCBIN_U8("graphics/pokemon/pawmi/footprint.1bpp"); + const u8 gMonFootprint_Pawmi[] = INCBIN_U8("graphics/pokemon/pawmi/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/front.4bpp.lz"); @@ -11989,7 +11992,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/shiny.gbapal.lz"); const u8 gMonIcon_Pawmo[] = INCBIN_U8("graphics/pokemon/pawmo/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Pawmo[] = INCBIN_U8("graphics/pokemon/pawmo/footprint.1bpp"); + const u8 gMonFootprint_Pawmo[] = INCBIN_U8("graphics/pokemon/pawmo/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/front.4bpp.lz"); @@ -11998,7 +12001,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/shiny.gbapal.lz"); const u8 gMonIcon_Pawmot[] = INCBIN_U8("graphics/pokemon/pawmot/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Pawmot[] = INCBIN_U8("graphics/pokemon/pawmot/footprint.1bpp"); + const u8 gMonFootprint_Pawmot[] = INCBIN_U8("graphics/pokemon/pawmot/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_PAWMI @@ -12009,22 +12012,25 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Tandemaus[] = INCBIN_U32("graphics/pokemon/tandemaus/shiny.gbapal.lz"); const u8 gMonIcon_Tandemaus[] = INCBIN_U8("graphics/pokemon/tandemaus/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Tandemaus[] = INCBIN_U8("graphics/pokemon/tandemaus/footprint.1bpp"); + const u8 gMonFootprint_Tandemaus[] = INCBIN_U8("graphics/pokemon/tandemaus/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonPalette_Maushold[] = INCBIN_U32("graphics/pokemon/maushold/normal.gbapal.lz"); const u32 gMonShinyPalette_Maushold[] = INCBIN_U32("graphics/pokemon/maushold/shiny.gbapal.lz"); -#if P_FOOTPRINTS - // const u8 gMonFootprint_Maushold[] = INCBIN_U8("graphics/pokemon/maushold/footprint.1bpp"); -#endif //P_FOOTPRINTS const u32 gMonFrontPic_MausholdFamilyOfThree[] = INCBIN_U32("graphics/pokemon/maushold/front.4bpp.lz"); const u32 gMonBackPic_MausholdFamilyOfThree[] = INCBIN_U32("graphics/pokemon/maushold/back.4bpp.lz"); const u8 gMonIcon_MausholdFamilyOfThree[] = INCBIN_U8("graphics/pokemon/maushold/icon.4bpp"); +#if P_FOOTPRINTS + const u8 gMonFootprint_MausholdFamilyOfThree[] = INCBIN_U8("graphics/pokemon/maushold/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MausholdFamilyOfFour[] = INCBIN_U32("graphics/pokemon/maushold/four/front.4bpp.lz"); const u32 gMonBackPic_MausholdFamilyOfFour[] = INCBIN_U32("graphics/pokemon/maushold/four/back.4bpp.lz"); const u8 gMonIcon_MausholdFamilyOfFour[] = INCBIN_U8("graphics/pokemon/maushold/four/icon.4bpp"); +#if P_FOOTPRINTS + const u8 gMonFootprint_MausholdFamilyOfFour[] = INCBIN_U8("graphics/pokemon/maushold/four/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TANDEMAUS #if P_FAMILY_FIDOUGH @@ -12034,7 +12040,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Fidough[] = INCBIN_U32("graphics/pokemon/fidough/shiny.gbapal.lz"); const u8 gMonIcon_Fidough[] = INCBIN_U8("graphics/pokemon/fidough/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Fidough[] = INCBIN_U8("graphics/pokemon/fidough/footprint.1bpp"); + const u8 gMonFootprint_Fidough[] = INCBIN_U8("graphics/pokemon/fidough/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/front.4bpp.lz"); @@ -12043,7 +12049,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/shiny.gbapal.lz"); const u8 gMonIcon_Dachsbun[] = INCBIN_U8("graphics/pokemon/dachsbun/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Dachsbun[] = INCBIN_U8("graphics/pokemon/dachsbun/footprint.1bpp"); + const u8 gMonFootprint_Dachsbun[] = INCBIN_U8("graphics/pokemon/dachsbun/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_FIDOUGH @@ -12054,7 +12060,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Smoliv[] = INCBIN_U32("graphics/pokemon/smoliv/shiny.gbapal.lz"); const u8 gMonIcon_Smoliv[] = INCBIN_U8("graphics/pokemon/smoliv/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Smoliv[] = INCBIN_U8("graphics/pokemon/smoliv/footprint.1bpp"); + const u8 gMonFootprint_Smoliv[] = INCBIN_U8("graphics/pokemon/smoliv/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/front.4bpp.lz"); @@ -12063,7 +12069,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/shiny.gbapal.lz"); const u8 gMonIcon_Dolliv[] = INCBIN_U8("graphics/pokemon/dolliv/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Dolliv[] = INCBIN_U8("graphics/pokemon/dolliv/footprint.1bpp"); + const u8 gMonFootprint_Dolliv[] = INCBIN_U8("graphics/pokemon/dolliv/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/front.4bpp.lz"); @@ -12072,7 +12078,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/shiny.gbapal.lz"); const u8 gMonIcon_Arboliva[] = INCBIN_U8("graphics/pokemon/arboliva/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Arboliva[] = INCBIN_U8("graphics/pokemon/arboliva/footprint.1bpp"); + const u8 gMonFootprint_Arboliva[] = INCBIN_U8("graphics/pokemon/arboliva/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_SMOLIV @@ -12080,7 +12086,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonFrontPic_Squawkabilly[] = INCBIN_U32("graphics/pokemon/squawkabilly/front.4bpp.lz"); const u32 gMonBackPic_Squawkabilly[] = INCBIN_U32("graphics/pokemon/squawkabilly/back.4bpp.lz"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Squawkabilly[] = INCBIN_U8("graphics/pokemon/squawkabilly/footprint.1bpp"); + const u8 gMonFootprint_Squawkabilly[] = INCBIN_U8("graphics/pokemon/squawkabilly/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonPalette_SquawkabillyGreenPlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/normal.gbapal.lz"); @@ -12107,7 +12113,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Nacli[] = INCBIN_U32("graphics/pokemon/nacli/shiny.gbapal.lz"); const u8 gMonIcon_Nacli[] = INCBIN_U8("graphics/pokemon/nacli/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Nacli[] = INCBIN_U8("graphics/pokemon/nacli/footprint.1bpp"); + const u8 gMonFootprint_Nacli[] = INCBIN_U8("graphics/pokemon/nacli/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/front.4bpp.lz"); @@ -12116,7 +12122,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/shiny.gbapal.lz"); const u8 gMonIcon_Naclstack[] = INCBIN_U8("graphics/pokemon/naclstack/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Naclstack[] = INCBIN_U8("graphics/pokemon/naclstack/footprint.1bpp"); + const u8 gMonFootprint_Naclstack[] = INCBIN_U8("graphics/pokemon/naclstack/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/front.4bpp.lz"); @@ -12125,7 +12131,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/shiny.gbapal.lz"); const u8 gMonIcon_Garganacl[] = INCBIN_U8("graphics/pokemon/garganacl/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Garganacl[] = INCBIN_U8("graphics/pokemon/garganacl/footprint.1bpp"); + const u8 gMonFootprint_Garganacl[] = INCBIN_U8("graphics/pokemon/garganacl/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_NACLI @@ -12136,7 +12142,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Charcadet[] = INCBIN_U32("graphics/pokemon/charcadet/shiny.gbapal.lz"); const u8 gMonIcon_Charcadet[] = INCBIN_U8("graphics/pokemon/charcadet/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Charcadet[] = INCBIN_U8("graphics/pokemon/charcadet/footprint.1bpp"); + const u8 gMonFootprint_Charcadet[] = INCBIN_U8("graphics/pokemon/charcadet/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/front.4bpp.lz"); @@ -12145,7 +12151,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/shiny.gbapal.lz"); const u8 gMonIcon_Armarouge[] = INCBIN_U8("graphics/pokemon/armarouge/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Armarouge[] = INCBIN_U8("graphics/pokemon/armarouge/footprint.1bpp"); + const u8 gMonFootprint_Armarouge[] = INCBIN_U8("graphics/pokemon/armarouge/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/front.4bpp.lz"); @@ -12154,7 +12160,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/shiny.gbapal.lz"); const u8 gMonIcon_Ceruledge[] = INCBIN_U8("graphics/pokemon/ceruledge/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Ceruledge[] = INCBIN_U8("graphics/pokemon/ceruledge/footprint.1bpp"); + const u8 gMonFootprint_Ceruledge[] = INCBIN_U8("graphics/pokemon/ceruledge/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_CHARCADET @@ -12165,7 +12171,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Tadbulb[] = INCBIN_U32("graphics/pokemon/tadbulb/shiny.gbapal.lz"); const u8 gMonIcon_Tadbulb[] = INCBIN_U8("graphics/pokemon/tadbulb/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Tadbulb[] = INCBIN_U8("graphics/pokemon/tadbulb/footprint.1bpp"); + const u8 gMonFootprint_Tadbulb[] = INCBIN_U8("graphics/pokemon/tadbulb/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/front.4bpp.lz"); @@ -12174,7 +12180,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/shiny.gbapal.lz"); const u8 gMonIcon_Bellibolt[] = INCBIN_U8("graphics/pokemon/bellibolt/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Bellibolt[] = INCBIN_U8("graphics/pokemon/bellibolt/footprint.1bpp"); + const u8 gMonFootprint_Bellibolt[] = INCBIN_U8("graphics/pokemon/bellibolt/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_TADBULB @@ -12185,7 +12191,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Wattrel[] = INCBIN_U32("graphics/pokemon/wattrel/shiny.gbapal.lz"); const u8 gMonIcon_Wattrel[] = INCBIN_U8("graphics/pokemon/wattrel/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Wattrel[] = INCBIN_U8("graphics/pokemon/wattrel/footprint.1bpp"); + const u8 gMonFootprint_Wattrel[] = INCBIN_U8("graphics/pokemon/wattrel/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/front.4bpp.lz"); @@ -12194,7 +12200,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/shiny.gbapal.lz"); const u8 gMonIcon_Kilowattrel[] = INCBIN_U8("graphics/pokemon/kilowattrel/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Kilowattrel[] = INCBIN_U8("graphics/pokemon/kilowattrel/footprint.1bpp"); + const u8 gMonFootprint_Kilowattrel[] = INCBIN_U8("graphics/pokemon/kilowattrel/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_WATTREL @@ -12205,7 +12211,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Maschiff[] = INCBIN_U32("graphics/pokemon/maschiff/shiny.gbapal.lz"); const u8 gMonIcon_Maschiff[] = INCBIN_U8("graphics/pokemon/maschiff/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Maschiff[] = INCBIN_U8("graphics/pokemon/maschiff/footprint.1bpp"); + const u8 gMonFootprint_Maschiff[] = INCBIN_U8("graphics/pokemon/maschiff/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/front.4bpp.lz"); @@ -12214,7 +12220,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/shiny.gbapal.lz"); const u8 gMonIcon_Mabosstiff[] = INCBIN_U8("graphics/pokemon/mabosstiff/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Mabosstiff[] = INCBIN_U8("graphics/pokemon/mabosstiff/footprint.1bpp"); + const u8 gMonFootprint_Mabosstiff[] = INCBIN_U8("graphics/pokemon/mabosstiff/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_MASCHIFF @@ -12225,7 +12231,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Shroodle[] = INCBIN_U32("graphics/pokemon/shroodle/shiny.gbapal.lz"); const u8 gMonIcon_Shroodle[] = INCBIN_U8("graphics/pokemon/shroodle/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Shroodle[] = INCBIN_U8("graphics/pokemon/shroodle/footprint.1bpp"); + const u8 gMonFootprint_Shroodle[] = INCBIN_U8("graphics/pokemon/shroodle/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/front.4bpp.lz"); @@ -12234,7 +12240,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/shiny.gbapal.lz"); const u8 gMonIcon_Grafaiai[] = INCBIN_U8("graphics/pokemon/grafaiai/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Grafaiai[] = INCBIN_U8("graphics/pokemon/grafaiai/footprint.1bpp"); + const u8 gMonFootprint_Grafaiai[] = INCBIN_U8("graphics/pokemon/grafaiai/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_SHROODLE @@ -12245,7 +12251,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Bramblin[] = INCBIN_U32("graphics/pokemon/bramblin/shiny.gbapal.lz"); const u8 gMonIcon_Bramblin[] = INCBIN_U8("graphics/pokemon/bramblin/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Bramblin[] = INCBIN_U8("graphics/pokemon/bramblin/footprint.1bpp"); + const u8 gMonFootprint_Bramblin[] = INCBIN_U8("graphics/pokemon/bramblin/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/front.4bpp.lz"); @@ -12254,7 +12260,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/shiny.gbapal.lz"); const u8 gMonIcon_Brambleghast[] = INCBIN_U8("graphics/pokemon/brambleghast/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Brambleghast[] = INCBIN_U8("graphics/pokemon/brambleghast/footprint.1bpp"); + const u8 gMonFootprint_Brambleghast[] = INCBIN_U8("graphics/pokemon/brambleghast/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_BRAMBLIN @@ -12265,7 +12271,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Toedscool[] = INCBIN_U32("graphics/pokemon/toedscool/shiny.gbapal.lz"); const u8 gMonIcon_Toedscool[] = INCBIN_U8("graphics/pokemon/toedscool/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Toedscool[] = INCBIN_U8("graphics/pokemon/toedscool/footprint.1bpp"); + const u8 gMonFootprint_Toedscool[] = INCBIN_U8("graphics/pokemon/toedscool/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/front.4bpp.lz"); @@ -12274,7 +12280,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/shiny.gbapal.lz"); const u8 gMonIcon_Toedscruel[] = INCBIN_U8("graphics/pokemon/toedscruel/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Toedscruel[] = INCBIN_U8("graphics/pokemon/toedscruel/footprint.1bpp"); + const u8 gMonFootprint_Toedscruel[] = INCBIN_U8("graphics/pokemon/toedscruel/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_TOEDSCOOL @@ -12285,7 +12291,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Klawf[] = INCBIN_U32("graphics/pokemon/klawf/shiny.gbapal.lz"); const u8 gMonIcon_Klawf[] = INCBIN_U8("graphics/pokemon/klawf/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Klawf[] = INCBIN_U8("graphics/pokemon/klawf/footprint.1bpp"); + const u8 gMonFootprint_Klawf[] = INCBIN_U8("graphics/pokemon/klawf/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_KLAWF @@ -12296,7 +12302,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Capsakid[] = INCBIN_U32("graphics/pokemon/capsakid/shiny.gbapal.lz"); const u8 gMonIcon_Capsakid[] = INCBIN_U8("graphics/pokemon/capsakid/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Capsakid[] = INCBIN_U8("graphics/pokemon/capsakid/footprint.1bpp"); + const u8 gMonFootprint_Capsakid[] = INCBIN_U8("graphics/pokemon/capsakid/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/front.4bpp.lz"); @@ -12305,7 +12311,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/shiny.gbapal.lz"); const u8 gMonIcon_Scovillain[] = INCBIN_U8("graphics/pokemon/scovillain/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Scovillain[] = INCBIN_U8("graphics/pokemon/scovillain/footprint.1bpp"); + const u8 gMonFootprint_Scovillain[] = INCBIN_U8("graphics/pokemon/scovillain/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_CAPSAKID @@ -12316,7 +12322,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Rellor[] = INCBIN_U32("graphics/pokemon/rellor/shiny.gbapal.lz"); const u8 gMonIcon_Rellor[] = INCBIN_U8("graphics/pokemon/rellor/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Rellor[] = INCBIN_U8("graphics/pokemon/rellor/footprint.1bpp"); + const u8 gMonFootprint_Rellor[] = INCBIN_U8("graphics/pokemon/rellor/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/front.4bpp.lz"); @@ -12325,7 +12331,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/shiny.gbapal.lz"); const u8 gMonIcon_Rabsca[] = INCBIN_U8("graphics/pokemon/rabsca/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Rabsca[] = INCBIN_U8("graphics/pokemon/rabsca/footprint.1bpp"); + const u8 gMonFootprint_Rabsca[] = INCBIN_U8("graphics/pokemon/rabsca/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_RELLOR @@ -12336,7 +12342,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Flittle[] = INCBIN_U32("graphics/pokemon/flittle/shiny.gbapal.lz"); const u8 gMonIcon_Flittle[] = INCBIN_U8("graphics/pokemon/flittle/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Flittle[] = INCBIN_U8("graphics/pokemon/flittle/footprint.1bpp"); + const u8 gMonFootprint_Flittle[] = INCBIN_U8("graphics/pokemon/flittle/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/front.4bpp.lz"); @@ -12345,7 +12351,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/shiny.gbapal.lz"); const u8 gMonIcon_Espathra[] = INCBIN_U8("graphics/pokemon/espathra/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Espathra[] = INCBIN_U8("graphics/pokemon/espathra/footprint.1bpp"); + const u8 gMonFootprint_Espathra[] = INCBIN_U8("graphics/pokemon/espathra/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_FLITTLE @@ -12356,7 +12362,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Tinkatink[] = INCBIN_U32("graphics/pokemon/tinkatink/shiny.gbapal.lz"); const u8 gMonIcon_Tinkatink[] = INCBIN_U8("graphics/pokemon/tinkatink/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Tinkatink[] = INCBIN_U8("graphics/pokemon/tinkatink/footprint.1bpp"); + const u8 gMonFootprint_Tinkatink[] = INCBIN_U8("graphics/pokemon/tinkatink/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/front.4bpp.lz"); @@ -12365,7 +12371,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/shiny.gbapal.lz"); const u8 gMonIcon_Tinkatuff[] = INCBIN_U8("graphics/pokemon/tinkatuff/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Tinkatuff[] = INCBIN_U8("graphics/pokemon/tinkatuff/footprint.1bpp"); + const u8 gMonFootprint_Tinkatuff[] = INCBIN_U8("graphics/pokemon/tinkatuff/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/front.4bpp.lz"); @@ -12374,7 +12380,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/shiny.gbapal.lz"); const u8 gMonIcon_Tinkaton[] = INCBIN_U8("graphics/pokemon/tinkaton/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Tinkaton[] = INCBIN_U8("graphics/pokemon/tinkaton/footprint.1bpp"); + const u8 gMonFootprint_Tinkaton[] = INCBIN_U8("graphics/pokemon/tinkaton/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_TINKATINK @@ -12385,7 +12391,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Wiglett[] = INCBIN_U32("graphics/pokemon/wiglett/shiny.gbapal.lz"); const u8 gMonIcon_Wiglett[] = INCBIN_U8("graphics/pokemon/wiglett/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Wiglett[] = INCBIN_U8("graphics/pokemon/wiglett/footprint.1bpp"); + const u8 gMonFootprint_Wiglett[] = INCBIN_U8("graphics/pokemon/wiglett/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/front.4bpp.lz"); @@ -12394,7 +12400,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/shiny.gbapal.lz"); const u8 gMonIcon_Wugtrio[] = INCBIN_U8("graphics/pokemon/wugtrio/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Wugtrio[] = INCBIN_U8("graphics/pokemon/wugtrio/footprint.1bpp"); + const u8 gMonFootprint_Wugtrio[] = INCBIN_U8("graphics/pokemon/wugtrio/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_WIGLETT @@ -12405,7 +12411,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Bombirdier[] = INCBIN_U32("graphics/pokemon/bombirdier/shiny.gbapal.lz"); const u8 gMonIcon_Bombirdier[] = INCBIN_U8("graphics/pokemon/bombirdier/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Bombirdier[] = INCBIN_U8("graphics/pokemon/bombirdier/footprint.1bpp"); + const u8 gMonFootprint_Bombirdier[] = INCBIN_U8("graphics/pokemon/bombirdier/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_BOMBIRDIER @@ -12416,7 +12422,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Finizen[] = INCBIN_U32("graphics/pokemon/finizen/shiny.gbapal.lz"); const u8 gMonIcon_Finizen[] = INCBIN_U8("graphics/pokemon/finizen/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Finizen[] = INCBIN_U8("graphics/pokemon/finizen/footprint.1bpp"); + const u8 gMonFootprint_Finizen[] = INCBIN_U8("graphics/pokemon/finizen/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/front.4bpp.lz"); @@ -12425,7 +12431,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/shiny.gbapal.lz"); const u8 gMonIcon_PalafinZero[] = INCBIN_U8("graphics/pokemon/palafin/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Palafin[] = INCBIN_U8("graphics/pokemon/palafin/footprint.1bpp"); + const u8 gMonFootprint_Palafin[] = INCBIN_U8("graphics/pokemon/palafin/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_PalafinHero[] = INCBIN_U32("graphics/pokemon/palafin/hero/front.4bpp.lz"); @@ -12442,7 +12448,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Varoom[] = INCBIN_U32("graphics/pokemon/varoom/shiny.gbapal.lz"); const u8 gMonIcon_Varoom[] = INCBIN_U8("graphics/pokemon/varoom/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Varoom[] = INCBIN_U8("graphics/pokemon/varoom/footprint.1bpp"); + const u8 gMonFootprint_Varoom[] = INCBIN_U8("graphics/pokemon/varoom/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/front.4bpp.lz"); @@ -12451,7 +12457,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/shiny.gbapal.lz"); const u8 gMonIcon_Revavroom[] = INCBIN_U8("graphics/pokemon/revavroom/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Revavroom[] = INCBIN_U8("graphics/pokemon/revavroom/footprint.1bpp"); + const u8 gMonFootprint_Revavroom[] = INCBIN_U8("graphics/pokemon/revavroom/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_VAROOM @@ -12462,7 +12468,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Cyclizar[] = INCBIN_U32("graphics/pokemon/cyclizar/shiny.gbapal.lz"); const u8 gMonIcon_Cyclizar[] = INCBIN_U8("graphics/pokemon/cyclizar/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Cyclizar[] = INCBIN_U8("graphics/pokemon/cyclizar/footprint.1bpp"); + const u8 gMonFootprint_Cyclizar[] = INCBIN_U8("graphics/pokemon/cyclizar/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_CYCLIZAR @@ -12473,7 +12479,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Orthworm[] = INCBIN_U32("graphics/pokemon/orthworm/shiny.gbapal.lz"); const u8 gMonIcon_Orthworm[] = INCBIN_U8("graphics/pokemon/orthworm/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Orthworm[] = INCBIN_U8("graphics/pokemon/orthworm/footprint.1bpp"); + const u8 gMonFootprint_Orthworm[] = INCBIN_U8("graphics/pokemon/orthworm/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_ORTHWORM @@ -12484,7 +12490,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Glimmet[] = INCBIN_U32("graphics/pokemon/glimmet/shiny.gbapal.lz"); const u8 gMonIcon_Glimmet[] = INCBIN_U8("graphics/pokemon/glimmet/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Glimmet[] = INCBIN_U8("graphics/pokemon/glimmet/footprint.1bpp"); + const u8 gMonFootprint_Glimmet[] = INCBIN_U8("graphics/pokemon/glimmet/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/front.4bpp.lz"); @@ -12493,7 +12499,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/shiny.gbapal.lz"); const u8 gMonIcon_Glimmora[] = INCBIN_U8("graphics/pokemon/glimmora/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Glimmora[] = INCBIN_U8("graphics/pokemon/glimmora/footprint.1bpp"); + const u8 gMonFootprint_Glimmora[] = INCBIN_U8("graphics/pokemon/glimmora/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_GLIMMET @@ -12504,7 +12510,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Greavard[] = INCBIN_U32("graphics/pokemon/greavard/shiny.gbapal.lz"); const u8 gMonIcon_Greavard[] = INCBIN_U8("graphics/pokemon/greavard/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Greavard[] = INCBIN_U8("graphics/pokemon/greavard/footprint.1bpp"); + const u8 gMonFootprint_Greavard[] = INCBIN_U8("graphics/pokemon/greavard/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/front.4bpp.lz"); @@ -12513,7 +12519,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/shiny.gbapal.lz"); const u8 gMonIcon_Houndstone[] = INCBIN_U8("graphics/pokemon/houndstone/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Houndstone[] = INCBIN_U8("graphics/pokemon/houndstone/footprint.1bpp"); + const u8 gMonFootprint_Houndstone[] = INCBIN_U8("graphics/pokemon/houndstone/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_GREAVARD @@ -12524,7 +12530,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Flamigo[] = INCBIN_U32("graphics/pokemon/flamigo/shiny.gbapal.lz"); const u8 gMonIcon_Flamigo[] = INCBIN_U8("graphics/pokemon/flamigo/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Flamigo[] = INCBIN_U8("graphics/pokemon/flamigo/footprint.1bpp"); + const u8 gMonFootprint_Flamigo[] = INCBIN_U8("graphics/pokemon/flamigo/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_FLAMIGO @@ -12535,7 +12541,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Cetoddle[] = INCBIN_U32("graphics/pokemon/cetoddle/shiny.gbapal.lz"); const u8 gMonIcon_Cetoddle[] = INCBIN_U8("graphics/pokemon/cetoddle/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Cetoddle[] = INCBIN_U8("graphics/pokemon/cetoddle/footprint.1bpp"); + const u8 gMonFootprint_Cetoddle[] = INCBIN_U8("graphics/pokemon/cetoddle/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/front.4bpp.lz"); @@ -12544,7 +12550,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/shiny.gbapal.lz"); const u8 gMonIcon_Cetitan[] = INCBIN_U8("graphics/pokemon/cetitan/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Cetitan[] = INCBIN_U8("graphics/pokemon/cetitan/footprint.1bpp"); + const u8 gMonFootprint_Cetitan[] = INCBIN_U8("graphics/pokemon/cetitan/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_CETODDLE @@ -12555,7 +12561,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Veluza[] = INCBIN_U32("graphics/pokemon/veluza/shiny.gbapal.lz"); const u8 gMonIcon_Veluza[] = INCBIN_U8("graphics/pokemon/veluza/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Veluza[] = INCBIN_U8("graphics/pokemon/veluza/footprint.1bpp"); + const u8 gMonFootprint_Veluza[] = INCBIN_U8("graphics/pokemon/veluza/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_VELUZA @@ -12566,7 +12572,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Dondozo[] = INCBIN_U32("graphics/pokemon/dondozo/shiny.gbapal.lz"); const u8 gMonIcon_Dondozo[] = INCBIN_U8("graphics/pokemon/dondozo/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Dondozo[] = INCBIN_U8("graphics/pokemon/dondozo/footprint.1bpp"); + const u8 gMonFootprint_Dondozo[] = INCBIN_U8("graphics/pokemon/dondozo/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_DONDOZO @@ -12577,7 +12583,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_TatsugiriCurly[] = INCBIN_U32("graphics/pokemon/tatsugiri/shiny.gbapal.lz"); const u8 gMonIcon_TatsugiriCurly[] = INCBIN_U8("graphics/pokemon/tatsugiri/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Tatsugiri[] = INCBIN_U8("graphics/pokemon/tatsugiri/footprint.1bpp"); + const u8 gMonFootprint_Tatsugiri[] = INCBIN_U8("graphics/pokemon/tatsugiri/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_TatsugiriDroopy[] = INCBIN_U32("graphics/pokemon/tatsugiri/droopy/front.4bpp.lz"); @@ -12600,7 +12606,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_GreatTusk[] = INCBIN_U32("graphics/pokemon/great_tusk/shiny.gbapal.lz"); const u8 gMonIcon_GreatTusk[] = INCBIN_U8("graphics/pokemon/great_tusk/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_GreatTusk[] = INCBIN_U8("graphics/pokemon/great_tusk/footprint.1bpp"); + const u8 gMonFootprint_GreatTusk[] = INCBIN_U8("graphics/pokemon/great_tusk/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_GREAT_TUSK @@ -12611,7 +12617,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_ScreamTail[] = INCBIN_U32("graphics/pokemon/scream_tail/shiny.gbapal.lz"); const u8 gMonIcon_ScreamTail[] = INCBIN_U8("graphics/pokemon/scream_tail/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_ScreamTail[] = INCBIN_U8("graphics/pokemon/scream_tail/footprint.1bpp"); + const u8 gMonFootprint_ScreamTail[] = INCBIN_U8("graphics/pokemon/scream_tail/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_SCREAM_TAIL @@ -12622,7 +12628,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_BruteBonnet[] = INCBIN_U32("graphics/pokemon/brute_bonnet/shiny.gbapal.lz"); const u8 gMonIcon_BruteBonnet[] = INCBIN_U8("graphics/pokemon/brute_bonnet/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_BruteBonnet[] = INCBIN_U8("graphics/pokemon/brute_bonnet/footprint.1bpp"); + const u8 gMonFootprint_BruteBonnet[] = INCBIN_U8("graphics/pokemon/brute_bonnet/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_BRUTE_BONNET @@ -12633,7 +12639,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_FlutterMane[] = INCBIN_U32("graphics/pokemon/flutter_mane/shiny.gbapal.lz"); const u8 gMonIcon_FlutterMane[] = INCBIN_U8("graphics/pokemon/flutter_mane/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_FlutterMane[] = INCBIN_U8("graphics/pokemon/flutter_mane/footprint.1bpp"); + const u8 gMonFootprint_FlutterMane[] = INCBIN_U8("graphics/pokemon/flutter_mane/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_FLUTTER_MANE @@ -12644,7 +12650,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_SlitherWing[] = INCBIN_U32("graphics/pokemon/slither_wing/shiny.gbapal.lz"); const u8 gMonIcon_SlitherWing[] = INCBIN_U8("graphics/pokemon/slither_wing/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_SlitherWing[] = INCBIN_U8("graphics/pokemon/slither_wing/footprint.1bpp"); + const u8 gMonFootprint_SlitherWing[] = INCBIN_U8("graphics/pokemon/slither_wing/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_SLITHER_WING @@ -12655,7 +12661,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_SandyShocks[] = INCBIN_U32("graphics/pokemon/sandy_shocks/shiny.gbapal.lz"); const u8 gMonIcon_SandyShocks[] = INCBIN_U8("graphics/pokemon/sandy_shocks/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_SandyShocks[] = INCBIN_U8("graphics/pokemon/sandy_shocks/footprint.1bpp"); + const u8 gMonFootprint_SandyShocks[] = INCBIN_U8("graphics/pokemon/sandy_shocks/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_SANDY_SHOCKS @@ -12666,7 +12672,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_IronTreads[] = INCBIN_U32("graphics/pokemon/iron_treads/shiny.gbapal.lz"); const u8 gMonIcon_IronTreads[] = INCBIN_U8("graphics/pokemon/iron_treads/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_IronTreads[] = INCBIN_U8("graphics/pokemon/iron_treads/footprint.1bpp"); + const u8 gMonFootprint_IronTreads[] = INCBIN_U8("graphics/pokemon/iron_treads/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_TREADS @@ -12677,7 +12683,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_IronBundle[] = INCBIN_U32("graphics/pokemon/iron_bundle/shiny.gbapal.lz"); const u8 gMonIcon_IronBundle[] = INCBIN_U8("graphics/pokemon/iron_bundle/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_IronBundle[] = INCBIN_U8("graphics/pokemon/iron_bundle/footprint.1bpp"); + const u8 gMonFootprint_IronBundle[] = INCBIN_U8("graphics/pokemon/iron_bundle/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_BUNDLE @@ -12688,7 +12694,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_IronHands[] = INCBIN_U32("graphics/pokemon/iron_hands/shiny.gbapal.lz"); const u8 gMonIcon_IronHands[] = INCBIN_U8("graphics/pokemon/iron_hands/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_IronHands[] = INCBIN_U8("graphics/pokemon/iron_hands/footprint.1bpp"); + const u8 gMonFootprint_IronHands[] = INCBIN_U8("graphics/pokemon/iron_hands/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_HANDS @@ -12699,7 +12705,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_IronJugulis[] = INCBIN_U32("graphics/pokemon/iron_jugulis/shiny.gbapal.lz"); const u8 gMonIcon_IronJugulis[] = INCBIN_U8("graphics/pokemon/iron_jugulis/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_IronJugulis[] = INCBIN_U8("graphics/pokemon/iron_jugulis/footprint.1bpp"); + const u8 gMonFootprint_IronJugulis[] = INCBIN_U8("graphics/pokemon/iron_jugulis/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_JUGULIS @@ -12710,7 +12716,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_IronMoth[] = INCBIN_U32("graphics/pokemon/iron_moth/shiny.gbapal.lz"); const u8 gMonIcon_IronMoth[] = INCBIN_U8("graphics/pokemon/iron_moth/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_IronMoth[] = INCBIN_U8("graphics/pokemon/iron_moth/footprint.1bpp"); + const u8 gMonFootprint_IronMoth[] = INCBIN_U8("graphics/pokemon/iron_moth/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_MOTH @@ -12721,7 +12727,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_IronThorns[] = INCBIN_U32("graphics/pokemon/iron_thorns/shiny.gbapal.lz"); const u8 gMonIcon_IronThorns[] = INCBIN_U8("graphics/pokemon/iron_thorns/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_IronThorns[] = INCBIN_U8("graphics/pokemon/iron_thorns/footprint.1bpp"); + const u8 gMonFootprint_IronThorns[] = INCBIN_U8("graphics/pokemon/iron_thorns/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_THORNS @@ -12732,7 +12738,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Frigibax[] = INCBIN_U32("graphics/pokemon/frigibax/shiny.gbapal.lz"); const u8 gMonIcon_Frigibax[] = INCBIN_U8("graphics/pokemon/frigibax/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Frigibax[] = INCBIN_U8("graphics/pokemon/frigibax/footprint.1bpp"); + const u8 gMonFootprint_Frigibax[] = INCBIN_U8("graphics/pokemon/frigibax/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/front.4bpp.lz"); @@ -12741,7 +12747,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/shiny.gbapal.lz"); const u8 gMonIcon_Arctibax[] = INCBIN_U8("graphics/pokemon/arctibax/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Arctibax[] = INCBIN_U8("graphics/pokemon/arctibax/footprint.1bpp"); + const u8 gMonFootprint_Arctibax[] = INCBIN_U8("graphics/pokemon/arctibax/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/front.4bpp.lz"); @@ -12750,7 +12756,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/shiny.gbapal.lz"); const u8 gMonIcon_Baxcalibur[] = INCBIN_U8("graphics/pokemon/baxcalibur/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Baxcalibur[] = INCBIN_U8("graphics/pokemon/baxcalibur/footprint.1bpp"); + const u8 gMonFootprint_Baxcalibur[] = INCBIN_U8("graphics/pokemon/baxcalibur/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_FRIGIBAX @@ -12761,7 +12767,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_GimmighoulChest[] = INCBIN_U32("graphics/pokemon/gimmighoul/shiny.gbapal.lz"); const u8 gMonIcon_GimmighoulChest[] = INCBIN_U8("graphics/pokemon/gimmighoul/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Gimmighoul[] = INCBIN_U8("graphics/pokemon/gimmighoul/footprint.1bpp"); + const u8 gMonFootprint_GimmighoulChest[] = INCBIN_U8("graphics/pokemon/gimmighoul/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_GimmighoulRoaming[] = INCBIN_U32("graphics/pokemon/gimmighoul/roaming/front.4bpp.lz"); @@ -12769,6 +12775,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_GimmighoulRoaming[] = INCBIN_U32("graphics/pokemon/gimmighoul/roaming/back.4bpp.lz"); const u32 gMonShinyPalette_GimmighoulRoaming[] = INCBIN_U32("graphics/pokemon/gimmighoul/roaming/shiny.gbapal.lz"); const u8 gMonIcon_GimmighoulRoaming[] = INCBIN_U8("graphics/pokemon/gimmighoul/roaming/icon.4bpp"); +#if P_FOOTPRINTS + const u8 gMonFootprint_GimmighoulRoaming[] = INCBIN_U8("graphics/pokemon/gimmighoul/roaming/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Gholdengo[] = INCBIN_U32("graphics/pokemon/gholdengo/front.4bpp.lz"); const u32 gMonPalette_Gholdengo[] = INCBIN_U32("graphics/pokemon/gholdengo/normal.gbapal.lz"); @@ -12776,7 +12785,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Gholdengo[] = INCBIN_U32("graphics/pokemon/gholdengo/shiny.gbapal.lz"); const u8 gMonIcon_Gholdengo[] = INCBIN_U8("graphics/pokemon/gholdengo/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Gholdengo[] = INCBIN_U8("graphics/pokemon/gholdengo/footprint.1bpp"); + const u8 gMonFootprint_Gholdengo[] = INCBIN_U8("graphics/pokemon/gholdengo/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_GIMMIGHOUL @@ -12787,7 +12796,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_WoChien[] = INCBIN_U32("graphics/pokemon/wo_chien/shiny.gbapal.lz"); const u8 gMonIcon_WoChien[] = INCBIN_U8("graphics/pokemon/wo_chien/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_WoChien[] = INCBIN_U8("graphics/pokemon/wo_chien/footprint.1bpp"); + const u8 gMonFootprint_WoChien[] = INCBIN_U8("graphics/pokemon/wo_chien/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_WO_CHIEN @@ -12798,7 +12807,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_ChienPao[] = INCBIN_U32("graphics/pokemon/chien_pao/shiny.gbapal.lz"); const u8 gMonIcon_ChienPao[] = INCBIN_U8("graphics/pokemon/chien_pao/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_ChienPao[] = INCBIN_U8("graphics/pokemon/chien_pao/footprint.1bpp"); + const u8 gMonFootprint_ChienPao[] = INCBIN_U8("graphics/pokemon/chien_pao/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_CHIEN_PAO @@ -12809,7 +12818,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_TingLu[] = INCBIN_U32("graphics/pokemon/ting_lu/shiny.gbapal.lz"); const u8 gMonIcon_TingLu[] = INCBIN_U8("graphics/pokemon/ting_lu/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_TingLu[] = INCBIN_U8("graphics/pokemon/ting_lu/footprint.1bpp"); + const u8 gMonFootprint_TingLu[] = INCBIN_U8("graphics/pokemon/ting_lu/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_TING_LU @@ -12820,7 +12829,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_ChiYu[] = INCBIN_U32("graphics/pokemon/chi_yu/shiny.gbapal.lz"); const u8 gMonIcon_ChiYu[] = INCBIN_U8("graphics/pokemon/chi_yu/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_ChiYu[] = INCBIN_U8("graphics/pokemon/chi_yu/footprint.1bpp"); + const u8 gMonFootprint_ChiYu[] = INCBIN_U8("graphics/pokemon/chi_yu/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_CHI_YU @@ -12831,7 +12840,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_RoaringMoon[] = INCBIN_U32("graphics/pokemon/roaring_moon/shiny.gbapal.lz"); const u8 gMonIcon_RoaringMoon[] = INCBIN_U8("graphics/pokemon/roaring_moon/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_RoaringMoon[] = INCBIN_U8("graphics/pokemon/roaring_moon/footprint.1bpp"); + const u8 gMonFootprint_RoaringMoon[] = INCBIN_U8("graphics/pokemon/roaring_moon/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_ROARING_MOON @@ -12842,7 +12851,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_IronValiant[] = INCBIN_U32("graphics/pokemon/iron_valiant/shiny.gbapal.lz"); const u8 gMonIcon_IronValiant[] = INCBIN_U8("graphics/pokemon/iron_valiant/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_IronValiant[] = INCBIN_U8("graphics/pokemon/iron_valiant/footprint.1bpp"); + const u8 gMonFootprint_IronValiant[] = INCBIN_U8("graphics/pokemon/iron_valiant/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_VALIANT @@ -12853,7 +12862,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Koraidon[] = INCBIN_U32("graphics/pokemon/koraidon/shiny.gbapal.lz"); const u8 gMonIcon_Koraidon[] = INCBIN_U8("graphics/pokemon/koraidon/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Koraidon[] = INCBIN_U8("graphics/pokemon/koraidon/footprint.1bpp"); + const u8 gMonFootprint_Koraidon[] = INCBIN_U8("graphics/pokemon/koraidon/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_KORAIDON @@ -12864,7 +12873,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Miraidon[] = INCBIN_U32("graphics/pokemon/miraidon/shiny.gbapal.lz"); const u8 gMonIcon_Miraidon[] = INCBIN_U8("graphics/pokemon/miraidon/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Miraidon[] = INCBIN_U8("graphics/pokemon/miraidon/footprint.1bpp"); + const u8 gMonFootprint_Miraidon[] = INCBIN_U8("graphics/pokemon/miraidon/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_MIRAIDON @@ -12875,7 +12884,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_WalkingWake[] = INCBIN_U32("graphics/pokemon/walking_wake/shiny.gbapal.lz"); const u8 gMonIcon_WalkingWake[] = INCBIN_U8("graphics/pokemon/walking_wake/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_WalkingWake[] = INCBIN_U8("graphics/pokemon/walking_wake/footprint.1bpp"); + const u8 gMonFootprint_WalkingWake[] = INCBIN_U8("graphics/pokemon/walking_wake/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_WALKING_WAKE @@ -12886,7 +12895,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_IronLeaves[] = INCBIN_U32("graphics/pokemon/iron_leaves/shiny.gbapal.lz"); const u8 gMonIcon_IronLeaves[] = INCBIN_U8("graphics/pokemon/iron_leaves/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_IronLeaves[] = INCBIN_U8("graphics/pokemon/iron_leaves/footprint.1bpp"); + const u8 gMonFootprint_IronLeaves[] = INCBIN_U8("graphics/pokemon/iron_leaves/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_LEAVES @@ -12897,7 +12906,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Poltchageist[] = INCBIN_U32("graphics/pokemon/poltchageist/shiny.gbapal.lz"); const u8 gMonIcon_Poltchageist[] = INCBIN_U8("graphics/pokemon/poltchageist/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Poltchageist[] = INCBIN_U8("graphics/pokemon/poltchageist/footprint.1bpp"); + const u8 gMonFootprint_Poltchageist[] = INCBIN_U8("graphics/pokemon/poltchageist/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/front.4bpp.lz"); @@ -12906,7 +12915,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/shiny.gbapal.lz"); const u8 gMonIcon_Sinistcha[] = INCBIN_U8("graphics/pokemon/sinistcha/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Sinistcha[] = INCBIN_U8("graphics/pokemon/sinistcha/footprint.1bpp"); + const u8 gMonFootprint_Sinistcha[] = INCBIN_U8("graphics/pokemon/sinistcha/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_POLTCHAGEIST @@ -12917,7 +12926,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Okidogi[] = INCBIN_U32("graphics/pokemon/okidogi/shiny.gbapal.lz"); const u8 gMonIcon_Okidogi[] = INCBIN_U8("graphics/pokemon/okidogi/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Okidogi[] = INCBIN_U8("graphics/pokemon/okidogi/footprint.1bpp"); + const u8 gMonFootprint_Okidogi[] = INCBIN_U8("graphics/pokemon/okidogi/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_OKIDOGI @@ -12928,7 +12937,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Munkidori[] = INCBIN_U32("graphics/pokemon/munkidori/shiny.gbapal.lz"); const u8 gMonIcon_Munkidori[] = INCBIN_U8("graphics/pokemon/munkidori/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Munkidori[] = INCBIN_U8("graphics/pokemon/munkidori/footprint.1bpp"); + const u8 gMonFootprint_Munkidori[] = INCBIN_U8("graphics/pokemon/munkidori/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_MUNKIDORI @@ -12939,7 +12948,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Fezandipiti[] = INCBIN_U32("graphics/pokemon/fezandipiti/shiny.gbapal.lz"); const u8 gMonIcon_Fezandipiti[] = INCBIN_U8("graphics/pokemon/fezandipiti/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Fezandipiti[] = INCBIN_U8("graphics/pokemon/fezandipiti/footprint.1bpp"); + const u8 gMonFootprint_Fezandipiti[] = INCBIN_U8("graphics/pokemon/fezandipiti/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_FEZANDIPITI @@ -12950,7 +12959,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_OgerponTealMask[] = INCBIN_U32("graphics/pokemon/ogerpon/shiny.gbapal.lz"); const u8 gMonIcon_OgerponTealMask[] = INCBIN_U8("graphics/pokemon/ogerpon/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Ogerpon[] = INCBIN_U8("graphics/pokemon/ogerpon/footprint.1bpp"); + const u8 gMonFootprint_Ogerpon[] = INCBIN_U8("graphics/pokemon/ogerpon/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_OgerponWellspringMask[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/front.4bpp.lz"); @@ -12999,7 +13008,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/shiny.gbapal.lz"); const u8 gMonIcon_GougingFire[] = INCBIN_U8("graphics/pokemon/gouging_fire/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_GougingFire[] = INCBIN_U8("graphics/pokemon/gouging_fire/footprint.1bpp"); + const u8 gMonFootprint_GougingFire[] = INCBIN_U8("graphics/pokemon/gouging_fire/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_GOUGING_FIRE @@ -13010,7 +13019,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/shiny.gbapal.lz"); const u8 gMonIcon_RagingBolt[] = INCBIN_U8("graphics/pokemon/raging_bolt/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_RagingBolt[] = INCBIN_U8("graphics/pokemon/raging_bolt/footprint.1bpp"); + const u8 gMonFootprint_RagingBolt[] = INCBIN_U8("graphics/pokemon/raging_bolt/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_RAGING_BOLT @@ -13021,7 +13030,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/shiny.gbapal.lz"); const u8 gMonIcon_IronBoulder[] = INCBIN_U8("graphics/pokemon/iron_boulder/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_IronBoulder[] = INCBIN_U8("graphics/pokemon/iron_boulder/footprint.1bpp"); + const u8 gMonFootprint_IronBoulder[] = INCBIN_U8("graphics/pokemon/iron_boulder/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_BOULDER @@ -13032,7 +13041,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/shiny.gbapal.lz"); const u8 gMonIcon_IronCrown[] = INCBIN_U8("graphics/pokemon/iron_crown/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_IronCrown[] = INCBIN_U8("graphics/pokemon/iron_crown/footprint.1bpp"); + const u8 gMonFootprint_IronCrown[] = INCBIN_U8("graphics/pokemon/iron_crown/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_CROWN @@ -13043,7 +13052,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar // const u32 gMonShinyPalette_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/shiny.gbapal.lz"); const u8 gMonIcon_TerapagosNormal[] = INCBIN_U8("graphics/pokemon/terapagos/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Terapagos[] = INCBIN_U8("graphics/pokemon/terapagos/footprint.1bpp"); + const u8 gMonFootprint_TerapagosNormal[] = INCBIN_U8("graphics/pokemon/terapagos/footprint.1bpp"); #endif //P_FOOTPRINTS // const u32 gMonFrontPic_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/front.4bpp.lz"); @@ -13051,12 +13060,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar // const u32 gMonBackPic_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/back.4bpp.lz"); // const u32 gMonShinyPalette_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/shiny.gbapal.lz"); const u8 gMonIcon_TerapagosTerastal[] = INCBIN_U8("graphics/pokemon/terapagos/terastal/icon.4bpp"); +#if P_FOOTPRINTS + const u8 gMonFootprint_TerapagosTerastal[] = INCBIN_U8("graphics/pokemon/terapagos/terastal/footprint.1bpp"); +#endif //P_FOOTPRINTS // const u32 gMonFrontPic_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/front.4bpp.lz"); // const u32 gMonPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/normal.gbapal.lz"); // const u32 gMonBackPic_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/back.4bpp.lz"); // const u32 gMonShinyPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/shiny.gbapal.lz"); const u8 gMonIcon_TerapagosStellar[] = INCBIN_U8("graphics/pokemon/terapagos/stellar/icon.4bpp"); +#if P_FOOTPRINTS + const u8 gMonFootprint_TerapagosStellar[] = INCBIN_U8("graphics/pokemon/terapagos/stellar/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TERAPAGOS #if P_FAMILY_PECHARUNT @@ -13066,7 +13081,7 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/shiny.gbapal.lz"); const u8 gMonIcon_Pecharunt[] = INCBIN_U8("graphics/pokemon/pecharunt/icon.4bpp"); #if P_FOOTPRINTS - // const u8 gMonFootprint_Pecharunt[] = INCBIN_U8("graphics/pokemon/pecharunt/footprint.1bpp"); + const u8 gMonFootprint_Pecharunt[] = INCBIN_U8("graphics/pokemon/pecharunt/footprint.1bpp"); #endif //P_FOOTPRINTS #endif //P_FAMILY_PECHARUNT diff --git a/src/data/item_icon_table.h b/src/data/item_icon_table.h index 8b13789179..e69de29bb2 100644 --- a/src/data/item_icon_table.h +++ b/src/data/item_icon_table.h @@ -1 +0,0 @@ - diff --git a/src/data/items.h b/src/data/items.h index 6acc3b8abb..24a884a0dd 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -13848,8 +13848,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .iconPic = gItemIcon_QuestionMark, - .iconPalette = gItemIconPalette_QuestionMark, + .iconPic = gItemIcon_StellarTeraShard, + .iconPalette = gItemIconPalette_StellarTeraShard, }, [ITEM_JUBILIFE_MUFFIN] = diff --git a/src/data/moves_info.h b/src/data/moves_info.h index 8d54839f25..3d2f009659 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -12504,7 +12504,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Stomps down on the ground.\n" "Lowers Speed."), - .effect = EFFECT_BULLDOZE, + .effect = EFFECT_EARTHQUAKE, .power = 60, .type = TYPE_GROUND, .accuracy = 100, diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index 996b3ef27b..0ef6018fbb 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -59,6 +59,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .shinyPalette = gMonShinyPalette_CircledQuestionMark, .iconSprite = gMonIcon_QuestionMark, .iconPalIndex = 0, + FOOTPRINT(QuestionMark) .levelUpLearnset = sNoneLevelUpLearnset, .teachableLearnset = sNoneTeachableLearnset, .eggMoveLearnset = sNoneEggMoveLearnset, @@ -148,7 +149,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .iconPalIndex = 0, //.iconSpriteFemale = gMonIcon_QuestionMarkF, //.iconPalIndexFemale = 1, - //FOOTPRINT(None) + FOOTPRINT(QuestionMark) .levelUpLearnset = sNoneLevelUpLearnset, .teachableLearnset = sNoneTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 100, SPECIES_NONE}, diff --git a/src/data/pokemon/species_info/gen_1_families.h b/src/data/pokemon/species_info/gen_1_families.h index e3985f7712..c04720aa0a 100644 --- a/src/data/pokemon/species_info/gen_1_families.h +++ b/src/data/pokemon/species_info/gen_1_families.h @@ -6008,7 +6008,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Annihilape, .iconSprite = gMonIcon_Annihilape, .iconPalIndex = 0, - //FOOTPRINT(Annihilape) + FOOTPRINT(Annihilape) .levelUpLearnset = sAnnihilapeLevelUpLearnset, .teachableLearnset = sAnnihilapeTeachableLearnset, }, @@ -9278,9 +9278,9 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_UPDATED_ABILITIES >= GEN_7 -#define GENGAR_ABILITIES {ABILITY_CURSED_BODY, ABILITY_NONE} +#define GENGAR_ABILITIES {ABILITY_CURSED_BODY, ABILITY_NONE, ABILITY_NONE} #else -#define GENGAR_ABILITIES {ABILITY_LEVITATE, ABILITY_NONE} +#define GENGAR_ABILITIES {ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE} #endif [SPECIES_GENGAR] = @@ -12494,7 +12494,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Kleavor, .iconSprite = gMonIcon_Kleavor, .iconPalIndex = 2, - //FOOTPRINT(Kleavor) + FOOTPRINT(Kleavor) .levelUpLearnset = sKleavorLevelUpLearnset, .teachableLearnset = sKleavorTeachableLearnset, }, @@ -15748,4 +15748,4 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #ifdef __INTELLISENSE__ }; -#endif \ No newline at end of file +#endif diff --git a/src/data/pokemon/species_info/gen_2_families.h b/src/data/pokemon/species_info/gen_2_families.h index 77594bbca9..e58b31f09d 100644 --- a/src/data/pokemon/species_info/gen_2_families.h +++ b/src/data/pokemon/species_info/gen_2_families.h @@ -2688,7 +2688,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Clodsire, .iconSprite = gMonIcon_Clodsire, .iconPalIndex = 0, - //FOOTPRINT(Clodsire) + FOOTPRINT(Clodsire) .levelUpLearnset = sClodsireLevelUpLearnset, .teachableLearnset = sClodsireTeachableLearnset, }, @@ -3235,7 +3235,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Farigiraf, .iconSprite = gMonIcon_Farigiraf, .iconPalIndex = 0, - //FOOTPRINT(Farigiraf) + FOOTPRINT(Farigiraf) .levelUpLearnset = sFarigirafLevelUpLearnset, .teachableLearnset = sFarigirafTeachableLearnset, }, @@ -3461,7 +3461,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Dudunsparce, .iconSprite = gMonIcon_Dudunsparce, .iconPalIndex = 0, - //FOOTPRINT(Dudunsparce), + FOOTPRINT(Dudunsparce) .levelUpLearnset = sDudunsparceLevelUpLearnset, .teachableLearnset = sDudunsparceTeachableLearnset, .formSpeciesIdTable = sDudunsparceFormSpeciesIdTable, @@ -3514,7 +3514,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Dudunsparce, .iconSprite = gMonIcon_Dudunsparce, .iconPalIndex = 0, - //FOOTPRINT(Dudunsparce), + FOOTPRINT(Dudunsparce) .levelUpLearnset = sDudunsparceLevelUpLearnset, .teachableLearnset = sDudunsparceTeachableLearnset, .formSpeciesIdTable = sDudunsparceFormSpeciesIdTable, @@ -3926,7 +3926,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Overqwil, .iconSprite = gMonIcon_Overqwil, .iconPalIndex = 2, - //FOOTPRINT(Overqwil) + FOOTPRINT(Overqwil) .levelUpLearnset = sOverqwilLevelUpLearnset, .teachableLearnset = sOverqwilTeachableLearnset, }, @@ -4343,7 +4343,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Sneasler, .iconSprite = gMonIcon_Sneasler, .iconPalIndex = 2, - //FOOTPRINT(Sneasler) + FOOTPRINT(Sneasler) .levelUpLearnset = sSneaslerLevelUpLearnset, .teachableLearnset = sSneaslerTeachableLearnset, }, @@ -4511,7 +4511,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Ursaluna, .iconSprite = gMonIcon_Ursaluna, .iconPalIndex = 2, - //FOOTPRINT(Ursaluna) + FOOTPRINT(Ursaluna) .levelUpLearnset = sUrsalunaLevelUpLearnset, .teachableLearnset = sUrsalunaTeachableLearnset, .formSpeciesIdTable = sUrsalunaFormSpeciesIdTable, @@ -4564,7 +4564,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_UrsalunaBloodmoon, .iconSprite = gMonIcon_UrsalunaBloodmoon, .iconPalIndex = 2, - //FOOTPRINT(UrsalunaBloodmoon) + FOOTPRINT(Ursaluna) .levelUpLearnset = sUrsalunaBloodmoonLevelUpLearnset, .teachableLearnset = sUrsalunaBloodmoonTeachableLearnset, .formSpeciesIdTable = sUrsalunaFormSpeciesIdTable, @@ -5771,7 +5771,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Wyrdeer, .iconSprite = gMonIcon_Wyrdeer, .iconPalIndex = 2, - //FOOTPRINT(Wyrdeer) + FOOTPRINT(Wyrdeer) .levelUpLearnset = sWyrdeerLevelUpLearnset, .teachableLearnset = sWyrdeerTeachableLearnset, }, diff --git a/src/data/pokemon/species_info/gen_3_families.h b/src/data/pokemon/species_info/gen_3_families.h index 1422962421..6464a01c1a 100644 --- a/src/data/pokemon/species_info/gen_3_families.h +++ b/src/data/pokemon/species_info/gen_3_families.h @@ -10014,4 +10014,4 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = #ifdef __INTELLISENSE__ }; -#endif \ No newline at end of file +#endif diff --git a/src/data/pokemon/species_info/gen_4_families.h b/src/data/pokemon/species_info/gen_4_families.h index 4ee194947e..621dea5a9e 100644 --- a/src/data/pokemon/species_info/gen_4_families.h +++ b/src/data/pokemon/species_info/gen_4_families.h @@ -5177,7 +5177,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_GiratinaAltered, .iconSprite = gMonIcon_GiratinaAltered, .iconPalIndex = 0, - FOOTPRINT(Giratina) + FOOTPRINT(GiratinaAltered) .isLegendary = TRUE, .isFrontierBanned = TRUE, .levelUpLearnset = sGiratinaLevelUpLearnset, @@ -5234,7 +5234,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_GiratinaOrigin, .iconSprite = gMonIcon_GiratinaOrigin, .iconPalIndex = 0, - FOOTPRINT(Giratina) + FOOTPRINT(GiratinaOrigin) .isLegendary = TRUE, .isFrontierBanned = TRUE, .levelUpLearnset = sGiratinaLevelUpLearnset, diff --git a/src/data/pokemon/species_info/gen_5_families.h b/src/data/pokemon/species_info/gen_5_families.h index 5a308b0f7d..81144e1e68 100644 --- a/src/data/pokemon/species_info/gen_5_families.h +++ b/src/data/pokemon/species_info/gen_5_families.h @@ -3517,7 +3517,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_BasculegionMale, .iconSprite = gMonIcon_BasculegionMale, .iconPalIndex = 1, - //FOOTPRINT(Basculegion), + FOOTPRINT(Basculegion) .levelUpLearnset = sBasculegionLevelUpLearnset, .teachableLearnset = sBasculegionTeachableLearnset, .formSpeciesIdTable = sBasculegionFormSpeciesIdTable, @@ -3570,7 +3570,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_BasculegionFemale, .iconSprite = gMonIcon_BasculegionFemale, .iconPalIndex = 0, - //FOOTPRINT(Basculegion), + FOOTPRINT(Basculegion) .levelUpLearnset = sBasculegionLevelUpLearnset, .teachableLearnset = sBasculegionTeachableLearnset, .formSpeciesIdTable = sBasculegionFormSpeciesIdTable, @@ -8657,7 +8657,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Kingambit, .iconSprite = gMonIcon_Kingambit, .iconPalIndex = 0, - //FOOTPRINT(Kingambit) + FOOTPRINT(Kingambit) .levelUpLearnset = sKingambitLevelUpLearnset, .teachableLearnset = sKingambitTeachableLearnset, }, diff --git a/src/data/pokemon/species_info/gen_8_families.h b/src/data/pokemon/species_info/gen_8_families.h index 128f70bcff..21722ecbbd 100644 --- a/src/data/pokemon/species_info/gen_8_families.h +++ b/src/data/pokemon/species_info/gen_8_families.h @@ -2355,7 +2355,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Dipplin, .iconSprite = gMonIcon_Dipplin, .iconPalIndex = 1, - //FOOTPRINT(Dipplin) + FOOTPRINT(Dipplin) .levelUpLearnset = sDipplinLevelUpLearnset, .teachableLearnset = sDipplinTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_DRAGON_CHEER, SPECIES_HYDRAPPLE}), @@ -2408,7 +2408,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Hydrapple, .iconSprite = gMonIcon_Hydrapple, .iconPalIndex = 5, - //FOOTPRINT(Hydrapple) + FOOTPRINT(Hydrapple) .levelUpLearnset = sHydrappleLevelUpLearnset, .teachableLearnset = sHydrappleTeachableLearnset, }, @@ -5425,7 +5425,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Archaludon, .iconSprite = gMonIcon_Archaludon, .iconPalIndex = 0, - //FOOTPRINT(Archaludon) + FOOTPRINT(Archaludon) .levelUpLearnset = sArchaludonLevelUpLearnset, .teachableLearnset = sArchaludonTeachableLearnset, }, @@ -6771,7 +6771,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_EnamorusIncarnate, .iconSprite = gMonIcon_EnamorusIncarnate, .iconPalIndex = 1, - //FOOTPRINT(EnamorusIncarnate) + FOOTPRINT(Enamorus) .isLegendary = TRUE, .levelUpLearnset = sEnamorusLevelUpLearnset, .teachableLearnset = sEnamorusTeachableLearnset, @@ -6825,7 +6825,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_EnamorusTherian, .iconSprite = gMonIcon_EnamorusTherian, .iconPalIndex = 1, - //FOOTPRINT(Enamorus) + FOOTPRINT(Enamorus) .isLegendary = TRUE, .levelUpLearnset = sEnamorusLevelUpLearnset, .teachableLearnset = sEnamorusTeachableLearnset, diff --git a/src/data/pokemon/species_info/gen_9_families.h b/src/data/pokemon/species_info/gen_9_families.h index e9bddf90c6..538a121725 100644 --- a/src/data/pokemon/species_info/gen_9_families.h +++ b/src/data/pokemon/species_info/gen_9_families.h @@ -51,7 +51,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Sprigatito, .iconSprite = gMonIcon_Sprigatito, .iconPalIndex = 1, - //FOOTPRINT(Sprigatito) + FOOTPRINT(Sprigatito) .levelUpLearnset = sSprigatitoLevelUpLearnset, .teachableLearnset = sSprigatitoTeachableLearnset, .eggMoveLearnset = sSprigatitoEggMoveLearnset, @@ -105,7 +105,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Floragato, .iconSprite = gMonIcon_Floragato, .iconPalIndex = 1, - //FOOTPRINT(Floragato) + FOOTPRINT(Floragato) .levelUpLearnset = sFloragatoLevelUpLearnset, .teachableLearnset = sFloragatoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_MEOWSCARADA}), @@ -158,7 +158,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Meowscarada, .iconSprite = gMonIcon_Meowscarada, .iconPalIndex = 1, - //FOOTPRINT(Meowscarada) + FOOTPRINT(Meowscarada) .levelUpLearnset = sMeowscaradaLevelUpLearnset, .teachableLearnset = sMeowscaradaTeachableLearnset, }, @@ -212,7 +212,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Fuecoco, .iconSprite = gMonIcon_Fuecoco, .iconPalIndex = 2, - //FOOTPRINT(Fuecoco) + FOOTPRINT(Fuecoco) .levelUpLearnset = sFuecocoLevelUpLearnset, .teachableLearnset = sFuecocoTeachableLearnset, .eggMoveLearnset = sFuecocoEggMoveLearnset, @@ -266,7 +266,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Crocalor, .iconSprite = gMonIcon_Crocalor, .iconPalIndex = 0, - //FOOTPRINT(Crocalor) + FOOTPRINT(Crocalor) .levelUpLearnset = sCrocalorLevelUpLearnset, .teachableLearnset = sCrocalorTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SKELEDIRGE}), @@ -319,7 +319,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Skeledirge, .iconSprite = gMonIcon_Skeledirge, .iconPalIndex = 0, - //FOOTPRINT(Skeledirge) + FOOTPRINT(Skeledirge) .levelUpLearnset = sSkeledirgeLevelUpLearnset, .teachableLearnset = sSkeledirgeTeachableLearnset, }, @@ -373,7 +373,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Quaxly, .iconSprite = gMonIcon_Quaxly, .iconPalIndex = 0, - //FOOTPRINT(Quaxly) + FOOTPRINT(Quaxly) .levelUpLearnset = sQuaxlyLevelUpLearnset, .teachableLearnset = sQuaxlyTeachableLearnset, .eggMoveLearnset = sQuaxlyEggMoveLearnset, @@ -427,7 +427,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Quaxwell, .iconSprite = gMonIcon_Quaxwell, .iconPalIndex = 0, - //FOOTPRINT(Quaxwell) + FOOTPRINT(Quaxwell) .levelUpLearnset = sQuaxwellLevelUpLearnset, .teachableLearnset = sQuaxwellTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_QUAQUAVAL}), @@ -480,7 +480,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Quaquaval, .iconSprite = gMonIcon_Quaquaval, .iconPalIndex = 0, - //FOOTPRINT(Quaquaval) + FOOTPRINT(Quaquaval) .levelUpLearnset = sQuaquavalLevelUpLearnset, .teachableLearnset = sQuaquavalTeachableLearnset, }, @@ -534,7 +534,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Lechonk, .iconSprite = gMonIcon_Lechonk, .iconPalIndex = 1, - //FOOTPRINT(Lechonk) + FOOTPRINT(Lechonk) .levelUpLearnset = sLechonkLevelUpLearnset, .teachableLearnset = sLechonkTeachableLearnset, .eggMoveLearnset = sLechonkEggMoveLearnset, @@ -588,7 +588,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_OinkologneMale, .iconSprite = gMonIcon_OinkologneMale, .iconPalIndex = 1, - //FOOTPRINT(Oinkologne) + FOOTPRINT(Oinkologne) .levelUpLearnset = sOinkologneMaleLevelUpLearnset, .teachableLearnset = sOinkologneTeachableLearnset, .formSpeciesIdTable = sOinkologneFormSpeciesIdTable, @@ -641,7 +641,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_OinkologneFemale, .iconSprite = gMonIcon_OinkologneFemale, .iconPalIndex = 0, - //FOOTPRINT(Oinkologne) + FOOTPRINT(Oinkologne) .levelUpLearnset = sOinkologneFemaleLevelUpLearnset, .teachableLearnset = sOinkologneTeachableLearnset, .formSpeciesIdTable = sOinkologneFormSpeciesIdTable, @@ -696,7 +696,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Tarountula, .iconSprite = gMonIcon_Tarountula, .iconPalIndex = 1, - //FOOTPRINT(Tarountula) + FOOTPRINT(Tarountula) .levelUpLearnset = sTarountulaLevelUpLearnset, .teachableLearnset = sTarountulaTeachableLearnset, .eggMoveLearnset = sTarountulaEggMoveLearnset, @@ -750,7 +750,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Spidops, .iconSprite = gMonIcon_Spidops, .iconPalIndex = 1, - //FOOTPRINT(Spidops) + FOOTPRINT(Spidops) .levelUpLearnset = sSpidopsLevelUpLearnset, .teachableLearnset = sSpidopsTeachableLearnset, }, @@ -804,7 +804,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Nymble, .iconSprite = gMonIcon_Nymble, .iconPalIndex = 0, - //FOOTPRINT(Nymble) + FOOTPRINT(Nymble) .levelUpLearnset = sNymbleLevelUpLearnset, .teachableLearnset = sNymbleTeachableLearnset, .eggMoveLearnset = sNymbleEggMoveLearnset, @@ -858,7 +858,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Lokix, .iconSprite = gMonIcon_Lokix, .iconPalIndex = 0, - //FOOTPRINT(Lokix) + FOOTPRINT(Lokix) .levelUpLearnset = sLokixLevelUpLearnset, .teachableLearnset = sLokixTeachableLearnset, }, @@ -912,7 +912,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Pawmi, .iconSprite = gMonIcon_Pawmi, .iconPalIndex = 0, - //FOOTPRINT(Pawmi) + FOOTPRINT(Pawmi) .levelUpLearnset = sPawmiLevelUpLearnset, .teachableLearnset = sPawmiTeachableLearnset, .eggMoveLearnset = sPawmiEggMoveLearnset, @@ -966,7 +966,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Pawmo, .iconSprite = gMonIcon_Pawmo, .iconPalIndex = 0, - //FOOTPRINT(Pawmo) + FOOTPRINT(Pawmo) .levelUpLearnset = sPawmoLevelUpLearnset, .teachableLearnset = sPawmoTeachableLearnset, .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_PAWMOT}), @@ -1019,7 +1019,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Pawmot, .iconSprite = gMonIcon_Pawmot, .iconPalIndex = 0, - //FOOTPRINT(Pawmot) + FOOTPRINT(Pawmot) .levelUpLearnset = sPawmotLevelUpLearnset, .teachableLearnset = sPawmotTeachableLearnset, }, @@ -1073,7 +1073,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Tandemaus, .iconSprite = gMonIcon_Tandemaus, .iconPalIndex = 1, - //FOOTPRINT(Tandemaus) + FOOTPRINT(Tandemaus) .levelUpLearnset = sTandemausLevelUpLearnset, .teachableLearnset = sTandemausTeachableLearnset, .eggMoveLearnset = sTandemausEggMoveLearnset, @@ -1128,7 +1128,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Maushold, .iconSprite = gMonIcon_MausholdFamilyOfThree, .iconPalIndex = 1, - /*FOOTPRINT(Maushold)*/ + FOOTPRINT(MausholdFamilyOfThree) .levelUpLearnset = sMausholdLevelUpLearnset, .teachableLearnset = sMausholdTeachableLearnset, .formSpeciesIdTable = sMausholdFormSpeciesIdTable, @@ -1180,7 +1180,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Maushold, .iconSprite = gMonIcon_MausholdFamilyOfFour, .iconPalIndex = 1, - /*FOOTPRINT(Maushold)*/ + FOOTPRINT(MausholdFamilyOfFour) .levelUpLearnset = sMausholdLevelUpLearnset, .teachableLearnset = sMausholdTeachableLearnset, .formSpeciesIdTable = sMausholdFormSpeciesIdTable, @@ -1235,7 +1235,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Fidough, .iconSprite = gMonIcon_Fidough, .iconPalIndex = 1, - //FOOTPRINT(Fidough) + FOOTPRINT(Fidough) .levelUpLearnset = sFidoughLevelUpLearnset, .teachableLearnset = sFidoughTeachableLearnset, .eggMoveLearnset = sFidoughEggMoveLearnset, @@ -1289,7 +1289,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Dachsbun, .iconSprite = gMonIcon_Dachsbun, .iconPalIndex = 0, - //FOOTPRINT(Dachsbun) + FOOTPRINT(Dachsbun) .levelUpLearnset = sDachsbunLevelUpLearnset, .teachableLearnset = sDachsbunTeachableLearnset, }, @@ -1343,7 +1343,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Smoliv, .iconSprite = gMonIcon_Smoliv, .iconPalIndex = 1, - //FOOTPRINT(Smoliv) + FOOTPRINT(Smoliv) .levelUpLearnset = sSmolivLevelUpLearnset, .teachableLearnset = sSmolivTeachableLearnset, .eggMoveLearnset = sSmolivEggMoveLearnset, @@ -1397,7 +1397,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Dolliv, .iconSprite = gMonIcon_Dolliv, .iconPalIndex = 1, - //FOOTPRINT(Dolliv) + FOOTPRINT(Dolliv) .levelUpLearnset = sDollivLevelUpLearnset, .teachableLearnset = sDollivTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ARBOLIVA}), @@ -1450,7 +1450,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Arboliva, .iconSprite = gMonIcon_Arboliva, .iconPalIndex = 1, - //FOOTPRINT(Arboliva) + FOOTPRINT(Arboliva) .levelUpLearnset = sArbolivaLevelUpLearnset, .teachableLearnset = sArbolivaTeachableLearnset, }, @@ -1504,7 +1504,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_SquawkabillyGreenPlumage, .iconSprite = gMonIcon_SquawkabillyGreenPlumage, .iconPalIndex = 1, - /*FOOTPRINT(Squawkabilly)*/ + FOOTPRINT(Squawkabilly) .levelUpLearnset = sSquawkabillyLevelUpLearnset, .teachableLearnset = sSquawkabillyTeachableLearnset, .eggMoveLearnset = sSquawkabillyEggMoveLearnset, @@ -1558,7 +1558,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_SquawkabillyBluePlumage, .iconSprite = gMonIcon_SquawkabillyBluePlumage, .iconPalIndex = 0, - /*FOOTPRINT(Squawkabilly)*/ + FOOTPRINT(Squawkabilly) .levelUpLearnset = sSquawkabillyLevelUpLearnset, .teachableLearnset = sSquawkabillyTeachableLearnset, .eggMoveLearnset = sSquawkabillyEggMoveLearnset, @@ -1612,7 +1612,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_SquawkabillyYellowPlumage, .iconSprite = gMonIcon_SquawkabillyYellowPlumage, .iconPalIndex = 1, - /*FOOTPRINT(Squawkabilly)*/ + FOOTPRINT(Squawkabilly) .levelUpLearnset = sSquawkabillyLevelUpLearnset, .teachableLearnset = sSquawkabillyTeachableLearnset, .eggMoveLearnset = sSquawkabillyEggMoveLearnset, @@ -1666,7 +1666,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_SquawkabillyWhitePlumage, .iconSprite = gMonIcon_SquawkabillyWhitePlumage, .iconPalIndex = 0, - /*FOOTPRINT(Squawkabilly)*/ + FOOTPRINT(Squawkabilly) .levelUpLearnset = sSquawkabillyLevelUpLearnset, .teachableLearnset = sSquawkabillyTeachableLearnset, .eggMoveLearnset = sSquawkabillyEggMoveLearnset, @@ -1722,7 +1722,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Nacli, .iconSprite = gMonIcon_Nacli, .iconPalIndex = 2, - //FOOTPRINT(Nacli) + FOOTPRINT(Nacli) .levelUpLearnset = sNacliLevelUpLearnset, .teachableLearnset = sNacliTeachableLearnset, .eggMoveLearnset = sNacliEggMoveLearnset, @@ -1776,7 +1776,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Naclstack, .iconSprite = gMonIcon_Naclstack, .iconPalIndex = 2, - //FOOTPRINT(Naclstack) + FOOTPRINT(Naclstack) .levelUpLearnset = sNaclstackLevelUpLearnset, .teachableLearnset = sNaclstackTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_GARGANACL}), @@ -1829,7 +1829,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Garganacl, .iconSprite = gMonIcon_Garganacl, .iconPalIndex = 2, - //FOOTPRINT(Garganacl) + FOOTPRINT(Garganacl) .levelUpLearnset = sGarganaclLevelUpLearnset, .teachableLearnset = sGarganaclTeachableLearnset, }, @@ -1883,7 +1883,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Charcadet, .iconSprite = gMonIcon_Charcadet, .iconPalIndex = 0, - //FOOTPRINT(Charcadet) + FOOTPRINT(Charcadet) .levelUpLearnset = sCharcadetLevelUpLearnset, .teachableLearnset = sCharcadetTeachableLearnset, .eggMoveLearnset = sCharcadetEggMoveLearnset, @@ -1938,7 +1938,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Armarouge, .iconSprite = gMonIcon_Armarouge, .iconPalIndex = 0, - //FOOTPRINT(Armarouge) + FOOTPRINT(Armarouge) .levelUpLearnset = sArmarougeLevelUpLearnset, .teachableLearnset = sArmarougeTeachableLearnset, }, @@ -1990,7 +1990,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Ceruledge, .iconSprite = gMonIcon_Ceruledge, .iconPalIndex = 2, - //FOOTPRINT(Ceruledge) + FOOTPRINT(Ceruledge) .levelUpLearnset = sCeruledgeLevelUpLearnset, .teachableLearnset = sCeruledgeTeachableLearnset, }, @@ -2045,7 +2045,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Tadbulb, .iconSprite = gMonIcon_Tadbulb, .iconPalIndex = 0, - //FOOTPRINT(Tadbulb) + FOOTPRINT(Tadbulb) .levelUpLearnset = sTadbulbLevelUpLearnset, .teachableLearnset = sTadbulbTeachableLearnset, .eggMoveLearnset = sTadbulbEggMoveLearnset, @@ -2099,7 +2099,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Bellibolt, .iconSprite = gMonIcon_Bellibolt, .iconPalIndex = 0, - //FOOTPRINT(Bellibolt) + FOOTPRINT(Bellibolt) .levelUpLearnset = sBelliboltLevelUpLearnset, .teachableLearnset = sBelliboltTeachableLearnset, }, @@ -2153,7 +2153,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Wattrel, .iconSprite = gMonIcon_Wattrel, .iconPalIndex = 0, - //FOOTPRINT(Wattrel) + FOOTPRINT(Wattrel) .levelUpLearnset = sWattrelLevelUpLearnset, .teachableLearnset = sWattrelTeachableLearnset, .eggMoveLearnset = sWattrelEggMoveLearnset, @@ -2207,7 +2207,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Kilowattrel, .iconSprite = gMonIcon_Kilowattrel, .iconPalIndex = 0, - //FOOTPRINT(Kilowattrel) + FOOTPRINT(Kilowattrel) .levelUpLearnset = sKilowattrelLevelUpLearnset, .teachableLearnset = sKilowattrelTeachableLearnset, }, @@ -2261,7 +2261,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Maschiff, .iconSprite = gMonIcon_Maschiff, .iconPalIndex = 0, - //FOOTPRINT(Maschiff) + FOOTPRINT(Maschiff) .levelUpLearnset = sMaschiffLevelUpLearnset, .teachableLearnset = sMaschiffTeachableLearnset, .eggMoveLearnset = sMaschiffEggMoveLearnset, @@ -2315,7 +2315,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Mabosstiff, .iconSprite = gMonIcon_Mabosstiff, .iconPalIndex = 0, - //FOOTPRINT(Mabosstiff) + FOOTPRINT(Mabosstiff) .levelUpLearnset = sMabosstiffLevelUpLearnset, .teachableLearnset = sMabosstiffTeachableLearnset, }, @@ -2369,7 +2369,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Shroodle, .iconSprite = gMonIcon_Shroodle, .iconPalIndex = 0, - //FOOTPRINT(Shroodle) + FOOTPRINT(Shroodle) .levelUpLearnset = sShroodleLevelUpLearnset, .teachableLearnset = sShroodleTeachableLearnset, .eggMoveLearnset = sShroodleEggMoveLearnset, @@ -2423,7 +2423,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Grafaiai, .iconSprite = gMonIcon_Grafaiai, .iconPalIndex = 0, - //FOOTPRINT(Grafaiai) + FOOTPRINT(Grafaiai) .levelUpLearnset = sGrafaiaiLevelUpLearnset, .teachableLearnset = sGrafaiaiTeachableLearnset, }, @@ -2477,7 +2477,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Bramblin, .iconSprite = gMonIcon_Bramblin, .iconPalIndex = 1, - //FOOTPRINT(Bramblin) + FOOTPRINT(Bramblin) .levelUpLearnset = sBramblinLevelUpLearnset, .teachableLearnset = sBramblinTeachableLearnset, .eggMoveLearnset = sBramblinEggMoveLearnset, @@ -2531,7 +2531,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Brambleghast, .iconSprite = gMonIcon_Brambleghast, .iconPalIndex = 2, - //FOOTPRINT(Brambleghast) + FOOTPRINT(Brambleghast) .levelUpLearnset = sBrambleghastLevelUpLearnset, .teachableLearnset = sBrambleghastTeachableLearnset, }, @@ -2585,7 +2585,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Toedscool, .iconSprite = gMonIcon_Toedscool, .iconPalIndex = 0, - //FOOTPRINT(Toedscool) + FOOTPRINT(Toedscool) .levelUpLearnset = sToedscoolLevelUpLearnset, .teachableLearnset = sToedscoolTeachableLearnset, .eggMoveLearnset = sToedscoolEggMoveLearnset, @@ -2639,7 +2639,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Toedscruel, .iconSprite = gMonIcon_Toedscruel, .iconPalIndex = 0, - //FOOTPRINT(Toedscruel) + FOOTPRINT(Toedscruel) .levelUpLearnset = sToedscruelLevelUpLearnset, .teachableLearnset = sToedscruelTeachableLearnset, }, @@ -2693,7 +2693,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Klawf, .iconSprite = gMonIcon_Klawf, .iconPalIndex = 0, - //FOOTPRINT(Klawf) + FOOTPRINT(Klawf) .levelUpLearnset = sKlawfLevelUpLearnset, .teachableLearnset = sKlawfTeachableLearnset, .eggMoveLearnset = sKlawfEggMoveLearnset, @@ -2748,7 +2748,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Capsakid, .iconSprite = gMonIcon_Capsakid, .iconPalIndex = 1, - //FOOTPRINT(Capsakid) + FOOTPRINT(Capsakid) .levelUpLearnset = sCapsakidLevelUpLearnset, .teachableLearnset = sCapsakidTeachableLearnset, .eggMoveLearnset = sCapsakidEggMoveLearnset, @@ -2802,7 +2802,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Scovillain, .iconSprite = gMonIcon_Scovillain, .iconPalIndex = 1, - //FOOTPRINT(Scovillain) + FOOTPRINT(Scovillain) .levelUpLearnset = sScovillainLevelUpLearnset, .teachableLearnset = sScovillainTeachableLearnset, }, @@ -2856,7 +2856,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Rellor, .iconSprite = gMonIcon_Rellor, .iconPalIndex = 0, - //FOOTPRINT(Rellor) + FOOTPRINT(Rellor) .levelUpLearnset = sRellorLevelUpLearnset, .teachableLearnset = sRellorTeachableLearnset, .eggMoveLearnset = sRellorEggMoveLearnset, @@ -2910,7 +2910,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Rabsca, .iconSprite = gMonIcon_Rabsca, .iconPalIndex = 0, - //FOOTPRINT(Rabsca) + FOOTPRINT(Rabsca) .levelUpLearnset = sRabscaLevelUpLearnset, .teachableLearnset = sRabscaTeachableLearnset, }, @@ -2964,7 +2964,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Flittle, .iconSprite = gMonIcon_Flittle, .iconPalIndex = 1, - //FOOTPRINT(Flittle) + FOOTPRINT(Flittle) .levelUpLearnset = sFlittleLevelUpLearnset, .teachableLearnset = sFlittleTeachableLearnset, .eggMoveLearnset = sFlittleEggMoveLearnset, @@ -3018,7 +3018,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Espathra, .iconSprite = gMonIcon_Espathra, .iconPalIndex = 0, - //FOOTPRINT(Espathra) + FOOTPRINT(Espathra) .levelUpLearnset = sEspathraLevelUpLearnset, .teachableLearnset = sEspathraTeachableLearnset, }, @@ -3072,7 +3072,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Tinkatink, .iconSprite = gMonIcon_Tinkatink, .iconPalIndex = 1, - //FOOTPRINT(Tinkatink) + FOOTPRINT(Tinkatink) .levelUpLearnset = sTinkatinkLevelUpLearnset, .teachableLearnset = sTinkatinkTeachableLearnset, .eggMoveLearnset = sTinkatinkEggMoveLearnset, @@ -3126,7 +3126,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Tinkatuff, .iconSprite = gMonIcon_Tinkatuff, .iconPalIndex = 1, - //FOOTPRINT(Tinkatuff) + FOOTPRINT(Tinkatuff) .levelUpLearnset = sTinkatuffLevelUpLearnset, .teachableLearnset = sTinkatuffTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_TINKATON}), @@ -3179,7 +3179,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Tinkaton, .iconSprite = gMonIcon_Tinkaton, .iconPalIndex = 1, - //FOOTPRINT(Tinkaton) + FOOTPRINT(Tinkaton) .levelUpLearnset = sTinkatonLevelUpLearnset, .teachableLearnset = sTinkatonTeachableLearnset, }, @@ -3232,7 +3232,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Wiglett, .iconSprite = gMonIcon_Wiglett, .iconPalIndex = 0, - //FOOTPRINT(Wiglett) + FOOTPRINT(Wiglett) .levelUpLearnset = sWiglettLevelUpLearnset, .teachableLearnset = sWiglettTeachableLearnset, .eggMoveLearnset = sWiglettEggMoveLearnset, @@ -3285,7 +3285,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Wugtrio, .iconSprite = gMonIcon_Wugtrio, .iconPalIndex = 0, - //FOOTPRINT(Wugtrio) + FOOTPRINT(Wugtrio) .levelUpLearnset = sWugtrioLevelUpLearnset, .teachableLearnset = sWugtrioTeachableLearnset, }, @@ -3340,7 +3340,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Bombirdier, .iconSprite = gMonIcon_Bombirdier, .iconPalIndex = 0, - //FOOTPRINT(Bombirdier) + FOOTPRINT(Bombirdier) .levelUpLearnset = sBombirdierLevelUpLearnset, .teachableLearnset = sBombirdierTeachableLearnset, .eggMoveLearnset = sBombirdierEggMoveLearnset, @@ -3394,7 +3394,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Finizen, .iconSprite = gMonIcon_Finizen, .iconPalIndex = 0, - //FOOTPRINT(Finizen) + FOOTPRINT(Finizen) .levelUpLearnset = sFinizenLevelUpLearnset, .teachableLearnset = sFinizenTeachableLearnset, .eggMoveLearnset = sFinizenEggMoveLearnset, @@ -3448,7 +3448,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_PalafinZero, .iconSprite = gMonIcon_PalafinZero, .iconPalIndex = 0, - /*FOOTPRINT(Palafin)*/ + FOOTPRINT(Palafin) .levelUpLearnset = sPalafinLevelUpLearnset, .teachableLearnset = sPalafinTeachableLearnset, .formSpeciesIdTable = sPalafinFormSpeciesIdTable, @@ -3502,7 +3502,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_PalafinHero, .iconSprite = gMonIcon_PalafinHero, .iconPalIndex = 0, - /*FOOTPRINT(Palafin)*/ + FOOTPRINT(Palafin) .levelUpLearnset = sPalafinLevelUpLearnset, .teachableLearnset = sPalafinTeachableLearnset, .formSpeciesIdTable = sPalafinFormSpeciesIdTable, @@ -3558,7 +3558,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Varoom, .iconSprite = gMonIcon_Varoom, .iconPalIndex = 2, - //FOOTPRINT(Varoom) + FOOTPRINT(Varoom) .levelUpLearnset = sVaroomLevelUpLearnset, .teachableLearnset = sVaroomTeachableLearnset, .eggMoveLearnset = sVaroomEggMoveLearnset, @@ -3612,7 +3612,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Revavroom, .iconSprite = gMonIcon_Revavroom, .iconPalIndex = 0, - //FOOTPRINT(Revavroom) + FOOTPRINT(Revavroom) .levelUpLearnset = sRevavroomLevelUpLearnset, .teachableLearnset = sRevavroomTeachableLearnset, }, @@ -3666,7 +3666,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Cyclizar, .iconSprite = gMonIcon_Cyclizar, .iconPalIndex = 1, - //FOOTPRINT(Cyclizar) + FOOTPRINT(Cyclizar) .levelUpLearnset = sCyclizarLevelUpLearnset, .teachableLearnset = sCyclizarTeachableLearnset, .eggMoveLearnset = sCyclizarEggMoveLearnset, @@ -3721,7 +3721,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Orthworm, .iconSprite = gMonIcon_Orthworm, .iconPalIndex = 0, - //FOOTPRINT(Orthworm) + FOOTPRINT(Orthworm) .levelUpLearnset = sOrthwormLevelUpLearnset, .teachableLearnset = sOrthwormTeachableLearnset, .eggMoveLearnset = sOrthwormEggMoveLearnset, @@ -3777,7 +3777,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Glimmet, .iconSprite = gMonIcon_Glimmet, .iconPalIndex = 0, - //FOOTPRINT(Glimmet) + FOOTPRINT(Glimmet) .levelUpLearnset = sGlimmetLevelUpLearnset, .teachableLearnset = sGlimmetTeachableLearnset, .eggMoveLearnset = sGlimmetEggMoveLearnset, @@ -3832,7 +3832,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Glimmora, .iconSprite = gMonIcon_Glimmora, .iconPalIndex = 0, - //FOOTPRINT(Glimmora) + FOOTPRINT(Glimmora) .levelUpLearnset = sGlimmoraLevelUpLearnset, .teachableLearnset = sGlimmoraTeachableLearnset, }, @@ -3886,7 +3886,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Greavard, .iconSprite = gMonIcon_Greavard, .iconPalIndex = 0, - //FOOTPRINT(Greavard) + FOOTPRINT(Greavard) .levelUpLearnset = sGreavardLevelUpLearnset, .teachableLearnset = sGreavardTeachableLearnset, .eggMoveLearnset = sGreavardEggMoveLearnset, @@ -3940,7 +3940,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Houndstone, .iconSprite = gMonIcon_Houndstone, .iconPalIndex = 2, - //FOOTPRINT(Houndstone) + FOOTPRINT(Houndstone) .levelUpLearnset = sHoundstoneLevelUpLearnset, .teachableLearnset = sHoundstoneTeachableLearnset, }, @@ -3994,7 +3994,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Flamigo, .iconSprite = gMonIcon_Flamigo, .iconPalIndex = 1, - //FOOTPRINT(Flamigo) + FOOTPRINT(Flamigo) .levelUpLearnset = sFlamigoLevelUpLearnset, .teachableLearnset = sFlamigoTeachableLearnset, .eggMoveLearnset = sFlamigoEggMoveLearnset, @@ -4049,7 +4049,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Cetoddle, .iconSprite = gMonIcon_Cetoddle, .iconPalIndex = 0, - //FOOTPRINT(Cetoddle) + FOOTPRINT(Cetoddle) .levelUpLearnset = sCetoddleLevelUpLearnset, .teachableLearnset = sCetoddleTeachableLearnset, .eggMoveLearnset = sCetoddleEggMoveLearnset, @@ -4103,7 +4103,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Cetitan, .iconSprite = gMonIcon_Cetitan, .iconPalIndex = 0, - //FOOTPRINT(Cetitan) + FOOTPRINT(Cetitan) .levelUpLearnset = sCetitanLevelUpLearnset, .teachableLearnset = sCetitanTeachableLearnset, }, @@ -4158,7 +4158,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Veluza, .iconSprite = gMonIcon_Veluza, .iconPalIndex = 1, - //FOOTPRINT(Veluza) + FOOTPRINT(Veluza) .levelUpLearnset = sVeluzaLevelUpLearnset, .teachableLearnset = sVeluzaTeachableLearnset, .eggMoveLearnset = sVeluzaEggMoveLearnset, @@ -4214,7 +4214,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Dondozo, .iconSprite = gMonIcon_Dondozo, .iconPalIndex = 0, - //FOOTPRINT(Dondozo) + FOOTPRINT(Dondozo) .levelUpLearnset = sDondozoLevelUpLearnset, .teachableLearnset = sDondozoTeachableLearnset, .eggMoveLearnset = sDondozoEggMoveLearnset, @@ -4269,7 +4269,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_TatsugiriCurly, .iconSprite = gMonIcon_TatsugiriCurly, .iconPalIndex = 0, - /*FOOTPRINT(Tatsugiri)*/ + FOOTPRINT(Tatsugiri) .levelUpLearnset = sTatsugiriLevelUpLearnset, .teachableLearnset = sTatsugiriTeachableLearnset, .eggMoveLearnset = sTatsugiriEggMoveLearnset, @@ -4322,7 +4322,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_TatsugiriDroopy, .iconSprite = gMonIcon_TatsugiriDroopy, .iconPalIndex = 0, - /*FOOTPRINT(Tatsugiri)*/ + FOOTPRINT(Tatsugiri) .levelUpLearnset = sTatsugiriLevelUpLearnset, .teachableLearnset = sTatsugiriTeachableLearnset, .eggMoveLearnset = sTatsugiriEggMoveLearnset, @@ -4375,7 +4375,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_TatsugiriStretchy, .iconSprite = gMonIcon_TatsugiriStretchy, .iconPalIndex = 0, - /*FOOTPRINT(Tatsugiri)*/ + FOOTPRINT(Tatsugiri) .levelUpLearnset = sTatsugiriLevelUpLearnset, .teachableLearnset = sTatsugiriTeachableLearnset, .eggMoveLearnset = sTatsugiriEggMoveLearnset, @@ -4431,7 +4431,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_GreatTusk, .iconSprite = gMonIcon_GreatTusk, .iconPalIndex = 0, - //FOOTPRINT(GreatTusk) + FOOTPRINT(GreatTusk) .isParadox = TRUE, .levelUpLearnset = sGreatTuskLevelUpLearnset, .teachableLearnset = sGreatTuskTeachableLearnset, @@ -4486,7 +4486,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_ScreamTail, .iconSprite = gMonIcon_ScreamTail, .iconPalIndex = 0, - //FOOTPRINT(ScreamTail) + FOOTPRINT(ScreamTail) .isParadox = TRUE, .levelUpLearnset = sScreamTailLevelUpLearnset, .teachableLearnset = sScreamTailTeachableLearnset, @@ -4541,7 +4541,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_BruteBonnet, .iconSprite = gMonIcon_BruteBonnet, .iconPalIndex = 1, - //FOOTPRINT(BruteBonnet) + FOOTPRINT(BruteBonnet) .isParadox = TRUE, .levelUpLearnset = sBruteBonnetLevelUpLearnset, .teachableLearnset = sBruteBonnetTeachableLearnset, @@ -4599,7 +4599,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_FlutterMane, .iconSprite = gMonIcon_FlutterMane, .iconPalIndex = 2, - //FOOTPRINT(FlutterMane) + FOOTPRINT(FlutterMane) .isParadox = TRUE, .levelUpLearnset = sFlutterManeLevelUpLearnset, .teachableLearnset = sFlutterManeTeachableLearnset, @@ -4653,7 +4653,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_SlitherWing, .iconSprite = gMonIcon_SlitherWing, .iconPalIndex = 1, - //FOOTPRINT(SlitherWing) + FOOTPRINT(SlitherWing) .isParadox = TRUE, .levelUpLearnset = sSlitherWingLevelUpLearnset, .teachableLearnset = sSlitherWingTeachableLearnset, @@ -4708,7 +4708,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_SandyShocks, .iconSprite = gMonIcon_SandyShocks, .iconPalIndex = 0, - //FOOTPRINT(SandyShocks) + FOOTPRINT(SandyShocks) .isParadox = TRUE, .levelUpLearnset = sSandyShocksLevelUpLearnset, .teachableLearnset = sSandyShocksTeachableLearnset, @@ -4763,7 +4763,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronTreads, .iconSprite = gMonIcon_IronTreads, .iconPalIndex = 1, - //FOOTPRINT(IronTreads) + FOOTPRINT(IronTreads) .isParadox = TRUE, .levelUpLearnset = sIronTreadsLevelUpLearnset, .teachableLearnset = sIronTreadsTeachableLearnset, @@ -4818,7 +4818,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronBundle, .iconSprite = gMonIcon_IronBundle, .iconPalIndex = 0, - //FOOTPRINT(IronBundle) + FOOTPRINT(IronBundle) .isParadox = TRUE, .levelUpLearnset = sIronBundleLevelUpLearnset, .teachableLearnset = sIronBundleTeachableLearnset, @@ -4873,7 +4873,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronHands, .iconSprite = gMonIcon_IronHands, .iconPalIndex = 0, - //FOOTPRINT(IronHands) + FOOTPRINT(IronHands) .isParadox = TRUE, .levelUpLearnset = sIronHandsLevelUpLearnset, .teachableLearnset = sIronHandsTeachableLearnset, @@ -4929,7 +4929,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronJugulis, .iconSprite = gMonIcon_IronJugulis, .iconPalIndex = 0, - //FOOTPRINT(IronJugulis) + FOOTPRINT(IronJugulis) .isParadox = TRUE, .levelUpLearnset = sIronJugulisLevelUpLearnset, .teachableLearnset = sIronJugulisTeachableLearnset, @@ -4985,7 +4985,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronMoth, .iconSprite = gMonIcon_IronMoth, .iconPalIndex = 3, - //FOOTPRINT(IronMoth) + FOOTPRINT(IronMoth) .isParadox = TRUE, .levelUpLearnset = sIronMothLevelUpLearnset, .teachableLearnset = sIronMothTeachableLearnset, @@ -5040,7 +5040,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronThorns, .iconSprite = gMonIcon_IronThorns, .iconPalIndex = 1, - //FOOTPRINT(IronThorns) + FOOTPRINT(IronThorns) .isParadox = TRUE, .levelUpLearnset = sIronThornsLevelUpLearnset, .teachableLearnset = sIronThornsTeachableLearnset, @@ -5095,7 +5095,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Frigibax, .iconSprite = gMonIcon_Frigibax, .iconPalIndex = 0, - //FOOTPRINT(Frigibax) + FOOTPRINT(Frigibax) .levelUpLearnset = sFrigibaxLevelUpLearnset, .teachableLearnset = sFrigibaxTeachableLearnset, .eggMoveLearnset = sFrigibaxEggMoveLearnset, @@ -5149,7 +5149,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Arctibax, .iconSprite = gMonIcon_Arctibax, .iconPalIndex = 0, - //FOOTPRINT(Arctibax) + FOOTPRINT(Arctibax) .levelUpLearnset = sArctibaxLevelUpLearnset, .teachableLearnset = sArctibaxTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 54, SPECIES_BAXCALIBUR}), @@ -5202,7 +5202,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Baxcalibur, .iconSprite = gMonIcon_Baxcalibur, .iconPalIndex = 0, - //FOOTPRINT(Baxcalibur) + FOOTPRINT(Baxcalibur) .levelUpLearnset = sBaxcaliburLevelUpLearnset, .teachableLearnset = sBaxcaliburTeachableLearnset, }, @@ -5256,7 +5256,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_GimmighoulChest, .iconSprite = gMonIcon_GimmighoulChest, .iconPalIndex = 0, - //FOOTPRINT(Gimmighoul) + FOOTPRINT(GimmighoulChest) .levelUpLearnset = sGimmighoulLevelUpLearnset, .teachableLearnset = sGimmighoulTeachableLearnset, .formSpeciesIdTable = sGimmighoulFormSpeciesIdTable, @@ -5310,7 +5310,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_GimmighoulRoaming, .iconSprite = gMonIcon_GimmighoulRoaming, .iconPalIndex = 0, - //FOOTPRINT(Gimmighoul) + FOOTPRINT(GimmighoulRoaming) .levelUpLearnset = sGimmighoulLevelUpLearnset, .teachableLearnset = sGimmighoulTeachableLearnset, .formSpeciesIdTable = sGimmighoulFormSpeciesIdTable, @@ -5364,7 +5364,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Gholdengo, .iconSprite = gMonIcon_Gholdengo, .iconPalIndex = 0, - //FOOTPRINT(Gholdengo) + FOOTPRINT(Gholdengo) .levelUpLearnset = sGholdengoLevelUpLearnset, .teachableLearnset = sGholdengoTeachableLearnset, }, @@ -5418,7 +5418,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_WoChien, .iconSprite = gMonIcon_WoChien, .iconPalIndex = 1, - //FOOTPRINT(WoChien) + FOOTPRINT(WoChien) .isLegendary = TRUE, .levelUpLearnset = sWoChienLevelUpLearnset, .teachableLearnset = sWoChienTeachableLearnset, @@ -5473,7 +5473,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_ChienPao, .iconSprite = gMonIcon_ChienPao, .iconPalIndex = 0, - //FOOTPRINT(ChienPao) + FOOTPRINT(ChienPao) .isLegendary = TRUE, .levelUpLearnset = sChienPaoLevelUpLearnset, .teachableLearnset = sChienPaoTeachableLearnset, @@ -5528,7 +5528,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_TingLu, .iconSprite = gMonIcon_TingLu, .iconPalIndex = 0, - //FOOTPRINT(TingLu) + FOOTPRINT(TingLu) .isLegendary = TRUE, .levelUpLearnset = sTingLuLevelUpLearnset, .teachableLearnset = sTingLuTeachableLearnset, @@ -5584,7 +5584,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_ChiYu, .iconSprite = gMonIcon_ChiYu, .iconPalIndex = 0, - //FOOTPRINT(ChiYu) + FOOTPRINT(ChiYu) .isLegendary = TRUE, .levelUpLearnset = sChiYuLevelUpLearnset, .teachableLearnset = sChiYuTeachableLearnset, @@ -5640,7 +5640,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_RoaringMoon, .iconSprite = gMonIcon_RoaringMoon, .iconPalIndex = 0, - //FOOTPRINT(RoaringMoon) + FOOTPRINT(RoaringMoon) .isParadox = TRUE, .levelUpLearnset = sRoaringMoonLevelUpLearnset, .teachableLearnset = sRoaringMoonTeachableLearnset, @@ -5694,7 +5694,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronValiant, .iconSprite = gMonIcon_IronValiant, .iconPalIndex = 1, - //FOOTPRINT(IronValiant) + FOOTPRINT(IronValiant) .isParadox = TRUE, .levelUpLearnset = sIronValiantLevelUpLearnset, .teachableLearnset = sIronValiantTeachableLearnset, @@ -5749,7 +5749,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Koraidon, .iconSprite = gMonIcon_Koraidon, .iconPalIndex = 0, - //FOOTPRINT(Koraidon) + FOOTPRINT(Koraidon) .isLegendary = TRUE, .isFrontierBanned = TRUE, .levelUpLearnset = sKoraidonLevelUpLearnset, @@ -5805,7 +5805,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Miraidon, .iconSprite = gMonIcon_Miraidon, .iconPalIndex = 2, - //FOOTPRINT(Miraidon) + FOOTPRINT(Miraidon) .isLegendary = TRUE, .isFrontierBanned = TRUE, .levelUpLearnset = sMiraidonLevelUpLearnset, @@ -5860,7 +5860,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_WalkingWake, .iconSprite = gMonIcon_WalkingWake, .iconPalIndex = 2, - //FOOTPRINT(WalkingWake) + FOOTPRINT(WalkingWake) .isParadox = TRUE, .levelUpLearnset = sWalkingWakeLevelUpLearnset, .teachableLearnset = sWalkingWakeTeachableLearnset, @@ -5914,7 +5914,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronLeaves, .iconSprite = gMonIcon_IronLeaves, .iconPalIndex = 1, - //FOOTPRINT(IronLeaves) + FOOTPRINT(IronLeaves) .isParadox = TRUE, .levelUpLearnset = sIronLeavesLevelUpLearnset, .teachableLearnset = sIronLeavesTeachableLearnset, @@ -5970,7 +5970,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Poltchageist, .iconSprite = gMonIcon_Poltchageist, .iconPalIndex = 1, - //FOOTPRINT(Poltchageist) + FOOTPRINT(Poltchageist) .levelUpLearnset = sPoltchageistLevelUpLearnset, .teachableLearnset = sPoltchageistTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_UNREMARKABLE_TEACUP, SPECIES_SINISTCHA_UNREMARKABLE}), @@ -6023,7 +6023,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Poltchageist, .iconSprite = gMonIcon_Poltchageist, .iconPalIndex = 1, - //FOOTPRINT(Poltchageist) + FOOTPRINT(Poltchageist) .levelUpLearnset = sPoltchageistLevelUpLearnset, .teachableLearnset = sPoltchageistTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MASTERPIECE_TEACUP, SPECIES_SINISTCHA_MASTERPIECE}), @@ -6077,7 +6077,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Sinistcha, .iconSprite = gMonIcon_Sinistcha, .iconPalIndex = 1, - //FOOTPRINT(Sinistcha) + FOOTPRINT(Sinistcha) .levelUpLearnset = sSinistchaLevelUpLearnset, .teachableLearnset = sSinistchaTeachableLearnset, }, @@ -6129,7 +6129,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Sinistcha, .iconSprite = gMonIcon_Sinistcha, .iconPalIndex = 1, - //FOOTPRINT(Sinistcha) + FOOTPRINT(Sinistcha) .levelUpLearnset = sSinistchaLevelUpLearnset, .teachableLearnset = sSinistchaTeachableLearnset, }, @@ -6183,7 +6183,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Okidogi, .iconSprite = gMonIcon_Okidogi, .iconPalIndex = 1, - //FOOTPRINT(Okidogi) + FOOTPRINT(Okidogi) .isLegendary = TRUE, .levelUpLearnset = sOkidogiLevelUpLearnset, .teachableLearnset = sOkidogiTeachableLearnset, @@ -6238,7 +6238,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Munkidori, .iconSprite = gMonIcon_Munkidori, .iconPalIndex = 0, - //FOOTPRINT(Munkidori) + FOOTPRINT(Munkidori) .isLegendary = TRUE, .levelUpLearnset = sMunkidoriLevelUpLearnset, .teachableLearnset = sMunkidoriTeachableLearnset, @@ -6293,7 +6293,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Fezandipiti, .iconSprite = gMonIcon_Fezandipiti, .iconPalIndex = 0, - //FOOTPRINT(Fezandipiti) + FOOTPRINT(Fezandipiti) .isLegendary = TRUE, .levelUpLearnset = sFezandipitiLevelUpLearnset, .teachableLearnset = sFezandipitiTeachableLearnset, @@ -6344,7 +6344,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Ogerpon##Form, \ .iconSprite = gMonIcon_Ogerpon##Form, \ .iconPalIndex = iconpalette, \ - /*FOOTPRINT(Ogerpon)*/ \ + FOOTPRINT(Ogerpon) \ .levelUpLearnset = sOgerponLevelUpLearnset, \ .teachableLearnset = sOgerponTeachableLearnset, \ .formSpeciesIdTable = sOgerponFormSpeciesIdTable, \ @@ -6413,7 +6413,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_GougingFire, .iconSprite = gMonIcon_GougingFire, .iconPalIndex = 5, - //FOOTPRINT(GougingFire) + FOOTPRINT(GougingFire) .isParadox = TRUE, .levelUpLearnset = sGougingFireLevelUpLearnset, .teachableLearnset = sGougingFireTeachableLearnset, @@ -6468,7 +6468,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_RagingBolt, .iconSprite = gMonIcon_RagingBolt, .iconPalIndex = 2, - //FOOTPRINT(RagingBolt) + FOOTPRINT(RagingBolt) .isParadox = TRUE, .levelUpLearnset = sRagingBoltLevelUpLearnset, .teachableLearnset = sRagingBoltTeachableLearnset, @@ -6522,7 +6522,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronBoulder, .iconSprite = gMonIcon_IronBoulder, .iconPalIndex = 5, - //FOOTPRINT(IronBoulder) + FOOTPRINT(IronBoulder) .isParadox = TRUE, .levelUpLearnset = sIronBoulderLevelUpLearnset, .teachableLearnset = sIronBoulderTeachableLearnset, @@ -6577,7 +6577,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronCrown, .iconSprite = gMonIcon_IronCrown, .iconPalIndex = 3, - //FOOTPRINT(IronCrown) + FOOTPRINT(IronCrown) .isParadox = TRUE, .levelUpLearnset = sIronCrownLevelUpLearnset, .teachableLearnset = sIronCrownTeachableLearnset, @@ -6632,7 +6632,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.shinyPalette = gMonShinyPalette_TerapagosNormal, .iconSprite = gMonIcon_TerapagosNormal, .iconPalIndex = 0, - //FOOTPRINT(Terapagos) + FOOTPRINT(TerapagosNormal) .isLegendary = TRUE, .isFrontierBanned = TRUE, .levelUpLearnset = sTerapagosLevelUpLearnset, @@ -6689,7 +6689,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.shinyPalette = gMonShinyPalette_TerapagosTerastal, .iconSprite = gMonIcon_TerapagosTerastal, .iconPalIndex = 0, - //FOOTPRINT(Terapagos) + FOOTPRINT(TerapagosTerastal) .isLegendary = TRUE, .isFrontierBanned = TRUE, .levelUpLearnset = sTerapagosLevelUpLearnset, @@ -6745,7 +6745,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.shinyPalette = gMonShinyPalette_TerapagosStellar, .iconSprite = gMonIcon_TerapagosStellar, .iconPalIndex = 0, - //FOOTPRINT(Terapagos) + FOOTPRINT(TerapagosStellar) .isLegendary = TRUE, .isFrontierBanned = TRUE, .levelUpLearnset = sTerapagosLevelUpLearnset, @@ -6803,7 +6803,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Pecharunt, .iconSprite = gMonIcon_Pecharunt, .iconPalIndex = 0, - //FOOTPRINT(Pecharunt) + FOOTPRINT(Pecharunt) .isMythical = TRUE, .isFrontierBanned = TRUE, .levelUpLearnset = sPecharuntLevelUpLearnset, diff --git a/src/data/pokemon/species_info/shared_dex_text.h b/src/data/pokemon/species_info/shared_dex_text.h index 0e48051537..dbfef82d74 100644 --- a/src/data/pokemon/species_info/shared_dex_text.h +++ b/src/data/pokemon/species_info/shared_dex_text.h @@ -279,4 +279,4 @@ const u8 gOgerponCornerstoneMaskPokedexText[] = _( "In this form, it draws on the power\n" "of stone. Its body is rock-solid,\n" "protecting it from all manner of\n" - "attacks."); \ No newline at end of file + "attacks."); diff --git a/src/graphics.c b/src/graphics.c index 4f10e0f965..0d25ef7805 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1739,7 +1739,6 @@ const u16 gFrontierPassMedalsGold_Pal[] = INCBIN_U16("graphics/frontier_pass/gol // Pokédex const u16 gPokedexBgHoenn_Pal[] = INCBIN_U16("graphics/pokedex/bg_hoenn.gbapal"); -const u16 gPokedexCaughtScreen_Pal[] = INCBIN_U16("graphics/pokedex/caught_screen.gbapal"); const u16 gPokedexSearchResults_Pal[] = INCBIN_U16("graphics/pokedex/search_results_bg.gbapal"); const u16 gPokedexBgNational_Pal[] = INCBIN_U16("graphics/pokedex/bg_national.gbapal"); const u32 gPokedexMenu_Gfx[] = INCBIN_U32("graphics/pokedex/menu.4bpp.lz"); diff --git a/src/item_use.c b/src/item_use.c index e711f8cd22..824b308524 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -1254,11 +1254,11 @@ bool32 CannotUseItemsInBattle(u16 itemId, struct Pokemon *mon) cannotUse = TRUE; break; case EFFECT_ITEM_RESTORE_PP: - if (ItemId_GetEffect(itemId)[6] == ITEM4_HEAL_PP) + if (ItemId_GetEffect(itemId)[4] == ITEM4_HEAL_PP) { for (i = 0; i < MAX_MON_MOVES; i++) { - if (GetMonData(mon, MON_DATA_PP1 + i) < CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + i), GetMonData(mon, MON_DATA_PP_BONUSES), i)); + if (GetMonData(mon, MON_DATA_PP1 + i) < CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + i), GetMonData(mon, MON_DATA_PP_BONUSES), i)) break; } if (i == MAX_MON_MOVES) diff --git a/src/pokedex.c b/src/pokedex.c index 928f528d69..6153e72213 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -4093,7 +4093,7 @@ static void Task_HandleCaughtMonPageInput(u8 taskId) } else { - LoadPalette(gPokedexCaughtScreen_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); + LoadPalette(gPokedexBgHoenn_Pal + 49, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); } } diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index ce1baa6cef..9f657d1673 100644 --- a/src/pokedex_plus_hgss.c +++ b/src/pokedex_plus_hgss.c @@ -193,6 +193,7 @@ static const u8 sText_Stats_eggGroup_WATER_2[] = _("WATER {CIRCLE_2}"); static const u8 sText_Stats_eggGroup_DITTO[] = _("DITTO"); static const u8 sText_Stats_eggGroup_DRAGON[] = _("DRAGON"); static const u8 sText_Stats_eggGroup_NO_EGGS_DISCOVERED[] = _("---"); +static const u8 sText_Stats_eggGroup_UNKNOWN[] = _("???"); static const u8 sText_Dex_SEEN[] = _("SEEN"); static const u8 sText_Dex_OWN[] = _("OWN"); @@ -303,6 +304,7 @@ static const u32 sPokedexPlusHGSS_ScreenSearchNational_Tilemap[] = INCBIN_U32("g #define MAX_SEARCH_PARAM_CURSOR_POS (MAX_SEARCH_PARAM_ON_SCREEN - 1) #define MAX_MONS_ON_SCREEN 4 +#define MAX_EVOLUTION_ICONS 8 #define LIST_SCROLL_STEP 16 @@ -597,7 +599,7 @@ static void Task_LoadEvolutionScreen(u8 taskId); static void Task_HandleEvolutionScreenInput(u8 taskId); static void Task_SwitchScreensFromEvolutionScreen(u8 taskId); static void Task_ExitEvolutionScreen(u8 taskId); -static u8 PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, u8 depth_i); +static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, u32 *depth_i, u32 alreadyPrintedIcons[], u32 *icon_depth_i); static u8 PrintPreEvolutions(u8 taskId, u16 species); //Stat bars on scrolling screens static void TryDestroyStatBars(void); @@ -3875,18 +3877,18 @@ static void Task_LoadInfoScreen(u8 taskId) gMain.state++; break; case 6: - { - u32 preservedPalettes = 0; + { + u32 preservedPalettes = 0; - if (gTasks[taskId].tBgLoaded) - preservedPalettes = 0x14; // each bit represents a palette index - if (gTasks[taskId].tMonSpriteDone) - preservedPalettes |= (1 << (gSprites[gTasks[taskId].tMonSpriteId].oam.paletteNum + 16)); - BeginNormalPaletteFade(~preservedPalettes, 0, 16, 0, RGB_BLACK); - SetVBlankCallback(gPokedexVBlankCB); - gMain.state++; - } + if (gTasks[taskId].tBgLoaded) + preservedPalettes = 0x14; // each bit represents a palette index + if (gTasks[taskId].tMonSpriteDone) + preservedPalettes |= (1 << (gSprites[gTasks[taskId].tMonSpriteId].oam.paletteNum + 16)); + BeginNormalPaletteFade(~preservedPalettes, 0, 16, 0, RGB_BLACK); + SetVBlankCallback(gPokedexVBlankCB); + gMain.state++; break; + } case 7: SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); @@ -4952,7 +4954,7 @@ static void Task_LoadStatsScreen(u8 taskId) gMain.state++; break; case 7: - { + { u32 preservedPalettes = 0; if (gTasks[taskId].data[2] != 0) @@ -4962,8 +4964,8 @@ static void Task_LoadStatsScreen(u8 taskId) BeginNormalPaletteFade(~preservedPalettes, 0, 16, 0, RGB_BLACK); SetVBlankCallback(gPokedexVBlankCB); gMain.state++; - } break; + } case 8: SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); @@ -5755,102 +5757,108 @@ static void PrintStatsScreen_Left(u8 taskId) //Egg group 1 switch (sPokedexView->sPokemonStats.eggGroup1) { - case EGG_GROUP_MONSTER : + case EGG_GROUP_MONSTER: StringCopy(gStringVar1, sText_Stats_eggGroup_MONSTER); break; - case EGG_GROUP_WATER_1 : + case EGG_GROUP_WATER_1: StringCopy(gStringVar1, sText_Stats_eggGroup_WATER_1); break; - case EGG_GROUP_BUG : + case EGG_GROUP_BUG: StringCopy(gStringVar1, sText_Stats_eggGroup_BUG); break; - case EGG_GROUP_FLYING : + case EGG_GROUP_FLYING: StringCopy(gStringVar1, sText_Stats_eggGroup_FLYING); break; - case EGG_GROUP_FIELD : + case EGG_GROUP_FIELD: StringCopy(gStringVar1, sText_Stats_eggGroup_FIELD); break; - case EGG_GROUP_FAIRY : + case EGG_GROUP_FAIRY: StringCopy(gStringVar1, sText_Stats_eggGroup_FAIRY); break; - case EGG_GROUP_GRASS : + case EGG_GROUP_GRASS: StringCopy(gStringVar1, sText_Stats_eggGroup_GRASS); break; - case EGG_GROUP_HUMAN_LIKE : + case EGG_GROUP_HUMAN_LIKE: StringCopy(gStringVar1, sText_Stats_eggGroup_HUMAN_LIKE); break; - case EGG_GROUP_WATER_3 : + case EGG_GROUP_WATER_3: StringCopy(gStringVar1, sText_Stats_eggGroup_WATER_3); break; - case EGG_GROUP_MINERAL : + case EGG_GROUP_MINERAL: StringCopy(gStringVar1, sText_Stats_eggGroup_MINERAL); break; - case EGG_GROUP_AMORPHOUS : + case EGG_GROUP_AMORPHOUS: StringCopy(gStringVar1, sText_Stats_eggGroup_AMORPHOUS); break; - case EGG_GROUP_WATER_2 : + case EGG_GROUP_WATER_2: StringCopy(gStringVar1, sText_Stats_eggGroup_WATER_2); break; - case EGG_GROUP_DITTO : + case EGG_GROUP_DITTO: StringCopy(gStringVar1, sText_Stats_eggGroup_DITTO); break; - case EGG_GROUP_DRAGON : + case EGG_GROUP_DRAGON: StringCopy(gStringVar1, sText_Stats_eggGroup_DRAGON); break; case EGG_GROUP_NO_EGGS_DISCOVERED: StringCopy(gStringVar1, sText_Stats_eggGroup_NO_EGGS_DISCOVERED); break; + default: + StringCopy(gStringVar1, sText_Stats_eggGroup_UNKNOWN); + break; } //Egg group 2 if (sPokedexView->sPokemonStats.eggGroup1 != sPokedexView->sPokemonStats.eggGroup2) { switch (sPokedexView->sPokemonStats.eggGroup2) { - case EGG_GROUP_MONSTER : + case EGG_GROUP_MONSTER: StringCopy(gStringVar2, sText_Stats_eggGroup_MONSTER); break; - case EGG_GROUP_WATER_1 : + case EGG_GROUP_WATER_1: StringCopy(gStringVar2, sText_Stats_eggGroup_WATER_1); break; - case EGG_GROUP_BUG : + case EGG_GROUP_BUG: StringCopy(gStringVar2, sText_Stats_eggGroup_BUG); break; - case EGG_GROUP_FLYING : + case EGG_GROUP_FLYING: StringCopy(gStringVar2, sText_Stats_eggGroup_FLYING); break; - case EGG_GROUP_FIELD : + case EGG_GROUP_FIELD: StringCopy(gStringVar2, sText_Stats_eggGroup_FIELD); break; - case EGG_GROUP_FAIRY : + case EGG_GROUP_FAIRY: StringCopy(gStringVar2, sText_Stats_eggGroup_FAIRY); break; - case EGG_GROUP_GRASS : + case EGG_GROUP_GRASS: StringCopy(gStringVar2, sText_Stats_eggGroup_GRASS); break; - case EGG_GROUP_HUMAN_LIKE : + case EGG_GROUP_HUMAN_LIKE: StringCopy(gStringVar2, sText_Stats_eggGroup_HUMAN_LIKE); break; - case EGG_GROUP_WATER_3 : + case EGG_GROUP_WATER_3: StringCopy(gStringVar2, sText_Stats_eggGroup_WATER_3); break; - case EGG_GROUP_MINERAL : + case EGG_GROUP_MINERAL: StringCopy(gStringVar2, sText_Stats_eggGroup_MINERAL); break; - case EGG_GROUP_AMORPHOUS : + case EGG_GROUP_AMORPHOUS: StringCopy(gStringVar2, sText_Stats_eggGroup_AMORPHOUS); break; - case EGG_GROUP_WATER_2 : + case EGG_GROUP_WATER_2: StringCopy(gStringVar2, sText_Stats_eggGroup_WATER_2); break; - case EGG_GROUP_DITTO : + case EGG_GROUP_DITTO: StringCopy(gStringVar2, sText_Stats_eggGroup_DITTO); break; - case EGG_GROUP_DRAGON : + case EGG_GROUP_DRAGON: StringCopy(gStringVar2, sText_Stats_eggGroup_DRAGON); break; case EGG_GROUP_NO_EGGS_DISCOVERED: StringCopy(gStringVar2, sText_Stats_eggGroup_NO_EGGS_DISCOVERED); break; + default: + StringCopy(gStringVar2, sText_Stats_eggGroup_UNKNOWN); + break; } StringExpandPlaceholders(gStringVar3, sText_Stats_eggGroup_Groups); align_x = GetStringRightAlignXOffset(0, gStringVar3, total_x); @@ -6079,20 +6087,29 @@ static void Task_LoadEvolutionScreen(u8 taskId) gMain.state++; break; case 4: + { + u32 alreadyPrintedIcons[MAX_EVOLUTION_ICONS] = {0}; + u32 depth = sPokedexView->numPreEvolutions; + u32 iconDepth = depth; //Print evo info and icons gTasks[taskId].data[3] = 0; - PrintEvolutionTargetSpeciesAndMethod(taskId, NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), 0, sPokedexView->numPreEvolutions); + PrintEvolutionTargetSpeciesAndMethod(taskId, NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), 0, &depth, alreadyPrintedIcons, &iconDepth); LoadSpritePalette(&gSpritePalette_Arrow); GetSeenFlagTargetSpecies(); - if (sPokedexView->sEvoScreenData.numAllEvolutions != 0 && sPokedexView->sEvoScreenData.numSeen != 0) + if (sPokedexView->sEvoScreenData.numAllEvolutions > 0 && sPokedexView->sEvoScreenData.numSeen > 0) { - sPokedexView->sEvoScreenData.arrowSpriteId = CreateSprite(&gSpriteTemplate_Arrow, 7, 58, 0); + u32 pos; + for (pos = 0; !sPokedexView->sEvoScreenData.seen[pos]; pos++) + ; + sPokedexView->sEvoScreenData.menuPos = pos; + sPokedexView->sEvoScreenData.arrowSpriteId = CreateSprite(&gSpriteTemplate_Arrow, 7, 58 + 9 * pos, 0); gSprites[sPokedexView->sEvoScreenData.arrowSpriteId].animNum = 2; } gMain.state++; break; + } case 5: - { + { u32 preservedPalettes = 0; if (gTasks[taskId].data[2] != 0) @@ -6102,8 +6119,8 @@ static void Task_LoadEvolutionScreen(u8 taskId) BeginNormalPaletteFade(~preservedPalettes, 0, 16, 0, RGB_BLACK); SetVBlankCallback(gPokedexVBlankCB); gMain.state++; - } break; + } case 6: SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); @@ -6145,34 +6162,36 @@ static void Task_HandleEvolutionScreenInput(u8 taskId) PlaySE(SE_PIN); } - if (sPokedexView->sEvoScreenData.numAllEvolutions != 0 && sPokedexView->sEvoScreenData.numSeen != 0) + if (sPokedexView->sEvoScreenData.numAllEvolutions > 0 && sPokedexView->sEvoScreenData.numSeen > 0) { u8 base_y = 58; u8 base_y_offset = 9; u8 pos = sPokedexView->sEvoScreenData.menuPos; - u8 max = sPokedexView->sEvoScreenData.numAllEvolutions; + u8 max = sPokedexView->sEvoScreenData.numAllEvolutions - 1; if (JOY_NEW(DPAD_DOWN)) { - while (TRUE) + do { - pos += 1; - if (pos >= max) + if (pos < max) + pos++; + else pos = 0; - - if (sPokedexView->sEvoScreenData.seen[pos] == TRUE) - break; - } + } while (!sPokedexView->sEvoScreenData.seen[pos]); gSprites[sPokedexView->sEvoScreenData.arrowSpriteId].y = base_y + base_y_offset * pos; sPokedexView->sEvoScreenData.menuPos = pos; } else if (JOY_NEW(DPAD_UP)) { - if (sPokedexView->sEvoScreenData.menuPos == 0) - sPokedexView->sEvoScreenData.menuPos = sPokedexView->sEvoScreenData.numAllEvolutions - 1; - else - sPokedexView->sEvoScreenData.menuPos -= 1; + do + { + if (pos > 0) + pos--; + else + pos = max; + } while (!sPokedexView->sEvoScreenData.seen[pos]); - gSprites[sPokedexView->sEvoScreenData.arrowSpriteId].y = base_y + base_y_offset * sPokedexView->sEvoScreenData.menuPos; + gSprites[sPokedexView->sEvoScreenData.arrowSpriteId].y = base_y + base_y_offset * pos; + sPokedexView->sEvoScreenData.menuPos = pos; } if (JOY_NEW(A_BUTTON)) @@ -6228,10 +6247,9 @@ static void Task_HandleEvolutionScreenInput(u8 taskId) } } -static void HandleTargetSpeciesPrint(u8 taskId, u16 targetSpecies, u16 previousTargetSpecies, u8 base_x, u8 base_y, u8 base_y_offset, u8 base_i, bool8 isEevee) +static void HandleTargetSpeciesPrintText(u32 targetSpecies, u32 base_x, u32 base_y, u32 base_y_offset, u32 base_i) { - u8 iterations = 6; - bool8 seen = GetSetPokedexFlag(SpeciesToNationalPokedexNum(targetSpecies), FLAG_GET_SEEN); + bool32 seen = GetSetPokedexFlag(SpeciesToNationalPokedexNum(targetSpecies), FLAG_GET_SEEN); if (seen || !HGSS_HIDE_UNSEEN_EVOLUTION_NAMES) StringCopy(gStringVar3, GetSpeciesName(targetSpecies)); //evolution mon name @@ -6239,29 +6257,17 @@ static void HandleTargetSpeciesPrint(u8 taskId, u16 targetSpecies, u16 previousT StringCopy(gStringVar3, gText_ThreeQuestionMarks); //show questionmarks instead of name StringExpandPlaceholders(gStringVar3, sText_EVO_Name); //evolution mon name PrintInfoScreenTextSmall(gStringVar3, base_x, base_y + base_y_offset*base_i); //evolution mon name +} - //Print mon icon in the top row - if (isEevee) - { - iterations = 9; - if (targetSpecies == previousTargetSpecies) - return; - else if (targetSpecies == SPECIES_GLACEON) - base_i -= 1; - else if (targetSpecies == SPECIES_SYLVEON) - base_i -= 2; - } - - if (base_i < iterations) - { - u32 personality = GetPokedexMonPersonality(targetSpecies); - LoadMonIconPalettePersonality(targetSpecies, personality); //Loads pallete for current mon - if (isEevee) - gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 45 + 26*base_i, 31, 4, personality); //Create pokemon sprite - else - gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 50 + 32*base_i, 31, 4, personality); //Create pokemon sprite - gSprites[gTasks[taskId].data[4+base_i]].oam.priority = 0; - } +static void HandleTargetSpeciesPrintIcon(u8 taskId, u16 targetSpecies, u8 base_i, u8 iterations) +{ + u32 personality = GetPokedexMonPersonality(targetSpecies); + LoadMonIconPalettePersonality(targetSpecies, personality); //Loads pallete for current mon + if (iterations > 6) // Print icons closer to each other if there are many evolutions + gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 45 + 26*base_i, 31, 4, personality); + else + gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 50 + 32*base_i, 31, 4, personality); + gSprites[gTasks[taskId].data[4+base_i]].oam.priority = 0; } static void CreateCaughtBallEvolutionScreen(u16 targetSpecies, u8 x, u8 y, u16 unused) @@ -6418,12 +6424,11 @@ static u8 PrintPreEvolutions(u8 taskId, u16 species) #define EVO_SCREEN_CRITS_DIGITS 1 #define EVO_SCREEN_DMG_DIGITS 2 -static u8 PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, u8 depth_i) +static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, u32 *depth_i, u32 alreadyPrintedIcons[], u32 *icon_depth_i) { - u16 i; + int i; const struct MapHeader *mapHeader; u16 targetSpecies = 0; - u16 previousTargetSpecies = 0; u16 item; @@ -6432,21 +6437,25 @@ static u8 PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, u8 base_x_offset = 54+8; u8 base_y = 51; u8 base_y_offset = 9; - u8 base_i = 0; u8 times = 0; u8 depth_x = 16; - bool8 isEevee = FALSE; const struct Evolution *evolutions = GetSpeciesEvolutions(species); if (sPokedexView->sEvoScreenData.isMega) - return 0; - if (evolutions == NULL) - return 0; + return; StringCopy(gStringVar1, GetSpeciesName(species)); - if (species == SPECIES_EEVEE) - isEevee = TRUE; + //If there are no evolutions print text and return + if (evolutions == NULL) + { + if (depth == 0) + { + StringExpandPlaceholders(gStringVar4, sText_EVO_NONE); + PrintInfoScreenTextSmall(gStringVar4, base_x-7-7, base_y + base_y_offset*(*depth_i)); + } + return; + } //Calculate number of possible direct evolutions (e.g. Eevee has 5 but torchic has 1) for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) @@ -6457,24 +6466,29 @@ static u8 PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, gTasks[taskId].data[3] = times; sPokedexView->sEvoScreenData.numAllEvolutions += times; - //If there are no evolutions print text - if (times == 0 && depth == 0) - { - StringExpandPlaceholders(gStringVar4, sText_EVO_NONE); - PrintInfoScreenTextSmall(gStringVar4, base_x-7-7, base_y + base_y_offset*depth_i); - } - //If there are evolutions find out which and print them 1 by 1 for (i = 0; i < times; i++) { - base_i = i + depth_i; + int j; left = !left; - previousTargetSpecies = targetSpecies; targetSpecies = evolutions[i].targetSpecies; - sPokedexView->sEvoScreenData.targetSpecies[base_i] = targetSpecies; - CreateCaughtBallEvolutionScreen(targetSpecies, base_x + depth_x*depth-9, base_y + base_y_offset*base_i, 0); - HandleTargetSpeciesPrint(taskId, targetSpecies, previousTargetSpecies, base_x + depth_x*depth, base_y, base_y_offset, base_i, isEevee); //evolution mon name + sPokedexView->sEvoScreenData.targetSpecies[*depth_i] = targetSpecies; + CreateCaughtBallEvolutionScreen(targetSpecies, base_x + depth_x*depth-9, base_y + base_y_offset*(*depth_i), 0); + HandleTargetSpeciesPrintText(targetSpecies, base_x + depth_x*depth, base_y, base_y_offset, *depth_i); //evolution mon name + + for (j = 0; j < MAX_EVOLUTION_ICONS; j++) + { + if (alreadyPrintedIcons[j] == targetSpecies) + break; + if (alreadyPrintedIcons[j] == SPECIES_NONE) + { + HandleTargetSpeciesPrintIcon(taskId, targetSpecies, *icon_depth_i, times); + alreadyPrintedIcons[j] = targetSpecies; + (*icon_depth_i)++; + break; + } + } switch (evolutions[i].method) { @@ -6668,15 +6682,14 @@ static u8 PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_COUNT_999); break; default: - StringExpandPlaceholders(gStringVar4, sText_EVO_UNKNOWN ); + StringExpandPlaceholders(gStringVar4, sText_EVO_UNKNOWN); break; }//Switch end - PrintInfoScreenTextSmall(gStringVar4, base_x + depth_x*depth+base_x_offset, base_y + base_y_offset*base_i); //Print actual instructions + PrintInfoScreenTextSmall(gStringVar4, base_x + depth_x*depth+base_x_offset, base_y + base_y_offset*(*depth_i)); //Print actual instructions - depth_i += PrintEvolutionTargetSpeciesAndMethod(taskId, targetSpecies, depth+1, base_i+1); + (*depth_i)++; + PrintEvolutionTargetSpeciesAndMethod(taskId, targetSpecies, depth+1, depth_i, alreadyPrintedIcons, icon_depth_i); }//For loop end - - return times; } static void Task_SwitchScreensFromEvolutionScreen(u8 taskId) @@ -6798,7 +6811,7 @@ static void Task_LoadFormsScreen(u8 taskId) gMain.state++; break; case 5: - { + { u32 preservedPalettes = 0; if (gTasks[taskId].data[2] != 0) @@ -6808,8 +6821,8 @@ static void Task_LoadFormsScreen(u8 taskId) BeginNormalPaletteFade(~preservedPalettes, 0, 16, 0, RGB_BLACK); SetVBlankCallback(gPokedexVBlankCB); gMain.state++; - } break; + } case 6: SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); @@ -7088,7 +7101,7 @@ static void Task_LoadCryScreen(u8 taskId) gMain.state++; break; case 6: - { + { struct CryScreenWindow waveformWindow; waveformWindow.unk0 = 0x4020; @@ -7101,10 +7114,10 @@ static void Task_LoadCryScreen(u8 taskId) gMain.state++; gDexCryScreenState = 0; } - } break; + } case 7: - { + { struct CryScreenWindow cryMeter; cryMeter.paletteNo = 9; @@ -7118,8 +7131,8 @@ static void Task_LoadCryScreen(u8 taskId) CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(3); - } break; + } case 8: BeginNormalPaletteFade(PALETTES_ALL & ~(0x14), 0, 0x10, 0, RGB_BLACK); SetVBlankCallback(gPokedexVBlankCB); @@ -7258,15 +7271,15 @@ static void Task_LoadSizeScreen(u8 taskId) gMain.state++; break; case 3: - { - u8 string[64]; + { + u8 string[64]; - StringCopy(string, gText_SizeComparedTo); - StringAppend(string, gSaveBlock2Ptr->playerName); - PrintInfoScreenText(string, GetStringCenterAlignXOffset(FONT_NORMAL, string, 0xF0), 0x79); - gMain.state++; - } + StringCopy(string, gText_SizeComparedTo); + StringAppend(string, gSaveBlock2Ptr->playerName); + PrintInfoScreenText(string, GetStringCenterAlignXOffset(FONT_NORMAL, string, 0xF0), 0x79); + gMain.state++; break; + } case 4: ResetPaletteFade(); gMain.state++; diff --git a/src/pokemon.c b/src/pokemon.c index f3df6b67af..7952452cb3 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -5085,16 +5085,11 @@ u16 ModifyStatByNature(u8 nature, u16 stat, u8 statIndex) return stat; } -#define IS_LEAGUE_BATTLE(trainerClass) \ - ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) \ - && (trainerClass == TRAINER_CLASS_ELITE_FOUR \ - || trainerClass == TRAINER_CLASS_LEADER \ - || trainerClass == TRAINER_CLASS_CHAMPION)) \ - void AdjustFriendship(struct Pokemon *mon, u8 event) { u16 species, heldItem; u8 holdEffect; + s8 mod; if (ShouldSkipFriendshipChange()) return; @@ -5129,26 +5124,43 @@ void AdjustFriendship(struct Pokemon *mon, u8 event) if (friendship > 199) friendshipLevel++; - if ((event != FRIENDSHIP_EVENT_WALKING || !(Random() & 1)) - && (event != FRIENDSHIP_EVENT_LEAGUE_BATTLE || IS_LEAGUE_BATTLE(opponentTrainerClass))) + if (event == FRIENDSHIP_EVENT_WALKING) { - s8 mod = sFriendshipEventModifiers[event][friendshipLevel]; - if (mod > 0 && holdEffect == HOLD_EFFECT_FRIENDSHIP_UP) - mod = (150 * mod) / 100; - friendship += mod; - if (mod > 0) - { - if (GetMonData(mon, MON_DATA_POKEBALL, 0) == ITEM_LUXURY_BALL) - friendship++; - if (GetMonData(mon, MON_DATA_MET_LOCATION, 0) == GetCurrentRegionMapSectionId()) - friendship++; - } - if (friendship < 0) - friendship = 0; - if (friendship > MAX_FRIENDSHIP) - friendship = MAX_FRIENDSHIP; - SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship); + // 50% chance every 128 steps + if (Random() & 1) + return; } + if (event == FRIENDSHIP_EVENT_LEAGUE_BATTLE) + { + // Only if it's a trainer battle with league progression significance + if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER)) + return; + if (!(opponentTrainerClass == TRAINER_CLASS_LEADER + || opponentTrainerClass == TRAINER_CLASS_ELITE_FOUR + || opponentTrainerClass == TRAINER_CLASS_CHAMPION)) + return; + } + + mod = sFriendshipEventModifiers[event][friendshipLevel]; + if (mod > 0 && holdEffect == HOLD_EFFECT_FRIENDSHIP_UP) + // 50% increase, rounding down + mod = (150 * mod) / 100; + + friendship += mod; + if (mod > 0) + { + if (GetMonData(mon, MON_DATA_POKEBALL, NULL) == ITEM_LUXURY_BALL) + friendship++; + if (GetMonData(mon, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) + friendship++; + } + + if (friendship < 0) + friendship = 0; + if (friendship > MAX_FRIENDSHIP) + friendship = MAX_FRIENDSHIP; + + SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship); } } @@ -5278,14 +5290,10 @@ void RandomlyGivePartyPokerus(struct Pokemon *party) do { - do - { - rnd = Random() % PARTY_SIZE; - mon = &party[rnd]; - } - while (!GetMonData(mon, MON_DATA_SPECIES, 0)); + rnd = Random() % PARTY_SIZE; + mon = &party[rnd]; } - while (GetMonData(mon, MON_DATA_IS_EGG, 0)); + while (!GetMonData(mon, MON_DATA_SPECIES, 0) || GetMonData(mon, MON_DATA_IS_EGG, 0)); if (!(CheckPartyHasHadPokerus(party, gBitTable[rnd]))) { diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index 950613dccc..d7f9e24029 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -6,8 +6,7 @@ #include "pokemon_icon.h" #include "sprite.h" #include "data.h" - -#define POKE_ICON_BASE_PAL_TAG 56000 +#include "constants/pokemon_icon.h" struct MonIconSpriteTemplate { diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 396f8ccb52..a3c7324e0e 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -41,6 +41,7 @@ #include "constants/moves.h" #include "constants/rgb.h" #include "constants/songs.h" +#include "constants/pokemon_icon.h" /* NOTE: This file is large. Some general groups of functions have @@ -227,7 +228,7 @@ enum { #define BOXID_CANCELED 201 enum { - PALTAG_MON_ICON_0 = 56000, + PALTAG_MON_ICON_0 = POKE_ICON_BASE_PAL_TAG, PALTAG_MON_ICON_1, // Used implicitly in CreateMonIconSprite PALTAG_MON_ICON_2, // Used implicitly in CreateMonIconSprite PALTAG_MON_ICON_3, // Used implicitly in CreateMonIconSprite diff --git a/test/battle/ability/magic_guard.c b/test/battle/ability/magic_guard.c new file mode 100644 index 0000000000..69e8bac9c7 --- /dev/null +++ b/test/battle/ability/magic_guard.c @@ -0,0 +1,17 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Magic Guard prevents recoil damage to the user") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_DOUBLE_EDGE].recoil == 33); + PLAYER(SPECIES_CLEFABLE) { Ability(ABILITY_MAGIC_GUARD); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DOUBLE_EDGE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_EDGE, player); + HP_BAR(opponent); + NOT HP_BAR(player); + } +} diff --git a/test/battle/ability/mycelium_might.c b/test/battle/ability/mycelium_might.c index 1039fca34f..8491aede51 100644 --- a/test/battle/ability/mycelium_might.c +++ b/test/battle/ability/mycelium_might.c @@ -43,3 +43,27 @@ SINGLE_BATTLE_TEST("Mycelium Might ignores opposing abilities") NOT ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); } } + +SINGLE_BATTLE_TEST("Mycelium Might vs Stall action order depends on speed") +{ + u32 speed; + PARAMETRIZE { speed = 99; } + PARAMETRIZE { speed = 101; } + GIVEN { + PLAYER(SPECIES_TOEDSCOOL) { Speed(100); Ability(ABILITY_MYCELIUM_MIGHT); } + OPPONENT(SPECIES_SABLEYE) { Speed(speed); Ability(ABILITY_STALL);} + } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_CELEBRATE); } + } SCENE { + if (speed < 100) + { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + } + else + { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + } + } +} diff --git a/test/battle/ability/own_tempo.c b/test/battle/ability/own_tempo.c index 04697aad32..d5a6f58a72 100644 --- a/test/battle/ability/own_tempo.c +++ b/test/battle/ability/own_tempo.c @@ -1,29 +1,24 @@ #include "global.h" #include "test/battle.h" -SINGLE_BATTLE_TEST("Own Tempo prevents intimidate") +SINGLE_BATTLE_TEST("Own Tempo prevents Intimidate but no other stat down changes") { - s16 turnOneHit; - s16 turnTwoHit; - GIVEN { ASSUME(B_UPDATED_INTIMIDATE >= GEN_8); - PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); }; + ASSUME(gMovesInfo[MOVE_CONFUSE_RAY].effect == EFFECT_CONFUSE); PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }; OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); }; } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } - TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TACKLE); } - + TURN { MOVE(player, MOVE_SCARY_FACE); } } SCENE { - HP_BAR(player, captureDamage: &turnOneHit); ABILITY_POPUP(player, ABILITY_INTIMIDATE); - NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } ABILITY_POPUP(opponent, ABILITY_OWN_TEMPO); MESSAGE("Foe Slowpoke's Own Tempo prevents stat loss!"); - HP_BAR(player, captureDamage: &turnTwoHit); - } THEN { - EXPECT_EQ(turnOneHit, turnTwoHit); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_OWN_TEMPO); + MESSAGE("Foe Slowpoke's Own Tempo prevents stat loss!"); + } } } diff --git a/test/battle/ability/shield_dust.c b/test/battle/ability/shield_dust.c index 24eb53a117..25ab1a5c75 100644 --- a/test/battle/ability/shield_dust.c +++ b/test/battle/ability/shield_dust.c @@ -124,6 +124,7 @@ SINGLE_BATTLE_TEST("Shield Dust does not block self-targeting effects, primary o DOUBLE_BATTLE_TEST("Shield Dust does or does not block Sparkling Aria depending on number of targets hit") { u32 moveToUse; + KNOWN_FAILING; PARAMETRIZE { moveToUse = MOVE_FINAL_GAMBIT; } PARAMETRIZE { moveToUse = MOVE_TACKLE; } GIVEN { @@ -149,6 +150,7 @@ DOUBLE_BATTLE_TEST("Shield Dust does or does not block Sparkling Aria depending SINGLE_BATTLE_TEST("Shield Dust blocks Sparkling Aria in singles") { + KNOWN_FAILING; GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_VIVILLON) { Ability(ABILITY_SHIELD_DUST); Status1(STATUS1_BURN); } diff --git a/test/battle/ai.c b/test/battle/ai.c index 11702a0c5a..28e541befd 100644 --- a/test/battle/ai.c +++ b/test/battle/ai.c @@ -882,3 +882,76 @@ AI_SINGLE_BATTLE_TEST("AI will choose Superpower over Outrage with Contrary") } } } + +AI_DOUBLE_BATTLE_TEST("AI will not choose Earthquake if it damages the partner") +{ + u32 species; + + PARAMETRIZE { species = SPECIES_CHARIZARD; } + PARAMETRIZE { species = SPECIES_CHARMANDER; } + PARAMETRIZE { species = SPECIES_CHIKORITA; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_EARTHQUAKE].target == MOVE_TARGET_FOES_AND_ALLY); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PHANPY) { Moves(MOVE_EARTHQUAKE, MOVE_TACKLE); } + OPPONENT(species) { Moves(MOVE_CELEBRATE); } + } WHEN { + if (species == SPECIES_CHARIZARD) + TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } + else + TURN { EXPECT_MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); } + } +} + +AI_DOUBLE_BATTLE_TEST("AI will choose Earthquake if partner is not alive") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_EARTHQUAKE].target == MOVE_TARGET_FOES_AND_ALLY); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EARTHQUAKE, MOVE_TACKLE); } + OPPONENT(SPECIES_PIKACHU) { HP(1); Moves(MOVE_CELEBRATE); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentRight); } + TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } + } +} + +AI_DOUBLE_BATTLE_TEST("AI will choose Earthquake if it kill an opposing mon and does 1/3 of damage to AI") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_EARTHQUAKE].target == MOVE_TARGET_FOES_AND_ALLY); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EARTHQUAKE, MOVE_TACKLE); } + OPPONENT(SPECIES_PARAS) { Moves(MOVE_CELEBRATE); } + } WHEN { + TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } + } +} + +AI_DOUBLE_BATTLE_TEST("AI will the see a corresponding absorbing ability on partner to one of its moves") +{ + u32 ability; + PARAMETRIZE { ability = ABILITY_LIGHTNING_ROD; } + PARAMETRIZE { ability = ABILITY_STATIC; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_DISCHARGE].target == MOVE_TARGET_FOES_AND_ALLY); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_DISCHARGE, MOVE_TACKLE); } + OPPONENT(SPECIES_PIKACHU) { HP(1); Ability(ability); Moves(MOVE_CELEBRATE); } + } WHEN { + if (ability == ABILITY_LIGHTNING_ROD) + TURN { EXPECT_MOVE(opponentLeft, MOVE_DISCHARGE); } + else + TURN { EXPECT_MOVE(opponentLeft, MOVE_TACKLE); } + } +} diff --git a/test/battle/gimmick/dynamax.c b/test/battle/gimmick/dynamax.c index a9ee2fe4d0..1e90703f33 100644 --- a/test/battle/gimmick/dynamax.c +++ b/test/battle/gimmick/dynamax.c @@ -1470,3 +1470,19 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves don't execute effects on fainted battler NOT MESSAGE("Foe Wobbuffet's Speed fell!"); } } + +SINGLE_BATTLE_TEST("(DYNAMAX) Moxie clones can be triggered by Max Moves fainting opponents") +{ + ASSUME(gMovesInfo[MOVE_WATERFALL].power > 0); + GIVEN { + PLAYER(SPECIES_GYARADOS) { Ability(ABILITY_MOXIE); } + OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_WATERFALL, dynamax: TRUE); SEND_OUT(opponent, 1); } + } SCENE { + MESSAGE("Foe Wobbuffet fainted!"); + ABILITY_POPUP(player, ABILITY_MOXIE); + MESSAGE("Gyarados's Moxie raised its Attack!"); + } +} diff --git a/test/battle/hold_effect/quick_claw.c b/test/battle/hold_effect/quick_claw.c index 3e8cd4d652..b8b845ec25 100644 --- a/test/battle/hold_effect/quick_claw.c +++ b/test/battle/hold_effect/quick_claw.c @@ -4,9 +4,10 @@ ASSUMPTIONS { ASSUME(gItemsInfo[ITEM_QUICK_CLAW].holdEffect == HOLD_EFFECT_QUICK_CLAW); + ASSUME(gItemsInfo[ITEM_QUICK_CLAW].holdEffectParam == 20); } -SINGLE_BATTLE_TEST("Quick Claw activates 10% of the time") +SINGLE_BATTLE_TEST("Quick Claw activates 20% of the time") { PASSES_RANDOMLY(2, 10, RNG_QUICK_CLAW); GIVEN { diff --git a/test/battle/item_effect/covert_cloak.c b/test/battle/item_effect/covert_cloak.c index 4953ef4682..4e00ece8f5 100644 --- a/test/battle/item_effect/covert_cloak.c +++ b/test/battle/item_effect/covert_cloak.c @@ -122,6 +122,7 @@ SINGLE_BATTLE_TEST("Covert Cloak does not block self-targeting effects, primary DOUBLE_BATTLE_TEST("Covert Cloak does or does not block Sparkling Aria depending on number of targets hit") { u32 moveToUse; + KNOWN_FAILING; PARAMETRIZE { moveToUse = MOVE_FINAL_GAMBIT; } PARAMETRIZE { moveToUse = MOVE_TACKLE; } GIVEN { @@ -147,6 +148,7 @@ DOUBLE_BATTLE_TEST("Covert Cloak does or does not block Sparkling Aria depending SINGLE_BATTLE_TEST("Covert Cloak blocks Sparkling Aria in singles") { + KNOWN_FAILING; GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_COVERT_CLOAK); Status1(STATUS1_BURN); } diff --git a/test/battle/item_effect/heal_and_cure_status.c b/test/battle/item_effect/heal_and_cure_status.c index cde726e9ce..80719cf231 100644 --- a/test/battle/item_effect/heal_and_cure_status.c +++ b/test/battle/item_effect/heal_and_cure_status.c @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Full Restore restores a battler's HP and cures any primary s PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(300); Status1(status); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN{ USE_ITEM(player, ITEM_FULL_RESTORE, partyIndex: 0); } + TURN { USE_ITEM(player, ITEM_FULL_RESTORE, partyIndex: 0); } } SCENE { MESSAGE("Wobbuffet had its HP restored!"); if (status != STATUS1_NONE) { @@ -32,6 +32,35 @@ SINGLE_BATTLE_TEST("Full Restore restores a battler's HP and cures any primary s } } +SINGLE_BATTLE_TEST("Full Restore restores a party members HP and cures any primary status") +{ + u16 status; + 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_NONE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(300); Status1(status); } + PLAYER(SPECIES_WYNAUT) { HP(1); MaxHP(300); Status1(status); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_FULL_RESTORE, partyIndex: 1); } + TURN { SWITCH(player, 1); } + } SCENE { + MESSAGE("Wynaut had its HP restored!"); + if (status != STATUS1_NONE) { + MESSAGE("Wynaut had its status healed!"); // The message is not printed if status wasn't healed. + } + } THEN { + EXPECT_EQ(player->hp, player->maxHP); + EXPECT_EQ(player->species, SPECIES_WYNAUT); + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + SINGLE_BATTLE_TEST("Full Restore heals a battler from any primary status") { u16 status; @@ -54,6 +83,31 @@ SINGLE_BATTLE_TEST("Full Restore heals a battler from any primary status") } } +SINGLE_BATTLE_TEST("Full Restore heals a party member from any primary status") +{ + u16 status; + 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; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT) { Status1(status); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { USE_ITEM(player, ITEM_FULL_RESTORE, partyIndex: 1); } + TURN { SWITCH(player, 1); } + } SCENE { + NOT MESSAGE("Wynaut had its HP restored!"); // The message is not printed if mon has max HP. + MESSAGE("Wynaut had its status healed!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_WYNAUT); + EXPECT_EQ(player->status1, STATUS1_NONE); + } +} + SINGLE_BATTLE_TEST("Full Restore restores a battler's HP and cures confusion") { GIVEN { diff --git a/test/battle/item_effect/restore_pp.c b/test/battle/item_effect/restore_pp.c index 8691dcf1ed..5f2a50cd52 100644 --- a/test/battle/item_effect/restore_pp.c +++ b/test/battle/item_effect/restore_pp.c @@ -66,3 +66,30 @@ SINGLE_BATTLE_TEST("Max Elixir restores the PP of all of a battler's moves fully } TO_DO_BATTLE_TEST("Ether won't work if the selected move has all its PP") + +TO_DO_BATTLE_TEST("Elixir can be used if at least one move is missing PP in any slot") // The test system can't currently test this, in a test the item is used without running useability checks +/* +{ + u8 move1PP; + u8 move2PP; + u8 move3PP; + u8 move4PP; + PARAMETRIZE { move1PP = 30; move2PP = 30; move3PP = 20; move4PP = 10; } + PARAMETRIZE { move1PP = 40; move2PP = 20; move3PP = 20; move4PP = 10; } + PARAMETRIZE { move1PP = 40; move2PP = 30; move3PP = 10; move4PP = 10; } + PARAMETRIZE { move1PP = 40; move2PP = 30; move3PP = 20; move4PP = 0; } + GIVEN { + ASSUME(gItemsInfo[ITEM_ELIXIR].battleUsage == EFFECT_ITEM_RESTORE_PP); + ASSUME(gItemsInfo[ITEM_ELIXIR].type == ITEM_USE_PARTY_MENU); + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_MEDITATE, move1PP}, {MOVE_AGILITY, move2PP}, {MOVE_PSYBEAM, move3PP}, {MOVE_TRICK, move4PP}); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_ELIXIR, partyIndex: 0); } + } THEN { + EXPECT_EQ(player->pp[0], 40); + EXPECT_EQ(player->pp[1], 30); + EXPECT_EQ(player->pp[2], 20); + EXPECT_EQ(player->pp[3], 10); + } +} +*/ diff --git a/test/battle/move_effect/absorb.c b/test/battle/move_effect/absorb.c index 9ef63079f3..b0140a7a65 100644 --- a/test/battle/move_effect/absorb.c +++ b/test/battle/move_effect/absorb.c @@ -68,3 +68,6 @@ DOUBLE_BATTLE_TEST("Matcha Gatcha recovers 50% of the damage dealt from both tar EXPECT_MUL_EQ(damageRight, Q_4_12(-0.5), healedRight); } } + +TO_DO_BATTLE_TEST("Absorb recovers 50% of the damage dealt to a Substitute"); +TO_DO_BATTLE_TEST("Draining Kiss recovers 75% of the damage dealt"); // Tests .argument 's implementation diff --git a/test/battle/move_effect/accuracy_down.c b/test/battle/move_effect/accuracy_down.c index 0eccd65f22..a4a8ad49bf 100644 --- a/test/battle/move_effect/accuracy_down.c +++ b/test/battle/move_effect/accuracy_down.c @@ -6,7 +6,7 @@ ASSUMPTIONS ASSUME(gMovesInfo[MOVE_SAND_ATTACK].effect == EFFECT_ACCURACY_DOWN); } -SINGLE_BATTLE_TEST("Sand Attack lowers Accuracy") +SINGLE_BATTLE_TEST("Sand Attack lowers Accuracy by 1 stage") { ASSUME(gMovesInfo[MOVE_SCRATCH].accuracy == 100); PASSES_RANDOMLY(gMovesInfo[MOVE_SCRATCH].accuracy * 3 / 4, 100, RNG_ACCURACY); diff --git a/test/battle/move_effect/accuracy_down_2.c b/test/battle/move_effect/accuracy_down_2.c new file mode 100644 index 0000000000..fe680af286 --- /dev/null +++ b/test/battle/move_effect/accuracy_down_2.c @@ -0,0 +1,4 @@ +#include "global.h" +#include "test/battle.h" + +// There are no moves with EFFECT_ACCURACY_DOWN_2's effect ^^; diff --git a/test/battle/move_effect/accuracy_up.c b/test/battle/move_effect/accuracy_up.c new file mode 100644 index 0000000000..535f18c6cf --- /dev/null +++ b/test/battle/move_effect/accuracy_up.c @@ -0,0 +1,4 @@ +#include "global.h" +#include "test/battle.h" + +// There are no moves with EFFECT_ACCURACY_UP's effect ^^; diff --git a/test/battle/move_effect/accuracy_up_2.c b/test/battle/move_effect/accuracy_up_2.c new file mode 100644 index 0000000000..9a2e66bd03 --- /dev/null +++ b/test/battle/move_effect/accuracy_up_2.c @@ -0,0 +1,4 @@ +#include "global.h" +#include "test/battle.h" + +// There are no moves with EFFECT_ACCURACY_UP_2's effect ^^; diff --git a/test/battle/move_effect/acrobatics.c b/test/battle/move_effect/acrobatics.c new file mode 100644 index 0000000000..bc34719a42 --- /dev/null +++ b/test/battle/move_effect/acrobatics.c @@ -0,0 +1,5 @@ +#include "global.h" +#include "test/battle.h" + +TO_DO_BATTLE_TEST("Acrobatics doubles in power if the user has no held item"); +TO_DO_BATTLE_TEST("Acrobatics still doubles in power when Flying Gem is consumed"); diff --git a/test/battle/move_effect/acupressure.c b/test/battle/move_effect/acupressure.c new file mode 100644 index 0000000000..e7254485fc --- /dev/null +++ b/test/battle/move_effect/acupressure.c @@ -0,0 +1,59 @@ +#include "global.h" +#include "test/battle.h" + +TO_DO_BATTLE_TEST("Acupressure increases one of two stats by 2 stages at random"); +TO_DO_BATTLE_TEST("Acupressure doesn't try to increase a stat that has been maximized"); +TO_DO_BATTLE_TEST("Acupressure fails on the user if all of its stats are maximized"); +TO_DO_BATTLE_TEST("Acupressure fails on the ally if all of its stats are maximized"); +TO_DO_BATTLE_TEST("Acupressure works on the user if it's behind a Substitute (Gen5+)"); +TO_DO_BATTLE_TEST("Acupressure fails on its ally if it's behind a Substitute"); + +DOUBLE_BATTLE_TEST("Acupressure works on the ally if the user targeted itself but switched positions via Ally Switch") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_KADABRA); + OPPONENT(SPECIES_ABRA); + } WHEN { + TURN { MOVE(playerLeft, MOVE_ALLY_SWITCH); MOVE(playerRight, MOVE_ACUPRESSURE, target:playerRight); } + } SCENE { + MESSAGE("Wobbuffet used Ally Switch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ALLY_SWITCH, playerLeft); + MESSAGE("Wobbuffet and Wynaut switched places!"); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_ACUPRESSURE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); + NOT MESSAGE("But it failed!"); + } +} + +DOUBLE_BATTLE_TEST("Acupressure fails on the user if it targeted its ally but switched positions via Ally Switch") +{ + KNOWN_FAILING; // Tested in Gen 5, Acupressure fails here + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_KADABRA); + OPPONENT(SPECIES_ABRA); + } WHEN { + TURN { MOVE(playerLeft, MOVE_ALLY_SWITCH); MOVE(playerRight, MOVE_ACUPRESSURE, target:playerLeft); } + } SCENE { + MESSAGE("Wobbuffet used Ally Switch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ALLY_SWITCH, playerLeft); + MESSAGE("Wobbuffet and Wynaut switched places!"); + + MESSAGE("But it failed!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ACUPRESSURE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + } + } +} + +TO_DO_BATTLE_TEST("Acupressure works on the user if its side is protected by Crafty Shield"); +TO_DO_BATTLE_TEST("Acupressure fails on the ally if its side is protected by Crafty Shield"); + +// Triple Battles required to test +//TO_DO_BATTLE_TEST("Acupressure works on the ally if the user targeted itself but switched positions via Triple Battle shift before execution"); +//TO_DO_BATTLE_TEST("Acupressure fails on the user if it targeted its ally but switched positions via Triple Battle shift before execution"); diff --git a/test/battle/move_effect/after_you.c b/test/battle/move_effect/after_you.c index 91830abffd..fa6e47e0e2 100644 --- a/test/battle/move_effect/after_you.c +++ b/test/battle/move_effect/after_you.c @@ -51,3 +51,6 @@ DOUBLE_BATTLE_TEST("After You does nothing if the target has already moved") ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerRight); } } + +TO_DO_BATTLE_TEST("After You doesn't fail if the turner remains the same after After You (Gen8+)"); +TO_DO_BATTLE_TEST("After You ignores the effects of Quash"); diff --git a/test/battle/move_effect/ally_switch.c b/test/battle/move_effect/ally_switch.c index 1f07859c82..b3e902fc79 100644 --- a/test/battle/move_effect/ally_switch.c +++ b/test/battle/move_effect/ally_switch.c @@ -115,7 +115,7 @@ DOUBLE_BATTLE_TEST("Ally Switch does not redirect moves done by pokemon with Sta } } -DOUBLE_BATTLE_TEST("Ally Switch has no effect on parnter's chosen move") +DOUBLE_BATTLE_TEST("Ally Switch has no effect on partner's chosen move") { u16 chosenMove; struct BattlePokemon *chosenTarget = NULL; @@ -167,32 +167,6 @@ DOUBLE_BATTLE_TEST("Ally Switch - move fails if the target was ally which change } } -// Verified on Showdown, even though Bulbapedia says otherwise. -DOUBLE_BATTLE_TEST("Acupressure works after ally used Ally Switch") -{ - struct BattlePokemon *battlerTarget = NULL; - - PARAMETRIZE { battlerTarget = playerLeft; } - PARAMETRIZE { battlerTarget = playerRight; } - - GIVEN { - PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WYNAUT); - OPPONENT(SPECIES_KADABRA); - OPPONENT(SPECIES_ABRA); - } WHEN { - TURN { MOVE(playerLeft, MOVE_ALLY_SWITCH); MOVE(playerRight, MOVE_ACUPRESSURE, target:battlerTarget); } - } SCENE { - MESSAGE("Wobbuffet used Ally Switch!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_ALLY_SWITCH, playerLeft); - MESSAGE("Wobbuffet and Wynaut switched places!"); - - ANIMATION(ANIM_TYPE_MOVE, MOVE_ACUPRESSURE); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, battlerTarget); - NOT MESSAGE("But it failed!"); - } -} - DOUBLE_BATTLE_TEST("Ally Switch increases the Protect-like moves counter") { GIVEN { @@ -228,3 +202,6 @@ DOUBLE_BATTLE_TEST("Ally Switch works if ally used two-turn move like Dig") HP_BAR(opponentRight); } } + +// Triple Battles required to test +//TO_DO_BATTLE_TEST("Ally Switch fails if the user is in the middle of the field in a Triple Battle"); diff --git a/test/battle/move_effect/aqua_ring.c b/test/battle/move_effect/aqua_ring.c new file mode 100644 index 0000000000..c31bfbd8df --- /dev/null +++ b/test/battle/move_effect/aqua_ring.c @@ -0,0 +1,6 @@ +#include "global.h" +#include "test/battle.h" + +TO_DO_BATTLE_TEST("Aqua Ring recovers 1/16th HP at end of turn"); +TO_DO_BATTLE_TEST("Aqua Ring can be used under Heal Block but will not heal the user"); +TO_DO_BATTLE_TEST("Aqua Ring can be Baton Passed"); diff --git a/test/battle/move_effect/aromatic_mist.c b/test/battle/move_effect/aromatic_mist.c new file mode 100644 index 0000000000..516ed14f16 --- /dev/null +++ b/test/battle/move_effect/aromatic_mist.c @@ -0,0 +1,5 @@ +#include "global.h" +#include "test/battle.h" + +TO_DO_BATTLE_TEST("Aromatic Mist raises Sp. Defense of a target ally by 1 stage"); +TO_DO_BATTLE_TEST("Aromatic Mist fails in Single Battles"); diff --git a/test/battle/move_effect/assist.c b/test/battle/move_effect/assist.c index cbd73b2857..0c9a0b6128 100644 --- a/test/battle/move_effect/assist.c +++ b/test/battle/move_effect/assist.c @@ -6,6 +6,18 @@ ASSUMPTIONS ASSUME(gMovesInfo[MOVE_ASSIST].effect == EFFECT_ASSIST); } +TO_DO_BATTLE_TEST("Assist randomly calls a move from any party member"); +TO_DO_BATTLE_TEST("Assist counts all instances of the same move as separate"); +TO_DO_BATTLE_TEST("Assist can call moves with no PP left"); +TO_DO_BATTLE_TEST("Assist can call moves from a fainted party member"); +TO_DO_BATTLE_TEST("Assist can call moves that are blocked to its partners"); // Eg. double battle parter blocked by Disable +TO_DO_BATTLE_TEST("Assist can only call the original moves of a Transformed partner (Gen4 only)"); +TO_DO_BATTLE_TEST("Assist can only call the current moves of a Transformed partner (Gen5+)"); +TO_DO_BATTLE_TEST("Assist cannot call a Mimicked move (Gen4 only)"); +TO_DO_BATTLE_TEST("Assist can call a Mimicked move but not the original Mimic (Gen5+)"); +TO_DO_BATTLE_TEST("Assist can call moves in unhatched Eggs (Gen5 only)"); +TO_DO_BATTLE_TEST("Assist can be used by wild Pokémon in Wild Double Battles, even if the partner faints"); + SINGLE_BATTLE_TEST("Assist fails if there are no valid moves to choose from") { GIVEN { diff --git a/test/battle/move_effect/assurance.c b/test/battle/move_effect/assurance.c new file mode 100644 index 0000000000..e6cbf72b9f --- /dev/null +++ b/test/battle/move_effect/assurance.c @@ -0,0 +1,8 @@ +#include "global.h" +#include "test/battle.h" + +TO_DO_BATTLE_TEST("Assurance doubles in power if the target has been damaged in the same turn - Recoil"); +TO_DO_BATTLE_TEST("Assurance doubles in power if the target has been damaged in the same turn - Life Orb"); +TO_DO_BATTLE_TEST("Assurance doubles in power if the target has been damaged in the same turn - Crash"); +TO_DO_BATTLE_TEST("Assurance doubles in power if the target has been damaged in the same turn - Confusion"); +TO_DO_BATTLE_TEST("Assurance doubles in power if the target has been damaged in the same turn - Rocky Helmet"); diff --git a/test/battle/move_effect/attack_accuracy_up.c b/test/battle/move_effect/attack_accuracy_up.c new file mode 100644 index 0000000000..025a0cb86f --- /dev/null +++ b/test/battle/move_effect/attack_accuracy_up.c @@ -0,0 +1,4 @@ +#include "global.h" +#include "test/battle.h" + +TO_DO_BATTLE_TEST("Hone Claws increases Attack and Accuracy by one stage each"); diff --git a/test/battle/move_effect/attack_down.c b/test/battle/move_effect/attack_down.c index e9b3a7c23e..457d122281 100644 --- a/test/battle/move_effect/attack_down.c +++ b/test/battle/move_effect/attack_down.c @@ -6,7 +6,7 @@ ASSUMPTIONS ASSUME(gMovesInfo[MOVE_GROWL].effect == EFFECT_ATTACK_DOWN); } -SINGLE_BATTLE_TEST("Growl lowers Attack", s16 damage) +SINGLE_BATTLE_TEST("Growl lowers Attack by 1 stage", s16 damage) { bool32 lowerAttack; PARAMETRIZE { lowerAttack = FALSE; } diff --git a/test/battle/move_effect/attack_down_2.c b/test/battle/move_effect/attack_down_2.c new file mode 100644 index 0000000000..7b62294a76 --- /dev/null +++ b/test/battle/move_effect/attack_down_2.c @@ -0,0 +1,32 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_CHARM].effect == EFFECT_ATTACK_DOWN_2); +} + +SINGLE_BATTLE_TEST("Charm lowers Attack by 2 stages", s16 damage) +{ + bool32 lowerAttack; + PARAMETRIZE { lowerAttack = FALSE; } + PARAMETRIZE { lowerAttack = TRUE; } + GIVEN { + ASSUME(gMovesInfo[MOVE_TACKLE].category == DAMAGE_CATEGORY_PHYSICAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (lowerAttack) TURN { MOVE(player, MOVE_CHARM); } + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + if (lowerAttack) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CHARM, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Attack harshly fell!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[1].damage, Q_4_12(2.0), results[0].damage); + } +} diff --git a/test/battle/move_effect/attack_spatk_up.c b/test/battle/move_effect/attack_spatk_up.c new file mode 100644 index 0000000000..b5aa2418a2 --- /dev/null +++ b/test/battle/move_effect/attack_spatk_up.c @@ -0,0 +1,39 @@ +#include "global.h" +#include "test/battle.h" + + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_WORK_UP].effect == EFFECT_ATTACK_SPATK_UP); +} + +SINGLE_BATTLE_TEST("Work Up raises Attack and Sp. Attack by 1 stage each", s16 damage) +{ + bool32 raiseStats; + u32 move; + PARAMETRIZE { raiseStats = FALSE; move = MOVE_TACKLE; } + PARAMETRIZE { raiseStats = TRUE; move = MOVE_TACKLE; } + PARAMETRIZE { raiseStats = FALSE; move = MOVE_SWIFT; } + PARAMETRIZE { raiseStats = TRUE; move = MOVE_SWIFT; } + GIVEN { + ASSUME(gMovesInfo[MOVE_TACKLE].category == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(gMovesInfo[MOVE_SWIFT].category == DAMAGE_CATEGORY_SPECIAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (raiseStats) TURN { MOVE(player, MOVE_WORK_UP); } + TURN { MOVE(player, move); } + } SCENE { + if (raiseStats) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WORK_UP, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's Attack rose!"); + MESSAGE("Wobbuffet's Sp. Atk rose!"); + } + ANIMATION(ANIM_TYPE_MOVE, move, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + EXPECT_MUL_EQ(results[2].damage, Q_4_12(1.5), results[3].damage); + } +} diff --git a/test/battle/move_effect/attack_up.c b/test/battle/move_effect/attack_up.c index bf4b830370..da878fb60d 100644 --- a/test/battle/move_effect/attack_up.c +++ b/test/battle/move_effect/attack_up.c @@ -6,7 +6,7 @@ ASSUMPTIONS ASSUME(gMovesInfo[MOVE_MEDITATE].effect == EFFECT_ATTACK_UP); } -SINGLE_BATTLE_TEST("Meditate raises Attack", s16 damage) +SINGLE_BATTLE_TEST("Meditate raises Attack by 1 stage", s16 damage) { bool32 raiseAttack; PARAMETRIZE { raiseAttack = FALSE; } diff --git a/test/battle/move_effect/attack_up_2.c b/test/battle/move_effect/attack_up_2.c new file mode 100644 index 0000000000..1f44efe9e3 --- /dev/null +++ b/test/battle/move_effect/attack_up_2.c @@ -0,0 +1,32 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_SWORDS_DANCE].effect == EFFECT_ATTACK_UP_2); +} + +SINGLE_BATTLE_TEST("Swords Dance raises Attack by 2 stages", s16 damage) +{ + bool32 raiseAttack; + PARAMETRIZE { raiseAttack = FALSE; } + PARAMETRIZE { raiseAttack = TRUE; } + GIVEN { + ASSUME(gMovesInfo[MOVE_TACKLE].category == DAMAGE_CATEGORY_PHYSICAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (raiseAttack) TURN { MOVE(player, MOVE_SWORDS_DANCE); } + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + if (raiseAttack) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's Attack sharply rose!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + } +} diff --git a/test/battle/move_effect/attack_up_user_ally.c b/test/battle/move_effect/attack_up_user_ally.c index 706b6311a3..1d623c2bbd 100644 --- a/test/battle/move_effect/attack_up_user_ally.c +++ b/test/battle/move_effect/attack_up_user_ally.c @@ -6,7 +6,7 @@ ASSUMPTIONS ASSUME(gMovesInfo[MOVE_HOWL].effect == EFFECT_ATTACK_UP_USER_ALLY); } -SINGLE_BATTLE_TEST("Howl raises user's Attack", s16 damage) +SINGLE_BATTLE_TEST("Howl raises user's Attack by 1 stage", s16 damage) { bool32 raiseAttack; PARAMETRIZE { raiseAttack = FALSE; } @@ -31,7 +31,7 @@ SINGLE_BATTLE_TEST("Howl raises user's Attack", s16 damage) } } -DOUBLE_BATTLE_TEST("Howl raises user's and partner's Attack", s16 damageLeft, s16 damageRight) +DOUBLE_BATTLE_TEST("Howl raises user's and partner's Attack by 1 stage", s16 damageLeft, s16 damageRight) { bool32 raiseAttack; PARAMETRIZE { raiseAttack = FALSE; } diff --git a/test/battle/move_effect/attract.c b/test/battle/move_effect/attract.c new file mode 100644 index 0000000000..748a88a950 --- /dev/null +++ b/test/battle/move_effect/attract.c @@ -0,0 +1,7 @@ +#include "global.h" +#include "test/battle.h" + +TO_DO_BATTLE_TEST("Attract causes the target to become infatuated with the user if they have opposite genders"); +TO_DO_BATTLE_TEST("Attract ignores type immunity"); +TO_DO_BATTLE_TEST("Attract bypasses Substitute"); +TO_DO_BATTLE_TEST("Attract fails if the target is already infatuated"); diff --git a/test/battle/move_effect/aura_wheel.c b/test/battle/move_effect/aura_wheel.c index 154065c281..fa4190dbdf 100644 --- a/test/battle/move_effect/aura_wheel.c +++ b/test/battle/move_effect/aura_wheel.c @@ -49,3 +49,5 @@ SINGLE_BATTLE_TEST("Aura Wheel changes type depending on Morpeko's form") MESSAGE("It's super effective!"); } } + +TO_DO_BATTLE_TEST("Aura Wheel can be used by Pokémon transformed into Morpeko"); diff --git a/test/battle/move_effect/autotomize.c b/test/battle/move_effect/autotomize.c new file mode 100644 index 0000000000..79a71ecbc7 --- /dev/null +++ b/test/battle/move_effect/autotomize.c @@ -0,0 +1,12 @@ +#include "global.h" +#include "test/battle.h" + +TO_DO_BATTLE_TEST("Autotomize increases Speed by 2 stages"); +TO_DO_BATTLE_TEST("Autotomize decreases weight by 100kg (220 lbs.)"); +TO_DO_BATTLE_TEST("Autotomize can be used multiple times to decrease weight each time"); +TO_DO_BATTLE_TEST("Autotomize cannot decrease weight below 0.1kg (0.2 lbs)"); +TO_DO_BATTLE_TEST("Autotomize's weight reduction cannot be Baton Passed"); +TO_DO_BATTLE_TEST("Autotomize's weight reduction cannot be removed by Haze"); +TO_DO_BATTLE_TEST("Autotomize's weight reduction is reset upon form change (Gen6+)"); +TO_DO_BATTLE_TEST("Autotomize's weight reduction is reset upon switch"); +TO_DO_BATTLE_TEST("Autotomize's weight reduction is reset upon fainting"); diff --git a/test/battle/move_effect/belch.c b/test/battle/move_effect/belch.c new file mode 100644 index 0000000000..34e026abe5 --- /dev/null +++ b/test/battle/move_effect/belch.c @@ -0,0 +1,52 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_BELCH].effect == EFFECT_BELCH); + ASSUME(gMovesInfo[MOVE_MUD_SHOT].type == TYPE_GROUND); + ASSUME(gItemsInfo[ITEM_SHUCA_BERRY].holdEffect == HOLD_EFFECT_RESIST_BERRY); + ASSUME(gItemsInfo[ITEM_SHUCA_BERRY].holdEffectParam == TYPE_GROUND); + ASSUME(gItemsInfo[ITEM_SHUCA_BERRY].pocket == POCKET_BERRIES); + ASSUME(gItemsInfo[ITEM_ORAN_BERRY].pocket == POCKET_BERRIES); +} + +AI_SINGLE_BATTLE_TEST("AI: Belch has nonzero score after eating a berry") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_BAYLEEF) { Level(18); Moves(MOVE_MUD_SHOT, MOVE_TACKLE); } + OPPONENT(SPECIES_PIKACHU) { Level(15); Item(ITEM_SHUCA_BERRY); Moves(MOVE_BELCH, MOVE_TACKLE); } + } WHEN { + TURN { MOVE(player, MOVE_MUD_SHOT); EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_BELCH);} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BELCH, opponent); + } +} + +SINGLE_BATTLE_TEST("Belch cannot be used if the user has not eaten a berry") +{ + u16 item = 0; + PARAMETRIZE { item = ITEM_NONE; } + PARAMETRIZE { item = ITEM_ORAN_BERRY; } + GIVEN { + PLAYER(SPECIES_SKWOVET) { Item(item); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (item == ITEM_NONE) + TURN { MOVE(player, MOVE_BELCH, allowed: FALSE); MOVE(player, MOVE_CELEBRATE); } + else { + TURN { MOVE(player, MOVE_STUFF_CHEEKS); } + TURN { MOVE(player, MOVE_BELCH); } + } + } SCENE { + if (item == ITEM_NONE) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + } + else { + ANIMATION(ANIM_TYPE_MOVE, MOVE_STUFF_CHEEKS, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BELCH, player); + } + } +} diff --git a/test/battle/move_effect/explosion.c b/test/battle/move_effect/explosion.c index 10e9feaa80..a45a465ba2 100644 --- a/test/battle/move_effect/explosion.c +++ b/test/battle/move_effect/explosion.c @@ -123,3 +123,25 @@ SINGLE_BATTLE_TEST("Explosion does not trigger Destiny Bond") NOT HP_BAR(opponent); } } + +DOUBLE_BATTLE_TEST("Explosion boosted by Galvanize is correctly blocked by Volt Absorb") +{ + GIVEN { + PLAYER(SPECIES_GEODUDE_ALOLAN) { Ability(ABILITY_GALVANIZE); } + PLAYER(SPECIES_WYNAUT) { HP(1); } + OPPONENT(SPECIES_LANTURN) { Ability(ABILITY_VOLT_ABSORB); } + OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_EXPLOSION); } + } SCENE { + MESSAGE("Geodude used Explosion!"); + HP_BAR(playerLeft, hp: 0); + ABILITY_POPUP(opponentLeft, ABILITY_VOLT_ABSORB); + NOT HP_BAR(opponentLeft, hp: 0); + HP_BAR(playerRight, hp: 0); + MESSAGE("Wynaut fainted!"); + HP_BAR(opponentRight, hp: 0); + MESSAGE("Foe Wobbuffet fainted!"); + MESSAGE("Geodude fainted!"); + } +} diff --git a/test/battle/move_effect/future_sight.c b/test/battle/move_effect/future_sight.c index 7ebac1ac97..fa78461a9d 100644 --- a/test/battle/move_effect/future_sight.c +++ b/test/battle/move_effect/future_sight.c @@ -5,6 +5,8 @@ ASSUMPTIONS { ASSUME(gMovesInfo[MOVE_SEED_FLARE].power == gMovesInfo[MOVE_FUTURE_SIGHT].power); ASSUME(gMovesInfo[MOVE_SEED_FLARE].category == gMovesInfo[MOVE_FUTURE_SIGHT].category); + ASSUME(gMovesInfo[MOVE_FUTURE_SIGHT].effect == EFFECT_FUTURE_SIGHT); + ASSUME(gMovesInfo[MOVE_FUTURE_SIGHT].power > 0); } SINGLE_BATTLE_TEST("Future Sight uses Sp. Atk stat of the original user without modifiers") @@ -153,3 +155,22 @@ SINGLE_BATTLE_TEST("Future Sight will miss timing if target faints by residual d NOT MESSAGE("Foe Wynaut took the Future Sight attack!"); } } + +SINGLE_BATTLE_TEST("Future Sight breaks Focus Sash and doesn't make the holder endure another move") +{ + ASSUME(gMovesInfo[MOVE_PSYCHIC].power > 0); + ASSUME(gItemsInfo[ITEM_FOCUS_SASH].holdEffect == HOLD_EFFECT_FOCUS_SASH); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PIDGEY) { Level(1); Item(ITEM_FOCUS_SASH); } + } WHEN { + TURN { MOVE(player, MOVE_FUTURE_SIGHT); } + TURN { } + TURN { } + TURN { MOVE(player, MOVE_PSYCHIC); } + } SCENE { + MESSAGE("Foe Pidgey hung on using its Focus Sash!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_PSYCHIC, player); + MESSAGE("Foe Pidgey fainted!"); + } +} diff --git a/test/battle/move_effect/max_hp_50_recoil.c b/test/battle/move_effect/max_hp_50_recoil.c index 8d5cbdaed2..1ac98854e0 100644 --- a/test/battle/move_effect/max_hp_50_recoil.c +++ b/test/battle/move_effect/max_hp_50_recoil.c @@ -91,8 +91,9 @@ SINGLE_BATTLE_TEST("Steel Beam hp loss is prevented by Magic Guard") } WHEN { TURN { MOVE(player, MOVE_STEEL_BEAM); } } SCENE { - NOT HP_BAR(player); ANIMATION(ANIM_TYPE_MOVE, MOVE_STEEL_BEAM, player); + HP_BAR(opponent); + NOT HP_BAR(player); } } diff --git a/test/battle/move_effect/mind_blown.c b/test/battle/move_effect/mind_blown.c index f1b7d8b98a..da39cf18d7 100644 --- a/test/battle/move_effect/mind_blown.c +++ b/test/battle/move_effect/mind_blown.c @@ -114,8 +114,9 @@ SINGLE_BATTLE_TEST("Mind Blown hp loss is prevented by Magic Guard") } WHEN { TURN { MOVE(player, MOVE_MIND_BLOWN); } } SCENE { - NOT HP_BAR(player); ANIMATION(ANIM_TYPE_MOVE, MOVE_MIND_BLOWN, player); + HP_BAR(opponent); + NOT HP_BAR(player); } } diff --git a/test/battle/move_effect/stuff_cheeks.c b/test/battle/move_effect/stuff_cheeks.c index a7a4ab1d34..3bb3f22925 100644 --- a/test/battle/move_effect/stuff_cheeks.c +++ b/test/battle/move_effect/stuff_cheeks.c @@ -103,29 +103,3 @@ SINGLE_BATTLE_TEST("Stuff Cheeks fails if the user's berry is removed before the MESSAGE("But it failed!"); } } - -SINGLE_BATTLE_TEST("Belch cannot be used if the user has not eaten a berry") -{ - u16 item = 0; - PARAMETRIZE { item = ITEM_NONE; } - PARAMETRIZE { item = ITEM_ORAN_BERRY; } - GIVEN { - PLAYER(SPECIES_SKWOVET) { Item(item); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - if (item == ITEM_NONE) - TURN { MOVE(player, MOVE_BELCH, allowed: FALSE); MOVE(player, MOVE_CELEBRATE); } - else { - TURN { MOVE(player, MOVE_STUFF_CHEEKS); } - TURN { MOVE(player, MOVE_BELCH); } - } - } SCENE { - if (item == ITEM_NONE) { - ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); - } - else { - ANIMATION(ANIM_TYPE_MOVE, MOVE_STUFF_CHEEKS, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_BELCH, player); - } - } -} diff --git a/test/battle/terrain/grassy.c b/test/battle/terrain/grassy.c index 1cb846dd41..af0776d3df 100644 --- a/test/battle/terrain/grassy.c +++ b/test/battle/terrain/grassy.c @@ -68,7 +68,7 @@ SINGLE_BATTLE_TEST("Grassy Terrain decreases power of Earthquake and Bulldoze by PARAMETRIZE { terrain = TRUE; move = MOVE_BULLDOZE; } // 3 GIVEN { ASSUME(gMovesInfo[MOVE_EARTHQUAKE].effect == EFFECT_EARTHQUAKE); - ASSUME(gMovesInfo[MOVE_BULLDOZE].effect == EFFECT_BULLDOZE); + ASSUME(gMovesInfo[MOVE_BULLDOZE].effect == EFFECT_EARTHQUAKE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN {