Skip to content

Latest commit

 

History

History
599 lines (583 loc) · 49.6 KB

File metadata and controls

599 lines (583 loc) · 49.6 KB

Version 1.7.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.7.0`.

🌋 IMPORTANT CHANGES 🌋

  • 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 for ModifyPersonalityForNature test by @SBird1337 in #3457
  • 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, add UNUSED 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, add UNUSED 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 adding agbcc to your make 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 generate pokeemerald.gba by @Bassoonian in #3462

🧬 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
  • 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 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 of GEN_3 by @Bassoonian in #3628
    • Fixes and cleanup
      • By @GraionDilach in #3720
      • By @AsparagusEduardo in #3723

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, @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 in include/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
    • 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
  • 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 to SPECIES_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.
  • 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.
  • 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 from multiple arrays to new fields in gSpeciesInfo
      • gSpeciesNames array -> speciesName field.
      • gLevelUpLearnsets array -> levelUpLearnset field.
      • gTeachableLearnsets array -> teachableLearnset field.
      • gEvolutionTable array -> evolutions field.
        • Fix by @LOuroboros in #3696
      • gFormSpeciesIdTables array -> formSpeciesIdTable field.
      • gFormChangeTablePointers array -> formChangeTable field.
      • 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's cryId field.
      • Graphical data now have their pointers in gSpeciesInfo (Sprites, palettes and animations)
        • Removed all files in src/data/pokemon_graphics/ with the exception of front_pic_anims.h.
          • gMonBackPicCoords array -> backPicSize field.
          • gMonBackPicTable array -> backPic field.
            • gMonBackPicTableFemale array -> backPicFemale field.
          • gMonFrontPicCoords array -> frontPicSize field.
          • gMonFrontPicTable array -> frontPic field.
            • gMonFrontPicTableFemale array -> frontPicFemale field.
          • gMonPaletteTableFemale array -> palette field.
            • gMonPaletteTableFemale array -> paletteFemale field.
          • gMonShinyPaletteTable array -> shinyPalette field.
            • gMonShinyPaletteTableFemale array -> shinyPaletteFemale field.
          • gEnemyMonElevation array -> enemyMonElevation field.
          • gMonIconPaletteIndices array -> iconPalIndex field.
            • gMonIconPaletteIndicesFemale array -> iconPalIndexFemale field.
        • Removed unused 2nd animations.
      • 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 of sSpeciesToHoennPokedexNum and sSpeciesToNationalPokedexNum 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 of src/data/pokemon/species_info.h.
          • Missing Pokédex texts for forms by @Bassoonian in #3708
    • 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.
      • 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
    • 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
  • 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 to PLACEHOLDER_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.
  • 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 to FALSE 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 and GetNonDynamaxMaxHP respectively.
    • Trainer slide-in messages by @Bassoonian in #3581
    • Fixes and cleanup
  • Added support for Sky Battles by @pkmnsnfrn in #2950
    • Requires both B_FLAG_SKY_BATTLE and B_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 via B_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
  • 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 to GEN_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.
  • Converted most battle preproc #if blocks to C ifs 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 to GEN_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.
  • 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 current MOVE_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 and B_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.
  • Added new move flags by @kittenchilly in #3425
    • twoTurnMove (replaces IsTwoTurnsMove)
    • forcePressure (for self-targeted moves that are affected by Pressure)
    • cantUseTwice (replaces EFFECT_GIGATON_HAMMER)
    • healBlockBanned (replaces an EFFECT_x switch in IsHealBlockPreventingMove)
    • encoreBanned (replaces if chain in Cmd_trysetencore)
    • assistBanned (originally used copycatBanned + EFFECT_SEMI_INVULNERABLE and EFFECT_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 to GEN_9 or later (Teal Mask) by @kittenchilly in #3425
  • Simplified Octolock script and converted its various to callnative 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 to EFFECT_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 own STATUS4 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 and B_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 to include/config/overworld.h and renamed it to OW_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 is u8 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 to GEN_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
  • Ported pokefirered's Vs. Seeker by @Jaizu @pkmnsnfrn in #3256
    • Requires I_VS_SEEKER_CHARGING flag to be assigned.
    • Cleanup by @GraionDilach in #3718
  • Added define synonyms (eg. ITEM_STICK vs the current ITEM_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 of Oak'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.

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
  • 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 expands AI_FLAG_SMART_SWITCHING to switch out in cases where a mon has a bad matchup and lots of HP remaining
  • 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.
  • 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
    • Slight RTC documentation + Evolution times constants (pret#1925)
    • Add friendship evo threshold constant (pret#1928)
    • Solved a bunch of -Wall errors on modern (pret#1926)
  • 2023-10-27 by @AsparagusEduardo in #3471
    • Add some task/sprite data defines (pret#1915)
    • Fix mini_printf encoded string -Werror=pointer-sign warning (pret#1938)
    • Remove all trailing whitespace (pret#1937)
    • Use BUGFIX in assembly files (pret#1935)
  • 2023-12-10 by @AsparagusEduardo in #3675
    • Delete the redundant files generated after running build (pret#1944)
    • Rename EGG_GROUP_UNDISCOVERED egg group to EGG_GROUP_NO_EGGS_DISCOVERED (pret#1939)
    • Renamed SendMonToPC to CopyMonToPC (pret#1940)
    • Document datahpupdate (pret#1936)
    • Renamed HITMARKER_IGNORE_SAFEGUARD to HITMARKER_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's otName 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: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.6.2...expansion/1.7.0