## 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.14.0
`.🌋 REFACTORS 🌋
📜 = Uses a migration script.
- Refactors Attackstring and PP deduction by @AlexOn1ine in #7402
- Attackcanceller fixes and improvements by @AlexOn1ine in #7698
- Fixes activation order for a couple abilities by @AlexOn1ine in #7732
- feat: change defines in
constants/abilities.hto an enum by @khbsd in #7006 - Item battle effect refactor by @AlexOn1ine in #7857
- Optimize GetWhichBattlerFasterOrTies by @AlexOn1ine in #7953
- Decouple passive hp updates from move damage updates by @AlexOn1ine in #7942
- Make movelist calculations happen during compilation instead of runtime by @FosterProgramming in #7967
- tmIlliterate flag in speciesInfo changed to teachingType. The options are
DEFAULT_LEARNING,TM_ILLITERATEandALL_TEACHABLES. The first two options match the tmIlliterate = false and tmIlliterate = true while the third one allow a pokemon to learn all teachables similarly to Mew - Reduce EWRAM usage of HGSS dex
- Fix pokemon.c needing to be recompiled everytime a .inc file was changed
- P_TUTOR_MOVES_ARRAY has been removed (now always true when HGSS dex is enabled)
- Mew move teaching exception and univeral moves are now coded in the JSON file
src/data/pokemon/special_movesets.jsonunder the name signatureTeachables and universalMoves
- tmIlliterate flag in speciesInfo changed to teachingType. The options are
- Grudge, Destiny Bond and FaintBattler refactor by @AlexOn1ine in #8072
- Increase number of additional move effects by @AlexOn1ine in #8149
- 📜 update: time-based encounters system tuneup and @cawtds' header script by @khbsd in #8158
- Refactor random functions to be runner specific by @FosterProgramming in #7816
🧬 General 🧬
Added
-
Battle debug menu: highlight chosen action and change separator by @grintoul1 in #7709
-
Implement
field_name_boxby @mudskipper13 in #7697 -
Add new actions to Debug Menu by @FosterProgramming in #7837
- Adds an action to change a Pokemon ability in the party side of the Debug Menu
- Adds an action to set the friendship of a Pokemon in the party side of the Debug Menu
-
Display TM/HM's move name in the debug menu by @estellarc in #7994
Changed
- Text rendering optimizations by @mrgriffin in #7497
- Battle debug menu now checks correct parties depending on battler party by @grintoul1 in #7652
- Add make release target by @jschoeny in #7296
- Most of what's above. But most importantly, that normal
makewill have all the debug stuff enabled and so releases should be done withmake release.
- Most of what's above. But most importantly, that normal
- Add pool rules for Mega Stones and Z-Crystals by @hedara90 in #7720
field_name_boxsmol followup by @mudskipper13 in #7762- Added COMPOUND_STRINGs to region_map_entries.h by @fdeblasio in #7669
- Improve ability/heldEffect access for IsBattlerGrounded func by @AlexOn1ine in #7753
- Removed
SAVE_TYPE_ERROR_SCREENconfig by @AsparagusEduardo in #7836 - Give the Coin Case when coins are maxed by @estellarc in #7973
- Revert HGSS dex and movelist changes by @FosterProgramming in #8016
- Converts some defines to enums and name unnamed enums by @Bassoonian in #8019
- Some more documentation and cleanup by @Bassoonian in #8020
- Even more enums and documentation by @Bassoonian in #8029
- Add type enum by @Bassoonian in #8054
- Minor clean up in menu.c by @estellarc in #8060
- Adds an auto-generated include file of script commands by @FosterProgramming in #8156
- Master to upcoming merge 20251107 by @grintoul1 in #8167
- porymap default settings by @FosterProgramming in #8038
- WARNING: A change was made for new projects map files to match poymap output. This change might break people's projects with existing versions of those files. The files affected are
data/maps/map_groups.json,src/data/heal_locations.json,src/data/region_map/region_map_sections.jsonandsrc/data/wild_encounters.json
If you have an issue with one of those files during the merging process, you should run this command
git checkout HEAD -- <filename>
which will reset the file to the version before you initiated the merge
- WARNING: A change was made for new projects map files to match poymap output. This change might break people's projects with existing versions of those files. The files affected are
- Adjust label workflow to only run if PR is approved by @hedara90 in #8183
- Add include/constants/script_commands.h to gitignore by @AlexOn1ine in #8169
- Converted landmarks to COMPOUND_STRINGs by @fdeblasio in #8205
- Added contest config and cleaned up contest category variables by @fdeblasio in #8178
- Moves name box configs into a new file by @AlexOn1ine in #8250
- Converted options text into COMPOUND_STRINGs by @fdeblasio in #8248
- Adjust Canceler naming to contain only one l by @AlexOn1ine in #8258
- Pret merge (16th of November, 2025) by @AlexOn1ine in #8262
- Fixed bKGD for last_used_ball_r_cycle.png by @montmoguri in #8261
- Small bg drawing optimization by @estellarc in #8259
- Added missing 'coolness' string by @fdeblasio in #8274
- *.party: text with lfs by @mrgriffin in #8320
- Fedora install instructions by @estellarc in #8355
- Indent unintented if statement by @hedara90 in #8367
Fixed
- Added brackets where needed by @hedara90 in #7781
- Fix shiny stars being freed before shiny animation was played by @FosterProgramming in #7917
- Fixes shiny sparks in battle not appearing properly in rare circumstances (more common with various speedup options)
- Make movelist calculations happen during compilation instead of runtime by @FosterProgramming in #7967
- tmIlliterate flag in speciesInfo changed to teachingType. The options are
DEFAULT_LEARNING,TM_ILLITERATEandALL_TEACHABLES. The first two options match the tmIlliterate = false and tmIlliterate = true while the third one allow a pokemon to learn all teachables similarly to Mew - Reduce EWRAM usage of HGSS dex
- Fix pokemon.c needing to be recompiled everytime a .inc file was changed
- P_TUTOR_MOVES_ARRAY has been removed (now always true when HGSS dex is enabled)
- Mew move teaching exception and univeral moves are now coded in the JSON file
src/data/pokemon/special_movesets.jsonunder the name signatureTeachables and universalMoves
- tmIlliterate flag in speciesInfo changed to teachingType. The options are
- Fix unhandled config in hgss dex by @FosterProgramming in #7999
- Fixes compilation error due to #8002 by @AlexOn1ine in #8050
- Fix compile issue in gcc 11 by @AsparagusEduardo in #8095
- Update mdbook to v0.5.0-beta.1 by @rayrobdod in #8133
- Fix build failing with NOOPT=1 due to discarding static data. by @Ultimate-Bob in #8053
- Fix wild_encounters script not closing arrays properly by @FosterProgramming in #8123
- Fix missing FREE_MATCH_CALL by @FosterProgramming in #8171
- Again fixed compiling in GCC11 by @AsparagusEduardo in #8184
- Fix scroll prompt sometimes being off-screen with automatic line breaks by @hedara90 in #8182
- Fix gcc11 again by @AsparagusEduardo in #8188
- Fixed decompression error reporter OOB window creation by @hedara90 in #8199
- Fix error when compiling with P_FUSION_FORMS disabled by @cawtds in #8298
- Fix compile on gcc11 by @AlexOn1ine in #8300
- Fix debug battle flag never being cleared by @FosterProgramming in #8357
🗺️ Overworld 🗺️
Added
- New Feature: ORAS Dowsing by @Bivurnum in #7211
- Added ORAS Dowsing Machine mechanics.
- feat: adds stevebeller's instant text and MandL27's faster text printing by @khbsd in #8063
- Implement GSC berry/apricorn tree functionality. by @GraionDilach in #7777
- Implement GSC berry/apricorn tree functionality.
Changed
- Trainers trigger in local id order by @grintoul1 in #7424
- Added regional form evolution condition by @AsparagusEduardo in #6990
- Update fishing odds to match official games by @FosterProgramming in #7574
- (BREAKING!) Fishing config has been moved to a new file. If you did not use default config fishing, make sure to reapply your config settings in the new file.
- (WARNING!) If you wrote custom code that calls one the following function, you may need to include
fishing.hto get access to them(their functionaly was not affected): StartFishingpreviously defined infield_player_avatar.hCalculateChainFishingShinyRollspreviously_defined inwild_encounter.h- Adds a new config option to increase fish bite chance in morning and evening to match XY
- Modifies the way fishing "proximity boost" is calculated to match XY
- Fix Sticky Hold / Suction Cups bug which were increasing odds the wrong way
- Add additional comment explaing map name popup transparency side-effects by @FosterProgramming in #8117
- update: time-based encounters system tuneup and @cawtds' header script by @khbsd in #8158
- Sets instant text speed flag to false by default by @khbsd in #8179
- Follower NPCs no longer move if the player would be forced back onto the same tile. by @Bivurnum in #8260
- Follower NPCs no longer move if the player would be forced back onto the same tile
Fixed
- CheckForTrainersWantingBattle trainerObjects array now initialized to zero and loop now starts at zero by @grintoul1 in #7765
- Bugfix
setspeakerNamebox not beign drawn correctly by @estellarc in #7771 - Banned species list by @FosterProgramming in #8003
- Add a window displaying caught banned species list in the Battle Frontier instead of the string detailing all the is
- Fix namebox bug when reloading the map mid-script by @FosterProgramming in #8073
- Fix copyvar instead of setvar causing issue with LTO by @FosterProgramming in #8097
- Fix berry blender not computing flavor correctly by @FosterProgramming in #8113
- Allow vs seekers to work with script not starting with trainerbattle by @FosterProgramming in #8062
- VS seeker now work with trainers who don't start with trainer_battle. You can use
vsseeker_rematchid TRAINER_IDto indicate that this NPC is a battling trainer and the game will fetch the appropriate rematch if necessary.vsseeker_rematchidwork like acant_see_if_trainerflag_setwith additional functionality to handle vs seeker. - All NPCs who don't start with either
vsseeker_rematchidortrainerbattlewill show as "X"/unmatchable by the vs seeker, so non-rematchable trainer who do not start withtrainerbattle may "lie" and not show an excalmation mark showing they haven't been fought yet. This can be fixed by including avsseeker_rematchid` for them too.
- VS seeker now work with trainers who don't start with trainer_battle. You can use
- Fix grade in summary screen not accounting for 26 IV by @FosterProgramming in #8157
- Fix match call regression by @FosterProgramming in #8227
- Fix mew sprite not appearing correctly by @FosterProgramming in #8235
- Fix wrong palette for types sprites in hgss dex after catching mon by @FosterProgramming in #8153
- Fix Apricorns with OW_SHOW_ITEM_DESCRIPTIONS not off by @hedara90 in #8253
- Fix mirage tower ceiling crumble color by @FosterProgramming in #8081
- Fix light flickering when different types of light sprite are present by @FosterProgramming in #8043
- Light intensity of neon signs was reduced to avoid conflicts with other light sources
- Fix flickering when both neon signs and light ball are present on screen
- Bug Fix: NPC Followers not working on slow sideways stairs by @Bivurnum in #8257
- Fixed NPC followers on slow sideways stairs
- Fix not enough memory being allocated when moves load background in contests by @FosterProgramming in #8284
- Make MON_DATA_NICKNAME10 return a 10 character string by @FosterProgramming in #8291
- Fix bug where interviews would print bad data in their string
- Fix game freeze when trainers try to walk on sideway stairs by @FosterProgramming in #8316
- Fix tossing items applying to the wrong stack by @FosterProgramming in #8282
- Prevent moves to be changed when choosing half party by @FosterProgramming in #8336
🐉 Pokémon 🐉
Added
- Add Legends Z-A content by @Bassoonian in #7935
- To retain compatibility with your new items and species, make sure to move the new additions behind your own additions.
- The save block will shift if you have enabled
USE_DEXNAV_SEARCH_LEVELS(due to the new species) or ifOW_SHOW_ITEM_DESCRIPTIONSis set toOW_ITEM_DESCRIPTIONS_FIRST_TIME(due to the new items).
- Move Relearners for TMs, Tutors and Egg moves by @PCG06 in #8040
- Increased the size of
MAX_RELEARNER_MOVESto 60 to prevent crashes when viewing Mew.
- Increased the size of
Changed
- Nickit & Thievul visual revamp by @purrfectdoodle in #7689
- Fix Kyurem typo in swap move tables by @Bassoonian in #8139
- Fix typo in Voltorb-Hisui pokedex entry by @PhallenTree in #8143
- Fix some followers sprites by @estellarc in #8208
Fixed
- Fix gba sprites trying load non existent female versions by @FosterProgramming in #7996
- Fixes issues with pokemon getting gender differences in later gens when using gen3 sprite config
- GetEggSpecies: Only enabled species by @mrgriffin in #8221
- Fix compiling using
make debugby @PCG06 in #8380
⚔️ Battle General ⚔️
Added
- Config for capture to appear critical if the pokemon is already caught by @FosterProgramming in #7730
Changed
- Separates FRB and FRZ animations by @grintoul1 in #7611
- Update multiple battle messages by @AsparagusEduardo in #7529
- Removed unused messages
- Changed ability "X prevents Y" to "It doesn't affect X..."
- Eg.
"The opposing Snorlax's Immunity prevents poisoning!" - Removed
B_ABILITY_POP_UP. Revert commitb501fe7354bcd957396465c621ae7af5959ac5b0to undo this.
- Refactors Attackstring and PP deduction by @AlexOn1ine in #7402
- Remove Uproar attack battle script by @AlexOn1ine in #7715
- Fix up end turn scripts plus small documentation by @AlexOn1ine in #7758
- Remove redundant function call by @AlexOn1ine in #7752
- Minor White Herb and Neutralizing Gas clean up by @AlexOn1ine in #7754
- Minor clean up for Lightning Rod / Storm Drain by @AlexOn1ine in #7778
- Improve ability/heldEffect access for IsBattlerGrounded func by @AlexOn1ine in #7753
- Add func GetChosenMoveFromPosition by @AlexOn1ine in #7810
- GetBattlerHoldEffect clean up by @AlexOn1ine in #7819
- Remove unused gBattleStruct fields by @Bassoonian in #7822
- feat: change defines in
constants/abilities.hto an enum by @khbsd in #7006 - Streamline tryheal macros by @Bassoonian in #7830
- No bag use flag changed to a varable by @FosterProgramming in #7780
- IMPORTANT: The config flag B_FLAG_NO_BAG_USE has been removed
- A config var B_VAR_NO_BAG_USE has been added to replace it. It allows you to choose between:
bag available in battle, bag available in wild battle only, and unavailable bag
- Remove two unused bits from battle structs by @Bassoonian in #7835
- Removes a few redundant hitmarkers by @AlexOn1ine in #7915
- Remove EffectHitSetTerrain script to use moveeffect by @AlexOn1ine in #7938
- Clean up follow up for AtkCanceller refactor by @AlexOn1ine in #7951
- Optimize GetWhichBattlerFasterOrTies by @AlexOn1ine in #7953
- Decouple passive hp updates from move damage updates by @AlexOn1ine in #7942
- Remove appearedInBattle bitfield & redundant use of sentOut partyState by @Nopinou in #8011
- Volatile cleared in a redundant spot by @AlexOn1ine in #8015
- Moved usedHeldItem to Party State struct by @AlexOn1ine in #8006
- Remove usage of gBattlerTarget for MirrorHerb/Opportunist by @AlexOn1ine in #8033
- Fixed test "Revival Blessing cannot revive a partner's party member" by @grintoul1 in #8031
- Decouple (Overworld) Statuses from ability function by @AlexOn1ine in #8002
- Combine Simple Beam and Worry Seed into one effect by @AlexOn1ine in #8039
- Clean up for item hold effect refactor by @AlexOn1ine in #8014
- Grudge, Destiny Bond and FaintBattler refactor by @AlexOn1ine in #8072
- Parametrized Ice Face's weather form change by @AsparagusEduardo in #8115
- Clean up redundant todo by @AlexOn1ine in #8094
- Deprecate various macro by @AlexOn1ine in #8092
- Fixes hacky SetMoveEffect script calls by @AlexOn1ine in #7987
- Create BattleStruct sub struct for event states by @AlexOn1ine in #8131
- Attackstring hitmarker clean up by @AlexOn1ine in #8136
- Clean up ability effect hitmarker by @AlexOn1ine in #8138
- Increase number of additional move effects by @AlexOn1ine in #8149
- Remove redundant Future Sight flag by @AlexOn1ine in #8185
- Powder Move blocking cleanup by @PhallenTree in #8194
- Micro clean up in BattleStruct by @AlexOn1ine in #8177
- HandleAction_UseMove minor cleanup by @mrgriffin in #8214
- Revert gBattleTurnCounter change by @AlexOn1ine in #8197
- Canceller -> Canceler rename by @AlexOn1ine in #8294
- Remove leftover scrtipt redirection by @AlexOn1ine in #8317
- Expand usage of FaintedActions enum in HandleFaintedMonActions by @PhallenTree in #8346
- Move end clear bits clean up by @AlexOn1ine in #8354
- Restored encourageEncore flag to non-volatile status effects by @AsparagusEduardo in #8387
Fixed
- Fixes Weak Armor and items not displaying stat change attributes by @PhallenTree in #7701
- Refactors ruin ability checks into a field effect by @AlexOn1ine in #7711
- Attackcanceller fixes and improvements by @AlexOn1ine in #7698
- Fix Critical Capture RNG and Catching Charm boost by @kittenchilly in #7534
- Fixes activation order for a couple abilities by @AlexOn1ine in #7732
- More White Herb fixes/clean up by @AlexOn1ine in #7826
- Missing IsBattlerAlive checks in Opportunist/Mirror Herb by @AlexOn1ine in #7829
- Item battle effect refactor by @AlexOn1ine in #7857
- Fix Fling Mental Herb message by @AlexOn1ine in #7984
- Fixes Ruin field statuses negation conditions + upcoming cleanup by @PhallenTree in #8042
- Fix nature power string and add support for evnvironment in tests by @FosterProgramming in #8068
- Add option to choose an environment when setting up a battle test
- Corrects battler position checks in battle_message.c by @grintoul1 in #8070
- Emergency Exit on hazards activation + fix end of turn activation by @PhallenTree in #8075
- Improve sBattleIntroSlideFuncs bounds check by @hedara90 in #8084
- Fixes Sticky Barb never getting transferred to attacker + tests by @PhallenTree in #8108
- Fixes flung items sometimes being blocked by Unnerve by @PhallenTree in #8114
- Adjust faint battler script by @AlexOn1ine in #8137
- Allow to send active mon to PC when capturing a Pokemon by @FosterProgramming in #8111
- Fix transform not loading the correct sprites when facing shiny or unown by @FosterProgramming in #8146
- Fixes Receiver not immediately activating copied abilities by @PhallenTree in #8162
- Fix destiny knot behavior and add tests by @FosterProgramming in #8174
- Fix recharge moves + add recharge move tests by @FosterProgramming in #8181
- Fixes Magician for spread moves by @AlexOn1ine in #8170
- Fix tera tint not applying on activation by @FosterProgramming in #8135
- Fixes wrongly assigned count for Semi Invulnerable state by @AlexOn1ine in #8175
- Fixes Drain Punch / Parental Bond / Scale Shot interaction by @AlexOn1ine in #8198
- Avoid illegal GetBattlerAtPosition by @mrgriffin in #8225
- DamageContext: chosenMove by @mrgriffin in #8224
- AccuracyCheck: Avoid calling GetMoveEffect with NO_ACC_CALC_CHECK_LOC… by @mrgriffin in #8222
- moveend: Handle MOVE_UNAVAILABLE in MOVEEND_THIRD_MOVE_BLOCK by @mrgriffin in #8215
- Fix wrong ditto sprite on capture by @FosterProgramming in #8226
- SpriteCB_EnemyShadow: Avoid use-after-free by @mrgriffin in #8220
- trysethelpinghand avoid illegal target by @mrgriffin in #8218
- Fixed an issue related to same turn Encore targeting by @LinathanZel in #8230
- Avoid illegal move retargeting in singles by @mrgriffin in #8217
- Fixes Shell Trap not activating on contact but no damage by @AlexOn1ine in #8243
- Fix Magic Coat reflecting hazard moves incorrectly when used by a partner by @moostoet in #8272
- Magic Coat now properly reflects hazard moves from either slot in double battles.
- Shell Trap tests and Fix for Encore interaction by @AlexOn1ine in #8268
- Fix max mushroom unable to be selected when one stat is maxed by @FosterProgramming in #8287
- Block selecting x items when contrary pokemon are at minimum stages by @FosterProgramming in #8288
- Fix Fur Coat affecting confusion self-damage by @moostoet in #8267
- Fix confusion self-damage ignoring defense/attack abilities such as Fur Coat.
- Fixes End Turn Speed Order by @AlexOn1ine in #8289
- Make switchout abilities trigger after a pokemon has returned to its ball by @FosterProgramming in #8304
- Fix Shed Shell allowing fleeing/teleporting and Smoke Ball failing to guarantee escape by @moostoet in #8286
- Fix bug where defiant/competitive would pass their stat change to the next target by @FosterProgramming in #8312
- Fix max move message against semi invulnerable target by @FosterProgramming in #8313
- Fixes Neutralizing Gas displaying message when exiting with multiple users by @PhallenTree in #8318
- Fix Kings Rock not being ignored by flinch moves by @AlexOn1ine in #8327
- Fix Upper Hand failure still activating Protean by @AlexOn1ine in #8329
- Fix Protosynthesis stat boosts ignoring speed drops by @moostoet in #8277
- Protosynthesis and Quark Drive now recalculate their boosted stat when Speed is lowered or Neutralizing Gas temporarily disables the ability.
- Fix switch-in abilities not triggering on revive by @FosterProgramming in #8293
- More Neutralizing Gas cleanup by @PhallenTree in #8335
- Clear Destiny Bond/Grudge bits when not activated by @PhallenTree in #8334
- Fix cure status item effect not working properly in doubles by @FosterProgramming in #8339
- Fix infinite confusion (berserk gene) not being cured by cure_status bag items by @FosterProgramming in #8343
- Fix
B_PHYSICAL_SPECIAL_SPLITwhen set to Gen 4 by @AsparagusEduardo in #8348 - Refactor Beat Up handling for Gen 3/4 defaults, fix crit check, and expand test coverage by @moostoet in #8307
- BUGFIX: Beat Up (
GEN =< 5) now no longer doubles its damage on every non-critical hit - Beat Up now precomputes eligible party members/strikers for consistent multi-hit resolution and expanded tests covering both pre-Gen5 and Gen5+ rules
- BUGFIX: Beat Up (
- Fix substitute graphic not disappearing after using a pivor move by @FosterProgramming in #8340
- Fixes Beak Blast burning after Beak Blast was already used by @PhallenTree in #8361
- Fix Roar not being recorded for LastUsedMove by @AlexOn1ine in #8362
- Fixes Neutralizing Gas / Mold Breaker / Dragon Darts interaction by @AlexOn1ine in #8389
- Fixes battle tv overwriting damage values by @AlexOn1ine in #8378
- Fix ball cycling not working properly when the same ball take multiple bag slots by @FosterProgramming in #8163
- Two new defines added to items.h
FIRST_BALL_INDEXandLAST_BALL_INDEX - We now assume the indexes of all regular ball usable in wild battle have consecutive indexes and some features (throw ball shortcut in battle) might break if not true
- Two new defines added to items.h
- Prevent double Dynamax for single-trainer 2v1 multi battles by @moostoet in #8323
- Fixed AI 2v1 multibattles incorrectly allowing both opponent leads to Dynamax in the same turn.
🤹 Moves 🤹
Changed
- Separates FRB and FRZ animations by @grintoul1 in #7611
- Fixed test "Revival Blessing cannot revive a partner's party member" by @grintoul1 in #8031
- Fixed Uproar's description and spacing by @fdeblasio in #8187
- Clean usage of gMovesInfo by @AsparagusEduardo in #8234
- Also, fixed an OOB in
HasMoveThatChangesKOThreshold
- Also, fixed an OOB in
- Added Gen 6 contest combos by @fdeblasio in #8251
- Make tailwind anim mirror based on side by @FosterProgramming in #8249
- Make rainbow effect anim change based on side by @FosterProgramming in #8269
- Art assets by SonikkuA-DatH
- Update Lash Out description to clarify its effect by @PhallenTree in #8372
Fixed
🎭 Abilities 🎭
Changed
🧶 Items 🧶
Fixed
- Allow vs seekers to work with script not starting with trainerbattle by @FosterProgramming in #8062
- VS seeker now work with trainers who don't start with trainer_battle. You can use
vsseeker_rematchid TRAINER_IDto indicate that this NPC is a battling trainer and the game will fetch the appropriate rematch if necessary.vsseeker_rematchidwork like acant_see_if_trainerflag_setwith additional functionality to handle vs seeker. - All NPCs who don't start with either
vsseeker_rematchidortrainerbattlewill show as "X"/unmatchable by the vs seeker, so non-rematchable trainer who do not start withtrainerbattle may "lie" and not show an excalmation mark showing they haven't been fought yet. This can be fixed by including avsseeker_rematchid` for them too.
- VS seeker now work with trainers who don't start with trainer_battle. You can use
- Removed extra period in Pokéshi Doll description by @montmoguri in #8252
🤖 Battle AI 🤖
Added
- Improved move additional effect handling; now accounts for Shield Dust. by @surskitty in #7650
- Adjusted AI handling for Gravity; AI for weather/field status additional effects. by @surskitty in #7651
- Improved AI for status curing; trainer items, Purify, Smelling Salts, Sparkling Aria by @surskitty in #7853
Changed
- AI uses Magnetic Flux. by @surskitty in #7642
- AI uses Flower Shield. by @surskitty in #7640
- AI uses Life Dew. by @surskitty in #7643
- AI uses Gear Up. by @surskitty in #7641
- Correcting test AI won't use status moves if partner chose Helping Hand by @surskitty in #7649
- IncreaseStatUpScore adjustments for Simple, +3 moves, Acupressure, max move effects by @surskitty in #7662
- AI handling for Coaching. by @surskitty in #7661
- Simplifying calls to IsBattlerTrapped; treats being unable to switch as trappedness by @surskitty in #7671
- AI Tests: Gimmick Support by @mrgriffin in #7694
- AI can use Z-status moves by @surskitty in #7666
- Move some checks out of IncreaseStatUpScore to ShouldRaiseAnyStat by @surskitty in #7722
- Moving additional effects out of AI_CalcMoveEffectScore and into AI_CalcMoveAdditionalEffectScore by @surskitty in #7727
- AI sees dynamic moves and Nature Power as correct types for weather, terrain by @surskitty in #7759
- Fix abusable two-turn-move switch behaviour by @Pawkkie in #7770
- Z Status move handling: Conversion, Detect, Nature Power, Transform by @surskitty in #7721
- Use stored values for ai switch-in effectiveness checks by @AlexOn1ine in #7794
- Changing all HasBattlerSideAbility to AI_IsAbilityOnSide. by @surskitty in #7927
- Weather/Terrain AI touch-ups. by @surskitty in #7933
- Improving the checks for the AI to avoid Encore; adding RISK_ENCORE_CHANCE config. by @surskitty in #7929
- Fixes CanUseLastResort and resolves 3 KNOWN_FAILING Last Resort tests by @grintoul1 in #8032
- Add AI flag AI_FLAG_KNOW_OPPONENT_PARTY to know all species in party by @moostoet in #8290
Fixed
- Score adjustments towards guaranteed stat drops. by @surskitty in #7670
- AI uses Extreme Evoboost. by @surskitty in #7706
- Fixes AI scoring when Priority moves are blocked by @PhallenTree in #7745
- fix (AI scoring): shield dust considerations, IsMoveEffectInMinus self effect edge case, hitsToKO zero-case consideration by @ghostyboyy97 in #8126
- The AI now sees Shield Dust on the player's Pokemon correctly
- The AI now sees self-targeted positive effect boosts correctly
- fix (contrary): Contrary stat down handling in MoveEffectInPlus by @ghostyboyy97 in #8165
- When comparing positive move effects in damaging move comparison, the AI will correctly see moves like Leaf Storm as beneficial if their Pokemon has Contrary.
- Added check for parental bond killing through sturdy by @MaximeGr00 in #8206
- AI now accounts for Parental Bond when checking if a move can ko the player through sturdy/focus sash.
- AI: Handle MOVE_UNAVAILABLE in last used moves by @mrgriffin in #8219
- Fix AI_FLAG_DOUBLE_ACE_POKEMON sending duplicate Pokémon in doubles by @moostoet in #8279
- Fixed AI_FLAG_DOUBLE_ACE_POKEMON trainers resending the same Pokémon after a KO instead of their two Ace Pokémon in double battles.
- Rework switch AI and add more tests for ace pokemon flags by @FosterProgramming in #8321
- All remaining issues with the AI flags Ace Pokemon and Double Ace pokemon should be fixed
- The smart switching AI should be less likely to switch a pokemon about to die if it doesn't have a pokemon with a good matchup to replace it
- Fix switchin KO threshold logic by @Pawkkie in #8370
🧹 Other Cleanup 🧹
- Update multiple battle messages by @AsparagusEduardo in #7529
- Removed unused messages
- Changed ability "X prevents Y" to "It doesn't affect X..."
- Eg.
"The opposing Snorlax's Immunity prevents poisoning!" - Removed
B_ABILITY_POP_UP. Revert commitb501fe7354bcd957396465c621ae7af5959ac5b0to undo this.
- Battle debug menu now checks correct parties depending on battler party by @grintoul1 in #7652
- Correcting test AI won't use status moves if partner chose Helping Hand by @surskitty in #7649
- Remove Uproar attack battle script by @AlexOn1ine in #7715
- Fix up end turn scripts plus small documentation by @AlexOn1ine in #7758
field_name_boxsmol followup by @mudskipper13 in #7762- Remove redundant function call by @AlexOn1ine in #7752
- Minor White Herb and Neutralizing Gas clean up by @AlexOn1ine in #7754
- Minor clean up for Lightning Rod / Storm Drain by @AlexOn1ine in #7778
- Add func GetChosenMoveFromPosition by @AlexOn1ine in #7810
- GetBattlerHoldEffect clean up by @AlexOn1ine in #7819
- Remove unused gBattleStruct fields by @Bassoonian in #7822
- followup: AbilityBattleEffects return type is incorrect by @khbsd in #7827
- Streamline tryheal macros by @Bassoonian in #7830
- Remove two unused bits from battle structs by @Bassoonian in #7835
- Removes a few redundant hitmarkers by @AlexOn1ine in #7915
- Remove EffectHitSetTerrain script to use moveeffect by @AlexOn1ine in #7938
- Clean up follow up for AtkCanceller refactor by @AlexOn1ine in #7951
- Remove appearedInBattle bitfield & redundant use of sentOut partyState by @Nopinou in #8011
- Some more documentation and cleanup by @Bassoonian in #8020
- Volatile cleared in a redundant spot by @AlexOn1ine in #8015
- Moved usedHeldItem to Party State struct by @AlexOn1ine in #8006
- Remove usage of gBattlerTarget for MirrorHerb/Opportunist by @AlexOn1ine in #8033
- Even more enums and documentation by @Bassoonian in #8029
- Decouple (Overworld) Statuses from ability function by @AlexOn1ine in #8002
- Fixes Ruin field statuses negation conditions + upcoming cleanup by @PhallenTree in #8042
- Minor clean up in menu.c by @estellarc in #8060
- Clean up for item hold effect refactor by @AlexOn1ine in #8014
- Parametrized Ice Face's weather form change by @AsparagusEduardo in #8115
- Clean up redundant todo by @AlexOn1ine in #8094
- Deprecate various macro by @AlexOn1ine in #8092
- Fixes hacky SetMoveEffect script calls by @AlexOn1ine in #7987
- Create BattleStruct sub struct for event states by @AlexOn1ine in #8131
- Attackstring hitmarker clean up by @AlexOn1ine in #8136
- Clean up ability effect hitmarker by @AlexOn1ine in #8138
- Fix Kyurem typo in swap move tables by @Bassoonian in #8139
- Fix typo in Voltorb-Hisui pokedex entry by @PhallenTree in #8143
- porymap default settings by @FosterProgramming in #8038
- WARNING: A change was made for new projects map files to match poymap output. This change might break people's projects with existing versions of those files. The files affected are
data/maps/map_groups.json,src/data/heal_locations.json,src/data/region_map/region_map_sections.jsonandsrc/data/wild_encounters.json
If you have an issue with one of those files during the merging process, you should run this command
git checkout HEAD -- <filename>
which will reset the file to the version before you initiated the merge
- WARNING: A change was made for new projects map files to match poymap output. This change might break people's projects with existing versions of those files. The files affected are
- Sets instant text speed flag to false by default by @khbsd in #8179
- Remove redundant Future Sight flag by @AlexOn1ine in #8185
- Fix incorrect comments by @AlexOn1ine in #8193
- Fixed Uproar's description and spacing by @fdeblasio in #8187
- Add include/constants/script_commands.h to gitignore by @AlexOn1ine in #8169
- Powder Move blocking cleanup by @PhallenTree in #8194
- Converted landmarks to COMPOUND_STRINGs by @fdeblasio in #8205
- Micro clean up in BattleStruct by @AlexOn1ine in #8177
- Clean usage of gMovesInfo by @AsparagusEduardo in #8234
- Also, fixed an OOB in
HasMoveThatChangesKOThreshold
- Also, fixed an OOB in
- HandleAction_UseMove minor cleanup by @mrgriffin in #8214
- Revert gBattleTurnCounter change by @AlexOn1ine in #8197
- Added contest config and cleaned up contest category variables by @fdeblasio in #8178
- Adjust Canceler naming to contain only one l by @AlexOn1ine in #8258
- Fix wrongly renamed logs by @AlexOn1ine in #8264
- Test type enum indentation by @AsparagusEduardo in #8273
- Added missing 'coolness' string by @fdeblasio in #8274
- Canceller -> Canceler rename by @AlexOn1ine in #8294
- Tests for Max Moves already exist by @AlexOn1ine in #8314
- Documentation clean up for MoveCanceler by @AlexOn1ine in #8297
- Use MAP_OFFSET by @estellarc in #8328
- Remove leftover scrtipt redirection by @AlexOn1ine in #8317
- Fixed broken friendship from items in battle test and added new test for opposite case by @pkmnsnfrn in #7872
- Expand usage of FaintedActions enum in HandleFaintedMonActions by @PhallenTree in #8346
- Move end clear bits clean up by @AlexOn1ine in #8354
- Indent unintented if statement by @hedara90 in #8367
- Update Lash Out description to clarify its effect by @PhallenTree in #8372
- Slight Protect moveend cleanup by @AsparagusEduardo in #8385
- Restored encourageEncore flag to non-volatile status effects by @AsparagusEduardo in #8387
🧪 Test Runner 🧪
Added
- Multibattle testing system by @grintoul1 in #7257
- Prevent EXPECT functions from casting negative numbers into unsigned by @FosterProgramming in #7866
Changed
- AI Tests: Gimmick Support by @mrgriffin in #7694
- Some tests for future Dynamax AI behavior. by @surskitty in #7707
- Add some missing move animations to the move animation tests by @FosterProgramming in #7507
- Fixes CanUseLastResort and resolves 3 KNOWN_FAILING Last Resort tests by @grintoul1 in #8032
- Fixed test "Revival Blessing cannot revive a partner's party member" by @grintoul1 in #8031
- Added Soundproof and Bulletproof tests by @AsparagusEduardo in #8189
- Wrote some missing tests by @AsparagusEduardo in #8203
- Refactor random functions to be runner specific by @FosterProgramming in #7816
- A couple more tests by @AsparagusEduardo in #8209
- Fixed some failing tests with GEN_LATEST = GEN_5 by @AsparagusEduardo in #8241
- Add test for mold breaker/ice scales interaction by @FosterProgramming in #8240
- Yet more tests by @AsparagusEduardo in #8228
- Added tests for:
- Dark Aura
- Fairy Aura
- Flare Boost
- Toxic Boost
- Added test names for Flying Press.
- Test type enum indentation by @AsparagusEduardo in #8273
- Slightly increase headless test speed by modifying animations by @AsparagusEduardo in #8299
- Make
gTestRunnerHeadlessinto a constant outside of tests by @hedara90 in #8306 - Tests for Max Moves already exist by @AlexOn1ine in #8314
- Finished fixing tests when setting
GEN_LATESTtoGEN_5by @AsparagusEduardo in #8263 - Wrote missing Fling tests by @AsparagusEduardo in #8383
Fixed
- Corrects ONE_VS_TWO_BATTLE_TEST to use BATTLE_TEST_ARGS_ONE_VS_TWO by @grintoul1 in #8061
- Fixes difficulty not being restored after tests by @grintoul1 in #8129
- Reset saveblock data between test runs by @hedara90 in #8145
- Sheer force test fix by @grintoul1 in #8142
- Test only enabled species by @mrgriffin in #8216
- Fix ohko moves ai tests by @FosterProgramming in #8309
- Fixed broken friendship from items in battle test and added new test for opposite case by @pkmnsnfrn in #7872
- Add tests to verify aromatherapy is not affected by heal bell config by @FosterProgramming in #8344
- Pre gen 5 encored move now signals the test engine a move is happening by @FosterProgramming in #8338
- Refactor Beat Up handling for Gen 3/4 defaults, fix crit check, and expand test coverage by @moostoet in #8307
- BUGFIX: Beat Up (
GEN =< 5) now no longer doubles its damage on every non-critical hit - Beat Up now precomputes eligible party members/strikers for consistent multi-hit resolution and expanded tests covering both pre-Gen5 and Gen5+ rules
- BUGFIX: Beat Up (
- Fix player and partner trainer sprite palettes to 8 and 9, preventing unwanted palette changes by @grintoul1 in #8127
- Fix known failing AI trace test by @FosterProgramming in #8337
📚 Documentation 📚
- Converts some defines to enums and name unnamed enums by @Bassoonian in #8019
- Some more documentation and cleanup by @Bassoonian in #8020
- Even more enums and documentation by @Bassoonian in #8029
- Add type enum by @Bassoonian in #8054
- Revert reversion by @AlexOn1ine in #8112
- Lock mdbook to v0.4.35 to fix docs not building by @grintoul1 in #8130
- Add additional comment explaing map name popup transparency side-effects by @FosterProgramming in #8117
- Fix incorrect comments by @AlexOn1ine in #8193
- Moves name box configs into a new file by @AlexOn1ine in #8250
- Fix wrongly renamed logs by @AlexOn1ine in #8264
- Documentation clean up for MoveCanceler by @AlexOn1ine in #8297
- Use MAP_OFFSET by @estellarc in #8328
- Fedora install instructions by @estellarc in #8355
New Contributors
- @purrfectdoodle made their first contribution in #7689
- @montmoguri made their first contribution in #8252
Full Changelog: expansion/1.13.3...expansion/1.14.0