namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon;

[Script(ScriptCategory.Pokemon, "wish")]
public class WishEffect : Script, IScriptOnEndTurn
{
    private IPokemon? _pokemon;
    private bool _hasDoneFirstTurn;

    /// <inheritdoc />
    public override void OnAddedToParent(IScriptSource source)
    {
        if (source is not IPokemon pokemon)
        {
            throw new InvalidOperationException("Wish script can only be added to a Pokemon.");
        }
        _pokemon = pokemon;
    }

    /// <inheritdoc />
    public void OnEndTurn(IScriptSource owner, IBattle battle)
    {
        if (_pokemon == null)
            return;
        if (!_hasDoneFirstTurn)
        {
            _hasDoneFirstTurn = true;
            return;
        }

        if (_pokemon.BattleData?.IsOnBattlefield == true)
        {
            _pokemon.Heal(_pokemon.MaxHealth / 2);
        }
    }
}