namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "fire_spin")] public class FireSpinEffect : Script, IScriptOnEndTurn, IScriptPreventSelfRunAway, IScriptPreventSelfSwitch, IAIInfoScriptExpectedEndOfTurnDamage { private readonly IPokemon _owner; private int _turns; private readonly float _modifier; public FireSpinEffect(IPokemon owner, int turns, IPokemon user) { _owner = owner; _turns = turns; _modifier = user.HasHeldItem(ItemNames.BindingBand) ? 6f : 8f; } /// public void OnEndTurn(IScriptSource owner, IBattle battle) { _owner.Damage((uint)(_owner.BoostedStats.Hp / _modifier), DamageSource.Misc); _turns--; if (_turns == 0) RemoveSelf(); } /// public void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) { if (choice.User.Types.All(x => x.Name != TypeNames.Ghost)) prevent = true; } /// public void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) { if (choice.User.Types.All(x => x.Name != TypeNames.Ghost)) prevent = true; } /// public void ExpectedEndOfTurnDamage(IPokemon pokemon, ref int damage) { damage += (int)(pokemon.MaxHealth / _modifier); } }