github rh-hideout/pokeemerald-expansion expansion/1.13.0
Expansion 1.13.0

4 days ago
## 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.13.0
`.

๐ŸŒ‹ REFACTORS ๐ŸŒ‹

๐Ÿ“œ = Uses a migration script.

  • Refactor field moves by @cawtds in #6660
  • Refactors Final Gambit + Tests by @AlexOn1ine in #7005
  • Combines Super Fang and Guardian of Alola effects by @AlexOn1ine in #7048
  • Refactor damage calculations aruguments by using a struct context by @AlexOn1ine in #7108
  • Add damage context to effectiveness multiplier by @AlexOn1ine in #7111
  • Decouple Status set by ability from SetMoveEffect by @AlexOn1ine in #7125
  • Converted Relic Song into a proper form change by @AsparagusEduardo in #7139
    • Added FORM_CHANGE_BATTLE_AFTER_MOVE to parametrize Relic Song's form change
  • Removed Mind Blown effect in favor of move flag by @AsparagusEduardo in #7138
  • Volatile status refactoring by @cfmnephrite in #6983
  • Bag refactor (groundwork for expansion) by @cfmnephrite in #7018
    • If you're using @ghoulslash's bag sort branch, this PR will break it
  • Stat Change (Animation) Refactor by @PhallenTree in #7144
    setgraphicalstatchangevalues and playstatchangeanimation have been removed and now Stat Change Animations are handled in statbuffchange.
    • To update your custom battle scripts:
      setgraphicalstatchangevalues is often accompanied by playanimation X, B_ANIM_STATS_CHANGE. When I refer to deleting setgraphicalstatchangevalues below, that command should also be deleted.
    1. If statbuffchange is before setgraphicalstatchangevalues/playstatchangeanimation and there is something in between them (for example, attackanimation and waitanimation), add the flag STAT_CHANGE_ONLY_CHECKING and replace the command (setgraphicalstatchangevalues/playstatchangeanimation) with a copy of the original statbuffchange.
    2. If statbuffchange is after setgraphicalstatchangevalues/playstatchangeanimation or there is nothing in between, you should delete those commands (setgraphicalstatchangevalues/playstatchangeanimation) and no further changes other than those in 3. should be required.
    3. If playstatchangeanimation had bits assigned to them (BIT_ATK | BIT_SPATK, for example), add ", " followed by those bits to the first statbuffchange; for the following statbuffchanges, remove stats that have already been increased/decreased.
  • Untangle InitBtlControllers functions by @AsparagusEduardo in #6748
  • Use battler arguments for SetMoveEffect by @AlexOn1ine in #7156
  • Easier expandability of debug menu by @AsparagusEduardo in #6910
  • Use dedicated functions for Mud/Water Sport by @AlexOn1ine in #7248
  • Expanding and Refactoring Skill Swap and other ability-changing moves by @surskitty in #7238
  • Refactor move Synchronise by @AlexOn1ine in #7271
  • Adds hazard queue by @AlexOn1ine in #7295
  • Changes AccuracyCalcHelper into CanMoveSkipAccuracyCalc by @AlexOn1ine in #7303
  • battle_interface: overhaul ability pop up by @mudskipper13 in #7227
    • The layout of the ability pop up's image (graphics/battle_interface/ability_pop_up.png) has been changed.
  • Bag refactor 2 by @cfmnephrite in #7166
  • Replaces STATUS2 usage with volatiles in code by @cfmnephrite in #7262
    • Replaced all references to STATUS2 in the code with volatiles (but left the old bitfield behind for compatibility with downstream users). The list of volatiles is in include/constants/battle.h and includes information such as an enum, a field name, type and max size, and whether or not the move is Baton Passable. Users can use VOLATILE_X with any function that previously took STATUS2_X in scripts, and can check/set volatiles in C with gBattleMons[battler].volatiles.{field name} syntax instead of checking a flag in a bitfield.
  • Refactor battle environment by @fdeblasio in #4891
  • Convert various to callnatives by @AlexOn1ine in #7355
  • AI refactor for weather-setting, terrain-setting, Trick Room behaviors; doubles-focused by @surskitty in #7319
    • AI is more likely to use Trick Room in double battles and Terrains in general.
  • Convert Status4 to volatiles by @AlexOn1ine in #7411
  • Split Sheer Force tests by gen instead of by four by @AlexOn1ine in #7260
  • Modify move prediction to work in doubles by @AlexOn1ine in #7087
  • Convert statuses3 to volatiles by @AlexOn1ine in #7514
  • Added trainerBackPic to Trainer struct to de-couple trainer pic and trainer back pic defines by @grintoul1 in #7425

๐Ÿงฌ General ๐Ÿงฌ

Added

  • New sprite compressor by @hedara90, @DizzyEggg Improved performance massively for the instruction decoding., @mrgriffin, SBird and @tertu-m who has done even more optimization and answered questions about the GBA hardware whenever I had them. and @rayrobdod for the better migration script. in #5627
    • LZDecompressVram and LZDecompressWram has been deprecated. All calls do decompress LZ compressed data should be using the wrapper functions DecompressDataWithHeaderVram or DecompressDataWithHeaderWram.
    • A new sprite compression format has been introduced. To use it, replace files with .4bpp.lz with .4bpp.smol or .4bpp.fastSmol.
    • .smol is a compression format utilizing entropy encoding in the form of tabled Asymmetric Numeral Systems (tANS) and a modified LZ style RLE/Dictionary encoding scheme specialized for the sprites used in Pokemon games. This is approximately 25% smaller than the default LZ77 compression.
    • .fastSmol skips the entropy encoding and is therefore slightly larger than the default LZ77 compression, but decoding sprites is faster than the default LZ77 compression.
    • .smolTM is a compression scheme for tilemaps.
    • Might have unexpected behavior if user introduced decompression during hardware interrupts.
    • Has a migration script that handles all files under src/, migration_scripts/1.12/convert_compressed_files.py.
  • Adds FRLG asserts to Alloc/Free by @cawtds in #7025
  • Debug parties and battles by @SBird1337 in #6884
    • Adds options to set debug parties and battles using the debug menu
  • Added naive line break by @hedara90 in #7076
  • Disable unowned evo methods by @Bolt-Strike in #7103
  • lto support by @DizzyEggg in #7182
  • Improve trainer back pic-related data and code (+ smol documentation) by @mudskipper13 in #6821
  • Add Set Hidden Nature option to the debug menu by @AlexOn1ine in #7281
  • Instant Win option in Battle Debug by @AlexOn1ine in #7333
  • trainerproc copy other trainer party by @hedara90 in #7251
    • Adds the Copy Pool command to trainerproc which copies the party/pool from another trainer.
  • Show chosen move in the battle debug menu by @AlexOn1ine in #7382
  • Rock climb by ghoulslash by @pokesidv in #7432
    • Added rock climb field effect

Changed

Fixed

๐Ÿ—บ๏ธ Overworld ๐Ÿ—บ๏ธ

Added

  • Added createfollowernpc macro to make a new follower from a gfx id by @Bivurnum in #7196
    • Follower NPCs can now be created without using an existing NPC, using the createfollowernpc macro.
  • feat: separate water and rock smash encounter rate checks by @khbsd in #7293

Changed

  • fix: remove unused wild_encounters.json.txt jinja file by @khbsd in #7581
  • added Ash Greninja overworld sprites by @wiz1989 in #6976
  • Update FRLG whiteouts to new pret system by @Bassoonian in #7040
    • Make sure to migrate your changes to the now deleted heal_locations_pkm_center.h to the json file.
  • Use CanAbilityAbsorbMove in GetOverworldTypeEffectiveness by @AlexOn1ine in #7115
  • Add config options for removing bard phoneme audio to save ROM space by @poetahto in #7155
  • Add debug options for follower NPCs by @Bivurnum in #7215
  • Better system for Follower NPC running frames by @Bivurnum in #7222
  • Update follower NPC tutorial doc for createfollowernpc macro by @Bivurnum in #7230

Fixed

๐Ÿ‰ Pokรฉmon ๐Ÿ‰

Added

  • Add P_ASK_MOVE_CONFIRMATION by @pkmnsnfrn in #7132
    • This will change the behavior of the game for players, as a new default is being set.
  • Added CRY_MODE_DYNAMAX by @AsparagusEduardo in #6933
  • Wild Pokรฉmon animate after breaking out of Pokรฉ Ball by @LinathanZel in #7339

Changed

Fixed

โš”๏ธ Battle General โš”๏ธ

Added

Changed

  • Remove unused function by @AlexOn1ine in #7617
  • Clean up battlescript calls with func BattleScriptCall by @AlexOn1ine in #6873
  • Refactors Final Gambit + Tests by @AlexOn1ine in #7005
  • GetBattlerMon cleanup by @AsparagusEduardo in #6967
  • Change GetZMaxMoveAgainstProtectionModifier to prevent regressions by @AlexOn1ine in #7047
  • Combines Super Fang and Guardian of Alola effects by @AlexOn1ine in #7048
  • Remove more instances of hard-coded Move IDs by @AsparagusEduardo in #7056
    • Added EFFECT_SHEER_COLD to parametrize Sheer Cold's interactions with Ice types
  • Deprecate sStatusFlagsForMoveEffects by @AlexOn1ine in #7063
  • Removes duplicate AI ability func by @AlexOn1ine in #7045
  • Deprecate absent member from battlerState by @AlexOn1ine in #7091
  • Refactor damage calculations aruguments by using a struct context by @AlexOn1ine in #7108
  • Add damage context to effectiveness multiplier by @AlexOn1ine in #7111
  • Decouple Status set by ability from SetMoveEffect by @AlexOn1ine in #7125
  • Removed redundant Damp check by @AsparagusEduardo in #7134
  • Converted Relic Song into a proper form change by @AsparagusEduardo in #7139
    • Added FORM_CHANGE_BATTLE_AFTER_MOVE to parametrize Relic Song's form change
  • Removed Mind Blown effect in favor of move flag by @AsparagusEduardo in #7138
  • Volatile status refactoring by @cfmnephrite in #6983
  • Repurposes IsMagicGuardProtected into a general function by @AlexOn1ine in #7114
  • Stat Change (Animation) Refactor by @PhallenTree in #7144
    -setgraphicalstatchangevalues and playstatchangeanimation have been removed and now Stat Change Animations are handled in statbuffchange.
    • To update your custom battle scripts:
      setgraphicalstatchangevalues is often accompanied by playanimation X, B_ANIM_STATS_CHANGE. When I refer to deleting setgraphicalstatchangevalues below, that command should also be deleted.
    1. If statbuffchange is before setgraphicalstatchangevalues/playstatchangeanimation and there is something in between them (for example, attackanimation and waitanimation), add the flag STAT_CHANGE_ONLY_CHECKING and replace the command (setgraphicalstatchangevalues/playstatchangeanimation) with a copy of the original statbuffchange.
    2. If statbuffchange is after setgraphicalstatchangevalues/playstatchangeanimation or there is nothing in between, you should delete those commands (setgraphicalstatchangevalues/playstatchangeanimation) and no further changes other than those in 3. should be required.
    3. If playstatchangeanimation had bits assigned to them (BIT_ATK | BIT_SPATK, for example), add ", " followed by those bits to the first statbuffchange; for the following statbuffchanges, remove stats that have already been increased/decreased.
  • Use argument.type for EFFECT_SOAK by @AsparagusEduardo in #7141
  • Untangle InitBtlControllers functions by @AsparagusEduardo in #6748
  • Increase party action limit by @cawtds in #7119
  • Adds Gen5+ Encore config by @AlexOn1ine in #7051
  • Attackcanceller clean up by @AlexOn1ine in #7210
  • Remove redundant move result flag checks by @AlexOn1ine in #7223
  • Use dedicated functions for Mud/Water Sport by @AlexOn1ine in #7248
  • Script clean up for Flame Burst and Costar by @AlexOn1ine in #7264
  • Renaming STATUS1_REFRESH and adding more constants for common STATUS1 checks. by @surskitty in #7284
  • Refactor move Synchronise by @AlexOn1ine in #7271
  • Adds hazard queue by @AlexOn1ine in #7295
  • Removed all instances of .chance = 100, SHEER_FORCE_NO_BOOST by @cfmnephrite in #7300
  • Changes AccuracyCalcHelper into CanMoveSkipAccuracyCalc by @AlexOn1ine in #7303
  • Replaces STATUS2 usage with volatiles in code by @cfmnephrite in #7262
    • Replaced all references to STATUS2 in the code with volatiles (but left the old bitfield behind for compatibility with downstream users). The list of volatiles is in include/constants/battle.h and includes information such as an enum, a field name, type and max size, and whether or not the move is Baton Passable. Users can use VOLATILE_X with any function that previously took STATUS2_X in scripts, and can check/set volatiles in C with gBattleMons[battler].volatiles.{field name} syntax instead of checking a flag in a bitfield.
  • Refactor battle environment by @fdeblasio in #4891
  • Convert various to callnatives by @AlexOn1ine in #7355
  • Remove leftover code by @AlexOn1ine in #7397
  • Moved some fields to BattlerState/PartyState by @AsparagusEduardo in #7409
  • Additional effects tweak by @cfmnephrite in #7392
  • Clean up noResultString by @AlexOn1ine in #7408
  • Convert Status4 to volatiles by @AlexOn1ine in #7411
  • Convert statuses3 to volatiles by @AlexOn1ine in #7514
  • Prevents a regression for custom abilties by @AlexOn1ine in #7616

Fixed

๐Ÿคน Moves ๐Ÿคน

Changed

  • New Attack Animations: 25w20a by @ShinyVolcarona in #6886
    • Added move animations for multiple moves by @LinathanZel
    • Dynamax Cannon, Behemoth Blade, Behemoth Bash, Eternabeam, Glaive Rush, Triple Dive, Doodle, Ruination, Collision Course, Electro Drift, Blazing Torque, Wicked Torque, Noxious Torque, Combat Torque, Magical Torque, Psyblade, Mighty Cleave, Supercell Slam
  • Documented usage of delay X by @AsparagusEduardo in #6951
  • Animation documentation by @AsparagusEduardo in #7052
  • New and polished battle animations by @LinathanZel in #7074

Fixed

๐Ÿงถ Items ๐Ÿงถ

Changed

Fixed

๐Ÿค– Battle AI ๐Ÿค–

Added

  • AI: Add AI_SMART_TERA flag to make smarter decisions about when to terastalize. by @jfb1337 in #6705
    • Only single battles are currently supported.
  • Haze Boosting AI Followup by @Pawkkie in #6966
  • Improved logic for Guard Split and Power Split. by @surskitty in #7298
  • Add AI_FLAG_ASSUME_STAB by @Pawkkie in #6797
  • AI checks the partner's moves for Flatter, Swagger, and Soak. by @surskitty in #7306
  • AI uses After You to help set up Trick Room. by @surskitty in #7310
  • AI assumes Magnitude / Present damage by @Pawkkie in #7334
  • AI_FLAG_ASSUME_STATUS_MOVES -- AI flag to randomly know some of the player's status moves by @surskitty in #7324
  • Improve AI's setup logic by @Pawkkie in #7345
  • Improve AI's ShouldRecover by @Pawkkie in #7342
  • Switch AI can see weather abilities of switchin candidates during damage calcs by @Pawkkie in #7373
  • AI refactor for weather-setting, terrain-setting, Trick Room behaviors; doubles-focused by @surskitty in #7319
    • AI is more likely to use Trick Room in double battles and Terrains in general.
  • Improve AI type matchup calcs by @Pawkkie in #7364
  • Multibattle Partner AI Flags and 2vs1 battler3 AI Flags fix by @grintoul1 in #7378
  • Improve AI's Sucker Punch handling by @Pawkkie in #7389
  • Improve AI's priority handling by @Pawkkie in #7337
  • Fix dynamic move types in switching by @Pawkkie in #7415
  • Adds AI_FLAG_ASSUMPTIONS as a constant for semi-omniscience by @surskitty in #7435
  • AI_FLAG_ATTACKS_PARTNER with a config for bloodthirstiness by @surskitty in #7401
  • Improved Guaranteed Flinch logic (fake out et al) by @surskitty in #7501
  • AI uses Court Change. by @surskitty in #7525
  • AI uses Tailwind. by @surskitty in #7515
  • AI should not use Dark Void or Hyperspace Fury while wrong species by @surskitty in #7540
  • AI uses Rototiller. by @surskitty in #7542
  • Helping Hand logic by @surskitty in #7504

Changed

Fixed

๐Ÿงน Other Cleanup ๐Ÿงน

๐Ÿงช Test Runner ๐Ÿงช

Changed

Fixed

๐Ÿ“š Documentation ๐Ÿ“š

New Contributors

Full Changelog: expansion/1.12.2...expansion/1.12.3

New Contributors

Full Changelog: expansion/1.12.2...expansion/1.13.0

Don't miss a new pokeemerald-expansion release

NewReleases is sending notifications on new releases.