示例#1
0
        /// <summary>
        /// Reduces given damage if Mana Shield is active and returns the total
        /// mana damage. Also cancels Mana Shield if Mana is insufficent and
        /// reduces mana on target.
        /// </summary>
        /// <param name="target"></param>
        /// <param name="damage"></param>
        /// <returns></returns>
        public static float DealManaDamage(MabiCreature target, ref float damage)
        {
            if (!target.Has(CreatureConditionA.ManaShield))
                return 0;

            var skill = target.Skills.Get(SkillConst.ManaShield);
            if (skill == null)
                return 0;

            // Var 1 = Efficiency
            var manaDamage = damage / skill.RankInfo.Var1;
            if (target.Mana >= manaDamage)
                damage = 0;
            else
            {
                damage -= (manaDamage - target.Mana) * skill.RankInfo.Var1;
                manaDamage = target.Mana;
            }

            target.Mana -= manaDamage;

            if (target.Mana <= 0)
                SkillManager.GetHandler(SkillConst.ManaShield).Stop(target, skill, null);

            return manaDamage;
        }