/// <summary>
        /// Get instanced bundles save data.
        /// </summary>
        public EffectBundleSaveData_v1[] GetInstancedBundlesSaveData()
        {
            List <EffectBundleSaveData_v1> bundlesSaveData = new List <EffectBundleSaveData_v1>();

            foreach (InstancedBundle bundle in instancedBundles)
            {
                EffectBundleSaveData_v1 bundleData = new EffectBundleSaveData_v1();
                bundleData.version          = bundle.version;
                bundleData.bundleType       = bundle.bundleType;
                bundleData.targetType       = bundle.targetType;
                bundleData.elementType      = bundle.elementType;
                bundleData.name             = bundle.name;
                bundleData.iconIndex        = bundle.iconIndex;
                bundleData.casterEntityType = bundle.casterEntityType;
                bundleData.casterLoadID     = bundle.casterLoadID;

                List <EffectSaveData_v1> liveEffectsSaveData = new List <EffectSaveData_v1>();
                foreach (IEntityEffect effect in bundle.liveEffects)
                {
                    EffectSaveData_v1 effectData = GetEffectSaveData(effect);
                    liveEffectsSaveData.Add(effectData);
                }

                bundleData.liveEffects = liveEffectsSaveData.ToArray();
                bundlesSaveData.Add(bundleData);
            }

            return(bundlesSaveData.ToArray());
        }
        /// <summary>
        /// Get full effect save data including effect specific data.
        /// </summary>
        public EffectSaveData_v1 GetEffectSaveData(IEntityEffect effect)
        {
            EffectSaveData_v1 effectData = new EffectSaveData_v1();

            effectData.key             = effect.Key;
            effectData.effectSettings  = effect.Settings;
            effectData.roundsRemaining = effect.RoundsRemaining;
            effectData.chanceSuccess   = effect.ChanceSuccess;
            effectData.statMods        = effect.StatMods;
            effectData.skillMods       = effect.SkillMods;
            effectData.isIncumbent     = (effect is IncumbentEffect) ? (effect as IncumbentEffect).IsIncumbent : false;
            effectData.effectSpecific  = effect.GetSaveData();

            return(effectData);
        }