2023-12-17
## 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.7.0`.
🌋 IMPORTANT CHANGES 🌋
The Expansion now uses Modern compilers by default
- We have enabled
-Werror -Wall
in the Makefile. These flags show warnings for undefined behaviors in the old compiler (agbcc
), and sets all warnings as errors. As such, we have updated the codebase so that all warnings that gcc 13 throws are handled:- CI now uses devkitarm container to run a more modern gcc by @SBird1337 in #3429
- Fix by @AsparagusEduardo in #3530
- Fixed
-Wall -Werror
errors on Modern by @DizzyEggg in #3412 - Fixed warnings introduced by gcc 13 by @SBird1337 in #3428
-Warray-bounds
-Waddress
-Warray-parameter
- Fixed
-Wmaybe-uninitialized
forModifyPersonalityForNature
test by @SBird1337 in #3457
- CI now uses devkitarm container to run a more modern gcc by @SBird1337 in #3429
- Modern compiler may raise the following errors for code introduced from outside the expansion, so we recommend solving those errors:
unused-function
. To solve it, addUNUSED
to the function definition.-static void Function(void) +static void UNUSED Function(void)
unused-variable
. To solve it, remove the unused variable.static void Function(void) { - u8 unused; u8 used; ...
unused-but-set-variable
. To solve it, addUNUSED
to the variable definition.static void Function(void) { - u8 unused; + u8 UNUSED unused; u8 used; unused = DoSomething(); ...
- Updated modern compiler install instructions by @hedara90 in #3527
- You may still use
agbcc
by addingagbcc
to yourmake
command to finish the update process before fixing these errors.- eg.
make -j8 agbcc
. - We may drop support for it in the future, so we recommend updating the code to support the new compilers.
- This will generate
pokeemerald_agbcc.gba
, while modern will generatepokeemerald.gba
by @Bassoonian in #3462
- eg.
🧬 General 🧬
Added
- Incorporated @TheXaman's HGSS Style Pokédex by @AaghatIsLive in #3288
- Includes Dark Mode
- Fix by @AaghatIsLive in #3479
- Updated evolution strings by @Pawkkie in #3375
- Changes to omit adding the code when disabling the feature by @SBird1337 in #3445
- Teachable move list fix by @GraionDilach in #3624
- Includes Dark Mode
- Incorporated @DizzyEggg's nature color branch by @Bassoonian in #3582
- Shows nature stat modifiers in summary screen.
- Added
SUMMARY_SCREEN_NATURE_COLORS
config to disable it. - Updates stat reduction to blue to align with official implementation.
- Added
I_SELL_VALUE_FRACTION
config that changes selling factor of items to 1/4th when set to Gen 9 by @kittenchilly in #3315 - Added
P_FRIENDSHIP_EVO_THRESHOLD
config to update the Friendship evolution threshold to Gen8+'s standard by @kittenchilly in #3376 - Debug Menu
- Added
ROM Space
Utility option to check ROM space by @mrgriffin in #3453 - Added
Toggle Match Call
Flag option to toggle Match Call by @AsparagusEduardo in #3489 - Added
Move Reminder
option by @Bassoonian in #3707 - Moved Party/Boxes related functions to their own menu by @Bassoonian in #3707
- Added
- Added expansion Rom Header by @mrgriffin in #3454
- Added defines for Expansion version number.
- Added option to see the version number in debug menu.
- Added option to restore Japan-only Walda PC backgrounds by @fdeblasio in #3550
- Added
BATTLE_PYRAMID_RANDOM_ENCOUNTERS
config to enable Battle Pyramid Wild Encounter randomization by @ghoulslash in #2581 - Added a
GetSpeciesPreEvolution
function by @LOuroboros in #3696
Changed
- Converted
Get(Box)MonData2
to proper functions by @AsparagusEduardo in #3416 - Added
src/data/map_group_count.h
to.gitignore
by @LOuroboros in #3423 Cheat Start
option now gives all badges and enables all Fly locations.Fly to...
option no longer enables all Fly locations by @AsparagusEduardo in #3489- Better documentation for Type Effectiveness table by @AsparagusEduardo in #3374
- Generational defines now start at
GEN_1
instead ofGEN_3
by @Bassoonian in #3628- Fixes and cleanup
- By @GraionDilach in #3720
- By @AsparagusEduardo in #3723
- Fixes and cleanup
Fixed
- Fixed potential Fly and Badge mismatch when using debug options by @AsparagusEduardo in #3489
- Fixed Pokémon Animation debug menu ignoring animation delay by @AsparagusEduardo in #3562
- Fixed
IS_DITTO
macro by @LOuroboros in #3558 - Added RTC failsafe to Debug menu's
Cheat Start
option by @ravepossum in #3561
🐉 Pokémon 🐉
Added
- Added Generation 9 species up to Teal Mask by @leo60228, @Bassoonian, @AlexOn1ine, @katykat5099, @kittenchilly and @AsparagusEduardo in #3249
- IMPORTANT: Enabling Gen 9 species currently break saves. If you don't want to use them, you can disable
P_GEN_9_POKEMON
ininclude/config/species_enabled.h
.- Reserved Indigo Disk IDs
- By @AsparagusEduardo in #3725
- By @AsparagusEduardo in #3726
- By @Bassoonian in #3727
- Reserved Form IDs that will be supported in future versions by @AsparagusEduardo in #3750
- Shadow Lugia
- Totem Forms
- Partner Pikachu and Eevee
- Reserved Indigo Disk IDs
- Updated UIs to support 4-digit Dex numbers.
- Added Dunsparce and Tandemaus evolution methods by @fdeblasio in #3547
- Tandemaus still does the evolution cutscene for now.
- Ported newer PokéCommunity sprites by @AlexOn1ine in #3643 and #3646
- Fixes and cleanup
- By @fdeblasio in #3539
- By @AsparagusEduardo in #3655 and #3749
- By @katykat5099 in #3751
- IMPORTANT: Enabling Gen 9 species currently break saves. If you don't want to use them, you can disable
- Adjusted Pokemon sprites and palettes - Part 2 by @CyanSMP64 in #3612
- From Magnemite to Tangela + Hitmontop + Nidoking adjustment by MrDollSteak.
- Corrected sprite sizes and elevations
- Further palette adjustments by @CyanSMP64 in #3744
- Pidgeotto, Tentacruel, Feraligatr, Furret, Flaaffy, Marill, Azumarill and Miltank.
- Added missing Alcremie forms by @AsparagusEduardo in #3469
- Previously, only Strawberry Sweet forms were available
- Missing: Icons for non-Ruby Cream forms.
- Cleanup by @Bassoonian in #3488
- Added species define synonyms for base forms with form names by @AsparagusEduardo in #3248
- Eg.
SPECIES_GIRATINA_ALTERED
is equal toSPECIES_GIRATINA
. - The original defines can be used in combination of
GET_BASE_SPECIES_ID(species)
to check for the whole species instead of specific forms.
- Eg.
- Added Gen 7 Pokémon 2nd frames and animations by @katykat5099 in #3426
- Rowlet family
- Pikipek family
- Cutiefly family
- Rockruff family
- Oranguru
- Passimian
- Fixed its shiny palette.
- Togedemaru
- Drampa
- Jangmo-O family
- Added Gen 6 Pokémon 2nd frames and animations by @katykat5099 in #3543
- Chespin
- Bunnelby
- Fletchling family
- Floette family
- Added missing 2nd frame for Eternal Flower Form.
- Amaura
- Added mising World Cap Pikachu icon by @kittenchilly in #3401
- Added
P_CUSTOM_GENDER_DIFF_ICONS
config to use custom female icon sprites for Pikachu and Wobbuffet by @kittenchilly in #3506- Removed
P_HIPPO_GENDER_DIFF_ICONS
in favor of Hippopotas and Hippowdon to use this new config.
- Removed
- Added
P_UPDATED_FRIENDSHIP
config that updates Pokémon base friendship to Gen 8+ standards by @kittenchilly in #3491
Changed
- Species Simplifier™ (Parts 1, 2 and 3)
- Moved most data to
gSpeciesInfo
- Species names
- Cries
- Refactored Cry tables to simplify the process of adding new cries. Now there's a single entry in the table per cry, and species are asigned cry IDs in
gSpeciesInfo
.
- Refactored Cry tables to simplify the process of adding new cries. Now there's a single entry in the table per cry, and species are asigned cry IDs in
- Graphical data now have their pointers in
gSpeciesInfo
(Sprites, palettes and animations)- Removed all files in
src/data/pokemon_graphics/
with the exception offront_pic_anims.h
. - Removed unused 2nd animations.
- Removed all files in
- Dex Entries
- Individual form information is visible in the HGSS Pokédex (Vanilla Dex TBD)
- National Dex numbers are assigned to the species in
gSpeciesInfo
, removing the need ofsSpeciesToHoennPokedexNum
andsSpeciesToNationalPokedexNum
arrays. - Height and Weight are now saved separately per form, so weight in battle is now more accurate.
- Pokédex size page proportions are also separate.
- Pokédex descriptions are now saved as compound strings in
gSpeciesInfo
and differ by form. Shared entries are at the top ofsrc/data/pokemon/species_info.h
.- Missing Pokédex texts for forms by @Bassoonian in #3708
- Level Up and Teachable learnset pointers are now stored in
gSpeciesInfo
. - Evolutions are now stored as compound literals in
gSpeciesInfo
.- Fix by @LOuroboros in #3696
- Form tables pointers are now stored in
gSpeciesInfo
.
- Added toggles to disable specific family groups of species
- Located in
include/config/species_enabled.h
.- Moved the original
P_GEN_x_POKEMON
configs to this file.
- Moved the original
- Options to disable groups of species:
- Battle-gimmick forms (Megas, Primals, etc.)
- Regional Forms (Includes evolutions of those species, such as Sirfetch'd)
- Pikachu extra forms.
- Cross-Generation Evolutions
- Also added separate option to add cross-evolutions to the Regional Dex.
- Generation 1-3 families can now be disabled.
- Pokémon will not evolve into species that have been disabled.
- Pokémon will produce offspring of species that have been disabled.
- Pokémon will not change form into forms that have been disabled.
- Fixes and cleanup
- By @AsparagusEduardo in #3722
- Located in
- Grouped data by species family.
- Converted species flags to gcc flags.
- Converted
P_UPDATED_STATS
"ifdef blocks" to ternaries. - Added Mega Evolution hidden ability failsafes.
- Separated
gSpeciesInfo
by Generation by @AsparagusEduardo in #3729 - Fixes and cleanup
- By @AsparagusEduardo in #3656
- By @fdeblasio in #3698
- Moved most data to
- Updated
P_UPDATED_ABILITIES
Gen 9's config for Piplup's line, Gallade and Shiftry by @Bassoonian in #3353- Shiftry's 2nd regular ability was changed from Early Bird to Wind Rider.
- Piplup, Prinplup and Empoleon's Hidden abilities were changed from Defiant to Competitive.
- Gallade was given Sharpness as a 2nd regular ability.
- Updated Legends Arceus Pokémon data and Level Up learnsets to Scarlet/Violet's by @kittenchilly in #3458
- Applied missing uses of
PLACEHOLDER_ANIM_SINGLE_FRAME
by @AsparagusEduardo in #3562 - Renamed
PLACEHOLDER_TWO_FRAME_ANIMATION
toPLACEHOLDER_ANIM_TWO_FRAMES
by @AsparagusEduardo in #3562 - Removed Old Unown Level Up Learnsets by @AsparagusEduardo in #3562
- Added
FORM_CHANGE_TIME_OF_DAY
form change that automatically changes Form during times of day (used by Shaymin to revert to Land Forme at night) by @AsparagusEduardo in #1690 - Added
FORM_CHANGE_STATUS
form change that triggers when they adquire status condition (used by Shaymin to revert to Land Forme when frozen) by @Bassoonian in #3734- Currently it doesn't:
- Prevent Shaymin from changing into Sky Forme when frozen.
- Change Form in the Battle Pike.
- Currently it doesn't:
- Evolutions now call for
GetTimeOfDay
instead of checking the times directly by @fdeblasio in #3369- Dusk Ball and Form changes also use this function by @Bassoonian in #3585
- Added config for different times of day ranges by @fdeblasio in #3579
- Fixes and cleanup by @AsparagusEduardo in #3648 and #3701
Fixed
- Fixed Koffing and Weezing's abilities ignoring
P_UPDATED_ABILITIES
config and always using Gen8's config by @Bassoonian in #3353 - Fixed Pumpkaboo macro typo by @AlexOn1ine in #3541
- Multiple fixes by @AsparagusEduardo in #3544
- Fixed Mega Gardevoir/Gallade not having their updated Egg Groups.
- Fixed mon not having their appropiate items.
- Alolan Sandlash (Grip Claw, Rare)
- Alolan Muk (Black Sludge, Common)
- Alolan Golem (Cell Battery, Common)
- Alolan Marowak (Thick Club, Rare)
- Alolan Ninetales (Snowball, Rare)
- Fixed missing species flags.
- Giratina Origin (Legendary flag)
- Deoxys Attack (Mythical flag)
- Deoxys Defense (Mythical flag)
- Deoxys Speed (Mythical flag)
- Shaymin Sky (Mythical flag)
- Fixed Aegislash Blade giving the wrong EV yield.
- Fixed Zygarde 10% with Power Construct having the same stats as Zygarde 50%.
- Fixed Galarian Weezing having inproper noFlip property.
- Fixed Stantler not evolving when
P_GEN_9_POKEMON
is set toFALSE
by @fdeblasio in #3548 - Fixes Hisuian Sneasel's type order by @Bassoonian in #3706
⚔️ Battle General ⚔️
Added
- Dynamax by @AgustinGDLV and @AsparagusEduardo in #2417 + Tests
- Requires a Dynamax Band in the bag and for the
B_FLAG_DYNAMAX_BATTLE
flag to be assigned and set.- Pokémon holding a Mega Stone or Z-Crystal can't Dynamax.
- Gigantamax forms.
- G-Max Moves.
- Forms determined using the Form Change tables.
P_GIGANTAMAX_FORMS
config to disable those forms.
- Since we currently don't modify the
BoxPokemon
struct:- Dynamax levels are set to 0 (1.5x HP increase)
- Species always change into their Gigantamax Forms.
- AI Dynamaxes the last Pokémon left in their party.
- Instances where HP/Max HP percentages are used now use
GetNonDynamaxHP
andGetNonDynamaxMaxHP
respectively. - Trainer slide-in messages by @Bassoonian in #3581
- Fixes and cleanup
- By @AsparagusEduardo in
- By @AlexOn1ine in
- Requires a Dynamax Band in the bag and for the
- Added support for Sky Battles by @pkmnsnfrn in #2950
- Requires both
B_FLAG_SKY_BATTLE
andB_VAR_SKY_BATTLE
to be assigned. - Use the
TrySkyBattle
special in scripts to check if the player can participate in a Sky Battle and readies the party if it's succesful. Saves the result in VAR_RESULT.Route123_EventScript_Alberto_Battle_Event_Script: msgbox Route123_EventScript_Alberto_Text_AskSkyBattle, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq Route123_EventScript_Alberto_DenySkyBattle special TrySkyBattle compare VAR_RESULT, TRUE goto_if_eq Route123_EventScript_Alberto_StartBattle msgbox Route123_EventScript_Alberto_Text_No_Flying_Pokemon closemessage release end
- The
B_SKY_BATTLE_STRICT_ELIGIBILITY
config will restrict certain Pokémon from participating based on XY's list when enabled. By default is disabled and allows all Pokémon that are Flying-type and/or have Levitate as their ability. - Banned moves are defined by the
skyBattleBanned
flag. Besides moves banned officially in XY, Gen7+ moves are added viaB_EXTRAPOLATED_MOVE_FLAGS
config by @AsparagusEduardo in #3714 - Effects that interact with grounded battlers do not happen in Sky Battles.
- Fix by @pkmnsnfrn in #3617
- Cleanup by @AlexOn1ine in #3621
- Requires both
- Added
B_TOXIC_REVERSAL
config to revert bad poison to regular poison at the end of battles by @Bassoonian in #3605 - Added
B_SANDSTORM_SPDEF_BOOST
config to disable Sandstorm's Sp. Defense boost for Rock-type Pokémon when set toGEN_3
or less by @Petuuuhhh in #3387 - Added
B_QUICK_MOVE_CURSOR_TO_RUN
config to allow a B Button shortcut for moving the cursor to the run option in Wild Battles by @voloved in #3362 - Added
B_TRY_CATCH_TRAINER_BALL
config to disable losing the Poké Ball used to try to catch a Trainer's Pokémon by @Bassoonian in #3684 - Added
P_CATCH_CURVE
config that updates catch calculations to Gen 6+ by @AtariDreams in #3685 - Added Snow weather animation by @kittenchilly in #3440
- Added a
flushtextbox
macro to flush the text box in battles by @LOuroboros in #3442
Changed
- Removed redundant Battle Types by @AgustinGDLV in #2417
BATTLE_TYPE_KYOGRE_GROUDON
BATTLE_TYPE_REGI
BATTLE_TYPE_GROUDON
BATTLE_TYPE_KYOGRE
BATTLE_TYPE_RAYQUAZA
- Intros, terrain and music determined by the species itself.
- Regigigas, Regieleki and Regidrago play
MUS_VS_REGI
.
- Regigigas, Regieleki and Regidrago play
- Converted most battle preproc
#if
blocks to Cif
s by @AsparagusEduardo in #3392 - Removed pointless for loop in CB2_InitBattleInternal by @LOuroboros in #3422
- Refactored Battle Frontier bans to check the base species by @Bassoonian in #3465
- Better support for adding new species.
- Also adds Gen4+ Special Pokémon to the list.
- Obedience levels now increase per badge by @kittenchilly in #3475
- Also sets
B_OBEDIENCE_MECHANICS
's default config toGEN_LATEST
, where obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level. - Thanks to combination of the added obedience levels matching ORAS' with vanilla Emerald's encounter levels, there's not a single instance were players need to worry about caught Pokémon not obeying as soon as they are caught.
- Also sets
- Decoupled Affection values from Friendship rater thresholds, making them occur less often than what they used to by @kittenchilly in #3495
- Because of the lessened frequency, they have been turned on by default.
- Added
HITMARKER_DISABLE_ANIMATION
to temporarily disable animations (used in Bug Bite's berry consumption) by @ghoulslash in #3607
Fixed
- Fixed Psychic Terrain blocking moves that target all battler or all opponents by @DizzyEggg in #3521
- Fixed issue with "Cycle through Poké Balls" feature not working properly by @fdeblasio in #3534
- Fixed Burmy not transforming at the end of battle if it didn't switch in during a Single Battle by @benicioneto in #3728
- Fixed Player Partner not playing its Shiny animation by @ghoulslash in #3757
🤹 Moves 🤹
Added
- Added Teal Mask Moves by @AlexOn1ine in #3402 + Tests
- Matcha Gotcha
- Syrup Bomb
- Animation by @SonikkuA-DatH and @AlexOn1ine in #3474
- Fixes by @AlexOn1ine in
- Ivy Cudgel
- Type is shown in interfaces by @Bassoonian in #3590
- Tweaks and fixes
- By @AlexOn1ine in #3721
- Fixed Ivy Cudgel test name by @AsparagusEduardo in #3742
- Added Glaive Rush's effect by @AlexOn1ine in #3476
- Added Raging Bull's effect by @AlexOn1ine in #3552
- Added Chilly Reception's effect by @RapidNutcracker in #3379
- Added Rage Fist's effect by @AlexOn1ine in #3573
- Added define synonyms (eg.
MOVE_VICE_GRIP
vs the currentMOVE_VISE_GRIP
) by @Bassoonian in #3580 - Added combined Pledge move effects by @AlexOn1ine, @Skeli789 and @LOuroboros in #3336
- Status animations by @SonikkuA-DatH
- Added
B_WIDE_GUARD
andB_QUICK_GUARD
configs for Wide Guard and Quick Guard to fail when used consecutively in Gen 5 by @AlexOn1ine in #3614 - Added
B_IMPRISON
config that makes Imprison not fail if opposin Pokémon don't have any moves that the user knows from Gen 5 onwards by @AlexOn1ine in #3710
Changed
- Added
B_EXTRAPOLATED_MOVE_FLAGS
config to extend move flag for moves removed in Gen8+.- Razor Wind, Silver Wind and Ominous Wind are given the
windMove
flag. - Dynamax Cannon, Behemoth Blade and Behemoth Blade are given the
assistBanned
flag. - Bitter Blade and Matcha Gotcha are given the
healBlockBanned
flag.
- Razor Wind, Silver Wind and Ominous Wind are given the
- Added new move flags by @kittenchilly in #3425
twoTurnMove
(replacesIsTwoTurnsMove
)forcePressure
(for self-targeted moves that are affected by Pressure)cantUseTwice
(replacesEFFECT_GIGATON_HAMMER
)healBlockBanned
(replaces anEFFECT_x
switch inIsHealBlockPreventingMove
)encoreBanned
(replacesif
chain inCmd_trysetencore
)assistBanned
(originally usedcopycatBanned
+EFFECT_SEMI_INVULNERABLE
andEFFECT_SKY_DROP
)parentalBondBanned
- Updated missing move flags for every move by @kittenchilly in #3425
- Updated Grassy Glide's power from 60 to 55 when
B_UPDATED_MOVE_DATA
is set toGEN_9
or later (Teal Mask) by @kittenchilly in #3425 - Simplified Octolock script and converted its
various
tocallnative
by @AlexOn1ine in #3437 - Added
CanAbilityPreventStatLoss
to centralize stat lowering immunities by @AlexOn1ine in #3437- Fixed multiple abilities not showing the ability name in their message.
- Renamed
EFFECT_SMELLINGSALT
toEFFECT_SMELLING_SALTS
by @AlexOn1ine in #3504 - New move animations by @Captain-Ford and @AlexOn1ine in #3529
- Phantom Force
- Trick or Treat
- Acrobatics
- Head Smash
- Psyshock
- Charge Beam
- Plasma Fists now setup
STATUS_FIELD_ION_DELUGE
instead of having their ownSTATUS4
by @AlexOn1ine in #3476 - Battle Dome points are now based on move data instead of being arbitrarily assigned by @Bassoonian in #3596
Fixed
- Multiple Relic Song fixes by @AlexOn1ine in #3476
- Fixed Acid and Crunch move descriptions being updated by
B_UPDATED_MOVE_DATA
alongside their effects by @fdeblasio in #3586 - Fixed Howl buffing the user's ally if they have Soundproof by @AlexOn1ine in #3593
- Fixed Floral Healing not increasing its effect on Grassy Terrain + Tests by @AlexOn1ine in #3604
- Fixed Spirit Shackle/Anchor Shot not trapping the targets by @AlexOn1ine in #3668
- Fixed Defog not consuming PP if the foe has -6 evasion by @AlexOn1ine in #3668
- Fixed Mirror Coat being able to reflect Pain Split damage by @AlexOn1ine in #3668
- Fixed incorrect Fling damage calculation due to the item being removed before them by @AlexOn1ine in #3670
- Fixed Z-Moves using the base move's priority by @AlexOn1ine in #3690
- Fixed Metal Burst, Trump Card and Comeuppance not being considered as damaging moves by @AlexOn1ine in #3697
- Fixed Fiery Wrath animation bug that caused the user to flip upside down by @AlexOn1ine in #3739
- Fixed Baton Pass not passing Embargo's remaining turns by @DizzyEggg in #3745
- Fixed Raging Fury not causing rampage on user by @AsparagusEduardo in #3754
🎭 Abilities 🎭
Added
- Added Opportunist + Tests by @ghoulslash in #2994
- Added Zero to Hero + Tests by @AlexOn1ine in #3542
- Fix by @AlexOn1ine #3552
- Added
B_ILLUMINATE_EFFECT
config for Illuminate's Gen9 effect by @Bassoonian in #3482 - Added
B_WEAK_ARMOR_SPEED
config for Weak Armor's Gen 5-6 effect by @AsparagusEduardo in #3498 - Added
B_PROTEAN_LIBERO
config for Protean/Libero only triggering once per switch-in as of Gen 9 by @AlexOn1ine in #3614 - Added
B_INTREPID_SWORD
andB_DAUNTLESS_SHIELD
configs for Intrepid Sword and Dauntless Sword only triggering once per battle by @AlexOn1ine in #3614 - Added configs for disabling ability overworld effects as of Gen 9 by @Bassoonian in #3480
- Synchronize, Compound Eyes, Super Luck, Cute Charm, Illuminate, Infiltrator, Harvest, Lightning Rod, Storm Drain, Flash Fire, Magnet Pull and Static.
- Àbility data (not yet functional) by @kittenchilly in #3349
- Hospitality
- Mind's Eye
- Embody Aspect (one ability per effect)
- Toxic Chain
- Supersweet Syrup
Changed
- Pickup Table has been changed so that their percentages can be customized more easily, by @kittenchilly and @AsparagusEduardo in #3351
- The data has been changed to Sword & Shield's.
- Moved
B_SYNCHRONIZE_NATURE
toinclude/config/overworld.h
and renamed it toOW_SYNCHRONIZE_NATURE
by @Bassoonian in #3480
Fixed
- Fixed Synchronize not working with Gift Pokémon and scripted Wild Battles by @Bassoonian in #3480
- Fixed Anger Shell being triggered multiple times by multi-hit moves by @DizzyEggg in #3508
- Fixed Absorbing abilities not cancelling multi-hit moves + Tests (eg. Sap Sipper vs Bullet Seed) by @DizzyEggg in #3516
- Fixed issue that caused Shadow Tag to not work by @fdeblasio in #3549
- Fixed assumption that
gLastUsedAbility
isu8
by @Bassoonian in #3569 - Fixes Protosynthesis and Quark Drive ability pop up appearing more than once by @AlexOn1ine in #3595
- Fixed Trace not triggering when switching in by secondary effects like U-Turn, Eject Pack or Explosion by @LOuroboros in #3623
- Fixed Defiant not being triggered by Cotton Down interaction by @AlexOn1ine in #3657
- Fixed self-targeted moves triggering Stamina, like Substitute by @AlexOn1ine in #3669
- Fixed Quick Draw not working properly by @AlexOn1ine in #3724
- Fixed Neutraling Gas switch-out combined with Electric Surge causing a visual glitch by @DizzyEggg in #3746
- Fixed Innards Out damaging Pokémon with Magic Guard by @DizzyEggg in #3758
- Fixed Innards Out damaging Pokémon despite being suppressed by Gastro Acid by @DizzyEggg in #3758
🧶 Items 🧶
Added
- Repeated Medicine usage by @Bassoonian in #3005
- You can use multiple medicine items in a row without going back to the bag menu. Supports Rare and Exp. Candies.
- Added
B_LIGHT_BALL_ATTACK_BOOST
config to disable Light Ball's Pshycal Attack boost when set toGEN_3
or less by @Petuuuhhh in #3387 - Added Teal Mask items by @kittenchilly in #3349
- Sprites (except for Fairy Feather) by @hedara90 in #3527
- Fairy Feather by @kittenchilly in #3520
- Sprite by Anarlaurendil on Deviantart.
- Despite being introduced in Gen 9, it's still affected by the
I_TYPE_BOOST_POWER
config to be consistent with other type items (10% boost when set to Gen 3).
- Evolution items
- Syrupy Apple
- Unremarkable Teacup
- Masterpiece Teacup
- Form change items
- Cornerstone Mask
- Wellspring Mask
- Hearthflame Mask
- EV modifier items
- Health Mochi
- Muscle Mochi
- Resist Mochi
- Genius Mochi
- Clever Mochi
- Swift Mochi
- Fresh Start Mochi
- Glimmering Charm
- Since there's no raids, it currently does nothing.
- Implemented Rotom Catalog and Zygarde Cube by @kittenchilly in #3284
- Zygarde Cube follows Gen 8 functionality, where it allows to change Form and Ability but not teach moves.
- Rotom Catalog follows non-BDSP functionality, where all forms don't need to be unlocked.
- Cleanup by @AsparagusEduardo in #3700
- Implemented support for Fusion items by @TeamAquasHideout and @kittenchilly in #3274
- Items:
- DNA Splicers
- N-Solarizer
- N-Lunarizer
- Reins of Unity
- Fused mon are stored at the end of in
PokemonStorage
. - Fixes by @Bassoonian in #3602
- Fixes and cleanup
- By @AsparagusEduardo in #3644
- By @Bassoonian in #3692
- Items:
- Ported pokefirered's Vs. Seeker by @Jaizu @pkmnsnfrn in #3256
- Requires
I_VS_SEEKER_CHARGING
flag to be assigned. - Cleanup by @GraionDilach in #3718
- Requires
- Added define synonyms (eg.
ITEM_STICK
vs the currentITEM_LEEK
) by @Bassoonian in #3580
Changed
- Removed unused holdEffectParam for items that double the amount of money gained in battle by @LOuroboros in #3528
- Using the name
Parcel
instead ofOak's Parcel
by @Bassoonian in #3580 - Repel/Lure menu improvements @Jaizu and @pkmnsnfrn in #3594
- If
VAR_LAST_REPEL_LURE_USED
is enabled and a spray runs out:- It will show the name of the spray that ran out.
- If it was the last item of its type and strength, it will ask the player if they want to use a different one of the same type.
- B can now be pressed to cancel the menu.
- If
Fixed
- Fixed healing berries activating before Knock Off by @DizzyEggg in #3509
- Fixed crash damage triggering Eject Button by @AlexOn1ine in #3669 and #3738
- Fixed Quick Claw not reading
holdEffectParam
by @AlexOn1ine in #3737 - Fixed Life Orb causing recoil when swapped via Magician when it shouldn't by @DizzyEggg in #3753
🤖 Battle AI 🤖
- Added AI Tests
- By @DizzyEggg in #3361
- AI prefers Bubble over Water Gun if it's slower (both are power 40).
- AI prefers Water Gun over Bubble if it knows that foe has Contrary.
- AI prefers moves with better accuracy, but only if they both require the same number of hits to KO.
- AI prefers moves which deal more damage instead of moves which are super-effective but deal less damage.
- AI prefers Earthquake over Drill Run if both require the same number of hits to KO.
- AI chooses the safest option to faint the target, taking into account accuracy and move effect.
- AI won't use ground type attacks against flying type Pokémon unless Gravity is in effect.
- AI will not switch in a Pokémon which is slower and gets 1HKOed after fainting.
- AI switches if Perish Song is about to kill.
- AI won't use a Weather changing move if partner already chose such move.
- AI will not use Helping Hand if partner does not have any damage moves.
- AI will not use a status move if partner already chose Helping Hand.
- AI without any flags chooses moves at random.
- By @AlexOn1ine in #3382
- AI prefers a weaker moves over one with a downside effect if both require the same number of hits to KO.
- AI prefers moves with the best possible score, chosen randomly if tied.
- AI can choose a status move that boosts the attack by two.
- By @AlexOn1ine in #3515
- AI won't use Solar Beam if there is no Sun up or the user is not holding Power Herb.
- By @AlexOn1ine in #3583
- AI chooses moves with secondary effect that have a 100% chance to trigger
- Cleanup by @DizzyEggg in #3748
- By @DizzyEggg in #3361
- Smarter SwitchAI Mon Choices +
HasBadOdds
Switch Check by @Pawkkie in #3253- Use
AI_FLAG_SMART_MON_CHOICES
to enable smarter decisions when choosing which mon gets sent out HasBadOdds
expandsAI_FLAG_SMART_SWITCHING
to switch out in cases where a mon has a bad matchup and lots of HP remaining
- Use
- Extend
AI_FLAG_SMART_SWITCHING
for Encore / hazards / lowered attacking stats + Tests by @Pawkkie in #3557
Changed
- By @DizzyEggg in #3199
- Using move flags instead of lists for AI calculations by @AlexOn1ine in #3389
- Remove redundant AI score increases by @AlexOn1ine in #3504
- Remove
GetMoveDamageResult
function by @AlexOn1ine in #3536
Fixed
- Fixed AI randomly choosing moves if they're both super effective by @DizzyEggg in #3361
🧹 Other Cleanup 🧹
- Remove all trailing whitespace (upcoming) by @kittenchilly in #3473
- Debug menu cleanup and documentation by @AsparagusEduardo and @sphericalice in #3390
- Removed
powerfulMoveEffects
array by @AlexOn1ine in #3515 - Added
-Woverride-init
Makefile flag that agbcc has by default by @AsparagusEduardo in #3535 - Fixed static variable names by @Bassoonian in #3637
- Fixed config descriptions
- By @GraionDilach in #3717
- Fixed mistmatching
gBattleTextBuff3
definitions by @GraionDilach in #3719
🧪 Test Runner 🧪
Added
- Added support for wild battle tests by @DizzyEggg in #3342
- Added support for AI battle tests by @DizzyEggg in #3361
- Experience tests by @DizzyEggg in #3342
- Catching Pokémon gives experience.
- Higher leveled Pokémon give more experience.
- Lucky Egg boosts gained exp points by 50%.
- Exp is scaled to player and opponent's levels.
- Large exp gains are supported
- Held Exp. Share gives Experience to mons which did not participate in battle
- Added additional damage formula test by @AlexOn1ine in #3437
- Added Octolock tests by @AlexOn1ine in #3437
- Added Defiant/Sticky Web interaction test by @DizzyEggg in #3516
- Added Embargo tests by @LOuroboros in #3555
- Added missing Hyper Cutter tests by @AlexOn1ine in #3437
- Added missing Anger Shell tests by @DizzyEggg in #3508
- Added missing White Herb tests by @AlexOn1ine in #3611
- Added
SpeciesInfo
integrity tests by @mrgriffin in #3688
Changed
- Moved battle tests off the heap by @mrgriffin in #3413
- Automatic
ASSUMPTION_FAIL
in tests when used species are disabled.- Because of this, instances of
ASSUME(P_GEN_x_POKEMON == TRUE)
have been removed.
- Because of this, instances of
- Updated Gen 9-mon-exclusive ability tests to use Gen 9 mon by @AsparagusEduardo in #3733
Fixed
- Fixed VSCode error shenanigans when viewing tests by @AsparagusEduardo in #3383
- Fixed broken move animations in test replays by @DizzyEggg in #3398
- Performance improvement for test name matching by @jiangzhengwenjz in #3559
- Fixed Ice Heal test name typo by @AtariDreams in #3676
📦 Pret merges 📦
- 2023-10-02 by @AsparagusEduardo in #3372
- 2023-10-27 by @AsparagusEduardo in #3471
- 2023-12-10 by @AsparagusEduardo in #3675
- Delete the redundant files generated after running build (pret#1944)
- Rename
EGG_GROUP_UNDISCOVERED
egg group toEGG_GROUP_NO_EGGS_DISCOVERED
(pret#1939) - Renamed
SendMonToPC
toCopyMonToPC
(pret#1940) - Document
datahpupdate
(pret#1936) - Renamed
HITMARKER_IGNORE_SAFEGUARD
toHITMARKER_STATUS_ABILITY_EFFECT
(pret#1959) - Moved files (pret#1953)
- Spinda Spots
- JP Fonts
redyellowgreen_frame.bin
- [Build System Rewrite] Linkerscript now tracks RAM/ROM usage (pret#1952)
- Fixed ld_script.ld artifact from a previous pret version by @AsparagusEduardo in #3731
- Updated the size of the
struct InGameTrade
'sotName
variable (pret#1962)
New Contributors
- @Petuuuhhh made their first contribution in #3387
- @katykat5099 made their first contribution in #3426
- @leo60228 made their first contribution in #3249
- @hedara90 made their first contribution in #3527
- @jiangzhengwenjz made their first contribution in #3559
- @ravepossum made their first contribution in #3561
- @RapidNutcracker made their first contribution in #3379
- @GraionDilach made their first contribution in #3624
- @AtariDreams made their first contribution in #3676
Full Changelog: expansion/1.6.2...expansion/1.7.0