// Constructor
    public StatusPKData(
        string ID,
        string baseID        = null,
        string conditionName = null,
        string shortName     = null,
        string inflictTextID = null,
        string healTextID    = null,
        string alreadyTextID = null,
        string failTextID    = null,
        EffectDatabase.General.DefaultTurns defaultTurns = null,

        bool combineBaseTags           = false, IEnumerable <PokemonSTag> statusTags = null,
        PokemonCEff[] conditionEffects = null,

        bool combineBaseEffects = false, EffectDatabase.StatusPKEff.PokemonSE[] effectsNew = null)
    {
        this.ID            = ID;
        this.baseID        = baseID;
        this.conditionName = conditionName;
        this.shortName     = shortName;
        this.inflictTextID = inflictTextID;
        this.healTextID    = healTextID;
        this.alreadyTextID = alreadyTextID;
        this.failTextID    = failTextID;

        this.defaultTurns = (defaultTurns == null) ? null : defaultTurns.Clone();

        this.combineBaseTags = combineBaseTags;
        this.statusTags      = (statusTags == null) ? new HashSet <PokemonSTag>() : new HashSet <PokemonSTag>(statusTags);

        this.conditionEffects = (conditionEffects == null) ? new PokemonCEff[0]
            : new PokemonCEff[conditionEffects.Length];
        if (conditionEffects != null)
        {
            for (int i = 0; i < conditionEffects.Length; i++)
            {
                this.conditionEffects[i] = PokemonCEff.Clone(conditionEffects[i]);
            }
        }

        this.combineBaseEffects = combineBaseEffects;
        this.effectsNew         = new List <EffectDatabase.StatusPKEff.PokemonSE>();
        if (effectsNew != null)
        {
            List <EffectDatabase.StatusPKEff.PokemonSE> addableEffects = new List <EffectDatabase.StatusPKEff.PokemonSE>();
            for (int i = 0; i < effectsNew.Length; i++)
            {
                addableEffects.Add(effectsNew[i].Clone());
            }
            this.effectsNew = addableEffects;
        }
    }
    // Clone
    public static PokemonCEff Clone(PokemonCEff original)
    {
        PokemonCEff cloneEffect = new PokemonCEff(
            effectType: original.effectType,
            effectTiming: original.effectTiming,
            forceEffectDisplay: original.forceEffectDisplay,
            boolParams: original.boolParams,
            floatParams: original.floatParams,
            stringParams: original.stringParams
            );

        return(cloneEffect);
    }