/// <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; }