public AbilityData( string ID, string baseID = null, string abilityName = null, IEnumerable <AbilityTag> tags = null, AbilityEffect[] effects = null, bool combineBaseEffects = false, EffectDatabase.AbilityEff.AbilityEffect[] effectsNew = null) { this.ID = ID; this.baseID = baseID; this.abilityName = abilityName; this.tags = new HashSet <AbilityTag>(); if (tags != null) { this.tags.UnionWith(tags); } this.effects = (effects == null) ? new AbilityEffect[0] : new AbilityEffect[effects.Length]; if (effects != null) { for (int i = 0; i < effects.Length; i++) { this.effects[i] = AbilityEffect.Clone(effects[i]); } } this.combineBaseEffects = combineBaseEffects; this.effectsNew = new List <EffectDatabase.AbilityEff.AbilityEffect>(); if (effectsNew != null) { List <EffectDatabase.AbilityEff.AbilityEffect> addableEffects = new List <EffectDatabase.AbilityEff.AbilityEffect>(); for (int i = 0; i < effectsNew.Length; i++) { addableEffects.Add(effectsNew[i].Clone()); } this.effectsNew = addableEffects; } }