Merge remote-tracking branch 'rhh/master' into upcoming

This commit is contained in:
Martin Griffin 2023-12-19 18:08:13 +00:00
commit 13a4bf5838
19 changed files with 1310 additions and 259 deletions

View file

@ -23,15 +23,12 @@ body:
label: Version
description: What version of pokeemerald-expansion are you using as a base?
options:
- 1.6.2 (Default)
- 1.7.0 (Default)
- upcoming (Edge)
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- pre-1.5.0
- pre-1.6.0
validations:
required: true
- type: input

View file

@ -23,15 +23,12 @@ body:
label: Version
description: What version of pokeemerald-expansion are you using as a base?
options:
- 1.6.2 (Default)
- 1.7.0 (Default)
- upcoming (Edge)
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- pre-1.5.0
- pre-1.6.0
validations:
required: true
- type: input

View file

@ -23,15 +23,12 @@ body:
label: Version
description: What version of pokeemerald-expansion are you using as a base?
options:
- 1.6.2 (Default)
- 1.7.0 (Default)
- upcoming (Edge)
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- pre-1.5.0
- pre-1.6.0
validations:
required: true
- type: input

View file

@ -1,122 +1,5 @@
# Pokeemerald-Expansion Changelog
# Pokeemerald-Expansion Changelogs
# Version 1.6.2
## [Version 1.7.0](docs/changelogs/1.7.0.md) - Feature Release
## 🌋 *IMPORTANT CHANGES* 🌋
### Battle changes
* Battler Types are now obtained via `GetBattlerType` instead of `gBattleMons[battlerId].type1/2/3` to better consider Roost. Be sure to update your custom battle effects to account for this change.
## 🧬 General 🧬
### Fixed
* Fixed Cheat Start not initiating time-based events by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3446
## 🐉 Pokémon 🐉
### Changed
* Updated Cresselia's base stats to Gen 9 by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3419
* Updated Zacian/Zamazenta base stats to Gen 9 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3421
### Fixed
* Fixed Kleavor, Hisuian Sneasel and Sneasler missing their SV abilities by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3391
* Fixed Bergmite/Avalugg old and updated egg groups being switched by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3380
## 🤹 Moves 🤹
### Changed
* Quick Draw now uses weighted RNG by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399
* Added `IS_BATTLER_TYPELESS` macro that checks if the specified battler has no valid type by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3303
### Fixed
* Fixed Protect failing if the user flinched on the previous turn by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3345
* Fixed entry hazards not working properly being cleared on switch-in by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3316
* This includes Toxic Spikes not working if Pecha Berry actived on the previous turn.
* Fixed Roost overwriting other type changing at the end of the turn (Soak, Forest's Curse, Color Change, etc.) by @BLourenco in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258
* Now it suppresses the user's Flying-type rather than remove and re-add it.
* Fixes Salt Cure visual bug if mon fainted by direct attack by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3388
* Fixed Purifying Salt not preventing the use of Rest by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399
* Fixed Make it Rain lowering Sp. Attack twice if hitting 2 targets in double battles by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3441
* Fixed Reflect Type not properly handle 3rd types by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3303
* Fixed form change triggered by switching not occuring when using moves like U-Turn or Baton Pass by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3463
* Fixed Last Resort not counting Sleep Talk as used for its effect by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378
## 🎭 Abilities 🎭
### Changed
* Removed unused `STATUS3_CANT_SCORE_A_CRIT` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
* Moved Beads of Ruin and Sword of Ruin damage to the appropiate damage modifier functions by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415
### Fixed
* Fixed Intimidate increasing the attack of both opponents if one of them has Contrary in double battles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3365
* Fixed Battle/Shell Armor not preventing critical hits by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
* Fixed Rivalry's effect being reversed by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381
* Fixed Rivalry lowering attack if either attacker or target were genderless by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381
* Fixed missing Poison Heal Ability Popup by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3385
* Fixed Parental Bond not working at all by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3417
* Fixed Beads of Ruin and Sword of Ruin damage modifiers by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415
* Fixed Sheer Force not negating effects that benefit the user (eg. Flame Charge, Power-Up Punch) by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378
* Fixed Strength Sap not healing the user when used on a Substitute by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3486
* Fixed Substitute showing the "took damage for" message if Strength Sap was used on it by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3486
* Fixed Weak Armor interrupting Multi Hit moves by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3497
## 🧶 Items 🧶
### Fixed
* Fixed Shiny Charm doing too many rerolls by default by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3327
* Fixed Berserk Gene activating for the wrong Pokémon double battles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3363
* Fixed Red Card not being consumed after opponent Sticky Web activation by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364
* Fixed implementation of Gen6 that didn't allow for the Exp Share flag to be set via script without setting the item to the Gen 6+ version by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3384
* Fixed Kee Berry raising defense by 1 stage instead of 2 by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409
* Fixed Kee Berry incorrect stat raise message by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409
* Fixed Razor Fang not being able to be used directly even if `I_USE_EVO_HELD_ITEMS_FROM_BAG` was set to `TRUE` by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3456
## 🧹 Cleanup 🧹
* `AbilityBattleEffects` uses `B_MSG_TERRAIN` constants for field terrain intro text by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3410
* Removed all trailing whitespace by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3472
## 🧪 Test Runner 🧪
### Added
* Flinch tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3345
* Berserk Gene double battle tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3363
* More specific Toxic Spikes tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3316
* Red Card/Sticky Web test @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364
* Intimidate/Contrary double battle test by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3365
* Critical Hit tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
* Roost tests by @BLourenco in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258
* Rivalry tests by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381
* Various tests by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3385
* Defeatist, Dragon's Maw, Earth Eater, Gale Wings, Poison Heal, Rocky Payload, Sap Sipper, Steelworker and Transistor.
* Various tests by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399
* Beast Boost, Ice Scales, Neuroforce, Purifying Salt, Quick Draw and Sharpness.
* Berry tests @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409
* Full: Apicot, Custap, Ganlon, Jaboca, Kee, Lansat, Liechi, Maranga, Micle, Petaya, Rowap and Salac Berries.
* TODO: Starf Berry.
* Weather and type-specific tests by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3260
* Full: Freezing, Hail, Moonlight, Morning Sun, Sandstorm, Snow, Solar Beam/Blade, Steel poisoning, Synthesis, Thunder and Weather Ball.
* Partial: Prankster, Safety Goggles, Aurora Veil, Hurricane, Leech Seed and OHKO moves.
* TODO: Harvest.
* Single Parental Bond test by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3417
* Several tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378
* Full: Weak Armor, Last Resort, Stealth Rock.
* Completed Weak Armor tests by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3493
* Partial: Defiant, Sheer Force, White Herb, Strength Sap.
### Changed
* Red Card tests now check if the item was consumed by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364
* Tests now cannot use `i` in their cycles to avoid messing with `PARAMETRIZE` by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3408
* Moved battle tests off the heap by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3414
* Moved Powder/Grass test to `move_flags` folder by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3260
* Continuous `NOT x; NOT y;` are now not allowed in tests due to them not acting as one would expect by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3459
* Test writers should use `NONE_OF { x; y; }` instead.
### Fixed
* Fixed CreateNPCTrainerPartyForTrainer test failing on modern by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3367
* Fixed `RNG_CRITICAL_HIT` by @mrgriffin and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
* Fixed `ASSUMPTIONS` block not working by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3368
* Fixup by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3408
* Fixed Beads of Ruin and Sword of Ruin damage tests by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415
* Fixes test RNG by @mrgriffin and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3433
* Fixed battle test estimateCost bug by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3448
* Test cleanup and improvements by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3449
* Removed duplicated Prankster TO_DO test.
* Corrected Multi-hit test names (4 and 5 hits stated 35% instead of 15%).
* Grouped Maranga Berry's Physical vs Special tests using PARAMETRIZE.
* Improved Jaboca, Kee and Rowap tests by @AlexOn1ine
* Fixed `ModifyPersonalityForNature` by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3452
* Fixed test_runner.c modern warning by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3451
## New Contributors
* @BLourenco made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258
## Full Changelog
https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.6.1...expansion/1.6.2
## [Version 1.6.2](docs/changelogs/1.6.2.md) - Bugfix release

View file

@ -7,7 +7,7 @@ pokeemerald-expansion is a decomp hack base project based off pret's [pokeemeral
If you use pokeemerald-expansion in your hack, please add RHH (Rom Hacking Hideout) to your credits list. Optionally, you can list the version used, so it can help players know what features to expect.
You can phrase it as the following:
```
Based off RHH's pokeemerald-expansion v1.6.2 https://github.com/rh-hideout/pokeemerald-expansion/
Based off RHH's pokeemerald-expansion v1.7.0 https://github.com/rh-hideout/pokeemerald-expansion/
```
## What features are included?
@ -17,7 +17,7 @@ Based off RHH's pokeemerald-expansion v1.6.2 https://github.com/rh-hideout/pokee
- [Item configurations](/include/config/item.h)
- [Overworld configurations](/include/config/overworld.h)
- [Debug configurations](/include/config/debug.h)
- Upgraded battle engine.
- ***Upgraded battle engine.***
- Gen5+ damage calculation.
- 2v2 Wild battles support.
- 1v2/2v1 battles support.
@ -25,11 +25,14 @@ Based off RHH's pokeemerald-expansion v1.6.2 https://github.com/rh-hideout/pokee
- Physical/Special/Status Category Split (configurable).
- New moves and abilities up to Scarlet and Violet.
- Custom Contest data up to SwSh, newer moves are WIP. ([source](https://pokemonurpg.com/info/contests/rse-move-list/))
- [Form change tables](/src/data/pokemon/form_change_tables.h) that allow customizing most form changes.
- Mega Evolution, Primal Reversion and Ultra Burst.
- Mega Evolution
- Primal Reversion
- Ultra Burst
- Z-Moves
- Gen 8+ damaging moves are given power extrapolated from Gen 7.
- Gen 8+ status moves have no additional effects, like Healing Wish.
- Dynamax
- Gigantamax forms
- Initial battle parameters
- Queueing stat boosts (aka, Totem Boosts)
- Setting Terrains.
@ -37,6 +40,7 @@ Based off RHH's pokeemerald-expansion v1.6.2 https://github.com/rh-hideout/pokee
- Quick Poké Ball selection in Wild Battles
- Press `R` to use last selected Poké Ball.
- Hold `R` to change selection with the D-Pad.
- Run option shortcut
- Faster battle intro
- Message and animation/cry happens at the same time.
- Faster HP drain.
@ -58,7 +62,7 @@ Based off RHH's pokeemerald-expansion v1.6.2 https://github.com/rh-hideout/pokee
- Level 100 Pokémon can earn EVs.
- Inverse battle support.
- TONS of other features listed [here](/include/config/battle.h).
- Full Trainer customization
- ***Full Trainer customization***
- Nickname, EVs, IVs, moves, ability, ball, friendship, nature, gender, shininess.
- Custom tag battle support (teaming up an NPC in a double battle).
- Sliding trainer messages.
@ -67,11 +71,12 @@ Based off RHH's pokeemerald-expansion v1.6.2 https://github.com/rh-hideout/pokee
- New flag options to let you customize the intelligence of your trainers.
- Faster calculations.
- Specify Poké Balls by Trainer class.
- Pokémon Species from Generations 1-8.
- Option to disable unwanted generations.
- ***Pokémon Species from Generations 1-9.***
- Simplified process to add new Pokémon.
- Option to disable unwanted families.
- Updated sprites to DS style.
- Updated stats, types, abilities and egg groups (configurable).
- Updated Hoenn's Regional Dex to match ORAS'.
- Updated Hoenn's Regional Dex to match ORAS' (configurable).
- Updated National Dex incorporating the new species.
- Sprite and animation visualizer.
- Accesible by pressing `Select` on a Pokémon's Summary screen.
@ -86,46 +91,56 @@ Based off RHH's pokeemerald-expansion v1.6.2 https://github.com/rh-hideout/pokee
- Available via Ability Patch.
- Compatible with Ghoul's DexNav branch.
- All gender differences.
- Different icons for female Hippopotas and Hippowdon
- 3 Perfect IVs on Legendaries, Mythicals and Ultra Beasts
- Breeding
- Custom female icons for female Hippopotas Hippowdon, Pikachu and Wobbufett
- 3 Perfect IVs on Legendaries, Mythicals and Ultra Beasts.
- ***Customizable form change tables. Full list of methods [here](/include/constants/form_change_types.h).***
- Item holding (eg. Giratina/Arceus)
- Item using (eg. Oricorio)
- Time of day option for Shaymin
- Fainting
- Battle begin and end (eg. Xerneas)
- Move change option for Zacian/Zamazenta
- Battle end in terrains (eg. Burmy)
- Switched in battle (eg. Palafin)
- HP Threshold (eg. Darmanitan)
- Weather (eg. Castform)
- End of turn (eg. Morpeko)
- Time of day (Shaymin)
- ***Breeding Improvements***
- Incense Baby Pokémon now happen automatically (configurable).
- Level 1 eggs.
- Poké Ball inheriting.
- Egg Move Transfer, including Mirror Herb.
- Nature inheriting 100% of the time with Everstone
- Gen6+ Ability inheriting.
- Items from newer Generations. Full list [here](/include/constants/items.h).
- Level 1 eggs (configurable).
- Poké Ball inheriting (configurable).
- Egg Move Transfer, including Mirror Herb (configurable).
- Nature inheriting 100% of the time with Everstone (configurable)
- Gen6+ Ability inheriting (configurable).
- ***Items from newer Generations. Full list [here](/include/constants/items.h).***
- ***Gen 6+ Exp. Share*** (configurable)
- Berserk Gene
- Most battle items from Gen 4+
- Existing item data but missing effects:
- Mints
- Dynamax Candy
- Mulches
- Rotom Catalog
- DNA Splicers
- Zygarde Cube
- N Solarizer/Lunarizer
- Reins of Unity
- Dynamax Band
- Gimmighoul Coin
- Booster Energy
- Tera Shards
- Tera Orb
- Feature branches incorporated:
- [RHH intro credits](https://github.com/Xhyzi/pokeemerald/tree/rhh-intro-credits) by Xhyzi.
- ***Feature branches incorporated (with permission):***
- [RHH intro credits](https://github.com/Xhyzi/pokeemerald/tree/rhh-intro-credits) by @Xhyzi.
- A small signature from all of us to show the collective effort in the project :)
- [Overworld debug](https://github.com/TheXaman/pokeemerald/tree/tx_debug_system) by TheXaman
- [Overworld debug](https://github.com/TheXaman/pokeemerald/tree/tx_debug_system) by @TheXaman
- May be disabled.
- Accesible by pressing `R + Start` in the overworld by default.
- **Additional features**:
- *Clear Boxes*: cleans every Pokémon from the Boxes.
- *Hatch an Egg*: lets you choose an Egg in your party and immediatly hatch it.
- [HGSS Pokédex](https://github.com/TheXaman/pokeemerald/tree/tx_pokedexPlus_hgss) by TheXaman
- [HGSS Pokédex](https://github.com/TheXaman/pokeemerald/tree/tx_pokedexPlus_hgss) by @TheXaman
- May be disabled.
- **Additional features**:
- *Support for new evolution methods*.
- *Dark Mode*.
- Other features
- [Nature Colors](https://github.com/DizzyEggg/pokeemerald/tree/nature_color) in summary screen by @DizzyEggg
- ***Other features***
- Pressing B while holding a Pokémon drops them like in modern games (configurable).
- Running indoors (configurable).
- Configurable overworld poison damage.
@ -151,7 +166,7 @@ With this, you'll get the latest version of pokeemerald-expansion, plus a couple
## **How do I update my version of pokeemerald-expansion?**
- 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.6.2`.
- Once you have your remote set up, run the command `git pull RHH expansion/1.7.0`.
### Please consider crediting the entire [list of contributors](https://github.com/rh-hideout/pokeemerald-expansion/wiki/Credits) in your project, as they have all worked hard to develop this project :)

View file

@ -2990,7 +2990,7 @@ BattleScript_EffectTelekinesis:
settelekinesis BattleScript_ButItFailed
attackanimation
waitanimation
printstring STRINGID_PKMNIDENTIFIED
printstring STRINGID_HURLEDINTOTHEAIR
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
@ -9092,14 +9092,8 @@ BattleScript_SoundproofProtected::
goto BattleScript_MoveEnd
BattleScript_IceFaceNullsDamage::
attackstring
attackanimation
waitanimation
effectivenesssound
hitanimation BS_TARGET
waitstate
call BattleScript_TargetFormChangeWithString
goto BattleScript_MoveEnd
return
BattleScript_DazzlingProtected::
attackstring

126
docs/changelogs/1.6.2.md Normal file
View file

@ -0,0 +1,126 @@
# Version 1.6.2
```md
## 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.6.2`.
```
## 🌋 *IMPORTANT CHANGES* 🌋
### Battle changes
* Battler Types are now obtained via `GetBattlerType` instead of `gBattleMons[battlerId].type1/2/3` to better consider Roost. Be sure to update your custom battle effects to account for this change.
## 🧬 General 🧬
### Fixed
* Fixed Cheat Start not initiating time-based events by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3446
## 🐉 Pokémon 🐉
### Changed
* Updated Cresselia's base stats to Gen 9 by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3419
* Updated Zacian/Zamazenta base stats to Gen 9 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3421
### Fixed
* Fixed Kleavor, Hisuian Sneasel and Sneasler missing their SV abilities by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3391
* Fixed Bergmite/Avalugg old and updated egg groups being switched by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3380
## 🤹 Moves 🤹
### Changed
* Quick Draw now uses weighted RNG by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399
* Added `IS_BATTLER_TYPELESS` macro that checks if the specified battler has no valid type by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3303
### Fixed
* Fixed Protect failing if the user flinched on the previous turn by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3345
* Fixed entry hazards not working properly being cleared on switch-in by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3316
* This includes Toxic Spikes not working if Pecha Berry actived on the previous turn.
* Fixed Roost overwriting other type changing at the end of the turn (Soak, Forest's Curse, Color Change, etc.) by @BLourenco in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258
* Now it suppresses the user's Flying-type rather than remove and re-add it.
* Fixes Salt Cure visual bug if mon fainted by direct attack by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3388
* Fixed Purifying Salt not preventing the use of Rest by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399
* Fixed Make it Rain lowering Sp. Attack twice if hitting 2 targets in double battles by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3441
* Fixed Reflect Type not properly handle 3rd types by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3303
* Fixed form change triggered by switching not occuring when using moves like U-Turn or Baton Pass by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3463
* Fixed Last Resort not counting Sleep Talk as used for its effect by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378
## 🎭 Abilities 🎭
### Changed
* Removed unused `STATUS3_CANT_SCORE_A_CRIT` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
* Moved Beads of Ruin and Sword of Ruin damage to the appropiate damage modifier functions by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415
### Fixed
* Fixed Intimidate increasing the attack of both opponents if one of them has Contrary in double battles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3365
* Fixed Battle/Shell Armor not preventing critical hits by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
* Fixed Rivalry's effect being reversed by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381
* Fixed Rivalry lowering attack if either attacker or target were genderless by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381
* Fixed missing Poison Heal Ability Popup by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3385
* Fixed Parental Bond not working at all by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3417
* Fixed Beads of Ruin and Sword of Ruin damage modifiers by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415
* Fixed Sheer Force not negating effects that benefit the user (eg. Flame Charge, Power-Up Punch) by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378
* Fixed Strength Sap not healing the user when used on a Substitute by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3486
* Fixed Substitute showing the "took damage for" message if Strength Sap was used on it by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3486
* Fixed Weak Armor interrupting Multi Hit moves by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3497
## 🧶 Items 🧶
### Fixed
* Fixed Shiny Charm doing too many rerolls by default by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3327
* Fixed Berserk Gene activating for the wrong Pokémon double battles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3363
* Fixed Red Card not being consumed after opponent Sticky Web activation by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364
* Fixed implementation of Gen6 that didn't allow for the Exp Share flag to be set via script without setting the item to the Gen 6+ version by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3384
* Fixed Kee Berry raising defense by 1 stage instead of 2 by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409
* Fixed Kee Berry incorrect stat raise message by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409
* Fixed Razor Fang not being able to be used directly even if `I_USE_EVO_HELD_ITEMS_FROM_BAG` was set to `TRUE` by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3456
## 🧹 Cleanup 🧹
* `AbilityBattleEffects` uses `B_MSG_TERRAIN` constants for field terrain intro text by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3410
* Removed all trailing whitespace by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3472
## 🧪 Test Runner 🧪
### Added
* Flinch tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3345
* Berserk Gene double battle tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3363
* More specific Toxic Spikes tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3316
* Red Card/Sticky Web test @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364
* Intimidate/Contrary double battle test by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3365
* Critical Hit tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
* Roost tests by @BLourenco in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258
* Rivalry tests by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381
* Various tests by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3385
* Defeatist, Dragon's Maw, Earth Eater, Gale Wings, Poison Heal, Rocky Payload, Sap Sipper, Steelworker and Transistor.
* Various tests by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399
* Beast Boost, Ice Scales, Neuroforce, Purifying Salt, Quick Draw and Sharpness.
* Berry tests @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409
* Full: Apicot, Custap, Ganlon, Jaboca, Kee, Lansat, Liechi, Maranga, Micle, Petaya, Rowap and Salac Berries.
* TODO: Starf Berry.
* Weather and type-specific tests by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3260
* Full: Freezing, Hail, Moonlight, Morning Sun, Sandstorm, Snow, Solar Beam/Blade, Steel poisoning, Synthesis, Thunder and Weather Ball.
* Partial: Prankster, Safety Goggles, Aurora Veil, Hurricane, Leech Seed and OHKO moves.
* TODO: Harvest.
* Single Parental Bond test by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3417
* Several tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378
* Full: Weak Armor, Last Resort, Stealth Rock.
* Completed Weak Armor tests by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3493
* Partial: Defiant, Sheer Force, White Herb, Strength Sap.
### Changed
* Red Card tests now check if the item was consumed by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364
* Tests now cannot use `i` in their cycles to avoid messing with `PARAMETRIZE` by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3408
* Moved battle tests off the heap by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3414
* Moved Powder/Grass test to `move_flags` folder by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3260
* Continuous `NOT x; NOT y;` are now not allowed in tests due to them not acting as one would expect by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3459
* Test writers should use `NONE_OF { x; y; }` instead.
### Fixed
* Fixed CreateNPCTrainerPartyForTrainer test failing on modern by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3367
* Fixed `RNG_CRITICAL_HIT` by @mrgriffin and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
* Fixed `ASSUMPTIONS` block not working by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3368
* Fixup by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3408
* Fixed Beads of Ruin and Sword of Ruin damage tests by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415
* Fixes test RNG by @mrgriffin and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3433
* Fixed battle test estimateCost bug by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3448
* Test cleanup and improvements by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3449
* Removed duplicated Prankster TO_DO test.
* Corrected Multi-hit test names (4 and 5 hits stated 35% instead of 15%).
* Grouped Maranga Berry's Physical vs Special tests using PARAMETRIZE.
* Improved Jaboca, Kee and Rowap tests by @AlexOn1ine
* Fixed `ModifyPersonalityForNature` by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3452
* Fixed test_runner.c modern warning by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3451
## New Contributors
* @BLourenco made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258
## Full Changelog
https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.6.1...expansion/1.6.2

584
docs/changelogs/1.7.0.md Normal file
View file

@ -0,0 +1,584 @@
# Version 1.7.0
```md
## 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***](https://github.com/rh-hideout/pokeemerald-expansion/pull/3305)
* 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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3429
* Fix by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3530
* Fixed `-Wall -Werror` errors on Modern by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3412
* Fixed warnings introduced by gcc 13 by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3428
* `-Warray-bounds`
* `-Waddress`
* `-Warray-parameter`
* Fixed `-Wmaybe-uninitialized` for `ModifyPersonalityForNature` test by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/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.
```diff
-static void Function(void)
+static void UNUSED Function(void)
```
* `unused-variable`. To solve it, remove the unused variable.
```diff
static void Function(void)
{
- u8 unused;
u8 used;
...
```
* `unused-but-set-variable`. To solve it, add `UNUSED` to the variable definition.
```diff
static void Function(void)
{
- u8 unused;
+ u8 UNUSED unused;
u8 used;
unused = DoSomething();
...
```
* Updated modern compiler install instructions by @hedara90 in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3462
## 🧬 General 🧬
### Added
* Incorporated @TheXaman's HGSS Style Pokédex by @AaghatIsLive in https://github.com/rh-hideout/pokeemerald-expansion/pull/3288
* Includes Dark Mode
* Fix by @AaghatIsLive in https://github.com/rh-hideout/pokeemerald-expansion/pull/3479
* Updated evolution strings by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/3375
* Changes to omit adding the code when disabling the feature by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3445
* Teachable move list fix by @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3624
* Incorporated @DizzyEggg's nature color branch by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3315
* Added `P_FRIENDSHIP_EVO_THRESHOLD` config to update the Friendship evolution threshold to Gen8+'s standard by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3376
* Debug Menu
* Added `ROM Space` Utility option to check ROM space by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3453
* Added `Toggle Match Call` Flag option to toggle Match Call by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3489
* Added `Move Reminder` option by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3707
* Moved Party/Boxes related functions to their own menu by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3707
* Added expansion Rom Header by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3550
* Added `BATTLE_PYRAMID_RANDOM_ENCOUNTERS` config to enable Battle Pyramid Wild Encounter randomization by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2581
* Added a `GetSpeciesPreEvolution` function by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3696
### Changed
* Converted `Get(Box)MonData2` to proper functions by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3416
* Added `src/data/map_group_count.h` to `.gitignore` by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3489
* Better documentation for Type Effectiveness table by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3374
* Generational defines now start at `GEN_1` instead of `GEN_3` by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3628
* Fixes and cleanup
* By @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3720
* By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3723
### Fixed
* Fixed potential Fly and Badge mismatch when using debug options by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3489
* Fixed Pokémon Animation debug menu ignoring animation delay by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3562
* Fixed `IS_DITTO` macro by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3558
* Added RTC failsafe to Debug menu's `Cheat Start` option by @ravepossum in https://github.com/rh-hideout/pokeemerald-expansion/pull/3561
## 🐉 Pokémon 🐉
### Added
* ***Added Generation 9 species up to Teal Mask*** by @leo60228, @AlexOn1ine, @katykat5099, @kittenchilly and @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3725
* By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3726
* By @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3727
* Reserved Form IDs that will be supported in future versions by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3547
* Tandemaus still does the evolution cutscene for now.
* Ported newer PokéCommunity sprites by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3643 and https://github.com/rh-hideout/pokeemerald-expansion/pull/3646
* Fixes and cleanup
* By @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3539
* By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3655 and https://github.com/rh-hideout/pokeemerald-expansion/pull/3749
* By @katykat5099 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3751
* ***Adjusted Pokemon sprites and palettes - Part 2*** by @CyanSMP64 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3612
* From Magnemite to Tangela + Hitmontop + Nidoking adjustment by MrDollSteak.
* Corrected sprite sizes and elevations
* Further palette adjustments by @CyanSMP64 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3744
* Pidgeotto, Tentacruel, Feraligatr, Furret, Flaaffy, Marill, Azumarill and Miltank.
* Added missing Alcremie forms by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3469
* Previously, only Strawberry Sweet forms were available
* Missing: Icons for non-Ruby Cream forms.
* Cleanup by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3488
* Added species define synonyms for base forms with form names by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3401
* Added `P_CUSTOM_GENDER_DIFF_ICONS` config to use custom female icon sprites for Pikachu and Wobbuffet by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3491
### Changed
* ***Species Simplifier™*** (Parts [1](https://github.com/rh-hideout/pokeemerald-expansion/pull/3544), [2](https://github.com/rh-hideout/pokeemerald-expansion/pull/3546) and [3](https://github.com/rh-hideout/pokeemerald-expansion/pull/3562))
* **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`.
* 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`.
* 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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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.
* 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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3729
* Fixes and cleanup
* By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3656
* By @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3698
* Updated `P_UPDATED_ABILITIES` Gen 9's config for Piplup's line, Gallade and Shiftry by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3458
* Applied missing uses of `PLACEHOLDER_ANIM_SINGLE_FRAME` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3562
* Renamed `PLACEHOLDER_TWO_FRAME_ANIMATION` to `PLACEHOLDER_ANIM_TWO_FRAMES` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3562
* Removed Old Unown Level Up Learnsets by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3369
* Dusk Ball and Form changes also use this function by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3585
* Added config for different times of day ranges by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3579
* Fixes and cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3648 and https://github.com/rh-hideout/pokeemerald-expansion/pull/3701
### Fixed
* Fixed Koffing and Weezing's abilities ignoring `P_UPDATED_ABILITIES` config and always using Gen8's config by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3353
* Fixed Pumpkaboo macro typo by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3541
* Multiple fixes by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3548
* Fixes Hisuian Sneasel's type order by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3706
## ⚔️ Battle General ⚔️ ##
### Added
* ***Dynamax*** by @AgustinGDLV and @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3581
* Fixes and cleanup
* By @AsparagusEduardo in
* https://github.com/rh-hideout/pokeemerald-expansion/pull/3435
* https://github.com/rh-hideout/pokeemerald-expansion/pull/3510
* https://github.com/rh-hideout/pokeemerald-expansion/pull/3713
* By @AlexOn1ine in
* https://github.com/rh-hideout/pokeemerald-expansion/pull/3464
* https://github.com/rh-hideout/pokeemerald-expansion/pull/3470
* https://github.com/rh-hideout/pokeemerald-expansion/pull/3541
* Added support for Sky Battles by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3714
* Effects that interact with grounded battlers do not happen in Sky Battles.
* Fix by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/3617
* Cleanup by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3621
* Added `B_TOXIC_REVERSAL` config to revert bad poison to regular poison at the end of battles by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3684
* Added `P_CATCH_CURVE` config that updates catch calculations to Gen 6+ by @AtariDreams in https://github.com/rh-hideout/pokeemerald-expansion/pull/3685
* Added Snow weather animation by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3440
* Added a `flushtextbox` macro to flush the text box in battles by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3442
### Changed
* Removed redundant Battle Types by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 `if`s by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3392
* Removed pointless for loop in CB2_InitBattleInternal by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3422
* Refactored Battle Frontier bans to check the base species by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3465
* Better support for adding new species.
* Also adds Gen4+ [Special Pokémon](https://bulbapedia.bulbagarden.net/wiki/Special_Pok%C3%A9mon) to the list.
* Obedience levels now increase per badge by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3607
### Fixed
* Fixed Psychic Terrain blocking moves that target all battler or all opponents by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3521
* Fixed issue with "Cycle through Poké Balls" feature not working properly by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3534
* Fixed Burmy not transforming at the end of battle if it didn't switch in during a Single Battle by @benicioneto in https://github.com/rh-hideout/pokeemerald-expansion/pull/3728
* Fixed Player Partner not playing its Shiny animation by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/3757
## 🤹 Moves 🤹
### Added
* Added Teal Mask Moves by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3402 + Tests
* Matcha Gotcha
* Syrup Bomb
* Animation by @SonikkuA-DatH and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3474
* Fixes by @AlexOn1ine in
* https://github.com/rh-hideout/pokeemerald-expansion/pull/3437
* https://github.com/rh-hideout/pokeemerald-expansion/pull/3552
* Ivy Cudgel
* Type is shown in interfaces by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3590
* Tweaks and fixes
* By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3721
* Fixed Ivy Cudgel test name by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3742
* Added Glaive Rush's effect by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3476
* Added Raging Bull's effect by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3552
* Added Chilly Reception's effect by @RapidNutcracker in https://github.com/rh-hideout/pokeemerald-expansion/pull/3379
* Added Rage Fist's effect by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3573
* Added define synonyms (eg. `MOVE_VICE_GRIP` vs the current `MOVE_VISE_GRIP`) by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3580
* Added combined Pledge move effects by @AlexOn1ine, @Skeli789 and @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3425
* Simplified Octolock script and converted its `various` to `callnative` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3437
* Added `CanAbilityPreventStatLoss` to centralize stat lowering immunities by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3437
* Fixed multiple abilities not showing the ability name in their message.
* Renamed `EFFECT_SMELLINGSALT` to `EFFECT_SMELLING_SALTS` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3504
* New move animations by @Captain-Ford and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3476
* Battle Dome points are now based on move data instead of being arbitrarily assigned by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3596
### Fixed
* Multiple Relic Song fixes by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3476
* Fixed Acid and Crunch move descriptions being updated by `B_UPDATED_MOVE_DATA` alongside their effects by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3586
* Fixed Howl buffing the user's ally if they have Soundproof by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3593
* Fixed Floral Healing not increasing its effect on Grassy Terrain + Tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3604
* Fixed Spirit Shackle/Anchor Shot not trapping the targets by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3668
* Fixed Defog not consuming PP if the foe has -6 evasion by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3668
* Fixed Mirror Coat being able to reflect Pain Split damage by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3668
* Fixed incorrect Fling damage calculation due to the item being removed before them by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3670
* Fixed Z-Moves using the base move's priority by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3690
* Fixed Metal Burst, Trump Card and Comeuppance not being considered as damaging moves by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3697
* Fixed Fiery Wrath animation bug that caused the user to flip upside down by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3739
* Fixed Baton Pass not passing Embargo's remaining turns by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3745
* Fixed Raging Fury not causing rampage on user by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3754
## 🎭 Abilities 🎭
### Added
* Added Opportunist + Tests by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2994
* Added Zero to Hero + Tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3542
* Fix by @AlexOn1ine https://github.com/rh-hideout/pokeemerald-expansion/pull/3552
* Added `B_ILLUMINATE_EFFECT` config for Illuminate's Gen9 effect by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3482
* Added `B_WEAK_ARMOR_SPEED` config for Weak Armor's Gen 5-6 effect by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3498
* Added `B_PROTEAN_LIBERO` config for Protean/Libero only triggering once per switch-in as of Gen 9 by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3614
* Added `B_INTREPID_SWORD` and `B_DAUNTLESS_SHIELD` configs for Intrepid Sword and Dauntless Sword only triggering once per battle by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3614
* Added configs for disabling ability overworld effects as of Gen 9 by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3480
### Fixed
* Fixed Synchronize not working with Gift Pokémon and scripted Wild Battles by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3480
* Fixed Anger Shell being triggered multiple times by multi-hit moves by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3508
* Fixed Absorbing abilities not cancelling multi-hit moves + Tests (eg. Sap Sipper vs Bullet Seed) by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3516
* Fixed issue that caused Shadow Tag to not work by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3549
* Fixed assumption that `gLastUsedAbility` is `u8` by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3569
* Fixes Protosynthesis and Quark Drive ability pop up appearing more than once by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3595
* Fixed Trace not triggering when switching in by secondary effects like U-Turn, Eject Pack or Explosion by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3623
* Fixed Defiant not being triggered by Cotton Down interaction by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3657
* Fixed self-targeted moves triggering Stamina, like Substitute by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3669
* Fixed Quick Draw not working properly by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3724
* Fixed Neutraling Gas switch-out combined with Electric Surge causing a visual glitch by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3746
* Fixed Innards Out damaging Pokémon with Magic Guard by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3758
* Fixed Innards Out damaging Pokémon despite being suppressed by Gastro Acid by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3758
## 🧶 Items 🧶
### Added
* Repeated Medicine usage by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3387
* Added Teal Mask items by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3349
* Sprites (except for Fairy Feather) by @hedara90 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3527
* Fairy Feather by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3520
* Sprite by [Anarlaurendil on Deviantart](https://www.deviantart.com/anarlaurendil/art/Fairy-Feather-pixel-art-icon-Pokemon-986417461).
* 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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3700
* Implemented support for Fusion items by @TeamAquasHideout and @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3602
* Fixes and cleanup
* By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3644
* By @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3692
* Ported pokefirered's Vs. Seeker by @Jaizu @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/3256
* Requires `I_VS_SEEKER_CHARGING` flag to be assigned.
* Cleanup by @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3718
* Added define synonyms (eg. `ITEM_STICK` vs the current `ITEM_LEEK`) by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3580
### Changed
* Removed unused holdEffectParam for items that double the amount of money gained in battle by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3528
* Using the name `Parcel` instead of `Oak's Parcel` by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3580
* Repel/Lure menu improvements @Jaizu and @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3509
* Fixed crash damage triggering Eject Button by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3669 and https://github.com/rh-hideout/pokeemerald-expansion/pull/3738
* Fixed Quick Claw not reading `holdEffectParam` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3737
* Fixed Life Orb causing recoil when swapped via Magician when it shouldn't by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3753
## 🤖 Battle AI 🤖
* Added AI Tests
* By @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3515
* AI won't use Solar Beam if there is no Sun up or the user is not holding Power Herb.
* By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3583
* AI chooses moves with secondary effect that have a 100% chance to trigger
* Cleanup by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3748
* Smarter SwitchAI Mon Choices + `HasBadOdds` Switch Check by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3557
### Changed
* By @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3199
* Using move flags instead of lists for AI calculations by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3389
* Remove redundant AI score increases by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3504
* Remove `GetMoveDamageResult` function by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3536
### Fixed
* Fixed AI randomly choosing moves if they're both super effective by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3361
## 🧹 Other Cleanup 🧹
* Remove all trailing whitespace (upcoming) by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3473
* Debug menu cleanup and documentation by @AsparagusEduardo and @sphericalice in https://github.com/rh-hideout/pokeemerald-expansion/pull/3390
* Removed `powerfulMoveEffects` array by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3515
* Added `-Woverride-init` Makefile flag that agbcc has by default by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3535
* Fixed static variable names by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3637
* Fixed config descriptions
* By @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3717
* Fixed mistmatching `gBattleTextBuff3` definitions by @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3719
## 🧪 Test Runner 🧪
### Added
* Added support for wild battle tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3342
* Added support for AI battle tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3361
* Experience tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3437
* Added Octolock tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3437
* Added Defiant/Sticky Web interaction test by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3516
* Added Embargo tests by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3555
* Added missing Hyper Cutter tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3437
* Added missing Anger Shell tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3508
* Added missing White Herb tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3611
* Added `SpeciesInfo` integrity tests by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3688
### Changed
* Moved battle tests off the heap by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/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 https://github.com/rh-hideout/pokeemerald-expansion/pull/3733
### Fixed
* Fixed VSCode error shenanigans when viewing tests by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3383
* Fixed broken move animations in test replays by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3398
* Performance improvement for test name matching by @jiangzhengwenjz in https://github.com/rh-hideout/pokeemerald-expansion/pull/3559
* Fixed Ice Heal test name typo by @AtariDreams in https://github.com/rh-hideout/pokeemerald-expansion/pull/3676
## 📦 Pret merges 📦
* 2023-10-02 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3372
* Slight RTC documentation + Evolution times constants (https://github.com/pret/pokeemerald/pull/1925)
* Add friendship evo threshold constant (https://github.com/pret/pokeemerald/pull/1928)
* Solved a bunch of -Wall errors on modern (https://github.com/pret/pokeemerald/pull/1926)
* 2023-10-27 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3471
* Add some task/sprite data defines (https://github.com/pret/pokeemerald/pull/1915)
* Fix mini_printf encoded string -Werror=pointer-sign warning (https://github.com/pret/pokeemerald/pull/1938)
* Remove all trailing whitespace (https://github.com/pret/pokeemerald/pull/1937)
* Use BUGFIX in assembly files (https://github.com/pret/pokeemerald/pull/1935)
* 2023-12-10 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3675
* Delete the redundant files generated after running build (https://github.com/pret/pokeemerald/pull/1944)
* Rename `EGG_GROUP_UNDISCOVERED` egg group to `EGG_GROUP_NO_EGGS_DISCOVERED` (https://github.com/pret/pokeemerald/pull/1939)
* Renamed `SendMonToPC` to `CopyMonToPC` (https://github.com/pret/pokeemerald/pull/1940)
* Document `datahpupdate` (https://github.com/pret/pokeemerald/pull/1936)
* Renamed `HITMARKER_IGNORE_SAFEGUARD` to `HITMARKER_STATUS_ABILITY_EFFECT` (https://github.com/pret/pokeemerald/pull/1959)
* Moved files (https://github.com/pret/pokeemerald/pull/1953)
* Spinda Spots
* JP Fonts
* `redyellowgreen_frame.bin`
* [Build System Rewrite] Linkerscript now tracks RAM/ROM usage (https://github.com/pret/pokeemerald/pull/1952)
* Fixed ld_script.ld artifact from a previous pret version by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3731
* Updated the size of the `struct InGameTrade`'s `otName` variable (https://github.com/pret/pokeemerald/pull/1962)
<!-- BELOW IS ALL THAT HASN'T BEEN SORTED-->
## New Contributors
* @Petuuuhhh made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3387
* @katykat5099 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3426
* @leo60228 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3249
* @hedara90 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3527
* @jiangzhengwenjz made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3559
* @ravepossum made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3561
* @RapidNutcracker made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3379
* @GraionDilach made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3624
* @AtariDreams made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3676
**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.6.2...expansion/1.7.0
<!--Last PR: 3697-->

View file

@ -59,6 +59,7 @@ struct ResourceFlags
#define RESOURCE_FLAG_TRACED 0x10
#define RESOURCE_FLAG_EMERGENCY_EXIT 0x20
#define RESOURCE_FLAG_NEUTRALIZING_GAS 0x40
#define RESOURCE_FLAG_ICE_FACE 0x80
struct DisableStruct
{

View file

@ -1671,24 +1671,66 @@
#define SPECIES_1025 GEN9_START + 146
#define PLACEHOLDER_START SPECIES_1025
// XD: Gale of Darkness
#define SPECIES_LUGIA_SHADOW PLACEHOLDER_START + 1
// Diamond & Pearl
#define SPECIES_MOTHIM_SANDY_CLOAK PLACEHOLDER_START + 2
#define SPECIES_MOTHIM_TRASH_CLOAK PLACEHOLDER_START + 3
// X & Y
#define SPECIES_SCATTERBUG_POLAR PLACEHOLDER_START + 4
#define SPECIES_SCATTERBUG_TUNDRA PLACEHOLDER_START + 5
#define SPECIES_SCATTERBUG_CONTINENTAL PLACEHOLDER_START + 6
#define SPECIES_SCATTERBUG_GARDEN PLACEHOLDER_START + 7
#define SPECIES_SCATTERBUG_ELEGANT PLACEHOLDER_START + 8
#define SPECIES_SCATTERBUG_MEADOW PLACEHOLDER_START + 9
#define SPECIES_SCATTERBUG_MODERN PLACEHOLDER_START + 10
#define SPECIES_SCATTERBUG_MARINE PLACEHOLDER_START + 11
#define SPECIES_SCATTERBUG_ARCHIPELAGO PLACEHOLDER_START + 12
#define SPECIES_SCATTERBUG_HIGH_PLAINS PLACEHOLDER_START + 13
#define SPECIES_SCATTERBUG_SANDSTORM PLACEHOLDER_START + 14
#define SPECIES_SCATTERBUG_RIVER PLACEHOLDER_START + 15
#define SPECIES_SCATTERBUG_MONSOON PLACEHOLDER_START + 16
#define SPECIES_SCATTERBUG_SAVANNA PLACEHOLDER_START + 17
#define SPECIES_SCATTERBUG_SUN PLACEHOLDER_START + 18
#define SPECIES_SCATTERBUG_OCEAN PLACEHOLDER_START + 19
#define SPECIES_SCATTERBUG_JUNGLE PLACEHOLDER_START + 20
#define SPECIES_SCATTERBUG_FANCY PLACEHOLDER_START + 21
#define SPECIES_SCATTERBUG_POKE_BALL PLACEHOLDER_START + 22
#define SPECIES_SPEWPA_POLAR PLACEHOLDER_START + 23
#define SPECIES_SPEWPA_TUNDRA PLACEHOLDER_START + 24
#define SPECIES_SPEWPA_CONTINENTAL PLACEHOLDER_START + 25
#define SPECIES_SPEWPA_GARDEN PLACEHOLDER_START + 26
#define SPECIES_SPEWPA_ELEGANT PLACEHOLDER_START + 27
#define SPECIES_SPEWPA_MEADOW PLACEHOLDER_START + 28
#define SPECIES_SPEWPA_MODERN PLACEHOLDER_START + 29
#define SPECIES_SPEWPA_MARINE PLACEHOLDER_START + 30
#define SPECIES_SPEWPA_ARCHIPELAGO PLACEHOLDER_START + 31
#define SPECIES_SPEWPA_HIGH_PLAINS PLACEHOLDER_START + 32
#define SPECIES_SPEWPA_SANDSTORM PLACEHOLDER_START + 33
#define SPECIES_SPEWPA_RIVER PLACEHOLDER_START + 34
#define SPECIES_SPEWPA_MONSOON PLACEHOLDER_START + 35
#define SPECIES_SPEWPA_SAVANNA PLACEHOLDER_START + 36
#define SPECIES_SPEWPA_SUN PLACEHOLDER_START + 37
#define SPECIES_SPEWPA_OCEAN PLACEHOLDER_START + 38
#define SPECIES_SPEWPA_JUNGLE PLACEHOLDER_START + 39
#define SPECIES_SPEWPA_FANCY PLACEHOLDER_START + 40
#define SPECIES_SPEWPA_POKE_BALL PLACEHOLDER_START + 41
// Sun & Moon
#define SPECIES_RATICATE_ALOLAN_TOTEM PLACEHOLDER_START + 2
#define SPECIES_GUMSHOOS_TOTEM PLACEHOLDER_START + 3
#define SPECIES_VIKAVOLT_TOTEM PLACEHOLDER_START + 4
#define SPECIES_LURANTIS_TOTEM PLACEHOLDER_START + 5
#define SPECIES_SALAZZLE_TOTEM PLACEHOLDER_START + 6
#define SPECIES_MIMIKYU_TOTEM PLACEHOLDER_START + 7
#define SPECIES_KOMMO_O_TOTEM PLACEHOLDER_START + 8
#define SPECIES_RATICATE_ALOLAN_TOTEM PLACEHOLDER_START + 42
#define SPECIES_GUMSHOOS_TOTEM PLACEHOLDER_START + 43
#define SPECIES_VIKAVOLT_TOTEM PLACEHOLDER_START + 44
#define SPECIES_LURANTIS_TOTEM PLACEHOLDER_START + 45
#define SPECIES_SALAZZLE_TOTEM PLACEHOLDER_START + 46
#define SPECIES_MIMIKYU_TOTEM PLACEHOLDER_START + 47
#define SPECIES_KOMMO_O_TOTEM PLACEHOLDER_START + 48
// Ultra Sun & Ultra Moon
#define SPECIES_MAROWAK_ALOLAN_TOTEM PLACEHOLDER_START + 9
#define SPECIES_RIBOMBEE_TOTEM PLACEHOLDER_START + 10
#define SPECIES_ARAQUANID_TOTEM PLACEHOLDER_START + 11
#define SPECIES_TOGEDEMARU_TOTEM PLACEHOLDER_START + 12
#define SPECIES_PIKACHU_PARTNER PLACEHOLDER_START + 13
#define SPECIES_EEVEE_PARTNER PLACEHOLDER_START + 14
#define SPECIES_MAROWAK_ALOLAN_TOTEM PLACEHOLDER_START + 49
#define SPECIES_RIBOMBEE_TOTEM PLACEHOLDER_START + 50
#define SPECIES_ARAQUANID_TOTEM PLACEHOLDER_START + 51
#define SPECIES_TOGEDEMARU_TOTEM PLACEHOLDER_START + 52
// Let's Go Pikachu & Let's Go Eevee
#define SPECIES_PIKACHU_PARTNER PLACEHOLDER_START + 53
#define SPECIES_EEVEE_PARTNER PLACEHOLDER_START + 54
#define GIGANTAMAX_START SPECIES_EEVEE_PARTNER

View file

@ -1063,7 +1063,7 @@ void ValidateFinally(u32 sourceLine);
{ \
s32 _a = (a), _m = (m), _b = (b); \
s32 _am = Q_4_12_TO_INT(_a * _m); \
s32 _t = Q_4_12_TO_INT(abs(_m) + Q_4_12_ROUND); \
s32 _t = max(Q_4_12_TO_INT(abs(_m) + Q_4_12_ROUND), 1); \
if (abs(_am-_b) > _t) \
Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: EXPECT_MUL_EQ(%d, %q, %d) failed: %d not in [%d..%d]", gTestRunnerState.test->filename, __LINE__, _a, _m, _b, _am, _b-_t, _b+_t); \
} while (0)

View file

@ -1559,6 +1559,14 @@ static bool32 AccuracyCalcHelper(u16 move)
RecordAbilityBattle(gBattlerTarget, ABILITY_NO_GUARD);
return TRUE;
}
// If the target is under the effects of Telekinesis, and the move isn't a OH-KO move, move hits.
else if (gStatuses3[gBattlerTarget] & STATUS3_TELEKINESIS
&& !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE)
&& gBattleMoves[move].effect != EFFECT_OHKO)
{
JumpIfMoveFailed(7, move);
return TRUE;
}
if (gBattleStruct->zmove.active && !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE))
{
@ -2008,6 +2016,16 @@ static void Cmd_adjustdamage(void)
gBattleStruct->enduredDamage |= gBitTable[gBattlerTarget];
goto END;
}
if (GetBattlerAbility(gBattlerTarget) == ABILITY_ICE_FACE && IS_MOVE_PHYSICAL(gCurrentMove) && gBattleMons[gBattlerTarget].species == SPECIES_EISCUE)
{
// Damage deals typeless 0 HP.
gMoveResultFlags &= ~(MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE);
gBattleMoveDamage = 0;
RecordAbilityBattle(gBattlerTarget, ABILITY_ICE_FACE);
gBattleResources->flags->flags[gBattlerTarget] |= RESOURCE_FLAG_ICE_FACE;
// Form change will be done after attack animation in Cmd_resultmessage.
goto END;
}
if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage)
goto END;
@ -2475,6 +2493,17 @@ static void Cmd_resultmessage(void)
if (gBattleControllerExecFlags)
return;
// Do Ice Face form change which was set up in Cmd_adjustdamage.
if (gBattleResources->flags->flags[gBattlerTarget] & RESOURCE_FLAG_ICE_FACE)
{
gBattleResources->flags->flags[gBattlerTarget] &= ~(RESOURCE_FLAG_ICE_FACE);
gBattleMons[gBattlerTarget].species = SPECIES_EISCUE_NOICE_FACE;
gBattleScripting.battler = gBattlerTarget; // For STRINGID_PKMNTRANSFORMED
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_IceFaceNullsDamage;
return;
}
if (gMoveResultFlags & MOVE_RESULT_MISSED && (!(gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE) || gBattleCommunication[MISS_TYPE] > B_MSG_AVOIDED_ATK))
{
if (gBattleCommunication[MISS_TYPE] > B_MSG_AVOIDED_ATK) // Wonder Guard or Levitate - show the ability pop-up
@ -8263,8 +8292,7 @@ static bool32 IsRototillerAffected(u32 battler)
return TRUE;
}
static bool32 IsAbilityRodAffected(void)
static bool32 IsElectricAbilityAffected(u32 ability)
{
u32 moveType;
@ -8275,41 +8303,7 @@ static bool32 IsAbilityRodAffected(void)
else
moveType = gBattleMoves[gCurrentMove].type;
if (moveType == TYPE_ELECTRIC && GetBattlerAbility(gBattlerTarget) == ABILITY_LIGHTNING_ROD)
return TRUE;
else
return FALSE;
}
static bool32 IsAbilityMotorAffected(void)
{
u32 moveType;
if (gBattleStruct->dynamicMoveType == 0)
moveType = gBattleMoves[gCurrentMove].type;
else if (!(gBattleStruct->dynamicMoveType & F_DYNAMIC_TYPE_IGNORE_PHYSICALITY))
moveType = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK;
else
moveType = gBattleMoves[gCurrentMove].type;
if (moveType == TYPE_ELECTRIC && GetBattlerAbility(gBattlerTarget) == ABILITY_MOTOR_DRIVE)
return TRUE;
else
return FALSE;
}
static bool32 IsAbilityAbsorbAffected(void)
{
u32 moveType;
if (gBattleStruct->dynamicMoveType == 0)
moveType = gBattleMoves[gCurrentMove].type;
else if (!(gBattleStruct->dynamicMoveType & F_DYNAMIC_TYPE_IGNORE_PHYSICALITY))
moveType = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK;
else
moveType = gBattleMoves[gCurrentMove].type;
if (moveType == TYPE_ELECTRIC && GetBattlerAbility(gBattlerTarget) == ABILITY_VOLT_ABSORB)
if (moveType == TYPE_ELECTRIC && GetBattlerAbility(gBattlerTarget) == ability)
return TRUE;
else
return FALSE;
@ -9521,7 +9515,7 @@ static void Cmd_various(void)
case VARIOUS_TRY_INSTRUCT:
{
VARIOUS_ARGS(const u8 *failInstr);
u16 move = gLastMoves[gBattlerTarget];
u16 move = gLastPrintedMoves[gBattlerTarget];
if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || gBattleMoves[move].effect == EFFECT_RECHARGE
|| gBattleMoves[move].instructBanned || gBattleMoves[move].twoTurnMove || IsDynamaxed(gBattlerTarget))
{
@ -9531,7 +9525,7 @@ static void Cmd_various(void)
{
gSpecialStatuses[gBattlerTarget].instructedChosenTarget = *(gBattleStruct->moveTarget + gBattlerTarget) | 0x4;
gBattlerAttacker = gBattlerTarget;
gCalledMove = gLastMoves[gBattlerAttacker];
gCalledMove = move;
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (gBattleMons[gBattlerAttacker].moves[i] == gCalledMove)
@ -16054,7 +16048,7 @@ void BS_JumpIfEmergencyExited(void)
void BS_JumpIfRod(void)
{
NATIVE_ARGS(const u8 *jumpInstr);
if (IsAbilityRodAffected())
if (IsElectricAbilityAffected(ABILITY_LIGHTNING_ROD))
gBattlescriptCurrInstr = cmd->jumpInstr;
else
gBattlescriptCurrInstr = cmd->nextInstr;
@ -16063,7 +16057,7 @@ void BS_JumpIfRod(void)
void BS_JumpIfAbsorb(void)
{
NATIVE_ARGS(const u8 *jumpInstr);
if (IsAbilityAbsorbAffected())
if (IsElectricAbilityAffected(ABILITY_VOLT_ABSORB))
gBattlescriptCurrInstr = cmd->jumpInstr;
else
gBattlescriptCurrInstr = cmd->nextInstr;
@ -16072,7 +16066,7 @@ void BS_JumpIfAbsorb(void)
void BS_JumpIfMotor(void)
{
NATIVE_ARGS(const u8 *jumpInstr);
if (IsAbilityMotorAffected())
if (IsElectricAbilityAffected(ABILITY_MOTOR_DRIVE))
gBattlescriptCurrInstr = cmd->jumpInstr;
else
gBattlescriptCurrInstr = cmd->nextInstr;

View file

@ -4474,6 +4474,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
if (!gSpecialStatuses[battler].switchInAbilityDone)
{
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
gBattlerAttacker = battler;
BattleScriptPushCursorAndCallback(BattleScript_FriskActivates); // Try activate
effect++;
}
@ -5043,7 +5044,9 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
gBattlescriptCurrInstr = BattleScript_DazzlingProtected;
effect = 1;
}
else if (BlocksPrankster(move, gBattlerAttacker, gBattlerTarget, TRUE) && !(IS_MOVE_STATUS(move) && targetAbility == ABILITY_MAGIC_BOUNCE))
else if (GetChosenMovePriority(gBattlerAttacker) > 0
&& BlocksPrankster(move, gBattlerAttacker, gBattlerTarget, TRUE)
&& !(IS_MOVE_STATUS(move) && (targetAbility == ABILITY_MAGIC_BOUNCE || gProtectStructs[gBattlerTarget].bounceMove)))
{
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE) || !(moveTarget & (MOVE_TARGET_BOTH | MOVE_TARGET_FOES_AND_ALLY)))
CancelMultiTurnMoves(gBattlerAttacker); // Don't cancel moves that can hit two targets bc one target might not be protected
@ -5060,15 +5063,6 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
gBattlescriptCurrInstr = BattleScript_GoodAsGoldActivates;
effect = 1;
}
else if (gLastUsedAbility == ABILITY_ICE_FACE && IS_MOVE_PHYSICAL(move) && gBattleMons[gBattlerTarget].species == SPECIES_EISCUE_ICE_FACE)
{
gBattleMons[gBattlerTarget].species = SPECIES_EISCUE_NOICE_FACE;
if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)
gHitMarker |= HITMARKER_NO_PPDEDUCT;
gBattleScripting.battler = gBattlerTarget; // For STRINGID_PKMNTRANSFORMED
gBattlescriptCurrInstr = BattleScript_IceFaceNullsDamage;
effect = 1;
}
break;
}
case ABILITYEFFECT_ABSORBING: // 3
@ -5079,7 +5073,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
switch (gLastUsedAbility)
{
case ABILITY_VOLT_ABSORB:
if (moveType == TYPE_ELECTRIC)
if (moveType == TYPE_ELECTRIC && gBattleMoves[move].target != MOVE_TARGET_ALL_BATTLERS)
effect = 1;
break;
case ABILITY_WATER_ABSORB:
@ -5088,11 +5082,11 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
effect = 1;
break;
case ABILITY_MOTOR_DRIVE:
if (moveType == TYPE_ELECTRIC)
if (moveType == TYPE_ELECTRIC && gBattleMoves[move].target != MOVE_TARGET_ALL_BATTLERS)
effect = 2, statId = STAT_SPEED;
break;
case ABILITY_LIGHTNING_ROD:
if (moveType == TYPE_ELECTRIC)
if (moveType == TYPE_ELECTRIC && gBattleMoves[move].target != MOVE_TARGET_ALL_BATTLERS)
effect = 2, statId = STAT_SPATK;
break;
case ABILITY_STORM_DRAIN:

View file

@ -0,0 +1,82 @@
#include "global.h"
#include "test/battle.h"
DOUBLE_BATTLE_TEST("Frisk does not trigger when pokemon hold no items")
{
GIVEN {
PLAYER(SPECIES_FURRET) { Ability(ABILITY_FRISK); };
PLAYER(SPECIES_FURRET) { Ability(ABILITY_FRISK); };
OPPONENT(SPECIES_SENTRET) { Ability(ABILITY_FRISK); };
OPPONENT(SPECIES_SENTRET) { Ability(ABILITY_FRISK); };
} WHEN {
TURN { ; }
} SCENE {
NONE_OF {
ABILITY_POPUP(playerLeft, ABILITY_FRISK);
ABILITY_POPUP(playerRight, ABILITY_FRISK);
ABILITY_POPUP(opponentLeft, ABILITY_FRISK);
ABILITY_POPUP(opponentRight, ABILITY_FRISK);
}
}
}
SINGLE_BATTLE_TEST("Frisk triggers in a Single Battle")
{
GIVEN {
PLAYER(SPECIES_FURRET) { Ability(ABILITY_FRISK); Item(ITEM_POTION); };
OPPONENT(SPECIES_SENTRET) { Ability(ABILITY_FRISK); Item(ITEM_POTION); };
} WHEN {
TURN { ; }
} SCENE {
ABILITY_POPUP(player, ABILITY_FRISK);
MESSAGE("Furret frisked Foe Sentret and found its Potion!");
ABILITY_POPUP(opponent, ABILITY_FRISK);
MESSAGE("Foe Sentret frisked Furret and found its Potion!");
}
}
DOUBLE_BATTLE_TEST("Frisk triggers for player in a Double Battle after switching-in after fainting")
{
bool32 targetLeft;
PARAMETRIZE { targetLeft = TRUE; }
PARAMETRIZE { targetLeft = FALSE; }
GIVEN {
ASSUME(gBattleMoves[MOVE_POUND].power != 0);
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
PLAYER(SPECIES_FURRET) { Ability(ABILITY_FRISK); };
OPPONENT(SPECIES_WYNAUT) { Item(ITEM_POTION); }
OPPONENT(SPECIES_WYNAUT);
} WHEN {
TURN { MOVE(opponentLeft, MOVE_POUND, target: targetLeft ? playerLeft : playerRight); SEND_OUT(targetLeft ? playerLeft : playerRight, 2); }
} SCENE {
MESSAGE("Foe Wynaut used Pound!");
MESSAGE("Wobbuffet fainted!");
ABILITY_POPUP(targetLeft ? playerLeft : playerRight, ABILITY_FRISK);
MESSAGE("Furret frisked Foe Wynaut and found its Potion!");
}
}
DOUBLE_BATTLE_TEST("Frisk triggers for opponent in a Double Battle after switching-in after fainting")
{
bool32 targetLeft;
PARAMETRIZE { targetLeft = TRUE; }
PARAMETRIZE { targetLeft = FALSE; }
GIVEN {
ASSUME(gBattleMoves[MOVE_POUND].power != 0);
PLAYER(SPECIES_WYNAUT) { Item(ITEM_POTION); }
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
OPPONENT(SPECIES_FURRET) { Ability(ABILITY_FRISK); };
} WHEN {
TURN { MOVE(playerLeft, MOVE_POUND, target: targetLeft ? opponentLeft : opponentRight); SEND_OUT(targetLeft ? opponentLeft : opponentRight, 2); }
} SCENE {
MESSAGE("Wynaut used Pound!");
MESSAGE("Foe Wobbuffet fainted!");
ABILITY_POPUP(targetLeft ? opponentLeft : opponentRight, ABILITY_FRISK);
MESSAGE("Foe Furret frisked Wynaut and found its Potion!");
}
}

View file

@ -1,29 +1,222 @@
#include "global.h"
#include "test/battle.h"
ASSUMPTIONS
{
ASSUME(gSpeciesInfo[SPECIES_UMBREON].types[0] == TYPE_DARK);
ASSUME(gBattleMoves[MOVE_CONFUSE_RAY].split == SPLIT_STATUS);
}
SINGLE_BATTLE_TEST("Prankster-affected moves don't affect Dark-type Pokémon")
{
GIVEN {
ASSUME(gSpeciesInfo[SPECIES_UMBREON].types[0] == TYPE_DARK);
PLAYER(SPECIES_UMBREON);
OPPONENT(SPECIES_MURKROW) { Ability(ABILITY_PRANKSTER); }
OPPONENT(SPECIES_VOLBEAT) { Ability(ABILITY_PRANKSTER); }
} WHEN {
TURN { MOVE(opponent, MOVE_CONFUSE_RAY); }
} SCENE {
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player);
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, opponent);
MESSAGE("It doesn't affect Umbreon…");
}
}
TO_DO_BATTLE_TEST("Prankster-affected moves affect Ally Dark-type Pokémon")
TO_DO_BATTLE_TEST("Prankster-affected moves called via Assist don't affect Dark-type Pokémon");
SINGLE_BATTLE_TEST("Prankster-affected moves don't affect Dark-type Pokémon after they switch-in")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_UMBREON);
OPPONENT(SPECIES_VOLBEAT) { Ability(ABILITY_PRANKSTER); }
} WHEN {
TURN { SWITCH(player, 1); MOVE(opponent, MOVE_CONFUSE_RAY); }
} SCENE {
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, opponent);
MESSAGE("It doesn't affect Umbreon…");
}
}
DOUBLE_BATTLE_TEST("Prankster-affected moves affect Ally Dark-type Pokémon")
{
GIVEN {
PLAYER(SPECIES_VOLBEAT) { Ability(ABILITY_PRANKSTER); }
PLAYER(SPECIES_UMBREON);
OPPONENT(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(playerLeft, MOVE_CONFUSE_RAY, target: playerRight); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, playerLeft);
NOT MESSAGE("It doesn't affect Umbreon…");
}
}
SINGLE_BATTLE_TEST("Prankster-affected moves called via Assist don't affect Dark-type Pokémon")
{
GIVEN {
PLAYER(SPECIES_UMBREON);
OPPONENT(SPECIES_VOLBEAT) { Ability(ABILITY_PRANKSTER); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CONFUSE_RAY); };
} WHEN {
TURN { MOVE(opponent, MOVE_ASSIST); }
} SCENE {
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, opponent);
MESSAGE("It doesn't affect Umbreon…");
}
}
// Tested on Showdown, even though Bulbapedia says otherwise.
DOUBLE_BATTLE_TEST("Prankster-affected moves called via Instruct do not affect Dark-type Pokémon")
{
GIVEN {
PLAYER(SPECIES_VOLBEAT) { Speed(20); Ability(ABILITY_PRANKSTER); }
PLAYER(SPECIES_WOBBUFFET) { Speed(10);}
OPPONENT(SPECIES_UMBREON) { Speed(1); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(1); }
} WHEN {
TURN { MOVE(playerLeft, MOVE_CONFUSE_RAY, target: opponentLeft);
MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft);
}
} SCENE {
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, playerLeft);
MESSAGE("It doesn't affect Foe Umbreon…");
MESSAGE("Wobbuffet used Instruct!");
MESSAGE("Volbeat used Confuse Ray!");
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, playerLeft);
MESSAGE("It doesn't affect Foe Umbreon…");
}
}
SINGLE_BATTLE_TEST("Prankster increases the priority of moves by 1")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { Speed(10); }
OPPONENT(SPECIES_VOLBEAT) { Speed(5); Ability(ABILITY_PRANKSTER); }
} WHEN {
TURN { MOVE(opponent, MOVE_CONFUSE_RAY); MOVE(player, MOVE_CELEBRATE, WITH_RNG(RNG_CONFUSION, FALSE)); } // RNG_CONFUSION so that Wobb doesn't hit itself.
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, opponent);
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
}
}
DOUBLE_BATTLE_TEST("Moves called via Prankster-affected After you affect Dark-type Pokémon")
{
GIVEN {
PLAYER(SPECIES_VOLBEAT) { Speed(1); Ability(ABILITY_PRANKSTER); }
PLAYER(SPECIES_WOBBUFFET) { Speed(1);}
OPPONENT(SPECIES_UMBREON) { Speed(10); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(10); }
} WHEN {
TURN { MOVE(playerLeft, MOVE_AFTER_YOU, target: playerRight);
MOVE(playerRight, MOVE_CONFUSE_RAY, target: opponentLeft);
}
} SCENE {
MESSAGE("Volbeat used After You!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_AFTER_YOU, playerLeft);
MESSAGE("Wobbuffet used Confuse Ray!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, playerRight);
MESSAGE("Foe Umbreon became confused!");
}
}
SINGLE_BATTLE_TEST("Prankster is blocked by Quick Guard in Gen5+")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_VOLBEAT) { Ability(ABILITY_PRANKSTER); }
} WHEN {
TURN { MOVE(player, MOVE_QUICK_GUARD); MOVE(opponent, MOVE_CONFUSE_RAY); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_GUARD, player);
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, opponent);
MESSAGE("Wobbuffet protected itself!");
}
}
DOUBLE_BATTLE_TEST("Prankster-affected moves that target all Pokémon are successful regardless of the presence of Dark-type Pokémon")
{
GIVEN {
ASSUME(gBattleMoves[MOVE_CAPTIVATE].target == MOVE_TARGET_BOTH);
PLAYER(SPECIES_VOLBEAT) { Ability(ABILITY_PRANKSTER); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_UMBREON);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(playerLeft, MOVE_CAPTIVATE); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_CAPTIVATE, playerLeft);
}
}
SINGLE_BATTLE_TEST("Prankster-affected moves can still be bounced back by Dark-types using Magic Coat")
{
GIVEN {
PLAYER(SPECIES_UMBREON);
OPPONENT(SPECIES_VOLBEAT) { Ability(ABILITY_PRANKSTER); }
} WHEN {
TURN { MOVE(player, MOVE_MAGIC_COAT); MOVE(opponent, MOVE_CONFUSE_RAY); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_MAGIC_COAT, player);
MESSAGE("Foe Volbeat used Confuse Ray!");
MESSAGE("Foe Volbeat's Confuse Ray was bounced back by MAGIC COAT!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player);
MESSAGE("Foe Volbeat became confused!");
}
}
SINGLE_BATTLE_TEST("Prankster-affected moves which are reflected by Magic Coat can affect Dark-type Pokémon, unless the Pokémon that bounced the move also has Prankster")
{
u16 sableyeAbility;
PARAMETRIZE { sableyeAbility = ABILITY_PRANKSTER; }
PARAMETRIZE { sableyeAbility = ABILITY_KEEN_EYE; }
GIVEN {
PLAYER(SPECIES_SABLEYE) { Ability(sableyeAbility); }
OPPONENT(SPECIES_MURKROW) { Ability(ABILITY_PRANKSTER); }
} WHEN {
TURN { MOVE(player, MOVE_MAGIC_COAT); MOVE(opponent, MOVE_CONFUSE_RAY); }
} SCENE {
MESSAGE("Sableye used Magic Coat!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_MAGIC_COAT, player);
MESSAGE("Foe Murkrow used Confuse Ray!");
MESSAGE("Foe Murkrow's Confuse Ray was bounced back by MAGIC COAT!");
if (sableyeAbility == ABILITY_PRANKSTER) {
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player);
MESSAGE("It doesn't affect Foe Murkrow…");
} else {
ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player);
MESSAGE("Foe Murkrow became confused!");
}
}
}
SINGLE_BATTLE_TEST("Prankster-affected moves can still be bounced back by a Dark-type with Magic Bounce")
{
GIVEN {
PLAYER(SPECIES_ABSOL) { Item(ITEM_ABSOLITE); }
OPPONENT(SPECIES_VOLBEAT) { Ability(ABILITY_PRANKSTER); }
} WHEN {
TURN { MOVE(player, MOVE_CELEBRATE, megaEvolve: TRUE); MOVE(opponent, MOVE_CONFUSE_RAY); }
} SCENE {
MESSAGE("Foe Volbeat's Confuse Ray was bounced back by Absol's Magic Bounce!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player);
}
}
SINGLE_BATTLE_TEST("Prankster-affected moves that are bounced back by Magic Bounce can affect Dark-type Pokémon")
{
GIVEN {
PLAYER(SPECIES_ABSOL) { Item(ITEM_ABSOLITE); }
OPPONENT(SPECIES_MURKROW) { Ability(ABILITY_PRANKSTER); }
} WHEN {
TURN { MOVE(player, MOVE_CELEBRATE, megaEvolve: TRUE); MOVE(opponent, MOVE_CONFUSE_RAY); }
} SCENE {
MESSAGE("Foe Murkrow's Confuse Ray was bounced back by Absol's Magic Bounce!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player);
MESSAGE("Foe Murkrow became confused!");
}
}
TO_DO_BATTLE_TEST("Prankster-affected moves called via Nature Power don't affect Dark-type Pokémon");
TO_DO_BATTLE_TEST("Prankster-affected moves called via Instruct affect Dark-type Pokémon");
TO_DO_BATTLE_TEST("Prankster-affected moves called via After you affect Dark-type Pokémon");
TO_DO_BATTLE_TEST("Prankster-affected moves that are bounced back by Magic Bounce/Coat can affect Dark-type Pokémon");
TO_DO_BATTLE_TEST("Prankster-affected moves that are bounced back by Magic Coat from a Pokémon with Prankster can't affect Dark-type Pokémon");
TO_DO_BATTLE_TEST("Prankster-affected moves that target all Pokémon are successful regardless of the presence of Dark-type Pokémon");
TO_DO_BATTLE_TEST("Prankster-affected move effects don't affect Dark-type Pokémon");
TO_DO_BATTLE_TEST("Prankster increases the priority of moves by 1");
TO_DO_BATTLE_TEST("Prankster increases the priority of status Z-Moves by 1");
TO_DO_BATTLE_TEST("Prankster increases the priority of Extreme Evoboost by 1");
TO_DO_BATTLE_TEST("Prankster is blocked by Quick Guard in Gen5+");

View file

@ -94,3 +94,21 @@ SINGLE_BATTLE_TEST("U-turn switches the user out if Wimp Out fails to activate")
MESSAGE("Your foe's weak! Get 'em, Wynaut!");
}
}
SINGLE_BATTLE_TEST("U-turn switches the user out after Ice Face activates")
{
GIVEN {
ASSUME(P_GEN_8_POKEMON == TRUE);
PLAYER(SPECIES_BEEDRILL);
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_EISCUE) { Ability(ABILITY_ICE_FACE); }
} WHEN {
TURN { MOVE(player, MOVE_U_TURN); SEND_OUT(player, 1); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player);
HP_BAR(opponent);
ABILITY_POPUP(opponent, ABILITY_ICE_FACE);
MESSAGE("Foe Eiscue transformed!");
MESSAGE("Go! Wynaut!");
}
}

View file

@ -0,0 +1,65 @@
#include "global.h"
#include "test/battle.h"
ASSUMPTIONS
{
ASSUME(gBattleMoves[MOVE_ION_DELUGE].effect == EFFECT_ION_DELUGE);
}
// For some reason SINGLE_BATTLE_TEST didn't catch these two issues.
WILD_BATTLE_TEST("Ion Deluge works the same way as always when used by a mon with Volt Absorb")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_LANTURN) { Ability(ABILITY_VOLT_ABSORB); HP(1); }
} WHEN {
TURN { MOVE(opponent, MOVE_ION_DELUGE); }
} SCENE {
MESSAGE("Wild Lanturn used Ion Deluge!");
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_VOLT_ABSORB);
HP_BAR(opponent);
MESSAGE("Wild Lanturn restored HP using its Volt Absorb!");
}
MESSAGE("A deluge of ions showers the battlefield!");
}
}
WILD_BATTLE_TEST("Ion Deluge works the same way as always when used by a mon with Lightning Rod / Motor Drive")
{
u16 ability;
PARAMETRIZE { ability = ABILITY_LIGHTNING_ROD; }
PARAMETRIZE { ability = ABILITY_MOTOR_DRIVE; }
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_ZEBSTRIKA) { Ability(ability); }
} WHEN {
TURN { MOVE(opponent, MOVE_ION_DELUGE); }
} SCENE {
MESSAGE("Wild Zebstrika used Ion Deluge!");
NONE_OF {
ABILITY_POPUP(opponent, ability);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Wild Zebstrika's Sp.Atk rose!");
MESSAGE("Wild Zebstrika's Speed rose!");
}
MESSAGE("A deluge of ions showers the battlefield!");
}
}
SINGLE_BATTLE_TEST("Ion Deluge makes Normal type moves Electric type")
{
GIVEN {
ASSUME(gBattleMoves[MOVE_TACKLE].type == TYPE_NORMAL);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_GOLBAT);
} WHEN {
TURN { MOVE(opponent, MOVE_ION_DELUGE); MOVE(player, MOVE_TACKLE); }
} SCENE {
MESSAGE("Foe Golbat used Ion Deluge!");
MESSAGE("A deluge of ions showers the battlefield!");
MESSAGE("Wobbuffet used Tackle!");
MESSAGE("It's super effective!"); // Because Tackle is now electric type.
}
}

View file

@ -415,7 +415,6 @@ SINGLE_BATTLE_TEST("Roost does not suppress the ungrounded effect of Magnet Rise
SINGLE_BATTLE_TEST("Roost does not suppress the ungrounded effect of Telekinesis")
{
KNOWN_FAILING; // Telekinesis currently says the pokemon was identified
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
OPPONENT(SPECIES_WOBBUFFET);

View file

@ -0,0 +1,70 @@
#include "global.h"
#include "test/battle.h"
ASSUMPTIONS
{
ASSUME(gBattleMoves[MOVE_TELEKINESIS].effect == EFFECT_TELEKINESIS);
}
SINGLE_BATTLE_TEST("Telekinesis makes the target unable to avoid any attacks made against it")
{
GIVEN {
ASSUME(gBattleMoves[MOVE_MINIMIZE].effect == EFFECT_MINIMIZE); // Raises evs by 2
ASSUME(gBattleMoves[MOVE_SCREECH].accuracy < 100);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WYNAUT);
} WHEN {
TURN { MOVE(player, MOVE_TELEKINESIS); MOVE(opponent, MOVE_MINIMIZE); }
TURN { MOVE(player, MOVE_SCREECH, hit:FALSE); }
} SCENE {
MESSAGE("Wobbuffet used Telekinesis!");
MESSAGE("Foe Wynaut was hurled into the air!");
MESSAGE("Foe Wynaut used Minimize!");
MESSAGE("Wobbuffet used Screech!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCREECH, player);
NOT MESSAGE("Wobbuffet's attack missed!");
}
}
SINGLE_BATTLE_TEST("Telekinesis ends after 3 turns")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WYNAUT);
} WHEN {
TURN { MOVE(player, MOVE_TELEKINESIS); }
TURN { }
TURN { }
} SCENE {
MESSAGE("Wobbuffet used Telekinesis!");
MESSAGE("Foe Wynaut was hurled into the air!");
MESSAGE("Wobbuffet used Celebrate!");
MESSAGE("Wobbuffet used Celebrate!");
MESSAGE("Foe Wynaut was freed from the telekinesis!");
}
}
SINGLE_BATTLE_TEST("Telekinesis makes the target immune to Ground-type attacks")
{
GIVEN {
ASSUME(gBattleMoves[MOVE_BULLDOZE].type == TYPE_GROUND);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WYNAUT);
} WHEN {
TURN { MOVE(player, MOVE_BULLDOZE); }
TURN { MOVE(player, MOVE_TELEKINESIS); }
TURN { MOVE(player, MOVE_BULLDOZE); }
} SCENE {
MESSAGE("Wobbuffet used Bulldoze!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLDOZE, player);
HP_BAR(opponent);
MESSAGE("Wobbuffet used Telekinesis!");
MESSAGE("Foe Wynaut was hurled into the air!");
MESSAGE("Wobbuffet used Bulldoze!");
NONE_OF {
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLDOZE, player);
HP_BAR(opponent);
}
MESSAGE("It doesn't affect Foe Wynaut…");
}
}