## 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.9.0`.
📜 = Has a migration script.
- agbcc has been deprecated
- Added migration script README
- Removed Gen 9 settings for out-of-battle abilities
- 📜Customizable Frontier Pokémon sets
- Replaced VARARG_8 uses with recursive macros
- 📜Competitive-formatted parties
- Terastallization
- Combined weather set commands
- Full official GF names for species/items/moves/types
- Automatically display TM/HM icons based on their move
- Set
GiveBoxMonIntialMoveset_Fast
as default - Changed Battle Frontier validation to species flag
- Replaced HP checks with
IsBattlerAlive
- Removed redundant
MOVE_EFFECT_SP_ATK_TWO_DOWN
- 📜Removed
gItemIconTable
- 📜Egg Move Refactor
- Adjusted Ate-Ability code a bit to make it more readable
- Type Info refactors
- merrp/aarant's Followers
- Refactored residual damage to be more readable and less prone to bugs
-
Added migration script README by @Bassoonian in rh-hideout#4719
-
Customizable Frontier Pokémon sets by @ghoulslash in rh-hideout#4313
FacilityMon
has been removed in favor of using regularTrainerMon
.- Removed
BATTLE_FRONTIER_ITEM_x
item constants in favor of using regularITEM_x
constants. - New
CreateFacilityMon
to handle duplicated code.- Added
FLAG_FRONTIER_MON_FACTORY
that replaces Return for Frustration and sets frienship to 0. Used in the Battle Factory.
- Added
- Converted data in
src/data/battle_frontier/battle_frontier_mons.h
andsrc/data/battle_frontier/battle_tent.h
, for example:.itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND,
->.heldItem = ITEM_CHOICE_BAND,
.evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
->.ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0),
- Migration script available in
migration_scripts/egg_move_refactor.py
by @AlexOn1ine in rh-hideout#5040
- Added documentation to
STATIC_ASSERTS
used by theBoxPokemon
after 1.8.0 by @pkmnsnfrn in rh-hideout#4294 -
Competitive-formatted parties by @mrgriffin in rh-hideout#3545
- Can be disabled by setting
COMPETITIVE_PARTY_SYNTAX
toFALSE
ininclude/config/general.h
. If migrating from 1.8, remove the first and last lines fromsrc/data/trainers.h
(const struct Trainer gTrainers[] = {
and};
respectively). - Introduces
trainerproc
, a tool which converts Competitive-formatted parties into Trainer Control-formatted parties. - If you made custom changes to the following files and want to use this new format, Do not accept the incoming changes for them. Instead, use the migration script present in
migration_scripts/convert_parties.py
:src/data/trainers.h
src/data/trainer_parties.h
src/data/battle_partners.h
src/data/partner_parties.h
- Before:
After:
static const struct TrainerMon sTestParty1[] = { { .species = SPECIES_WOBBUFFET, .ball = ITEM_MASTER_BALL, .ability = ABILITY_TELEPATHY, .friendship = 42, .gender = TRAINER_MON_FEMALE, .heldItem = ITEM_ASSAULT_VEST, .isShiny = TRUE, .iv = TRAINER_PARTY_IVS(25,26,27,28,29,30), .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 4, 0), .lvl = 67, .moves = {MOVE_AIR_SLASH, MOVE_BARRIER, MOVE_SOLAR_BEAM, MOVE_EXPLOSION}, .nature = NATURE_HASTY, .nickname = COMPOUND_STRING("Bubbles") }, { .species = SPECIES_WOBBUFFET, .ability = ABILITY_SHADOW_TAG, .lvl = 5, }, }; static const struct Trainer sTestTrainer1 = { .trainerName = _("Test1"), .party = TRAINER_PARTY(sTestParty1), };
=== 0 === Name: Test1 Bubbles (Wobbuffet) (F) @ Assault Vest Hasty Nature Level: 67 Ability: Telepathy IVs: 25 HP / 26 Atk / 27 Def / 29 SpA / 30 SpD / 28 Spe EVs: 252 HP / 4 SpA / 252 Spe Happiness: 42 Shiny: Yes Ball: Master Ball - Air Slash - Barrier - Solar Beam - Explosion Wobbuffet Level: 5 Ability: Shadow Tag
- You can add comments by using
//
or/* ... */
, like in C. - You're allowed to write
SPECIES_PIKACHU
instead ofPikachu
(etc etc) if you want. - In addition to the migration script described above, you can add the following to at the top of the
src/data/trainers.party
file to change how the tool interprets the file:#pragma trainerproc ivs explicit
— requires anIVs:
line for every Pokémon instead of defaulting to 31s.#pragma trainerproc ivs <IVs>
— changes the default IVs.#pragma trainerproc level explicit
— requires aLevel:
line for every Pokémon instead of defaulting to 100.#pragma trainerproc level <level>
— changes the default level.- During the merge you could choose to keep your original
src/data/trainers.h
andsrc/data/trainer_parties.h
and then run the conversion script to update thesrc/data/trainers.party
,make
, then check in all three files. Alternatively don't run the conversion script and turn offCOMPETITIVE_PARTY_SYNTAX
ininclude/config.h
.
- Added synonyms for competitive/CFRU species defines, eg:
SPECIES_PONYTA_GALAR
forSPECIES_PONYTA_GALARIAN
SPECIES_MAUSHOLD_FOUR
forSPECIES_MAUSHOLD_FAMILY_OF_FOUR
SPECIES_CHARIZARD_GMAX
forSPECIES_CHARIZARD_GIGANTAMAX
- And so.
- TODO:
- Support
Hidden Power:
to set IVs appropriate for a particular Hidden Power type. - Consider case-insensitivity in the parser.
- Support
- Cleanup and bugfixes:
- By @mrgriffin in rh-hideout#4362
- By @AsparagusEduardo in rh-hideout#4366
- By @Bassoonian in rh-hideout#4374
- By @LOuroboros in rh-hideout#4397
- By @Bassoonian in rh-hideout#4421
- By @AlexOn1ine in rh-hideout#4431
- By @mrgriffin in rh-hideout#4442
- By @fdeblasio in rh-hideout#4830
- By @mrgriffin in rh-hideout#4969
- By @hedara90 in rh-hideout#4734
- By @innocenthedgehog in rh-hideout#4988
- By @mrgriffin in rh-hideout#4990
- By @mrgriffin in rh-hideout#5035
- Can be disabled by setting
- Added
OW_PC_MOVE_ORDER
config to use future generation's menu order for the Pokémon Storage System by @pkmnsnfrn and @AsparagusEduardo in rh-hideout#4348GEN_1/2/3
: Widthraw -> Deposit -> Move.GEN_4/5/6_XY
: Deposit -> Widthraw -> Move.GEN_6_ORAS/7/8/9
: Move -> Deposit -> Widthraw.
- Added
OW_HIDE_REPEAT_MAP_POPUP
config that doesn't show the Map Popup when transitioning bewteen maps within the same Map Section by Anon822 from Pokécommunity and @pkmnsnfrn in rh-hideout#4370 - Multiple Fishing Enhancements by @ghoulslash and @pkmnsnfrn in rh-hideout#4343
- Added
I_FISHING_CHAIN
config to enable XY's chain fishing. - Added
I_FISHING_PROXIMITY
config to enable XY's proximity mechanic, where fishing away from NPCs increases the chance of a Pokémon being hooked. - Added
I_FISHING_MINIGAME
config to change between minigame versions.GEN_1/2
will not require a minigame, and instead automatically hook the Pokémon.- All other settings use RSE's minigame. FRLG/Gen4+'s minigame will be implemented in the future.
- Cleanup and bugfixes:
- By @AsparagusEduardo in rh-hideout#4412
- By @cawtds in rh-hideout#4906
- By @AlexOn1ine in rh-hideout#4718
- By @cawtds and @pkmnsnfrn in rh-hideout#5031
- Added
-
Full official GF names for species/items/moves/types by @mrgriffin, @ZnogyroP and @cfmnephrite in rh-hideout#4241
- 8-character type names.
- 12-character Pokémon names (and nicknames)
- 16-character Move names.
- 20-character item names.
- This is done by introducing 3 new fonts that automatically change the size of the name in vanilla interfaces:
FONT_NARROWER
,FONT_SMALL_NARROWER
andFONT_SHORT_NARROW
.
- If the hack has changed fonts—e.g. to the FrLg ones—then they probably want to create their own versions of the new fonts.
- If the hack has introduced more UIs that render names they probably want to use
GetFontIdToFit
—see this PR's changes for examples of that. - If the hack has introduced names in list menus they can use
.fontIdMayNarrow = TRUE
on the list template. - Types, species, moves, and items all have individual commits which enable support in the UI and turn on longer names by default. These can be reverted by downstream projects if they really want to.
- Cleanup
- By @Nopinou in rh-hideout#4473
- By @kittenchilly in rh-hideout#4588
- By @iriv24 in rh-hideout#4979
- Added
OW_PC_RELEASE_ITEM
config that gives back items from released Pokémon by @Bassoonian in rh-hideout#4577- If the bag is full, the item is lost, however.
- Cleanup by @Bassoonian in rh-hideout#4844
- Added
P_EGG_CYCLE_LENGTH
config that updates the amount of steps required to complete an egg cycle by @Bassoonian in rh-hideout#4596 - Added
trainerbattle_two_trainers
macro to trigger a 1 player vs 2 NPC battle by @aarant and @AlexOn1ine in rh-hideout#4741 - Added
createmon
Script Command and macro by @ghoulslash in rh-hideout#4688- This allows to set up wild enemy parties with the same versatility as
givemon
(IVs, EVs, abilities, moves, etc).
- This allows to set up wild enemy parties with the same versatility as
- Added
setwilddoubleflag
macro to setsIsScriptedWildDouble
and allow 2 player vs 1 enemy wild battles by @ghoulslash in rh-hideout#4688 - Added support for multiple Roaming Pokémon at once by @Bassoonian in rh-hideout#4762
- By default,
ROAMER_COUNT
is set to 1 to keep save compatibility. Increase it to add more roamers (though this breaks saves).
- By default,
- Added
OW_IGNORE_EGGS_ON_HEAL
, which makes it such that eggs are not counted in the Pokémon Center's heal animation by @ghoulslash @pkmnsnfrn in rh-hideout#4888 - Added support for fake RTC by Anon822 from PokéCommunity and @pkmnsnfrn in rh-hideout#4910
- When
OW_USE_FAKE_RTC
isTRUE
, time runs at a different rate from real time, like in Legends: Arceus or Scarlet and Violet. - Use
OW_ALTERED_TIME_RATIO
to set the amount of "time" passing every 60 frames (1 real time second):GEN_8_PLA
: 1 minute.GEN_9
: 20 seconds.- All other settings make the game synced with real life.
- You may also set a flag to pause the RTC (
OW_FLAG_PAUSE_TIME
), and the script commandspausefakertc
,resumefakertc
andtogglefakertc
by @pkmnsnfrn in rh-hideout#4954 - Cleanup by @Bassoonian in rh-hideout#4965
- When
- Added B2W2-style map pop-Ups by @ravepossum, @nielsmittertreiner and @pkmnsnfrn in rh-hideout#4396
- Change
OW_POPUP_GENERATION
toGEN_5
to switch existing map popups. - You may choose between Black or White themes via
OW_POPUP_BW_COLOR
(OW_POPUP_BW_COLOR_BLACK
orOW_POPUP_BW_COLOR_WHITE
). - You may choose to display the current time in the pop-up using
OW_POPUP_BW_TIME_MODE
.OW_POPUP_BW_TIME_NONE
: Disables time in pop-up.OW_POPUP_BW_TIME_12_HR
: Shows 12-hour time in pop-upOW_POPUP_BW_TIME_24_HR
: Shows 24-hour time in pop-up
- You may enable alpha blending via
OW_POPUP_BW_ALPHA_BLEND
(mainly designed around the Black theme). - Cleanup by @AsparagusEduardo in rh-hideout#4752
- Change
- Allowed flags to be used in trigger scripts instead of vars by @DizzyEggg in rh-hideout#4900
-
agbcc has been deprecated by @mrgriffin in rh-hideout#4989
- You technically still use
make agbcc
by disabling the error thrown when using it, but it will be removed completely for version 1.10.
- You technically still use
-
Moved general config file to the config folder by @AsparagusEduardo in rh-hideout#4805
config.h
->config/general.h
- Cleanup by @hedara90 in rh-hideout#5026
-
Set
GiveBoxMonIntialMoveset_Fast
as default by @AlexOn1ine in rh-hideout#4470 -
Changed Battle Frontier validation to species flag by @kittenchilly in rh-hideout#4341
- Added
isFrontierBanned
flag and removedgFrontierBannedSpecies
. - Renamed
isParadoxForm
->isParadox
.
- Added
-
Unified Nature info by @fdeblasio in rh-hideout#4562
- All data is now found on
gNaturesInfo
insrc/pokemon.c
- Names, Stat Up/Down, Back Sprite animation, Pokéblock animation, Nature Girl message and Battle Palace data.
- Cleanup by @Sneed69 in rh-hideout#4598
- All data is now found on
-
Type Info refactors by @AsparagusEduardo in rh-hideout#4462
- Added
src/data/types_info.h
file forgTypesInfo
instead ofsrc/battle_main.c
.- Moved
sTypeEffectivenessTable
here file as well (and renamed it togTypeEffectivenessTable
)
- Moved
TYPE_NONE
duplicates graphics fromTYPE_MYSTERY
due to limitations withgraphics_file_rules.mk
.- Damage Categories for
B_PHYSICAL_SPECIAL_SPLIT
's pre-Gen4 setting can now be specified in thisgTypesInfo
'sdamageCategory
field instead of depending on the type's order.
- Added
- Consolidated Lilycove Contest Lady's values into one struct (
sContestLadyValues
) by @fdeblasio in rh-hideout#4951 - Applied the Pokémon Sprite Visualizer name officially by @Bassoonian in rh-hideout#4745
- Don't specify
sDexSearchTypeOptions
array size by @Sneed69 in rh-hideout#4820- Prevents Type search in the dex from breaking when non-conventional types are added.
- Only call RNG once when generating IVs in some cases by @tertu-m in rh-hideout#4876
- Fixed potential Wireless Adapter desynchronization by @AtariDreams in rh-hideout#3730
- Fixed
ListItemTemplate
UB in the Pokémon Center by @Bassoonian in rh-hideout#4725 - Fixed
src/data/map_group_count.h
not being ignored in.gitignore
properly by @rayrobdod in rh-hideout#4727 - Fixed double battles not occuring with only one Pokemon by talking to the trainers despite
OW_DOUBLE_APPROACH_WITH_ONE_MON
being setTRUE
by @fdeblasio in rh-hideout#4848 - Fixed unused
B_TRANSITION_SHRED_SPLIT
from softlocking the game by @Lunos, @griffinr and @pkmnsnfrn in rh-hideout#4919
- Integrated @aarant's followers branch by @AsparagusEduardo in rh-hideout#4022
- This includes Dynamic Overworld Palettes and Expanded Overworld IDs.
- This does not include the
lighting
branch yet, but will be included in a future version. - Updated up to the latest version of the branch (11th of July) by @Bassoonian in rh-hideout#4944
- Cleanup
- By @Bassoonian in rh-hideout#4782
- By @AsparagusEduardo in rh-hideout#4937
- Follower Pokémon can be enabled using the
OW_FOLLOWERS_ENABLED
config. - Pokémon NPCs can be added to a map independently from the Followers config. Keep in mind, this requires
OW_POKEMON_OBJECT_EVENTS
to be enabled in order to add the graphics to the ROM.- Eg: use
OBJ_EVENT_GFX_SPECIES(CHARIZARD)
where the graphic ID would go (OBJ_EVENT_GFX_SPECIES_SHINY()
for shiny version). - May also use
OBJ_EVENT_GFX_SPECIES_SHINY(CHARIZARD)
to make them shiny by @AsparagusEduardo in rh-hideout#5049
- Eg: use
- Moved original configs from
include/constants/event_objects.h
toinclude/config/overworld.h
and renamed them:OW_MON_BOBBING
->OW_FOLLOWERS_BOBBING
LARGE_OW_SUPPORT
->OW_LARGE_OW_SUPPORT
OW_MON_POKEBALLS
->OW_FOLLOWERS_POKEBALLS
- Added follower Pokémon sprites from Gen 4-8
- Credits to @Eemeliri and Gerben BSc
- Moved
OW_GFX_COMPRESS
frominclude/global.h
toinclude/config/overworld.h
. - Added
OW_SUBSTITUTE_PLACEHOLDER
config to hide followers if they don't have a follower sprite instead of using a placeholder Substitute sprite by @Bassoonian in rh-hideout#4765 - Follower graphics are shown in the Pokémon Sprite Visualizer.
- Follower graphics have been moved to the respective species graphics folder instead of all being grouped in
graphics/object_events/pics/pokemon
.- Eg:
graphics/object_events/pics/pokemon/abomasnow.png
was moved tographics/pokemon/abomasnow/follower.png
.
- Eg:
- Follower data has been moved to
gSpeciesInfo
- Their palettes are separate from the battle sprite palettes
- Can be enabled using
OW_FOLLOWERS_SHARE_PALETTE
, but requires manual sprite adjustements. For now, it's recommended to keep thisFALSE
. (They don't use much space anyway)
- Can be enabled using
- Their palettes are separate from the battle sprite palettes
- Updated
GetTypeEffectiveness
used by follower messages to account for new abilities with type immunities. - Cleaned up code style to match pret/expansion's.
- Reverted Regi's sprite to vanilla's.
- Follower PicTables use
overworld_ascending_frames
macro. - Removed unneeded calls to
bufferspeciesname
. - Removed
MON_DATA_NATURE
. - Removed debug functions like
IsAccurateGBA
. - Removed
ScrCmd_callfunc
to usecallnative
s instead
- Added
EVO_ITEM_COUNT_999
evolution method (used by Gimmighoul) by @kittenchilly in rh-hideout#4261- Requires level up while carrying 999 of the specified item in the bag, which will be consumed.
- Uses new
EVO_MODE_CANT_STOP
mode, which is a clone ofEVO_MODE_NORMAL
but prevents evolution from being canceled.
- Added
EVO_DEFEAT_THREE_WITH_ITEM
evolution method (used by Bisharp) by @Bassoonian in rh-hideout#4768- Requires level up after defeating 3 Pokémon of the same species holding the specified item.
- Eg: Bisharp defeating 3 other Bisharp holding Leader Crests.
- Cleanup by @AsparagusEduardo in rh-hideout#5046
- Requires level up after defeating 3 Pokémon of the same species holding the specified item.
- Added
EVO_OVERWORLD_STEPS
evolution method (used by Pawmo, Bramblin and Rellor) by @Bassoonian in rh-hideout#4758- Requires level up after walking the specified amount of steps with that Pokémon as the first member in the party without switching.
- Switching the party leader resets the steps.
- Cleanup by @AsparagusEduardo in rh-hideout#5047
- Added
FORM_CHANGE_DAYS_PASSED
form change (used by Furfrou and Hoopa) by @Bassoonian in rh-hideout#4778- Adds
MON_DATA_DAYS_SINCE_FORM_CHANGE
, which is a timer to automatically changes forms at midnight once it runs out. It is set after a different form change has been made (currently only added to Form Change items, including Prison Bottle)
- Adds
- Added unique icons for all of Arceus's forms via config (
P_ARCEUS_UNIQUE_FORM_ICONS
) by @kittenchilly in rh-hideout#4329 - Added
P_TWO_FRAME_FRONT_SPRITES
config to allow disabling 2-frame front animations by @Bassoonian in rh-hideout#4750 - Added
P_CRIES_ENABLED
config to disable species cries and stop them from being included in the ROM by @AsparagusEduardo in rh-hideout#4791 - Added configs to prevent unobtainable Pokemon from being shiny by @fdeblasio in rh-hideout#4735
P_ONLY_OBTAINABLE_SHINIES
: Prevents shinies from generating in the Battle Pyramid.P_NO_SHINIES_WITHOUT_POKEBALLS
: Prevents shinies from generating if the player has no Poké Balls.
- Added
P_CAN_FORGET_HIDDEN_MOVE
config allow Pokémon to forget HM moves by @pkmnsnfrn and @Lunos in rh-hideout#4968
- Renamed evolution methods the were labeled as evo level by @AlexOn1ine in rh-hideout#4607
EVO_LEVEL_MOVE_TWENTY_TIMES
->EVO_MOVE_TWENTY_TIMES
EVO_LEVEL_RECOIL_DAMAGE_MALE
->EVO_RECOIL_DAMAGE_MALE
EVO_LEVEL_RECOIL_DAMAGE_FEMALE
->EVO_RECOIL_DAMAGE_FEMALE
- Cleanup by @AsparagusEduardo in rh-hideout#4644
- Evolution tracker is now by @Bassoonian in rh-hideout#4758
-
Replaced VARARG_8 uses with recursive macros by @cfmnephrite in rh-hideout#4232
-
Egg Move Refactor by @Bassoonian in rh-hideout#4534
- Egg Moves are now formatted like Teachable learnsets and their pointers are stored in
gSpeciesInfo
, as opposed to having one big array.- Only offspring require these tables.
- Migration script available in
migration_scripts/egg_move_refactor.py
.
- Egg Moves are now formatted like Teachable learnsets and their pointers are stored in
- Added option to increase Experience bar speed via
B_FAST_EXP_GROW
by @SonikkuA-DatH and @pkmnsnfrn in rh-hideout#4335 - Added Gen 4's Fog battle weather by @kittenchilly in rh-hideout#4359
- Uses Haze's animation.
- Changes
B_FOG_TERRAIN
(TRUE/FALSE config) intoB_OVERWORLD_FOG
(Generational config).GEN_4
: Uses this battle weather in maps withWEATHER_FOG_DIAGONAL
andWEATHER_FOG_HORIZONTAL
.GEN_8
onwards: Sets permanent Misty Terrain.- All others disable them.
-
Terastallization by @AgustinGDLV in rh-hideout#4110
- Tera Type automatically assigned to existing Pokémon based on their personality value.
- Can get and set Tera Types in scripts for party members using
checkteratype
andsetteratype
by @Bassoonian in rh-hideout#4460
- Can get and set Tera Types in scripts for party members using
- To activate, it requires:
ITEM_TERA_ORB
to be in the player's bag.B_FLAG_TERA_ORB_CHARGED
to be set up to an unused flag. It¿s automatically set whenHealPlayerParty
is called.
- Added
ignoreTera
argument added toGetBattlerType
- Added Tera Blast's effect.
- Changes type shown in battle screen if the mon is Terastalized or about to by @kittenchilly in rh-hideout#4447
- Added Stellar Type.
- Added
teraType
option for Trainers (also supported by Competitive Format Parties) - Added Tera Starstorm's effect by @kittenchilly in rh-hideout#4447
- Terastallization animation by @Pokabbie in rh-hideout#4507
- Added
forceTeraType
field forgSpeciesInfo
, which forces the Pokémon to have a specific Tera Type (used by Terapagos and Ogerpon) by @kittenchilly in rh-hideout#4438 - Added
FORM_CHANGE_BATTLE_TERASTALLIZATION
by @kittenchilly in rh-hideout#4438- It uses a Pokémon's Tera Type to choose which form to switch to upon Terastallizing.
- Bugfixes:
- By @AgustinGDLV in rh-hideout#4435
- By @AgustinGDLV in rh-hideout#4440
- By @Sneed69 in rh-hideout#4513
- By @Sneed69 in rh-hideout#4515
- By @WillKolada in rh-hideout#4529
- By @iriv24 in rh-hideout#4975
- Tera Type automatically assigned to existing Pokémon based on their personality value.
- Added Gen 1 type matchups by @AsparagusEduardo in rh-hideout#4508
- Renamed
B_STEEL_RESISTANCES
->B_UPDATED_TYPE_MATCHUPS
to reflect this change. - Added defines to cleanup
sTypeEffectivenessTable
.
- Renamed
- Added Move Descriptions in battle by @Bassoonian, @TheXaman, @Pawkkie and @ravepossum in rh-hideout#4152
- Press L before selecting a move to see their category, power, accuracy and description.
- This can be changed to R by using the
B_MOVE_DESCRIPTION_BUTTON
config by @fakuzatsu in rh-hideout#4860
- This can be changed to R by using the
- Cleanup
- By @AGSMGMaster64 and @Sneed69 in rh-hideout#4678
- Press L before selecting a move to see their category, power, accuracy and description.
- Added ball throwing configs by セケツ from PokéCommunity and @pkmnsnfrn in rh-hideout#4953
B_ENEMY_THROW_BALLS
: When set toGEN_6
or higher, it changes the opposing trainer's ball animation so they throw their Pokéballs instead of already starting on the floor.B_PLAYER_THROW_BALLS_SOUND
: When set toGEN_5
or higher, it playsSE_BALL_THROW
as part of the player's ball throw animation.B_ENEMY_THROW_BALLS_SOUND
: When set toGEN_5
or higher, it playsSE_BALL_THROW
as part of the enemy's ball throw animation.
- Added
RandomChance
macro for battle/test randomization by @Sneed69 in rh-hideout#4829 -
Gimmick Refactor by @AgustinGDLV in rh-hideout#4449
- Unifies generational mechanics into
gGimmicksInfo
struct (Mega, Z-Moves, Ultra Burst, Dynamax, Terastallization).- Contains triggers, indicator, condition and function to execute when triggered.
- Around ~500-1000 lines of redundant / duplicate code removed!
- Cleanup
- By @Bassoonian in rh-hideout#4927
- By @AlexOn1ine in rh-hideout#4962
- By @AlexOn1ine in rh-hideout#4863
- By @Bassoonian in rh-hideout#4960
- Unifies generational mechanics into
- Allow users to increase
MAX_MONEY
dynamically by @DizzyEggg and @pkmnsnfrn in rh-hideout#4943 - Added
AUTO_LOWERCASE_KEYBOARD
by @Jaizu and @pkmnsnfrn in rh-hideout#4976- Automatically changes to to lowercase if the first character inputted is uppercase.
- Improved HP drain when enabling
B_FAST_HP_DRAIN
by @pkmnsnfrn and @SonikkuA-DatH in rh-hideout#4335 -
Combined weather set commands by @AlexOn1ine in rh-hideout#4434
setrain
->setfieldweather ENUM_WEATHER_RAIN
.setsandstorm
->setfieldweather ENUM_WEATHER_SANDSTORM
.setsunny
->setfieldweather ENUM_WEATHER_SUN
.sethail
->setfieldweather ENUM_WEATHER_HAIL
.setsnow
->setfieldweather ENUM_WEATHER_SNOW
.
-
Replaced HP checks with
IsBattlerAlive
by @ghoulslash in rh-hideout#4429 -
Removed redundant
MOVE_EFFECT_SP_ATK_TWO_DOWN
by @Sneed69 in rh-hideout#4557 - Added stack for saved targets and attackers by @ghoulslash in rh-hideout#4061
- This avoids the need to overwriting battler IDs during scripts and cause potential issues.
- Several scripts have been updated to use these.
- Cleanup and fixes
- By @AlexOn1ine in rh-hideout#4653
- By @AlexOn1ine in rh-hideout#4668
-
Adjusted Ate-Ability code a bit to make it more readable by @AlexOn1ine in rh-hideout#4640
- Added global constants for damage rolls by @Sneed69 in rh-hideout#4663
// Lowest and highest percentages used for damage roll calculations #define DMG_ROLL_PERCENT_LO 85 #define DMG_ROLL_PERCENT_HI 100
-
Refactored residual damage to be more readable and less prone to bugs by @AlexOn1ine in rh-hideout#4945
- Cleanup by @AlexOn1ine in rh-hideout#4993
- Clarified some cases of
ChangeStatBuffs
usage by @Sneed69 in rh-hideout#4826 - Moved EWRAM variables from battle controller player file to gBattleStruct by @DizzyEggg in rh-hideout#4840
sDescriptionSubmenu
,sAckBallUseBtn
andsBallSwapped
.
- Fixed Dynamax data not clearing when a battler faints by @WillKolada in rh-hideout#4672
- Multiple Z-Move fixes by @AgustinGDLV in rh-hideout#4449
- Fixed Z-Moves not working in Link Battles, recorded battles and tests.
- Fixed
Z_EFFECT_ALL_STATS_UP
functionality. - Fixed Z-Nature Power, Z-Copycat, Z-Me First, and Z-Sleep Talk incorrectly using a normal move and not a Z-Move,
which had not been raised as an issue yet.(some of these were caught recently!) - Fixed Breakneck Blitz incorrectly being affected by -ate abilities, which had not been raised as an issue yet.
- Fixed Instruct incorrectly not failing if the target last used a Z-Move, which had not been raised as an issue yet.
- Fixed Guardian of Alola incorrectly doing 50% of the target's HP instead of 75%.
- Fixed Enemy Data not clearing at the end of battles by @ghoulslash in rh-hideout#4867
- Expanded Freeze Dry's effect to use
argument
field and allow custom moves to use the effect to be super effective to any specific type by @AlexOn1ine in rh-hideout#4312- Renamed
EFFECT_FREEZE_DRY
toEFFECT_SUPER_EFFECTIVE_ON_ARG
.
- Renamed
- Expanded
EFFECT_BODY_PRESS
to use category of defense stats for calculation based on the move's own damage category by @AlexOn1ine in rh-hideout#4312- Eg: In vanilla, Body Press uses the user's Defense and its stat changes instead of Attack. Now, if we were to change its
category
ingMovesInfo
, it'll use Sp. Defense and its stat changes instead of Sp. Attack.
- Eg: In vanilla, Body Press uses the user's Defense and its stat changes instead of Attack. Now, if we were to change its
- Expanded Photon Geyser and Shell Side Arm (restored) effects so that they also work for physical moves by @Sneed69 in rh-hideout#4923
- Added Knock Off's Gen 5+ effect with config (
B_KNOCK_OFF_REMOVAL
) by @AgustinGDLV in rh-hideout#4333- Items are removed outright instead of making them unusable.
- Added Heal Bell/Soundproof Gen 5-8+ interactions with
B_HEAL_BELL_SOUNDPROOF
config by @Sneed69 in rh-hideout#4732- Cleanup by @AsparagusEduardo in rh-hideout#5060
- Added Spicy Extract's effect by @AlexOn1ine, @Skeli789, @kittenchilly and @ZnogyroP in rh-hideout#4211
- Added
B_RETURN_STOLEN_NPC_ITEMS
config for Covet/Thief not being able to steal from NPCs by @moostoet and @Sneed69 in rh-hideout#4605 - Added Dragon Darts effect (CFRU port) by @AlexOn1ine, @Skeli789 and @BuffelSaft in rh-hideout#4612
- Animation by @hedara90 in rh-hideout#4620
EFFECT_TRIPLE_KICK
's base power uses the move'sstrikeCount
instead of a constant by @Sneed69 in rh-hideout#4608- This allows users to create "Quadruple Kick" and similar moves.
- Migrated move animation pointers to
gMovesInfo
by @cawtds in rh-hideout#4683- This removes the need for
gBattleAnims_Moves
which had potential ordering issues if not kept in line with move IDs.- If
battleAnimScript
is not defined for a move, it defaults to Tackle's animation.
- If
- Migration script available in
migration_scripts/battle_anim_moves_refactor.py
- This removes the need for
- Multiple Ally Switch fixes by @ghoulslash in rh-hideout#4451
- Shadows no longer disappear + safety checks.
- Corrected animation for opponents.
- Fixed Avalanche's target by @TheLastMudkip in rh-hideout#4581
- Fixed Feint and Feint Attack's descriptions by @lhearachel in rh-hideout#4617
- Fixed Mud Sport/Water Sport reducing damage by 77% instead of 67% in Gen5+ by @fdeblasio in rh-hideout#4874
- Added Poison Puppeteer's effect by @AlexOn1ine in rh-hideout#4416
- Added Tera Shift, Tera Shell, and Teraform Zero by @kittenchilly in rh-hideout#4418
FORM_CHANGE_BATTLE_SWITCH
now has ability as optional parameter.- Cleanup by @AlexOn1ine in rh-hideout#4742
- Added Toxic Chain's effect by @PhallenTree in rh-hideout#4823
- Cleanup by @AlexOn1ine in rh-hideout#4843
- Added
B_ABILITY_TRIGGER_CHANCE
config to update trigger chances of abilities to Gen4+ by @Sneed69 in rh-hideout#4829- Shed Skin, Cute Charm, Flame Body, Static and Poison Point have a 30% chance to trigger in Gen4+ instead of 1/3 in Gen3.
- Effect Spore has an 11%, 10% and 9% chance of triggering Sleep, Paralysis and Poison in Gen4+ instead of equal 10% each in Gen3.
-
Removed Gen 9 settings for out-of-battle abilities by @AsparagusEduardo in rh-hideout#4282
- These configs no longer disable out-of-battle ability effects when set to
GEN_9
.OW_SUPER_LUCK
.OW_INFILTRATOR
.OW_HARVEST
.OW_LIGHTNING_ROD
.OW_STORM_DRAIN
.OW_FLASH_FIRE
.
- These configs have been removed
OW_COMPOUND_EYES
.OW_CUTE_CHARM
.OW_ILLUMINATE
.OW_MAGNET_PULL
.OW_STATIC
.
- These configs no longer disable out-of-battle ability effects when set to
- Fixed Mirror Armor bouncing Sticky Web's stat reduction to the opponent by @Sneed69 in rh-hideout#4713
- Effect Spore now uses
B_POWDER_GRASS
to toggle Grass-type Pokémon immunity to it by @Sneed69 in rh-hideout#4829
- Added Booster Energy's effect by @AlexOn1ine in rh-hideout#4337
- Cleanup
- By @PCG06 in rh-hideout#4354
- By @kittenchilly in rh-hideout#4804
- Cleanup
-
Removed
gItemIconTable
by @kittenchilly in rh-hideout#4579- Sprite and palette pointers have been moved to
gItemsInfo
asiconPic
andiconPalette
respectively. - Migration script available in
migration_scripts/convert_item_icons.py
- Cleanup
- By @AlexOn1ine in rh-hideout#4591
- By @AlexOn1ine in rh-hideout#4658
- Sprite and palette pointers have been moved to
-
Automatically display TM/HM icons based on their move by @Sneed69 in rh-hideout#4452
- TM palettes are now stored in
gTypesInfo
in thepaletteTMHM
field. - Cleanup by @Sneed69 in rh-hideout#4487
- TM palettes are now stored in
- Added
AI_GetBattlerAbility
by @AlexOn1ine in rh-hideout#4555 - Added
AI_FLAG_CONSERVATIVE
flag by @Pawkkie and @iriv24 in rh-hideout#4615- AI will assume low damage rolls for its
calculationsDamage
roll selection inAI_CalcDamage
- Cleanup
- By @Sneed69 in rh-hideout#4663
- AI will assume low damage rolls for its
- Added
AI_FLAG_SEQUENCE_SWITCHING
flag by @Pawkkie, Kasen, @pkmnsnfrn and @DizzyEggg in rh-hideout#4878- AI will keep their party order consistently with switches.
- Added
setdynamicaifunc
, which allows to setup custom AI functions before a battle besides the predetermined ones used by AI Flags @ghoulslash in rh-hideout#4908- Eg:
Where
setdynamicaifunc AI_TagBattlePreferFoe multi_2_vs_2 TRAINER_MAXIE_MOSSDEEP, MossdeepCity_SpaceCenter_2F_Text_JustWantToExpandLand, TRAINER_TABITHA_MOSSDEEP, MossdeepCity_SpaceCenter_Text_TabithaDefeat, PARTNER_STEVEN
AI_TagBattlePreferFoe
prioritizes attacking the opposite battler index.
- Eg:
- AI now calculates and stores minimum possible move damage and uses it with
AI_FLAG_TRY_TO_FAINT
by @Sneed69 in rh-hideout#4760- This allows AI to prefer guaranteed KO moves over highest expected damage move.
- Cleanup by @Sneed69 in rh-hideout#4808
- AI Revenge Killer switching factors in Trick Room by @Shadowzlmao and @Pawkkie in rh-hideout#4794
- AI Smarter Choice AI for Status Moves by @Pawkkie in rh-hideout#4872
- Better behavior for AI under Choice Item effects.
- Cleanup by @Pawkkie in rh-hideout#4911
- AI Smarter Focus Punch and Substitute handling by @Pawkkie, @Kasenn and @AlexOn1ine in rh-hideout#4952
- Moved
RestoreBattlerData
out ofAi_CalcDmg
and addedSaveBattlerData
Protections by @ghoulslash in rh-hideout#4156- Cleanup
- By @ghoulslash in rh-hideout#4586
- Cleanup
- Made AI see Loaded Dice hold effect for multi hit moves that strike 5 times by @AlexOn1ine in rh-hideout#4622
AI_FLAG_RISKY
Improvements by @Pawkkie, @AlexOn1ine and @iriv24 in rh-hideout#4648- Check the PR for in depth details.
- Cleanup
- By @AsparagusEduardo in rh-hideout#4790
- By @Pawkkie in rh-hideout#5032
- Removed temporary scores in
AI_CalcMoveEffectScores
by @AlexOn1ine in rh-hideout#4655 - Changed
AI_IS_SLOWER
andAI_IS_FASTER
comparisons intoAI_IsFaster
andAI_IsSlower
functions by @AlexOn1ine in rh-hideout#4671AI_STRIKES_FIRST
is also replaced byAI_IsFaster
.
- Switch AI uses trapping abilities aggressively by @Pawkkie in rh-hideout#4669
- Use 9th roll instead of average in AI calcs by @AlexOn1ine in rh-hideout#4679
- Use
AI_DATA->abilities
in more places by @Sneed69 in rh-hideout#4729 - Minor switch AI cleanup by @Pawkkie, @DizzyEggg, @AlexOn1ine and @Sneed69 in rh-hideout#4849
- Removed
SetBattlerData
fromAI_CalcDamage
by @AlexOn1ine in rh-hideout#4881 - Removed unused
AI_FLAG_HELP_PARTNER
by @pkmnsnfrn and @Pawkkie in rh-hideout#4918 - Added missing
ADJUST_SCORE
s by @AlexOn1ine in rh-hideout#4925 - Reduced
AI_WhoStrikesFirst
to the most essential parts by @AlexOn1ine in rh-hideout#4978 - Changed score adjustments to
tempScore
increases by @AlexOn1ine in rh-hideout#4987
- Minor AI flag fixes/cleanup by @Pawkkie, @AlexOn1ine and @pkmnsnfrn in rh-hideout#4924
- Corrected species info struct hex comments by @AlexOn1ine in rh-hideout#4798
- Cleanup by @AlexOn1ine in rh-hideout#4800
- Added missing weather tests by @AlexOn1ine in rh-hideout#4434
- Added missing Gale Wings test by @Pawkkie in rh-hideout#4694
- Added
SWITCH_OUT_MESSAGE
andSEND_IN_MESSAGE
macros to avoid tests from failing based on changing switch out/in messages by @Sneed69 in rh-hideout#4717- Usage:
SEND_IN_MESSAGE("Wobbuffet");
- Tests have been updated to use these new macros.
- Usage:
- Added missing Hidden Power test by @AsparagusEduardo in rh-hideout#4462
- Added some Terastallization tests by @hedara90 in rh-hideout#5020
- Cleaned up Frisk test by @mrgriffin in rh-hideout#4441
- Renamed
MgbaPrintf_
toTest_MgbaPrintf
by @Bassoonian in rh-hideout#4642 - AI tests have been moved to their own folder by @Pawkkie in rh-hideout#4898
- Species are now always included in tests by @AlexOn1ine in rh-hideout#4810
- Added Battle Anim Debug Check to see if animations aren't cleared by @ghoulslash in rh-hideout#4930
- Test battlers always have their forced abilities to prevent them from changing during a test by @Sneed69 in rh-hideout#4707
- Test runner uses Set mode to avoid an issue where tests prompted switching and caused a timeout by @Pawkkie in rh-hideout#4661
- @Pokabbie made their first contribution in rh-hideout#4507
- @TheLastMudkip made their first contribution in rh-hideout#4581
- @moostoet made their first contribution in rh-hideout#4605
- @rayrobdod made their first contribution in rh-hideout#4727
- @innocenthedgehog made their first contribution in rh-hideout#4988
Full Changelog: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.8.6...expansion/1.9.0