github rh-hideout/pokeemerald-expansion expansion/1.17.0
Expansion 1.17.0

3 hours ago
## 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.17.0
`.

🌋 REFACTORS 🌋

📜 = Uses a migration script.

  • Mass outbreak by @FosterProgramming in #9927
    • Adds new script commands and debug menu actions to interact with mass outbreak, you can read more about it in the docs
  • Additional trainer slides by @grintoul1 in #9211
  • Consolidation of Pokédex Files by @HashtagMarky in #9518
    Any changes made to the moved functions from pokedex_plus_hgss.c should be copied to their counterpart in pokedex.c.
  • Rework egg creation and hatching mechanisms by @FosterProgramming in #9878
    • Properties inherited by egg are now more cartridge accurate
    • Hatched eggs preserve pokemon properties like shinyness
    • Added an IsEgg argument to givemon script command
  • Consolidate confuse flavor hold effects by @Bassoonian in #10163
  • Door Size Refactor by @agsmgmaster64 in #9147
  • Move pre attack effects and damage calc to canceler by @AlexOn1ine in #10220
  • Use a single function for FillPartnerParty and CreateNPCTrainerPartyFromTrainer by @FosterProgramming in #9440
    • The config B_TRAINER_MON_RANDOM_ABILITY that decides the abilties of trainers mon with no explicit ability has now 3 different values: 0 is the previous FALSE and will give the mon the ability in the first slot, 1 will give the mon any non-hidden ability similar to wild pokemon and 2 is the previous TRUE and will give any ability (a bug where some abilities had higher chance to appear for some mons was fixed)
    • SPECIAL_BATTLE_MULTI changed to use callnative BattleSetup_StartMultiBattle instead
  • More mon generation cleanup by @FosterProgramming in #9970
    • More consistent behavior between force shiny/no shiny flag and createmon/givemon shinyMode. Now The force shinyness flags will only apply if the mon was created in the default shiny mode (SHINY_MODE_RANDOM). SHINY_MODE_ALWAYS and SHINY_MODE_NEVER will take priority over the flags
  • Adds MOVE_EFFECT_RANDOM_FROM_LIST to replace Tri Attack and Dire Claw by @PhallenTree in #10299
  • Remove end2 (merge end and end2) by @AlexOn1ine in #10311
  • Refactor dynamic move category and remove Present script by @AlexOn1ine in #10300
  • Adjust TargetFailure to be slightly more accurate by @AlexOn1ine in #10330
  • Battle Terrain Refactor by @fdeblasio in #10326
  • Adds moveanim, sound, hitanim and hpupdate to Canceler by @AlexOn1ine in #10362
  • Refactor absorb and change SetMoveEffect signature by @AlexOn1ine in #10426
  • Minor field move fixes (upcoming) by @FosterProgramming in #10548
    • Field move unlock functions were rewritten to use an intermediate unlock type. If you use custom unlock functions, you will likely need to rewrite them
  • Another debug menu refactor by @FosterProgramming in #10121
    • debug menu internals have been updated, you can now undo in the middle of a multi step selection
    • give mon complex now lets you choose gender in addition to other properties

🧬 General 🧬

Added

  • Scarlet and Violet Pokédex Skipping by @HashtagMarky in #9797
  • Dynamic trainerbattle Scripts by @u8-Salem in #8678
    • documentation for this feature as been added here
  • refactor(sprite): add sprite flag to create OBJWIN copies of oams by @miriamlefae in #10293
    • For subsprites the objWin copies are added to immediately after each subsprite's OAM.
    • Note that objWin sprites don't count towards the per-scanline sprite pixel limit .

Changed

  • Cleanup battle factory screen constants by @Gastly92 in #10108
  • Cleanup hard-coded values from battle room scripts by @Gastly92 in #10119
  • Add GEN_CHAMPIONS + move data by @kittenchilly in #10058
    • If you want changes from Pokemon Champions, change GEN_LATEST in general.h from GEN_9 to GEN_CHAMPIONS
  • Even more enums by @Bassoonian in #10127
  • Clean up unused variables and functions by @Bassoonian in #10152
  • Remove obsolete MAX_LEVEL_UP_MOVES by @FosterProgramming in #10166
  • Clean up header files by @Bassoonian in #10178
  • Type checking paradise by @Bassoonian in #10181
  • remove unused tilesets graphics by @FosterProgramming in #10184
  • Fixes to move fields and descriptions by @fdeblasio in #10251
  • Fix anim tests by @hedara90 in #10274
  • Use a single function for FillPartnerParty and CreateNPCTrainerPartyFromTrainer by @FosterProgramming in #9440
    • The config B_TRAINER_MON_RANDOM_ABILITY that decides the abilties of trainers mon with no explicit ability has now 3 different values: 0 is the previous FALSE and will give the mon the ability in the first slot, 1 will give the mon any non-hidden ability similar to wild pokemon and 2 is the previous TRUE and will give any ability (a bug where some abilities had higher chance to appear for some mons was fixed)
    • SPECIAL_BATTLE_MULTI changed to use callnative BattleSetup_StartMultiBattle instead
  • Remove unused functions by @Bassoonian in #10179
  • Replaced original sprite print behavior with actual sprite printer by @hedara90 in #10314
  • refactor(string): consolidate stringvar arrays with getter function by @miriamlefae in #10328
  • Migrated Pokedex strings by @fdeblasio in #10335
  • Fix argument field taking to much space in moves info by @AlexOn1ine in #10404
  • Rename sBattleWeatherInfo to gBattleWeatherInfo by @FosterProgramming in #10531
  • Remove empty file from repo by @Bassoonian in #10499
  • Pret merge (30th of July 2026) by @hedara90 in #10555
  • Another debug menu refactor by @FosterProgramming in #10121
    • debug menu internals have been updated, you can now undo in the middle of a multi step selection
    • give mon complex now lets you choose gender in addition to other properties
  • Remove leftover DebugPrintf statements by @hedara90 in #10625
  • docs: updated PR template to be more explicit about AI by @pkmnsnfrn in #10641
  • Pret merge (31st of August, 2026) by @hedara90 in #10721

Fixed

🗺️ Overworld 🗺️

Added

  • Mass outbreak by @FosterProgramming in #9927
    • Adds new script commands and debug menu actions to interact with mass outbreak, you can read more about it in the docs
  • Add map header flag to make writing special var count as a script effect by @FosterProgramming in #7975
    • Adds a new flag write_specialvar_iseffect to the map header. It is added to avoid new script expansion features to break some GF cutscenes and shouldn't be touched if you don't know what you are doing.
  • Adds a new debug menu action "Redo daily Events" by @FosterProgramming in #10012
    • It will automatically reset daily flags and events as well progress events that have a timer in days to allow you to not wait for stuff when testing
    • The action is found in Utilities -> Time Functions ->
  • Add the Ability to Disable Map Name in Map Preview Screen by @Bivurnum in #10080
  • Add config to use daily seed for lottery tickets and mirage island by @FosterProgramming in #9955
  • Add support for night music by @Bassoonian in #9080
    • You can add the NightSong custom attribute to maps through Porymap to define their night music.
    • On top of this, any tracks in sNightMusicTable will be converted during nighttime, even if sourced from NightSong.
  • Config to hide Contest Data in Summary Screen and Move Relearner by @PCG06 in #10117
  • Move relearner selection inside move relearner scene by @FosterProgramming in #10223
    • When the option to access move relearner for non level up moves is given, it now happens in the move relearner monu by pressing select instead of changing the relearner type in the pokemon summary screen
  • Add debug menu actions to quickly test randomizer results by @FosterProgramming in #9969
  • Show Pokémon Icons in Dynamic Multichoice by @PCG06 in #10452
  • fix(party): keep candy use menu open (#9992) by @moostoet in #10430
    • Rare Candies and Exp. Candies now keep the party menu open for another Pokémon when another candy remains.

Changed

  • Use overworld_ascending_frames in picture tables by @estellarc in #10096
  • Consolidation of Pokédex Files by @HashtagMarky in #9518
    • Any changes made to the moved functions from pokedex_plus_hgss.c should be copied to their counterpart in pokedex.c.
  • Do not set overworld var species for vanilla ow mons by @FosterProgramming in #9966
  • Use GetDirectionToFace in DetermineObjectEventDirectionFromObject by @HashtagMarky in #10076
  • Optimize map header structure by @boomshroom in #10159
    • The structure of MapHeader was changed slightly, so anyone messing with it or mapjson may need to account for it.
  • rename NightSong to night_music to match json style by @FosterProgramming in #10167
  • Door Size Refactor by @agsmgmaster64 in #9147
  • Remove functions and variable common to both pokedex from the general pokedex interface to their own file by @FosterProgramming in #10172
  • More mon generation cleanup by @FosterProgramming in #9970
    • More consistent behavior between force shiny/no shiny flag and createmon/givemon shinyMode. Now The force shinyness flags will only apply if the mon was created in the default shiny mode (SHINY_MODE_RANDOM). SHINY_MODE_ALWAYS and SHINY_MODE_NEVER will take priority over the flags
  • 📜 Coins and money script commands update by @FosterProgramming in #9335
    • A lot of money script commands had an optional disable arguments that was removed
    • showcoinsbox now has the same offset as showmoneybox: values will be updated if you run the migration script
    • unused arguments from updatecoinsbox and hidecoinsbox have been removed, the migration script will delete the unused values from your scripts
  • Adds overworld weather enum by @AlexOn1ine in #10383
  • FontIdToFit: move and ability descriptions by @mrgriffin in #10521

Fixed

🐉 Pokémon 🐉

Changed

Fixed

⚔️ Battle General ⚔️

Added

Changed

Fixed

🤹 Moves 🤹

Changed

Fixed

  • Fix stat change berries showing held item anim twice by @LinathanZel in #10265
  • Set Leafage and Seed Flare's target_both to FALSE by @fdeblasio in #10401
  • Fix out-of-bounds palette writes in certain move animations by @moostoet in #10589
    • Fixed out-of-bounds palette writes in the Night Slash, Magical Leaf and Aurora Beam animations that could corrupt memory and cause glitches.

🎭 Abilities 🎭

Changed

🧶 Items 🧶

Added

  • fix(party): keep candy use menu open (#9992) by @moostoet in #10430
    • Rare Candies and Exp. Candies now keep the party menu open for another Pokémon when another candy remains.

Changed

🤖 Battle AI 🤖

Added

Changed

Fixed

  • Accuracy calc function improvements by @AlexOn1ine in #10193
  • Fix hardcoded usage of gCurrentMove for func used in ai code by @AlexOn1ine in #10212
  • Prevent Protect AI from blocking ally beneficial-hit setups in doubles by @moostoet in #9448
    • Updated a doubles AI case where Protect could block an ally's beneficial self-hit setup, including Beat Up + Justified
  • Fix AI scoring for stat-changing move effects by @Cle-bit in #10464
  • Fix Palafin-Hero repeatedly switching to activate Zero to Hero by @Cle-bit in #10626
  • Fix Mind Reader and Lock-On spam in double battles by @Syreldar in #10669
  • upcoming: Fix Fusion Move AI turn-order checks by @Syreldar in #10688
  • Fix AI not calcing crit when high enough crit stage by @grintoul1 in #10700

🧹 Other Cleanup 🧹

🧪 Test Runner 🧪

Added

Changed

Fixed

📚 Documentation 📚

👻 Sprites 👻

Added

Changed

New Contributors

Full Changelog: expansion/1.16.3...expansion/1.17.0

Don't miss a new pokeemerald-expansion release

NewReleases is sending notifications on new releases.