## 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.10.0`.
🌋 REFACTORS 🌋
📜 = Uses a migration script.
- Changes Evolution methods to Enums by @AlexOn1ine in #4977
- Turn item hold effects into an enum by @Bassoonian in #5498
- Change
GET_MOVE_TYPE
to a function by @AlexOn1ine in #5090 - Created
COMPOUND_STRING
s for default player names by @fdeblasio in #5037 - Removed agbcc by @mrgriffin in #4994
- Refactor Frontier Brains by @fdeblasio in #5027
- Removed all instances of
gBitTable[x]
by @hedara90 in #5123 - Made
BuildColorMaps
redundant by using static tables by @pkmnsnfrn, @Deokishisu and @ShinyDragonHunter in #5289 - Removed
FRONTIER_BRAIN_SPRITES
and updatedTRAINER_SPRITE
,TRAINER_BACK_SPRITE
, andTRAINER_CLASS
by @fdeblasio in #5166 - Added
ShouldSwitch
result toAiLogicData
by @Pawkkie and @AlexOn1ine had the idea! in #5440 - Switch AI refactor + considers free switches by @Pawkkie in #5379
- Refactor
ShouldSwitchIfAllBadMoves
by @Pawkkie in #5452 - Updated Wring Out effects to match Eruption effects by @AsparagusEduardo in #5549
- Changed Wring Out/Crush Grip/Hard Press to use
power
instead ofargument
to determine its max power, just like how Eruption/Water Spout/Dragon Energy do it. - Also:
- Renamed
EFFECT_VARY_POWER_BASED_ON_HP
toEFFECT_POWER_BASED_ON_TARGET_HP
- Renamed
EFFECT_ERUPTION
toEFFECT_POWER_BASED_ON_USER_HP
- Renamed
- Changed Wring Out/Crush Grip/Hard Press to use
- Update battle messages to Gen 5+ standards by @kittenchilly in #3240
- Should switch refactor to facilitate switch prediction by @Pawkkie in #5466
- Unwind
TRAINER_CLASS
macro by @SBird1337 in #5611 - Refactors Absorb to use
Moveend
by @AlexOn1ine in #5670- For new absorbing moves an argument should be added in
moves_info.h
- For new absorbing moves an argument should be added in
- Changes name of
B_SCR_NAME_WITH_PREFIX
by @AlexOn1ine in #5675
🧬 General 🧬
Added
- Added performance counter by @hedara90 and @SBird1337 provided the actual code in #5284
- Added debug build target by @u8-Salem in #4817
- Added
AUTO_SCROLL_TEXT
andNUM_FRAMES_AUTO_SCROLL_DELAY
by @pkmnsnfrn and Mashanny in #5054 - Adds
SAVE_TYPE_ERROR_SCREEN
by @pkmnsnfrn and Anon822 in #5188 - Move Relearner and Renaming From Summary Screen by @ravepossum in #5513
- Automatic Line Breaks, somewhat even lines by @hedara90 and @AsparagusEduardo in #5689
- Automatically insert line breaks into a string with
BreakStringAutomatic
. - This function does not modify strings with existing line breaks.
- Remove existing line breaks from a string with
StripLineBreaks
.
- Automatically insert line breaks into a string with
Changed
- Removed agbcc by @mrgriffin in #4994
- Removed all instances of
gBitTable[x]
by @hedara90 in #5123 - Converted Mechadoll text to
COMPOUND_STRING
s by @fdeblasio in #5276 - New terrain bgs by @TheTrueSadfish in #5162
- Removed agbcc screenshots from
.gitignore
by @Bassoonian in #5538 - Set default battle shadow to Gen3 by @hedara90 in #5632
- Note: Trainerslides don't work properly with Gen4 shadows.
- Convert 3 variouses to
callnatives
by @AlexOn1ine in #5646
🗺️ Overworld 🗺️
Added
- FRLG+ whiteout message by @cawtds in #4967
- Dynamic Move Types in Summary Screen/Battle by @Galaxeeh in #5084
- Adds
OW_BERRY_IMMORTAL
by @pkmnsnfrn and @BuffelSaft in #5187 - (Default Off) Item Description Headers by @ghoulslash in #4767
- RTC-based wild encounters by @hjk321 in #5313
- Added
MB_X_Y_STAIR_WARP
metatile behaviors by @pkmnsnfrn and @ghoulslash in #5278 - Added Sideways Stairs by @ghoulslash in #4836
- Added
OW_UNION_DISABLE_CHECK
andOW_FLAG_MOVE_UNION_ROOM_CHECK
by @pkmnsnfrn and @Deokishisu in #5448 - Adds new scripting macros to increase developer quality of life by @pkmnsnfrn, @Pawkkie, @Lunos, and @ghoulslash in #5177
- Added more later gen fishing mechanics by @kittenchilly in #5518
Changed
- Created PokeNav
COMPOUND_STRING
s by @fdeblasio in #4983 - Added
I_REPEL_INCLUDE_FAINTED
config and behavior by @kittenchilly in #5239 - RTC-based wild encounters follow up by @AlexOn1ine in #5328
- Revert rtc based encounters by @AlexOn1ine in #5331
- Made
BuildColorMaps
redundant by using static tables by @pkmnsnfrn, @Deokishisu and @ShinyDragonHunter in #5289 - Added
OW_AUTO_SIGNPOST
and associated metatile behaviors by @pkmnsnfrn, @ghoulslash, and @ShinyDragonHunter in #5044 - Added support for overworld sprite gender differences + add all the sprites by @kittenchilly in #5394
Fixed
- Added some null pointer checks by @tertu-m in #5130
- Reset item flags on new game by @ghoulslash in #5363
- Follower female fix by @hedara90 in #5475
🐉 Pokémon 🐉
Added
- Added config to change Vivillon's breeding form by @kittenchilly in #4813
- Added back GBA sprites via config by @AsparagusEduardo and @AlexOn1ine for their help with script to migrate data from vanilla to our current
gSpeciesInfo
in #5206 - Added config to disable gender differences by @AsparagusEduardo in #5595
Changed
- Made perfect IV count into a granular setting by @AsparagusEduardo in #5115
- Updated species defines by @pkmnsnfrn and @mrgriffin in #5075
- Added support for overworld sprite gender differences + add all the sprites by @kittenchilly in #5394
- Renamed folders and symbols to match species defines by @AsparagusEduardo in #5581
- Burmy and Wormadam footprints were in a
plant
subfolder. They have been moved to the species root folder - Paldean Wooper's subfolder was named
wooper_paldean
instead of justpaldean
. This has been corrected. - Zen Mode Galarian Darmanitan's folder was located in
darmanitan/galarian/zen_mode
. This has been corrected todarmanitan/galar_zen
, alongside Galarian Standard Mode'sdarmanitan/galar_standard
. - Also updated Ogerpon's folders similarly.
- Renamed
SPECIES_PIKACHU_PARTNER_CAP
toSPECIES_PIKACHU_PARTNER
.
- Burmy and Wormadam footprints were in a
- Changing
EVO_NONE
from0xFFFE
to0
by @GhoulMage in #5547- There could be a case for out of bounds errors if arrays or iterations are happening where you're using + 1 or - 1, as
EVO_FRIENDSHIP
used to be the first index although it started with 1.
- There could be a case for out of bounds errors if arrays or iterations are happening where you're using + 1 or - 1, as
Fixed
- Follower female fix by @hedara90 in #5475
- Fixed some gba sprites by @SubzeroEclipse in #5607
⚔️ Battle General ⚔️
Added
- FRLG+ whiteout message by @cawtds in #4967
- Added B_SHOW_TYPES and cleaned up IsDoubleBattle by @pkmnsnfrn, @Skeli789, @fdeblasio, @ravepossum, and @TeamAquasHideout in #5131
- EV Caps and EV Items by @Flash1Lucky and @AlexOn1ine in #5269
- Added in-battle shadows underneath all enemy battlers by @lhearachel in #5178
- Added Gen 1 Crit Chance by @Pawkkie in #5439
- Added battle flag that prevents running from wild Pokémon by @SarnPoke in #5502
Changed
- Refactor Frontier Brains by @fdeblasio in #5027
- Removed some hardcoding of move IDs + Gen4/5 Defog by @AsparagusEduardo in #5156
- Convert 8 various to
callnatives
by @AsparagusEduardo in #5172 - Anger Shell use
saveattacker
by @ghoulslash in #5409 - Clean up Unseen Fist Check by @AlexOn1ine in #5420
- Updated species defines by @pkmnsnfrn and @mrgriffin in #5075
- Removes Crit Chance preproc by @AlexOn1ine in #5520
- Update battle messages to Gen 5+ standards by @kittenchilly in #3240
- More post-#3240 cleanup by @kittenchilly in #5593
- Unwind
TRAINER_CLASS
macro by @SBird1337 in #5611 - Removes redundant Decorate check by @AlexOn1ine in #5696
- Changes target bit of Flower Shield by @AlexOn1ine in #5698
Fixed
- Fixed a sprite issue with
B_SHOW_TYPES
by @pkmnsnfrn and awakeon in #5157 - Dynamic Move Display fixes by @Galaxeeh in #5251
- Fixed a display issue with
B_SHOW_TYPES
by @pkmnsnfrn and @iriv24 in #5201 - Fixed Gen 3 foreseen and Beat Up damage type by @hedara90 in #5323
- Fixes Defog used by the wrong side when there is a Substitue and Screen by @AlexOn1ine in #5381
- Fixes Hidden Power dynamic type bug by @AlexOn1ine in #5463
- Display the correct shadow size when sending out a new Pokemon by @lhearachel in #5618
- Fixed text wrap obtaining the incorrect glyph width by @AsparagusEduardo and @AlexOn1ine for their help verifying that the fix works with one of his custom strings in #5620
- Improve line breaks/scrolls by @cawtds in #5641
- Fixed Order Up + Tera Stellar breaking each other with Commander by @PhallenTree in #5667
- Fixes wrong Id when AI chooses mon to switch in by @AlexOn1ine in #5684
- Fixes Absorb regression caused by #5670 by @AlexOn1ine in #5688
- Fixes heal blocked leeach seed in tests by @AlexOn1ine in #5700
- Trainer class+name expansion fix for Battle Frontier by @hedara90 in #5699
🤹 Moves 🤹
Changed
- Added Population Bomb animation by @kittenchilly in #5194
- Move battle anim arrays to C by @cawtds in #5306
- Grass/Water Pledge Swamp Animation + Sea of Fire animation tweak by @SonikkuA-DatH in #5325
- New animations for many moves more details in description by @TheTrueSadfish in #5367
- Use move effect for some moves instead of ids by @AlexOn1ine in #5433
- Adds Commander and Order Up by @AlexOn1ine in #5246
- Heart Swap Move Animation by @SonikkuA-DatH in #5460
- Update
shed_tail.c
by @Bassoonian in #5494 - Added Ion Deluge animation by @kittenchilly in #5467
- Updated Wring Out effects to match Eruption effects by @AsparagusEduardo in #5549
- Changed Wring Out/Crush Grip/Hard Press to use
power
instead ofargument
to determine its max power, just like how Eruption/Water Spout/Dragon Energy do it. Also: - Renamed
EFFECT_VARY_POWER_BASED_ON_HP
toEFFECT_POWER_BASED_ON_TARGET_HP
- Renamed
EFFECT_ERUPTION
toEFFECT_POWER_BASED_ON_USER_HP
- Changed Wring Out/Crush Grip/Hard Press to use
- Refactors Absorb to use Moveend by @AlexOn1ine in #5670
- For new absorbing moves an argument should be added in
moves_info.h
- For new absorbing moves an argument should be added in
Fixed
- Dark Void, Clangorous Soulblaze, vortex animation fixes by @TheTrueSadfish in #5650
🎭 Abilities 🎭
Changed
- Adds Commander and Order Up by @AlexOn1ine in #5246
🧶 Items 🧶
Added
- Adds
OW_BERRY_IMMORTAL
by @pkmnsnfrn and @BuffelSaft in #5187 - Added functionality to Poké Flute and Town Map by @kittenchilly and @LOuroboros basically did the Town Map implementation in #5405
- Decouple Poke Ball ids from item ids by @AlexOn1ine in #5560
Changed
- Consolidated the values of Rotom's moves and added Gen9 base form effect by @fdeblasio in #5186
- Added
I_REPEL_INCLUDE_FAINTED
config and behavior by @kittenchilly in #5239
Fixed
- Replace hardcoded flute check with consumability check by @Bassoonian in #5508
🤖 Battle AI 🤖
Added
- Adds config to show target of ingame partner by @AlexOn1ine in #5307
- Switch AI refactor + considers free switches by @Pawkkie in #5379
- New AI flag for marking the two last Pokémon as Ace Pokémon by @GhoulMage in #5587
Changed
- Chilly Reception AI by @kittenchilly in #5271
- Shed Tail AI by @SarnPoke and @AlexOn1ine, @Pawkkie in #5275
- More missing AI logic by @kittenchilly in #5279
- Adds basic trainer and smart trainer flags by @AlexOn1ine in #5298
AI_FLAG_SETUP_FIRST_TURN
rename and clarifications by @Pawkkie in #5310- Added Composite AI Flags to Docs by @Pawkkie in #5349
- AI frostbite score fixes and improvements by @Pawkkie and @kittenchilly for the suggestion! in #5362
- Switch AI
hitsToKO
considers one shot prevention by @Pawkkie in #5371 - Adds
CanEndureHit
AI function by @AlexOn1ine in #5373 - Switch AI
hitsToKO
considers Disguise by @Pawkkie in #5375 - Added
ShouldSwitch
result toAiLogicData
by @Pawkkie and @AlexOn1ine had the idea! in #5440 - Removes duplicate code in AI functions by @AlexOn1ine in #5457
- Unify
GetBattlerAbility
/TerrainAffected
to remove duplicate ai function by @AlexOn1ine in #5497 ShouldSwitchIfGameStatePrompt
Tests by @Pawkkie in #5462AI_FLAG_ACE_POKEMON
takes into account separate trainers by @GhoulMage and @/uvula on Discord noted the weird behaviour. in #5608- Fix for the AI not considering both trainers Ace Pokémons in double battles with
AI_FLAG_ACE_POKEMON
.
- Fix for the AI not considering both trainers Ace Pokémons in double battles with
- Moves that deal a Fixed amount don't need AI handling by @AlexOn1ine in #5614
- Combines
CalculateMoveDamage
arguments into a struct by @AlexOn1ine in #5570
Fixed
- AI burn score fixes and improvements by @Pawkkie and @iriv24 and @AlexOn1ine in #5356
- Improve AI's Skill Swap handling in double battles by @Pawkkie in #5360
- Refactor
ShouldSwitchIfAllBadMoves
by @Pawkkie in #5452 - Should switch refactor to facilitate switch prediction by @Pawkkie in #5466
- Fixes Switch in flag not restoring mons properly with test by @Pawkkie and @iriv24 for finding, @AlexOn1ine for fixing in #5746
🧹 Other Cleanup 🧹
- Removed metadata in AIF files by @SombrAbsol in #4958
- Removed
gPaletteDecompressionBuffer
and unused palette functions/vars by @DizzyEggg in #4841 - Changes Evolution methods to
enum
s by @AlexOn1ine in #4977 - Doesn't compile on some compilers by @AlexOn1ine in #5099
- Update
event.inc
to accomodate newgDecompressionBuffer
name by @Bassoonian in #5100 - Created
COMPOUND_STRING
s for default player names by @fdeblasio in #5037 - Changed single-use berry blender strings to be
COMPOUND_STRING
s by @fdeblasio in #4963 - Made perfect IV count into a granular setting by @AsparagusEduardo in #5115
- Dynamic move type clean up by @AlexOn1ine in #5132
- Refactor Frontier Brains by @fdeblasio in #5027
- Removed some hardcoding of move IDs + Gen4/5 Defog by @AsparagusEduardo in #5156
- Teatime animations use
B_WAIT_TIME_LONG
by @AsparagusEduardo in #5173 - Created PokeNav
COMPOUND_STRING
s by @fdeblasio in #4983 - Removed
gBitTable
usage again by @hedara90 in #5193 - Removed support for the original LCG random number generator by @tertu-m in #5078
- Deprecate MMBN Names by @pkmnsnfrn in #5240
- Convert 8 various to
callnatives
by @AsparagusEduardo in #5172 - Converted PC strings to
COMPOUND_STRING
s by @fdeblasio in #5314 - Cleaned up duplicate dynamic type functions by @AsparagusEduardo in #5338
- Removes redundant
moveTargetType
ai function by @AlexOn1ine in #5354 - Made
BuildColorMaps
redundant by using static tables by @pkmnsnfrn, @Deokishisu and @ShinyDragonHunter in #5289 - Some strings were switched by @AlexOn1ine in #5374
- Switch AI hitsToKO considers Disguise by @Pawkkie in #5375
- Cleaned up a bit of code with
GetBattlerPartyData
by @AlexOn1ine in #5378 - Minor Gem check optimazation by @AlexOn1ine in #5401
- Simplify HP Logic by @AreaZR in #5403
- Anger Shell use
saveattacker
by @ghoulslash in #5409 - Converted berry and PokeBlock strings to
COMPOUND_STRING
s by @fdeblasio in #5324 - Merge item description branch history by @Bassoonian in #5419
- Clean up Unseen Fist Check by @AlexOn1ine in #5420
- Merge level_caps and ev_caps into one caps file by @kittenchilly in #5429
- Removed trailing whitespace pass 10-2-2024 (Upcoming) by @kittenchilly in #5456
- Fixed Commander test name by @Bassoonian in #5458
- Updated species defines by @pkmnsnfrn and @mrgriffin in #5075
- Adds padding in
AiLogicData
by @AlexOn1ine in #5468 - Simplify
BS_FAINTED_MULTIPLE_1
double battle logic in openpartyscreen by @ghoulslash in #5435 - Removes duplicate code in AI functions by @AlexOn1ine in #5457
ShouldPivot
type cleanup by @Pawkkie in #5441- Turn item hold effects into an enum by @Bassoonian in #5498
- Unify
GetBattlerAbility
/TerrainAffected
to remove duplicate ai function by @AlexOn1ine in #5497 - Clean up Shedinja code by @Bassoonian in #5501
- Clean up
scrcmd
PR by @Bassoonian in #5511 - Removes Crit Chance preproc by @AlexOn1ine in #5520
- Removed agbcc screenshots from gitignore by @Bassoonian in #5538
- Removed unnecessary
gBattlerAttacker
usage by @AlexOn1ine in #5554 - Removed remaining line breaks from #3240 + Prefix wrap fix by @AsparagusEduardo in #5556
- More post-#3240 cleanup by @kittenchilly in #5593
- Renamed folders and symbols to match species defines by @AsparagusEduardo in #5581
- Also:
- Burmy and Wormadam footprints were in a
plant
subfolder. They have been moved to the species root folder - Paldean Wooper's subfolder was named
wooper_paldean
instead of justpaldean
. This has been corrected. - Zen Mode Galarian Darmanitan's folder was located in
darmanitan/galarian/zen_mode
. This has been corrected todarmanitan/galar_zen
, alongside Galarian Standard Mode'sdarmanitan/galar_standard
. - Also updated Ogerpon's folders similarly.
- Renamed
SPECIES_PIKACHU_PARTNER_CAP
toSPECIES_PIKACHU_PARTNER
.
- Minor
BattleStruct
clean up by @AlexOn1ine in #5585 - Fixed a ball update oversight by @Bassoonian in #5609
AI_FLAG_ACE_POKEMON
takes into account separate trainers by @GhoulMage and @/uvula on Discord noted the weird behaviour in #5608- Fix for the AI not considering both trainers Ace Pokémons in double battles with
AI_FLAG_ACE_POKEMON
.
- Fix for the AI not considering both trainers Ace Pokémons in double battles with
- Moves that deal a Fixed amount don't need AI handling by @AlexOn1ine in #5614
- Combines
CalculateMoveDamage
arguments into a struct by @AlexOn1ine in #5570 - Follow up for #5570 by @AlexOn1ine in #5625
AI_CalcDamage
clean up by @AlexOn1ine in #5629- Convert 3 variouses to
callnatives
by @AlexOn1ine in #5646 - Convert
gBattleStringsTable
toCOMPOUND_STRING
s by @AsparagusEduardo in #5649 - Added merged placeholder text for trainer name with class by @kittenchilly in #5622
- Cleans up Primal Reversion code by @AlexOn1ine in #5659
- Critical Hit documentation and distorted match up struct switch by @AlexOn1ine in #5665
- Changes name of
B_SCR_NAME_WITH_PREFIX
by @AlexOn1ine in #5675 - Removes redundant Decorate check by @AlexOn1ine in #5696
- Changes taget bit of Flower Shield by @AlexOn1ine in #5698
- Changing
EVO_NONE
from0xFFFE
to0
by @GhoulMage in #5547- There could be a case for out of bounds errors if arrays or iterations are happening where you're using + 1 or - 1, as
EVO_FRIENDSHIP
used to be the first index although it started with 1.
- There could be a case for out of bounds errors if arrays or iterations are happening where you're using + 1 or - 1, as
🧪 Test Runner 🧪
Changed
- Fixed Commander test name by @Bassoonian in #5458
ShouldSwitchIfGameStatePrompt
Tests by @Pawkkie in #5462- Added various tests, add
RNG_RANDOM_TARGET
by @ghoulslash in #5438 - Added Costar Tests, Download Test for Doubles by @ghoulslash in #5526
- Updated Wring Out effects to match Eruption effects by @AsparagusEduardo in #5549
- Changed Wring Out/Crush Grip/Hard Press to use
power
instead ofargument
to determine its max power, just like how Eruption/Water Spout/Dragon Energy do it. Also: - Renamed
EFFECT_VARY_POWER_BASED_ON_HP
toEFFECT_POWER_BASED_ON_TARGET_HP
- Renamed
EFFECT_ERUPTION
toEFFECT_POWER_BASED_ON_USER_HP
- Changed Wring Out/Crush Grip/Hard Press to use
- Healer ability tests by @Pawkkie in #5559
- Mark all tests as used by @mrgriffin in #5531
Fixed
📚 Documentation 📚
DoBattleIntro
state documentation by @AsparagusEduardo and @ShinyDragonHunter in #5231- Deprecate MMBN Names by @pkmnsnfrn in #5240
AI_FLAG_SETUP_FIRST_TURN
Rename and Clarifications by @Pawkkie in #5310- Added Composite AI Flags to Docs by @Pawkkie in #5349
- Updated the new pokemon tutorial for 1.10 by @hedara90 in #5721
- Some changes compared to previous.
New Contributors
- @SombrAbsol made their first contribution in #4958
- @Galaxeeh made their first contribution in #5084
- @Flash1Lucky made their first contribution in #5269
- @GhoulMage made their first contribution in #5547
Full Changelog: expansion/1.9.4...expansion/1.10.0