/// <summary>
        /// Add an effect into the holder then execute it, a copy will be made internaly to avoid references issues.
        /// </summary>
        /// <param name="ActiveSkillEffect"></param>
        /// <param name="ActiveSkillName"></param>
        public void AddAndExecuteEffect(BaseEffect ActiveSkillEffect, string ActiveSkillName)
        {
            ActiveSkillEffect = ActiveSkillEffect.Copy();

            //Add the SkillEffect to the DicActiveEffect to activate them later.
            if (!DicActiveEffect.ContainsKey(ActiveSkillName))
            {
                DicActiveEffect.Add(ActiveSkillName, new List <BaseEffect>());
            }

            int EffectCount = 0;

            for (int i = DicActiveEffect[ActiveSkillName].Count - 1; i >= 0; --i)
            {
                if (DicActiveEffect[ActiveSkillName][i].Equals(ActiveSkillEffect))
                {
                    ++EffectCount;
                }
            }

            if ((ActiveSkillEffect.IsStacking && EffectCount < ActiveSkillEffect.MaximumStack) ||
                EffectCount <= 0)
            {
                DicActiveEffect[ActiveSkillName].Add(ActiveSkillEffect);
                ActiveSkillEffect.ExecuteEffect();
            }
        }
        /// <summary>
        /// Add an effect into the holder then execute it, a copy will be made internaly to avoid references issues.
        /// </summary>
        /// <param name="ActiveSkillEffect"></param>
        /// <param name="ActiveSkillName"></param>
        public void AddAndExecuteEffect(BaseEffect ActiveSkillEffect, string ActiveSkillName, string NewLifetimeType = "")
        {
            ActiveSkillEffect = ActiveSkillEffect.Copy();

            if (CanAddEffect(ActiveSkillEffect, ActiveSkillName))
            {
                if (NewLifetimeType != string.Empty)
                {
                    ActiveSkillEffect.LifetimeType = NewLifetimeType;
                }

                ActiveSkillEffect.Lifetime = ActiveSkillEffect.LifetimeTypeValue;
                DicActiveEffect[ActiveSkillName].Add(ActiveSkillEffect);
                ActiveSkillEffect.ExecuteEffect();
            }
        }