/// <summary> /// Returns the max duration for this Spell in milliseconds, /// including all modifiers. /// </summary> public int GetDuration(CasterInfo caster, Unit target) { var millis = Durations.Min; //if (Durations.LevelDelta > 0) //{ // millis += (int)caster.Level * Durations.LevelDelta; // if (Durations.Max > 0 && millis > Durations.Max) // { // millis = Durations.Max; // } //} if (Durations.Max > Durations.Min && IsFinishingMove && caster.CasterUnit != null) { // For some finishing moves, Duration depends on Combopoints millis += caster.CasterUnit.ComboPoints * ((Durations.Max - Durations.Min) / 5); } if (target != null && Mechanic != SpellMechanic.None) { var mod = target.GetMechanicDurationMod(Mechanic); if (mod != 0) { millis = UnitUpdates.GetMultiMod(mod / 100f, millis); } } var chr = caster.Caster as Character; if (chr != null) { millis = chr.PlayerSpells.GetModifiedInt(SpellModifierType.Duration, this, millis); } return millis; }