namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon;

[Script(ScriptCategory.Pokemon, "miracle_eye")]
public class MiracleEyeEffect : Script, IScriptPreventStatBoostChange, IScriptChangeTypesForIncomingMove
{
    /// <inheritdoc />
    public void PreventStatBoostChange(IPokemon target, Statistic stat, sbyte amount, bool selfInflicted,
        ref bool prevent)
    {
        if (stat == Statistic.Evasion && amount > 0)
            prevent = true;
    }

    /// <inheritdoc />
    public void ChangeTypesForIncomingMove(IExecutingMove executingMove, IPokemon target, byte hitIndex,
        IList<TypeIdentifier> types)
    {
        if (executingMove.UseMove.MoveType.Name != "psychic")
            return;
        var darkType = types.FirstOrDefault(x => x.Name == "dark");
        if (darkType == null)
            return;
        types.Remove(darkType);
    }
}