namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "future_sight")] public class FutureSightEffect : Script { private int _turnsLeft = 3; private readonly IMoveChoice _moveChoice; public FutureSightEffect(IMoveChoice moveChoice) { _moveChoice = moveChoice; } /// public override void OnEndTurn(IBattle battle) { _turnsLeft -= 1; if (_turnsLeft <= 0) { var target = battle.GetPokemon(_moveChoice.TargetSide, _moveChoice.TargetPosition); if (target is not { IsUsable: true }) { battle.EventHook.Invoke(new DialogEvent("move_failed")); return; } var damageCalculator = battle.Library.DamageCalculator; var executingMove = new ExecutingMoveImpl([target], 1, _moveChoice.ChosenMove, _moveChoice.ChosenMove.MoveData, _moveChoice); var hitData = executingMove.GetHitData(target, 0); var damage = damageCalculator.GetDamage(executingMove, target, 1, hitData); target.Damage(damage, DamageSource.Misc); } } }