Skip to content

Latest commit

 

History

History
704 lines (683 loc) · 52.6 KB

File metadata and controls

704 lines (683 loc) · 52.6 KB

Version 1.8.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.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.
    • Specifically, we have removed the commented-out gMonIconTable table used to associate species IDs with icon images by @Bassoonian in rh-hideout#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 rh-hideout#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 rh-hideout#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
  • Move Refactors:

    • Move data unification by @LOuroboros, with help from @Bassoonian, @cfmnephrite and @AsparagusEduardo in rh-hideout#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 rh-hideout#3577
      • Secondary effects such as stat stage modifiers and status via are now set via additionalEffects field.
      • Eg.
        [MOVE_THUNDER_FANG] =
        {
            .effect = EFFECT_FLINCH_STATUS,
            .secondaryEffectChance = 10,
            .argument = STATUS1_PARALYSIS,
            ...
        },
        Now becomes:
        [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.
      • Cleanup by:
    • Renamed Battle Move "Split" to the proper "Category" term by @AsparagusEduardo in rh-hideout#3774
      -.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 rh-hideout#3575
    • Removed EFFECT_RECOIL_x effects in favor of new recoil field by @cfmnephrite in rh-hideout#3575
    • Removed critical-hit move effects in favor of new criticalHitStage by @cfmnephrite in rh-hideout#3779
      • Added alwaysCriticalHit move flag.
    • Converted EFFECT_x defines to an enum by @cfmnephrite in rh-hideout#3975
    • Move data now uses ternaries for data that was changed only once across generations by @AsparagusEduardo in rh-hideout#3987
      [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 rh-hideout#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
    • Removed sheerForceBoost in favor of checking their actual secondary effects by @cfmnephrite in rh-hideout#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 rh-hideout#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:
          +#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
    • Added sUniversalMoves, a near-universal teachable move array by @Bassoonian in rh-hideout#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 rh-hideout#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 rh-hideout#4064
        • Further updated with new Indigo Disk data compatibility by @AsparagusEduardo in rh-hideout#4155
      • Can be disabled via P_LEARNSET_HELPER_TEACHABLE.
    • Removed previously untutorable moves from Mew's unteachable moves by @fdeblasio in rh-hideout#4142
  • Ability Refactor: new struct called Ability that stores both name and description of abilities by @Bassoonian in rh-hideout#3861

    • AI ability scores moved to this struct by @Bassoonian in rh-hideout#3862
    • Added ability flags to replace arrays and switch statements by @cfmnephrite in rh-hideout#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 rh-hideout#3889
  • Type info consolidation by @fdeblasio in rh-hideout#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 rh-hideout#4276

🧬 General 🧬

Added

  • Added optional high-quality RNG by @tertu-m in rh-hideout#3780
  • Added defines to RHH's rom header
  • IWRAM and EWRAM variables can now be assigned at boot by using EWRAM_INIT and IWRAM_INIT by @aronson in rh-hideout#3892
    • For example:
      EWRAM_INIT u32 gFoo = 1337;
      IWRAM_INIT u32 gFastFoo = 31337;
    • Cleanup by @aronson in rh-hideout#3903
  • Level Caps by @AlexOn1ine, @SBird1337 and PokemonCrazy in rh-hideout#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 rh-hideout#4275
  • Added new metaprogram macros by @cfmnephrite in rh-hideout#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 rh-hideout#4000
    • Based off @ShinyDragonHunter's BetterMugshots branch.
    • To use, use these in src/data/trainers.h:
      • UsemugshotEnabled 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 rh-hideout#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 rh-hideout#4007
  • Added configs to enable metric system units by @pkmnsnfrn in rh-hideout#4183
    • Toggled by UNITS in include/config.h.
    • Cleanup by @pkmnsnfrn in rh-hideout#4193
  • Implemented custom GiveMon scripting command by @LOuroboros, with help from @ghoulslash and @mrgriffin in rh-hideout#3924
    • Based off @ghoulslash's 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 rh-hideout#4192
      • Gender
      • EVs
      • IVs
      • Moves
      • Shininess
      • Gigantamax Factor
      • Tera Type
  • Save-compatible SaveBlock3, with 1624 bytes by @mrgriffin in rh-hideout#4112
    • IMPORTANT: This is incompatible with the "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 rh-hideout#4216
    • Added options for TrainerMon:
      • By @mrgriffin in rh-hideout#3438
        • Dynamax Level (dynamaxLevel)
        • Gigantamax Factor (gigantamaxFactor)
      • By @Nopinou in rh-hideout#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 rh-hideout#4172
  • Added randompercentage and randomelement script commands by @mrgriffin in rh-hideout#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_ascendings by @mrgriffin in rh-hideout#3625
  • Comparison functions now follow -1, 1, 0 convention by @DizzyEggg in rh-hideout#3777
  • Centralized Trainer sprites by @fdeblasio in rh-hideout#3597
  • Standarized usage of array shuffling to use Shuffle function by @tertu-m in rh-hideout#3801
  • Turned nature names into compound strings by @Bassoonian in rh-hideout#3871
  • TrainerMoney struct is renamed to TrainerClass and now includes Trainer Class name by @fdeblasio in rh-hideout#3875
  • Improve error message with unsupported cpp by @DizzyEggg in rh-hideout#4272

Fixed

  • Fixed potential compiler errors by @DizzyEggg in rh-hideout#4252
  • Fixed ScriptGiveMonParameterized not recognizing the state of P_FLAG_FORCE_SHINY and P_FLAG_FORCE_NO_SHINY by @LOuroboros in rh-hideout#4256
  • Fixed a graphical issue when catching a form of a Pokémon for the first time by @AsparagusEduardo in rh-hideout#4279
  • Fixed ScriptGiveMonParameterized randomizing nature even when being set by @LOuroboros in rh-hideout#4271

✨ Feature Branches ✨

Incorporated @SBird1337's Dynamic Multichoices by @SBird1337 in rh-hideout#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.

Incorporated @ghoulslash's Saveblock Cleansing branch by @Bassoonian in rh-hideout#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 rh-hideout#4213
    • Renamed FREE_EXTRA_SEEN_FLAGS to FREE_EXTRA_SEEN_FLAGS_SAVEBLOCK1 by @AsparagusEduardo in rh-hideout#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 rh-hideout#3566
  • 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 rh-hideout#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 rh-hideout#4275
  • Upgraded "Poison Party" to "Inflict Status1" by @LOuroboros in rh-hideout#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 rh-hideout#3919
  • Reorganization and better naming by @LOuroboros in rh-hideout#3926
  • Removed duplicated "Give all TMs" option by @AsparagusEduardo in rh-hideout#4025

Fixed

  • Fixed sound effect clipping when giving an item via debug menu by using a shorter sound by @AsparagusEduardo in rh-hideout#4025

🐉 Pokémon 🐉

Added

  • Added Indigo Disk Pokémon data:
  • Added P_FOOTPRINTS config to disable Pokémon footprints, saving around 35KB of ROM space by @Bassoonian in rh-hideout#3902
  • Added missing P_UPDATED_EVS config that allows setting the EV yield changes across generations by @Bassoonian in rh-hideout#3993
  • Added missing P_UPDATED_EXP_YIELDS config that allows setting the Experience yield changes across generations by @Bassoonian in rh-hideout#3995
  • Added evolution methods that require custom trackers (MON_DATA_EVOLUTION_TRACKER) by @Bassoonian in rh-hideout#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 rh-hideout#4260
  • Added missing data for placeholder Pokémon by @AsparagusEduardo in rh-hideout#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 rh-hideout#4281
  • Moved shared Pokédex text descriptions to their own file by @AsparagusEduardo in rh-hideout#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 by @AlexOn1ine in rh-hideout#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 rh-hideout#4154
    • They're used to define a single type/egg group without needing to define it twice.
      -.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:
      -.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 rh-hideout#4230

⚔️ Battle General ⚔️

Added

  • Implemented optional Gen1 type immunity logic. by @GraionDilach in rh-hideout#3627

  • Added Calyrex's blue Dynamax aura by @AsparagusEduardo in rh-hideout#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 rh-hideout#4132
    • Further expanded by @ghoulslash in rh-hideout#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 rh-hideout#4237
  • AI score debug menu can now cycle through battlers by pressing L/R by @ghoulslash in rh-hideout#4134

Changed

  • Simplified Battle Partners code (eg. Steven) by @AlexOn1ine in rh-hideout#3592
    • Based off @ShinyDragonHunter's CustomMultiBattles branch.
    • Removed specialized code for Steven partner cases.
    • Partners are now stored in their own array.
    • Fixed infinite loop by @GraionDilach in rh-hideout#3808
  • B_VAR_TERRAIN_TIMERRenamed VAR_TERRAIN to B_VAR_TERRAIN and added a var-based field terrain timer by @LOuroboros in rh-hideout#4132

Fixed

  • Fixed AI calculations potentially stomping data when emiting data by @DizzyEggg in rh-hideout#3784
  • Fixed Battle AI debug screen showing shiny sprites by @fdeblasio in rh-hideout#3922
  • Fixed Gigantamax Factor not changing form by @AsparagusEduardo in rh-hideout#4108
  • Fixed Quick Draw having increased chances of activation in double battles by @ghoulslash in rh-hideout#4266

🤹 Moves 🤹

Added

Changed

  • Updated move data to Gen 9 with configs by @Bassoonian in rh-hideout#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 rh-hideout#3865
  • Renamed healBlockBanned flag to healingMove by @AsparagusEduardo in rh-hideout#3981
  • Removed some hardcoded move IDs
    • By @AsparagusEduardo in rh-hideout#3982
      • MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_FRUSTRATION, MOVE_AURA_WHEEL, MOVE_PRESENT, MOVE_BLIZZARD.
    • By @ZnogyroP in rh-hideout#4085
      • MOVE_SUCKER_PUNCH.
  • Removed now redundant EFFECT_HURRICANE in favor of EFFECT_THUNDER by @AsparagusEduardo in rh-hideout#3982
  • Renamed constants/z_move_effects.h to constants/battle_z_move_effects.h by @AsparagusEduardo in rh-hideout#3982
  • Updated Draco Meteor's animation to use @Skeli789's from CFRU, by @AlexOn1ine in rh-hideout#3989
  • Improved Double Shock's animation by @AlexOn1ine in rh-hideout#3989
  • Set EFFECT_PLACEHOLDER as the default move effect by @AsparagusEduardo in rh-hideout#4079
  • Renamed EFFECT_FAKE_OUT to EFFECT_FIRST_TURN_ONLY due to the flinch effect separation by @AlexOn1ine in rh-hideout#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 rh-hideout#4180

Fixed

  • Fixed GetBattleAnimMoveTargets function that caused multiple animation issues, such as Overheat's animation by @ghoulslash in rh-hideout#4139
  • Fixed hardcoded battle strings by @ZnogyroP in rh-hideout#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 rh-hideout#4151
  • Fixed Hard Press' base power by @LOuroboros in rh-hideout#4180
  • Fixed Teeter Dance not being copyable by Dancer in singles by @AlexOn1ine in rh-hideout#4129
    • Known issue: In doubles, it copies the move, but only confuses a single Pokémon.

🎭 Abilities 🎭

Added

Changed

  • Updated ability banlists to Indigo Disk data by @kittenchilly in rh-hideout#3609

Fixed

  • Fixed Tangling Hair preventing Rocky Helmet from triggering interaction by @AlexOn1ine, with help from @ZnogyroP in rh-hideout#4219

🧶 Items 🧶

Added

  • Added Meteorite item form change functionality for Deoxys by @kittenchilly in rh-hideout#3770
  • Added item price configs by @Bassoonian in rh-hideout#3834
    • I_PRICE and I_BERRY_PRICE.
    • Fixed missing data by @kittenchilly in rh-hideout#3836
  • Added Pokemon Box Link functionality by @kittenchilly in rh-hideout#3837
  • Added Indigo Disk item data by @kittenchilly in rh-hideout#3854
    • Metal Alloy
    • Stellar Tera Shard
  • Added Legends: Arceus item data by @Bassoonian in rh-hideout#3825
    • Jubilife Muffin - Local specialty (Full Heal)
    • Remedy - Medicine (Potion)
    • Fine Remedy - Medicine (Super Potion)
    • Super Remedy - Medicine (Hyper Potion)
    • Aux items
    • Choice Dumpling
    • Swap Snack
    • Twice Spiced Radish
    • Pokéshi Doll
  • Berry Expansion by @Bassoonian in rh-hideout#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
  • Added missing pre-Gen7 Power Item config (giving 4 EVs instead of 8) by @Bassoonian in rh-hideout#3961
  • Added LGPE+ Premier Ball Bonus config by @AsparagusEduardo in rh-hideout#4191
    • Originally based off pret's tutorial, 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 rh-hideout#3923
  • Unified item data
  • 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 rh-hideout#3942
      "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:
      "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 rh-hideout#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 Potions!").
    • Python migration script available in migration_scripts/item_ball_refactor.py by @pkmnsnfrn in rh-hideout#3997
    • Deprecated GetBerryCountString by @Bassoonian in rh-hideout#4012
    • Cleanup by
  • Combined CannotUseBagBattleItem and CannotUsePartyBattleItem into CannotUseItemsInBattle by @LOuroboros in rh-hideout#3524

Fixed

  • Fixed some ball multiplier data by @Bassoonian in rh-hideout#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 rh-hideout#4266

🤖 Battle AI 🤖

Added

  • Added AI_CalcMoveScore function to more easily control score increases by @AlexOn1ine in rh-hideout#3984
  • Added AI_FLAG_POWERFUL_STATUS AI flag, replacing AI_FLAG_SCREENER by @AlexOn1ine in rh-hideout#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

Fixed

  • Improved AI score changes handling by @AlexOn1ine in rh-hideout#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
  • Fixed AI not setting sets up double flags correctly by @DizzyEggg in rh-hideout#4228
  • Move most damage AI_BadMove checks to AI_CalcDamage by @AlexOn1ine in rh-hideout#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 rh-hideout#4240
  • Fixed AI considering Mold Breaker but not Turboblaze/Teravolt for flinch-related decisions by @AsparagusEduardo in rh-hideout#4244

🧹 Other Cleanup 🧹

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

🧪 Test Runner 🧪

Added

Changed

  • Updated tests to use Gen 9 mon for appropiate abilities by @AlexOn1ine in rh-hideout#3740
  • Tests no longer allow to use SEND_OUT if the chosen mon is fainted by @DizzyEggg in rh-hideout#3752

Fixed

  • Consistent BENCHMARK timing by @mrgriffin in rh-hideout#3866
  • Fixed Teatime test checking for Wonder Room instead of Magic Room by @AsparagusEduardo in rh-hideout#3950
  • Fixed test battle move category assumptions by @AsparagusEduardo in rh-hideout#4051
  • Fixed Tri Attack status ability immunity test by @AsparagusEduardo in rh-hideout#4229
  • Fixed Dauntless Shield test names by @AsparagusEduardo in rh-hideout#4229

📦 Pret merges 📦

New Contributors

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