namespace PkmnLib.Plugin.Gen7.Scripts.Side;

[Script(ScriptCategory.Side, "flower_gift")]
public class FlowerGiftEffect : Script, IScriptChangeOffensiveStatValue
{
    private readonly HashSet<IPokemon> _placerPokemon = [];

    public void OnAdded(IPokemon placer)
    {
        _placerPokemon.Add(placer);
    }

    public void OnRemoved(IPokemon placer)
    {
        _placerPokemon.Remove(placer);
        if (_placerPokemon.Count == 0)
        {
            RemoveSelf();
        }
    }

    /// <inheritdoc />
    public void ChangeOffensiveStatValue(IExecutingMove move, IPokemon target, byte hit, uint defensiveStat,
        ImmutableStatisticSet<uint> targetStats, Statistic stat, ref uint value)
    {
        if (move.Battle.WeatherName != ScriptUtils.ResolveName<Weather.HarshSunlight>())
            return;

        value = value.MultiplyOrMax(1.5f);
    }
}