using PkmnLib.Plugin.Gen7.Scripts.Pokemon;

namespace PkmnLib.Plugin.Gen7.Scripts.Moves;

[Script(ScriptCategory.Move, "swallow")]
public class Swallow : Script, IScriptOnSecondaryEffect
{
    /// <inheritdoc />
    public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit)
    {
        var stockpileEffect = move.User.Volatile.Get<StockpileEffect>();
        if (stockpileEffect == null || stockpileEffect.StockpileCount == 0)
        {
            move.GetHitData(target, hit).Fail();
            return;
        }
        var stockpileCount = stockpileEffect.StockpileCount;

        var modifier = stockpileCount switch
        {
            1 => 0.25f,
            2 => 0.5f,
            _ => 1f,
        };
        var heal = move.User.MaxHealth * modifier;
        move.User.Heal((uint)heal);
        move.User.Volatile.Remove<StockpileEffect>();
    }
}