* Fixed Primal Reversion not activating when switching in after a fainting
* add tests for primal reversion
Co-authored-by: Eduardo Quezada <eduardo602002@gmail.com>
Inline GetBattlerPartyData into its callers because its name is
confusing and we couldn't think of a better one.
This seems to fix a bug in one place where GetBattlerPartyData was being
used as if it had GetBattlerParty semantics.
-Foolproofed the ability checks in ABILITYEFFECT_ON_WEATHER and ABILITYEFFECT_ON_TERRAIN
-Made BattleScript_OverworldWeatherStarts and BattleScript_OverworldTerrain call the battle scripts that handle weather form changes, weather abilities, terrain seeds and terrain abilities.
-Consequentially, I removed the activation for weather and terrain abilities that I added to TryDoEventsBeforeFirstTurn, and the activation of Protosynthesis in ABILITYEFFECT_ON_SWITCHIN.
-Added a weatherAbilityDone to prevent abilities that lack self-checks like Protosynthesis from getting stuck in a loop.
-Removed now pointless ABILITYEFFECT_WEATHER_FORM. I think Duke/Sneed69 added it to fix Castform's form change, but it no longer serves a purpose.
A new, probably better way to handle the announcement trigger that abilities such as Protosynthesis and Quark Drive have, when the battle weather or the field terrain change.
Misc. changes:
-EFFECT_DAMAGE_SET_TERRAIN -> EFFECT_HIT_SET_REMOVE_TERRAIN
-It's more appropriate as the effect can be used to force set a terrain or simply to remove an active terrain, after all.
-The main reason for the rename was the inconsistency with the battle script's label.
-Reverted accidentally committed change to B_DOUBLE_WILD_CHANCE, performed back in c8abf00c.
- Added a general GetBattleFormChangeTargetSpecies instead of getting specific ones for Mega Evolution and Primal Reversion.
- Added FORM_CHANGE_BATTLE_HP_PERCENT, to replace ShouldChangeFormHpBased.
- Cleaned ifdefs for hold effects.
- Finally removed UndoMegaEvolution.
- FORM_CHANGE_FAINT and FORM_CHANGE_BATTLE_END restore to the first form before a battle form change if species isn't specified.
- When changing from a form with more HP to one with less, now current HP is kept to fix Zygarde edge case. (Will likely need to be reworked for Dynamax, as it behaves differently)
- Uses DoesSpeciesUseHoldItemToChangeForm in CanBattlerGetOrLoseItem.