namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "magma_storm")] public class MagmaStormEffect : Script, IScriptOnEndTurn, IScriptPreventSelfRunAway, IScriptPreventSelfSwitch, IAIInfoScriptExpectedEndOfTurnDamage { private readonly IPokemon _owner; private int _turns; private readonly float _percentOfMaxHealth; public MagmaStormEffect(IPokemon owner, int turns, float percentOfMaxHealth) { _owner = owner; _turns = turns; _percentOfMaxHealth = percentOfMaxHealth; } /// public void OnEndTurn(IScriptSource owner, IBattle battle) { if (_turns > 0) { _turns--; _owner.Damage((uint)(_owner.MaxHealth * _percentOfMaxHealth), DamageSource.Misc); } if (_turns <= 0) RemoveSelf(); } /// public void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) { if (choice.User.Types.All(x => x.Name != "ghost")) prevent = true; } /// public void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) { if (choice.User.Types.All(x => x.Name != "ghost")) prevent = true; } /// public void ExpectedEndOfTurnDamage(IPokemon pokemon, ref int damage) { damage += (int)(pokemon.MaxHealth * _percentOfMaxHealth); } }