Version 1.10.0

## 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_STRINGs 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 in #5289
  • Removed FRONTIER_BRAIN_SPRITES and updated TRAINER_SPRITE, TRAINER_BACK_SPRITE, and TRAINER_CLASS by @fdeblasio in #5166
  • Added ShouldSwitch result to AiLogicData 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 of argument to determine its max power, just like how Eruption/Water Spout/Dragon Energy do it.
    • Also:
      • Renamed EFFECT_VARY_POWER_BASED_ON_HP to EFFECT_POWER_BASED_ON_TARGET_HP
      • Renamed EFFECT_ERUPTION to EFFECT_POWER_BASED_ON_USER_HP
  • 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
  • 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 and NUM_FRAMES_AUTO_SCROLL_DELAY by @pkmnsnfrn in #5054
  • Adds SAVE_TYPE_ERROR_SCREEN by @pkmnsnfrn 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.

Changed

  • Removed agbcc by @mrgriffin in #4994
  • Removed all instances of gBitTable[x] by @hedara90 in #5123
  • Converted Mechadoll text to COMPOUND_STRINGs 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 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 in #5278
  • Added Sideways Stairs by @ghoulslash in #4836
  • Added OW_UNION_DISABLE_CHECK and OW_FLAG_MOVE_UNION_ROOM_CHECK by @pkmnsnfrn in #5448
  • Adds new scripting macros to increase developer quality of life by @pkmnsnfrn in #5177
  • Added more later gen fishing mechanics by @kittenchilly in #5518

Changed

  • Created PokeNav COMPOUND_STRINGs 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 in #5289
  • Added OW_AUTO_SIGNPOST and associated metatile behaviors by @pkmnsnfrn 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 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 just paldean. This has been corrected.
    • Zen Mode Galarian Darmanitan's folder was located in darmanitan/galarian/zen_mode. This has been corrected to darmanitan/galar_zen, alongside Galarian Standard Mode's darmanitan/galar_standard.
    • Also updated Ogerpon's folders similarly.
    • Renamed SPECIES_PIKACHU_PARTNER_CAP to SPECIES_PIKACHU_PARTNER.
  • Changing EVO_NONE from 0xFFFE to 0 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.

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 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 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 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 of argument to determine its max power, just like how Eruption/Water Spout/Dragon Energy do it. Also:
    • Renamed EFFECT_VARY_POWER_BASED_ON_HP to EFFECT_POWER_BASED_ON_TARGET_HP
    • Renamed EFFECT_ERUPTION to EFFECT_POWER_BASED_ON_USER_HP
  • Refactors Absorb to use Moveend by @AlexOn1ine in #5670
    • For new absorbing moves an argument should be added in moves_info.h

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 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 to AiLogicData 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 #5462
  • 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.
  • 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 enums by @AlexOn1ine in #4977
  • Doesn't compile on some compilers by @AlexOn1ine in #5099
  • Update event.inc to accomodate new gDecompressionBuffer name by @Bassoonian in #5100
  • Created COMPOUND_STRINGs for default player names by @fdeblasio in #5037
  • Changed single-use berry blender strings to be COMPOUND_STRINGs 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_STRINGs 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_STRINGs 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 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_STRINGs 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 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 just paldean. This has been corrected.
    • Zen Mode Galarian Darmanitan's folder was located in darmanitan/galarian/zen_mode. This has been corrected to darmanitan/galar_zen, alongside Galarian Standard Mode's darmanitan/galar_standard.
    • Also updated Ogerpon's folders similarly.
    • Renamed SPECIES_PIKACHU_PARTNER_CAP to SPECIES_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.
  • 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 to COMPOUND_STRINGs 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 from 0xFFFE to 0 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.

🧪 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 of argument to determine its max power, just like how Eruption/Water Spout/Dragon Energy do it. Also:
    • Renamed EFFECT_VARY_POWER_BASED_ON_HP to EFFECT_POWER_BASED_ON_TARGET_HP
    • Renamed EFFECT_ERUPTION to EFFECT_POWER_BASED_ON_USER_HP
  • Healer ability tests by @Pawkkie in #5559
  • Mark all tests as used by @mrgriffin in #5531

Fixed

  • Should switch refactor to facilitate switch prediction by @Pawkkie in #5466

📚 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: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.9.4...expansion/1.10.0