using PkmnLib.Plugin.Gen7.Scripts.Pokemon;

namespace PkmnLib.Plugin.Gen7.Scripts.Moves;

[Script(ScriptCategory.Move, "ice_ball")]
public class IceBall : Script, IScriptOnSecondaryEffect, IScriptChangeBasePower
{
    /// <inheritdoc />
    public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower)
    {
        var userEffect = move.User.Volatile.Get<IceBallEffect>();
        if (userEffect == null)
            return;

        basePower = basePower.MultiplyOrMax((byte)Math.Pow(2, userEffect.TurnCount));
    }

    /// <inheritdoc />
    public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit)
    {
        var userEffect = move.User.Volatile.Get<IceBallEffect>();
        if (userEffect == null)
        {
            userEffect = new IceBallEffect(move.User, move.UseMove.Name);
            move.User.Volatile.Add(userEffect);
        }
        else
        {
            userEffect.TurnCount++;
        }
    }
}