# Version 1.8.0

```md
## 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.8.0`.
```

## 🌋 *IMPORTANT CHANGES* 🌋
* ***Python is now a required for the Expansion***.
    * Run the `command -v python3` command to see if you have it. If you don't, please check INSTALL.md to see how to install it.
* **Support for PoryMap v5.1.1 and lower has been dropped.**
    * [Please update your PoryMap version](https://github.com/huderlem/porymap/releases).
    * Specifically, we have removed the commented-out `gMonIconTable` table used to associate species IDs with icon images by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3896
        * From PoryMap v5.2.0 onwards, these icons are autodetected based on file/directory names instead.
    * To continue using older versions of PoryMap, you may restore the commented-out table, though you'll need to keep it up to date with any new items you add.
* **Backwards-compatible `BoxPokemon` Refactor** by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3438
    * HP and Status is now kept when depositing Pokémon in the PC
        * Previous behavior can be restored by setting `OW_PC_HEAL`.
    * Nature Mints are now fully functional.
        * Nature colors in summary screen are based on the changed nature by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3898
    * Gigantamax Factor and Dynamax Level fully supported.
        * Cannot be seen in summary screen.
        * Dynamax Candy effect added.
        * Gigantamax Factor prevents Duraludon from evolving, like Pikachu, Eevee and Meowth beforehand.
        * Added `hasgigantamaxfactor` and `togglegigantamaxfactor` overworld script commands.
            * Gigantamax Factor cannot be toggled for Mythical Pokémon (vanilla behavior).
    * Hyper Training is now fully supported.
        * Cannot be seen in summary screen.
        * Added `canhypertrain` and `hypertrain` overworld script commands.
    * Shininess can be toggled with `MON_DATA_IS_SHINY`.
    * Added Tera Type field is added for future-proofing.
        * It can be seen in the summary screen by turning `P_SHOW_TERA_TYPE` on.
    * Added `isShadow` field for future-proofing.
    * Added options for Tera Type, Dynamax Level, Gigantamax Factor and Shadow flag in tests.
    * Cleanup by
        * @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3832
        * @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4017

* **Move Refactors**:
    * ***Move data unification*** by @LOuroboros, with help from @Bassoonian, @cfmnephrite and @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3999
        * Renamed `gBattleMoves` to `gMovesInfo`.
        * Moved move names to `gMovesInfo`.
            * Added `GetMoveName` to get all move names, removing the need for `GetMaxMoveName` and `GetZMoveName`.
        * Moved move descriptions to `gMovesInfo`.
        * Moved contest data to `gMovesInfo`.
    * ***Secondary/primary effects overhaul*** by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3577
        * Secondary effects such as stat stage modifiers and status via are now set via `additionalEffects` field.
        * Eg.
            ```c
            [MOVE_THUNDER_FANG] =
            {
                .effect = EFFECT_FLINCH_STATUS,
                .secondaryEffectChance = 10,
                .argument = STATUS1_PARALYSIS,
                ...
            },
            ```
            Now becomes:
            ```c
            [MOVE_THUNDER_FANG] =
            {
                .effect = EFFECT_HIT,
                .additionalEffects = ADDITIONAL_EFFECTS(
                    { .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 10, },
                    { .moveEffect = MOVE_EFFECT_FLINCH,    .chance = 10, }
                ),
                ...
            },
            ```
            With customizable independent chances for each effect. Because of this, `secondaryEffectChance` has been removed.
        * For more info, check the wiki article on [How to add a new move](https://github.com/rh-hideout/pokeemerald-expansion/wiki/How-to-add-a-new-move-(Version-1.8.0-and-higher)).
        * Cleanup by:
            * @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3986
            * @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4003
            * By @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/4137
            * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4277
    * ***Renamed Battle Move "Split" to the proper "Category" term*** by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3774
        ```diff
        -.split = SPLIT_PHYSICAL,
        +.category = DAMAGE_CATEGORY_PHYSICAL,
        ```
    * Z-move power override (eg. Mega Drain) was moved from a switch in `GetZMovePower` to move data. It's part of an union alongsize with Z-move status effect by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3575
        * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4201
    * Removed `EFFECT_RECOIL_x` effects in favor of new `recoil` field by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3575
    * Removed critical-hit move effects in favor of new `criticalHitStage` by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3779
        * Added `alwaysCriticalHit` move flag.
    * Converted `EFFECT_x` defines to an enum by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3975
    * Move data now uses ternaries for data that was changed only once across generations by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3987
        ```diff
        [MOVE_SWORDS_DANCE] =
        {
        -   #if B_UPDATED_MOVE_DATA >= GEN_6
        -       .pp = 20,
        -   #else
        -       .pp = 30,
        -   #endif
            .effect = EFFECT_ATTACK_UP_2,
            .power = 0,
            .type = TYPE_NORMAL,
            .accuracy = 0,
        +   .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 30,
        ```
    * Moved effect script array to `src/data/battle_move_effects.h` by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3994
        * AI's `sEncouragedEncoreEffects` and Battle TV's `sPoints_MoveEffect` are now handled in this struct.
        * Some move flags were moved to this array instead
            * Semi-invulnerable flag (`semiInvulnerableEffect`) in https://github.com/rh-hideout/pokeemerald-expansion/pull/4062
                * Cleanup by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/4150
            * Flag to define Two-turn effects (`twoTurnEffect`) in https://github.com/rh-hideout/pokeemerald-expansion/pull/4062
            * Flag for increasing the protection counter (`usesProtectCounter`) in https://github.com/rh-hideout/pokeemerald-expansion/pull/4062
    * Removed `sheerForceBoost` in favor of checking their actual secondary effects by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/4096
        * To force Sheer Boost acting for a move without secondary effect, you can add `SHEER_FORCE_HACK` in the `additionalEffects` field.
* ***Learnset refactors***
    * ***Level up learnsets can now be switched by generational config*** by @MartyKen in https://github.com/rh-hideout/pokeemerald-expansion/pull/4049
        * Adds a file for each generation with data for all species.
            * Gen 1: Yellow
            * Gen 2: Crystal
            * Gen 3: RSE
            * Gen 4: HGSS
            * Gen 5: B2W2
            * Gen 6: ORAS
            * Gen 7: USUM
            * Gen 8:
                * Species from Gens 1-4: BDSP
                * Species from Legends: Arceus: Use that game's data.
                * Species from Gens 5-8: SwSh if they exist there. Otherwise, default to Gen 7's data.
            * Gen 9:
                * If they exist in SV, use that game's data.
                * Otherwise, default to Gen 8's data.
        * If a Pokémon doesn't exist in the respective generation, it uses the first instance it appears in.
            * Eg. Chikorita uses its Gen 2 learnset if the config is set to Gen 1.
            * ***IMPORTANT:*** Since the expansion's default had most movesets correspond to USUM's, conflicts will arise in `data/pokemon/level_up_learnsets/gen_7.h` if you modified the level learnsets. Be sure to backup your `data/pokemon/level_up_learnsets.h` before merging and then do the following after merging to keep your changes:
                ```diff
                +#include "data/pokemon/level_up_learnsets.h"
                +#if FALSE
                +
                 #if P_LVL_UP_LEARNSETS >= GEN_9
                 #include "data/pokemon/level_up_learnsets/gen_9.h"
                 #elif P_LVL_UP_LEARNSETS >= GEN_8
                 #include "data/pokemon/level_up_learnsets/gen_8.h"
                 #elif P_LVL_UP_LEARNSETS >= GEN_7
                 #include "data/pokemon/level_up_learnsets/gen_7.h"
                 #elif P_LVL_UP_LEARNSETS >= GEN_6
                 #include "data/pokemon/level_up_learnsets/gen_6.h"
                 #elif P_LVL_UP_LEARNSETS >= GEN_5
                 #include "data/pokemon/level_up_learnsets/gen_5.h"
                 #elif P_LVL_UP_LEARNSETS >= GEN_4
                 #include "data/pokemon/level_up_learnsets/gen_4.h"
                 #elif P_LVL_UP_LEARNSETS >= GEN_3
                 #include "data/pokemon/level_up_learnsets/gen_3.h"
                 #elif P_LVL_UP_LEARNSETS >= GEN_2
                 #include "data/pokemon/level_up_learnsets/gen_2.h"
                 #elif P_LVL_UP_LEARNSETS >= GEN_1
                 #include "data/pokemon/level_up_learnsets/gen_1.h"
                 #endif
                +#endif
                ```
        * Cleanup by
            * @MartyKen in https://github.com/rh-hideout/pokeemerald-expansion/pull/4267
            * @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4275
    * Added `sUniversalMoves`, a near-universal teachable move array by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4052
        * This removes the need to add moves such as Hidden Power to almost every species.
        * Adds `tmIlliterate` flag that controls when specific species cannot learn these moves, such as Magikarp, Caterpie and Ditto.
    * ***Auto-generate teachable learnset data from JSON data*** by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3856
        - Scans the repository for TMs and tutor moves.
        - Checks JSON files (same format as PoryMoves, with minor label adjustments for an easier time) for compatibility.
        - Creates a `teachable_learnsets.h` file with the smallest size possible by only including the moves found in the scan.
        - Users can easily delete/add JSON files to reference less/more data as they see fit.
            - Eg. they can remove hgss.json to remove those games' compatibility list from being considered.
        - Any changes in `teachable_learnsets.h` made before this tool runs for the first time will be saved in `custom.json` for flawless migration.
        * Updated `teachable_learnsets.h` using this script by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4064
            * Further updated with new Indigo Disk data compatibility by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4155
        * Can be disabled via `P_LEARNSET_HELPER_TEACHABLE`.
    * Removed previously untutorable moves from Mew's unteachable moves by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/4142

* **Ability Refactor: new struct called `Ability` that stores both name and description of abilities** by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3861
    * AI ability scores moved to this struct by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3862
    * Added ability flags to replace arrays and switch statements by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3886
        * `cantBeCopied`: Cannot be copied by Role Play or Doodle.
        * `cantBeSwapped`: Cannot be swapped with Skill Swap or Wandering Spirit.
        * `cantBeTraced`: Cannot be copied by Trace.
        * `cantBeSuppressed`: Cannot be negated by Gastro Acid or Neutralizing Gas.
        * `cantBeOverwritten`: Cannot be overwritten by Entrainment, Worry Seed or Simple Beam. Mummy/Lingering Aroma checks for `cantBeSuppressed` instead.
        * `breakable`: Can be bypassed by Mold Breaker-like abilities.
        * `failsOnImposter`: Currently unused.
        * Cleanup by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3889

* **Type info consolidation by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/4185**
    * New struct called `TypeInfo` that stores:
        * Name
        * Generic move name
        * Icon Palette index number
        * Type Z-Move
        * Type Max Move
        * Commented out data to assist users that desire to use it in their own hacks and as a reference for them to add items of new types.
            * Type-enhancing item (eg. Charcoal)
            * Type-resist berry
            * Type Gems
            * Z-Crystal
            * Tera Shard
            * Arceus form
    * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4276

## 🧬 General 🧬
### Added
* Added optional high-quality RNG by @tertu-m in https://github.com/rh-hideout/pokeemerald-expansion/pull/3780
    * Can be toggled with `HQ_RANDOM`.
    * Cleanup by
        * @tertu-m in https://github.com/rh-hideout/pokeemerald-expansion/pull/3812
        * @tertu-m in https://github.com/rh-hideout/pokeemerald-expansion/pull/4218
        * @tertu-m in https://github.com/rh-hideout/pokeemerald-expansion/pull/4278
* Added defines to RHH's rom header
    * `MOVES_COUNT` and `NUM_SPECIES` by @Ninjdai1 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3831
        * Cleanup by @Ninjdai1 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3992
    * `ITEMS_COUNT` and `ITEM_NAME_LENGTH` by @Ninjdai1 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3988
* IWRAM and EWRAM variables can now be assigned at boot by using `EWRAM_INIT` and `IWRAM_INIT` by @aronson in https://github.com/rh-hideout/pokeemerald-expansion/pull/3892
    * For example:
        ```c
        EWRAM_INIT u32 gFoo = 1337;
        IWRAM_INIT u32 gFastFoo = 31337;
        ```
    * Cleanup by @aronson in https://github.com/rh-hideout/pokeemerald-expansion/pull/3903
* Level Caps by @AlexOn1ine, @SBird1337 and PokemonCrazy in https://github.com/rh-hideout/pokeemerald-expansion/pull/3632
    * Types of caps (set in `B_EXP_CAP_TYPE`):
        * None (`EXP_CAP_NONE`): Regular behavior, no level caps are applied.
        * Hard (`EXP_CAP_HARD`): Pokémon with a level equal or above cap cap cannot gain any experience.
        * Soft (`EXP_CAP_SOFT`): Pokémon with a level equal or above cap will gain reduced experience.
    * Cap level can be set using either:
        * `LEVEL_CAP_FLAG_LIST`: Level cap is chosen according to the first unset flag in `sLevelCapFlagMap`.
        * `LEVEL_CAP_VARIABLE`: Uses a defined variable to dynamically change level cap.
    * Additional options include:
        * `B_RARE_CANDY_CAP`: If set to true, Rare Candies can't be used to go over the level cap.
        * `B_LEVEL_CAP_EXP_UP`: If set to true, mons under level cap will receive more experience.
    * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4275
* Added new metaprogram macros by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/3968
    * Allows to set up default data without explicitily defining it.
        * Eg. setting Poké Balls as the default ball for all trainer classes.
* Elite Four/Champion transitions can now easily be applied to any trainer in their data by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/4000
    * Based off @ShinyDragonHunter's [BetterMugshots](https://github.com/ShinyDragonHunter/pokeemerald/tree/BetterMugshots) branch.
    * To use, use these in `src/data/trainers.h`:
        * Use`mugshotEnabled` to enable it for the specific trainer.
        * Use `mugshotColor` to choose the color of the background for the transition between the following:
            * `MUGSHOT_COLOR_PURPLE`
            * `MUGSHOT_COLOR_GREEN`
            * `MUGSHOT_COLOR_PINK`
            * `MUGSHOT_COLOR_BLUE`
            * `MUGSHOT_COLOR_YELLOW`
    * Cleanup using metaprogram by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/4140
* Added `OW_DOUBLE_APPROACH_WITH_ONE_MON` config to allow being spotted by two trainers with one mon in party for a 2v1 battle by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4007
* Added configs to enable metric system units by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4183
    * Toggled by `UNITS` in `include/config.h`.
    * Cleanup by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4193
* ***Implemented custom GiveMon scripting command*** by @LOuroboros, with help from @ghoulslash and @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3924
    * Based off @ghoulslash's [custom_givemon](https://github.com/ghoulslash/pokeemerald/tree/custom_givemon) branch.
    * In addition to Species, Level and Held Item, users can now specify:
        * Poké Ball
        * Nature
        * Ability number
            * You can pass `NUM_ABILITY_PERSONALITY` to generate the ability based on personality by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4192
        * Gender
        * EVs
        * IVs
        * Moves
        * Shininess
        * Gigantamax Factor
        * Tera Type
* Save-compatible SaveBlock3, with 1624 bytes by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/4112
    * ***IMPORTANT:*** This is incompatible with the "[Extra save space with two lines of code](https://github.com/pret/pokeemerald/wiki/Extra-save-space-with-two-lines-of-code)" tutorial, which allocates that additional space to `SaveBlock1`, `SaveBlock2`, and `PokemonStorage` instead. To preserve save compatibility, change `SAVE_BLOCK_3_CHUNK_SIZE` to 0 and keep `SECTOR_DATA_SIZE` as 4084.
* Trainer Control
    * Trainer data encapsulation by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4216
    * Added options for `TrainerMon`:
        * By @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3438
            * Dynamax Level (`dynamaxLevel`)
            * Gigantamax Factor (`gigantamaxFactor`)
        * By @Nopinou in https://github.com/rh-hideout/pokeemerald-expansion/pull/4169
            * AI flags to signal when to Dynamax (`shouldDynamax`)
            * AI flags to signal when to Terastalize (`shouldTerastal`)
    * Sets neutral nature and ability to 0 as default by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4172
* Added `randompercentage` and `randomelement` script commands by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/4189
    * Allows to do the following:
        ```
        @ VAR_RESULT is one of Treecko, Torchic, or Mudkip
        randomelement SPECIES_TREECKO, SPECIES_TORCHIC, SPECIES_MUDKIP
        @ Gives a random one of Treecko, Torchic, or Mudkip.
        givemon VAR_RESULT, 5
        ```
        ```
        @ VAR_RESULT is TRUE 25% of the time, and FALSE 75% of the time.
        randompercentage 25
        @ Gives a Wobbuffet that is shiny 25% of the time.
        givemon SPECIES_WOBBUFFET, 20, isShiny=VAR_RESULT
        ```
### Changed
* Simplified creation of Object Events by adding `overworld_ascending_frames` for sequential `overworld_ascending`s by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3625
* Comparison functions now follow -1, 1, 0 convention by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3777
* Centralized Trainer sprites by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3597
* Standarized usage of array shuffling to use `Shuffle` function by @tertu-m in https://github.com/rh-hideout/pokeemerald-expansion/pull/3801
* Turned nature names into compound strings by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3871
* `TrainerMoney` struct is renamed to `TrainerClass` and now includes Trainer Class name by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3875
* Improve error message with unsupported cpp by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4272
### Fixed
* Fixed potential compiler errors by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4252
* Fixed `ScriptGiveMonParameterized` not recognizing the state of `P_FLAG_FORCE_SHINY` and `P_FLAG_FORCE_NO_SHINY` by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4256
* Fixed a graphical issue when catching a form of a Pokémon for the first time by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4279
* Fixed `ScriptGiveMonParameterized` randomizing nature even when being set by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4271

## ✨ Feature Branches ✨
### ***Incorporated @SBird1337's Dynamic Multichoices*** by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3826
* This allows to set up custom multichoices much easier!
* Allows you to control what options appear based custom conditions (such as them being based on what items you have currently, or even completely at random!).
* Event callbacks can be added as well, to fully customize what happens with your multichoices.
    * Included there's `DYN_MULTICHOICE_CB_SHOW_ITEM`, which shows icons of the items defined by your script.
* Compatible with Poryscript.
* For more information and how to use it, please visit the [Pokécommunity thread](https://www.pokecommunity.com/threads/event-scripts-dynamic-multichoice.489984/).
### ***Incorporated @ghoulslash's Saveblock Cleansing branch*** by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4113
* Differences from the the standalone branch:
    - Moved configs to dedicated file (`include/config/save.h`).
        - Fixed comments to the proper amount of space saved.
    - Added `FREE_MYSTERY_GIFT`, saving 876 bytes in `SaveBlock1`.
    * Added new `FREE_EXTRA_SEEN_FLAGS_SAVEBLOCK2` to Pokedex struct to save an extra 108 in `SaveBlock2` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4213
    * Renamed `FREE_EXTRA_SEEN_FLAGS` to `FREE_EXTRA_SEEN_FLAGS_SAVEBLOCK1` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4213
    - Converted `#ifndef` configs to the config format the rest of expansion uses
    - Cleaned up the code and fixed to work on `modern`.
### ***TheXaman's Debug Menu***:
#### Added
* *"Give Pokémon Complex"* option can now set EVs by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3566
    * Fix by @gabrielcowley in https://github.com/rh-hideout/pokeemerald-expansion/pull/3930
* Added *"Clear bag"* option by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/
* Added new party debug options by @LOuroboros, with help from @ghoulslash and @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3924
    * *"Check IV"*: Checks the selected Pokémon's IVs.
    * *"Check EV"*: Checks the selected Pokémon's EVs.
    * *"Clear Party"*: Deletes all Pokémon from the Player's party.
    * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4275
* Upgraded "Poison Party" to "Inflict Status1" by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4235
    * Now it can also inflict: Paralysis, Sleep, Burn, Freeze and Frostbite.
    * Can be applied to a single member or the whole party.
    * Built using SBird's Multichoice.
#### Changed
* Cleaned up text and adjusted size to support longer text by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3919
* Reorganization and better naming by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3926
* Removed duplicated "Give all TMs" option by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4025
#### Fixed
* Fixed sound effect clipping when giving an item via debug menu by using a shorter sound by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4025

## 🐉 Pokémon 🐉
### Added
* Added Indigo Disk Pokémon data:
    * Doesn't break saves since it uses the reserved IDs used in 1.7.0
    * Species data by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3878
        * Cleanup by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3974
    * Sprites from [PokéCommunity's 64x64 DS-Style thread](https://www.pokecommunity.com/threads/ds-style-gen-vii-and-beyond-pok%C3%A9mon-sprite-repository-in-64x64.368703/post-10786160) by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4117
        * Front/Back sprites for: Gouging Fire, Raging Bolt, Iron Boulder, Iron Crown, Archaludon, Hydrapple.
        * Icon for: Hydrapple.
    * Cries by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4164
* Added `P_FOOTPRINTS` config to disable Pokémon footprints, saving around 35KB of ROM space by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3902
    * Cleanup by
        * @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3925
        * @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4251
* Added missing `P_UPDATED_EVS` config that allows setting the EV yield changes across generations by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3993
* Added missing `P_UPDATED_EXP_YIELDS` config that allows setting the Experience yield changes across generations by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3995
* Added evolution methods that require custom trackers (`MON_DATA_EVOLUTION_TRACKER`) by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4087
    * `EVO_LEVEL_MOVE_TWENTY_TIMES`:
        * Stantler can now evolve into Wyrdeer by using Psyshield Bash 20 times.
        * Primeape can now evolve into Annihilape by using Rage Fist 20 times.
    * `EVO_LEVEL_RECOIL_DAMAGE_MALE`/`EVO_LEVEL_RECOIL_DAMAGE_FEMALE`
        * White-Striped Basculin can now evolve into Basculegion when leveling up after receiving 294HP of recoil damage and being the corresponding gender.
* Added missing Paldean Wooper icon by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4260
* Added missing data for placeholder Pokémon by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4281
    * Internal Mothim forms used for accurate breeding.
    * Internal Scatterbug/Spewpa forms that can be used to specify Vivillon form in previous stages.
    * Totem Pokémon
    * Partner Pikachu/Eevee
### Changed
* ***Made all species IDs absolute instead of relative, to avoid confusion when adding new species*** by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4281
* Moved shared Pokédex text descriptions to their own file by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4281
* Renamed `species_info/gen_X.h` to `species_info/gen_X_families.h`
* Added missing entries for Hidden Abilities that default to `ABILITY_NONE`.
* Updated Gen 9 mon sprites from [PokéCommunity's 64x64 DS-Style thread](https://www.pokecommunity.com/threads/ds-style-gen-vii-and-beyond-pok%C3%A9mon-sprite-repository-in-64x64.368703/post-10786160) by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3969
    - Brute Bonnet
    - Chi-Yu
    - Flutter Mane
    - Iron Bundle
    - Sandy Shocks
    - Scream Tail
    - Skeledirge
    - Slither Wing
* Added `MON_TYPES` and `MON_EGG_GROUPS` metaprogram macros by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4154
    * They're used to define a single type/egg group without needing to define it twice.
        ```diff
        -.types = { TYPE_WATER, TYPE_WATER },
        +.types = MON_TYPES(TYPE_WATER),
        ...
        -.eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 },
        +.eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_3),
        ```
        Still supports double types:
        ```diff
        -.types = { TYPE_GROUND, TYPE_ROCK },
        +.types = MON_TYPES(TYPE_GROUND, TYPE_ROCK),
        ...
        -.eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD },
        +.eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_FIELD),
        ```
* ***To avoid confusion, reverted gSpeciesInfo "INFO" macros*** by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4230

## ⚔️ Battle General ⚔️ ##
### Added
* Implemented optional Gen1 type immunity logic. by @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3627
* Added Calyrex's blue Dynamax aura by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4018
* Expanded `VAR_TERRAIN` functionality
    * Added `B_VAR_STARTING_STATUS_TIMER` to allow `VAR_TERRAIN` (now called `B_VAR_STARTING_STATUS`) to last only a certain amount of turns instead of permanently by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4132
    * Further expanded by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4176
        * Can be used to set up these as well:
            * Trick Room
            * Magic Room
            * Wonder Room
            * Tailwind (for player or opponent sides independenly)
    * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4237

* AI score debug menu can now cycle through battlers by pressing L/R by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4134
### Changed
* Simplified Battle Partners code (eg. Steven) by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3592
    * Based off @ShinyDragonHunter's [CustomMultiBattles](https://github.com/ShinyDragonHunter/pokeemerald/tree/CustomMultiBattles) branch.
    * Removed specialized code for Steven partner cases.
    * Partners are now stored in their own array.
    * Fixed infinite loop by @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3808
* B_VAR_TERRAIN_TIMERRenamed VAR_TERRAIN to B_VAR_TERRAIN and added a var-based field terrain timer by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4132
### Fixed
* Fixed AI calculations potentially stomping data when emiting data by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3784
* Fixed Battle AI debug screen showing shiny sprites by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3922
* Fixed Gigantamax Factor not changing form by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4108
* Fixed Quick Draw having increased chances of activation in double battles by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4266

## 🤹 Moves 🤹
### Added
* Added missing move effects:
    * Ally Switch by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3533
        * Cleanup by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3835
    * Doodle by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3609
        * Cleanup by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3800
    * Fillet Away by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3616
    * Shed Tail by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4016
    * Last Respects by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4151
    * Tidy Up by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4136
* Added Indigo Disk Moves
    * Data by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3704
    * Moves with existing effects by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3704
        * Thunderclap
        * Mighty Cleave
        * Tachyon Cutter
        * Hard Press
        * Temper Flare
            * Animation by @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4145
        * Supercell Slam
        * Malignant Chain
    * New move effects
        * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3853
            * Burning Bulwark (uses Protect's animation as placeholder)
            * Alluring Voice (and animation)
            * Fickle Beam
            * Electro Shot
                * Animation by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4148
        * Psychic Noise by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4005
            * Animation by @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4145
            * Cleanup by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4021
        * Upper Hand (and animation) by @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4085
        * Dragon Cheer by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4122
            * Cleanup by @AlexOn1ine, based on comments by @Skeli789 and @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/4136
* Added move animations for existing moves:
    * By @ZnogyroP, with adjustments from @AlexOn1ine and @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/3989
        * Raging Bull
        * Gigaton Hammer
        * Ice Spinner
        * Aqua Cutter
    * Jet Punch by @PCG06 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4067
    * By @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4145
        * Last Respects
        * Lumina Crash
        * Kowtow Cleave
        * Torch Song
        * Aqua Step
        * Hydro Steam
        * Tidy Up
        * Pounce
        * Trailblaze
        * Chilling Water
        * Rage Fist

### Changed
* Updated move data to Gen 9 with configs by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3704
    * Added `sketchBanned` move flag, given to:
        * Sketch, Dark Void, Hyperspace Fury, Revival Blessing, Torque moves.
    * Luster Purge: 70 Power -> 95 Power
    * Mist Ball: 70 Power -> 95 Power
    * Aeroblast: Added Wind Move flag.
* Ivy Cudgel's type now changes based on Ogerpon's form rather than held item by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3865
* Renamed `healBlockBanned` flag to `healingMove` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3981
* Removed some hardcoded move IDs
    * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3982
        * `MOVE_EXPLOSION`, `MOVE_SELF_DESTRUCT`, `MOVE_FRUSTRATION`, `MOVE_AURA_WHEEL`, `MOVE_PRESENT`, `MOVE_BLIZZARD`.
    * By @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4085
        * `MOVE_SUCKER_PUNCH`.
* Removed now redundant `EFFECT_HURRICANE` in favor of `EFFECT_THUNDER` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3982
* Renamed `constants/z_move_effects.h` to `constants/battle_z_move_effects.h` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3982
* Updated Draco Meteor's animation to use @Skeli789's from CFRU, by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3989
* Improved Double Shock's animation by  @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3989
* Set `EFFECT_PLACEHOLDER` as the default move effect by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4079
* Renamed `EFFECT_FAKE_OUT` to `EFFECT_FIRST_TURN_ONLY` due to the flinch effect separation by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4081
* Renamed `EFFECT_WRING_OUT` to `EFFECT_VARY_POWER_BASED_ON_HP` and now it uses `argument` to set its base power by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4180
### Fixed
* Fixed `GetBattleAnimMoveTargets` function that caused multiple animation issues, such as Overheat's animation by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4139
* Fixed hardcoded battle strings by @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4147
    * Hospitality had Sinistcha's name hardcoded.
    * Battler prefixes (eg. "The opposing") were hardcoded in some places.
* Fixed Supreme Overlord's incorrect effect by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4151
* Fixed Hard Press' base power by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4180
* Fixed Teeter Dance not being copyable by Dancer in singles by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4129
    * *Known issue*: In doubles, it copies the move, but only confuses a single Pokémon.

## 🎭 Abilities 🎭
### Added
* Added Mind's Eye by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3782
* Added Hospitality by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3818
    * Fixed Dynamax interaction by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3821
* Added Embody Aspect (all 4 versions) by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3821
* Added Supersweet Syrup by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4115
    * Cleanup by
        * @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4170
        * @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4171
* Indigo Disk Abilities
    * Data by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3838
### Changed
* Updated ability banlists to Indigo Disk data by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3609
### Fixed
* Fixed Tangling Hair preventing Rocky Helmet from triggering interaction by @AlexOn1ine, with help from @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4219

## 🧶 Items 🧶
### Added
* Added Meteorite item form change functionality for Deoxys by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3770
* Added item price configs by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3834
    * `I_PRICE` and `I_BERRY_PRICE`.
    * Fixed missing data by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3836
* Added Pokemon Box Link functionality by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3837
* Added Indigo Disk item data by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3854
    * Metal Alloy
    * Stellar Tera Shard
* Added Legends: Arceus item data by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3825
    * Jubilife Muffin - Local specialty (Full Heal)
    * Remedy - Medicine (Potion)
    * Fine Remedy - Medicine (Super Potion)
    * Super Remedy - Medicine (Hyper Potion)
    * Aux items
        * Aux Evasion
        * Aux Power
        * Aux Guard
        * Aux Powerguard
        * Sprites based off [lichen's sprites from Relic Castle](https://reliccastle.com/resources/1287/) by @MartyKen in https://github.com/rh-hideout/pokeemerald-expansion/pull/4160
    * Choice Dumpling
    * Swap Snack
    * Twice Spiced Radish
    * Pokéshi Doll
* ***Berry Expansion*** by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3618
    * Berry Mutations (from XY): Planting a Berry tree next to another has a `BERRY_MUTATION_CHANCE` (25% by default) chance of causing a mutation (as dictated by `sBerryMutations`). Mutations mean that besides the usual output, the Berry plant will have a single Berry of the mutation (e.g. planting a Iapapa Berry next to a Mago Berry will cause it to have a single Pomeg Berry on top of its usual output).
        * Enabled via `OW_BERRY_MUTATIONS` config.
    * Easier Berry Debugging: Add berry manipulation functions to the debug menu to allow for forced growth and more.
    * Mulch (from Gen IV and XY): Using it on soil affects the growth, watering and production values of the plants.
        * Enabled via `OW_BERRY_MULCH_USAGE` config.
    * Gradient watering (from Gen IV and XY) (`OW_BERRY_MOISTURE` and `OW_BERRY_ALWAYS_WATERABLE`): rather than keeping track of if each stage has been watered like Gen III, the humidity of the soil is kept track of separately.
        * Enabled via `OW_BERRY_MOISTURE` config.
        * Switch between Gen4/6 via `OW_BERRY_ALWAYS_WATERABLE` config.
        * Rate of drying set by `OW_BERRY_DRAIN_RATE` config.
    * Weeding from XY: Berries may require unweeding for additional produce.
        * Enabled via `OW_BERRY_WEEDS` config.
    * Pests (from XY): Bug-type Pokémon may appear to feast on your plants.
        * Enabled via `OW_BERRY_PESTS` config.
    * Customisable stages: XY has six stages rather than four, so with this easy toggle you can choose the amount of stages without influencing the growth time.
        * Enabled via `OW_BERRY_SIX_STAGES` config.
    * Growth configs: Pick a generation whose Berry growth rates to use
        * Changed via `OW_BERRY_GROWTH_RATE` config.
    * Yield configs: Pick a generation whose Berry yields to use
        * Changed via `OW_BERRY_YIELD_RATE` config.
    * Cleanup by
        * @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3931
        * @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/4028
        * @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4275
* Added missing pre-Gen7 Power Item config (giving 4 EVs instead of 8) by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3961
* Added LGPE+ Premier Ball Bonus config by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4191
    * Originally based off [pret's tutorial](https://github.com/pret/pokeemerald/wiki/LGPE-Style-Bonus-Premier-Balls), but with the following changes:
        - If there's no space for the full amount of Premier Balls that would've been given, give the partial amount.
        - Shows the amount of Premier Balls given.
### Changed
* ***Raised the limit of max items per stack to 999*** by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3923
* ***Unified item data***
    * Move descriptions are now defined in `src/data/items.h` instead of `src/data/text/item_descriptions.h` by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3432
        * Cleanup by
            * @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3797
            * @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4088
    * Moved Item Effects (`gItemEffectTable`) to `gItemsInfo` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3991
    * Renamed `gItems` to `gItemsInfo` by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4068
* Item Balls now can be defined in the map's JSON (or using PoryMap) via the common script `Common_EventScript_FindItem` instead of needing to define a new script for it by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/3942
    ```diff
      "trainer_type": "TRAINER_TYPE_NONE",
    - "trainer_sight_or_berry_tree_id": "0",
    - "script": "AbandonedShip_CaptainsOffice_EventScript_ItemStorageKey",
    + "trainer_sight_or_berry_tree_id": "ITEM_STORAGE_KEY",
    + "script": "Common_EventScript_FindItem",
      "flag": "FLAG_ITEM_ABANDONED_SHIP_CAPTAINS_OFFICE_STORAGE_KEY"
    ```
    * Item count can also be defined by using the `movement_range_x` field:
        ```diff
        "trainer_sight_or_berry_tree_id": "ITEM_NUGGET",
        "script": "Common_EventScript_FindItem",
        "flag": "FLAG_ITEM_AQUA_HIDEOUT_B1F_NUGGET"
        + "movement_range_x": 2,
        ```
    * Existing scripts have been adapted to use this new format.
* Added plural item name support with new `pluralName` field in `gItemsInfo` by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/3942
    * When obtaining multiples of an item and the field is not defined, it appends an `s` at the end instead (eg. "Brendan got 40 Potion***s***!").
    * Python migration script available in `migration_scripts/item_ball_refactor.py` by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/3997
    * Deprecated `GetBerryCountString` by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4012
    * Cleanup by
        * @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4001
        * @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4015
* Combined `CannotUseBagBattleItem` and `CannotUsePartyBattleItem` into `CannotUseItemsInBattle` by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3524
### Fixed
* Fixed some ball multiplier data by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3939
    * Fixed `B_SPORT_BALL_MODIFIER` config being ignored and always applying a 1.5x multiplier.
    * Added missing `B_SAFARI_BALL_MODIFIER` that makes Safari Balls have a 1x multiplier from Gen7 onwards.
    * Added missing `B_LURE_BALL_MODIFIER` state that sets Lure Ball's multiplier to 4x from Gen8 onwards.
* Fixed Quick Claw having increased chances of activation in double battles by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4266

## 🤖 Battle AI 🤖
### Added
* Added `AI_CalcMoveScore` function to more easily control score increases by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3984
* Added `AI_FLAG_POWERFUL_STATUS` AI flag, replacing `AI_FLAG_SCREENER` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4125
    * It's meant to force the AI to do status instead of fainting the target (eg. setting up Trick Room to support the rest of the team)
### Changed
* AI flags are now saved by battler position instead of per side by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/3003
    * Cleanup by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4114
### Fixed
* Improved AI score changes handling by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4036
    * AI will not further increase Attack / Sp. Atk stat if it knows it faints to target.
    * AI will not use Throat Chop if opposing mon has a better move.
    * AI will select Throat Chop if the sound move is the best damaging move from opposing mon.
    * Cleanup by
        * @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4074
        * @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4075
        * @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4199
* Fixed AI not setting  sets up double flags correctly by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4228
* Move most damage `AI_BadMove` checks to `AI_CalcDamage` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4238
    * Fixes AI trying to use Burn Up after losing its fire type.
    * Fixes AI trying to use Electric moves when the target has Volt Absorb.
* Fixed AI vs AI battles would crash during the throw animation by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4240
* Fixed AI considering Mold Breaker but not Turboblaze/Teravolt for flinch-related decisions by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4244

## 🧹 Other Cleanup 🧹
* Removed hardcoded uses of `MOVE_STUFF_CHEEKS` and `MOVE_ME_FIRST` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3950
* Cleaned up `CheckMoveLimitations` to use less horizontal space by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3950
* Small `CanFirstMonBoostHeldItemRarity` optimization by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4008
* Tag previously-unused icon pals as such in code. by @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/4072
* Converted a bunch of `#if/#else` to regular conditions by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4071
* Clean up contest strings by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3876
* Fixed inconsistent braces style by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4023
* Replaced some `AI_GetMoveEffectiveness` instances with `AI_CanStatus` for speeding up calculations by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4166
* Remove some unused data by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4239
* Use `u32` instead of `u8`/`u16` in gflib files by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4250
* Unify monSpritesGfx bytes/ptr field by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4252
* `gHeap` can go in the middle of ram by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4253
* Corrected initial value of `targetSpecies` variable in `GetEvolutionTargetSpecies` by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4269
* Replaces `MOVE_FIRST_IMPRESSION` argument with a check for Fake Out for 100% flinch effect by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4274

## 🧪 Test Runner 🧪
### Added
* Added option to set flags in tests by @fakuzatsu in https://github.com/rh-hideout/pokeemerald-expansion/pull/3786
* Added missing Illuminate and Keen Eye Tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3782
* Added missing Belly Drum tests by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3616
* Added missing Stuff Cheeks by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3950
* Added Teeter Dance + Dancer test for doubles by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4274
### Changed
* Updated tests to use Gen 9 mon for appropiate abilities by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3740
* Tests no longer allow to use SEND_OUT if the chosen mon is fainted by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3752
### Fixed
* Consistent `BENCHMARK` timing by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3866
* Fixed Teatime test checking for Wonder Room instead of Magic Room by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3950
* Fixed test battle move category assumptions by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4051
* Fixed Tri Attack status ability immunity test by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4229
* Fixed Dauntless Shield test names by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4229

## 📦 Pret merges 📦
* 2023/12/30 by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3869
* 2024/02/10 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4173
* 2024/03/07 by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4255

## New Contributors
* @cfmnephrite made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3575
* @tertu-m made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3780
* @aronson made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3892
* @MartyKen made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/4049
* @ZnogyroP made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/4085
* @Nopinou made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/4169

**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.7.4...expansion/1.8.0

<!--Last PR: 4272-->
