namespace PkmnLib.Plugin.Gen7.Scripts; public static class CustomTriggers { public static readonly StringKey AuroraVeilDuration = "aurora_veil_duration"; public record AuroraVeilDurationArgs(IExecutingMove Move, int Duration) : ICustomTriggerArgs { public int Duration { get; set; } = Duration; } public static readonly StringKey ModifyBind = "modify_bind"; public record ModifyBindArgs(IExecutingMove Move) : ICustomTriggerArgs { public int Duration { get; set; } = 5; public float DamagePercent { get; set; } = 1f / 8f; } public static readonly StringKey IgnoreHail = "ignores_hail"; public record IgnoreHailArgs(IPokemon Pokemon) : ICustomTriggerArgs { public bool Ignore { get; set; } = false; } public static readonly StringKey LightScreenNumberOfTurns = "light_screen_number_of_turns"; public record LightScreenNumberOfTurnsArgs(IExecutingMove Move, int Duration) : ICustomTriggerArgs { public int Duration { get; set; } = Duration; } public static readonly StringKey ReflectNumberOfTurns = "reflect_number_of_turns"; public record ReflectNumberOfTurnsArgs(IExecutingMove Move, int Duration) : ICustomTriggerArgs { public int Duration { get; set; } = Duration; } public static readonly StringKey BypassSleep = "bypass_sleep"; public record BypassSleepArgs(IExecutingMove Move, bool Bypass) : ICustomTriggerArgs { public bool Bypass { get; set; } = Bypass; } public static readonly StringKey Whirlpool = "whirlpool"; public record WhirlpoolArgs(IExecutingMove Move, IPokemon Target, byte HitIndex, int Turns, float DamagePercent) : ICustomTriggerArgs { public int Turns { get; set; } = Turns; public float DamagePercent { get; set; } = DamagePercent; } public static readonly StringKey ModifyAuraEffect = "modify_aura_effect"; public record ModifyAuraEffectArgs(IExecutingMove Move, IPokemon Target, byte HitIndex, float AuraEffect) : ICustomTriggerArgs { public float AuraEffect { get; set; } = AuraEffect; } public static readonly StringKey BypassChargeMove = "bypass_charge_move"; public record BypassChargeMoveArgs(IExecutingMove Move, bool Bypass) : ICustomTriggerArgs { public bool Bypass { get; set; } = Bypass; } public static readonly StringKey ModifySleepTurns = "modify_sleep_turns"; public record ModifySleepTurnsArgs(IPokemon Pokemon, int Turns) : ICustomTriggerArgs { public int Turns { get; set; } = Turns; } public static readonly StringKey BypassProtection = "bypass_protection"; public record BypassProtectionArgs(IExecutingMove Move, IPokemon Target, byte HitIndex, bool Bypass) : ICustomTriggerArgs { public bool Bypass { get; set; } = Bypass; } public static readonly StringKey BypassSubstitute = "bypass_subsitute"; public record BypassSubstituteArgs(IExecutingMove Move, IPokemon Target, byte HitIndex, bool Bypass) : ICustomTriggerArgs { public bool Bypass { get; set; } = Bypass; } public static readonly StringKey ModifyDrain = "modify_drain"; public record ModifyDrainArgs(IExecutingMove Move, IPokemon Target, byte Hit, uint Damage, uint Healed, bool Invert) : ICustomTriggerArgs { public uint Healed { get; set; } = Healed; public bool Invert { get; set; } = Invert; } public static readonly StringKey ModifyHealPercent = "modify_heal_percent"; public record ModifyHealPercentArgs(IExecutingMove Move, IPokemon Target, byte Hit, float HealPercent) : ICustomTriggerArgs { public float HealPercent { get; set; } = HealPercent; } public static readonly StringKey PoisonedDamage = "poisoned_damage"; public record PoisonedDamageArgs(IPokemon Pokemon, uint Damage) : ICustomTriggerArgs { public uint Damage { get; set; } = Damage; public bool Invert { get; set; } = false; } public static readonly StringKey ModifyRecoil = "modify_recoil"; public record ModifyRecoilArgs(IExecutingMove Move, IPokemon Target, byte Hit, uint Damage, uint Recoil) : ICustomTriggerArgs { public uint Recoil { get; set; } = Recoil; public bool Prevent { get; set; } = false; } public static readonly StringKey Modify2_5HitMove = "modify_2_5_hit_move"; public record Modify2_5HitMoveArgs(IMoveChoice moveChoice, byte NumberOfHits) : ICustomTriggerArgs { public byte NumberOfHits { get; set; } = NumberOfHits; } public static readonly StringKey OnFlinch = "on_flinch"; public record OnFlinchArgs(IExecutingMove Move) : ICustomTriggerArgs { public bool Prevent { get; set; } = false; } public static readonly StringKey BypassSandstormDamage = "bypass_sandstorm_damage"; public record BypassSandstormDamageArgs(IPokemon Pokemon) : ICustomTriggerArgs { public bool Bypass { get; set; } = false; } }