Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

## 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 and EFFECT_RAIN_ALWAYS_HIT effects in favor of alwaysHitsInRain, alwaysHitsInHailSnow and accuracy50InSun move flags.
  • 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.

🧬 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.
  • 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 to GetBattlerMon 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 to TRUE.
  • 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 the base_label and if applicable, the map.
  • 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 of TIME_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_DAYconfig 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 needs adelay 1` between the commands.
      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.
      • Make setobjextxy work with npc followers during ON_WARP map script by @Bivurnum in #6913
      • removeobject and removeobjectat 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 to FALSE.
      • 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 to TRUE.
      • 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 #6693
        • P_TUTOR_MOVES_ARRAY set to FALSE 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 in CreateFacilityMon 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 in config/battle.h
      • 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
      • 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 and EFFECT_RAIN_ALWAYS_HIT effects in favor of alwaysHitsInRain, alwaysHitsInHailSnow and accuracy50InSun move flags.
      • 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 to FALSE.
      • 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 to TRUE.

      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
      • Adjust switch AI based on move scoring by @Pawkkie and @ghoulslash, @AlexOn1ine in #6615
        • Change AI_BAD_SCORE_THRESHOLD and AI_GOOD_SCORE_THRESHOLD to modify what ShouldSwitchIfAllScoresBad considers, found in config/ai.h
      • 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 to gAiBattleStructData.
      • 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 #6693
        • P_TUTOR_MOVES_ARRAY set to FALSE 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.
      • 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 to GetBattlerMon 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 in config/battle.h

      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 to TRUE to run these tests, they take a long time to run.
      • 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