using PkmnLib.Static.Utils; namespace PkmnLib.Static.Moves; /// <summary> /// A secondary effect is an effect on a move that happens after it hits. /// </summary> public interface ISecondaryEffect { /// <summary> /// The chance in percentages that the effect triggers. When less than 0, the effect is always active. /// </summary> public float Chance { get; } /// <summary> /// The name of the effect. /// </summary> public StringKey Name { get; } /// <summary> /// Parameters for the effect. /// </summary> public IReadOnlyDictionary<StringKey, object?> Parameters { get; } } /// <inheritdoc /> public class SecondaryEffectImpl : ISecondaryEffect { /// <inheritdoc cref="SecondaryEffectImpl" /> public SecondaryEffectImpl(float chance, StringKey name, IReadOnlyDictionary<StringKey, object?> parameters) { Chance = chance; Name = name; Parameters = parameters; } /// <inheritdoc /> public float Chance { get; } /// <inheritdoc /> public StringKey Name { get; } /// <inheritdoc /> public IReadOnlyDictionary<StringKey, object?> Parameters { get; } }