## 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.12.0
`.
🌋 REFACTORS 🌋
📜 = Uses a migration script.
- Minor Recoil Effect refactor by @AlexOn1ine in #6409
- Refactor HasWeatherEffect and IsUnnerveAbilityOnOpposingSide by @AlexOn1ine in #6441
- Refactor the function IsAbilityPreventingEscape by @AlexOn1ine in #6439
- Unifies dynamic move category checks by @AlexOn1ine in #6443
- Refactors faint target abilities and adds Battle Bond config by @AlexOn1ine in #6519
- Refactor protect to allow at least 126 different types of protect eff… by @AlexOn1ine in #6506
- Refactor / Simlify Cmd_adjustdamage and remove redundancy by @AlexOn1ine in #6499
- Refactors Move absorb / block function calls to remove redundancy by @AlexOn1ine in #6490
- Refactor fixed damage moves by @AlexOn1ine in #6449
- EndTurnEffectOrder Refactor by @AlexOn1ine in #6224
- Refactor hit escape moves to use moveend by @AlexOn1ine in #6671
- 📜 Evolution Refactor by @khbsd, @AsparagusEduardo for everything he did, including #6530! and @AlexOn1ine for writing the migration script! in #6556
- make sure to back up your alcremie evolution data if you have it implemented already: pulling this will overwrite it
- Centralizes non volatile status effect checks by @AlexOn1ine in #6533
- Refactor battler flee and watch options + clean up by @AlexOn1ine in #6724
- Refactor AI flags to u64 by @Pawkkie and @DizzyEggg, @AlexOn1ine, @hedara90 in #6753
- Refactor battler message ids by @AlexOn1ine in #6765
- Refactor stockpile resets by @AlexOn1ine in #6810
- Move out ai structs out of BattleResources by @AlexOn1ine in #6741
- Consolidates a bunch of battle controller functions by @Bassoonian in #6838
- Further moveend changes (move blocks) by @AlexOn1ine in #6820
- Added weather accuracy move flags by @AsparagusEduardo in #6857
- Removed
EFFECT_THUNDER
,EFFECT_BLIZZARD
andEFFECT_RAIN_ALWAYS_HIT
effects in favor ofalwaysHitsInRain
,alwaysHitsInHailSnow
andaccuracy50InSun
move flags.
- Removed
- Remove non-volatile status EFFECTs by @AsparagusEduardo in #6772
- 📜 Remove compressed palettes by @hedara90 in #6455
- All handling for compressed palettes has been removed, use
u16 *
for palettes instead. - Has migration script to convert palettes to
u16
,struct SpritePalette
and palette loading calls from their compressed variants.
- All handling for compressed palettes has been removed, use
🧬 General 🧬
Added
- Low Health Beeps Configuration by @khbsd in #6328
- Adds SHOW_TYPES_SEEN to the B_SHOW_TYPES option by @khbsd in #6561
- this slightly alters how the flag
FLAG_GET_SEEN
is set, so keep that in mind if you have any functionality that relies on it being at the start of the battle.
- this slightly alters how the flag
- Type Effectiveness Indicators when selecting moves by @agsmgmaster64 in #6559
- FakeRtc datetime and ResetRtcScreen day increments by @cawtds in #5695
- Battle Transition: mugshots for multibattles by @grintoul1 and @AlexOn1ine for advice on simplifying the conditions that check for 2nd opponent and presence of battle partner, and general advice/troubleshooting in #6567
- Time menu for RTC in debug menu. by @RubyRaven6, @cawtds for RTC refactors that makes all of this easier, @HashtagMarky for helping me understand how the debug menu works, especially with destroying menus, @zetraphes, for helping with refactoring the redundant functions into a single function. and @makosear for originally getting me into the RTC hellhole in #6634
- In order to apply the new time the map is reloaded through The LoadMap Callback (CB2_LoadMap). As such, this will also do everything else that comes with loading map in.
- Pokedex Plus HGSS move configs by @PCG06 in #6687
Adds three configs for Pokedex Plus HGSS.
- To sort TM moves by num.
- To show egg moves for evolved Pokémon.
- Creating a dynamic tutor moves array to use for tutor moves counting.
- Allow different flags for Badge boost by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in #6805
- Timemacros by @RubyRaven6 in #6696
Changed
- Rename absentBattlerFlags to absent by @AlexOn1ine in #6432
- Removed unused debug EWRAM variables by @hedara90 in #6468
- Removes unused Special Status members by @AlexOn1ine in #6479
- Remove potential pitfall with saved damage for recoil moves by @AlexOn1ine in #6485
- Add CONTRIBUTING.md and STYLEGUIDE.md by @pkmnsnfrn and @Pawkkie, @garakmon in #6340
- Alcremie Evolution clean up follow up by @AlexOn1ine in #6557
- Fix broken links in merge_checklist.md by @pkmnsnfrn and @grintoul1 in #6570
- Converts some defines to enums by @Bassoonian in #6592
- Removes vestigial EWRAM variable from debug menu. by @RubyRaven6 in #6686
- Keep Steven Multi Debug Option at the Bottom Forever by @Pawkkie in #6694
- Better handling of battle coords by @AsparagusEduardo and @ghoulslash, @klemniops for the original code. in #6787
battle_main
enum cleanup by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in #6788- Add missing uses of
IsBattlerAlly
by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in #6793 - Adds partyState to BattleStruct by @AlexOn1ine in #6783
- Rename
GetPartyBattlerData
toGetBattlerMon
by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in #6800 - Added JSON as the preferred data format by @hedara90 in #6801
- Remove non-existent functions from header files by @Bassoonian in #6825
- Added
IsOnPlayerSide
by @AsparagusEduardo in #6832 - Battle TV expansion by @AsparagusEduardo in #6826
- Prevent scaninc touching tests when
make
-ing non-test builds by @mudskipper13 in #6812 - Reword move and ability descriptions to improve clarity by @jfb1337 in #6861
- Updated move and ability descriptions to increase clarity.
- Optimized
PokemonUseItemEffects
function by @AsparagusEduardo in #6878 - Expand trainerproc to support additional battle types by @AsparagusEduardo in #6770
- Debug menu cleanup by @AsparagusEduardo in #6881
- Commenting in config files to explain limits of map popups and wild AI flags by @surskitty in #6923
- Documented usage of
createsprite gSimplePaletteBlendSpriteTemplate
by @AsparagusEduardo in #6956 - Documented usage of
createsprite gDirtPlumeSpriteTemplate
by @AsparagusEduardo in #6954 - Updated CONTRIBUTING.md and Merge Freeze definition by @pkmnsnfrn in #6952
- Documented usage of
createsprite gBasicHitSplatSpriteTemplate
by @AsparagusEduardo in #6950 - Documented usage of
createsprite gSparkElectricitySpriteTemplate
by @AsparagusEduardo in #6955 - Documented usage of
createsprite gSlideMonToOffsetSpriteTemplate
by @AsparagusEduardo in #6953 - Remove trailing whitespace by @AsparagusEduardo in #6968
- Beefing up the DNS tutorial for some of the common questions/errors. by @surskitty in #6922
- Clarifies when to use each merge type for maintainers by @pkmnsnfrn in #6999
- Moved time constants to dedicated files by @pkmnsnfrn in #7019
Fixed
- fix: missing break statement by @khbsd in #6572
- Fix dynamax message by @hedara90 in #6589
- Fix pc mon pic by @hedara90 in #6709
- Fixed upcoming not compiling in gcc 11.4.0 by @AsparagusEduardo in #6710
- Fix the Move Item option in the PC still expecting compressed palettes by @hedara90 in #6739
- Fix upcoming compile by @AsparagusEduardo in #6804
- Added missing root folder check in trainer battle type migration script by @AsparagusEduardo in #6944
- Fixed forfeit money for
B_WHITEOUT_MONEY <= GEN_3
by @AsparagusEduardo in #6942 - Fix UB when using time menu by @cawtds in #7023
🗺️ Overworld 🗺️
Added
- Add OW_DEFOG_FIELD_MOVE to allow players to clear overworld Fog by @pkmnsnfrn in #6477
This behavior is enabled by setting
OW_DEFOG_FIELD_MOVE
toTRUE
. - Add Time-Based Encounters by @khbsd and @Pawkkie, @Artrios, @GriffinRichards, @ravepossum, @ghoulslash, @lhearachel probably more so tag me somewhere and ill add you! in #6454
- Comes with a new conversion script,
wild_encounters_to_header.py
. On my machine i timed it out to about .02s, hopefully it wont add too much to the compile time on anyone elses computers - The conversion script can handle an unchanged
wild_encounters.json
just fine, but also plays nice with edited ones as far as I can tell - The migration script takes one optional argument,
--copy
--copy
will copy over all of the encounter tables (land_mons
,water_mons
, etc). default behavior just adds thebase_label
and if applicable, themap
.
- Comes with a new conversion script,
- Add B_RUN_TRAINER_BATTLE - players can run from Trainer Battles by @pkmnsnfrn and @wiz1989 wrote the original feature. in #6456
- Integrated merrp's lighting branch (Day/Night System) by @hedara90, @AsparagusEduardo for doing most of this PR and @aarant for the original implementation and feature branch, @Greenphx9 for their help merging to current expansion. in #6562
- Changes from the base branch:
- Uses Expansion's Fake RTC and updates its tinting refresh rate alongside with it.
- Uses Expansion's constants (
TIME_NIGHT
instead ofTIME_OF_DAY_NIGHT
). This allows it to: - Use different tinting for Morning vs Evening compared to the original branch.
- Use Expansion's
OW_TIMES_OF_DAY
config that allows users to set their own times by generation. - Added option to disable object event shadows
- Added option to turn DNS on or off,
OW_ENABLE_DNS
- Added option to for vanilla shadow behaviour,
OW_OBJECT_VANILLA_SHADOWS
- Scripts containing consecutive
removeobject <object> and
addobject
removeobject MY_OBJECT + delay 1 addobject MY_OBJECT
- Changes to base Hoenn to integrate DNS can be enabled by reverting commit a5b079d
- Other changes:
- Changed the BW Map Popup to update its time while active.
- Follower NPCs (follow-me) by @Bivurnum, @ghoulslash Much of their original code is still present. and @grintoul1 Invaluable play testing and feedback. in #6500
- Turn any NPC into a follower.
- Specify a battle partner to turn all trainer battles into multi battles automatically while an NPC follower is present.
Changed
- Add Time-Based Encounter Tutorial by @khbsd and @Pawkkie (ty for reviewing!!) in #6568
- Remove vestigial AdvanceScript function used for testing by @RubyRaven6 in #6664
- Rename follower npc macros for better specificity and to match documentation by @Bivurnum in #6742
- Add follower NPC documentation by @Bivurnum in #6704
Fixed
- Fixed DNS off config sometimes breaking palettes on map change by @hedara90 in #6603
- Fixed objects not getting unloaded properly when event flags are set by @Bivurnum in #6715
- Bug fix: add proper elevation handling for npc followers by @Bivurnum in #6871
- fix: avoid unexpected data shifting by removing preproc'd array size by @khbsd in #6916
- Fix OW_POPUP_BW_TIME_MODE burning a lot of cycles due to RTC queries. by @SBird1337 in #6974
- Fixed an issue that causes the game to lag in some configurations that involve
OW_POPUP_BW_TIME_MODE
.
- Fixed an issue that causes the game to lag in some configurations that involve
- Make setobjextxy work with npc followers during ON_WARP map script by @Bivurnum in #6913
removeobject
andremoveobjectat
macros work properly with npc followers by @Bivurnum in #6889- Fixes follower NPC not changing state with player after warp by @Bivurnum in #7009
- Fixed follower NPC changing to surf sprite when choosing not to surface from dive by @Bivurnum in #7010
- Fix follower NPC not reappearing after Mossdeep gym warp by @Bivurnum in #7014
- Fixed surf blob binding to invisible follower NPC on map reload by @Bivurnum in #7013
- fix: better area mons handling, no longer duplicates
hiddenMons
field by @khbsd in #6945 - Bug fix: setfollowernpc macro no longer runs when FNPC_ENABLE_NPC_FOLLOWERS is FALSE by @Bivurnum in #6755
🐉 Pokémon 🐉
Added
- Configuration to scale Critical Capture odds based on local Pokedex or estimated National Pokedex by @surskitty in #6250
- Add B_ANIMATE_MON_AFTER_KO - mons animate after scoring a KO by @pkmnsnfrn and @NicoSwag wrote the original feature. in #6451
- This can be disabled by setting
B_ANIMATE_MON_AFTER_KO
toFALSE
.
- This can be disabled by setting
- Add OW_DEFOG_FIELD_MOVE to allow players to clear overworld Fog by @pkmnsnfrn in #6477
This behavior is enabled by setting
OW_DEFOG_FIELD_MOVE
toTRUE
. - Add "Move Item" option in party menu by @AsparagusEduardo in #6758
Changed
- Implemented Alcremie Evolution Method by @AsparagusEduardo in #6530
- Make form change methods into enum + type checking by @Bassoonian in #6631
- Remove hardcoded values from wild_encounter.h generation by @khbsd and @moostoet and @/Nopinou on discord for reporting bugs and dealing with my ping spam <3 in #6640
- Evolution Refactor by @khbsd, @AsparagusEduardo for everything he did, including #6530! and @AlexOn1ine for writing the migration script! in #6556
- make sure to back up your alcremie evolution data if you have it implemented already: pulling this will overwrite it
- Disable
P_TUTOR_MOVES_ARRAY
config by @PCG06 in #6693P_TUTOR_MOVES_ARRAY
set toFALSE
by default.
Fixed
- Change HasTwoFramesAnimation to take into account species with 1 frame by @hedara90 in #6655
- Fix Rage Fist evolution method by @AsparagusEduardo in #6937
- Fixed
CreateMon
param order inCreateFacilityMon
by @PCG06 in #6989
⚔️ Battle General ⚔️
Added
- Gen 1's Special base stat by @AsparagusEduardo in #6330
- Add B_RUN_TRAINER_BATTLE - players can run from Trainer Battles by @pkmnsnfrn and @wiz1989 wrote the original feature. in #6456
- Add B_LEVEL_UP_NOTIFICATION to improve player QoL when performing multiple level ups by @pkmnsnfrn in #4901
- "Aerilate"-esque Ability Tests and Config by @Pawkkie and @hedara90 in #6313
- Adds new
B_ATE_MULTIPLIER
config inconfig/battle.h
- Adds new
- Gen 1 no recharge on KO by @spindrift64 in #6869
- Add no-whiteout feature by @Bassoonian and @/Gudf in #6795
Changed
- "no additional effect" text for status Z moves without effects by @wiz1989 in #6368
- Configuration to make all Hail moves summon Snow or vis versa, to have only one ice weather by @surskitty in #6149
- Added a config to homogenize Ice weathers between Hail, Snow, or both.
- Create move end Sheer Force by @AlexOn1ine in #6411
- Added Dynamax/Gigantamax battle messages by @wiz1989 in #6440
- Refactor HasWeatherEffect and IsUnnerveAbilityOnOpposingSide by @AlexOn1ine in #6441
- Refactor the function IsAbilityPreventingEscape by @AlexOn1ine in #6439
- Unifies dynamic move category checks by @AlexOn1ine in #6443
- Refactors faint target abilities and adds Battle Bond config by @AlexOn1ine in #6519
- Refactor protect to allow at least 126 different types of protect eff… by @AlexOn1ine in #6506
- Refactor / Simlify Cmd_adjustdamage and remove redundancy by @AlexOn1ine in #6499
- Refactors Move absorb / block function calls to remove redundancy by @AlexOn1ine in #6490
- Refactor fixed damage moves by @AlexOn1ine in #6449
- Turn battle string ids into enums by @Bassoonian in #6594
- Remove redundant bit for Throat Spray by @AlexOn1ine in #6593
- Add type checking for hold item effects by @Bassoonian in #6619
- Adds move effect type checking by @Bassoonian in #6618
- Refactor hit escape moves to use moveend by @AlexOn1ine in #6671
- Fix party access in NoAliveMonsForBattlerSide by @AlexOn1ine in #6677
- Some Me First tests plus minor clean up by @AlexOn1ine in #6678
- Centralizes non volatile status effect checks by @AlexOn1ine in #6533
- Use
GetPartyBattlerData
where appropiate by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in #6779 - Refactor battler message ids by @AlexOn1ine in #6765
- General MoveEnd clean up and Fell Stinger adjustments by @AlexOn1ine in #6674
- Adds partyState to BattleStruct by @AlexOn1ine in #6783
- Refactor stockpile resets by @AlexOn1ine in #6810
- Changed White Herb hold effect name by @AlexOn1ine in #6815
- Fixes a mistake made by me by @AlexOn1ine in #6828
- Combined type-enhancing hold effects by @AsparagusEduardo in #6846
- The following hold effects have been combined into
HOLD_EFFECT_TYPE_POWER
: HOLD_EFFECT_BUG_POWER
HOLD_EFFECT_STEEL_POWER
HOLD_EFFECT_GROUND_POWER
HOLD_EFFECT_ROCK_POWER
HOLD_EFFECT_GRASS_POWER
HOLD_EFFECT_DARK_POWER
HOLD_EFFECT_FIGHTING_POWER
HOLD_EFFECT_ELECTRIC_POWER
HOLD_EFFECT_WATER_POWER
HOLD_EFFECT_FLYING_POWER
HOLD_EFFECT_POISON_POWER
HOLD_EFFECT_ICE_POWER
HOLD_EFFECT_GHOST_POWER
HOLD_EFFECT_PSYCHIC_POWER
HOLD_EFFECT_FIRE_POWER
HOLD_EFFECT_DRAGON_POWER
HOLD_EFFECT_NORMAL_POWER
HOLD_EFFECT_FAIRY_POWER
- The following hold effects have been combined into
- Removed multiple instances of hardcoded move IDs by @AsparagusEduardo in #6856
- New animations for Mega Evolution, Primal Reversion, Ultra Burst, and Power Construct by @LinathanZel in #6834
- Consolidates a bunch of battle controller functions by @Bassoonian in #6838
- Further moveend changes (move blocks) by @AlexOn1ine in #6820
- Added weather accuracy move flags by @AsparagusEduardo in #6857
- Removed
EFFECT_THUNDER
,EFFECT_BLIZZARD
andEFFECT_RAIN_ALWAYS_HIT
effects in favor ofalwaysHitsInRain
,alwaysHitsInHailSnow
andaccuracy50InSun
move flags.
- Removed
- Consolidated HasMoveFlagX functions by @AlexOn1ine in #6874
Fixed
- Fix declaration after label for Psywave switch by @hedara90 in #6595
- Fix regression from EndTurnRefactor by @AlexOn1ine in #6616
- Fixes Z and Max moves dmg reduction against side protection - upcoming by @AlexOn1ine in #6698
- Illusion struct cleanup and many Illusion fixes by @PhallenTree in #6798
- Fixes wrongly usage of arguments without checking effect by @AlexOn1ine in #6859
- Fixes Magic Guard causing Wrap to end immediately by @PhallenTree in #6876
- Mugshot Transitions 2v1 fix by @grintoul1 in #6911
- Fixes Ice Body healing HP regardless of weather by @PhallenTree in #6939
- Fixes global usage in super fang effect. by @AlexOn1ine in #6941
- Fixes Knock Off/Smack Down effect on immune target/protect by @PhallenTree in #6958
- Fixes weather anim damage being applied to the wrong mon by @AlexOn1ine in #6973
- Fixes repeated learning of level up moves by @AlexOn1ine in #6981
- Fixes Gen3 berry activation timing by @AlexOn1ine in #6993
- Fix Eiscue not resetting back to Ice Face form after battle. by @DarkVexon in #6997
- Fixes spread move fire types not defrosting all targets by @AlexOn1ine in #6998
- Update Supersweet Syrup with eject pack fix by @AlexOn1ine in #7015
- fix battle controller macros by @cawtds in #7021
🤹 Moves 🤹
Added
- Add B_ANIMATE_MON_AFTER_KO - mons animate after scoring a KO by @pkmnsnfrn and @NicoSwag wrote the original feature. in #6451
- This can be disabled by setting
B_ANIMATE_MON_AFTER_KO
toFALSE
.
- This can be disabled by setting
- Add OW_DEFOG_FIELD_MOVE to allow players to clear overworld Fog by @pkmnsnfrn in #6477
- This behavior is enabled by setting
OW_DEFOG_FIELD_MOVE
toTRUE
.
- This behavior is enabled by setting
Changed
- Minor Recoil Effect refactor by @AlexOn1ine in #6409
- Replaced Blue Sky background for Rock Field by @SundayMoonday in #6516
- Use missing constants with GetBattlerSpriteCoord by @AsparagusEduardo in #6778
InitSpritePosToAnimAttacker
documentation by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in #6781- Document battler side in anim code by @AlexOn1ine in #6780
- New animations for Mega Evolution, Primal Reversion, Ultra Burst, and Power Construct by @LinathanZel in #6834
Fixed
- Fix to warnings pertaining to Mega Evolution and Ultra Burst RGB values by @LinathanZel in #6883
🤖 Battle AI 🤖
Added
- Improve AI's handling of player's Encore by @Pawkkie and @iriv24 in #6305
- Switch AI will factor in player's choice lock when determining hits to KO by @Pawkkie in #6343
- Switch AI considers Wind Rider by @innocenthedgehog in #6391
- Fix AI using Scald / fire moves against frozen / frostbitten targets by @Pawkkie in #6442
- Improve "all moves bad" switching by @Pawkkie and @wiz1989 in #6453
- Fix Choice'd AI not switching if player immune to move by @Pawkkie in #6464
- Add basic Unaware check bad move scoring by @Pawkkie in #6524
- AI smarter status handling by @Pawkkie in #6550
- Improve AI's defense against Focus Punch by @Pawkkie in #6713
- Add AI_FLAG_PP_STALL_PREVENTION by @hedara90 in #6743
- Chance to trigger and score modifier can be changed in
include/config/ai.h
under the "AI PP Stall detection" section
- Chance to trigger and score modifier can be changed in
- Adjust switch AI based on move scoring by @Pawkkie and @ghoulslash, @AlexOn1ine in #6615
- Change
AI_BAD_SCORE_THRESHOLD
andAI_GOOD_SCORE_THRESHOLD
to modify whatShouldSwitchIfAllScoresBad
considers, found inconfig/ai.h
- Change
- Add AI for Zero to Hero Palafin by @Pawkkie and @kittenchilly in #6791
- Add AI_FLAG_PREDICT_MOVES by @Pawkkie in #6551
- Use AI_FLAG_PREDICT_MOVES to enable behaviour
- Works best when used with AI_FLAG_OMNISCIENT
Changed
- Minor Clean up for AI_CalcDamage to remove some duplicate code by @AlexOn1ine in #6397
- Moved some AI stuff out of the battlestruct by @hedara90 in #6405
- AI data in
gBattleStruct
has been moved togAiBattleStructData
.
- AI data in
- Allow the AI to see the second hit of Parental Bond by @AlexOn1ine in #6403
- Split ai function IsBattlerTrapped by @AlexOn1ine in #6438
- Optimization / Clean up of AI move usability by @AlexOn1ine in #6332
- Clean up AI code duplication and unify checks by @AlexOn1ine in #6348
- Ability access cleanup for #6550 by @Pawkkie in #6565
- Adjust enum AIScore by @AlexOn1ine in #6598
- Refactor battler flee and watch options + clean up by @AlexOn1ine in #6724
- Add AI_FLAG_PP_STALL_PREVENTION to
ai_flags.md
by @Pawkkie in #6756 - Refactor AI flags to u64 by @Pawkkie and @DizzyEggg, @AlexOn1ine, @hedara90 in #6753
- Move out ai structs out of BattleResources by @AlexOn1ine in #6741
- Add prediction function by @AlexOn1ine in #6858
- AI double battle friendly fire logic improvements by @surskitty and @Pawkkie in #6766
- Remove non-volatile status EFFECTs by @AsparagusEduardo in #6772
- Fix misleading name by @AlexOn1ine in #6865
- Fix HasBattlerSideMoveWithEffect comment by @Pawkkie in #6965
Fixed
- Fix damage roll order for AI calcs by @AlexOn1ine in #6356
- Fix roll handling in AI damage calcs by @Pawkkie in #6396
- fixed damage calculations in CanTargetFaintAiWithMod() by @wiz1989 in #6446
- Fix bracket typo in AI_CheckBadMove conditional by @Pawkkie in #6695
- Fix party data assignment by @Pawkkie in #6712
- Fix Wonder Guard potential double switching by @Pawkkie in #6737
- Fix roll handling in AI party damage calcs by @Pawkkie in #6733
- Fix AI function table to match new u64 flags by @Pawkkie in #6796
- Fix FindMonThatAbsorbsOpponentsMove not seeing Mold Breaker or choice items by @Pawkkie in #6864
- Fix AI_FLAG_PREDICT_MOVES scoring bug by @Pawkkie and @innocenthedgehog for test in #6867
- Switch AI considers Bulletproof ability by @innocenthedgehog in #6872
- Fix AI boosting stats into mon with Haze by @Pawkkie in #6894
- Fix switch AI considering non-choiced SE moves when choiced by @Pawkkie in #6892
- Fix bad odds / defensive switchin double switch cases by @Pawkkie in #6927
🧹 Other Cleanup 🧹
- Moved Pokémon Jump types to gSpeciesInfo by @AsparagusEduardo in #5602
- Change ability to abilityNum in CreateTrainerMon by @AlexOn1ine in #6370
- Small Code clean up in GetBattlerAbility (removes duplication) by @AlexOn1ine in #6362
- Minor Clean up for AI_CalcDamage to remove some duplicate code by @AlexOn1ine in #6397
- Create move end Sheer Force by @AlexOn1ine in #6411
- Rename absentBattlerFlags to absent by @AlexOn1ine in #6432
- Split ai function IsBattlerTrapped by @AlexOn1ine in #6438
- Optimization / Clean up of AI move usability by @AlexOn1ine in #6332
- Clean up AI code duplication and unify checks by @AlexOn1ine in #6348
- Removed unused debug EWRAM variables by @hedara90 in #6468
- Removes unused Special Status members by @AlexOn1ine in #6479
- Remove potential pitfall with saved damage for recoil moves by @AlexOn1ine in #6485
- Update maintainer list by @AsparagusEduardo in #6521
- Alcremie Evolution clean up follow up by @AlexOn1ine in #6557
- Ability access cleanup for #6550 by @Pawkkie in #6565
- Fix broken links in merge_checklist.md by @pkmnsnfrn and @grintoul1 in #6570
- Converts some defines to enums by @Bassoonian in #6592
- Turn battle string ids into enums by @Bassoonian in #6594
- Remove redundant bit for Throat Spray by @AlexOn1ine in #6593
- Adjust enum AIScore by @AlexOn1ine in #6598
- Add type checking for hold item effects by @Bassoonian in #6619
- Adds move effect type checking by @Bassoonian in #6618
- Remove hardcoded values from wild_encounter.h generation by @khbsd and @moostoet and @/Nopinou on discord for reporting bugs and dealing with my ping spam <3 in #6640
- Sky Drop clean up and tests by @AlexOn1ine in #6218
- Remove vestigial AdvanceScript function used for testing by @RubyRaven6 in #6664
- Fix party access in NoAliveMonsForBattlerSide by @AlexOn1ine in #6677
- Some Me First tests plus minor clean up by @AlexOn1ine in #6678
- Removes vestigial EWRAM variable from debug menu. by @RubyRaven6 in #6686
- Disable
P_TUTOR_MOVES_ARRAY
config by @PCG06 in #6693P_TUTOR_MOVES_ARRAY
set toFALSE
by default.
- Remove compressed palettes by @hedara90 in #6455
- All handling for compressed palettes has been removed, use
u16 *
for palettes instead. - Has migration script to convert palettes to
u16
,struct SpritePalette
and palette loading calls from their compressed variants.
- All handling for compressed palettes has been removed, use
- Rename follower npc macros for better specificity and to match documentation by @Bivurnum in #6742
- Use missing constants with GetBattlerSpriteCoord by @AsparagusEduardo in #6778
- Use
GetPartyBattlerData
where appropiate by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in #6779 InitSpritePosToAnimAttacker
documentation by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in #6781- General MoveEnd clean up and Fell Stinger adjustments by @AlexOn1ine in #6674
- Better handling of battle coords by @AsparagusEduardo and @ghoulslash, @klemniops for the original code. in #6787
battle_main
enum cleanup by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in #6788- Add missing uses of
IsBattlerAlly
by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in #6793 - Rename
GetPartyBattlerData
toGetBattlerMon
by @AsparagusEduardo and @ghoulslash, @klemniops, whose' code I was using for comparison when I found these in #6800 - Changed White Herb hold effect name by @AlexOn1ine in #6815
- Fixes a mistake made by me by @AlexOn1ine in #6828
- Remove non-existent functions from header files by @Bassoonian in #6825
- Added
IsOnPlayerSide
by @AsparagusEduardo in #6832 - Battle TV expansion by @AsparagusEduardo in #6826
- Removed multiple instances of hardcoded move IDs by @AsparagusEduardo in #6856
- Add prediction function by @AlexOn1ine in #6858
- Reword move and ability descriptions to improve clarity by @jfb1337 in #6861
- Updated move and ability descriptions to increase clarity.
- Consolidated HasMoveFlagX functions by @AlexOn1ine in #6874
- Optimized
PokemonUseItemEffects
function by @AsparagusEduardo in #6878 - Fix misleading name by @AlexOn1ine in #6865
- Debug menu cleanup by @AsparagusEduardo in #6881
- Updated CONTRIBUTING.md and Merge Freeze definition by @pkmnsnfrn in #6952
- Fix HasBattlerSideMoveWithEffect comment by @Pawkkie in #6965
- Documented usage of
createsprite gSlideMonToOffsetSpriteTemplate
by @AsparagusEduardo in #6953 - Remove trailing whitespace by @AsparagusEduardo in #6968
- Moved time constants to dedicated files by @pkmnsnfrn in #7019
🧪 Test Runner 🧪
Added
- "Aerilate"-esque Ability Tests and Config by @Pawkkie and @hedara90 in #6313
- Adds new
B_ATE_MULTIPLIER
config inconfig/battle.h
- Adds new
Changed
- Tests for checking all move animations by @hedara90 and @AsparagusEduardo wrote the original tests that I updated in #6297
- Set
T_SHOULD_RUN_MOVE_ANIM
toTRUE
to run these tests, they take a long time to run.
- Set
- Update the All Move Animations test by @hedara90 in #6460
- Updated move animation tests by @hedara90 in #6554
Fixed
- Fix out-of-bounds in Heal Bell Cures Entire Party test by @rayrobdod in #7011
📚 Documentation 📚
- Add CONTRIBUTING.md and STYLEGUIDE.md by @pkmnsnfrn and @Pawkkie, @garakmon in #6340
- Update maintainer list by @AsparagusEduardo in #6521
- Fix broken links in merge_checklist.md by @pkmnsnfrn and @grintoul1 in #6570
- Turn battle string ids into enums by @Bassoonian in #6594
- Add Time-Based Encounter Tutorial by @khbsd and @Pawkkie (ty for reviewing!!) in #6568
- Add type checking for hold item effects by @Bassoonian in #6619
- Adds move effect type checking by @Bassoonian in #6618
- Make form change methods into enum + type checking by @Bassoonian in #6631
- Add AI_FLAG_PP_STALL_PREVENTION to
ai_flags.md
by @Pawkkie in #6756 - Document battler side in anim code by @AlexOn1ine in #6780
- Added JSON as the preferred data format by @hedara90 in #6801
- Commenting in config files to explain limits of map popups and wild AI flags by @surskitty in #6923
- Documented usage of
createsprite gSimplePaletteBlendSpriteTemplate
by @AsparagusEduardo in #6956 - Documented usage of
createsprite gDirtPlumeSpriteTemplate
by @AsparagusEduardo in #6954 - Updated CONTRIBUTING.md and Merge Freeze definition by @pkmnsnfrn in #6952
- Documented usage of
createsprite gBasicHitSplatSpriteTemplate
by @AsparagusEduardo in #6950 - Documented usage of
createsprite gSparkElectricitySpriteTemplate
by @AsparagusEduardo in #6955 - Beefing up the DNS tutorial for some of the common questions/errors. by @surskitty in #6922
- Add follower NPC documentation by @Bivurnum in #6704
- Clarifies when to use each merge type for maintainers by @pkmnsnfrn in #6999
📦 Branch Synchronisation 📦
pret
- 27th of May, 2025 in #6995
- Fix defines in MAP_NUM and MAP_GROUP by @Bassoonian in pret#2023
- Change metatile behaviors to enum by @pkmnsnfrn in pret#2027
- Move heal locations data to their associated map.json by @GriffinRichards in pret#2034
- Generate local IDs from map.json files by @GriffinRichards in pret#2047
- Generate MAPSEC constants from JSON by @GriffinRichards in pret#2063
- Generate heal location constants automatically by @GriffinRichards in pret#2101
- Update for Porymap 6 by @GriffinRichards in pret#2141
- 29th of May, 2025 in #7012
- Update for Porymap 6 by @GriffinRichards in pret#2141
New Contributors
- @SundayMoonday made their first contribution in #6516
- @agsmgmaster64 made their first contribution in #6559
- @grintoul1 made their first contribution in #6567
- @LinathanZel made their first contribution in #6834
- @mudskipper13 made their first contribution in #6812
Full Changelog: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.11.3...expansion/1.12.0