namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// /// Zen Mode is an ability that changes the Pokémon's form when its HP falls below half. /// /// Bulbapedia - Zen Mode /// [Script(ScriptCategory.Ability, "zen_mode")] public class ZenMode : Script, IScriptOnEndTurn, IScriptOnSwitchIn { /// public void OnSwitchIn(IPokemon pokemon, byte position) => ChangeFormIfNeeded(pokemon); /// public void OnEndTurn(IScriptSource owner, IBattle battle) => ChangeFormIfNeeded(owner as IPokemon); private static void ChangeFormIfNeeded(IPokemon? pokemon) { if (pokemon is null) return; if (pokemon.Species.Name != SpeciesNames.Darmanitan || pokemon.BattleData?.Battle == null) return; if (pokemon.CurrentHealth < pokemon.MaxHealth / 2 && pokemon.Form.Name != FormNames.Zen && pokemon.Species.TryGetForm(FormNames.Zen, out var zenForm)) { pokemon.ChangeForm(zenForm); } else if (pokemon.CurrentHealth >= pokemon.MaxHealth / 2 && pokemon.Form.Name == FormNames.Zen) { pokemon.ChangeForm(pokemon.Species.GetDefaultForm()); } } }