namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;

/// <summary>
/// Hyper Cutter is an ability that prevents the Pokémon's Attack stat from being lowered by other Pokémon.
///
/// <see href="https://bulbapedia.bulbagarden.net/wiki/Hyper_Cutter_(Ability)">Bulbapedia - Hyper Cutter</see>
/// </summary>
[Script(ScriptCategory.Ability, "hyper_cutter")]
public class HyperCutter : Script, IScriptPreventStatBoostChange
{
    /// <inheritdoc />
    public void PreventStatBoostChange(IPokemon target, Statistic stat, sbyte amount, bool selfInflicted,
        ref bool prevent)
    {
        if (stat != Statistic.Attack)
            return;

        // Prevent the Attack stat from being lowered by any means
        if (amount < 0 && !selfInflicted)
            prevent = true;
    }
}