## 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 frompokedex_plus_hgss.cshould be copied to their counterpart inpokedex.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
givemonscript 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_ABILITYthat 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_StartMultiBattleinstead
- The config
- 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_LISTto 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_ABILITYthat 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_StartMultiBattleinstead
- The config
- 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
- Fix Debug Menu's
Fly to mapnot working immediately by @estellarc in #10142 - fix(debug): incorrect use of const by @miriamlefae in #10211
- Fix smartTera assignment in MakePartnerGenerator by @AlexOn1ine in #10523
- Fix FRLG Trainer Card Setup by @agsmgmaster64 in #10527
- fix(save): fix reload_save functionality by @miriamlefae in #10581
- Fix form change sometimes not getting level up moves by @FosterProgramming in #10612
- Fixes starter never being shiny when P_NO_SHINIES_WITHOUT_POKEBALLS by @luuma in #10597
- Fix leveling up multiple levels at once sometmes teaching wrong moves by @FosterProgramming in #10614
- (Joint with Syreldar) Fix Underutilisation of CreateSpriteUnchecked meaning a fatal assertf triggers needlessly by @luuma in #10656
🗺️ 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_iseffectto 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 flag
- 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
NightSongcustom attribute to maps through Porymap to define their night music. - On top of this, any tracks in
sNightMusicTablewill be converted during nighttime, even if sourced fromNightSong.
- You can add the
- 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_framesin 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.cshould be copied to their counterpart inpokedex.c.
- Any changes made to the moved functions from
- Do not set overworld var species for vanilla ow mons by @FosterProgramming in #9966
- Use
GetDirectionToFaceinDetermineObjectEventDirectionFromObjectby @HashtagMarky in #10076 - Optimize map header structure by @boomshroom in #10159
- The structure of
MapHeaderwas changed slightly, so anyone messing with it ormapjsonmay need to account for it.
- The structure of
- 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
disablearguments that was removed showcoinsboxnow has the same offset asshowmoneybox: values will be updated if you run the migration script- unused arguments from
updatecoinsboxandhidecoinsboxhave been removed, the migration script will delete the unused values from your scripts
- A lot of money script commands had an optional
- Adds overworld weather enum by @AlexOn1ine in #10383
- FontIdToFit: move and ability descriptions by @mrgriffin in #10521
Fixed
- Fix debug trainer and flags vars submenu by @grintoul1 in #10089
- 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
givemonscript command
- Remove clock-based music transition by @FosterProgramming in #10176
- fix dynamic trainer script regression by @FosterProgramming in #10233
- fix givemon not setting pp by @FosterProgramming in #10320
- fix(trainerbattle): fix trainerbattle always checking the trainerflag by @miriamlefae in #10339
- Make updatemoneybox actually a one-byte opcode by @tertu-m in #10407
- Add options to ignore total EV check by @FosterProgramming in #10408
- fix facing player snippet not checking face player param by @FosterProgramming in #10462
- Restore singmsg and normalmsg functionality by @agsmgmaster64 in #10550
- Fix follower crashing when interupting spin movement by @FosterProgramming in #10551
- 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
- Rework simultaneous palette fade by @FosterProgramming in #10573
- fix bard text speed by @FosterProgramming in #10557
- Fix trying to remove non existing speaker box by @FosterProgramming in #10540
- Fix movement type playing between trainer move and player face by @FosterProgramming in #10529
- Fix talking to buried movement npc by @FosterProgramming in #10652
🐉 Pokémon 🐉
Changed
- Better quality Legends Z-A cries by @LinathanZel in #9987
- Scorbunny line front anim by @Bivurnum in #10252
- Converted Mega Staraptor's icon to INCGFX_U8 by @fdeblasio in #10561
- Correct the ZA Mega body colors by @kittenchilly in #10603
Fixed
- Fix Pokedex Plus evolution text misalignment by @TixoRebel in #10601
⚔️ Battle General ⚔️
Added
- Add B_TERA_ORB_ALWAYS_CHARGED by @kittenchilly in #9688
- Adds Victory Catch by @AlexOn1ine in #9008
- Additional trainer slides by @grintoul1 in #9211
- Battle Messages from Pokémon Champions by @LinathanZel in #9777
- Add Champions battle mechanics changes (v1.0.X) by @LinathanZel in #10151
- Add Ability Pop-Ups to Mega Sol by @LinathanZel in #10416
- Implement opponent HP percentage display by @kittenchilly in #10025
Changed
- 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
- Starting Status for Weather by @PCG06 in #10170
- Improve AI thinking time by removing direct ability calls in calc dmg by @AlexOn1ine in #10145
- Add Fire Mane by @Cle-bit in #10249
- Add Eelevate by @LinathanZel in #10256
- Remove redundant Sub checks by @AlexOn1ine in #10253
- Move pre attack effects and damage calc to canceler by @AlexOn1ine in #10220
- New tests: Eviolite, Charge, Grassy Terrain & Misty Terrain by @LinathanZel in #9265
- Adds
MOVE_EFFECT_RANDOM_FROM_LISTto replace Tri Attack and Dire Claw by @PhallenTree in #10299 - Tests for Victory Star not being ignored by Ally by @AlexOn1ine in #10310
- Remove end2 (merge end and end2) by @AlexOn1ine in #10311
- New Knock Off cases by @LinathanZel in #10297
- Remove redundant Magnet Rise / Laser Focus flags by @AlexOn1ine in #10318
- Add Champions battle mechanics changes (v1.1.0) by @LinathanZel in #10257
- Consolidate switch in and faint clear/set data by @AlexOn1ine in #10338
- Refactor dynamic move category and remove Present script by @AlexOn1ine in #10300
- Add palette blend to Mega Evolution and Primal Reversion particle by @LinathanZel in #10324
- Adjust TargetFailure to be slightly more accurate by @AlexOn1ine in #10330
- Make GetSameTypeAttackBonusModifier a little more readable by @AlexOn1ine in #10384
- 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
- Add Gen 9 Overworld Weather Behavior by @LinathanZel in #10454
- Remove infiniteConfusion flag by @AlexOn1ine in #10471
- Replaced / Removed some battlerAbsent checks in favor of IsBattlerAlive by @AlexOn1ine in #10459
- Simplify IsAnyTargetAffected by @AlexOn1ine in #10576
- Update Howl's ignoreSubstitute flag to account for Champions behavior by @PhallenTree in #10591
- Change Howl Soundproof test to prevent user from blocking with Soundproof by @PhallenTree in #10590
- Move Substitute check to move resolution and remove acc check in scripts by @AlexOn1ine in #10595
- Change SetMoveEffect into a function table and move to a new file by @AlexOn1ine in #10593
- Add new effectiveness indicators from Pokémon Champions by @PCG06 in #10541
- Remove redundant embargo and heal block flags by @AlexOn1ine in #10630
- Partially reversion of gAbsentBattler pr by @AlexOn1ine in #10634
- Add MSG_DISPLAY constants and helper function for strings with wait by @AlexOn1ine in #10640
- Added clarification for BattleScript_IntimidateActivates by @AlexOn1ine in #10666
- Restore GetDefaultSelectionTarget usage by @PhallenTree in #10713
Fixed
- Add Effect activation after Mega Evolution by @AlexOn1ine in #10180
- Accuracy calc function improvements by @AlexOn1ine in #10193
- Fixes Pickpocket activation when the original attacker isn't on the field by @PhallenTree in #10217
- Fix hardcoded usage of gCurrentMove for func used in ai code by @AlexOn1ine in #10212
- Champions Battle Messages post-mortem fixes by @LinathanZel in #10268
- fix no continue script after early rival battle by @u8-Salem in #10286
- Fix Item Heal Animation showing recovery on the wrong target by @LinathanZel in #10294
- Fixes off by one error for category icons by @AlexOn1ine in #10365
- Fixes Resist Berry order by @PhallenTree in #10431
- Fix failed contact moves activating contact effects of protect moves by @LinathanZel in #10434
- Fix Solar Beam/Electro Shot not working in Primal Weather by @AlexOn1ine in #10440
- Fix two-turn moves firing during any weather by @AlexOn1ine in #10466
- ShouldTrainerBattlerUseGimmick rework by @FosterProgramming in #10463
- Fixed Beak Blast, Focus Punch, and Shell Trap's incorrect interactions by @LinathanZel in #10443
- Fix Sheer Cold move type check and rename flag by @AlexOn1ine in #10475
- Add Protect animation + bug fixes by @LinathanZel in #10467
- Fixes Assurance inconsistencies by @AlexOn1ine in #10488
- Multiple xp bugfixes by @FosterProgramming in #10536
- Fix pokemon shadow reverting to species_none shadow size for one frame by @FosterProgramming in #10539
- Adds alive check to CanTargetBattler by @FosterProgramming in #10547
- Fix Regenerator/Natural Cure applying to the wrong party slot by @thalescd in #10543
- X items fix by @FosterProgramming in #10556
- Fix Hunger Switch Persisting on Ability pop up by @ChrispyChris27 in #10554
- Remove BATTLE_PARTNER and BATTLE_OPPOSITE macros by @grintoul1 in #10542
- Where
BATTLE_OPPOSITEhas been used on anenum BattlerId, replace it withGetOppositeBattler - Where
BATTLE_OPPOSITEhas been used on anenum BattlerPosition, replace it withGetOppositePosition - Where
BATTLE_PARTNERhas been used on anenum BattlerId, replace it withGetPartnerBattler - Where
BATTLE_PARTNERhas been used on anenum BattlerPosition, replace it withGetPartnerPosition - Where
LEFT_FOEorGetOpposingSideBattlerhas been used, replace withGetBattlerLeftFoe - Where
RIGHT_FOEhas been used, replace withGetBattlerRightFoe
- Where
- Fix Symbiosis activation after Knock Off removed and item by @AlexOn1ine in #10483
- Fix freeze when a stat-change move follows Own Tempo-blocked Swagger or No Retreat by @moostoet in #10569
- Fixed a freeze that occurred when a stat-change move was used after Own Tempo blocked the confusion from Swagger or Flatter.
- Fixed a freeze that occurred when a stat-change move was used after a successful No Retreat.
- simplify party defeat functions by @FosterProgramming in #10568
- Fix HP bars emitting for non-present battlers and extraneous result battle messages by @LinathanZel in #10566
- Fix trainer slide activating for player in multi battle by @FosterProgramming in #10572
- Fix trainer slide form change by @FosterProgramming in #10571
- Fix restore item regression by @AlexOn1ine in #10577
- Revert "Simplify IsAnyTargetAffected" by @PhallenTree in #10588
- Fix terrain not being reset before battle background load by @FosterProgramming in #10586
- Fix TARGET_USER_AND_ALLY flicker by @FosterProgramming in #10587
- Fix Scrappy not bypassing Ghosts types if ability was changed by @AlexOn1ine in #10600
- Fix sleep clause in Multibattles + test by @grintoul1 in #10608
- Fix Dragon Darts checking the same target multiple times by @Cle-bit in #10606
- Fix Z-Move and Dmax moves incorrect dmg calcs by @AlexOn1ine in #10616
- Fix stat change move accuracy by @AlexOn1ine in #10631
- Fix Flying Press using its secondary type for damage modifiers by @Cle-bit in #10622
- Fix Acupressure targetting opposing mon by @AlexOn1ine in #10636
- Fix Cursed Body triggering on Max Moves by @hedara90 in #10639
- Fix Future Sight not restoring previous battler mon by @AlexOn1ine in #10647
- Fixes Sky Drop hitting replacement when original target fainted by @PhallenTree in #10648
- Fix gimmick slides by @FosterProgramming in #10624
- Fix Acupressure targetting opposing mon by @AlexOn1ine in #10645
- Fix Copycat failing to copy a move that fainted its target by @Syreldar in #10654
- Fix Symbiosis items being consumed as resistance Berries by spread moves by @Syreldar in #10653
- fix(battle): fix memory leak when opening bag in battle by @miriamlefae in #10618
- Fix Z-Moves being blocked by move restrictions at selection by @Syreldar in #10657
- Fix Metronome-called spread moves hitting the user’s partner by @Syreldar in #10661
- fix(healthbar): fix hp bar elements being shown when they shouldn't be by @miriamlefae in #10621
- Fix out-of-bounds read of gSelectedOrderFromParty by @Syreldar in #10674
- Prevent Red Card from allowing Z-Move reuse by @Syreldar in #10671
- Fixed the Multi Battle party-slot collision by @Syreldar in #10662
- Fix Solar Beam, Solar Blade and Electro Shot skipping their charging … by @Syreldar in #10675
- Recalculate Ash-Greninja's stats after Battle Bond activates by @Syreldar in #10683
- Fix multi-target stat move miss messages by @Syreldar in #10687
- Fix Shell Trap being delayed after a spread move hit by @Syreldar in #10682
- Split move target selection and resolution by @Syreldar in #10690
- Fixed Expanding Force target selection in Psychic Terrain while retaining its spread targeting when the move executes.
- Fix battler invisibility during move selection by @Syreldar in #10692
- Fixes G-Max Tartness additional effect by @PhallenTree in #10707
- Fix full team multi battles with follower NPCs by @ChrispyChris27 in #10711
- Fix moveanim regression by @AlexOn1ine in #10714
🤹 Moves 🤹
Changed
- Add Item Icon to Knock Off, Covet, and Thief animations by @LinathanZel in #10027
- Added more common anim functions by @fdeblasio in #9924
- Updated Sticky Web to call StringShotThread by @fdeblasio in #10361
- Cleaned up some move animations by @fdeblasio in #10374
- Updated
battle_anim_new.cto match style guide by @fdeblasio in #10421
Fixed
- Fix stat change berries showing held item anim twice by @LinathanZel in #10265
- Set Leafage and Seed Flare's
target_bothto 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
- The big grammar update by @amiosi in #8893
- Add Fire Mane by @Cle-bit in #10249
- Add Eelevate by @LinathanZel in #10256
🧶 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
- Consolidate confuse flavor hold effects by @Bassoonian in #10163
- The big grammar update by @amiosi in #8893
- enigma berry hold effect cleanup by @FosterProgramming in #10592
🤖 Battle AI 🤖
Added
- AI triggers ally's Spicy Spray when burn is beneficial by @Cle-bit in #10124
- Modular AI Omniscience Flags by @Pawkkie in #10243
- AI avoids self-KOs with recoil by @Pawkkie in #10258
- Adds Dragon Darts Ai by @AlexOn1ine in #10236
- Adds Round / Pledge combo attack by @AlexOn1ine in #8647
Changed
- Make doubles AI skip scoring on itself by @grintoul1 in #10046
- Improve AI thinking time by removing direct ability calls in calc dmg by @AlexOn1ine in #10145
- Allow AI to choose Wrap effects more often by considering their residual damage by @PhallenTree in #10427
- Ai thinking time and accuracy improvements by @AlexOn1ine in #10277
- Tidy up AI_CalcDamage signature with a struct by @AlexOn1ine in #10453
- Minor AI score calculation clean up by @AlexOn1ine in #10461
- Minor battle_util.c fixes by @grintoul1 in #10610
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 🧹
- Make doubles AI skip scoring on itself by @grintoul1 in #10046
- Cleanup battle factory screen constants by @Gastly92 in #10108
- Cleanup hard-coded values from battle room scripts by @Gastly92 in #10119
- Use
overworld_ascending_framesin picture tables by @estellarc in #10096 - Do not set overworld var species for vanilla ow mons by @FosterProgramming in #9966
- Use
GetDirectionToFaceinDetermineObjectEventDirectionFromObjectby @HashtagMarky in #10076 - Clean up unused variables and functions by @Bassoonian in #10152
- rename NightSong to night_music to match json style by @FosterProgramming in #10167
- Remove obsolete MAX_LEVEL_UP_MOVES by @FosterProgramming in #10166
- The big grammar update by @amiosi in #8893
- Clean up header files by @Bassoonian in #10178
- remove unused tilesets graphics by @FosterProgramming in #10184
- Remove redundant Sub checks by @AlexOn1ine in #10253
- Remove functions and variable common to both pokedex from the general pokedex interface to their own file by @FosterProgramming in #10172
- Added more common anim functions by @fdeblasio in #9924
- Remove unused functions by @Bassoonian in #10179
- Remove redundant Magnet Rise / Laser Focus flags by @AlexOn1ine in #10318
- refactor(string): consolidate stringvar arrays with getter function by @miriamlefae in #10328
- Consolidate switch in and faint clear/set data by @AlexOn1ine in #10338
- Consolidate Battle Frontier streak appearance lists by @fdeblasio in #10336
- Migrated Pokedex strings by @fdeblasio in #10335
- Consolidate contest values by @fdeblasio in #10334
- 📜 Coins and money script commands update by @FosterProgramming in #9335
- A lot of money script commands had an optional
disablearguments that was removed showcoinsboxnow has the same offset asshowmoneybox: values will be updated if you run the migration script- unused arguments from
updatecoinsboxandhidecoinsboxhave been removed, the migration script will delete the unused values from your scripts
- A lot of money script commands had an optional
- Make GetSameTypeAttackBonusModifier a little more readable by @AlexOn1ine in #10384
- Adds overworld weather enum by @AlexOn1ine in #10383
- Cleaned up some move animations by @fdeblasio in #10374
- Fix argument field taking to much space in moves info by @AlexOn1ine in #10404
- Updated
battle_anim_new.cto match style guide by @fdeblasio in #10421 - Ai thinking time and accuracy improvements by @AlexOn1ine in #10277
- Minor AI score calculation clean up by @AlexOn1ine in #10461
- Remove infiniteConfusion flag by @AlexOn1ine in #10471
- Rename sBattleWeatherInfo to gBattleWeatherInfo by @FosterProgramming in #10531
- Remove empty file from repo by @Bassoonian in #10499
- Converted Mega Staraptor's icon to INCGFX_U8 by @fdeblasio in #10561
- Replaced / Removed some battlerAbsent checks in favor of IsBattlerAlive by @AlexOn1ine in #10459
- Simplify IsAnyTargetAffected by @AlexOn1ine in #10576
- Move Substitute check to move resolution and remove acc check in scripts by @AlexOn1ine in #10595
- Change SetMoveEffect into a function table and move to a new file by @AlexOn1ine in #10593
- enigma berry hold effect cleanup by @FosterProgramming in #10592
- Minor battle_util.c fixes by @grintoul1 in #10610
- Remove leftover DebugPrintf statements by @hedara90 in #10625
- Remove redundant embargo and heal block flags by @AlexOn1ine in #10630
- Fix test summary alignment for FAILED by @grintoul1 in #10619
- Partially reversion of gAbsentBattler pr by @AlexOn1ine in #10634
- Add MSG_DISPLAY constants and helper function for strings with wait by @AlexOn1ine in #10640
- Unify default move targeting between tests and in-game by @Syreldar in #10659
- Restore GetDefaultSelectionTarget usage by @PhallenTree in #10713
🧪 Test Runner 🧪
Added
- Additional trainer slides by @grintoul1 in #9211
- feat(test-runner): add support for item popups by @miriamlefae in #10321
Changed
- Make doubles AI skip scoring on itself by @grintoul1 in #10046
- Starting Status for Weather by @PCG06 in #10170
- Fix anim tests by @hedara90 in #10274
- New tests: Eviolite, Charge, Grassy Terrain & Misty Terrain by @LinathanZel in #9265
- Tests for Victory Star not being ignored by Ally by @AlexOn1ine in #10310
- Change Howl Soundproof test to prevent user from blocking with Soundproof by @PhallenTree in #10590
- Fix test summary alignment for FAILED by @grintoul1 in #10619
- Unify default move targeting between tests and in-game by @Syreldar in #10659
Fixed
- Remove explicit targets from opponent in Trainer Slide tests by @grintoul1 in #10133
- Fix Starting Status messages not printing at start of battle by @PCG06 in #10214
- Fix failing tests using GEN_CHAMPIONS by @LinathanZel in #10282
- Move ResetTestInventory to fix flaky error by @FosterProgramming in #10537
- Fix sleep clause in Multibattles + test by @grintoul1 in #10608
- upcoming: Clear callbacks between tests by @Syreldar in #10665
📚 Documentation 📚
- Even more enums by @Bassoonian in #10127
- Apply preproc to
GetRematchTrainerId()function call insideBattleSetup_ConfigureTrainerBattle()by @PCG06 in #10168 - A smidge of enums and type checking additions by @Bassoonian in #10162
- Type checking paradise by @Bassoonian in #10181
- docs: updated PR template to be more explicit about AI by @pkmnsnfrn in #10641
- Added clarification for BattleScript_IntimidateActivates by @AlexOn1ine in #10666
- Fixed a typo in how_to_new_pokemon.md by @LOuroboros in #10706
👻 Sprites 👻
Added
Changed
- Add palette blend to Mega Evolution and Primal Reversion particle by @LinathanZel in #10324
- Scorbunny line front anim by @Bivurnum in #10252
New Contributors
- @Gastly92 made their first contribution in #10108
- @boomshroom made their first contribution in #10159
Full Changelog: expansion/1.16.3...expansion/1.17.0