## 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
- Added
- 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
andplaystatchangeanimation
have been removed and now Stat Change Animations are handled instatbuffchange
.- To update your custom battle scripts:
setgraphicalstatchangevalues
is often accompanied byplayanimation X, B_ANIM_STATS_CHANGE
. When I refer to deletingsetgraphicalstatchangevalues
below, that command should also be deleted.
- If
statbuffchange
is beforesetgraphicalstatchangevalues
/playstatchangeanimation
and there is something in between them (for example,attackanimation
andwaitanimation
), add the flagSTAT_CHANGE_ONLY_CHECKING
and replace the command (setgraphicalstatchangevalues
/playstatchangeanimation
) with a copy of the originalstatbuffchange
. - If
statbuffchange
is aftersetgraphicalstatchangevalues
/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. - If
playstatchangeanimation
had bits assigned to them (BIT_ATK | BIT_SPATK
, for example), add ", " followed by those bits to the firststatbuffchange
; for the followingstatbuffchange
s, remove stats that have already been increased/decreased.
- To update your custom battle scripts:
- 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.
- The layout of the ability pop up's image (
- 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 withgBattleMons[battler].volatiles.{field name}
syntax instead of checking a flag in a bitfield.
- 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
- 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
andLZDecompressWram
has been deprecated. All calls do decompress LZ compressed data should be using the wrapper functionsDecompressDataWithHeaderVram
orDecompressDataWithHeaderWram
.- 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 totrainerproc
which copies the party/pool from another trainer.
- Adds the
- 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
- Restore git history check by @ravepossum in #7463
- Moved summary screen nature colors to summary_screen.h by @RubyRaven6 in #7560
- Added comment in event.inc for simple menus in dynmultichoice by @RubyRaven6 in #7568
- Changed default print level for DebugPrintf for mGBA to MGBA_LOG_WARN by @hedara90 in #7567
- Fixed Teleport's description not being updated based on
B_TELEPORT_BEHAVIOR
by @AsparagusEduardo in #7580 - Minor Clean up in battle_ai_main.c by @AlexOn1ine in #7551
- Refactor field moves by @cawtds in #6660
- Replace all usages of lz compression with smol by @hedara90 in #7032
BtlController_EmitTwoReturnValues
cleanup by @AsparagusEduardo in #6855- Put the gen 1 compression tests behind a config by @hedara90 in #7033
- Converts a bunch of defines to enums by @Bassoonian in #7041
- chore: remove unused section from credits by @Emiliasky in #7085
- Simplify white out messages by @kittenchilly in #6961
- Improve music/se macros and fix names by @cawtds in #7030
- Bag refactor (groundwork for expansion) by @cfmnephrite in #7018
- If you're using @ghoulslash's bag sort branch, this PR will break it
- Converts more defines to enums and name unnamed enums by @Bassoonian in #7071
- Add config options for removing bard phoneme audio to save ROM space by @poetahto in #7155
- Fix debug text order by @hedara90 in #7149
- More battle controller function consolidation. by @AsparagusEduardo in #6877
- Easier expandability of debug menu by @AsparagusEduardo in #6910
- Update .gitignore to add heal locations by @Bassoonian in #7050
- Add 'Give Decoration' function to overworld debug menu by @rayrobdod in #7219
- Changes pre-proc to a normal if for Item Desc Header by @AlexOn1ine in #7231
- Use compound strings in battle debug menu by @AsparagusEduardo in #7282
- Remove competitive syntax config by @hedara90 in #7154
- This change can be reverted by doing
git revert 14dbbf63d454073dbb198b941cc3566168c89f11
.
- This change can be reverted by doing
- Turn
OW_FRLG_WHITEOUT
intoOW_WHITEOUT_CUTSCENE
and make it generational by @kittenchilly in #6962 - Add
Macro
key to trainerproc by @hedara90 in #7157 - preproc: Support attribute in enums by @mrgriffin in #7344
- Enum conversion for
enum MoveEffects
andenum BattleMoveEffects
by @hedara90 in #7366- This enables
-Wenum-conversion
, additional compilation errors can occur
- This enables
- Get/SetMonData optimisation by @cfmnephrite in #7313
- Bag refactor3 + Ghoulslash's sorting feature port by @cfmnephrite in #7330
- Replace all usages of rl compression with smol by @rayrobdod in #7458
- Bag sorting cleanup by @mrgriffin in #7489
- Adds ghouls Rock Climb git history by @AlexOn1ine in #7493
- Changed item name/pluralName to a compound string by @cfmnephrite in #7359
- Added trainerBackPic to Trainer struct to de-couple trainer pic and trainer back pic defines by @grintoul1 in #7425
- Suppress trainerproc compile warning for unused func by @AlexOn1ine in #7592
Fixed
- Fix .smol compression in debug builds by @hedara90 in #7090
- Improve smol compressor by @hedara90 in #7073
- Increased heap by 768 bytes by @hedara90 in #7097
- Fix healthbox when blending effects happen by @AsparagusEduardo in #7203
- Fixed Fake RTC debug menu by @AsparagusEduardo in #7218
- Added missing braces by @cfmnephrite in #7288
- Fixed Flag Vars menu keeping artifacts from bag menu + cleanup by @AsparagusEduardo in #7226
- Fix HGSS dex running out of heap by @hedara90 in #7317
- battle intro: fix issues with follower slide-in and wild shiny mon by @mudskipper13 in #7325
- Fix sorting bag by type by @mrgriffin in #7488
- Hacky support for enums in C asm statements by @mrgriffin in #7494
- Fixed compile issue in gcc 11 by @AsparagusEduardo in #7579
- Fix overlap between spin evolution and script evolution by @FosterProgramming in #7593
๐บ๏ธ 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.
- Follower NPCs can now be created without using an existing NPC, using the
- 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.
- Make sure to migrate your changes to the now deleted
- 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
- Bug fix: add handling for forced movements into/after ledge jumps with follower NPCs by @Bivurnum in #7055
- Fixed compile issue
OW_TIMES_OF_DAY
isGEN_3
by @AsparagusEduardo in #7499 - Remove shadow and hide follower on stair warp by @cornixsenex in #7368
- Fix Form Change Item Task Data and Clean Up Field Use Funcs by @ravepossum in #7535
- Fix Vs Seeker Trainer Battle script issue by @pkmnsnfrn in #7615
- Fix follower compression by @hedara90 in #7038
- Changing P_ONLY_OBTAINABLE_SHINIES to truly be Only Obtainable Shinies by @surskitty in #7275
๐ 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
- Add dedicated getter functions for Pokรฉmon types and abilities by @Bassoonian in #7043
- added Ash Greninja overworld sprites by @wiz1989 in #6976
- Get/SetMonData optimisation by @cfmnephrite in #7313
Fixed
- fixes #7129: 'add to full party' feature in the safari zone by @fakuzatsu in #7147
- Fix substruct offsets from #7313 by @mrgriffin in #7431
- Fixes refusing to replace a move on evolution causing a softlock by @PhallenTree in #7585
โ๏ธ Battle General โ๏ธ
Added
- Add Gen 2 Moonlight, Morning Sun, Synthesis configuration by @i0brendan0 in #7209
- Add a heal animation to Hospitality recovery by @AlexOn1ine in #7426
- Updated Dream Eater/Liquid Ooze's interaction to Gen 5 standards by @AsparagusEduardo in #7528
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
- Added
- 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
- Added
- 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
andplaystatchangeanimation
have been removed and now Stat Change Animations are handled instatbuffchange
.- To update your custom battle scripts:
setgraphicalstatchangevalues
is often accompanied byplayanimation X, B_ANIM_STATS_CHANGE
. When I refer to deletingsetgraphicalstatchangevalues
below, that command should also be deleted.
- If
statbuffchange
is beforesetgraphicalstatchangevalues
/playstatchangeanimation
and there is something in between them (for example,attackanimation
andwaitanimation
), add the flagSTAT_CHANGE_ONLY_CHECKING
and replace the command (setgraphicalstatchangevalues
/playstatchangeanimation
) with a copy of the originalstatbuffchange
. - If
statbuffchange
is aftersetgraphicalstatchangevalues
/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. - If
playstatchangeanimation
had bits assigned to them (BIT_ATK | BIT_SPATK
, for example), add ", " followed by those bits to the firststatbuffchange
; for the followingstatbuffchange
s, remove stats that have already been increased/decreased.
- To update your custom battle scripts:
- Use
argument.type
forEFFECT_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 withgBattleMons[battler].volatiles.{field name}
syntax instead of checking a flag in a bitfield.
- 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
- 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
- Fixes Magnet Rise when user is Rooted/Smacked Down by @PhallenTree in #7449
- Fixes Leech Seed recovery not applying behind Sub by @AlexOn1ine in #7468
- Fixes Round and Fusion moves doubling power from previous turn's move by @PhallenTree in #7476
- Fixes shadows and mon animations for transformed battlers by @AsparagusEduardo in #7500
- Fixes Life Orb still activating if move was absorbed by @AlexOn1ine in #7521
- Fix Mimicry Only Activating Once per Turn by @ghoulslash in #7537
- Fixes Knock Off still activating when there is no Item by @AlexOn1ine in #7496
- Fixed
B_PSYWAVE_DMG
by @AsparagusEduardo in #7557 - Fixes Counter / Mirror Coat / Metal Burst damage assignment by @AlexOn1ine in #7538
- Fix in-game partner battles always causing a whiteout by @ravepossum in #7587
- Fix B_ANIMATE_MON_AFTER_KO with a new counter by @hedara90 in #7531
- Fixes Rage Fist counter increment by @AlexOn1ine in #7582
- Fixes moveend_absorb hitmarker by @AlexOn1ine in #7591
- switchinabilities also runs ON_WEATHER and ON_TERRAIN by @ghoulslash in #7612
- Fixes Explosion behavior when 3 mons can endure hit by @AlexOn1ine in #7594
- Fixes octolock not ending after user switched out by @AlexOn1ine in #7556
- The original attacker wasn't restored for Doodle by @AlexOn1ine in #7620
- Restore X item friendship increase by @ravepossum in #7583
- Fixes Wonder Room interactions with Defense/Special Defense boosting effects by @PhallenTree in #7626
- Ally Switch attract battler swapping, test for leech seed by @ghoulslash in #7634
- Fixes Defiant/Competitive not resetting stat change animations and stat change related cleanup by @PhallenTree in #7004
- Use battler arguments for SetMoveEffect by @AlexOn1ine in #7156
- Fixes Booster Energy timing activation + Clean up by @AlexOn1ine in #7175
- Fixes Eject Pack not resolving correctly during switch in effects by @AlexOn1ine in #7002
- Adds Ability Shield activation message by @PhallenTree in #7224
- Fix incorrect type input by @hedara90 in #7228
- Set correct Instruction by @AlexOn1ine in #7236
- Fixes Life Dew playing anim when it is not supposed to + tests by @AlexOn1ine in #7239
- Fixes instances of battler mutation for abilities by @AlexOn1ine in #7250
- Fix Psych Up message and cleanup and don't allow switching to self in tests by @PhallenTree in #7277
- Fix incorrect status in beneficial ability Guts check by @grintoul1 in #7285
- 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.
- The layout of the ability pop up's image (
- Fixes Status overwrites and Effect Spore wrong func args by @AlexOn1ine in #7340
- Fixes various Choice lock issues by @AlexOn1ine in #7383
- Fixes draining moves recovering 1 HP when dealing 0 damage by @LinathanZel in #7523
๐คน 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
- Clear gScanlineEffect to fix timeout in acid downpour animation by @FosterProgramming in #7442
- Fix terastallization anims flickering by @ravepossum in #7613
๐งถ Items ๐งถ
Changed
- Fix using town map as registered item by @ravepossum in #7482
- Compound strings for hold effect names by @AsparagusEduardo in #7140
- Untangled TMs and HMs from item ids by @cfmnephrite in #7173
- Bag refactor 2 by @cfmnephrite in #7166
Fixed
- Implement using party menu items from field by @ravepossum in #7481
- Fixed TM and Berries disappearing when sorting by @AsparagusEduardo in #7168
- Fixed item swapping bug (#7428) by @cfmnephrite in #7430
- Fixes some Ability Shield interactions by @PhallenTree in #7532
- Fix tossing a stack of berries hiding following berries by @hedara90 in #7571
๐ค 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
- Macro-for-AI-Flag-definitions by @grintoul1 in #7471
- Remove redundancy for ShouldLowerStat functions by @AlexOn1ine in #6577
- Expanding and Refactoring Skill Swap and other ability-changing moves by @surskitty in #7238
- Changes AccuracyCalcHelper into CanMoveSkipAccuracyCalc by @AlexOn1ine in #7303
- AI Tests + accompanying bugfixes for Skill Swap, Worry Seed, weather setting in double battles, and Discharging into an ally's lightningrod by @surskitty in #7297
- Fix AI resisted move scoring by @Pawkkie in #7350
- Fiddling with CanLowerStat. by @surskitty in #7510
- Improved hazards logic and Mycelium Might ignores ability checks by @surskitty in #7509
- AI handling for similar utility moves by @surskitty in #7513
- Modify move prediction to work in doubles by @AlexOn1ine in #7087
- Uncommenting out No Retreat, Clangorous Soul, and Extreme Evoboost from CheckBadMove by @surskitty in #7541
- AI Tailwind singles fix correction. by @surskitty in #7543
- Remove funcResult from AiThinkingStruct by @Pawkkie in #7545
- AI handling for Autotomize. by @surskitty in #7550
- AI uses Stuff Cheeks; treating it simply as a def +2 move for now. by @surskitty in #7554
- Slight Purify adjustment for targeting ally; test that AI can use Purify. by @surskitty in #7553
- AI handling for Howl. by @surskitty in #7549
- Test that AI uses Dragon Cheer. by @surskitty in #7552
- Tests to see that the AI uses moves. by @surskitty in #7555
Fixed
- Incorrect call in Rest by @surskitty in #7569
- Fix duplicate switch in after faint by @AlexOn1ine in #7600
- Feature/ai/wide guard quick guard singles by @Emiliasky in #7086
- Add missing break by @Pawkkie in #7356
- fixed-damage-move-ai-calc-fix by @grintoul1 in #7385
- Avoid doubling up on status moves in double battles. by @surskitty in #7452
- Fix doubles switch AI to use new type matchup system by @Pawkkie in #7495
- Fix Bad Odds not seeing damage properly by @Pawkkie in #7492
- Fix GetSwitchinHitsToKO one shot heal calcs by @Pawkkie in #7502
- Fix AI's KO evaluation getting messed up by priority by @Pawkkie in #7533
- Fixing Refresh AI scoring by @surskitty in #7539
- Fix switch AI not seeing its own move PP by @Pawkkie in #7578
- Fix wrong battler argument in
GetBattleMovePriority
call by @Pawkkie in #7576 - Restore AI: Basic Trainer to PARTNER_STEVEN by @grintoul1 in #7586
๐งน Other Cleanup ๐งน
- Macro-for-AI-Flag-definitions by @grintoul1 in #7471
- Moved summary screen nature colors to summary_screen.h by @RubyRaven6 in #7560
- fix: remove unused wild_encounters.json.txt jinja file by @khbsd in #7581
- Fix Form Change Item Task Data and Clean Up Field Use Funcs by @ravepossum in #7535
- Fixed Teleport's description not being updated based on
B_TELEPORT_BEHAVIOR
by @AsparagusEduardo in #7580 - Fixed typo in test name by @hedara90 in #7610
- Minor Clean up in battle_ai_main.c by @AlexOn1ine in #7551
- Remove unused function by @AlexOn1ine in #7617
- Fix Vs Seeker Trainer Battle script issue by @pkmnsnfrn in #7615
- Clean up battlescript calls with func BattleScriptCall by @AlexOn1ine in #6873
- Replace all usages of lz compression with smol by @hedara90 in #7032
BtlController_EmitTwoReturnValues
cleanup by @AsparagusEduardo in #6855GetBattlerMon
cleanup by @AsparagusEduardo in #6967- Converts a bunch of defines to enums by @Bassoonian in #7041
- Change GetZMaxMoveAgainstProtectionModifier to prevent regressions by @AlexOn1ine in #7047
- 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
- Added
- Animation documentation by @AsparagusEduardo in #7052
- Deprecate sStatusFlagsForMoveEffects by @AlexOn1ine in #7063
- chore: remove unused section from credits by @Emiliasky in #7085
- Removes duplicate AI ability func by @AlexOn1ine in #7045
- Remove redundancy for ShouldLowerStat functions by @AlexOn1ine in #6577
- Deprecate absent member from battlerState by @AlexOn1ine in #7091
- Use CanAbilityAbsorbMove in GetOverworldTypeEffectiveness by @AlexOn1ine in #7115
- Removed redundant Damp check by @AsparagusEduardo in #7134
- Improve music/se macros and fix names by @cawtds in #7030
- Compound strings for hold effect names by @AsparagusEduardo in #7140
- Repurposes IsMagicGuardProtected into a general function by @AlexOn1ine in #7114
- Converts more defines to enums and name unnamed enums by @Bassoonian in #7071
- Use
argument.type
forEFFECT_SOAK
by @AsparagusEduardo in #7141 - More battle controller function consolidation. by @AsparagusEduardo in #6877
- Add assumes for bag tests by @Bassoonian in #7188
- Fixes Booster Energy timing activation + Clean up by @AlexOn1ine in #7175
- Update .gitignore to add heal locations by @Bassoonian in #7050
- Attackcanceller clean up by @AlexOn1ine in #7210
- Remove redundant move result flag checks by @AlexOn1ine in #7223
- 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.
- Script clean up for Flame Burst and Costar by @AlexOn1ine in #7264
- Use compound strings in battle debug menu by @AsparagusEduardo in #7282
- Renaming STATUS1_REFRESH and adding more constants for common STATUS1 checks. by @surskitty in #7284
- Removed all instances of .chance = 100, SHEER_FORCE_NO_BOOST by @cfmnephrite in #7300
- AI Tests + accompanying bugfixes for Skill Swap, Worry Seed, weather setting in double battles, and Discharging into an ally's lightningrod by @surskitty in #7297
- Turn
OW_FRLG_WHITEOUT
intoOW_WHITEOUT_CUTSCENE
and make it generational by @kittenchilly in #6962 - Fix AI resisted move scoring by @Pawkkie in #7350
- 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
- Bag sorting cleanup by @mrgriffin in #7489
- Convert statuses3 to volatiles by @AlexOn1ine in #7514
- Uncommenting out No Retreat, Clangorous Soul, and Extreme Evoboost from CheckBadMove by @surskitty in #7541
- AI Tailwind singles fix correction. by @surskitty in #7543
- Remove funcResult from AiThinkingStruct by @Pawkkie in #7545
- Suppress trainerproc compile warning for unused func by @AlexOn1ine in #7592
- Prevents a regression for custom abilties by @AlexOn1ine in #7616
๐งช Test Runner ๐งช
Changed
- Clean up some Normalize tests to make them make sense by @hedara90 in #7461
- Add Synthesis + Utililty Umbrella test by @ghoulslash in #7472
- Add test for BoxPokemon integrity by @hedara90 in #7487
- Re-order moves in fling test by @hedara90 in #7559
- Wrote some tests by @AsparagusEduardo in #7563
- Added Ability TODO tests - Volume C by @AsparagusEduardo in #7562
- Added missing Move Effect TODO tests - Volume F by @AsparagusEduardo in #7605
- Fixed typo in test name by @hedara90 in #7610
- Add assumes for bag tests by @Bassoonian in #7188
- Split Sheer Force tests by gen instead of by four by @AlexOn1ine in #7260
- make check TESTS="..." support for filenames and infix matches by @mrgriffin in #7536
- Fix shell side arm rng in battle tests moves by @FosterProgramming in #7548
- Test that AI uses Dragon Cheer. by @surskitty in #7552
- Tests to see that the AI uses moves. by @surskitty in #7555
Fixed
- Clear out parties between battle tests by @hedara90 in #7460
- Fixed most failed tests with
GEN_LATEST GEN_8
by @AsparagusEduardo in #7498 - Corrected Liquid Ooze test by @AsparagusEduardo in #7527
- switchinabilities also runs ON_WEATHER and ON_TERRAIN by @ghoulslash in #7612
- Ally Switch attract battler swapping, test for leech seed by @ghoulslash in #7634
- Fixed changed effect for Sheer Cold by @hedara90 in #7099
- Fixed Transistor damage calculation test failing when
GEN_LATEST
is less thanGEN_9
by @AsparagusEduardo in #7577
๐ Documentation ๐
- Update how_to_new_pokemon.md by @kevinwklawrence in #7440
- Updating a link to porytiles in INSTALL.md by @ThePeeps191 in #7490
- Added comment in event.inc for simple menus in dynmultichoice by @RubyRaven6 in #7568
- Documented usage of
delay X
by @AsparagusEduardo in #6951 - Update follower NPC tutorial doc for createfollowernpc macro by @Bivurnum in #7230
- Improve trainer back pic-related data and code (+ smol documentation) by @mudskipper13 in #6821
- Update trainer.h usage warning by @hedara90 in #7439
New Contributors
- @kevinwklawrence made their first contribution in #7440
- @ThePeeps191 made their first contribution in #7490
- @cornixsenex made their first contribution in #7368
Full Changelog: expansion/1.12.2...expansion/1.12.3
New Contributors
- @ShinyVolcarona made their first contribution in #6886
- @Emiliasky made their first contribution in #7085
- @poetahto made their first contribution in #7155
- @Bolt-Strike made their first contribution in #7103
- @kevinwklawrence made their first contribution in #7440
- @FosterProgramming made their first contribution in #7442
- @ThePeeps191 made their first contribution in #7490
- @cornixsenex made their first contribution in #7368
Full Changelog: expansion/1.12.2...expansion/1.13.0