Beispiel #1
0
        /// <summary>
        /// Calculates the effect duration in milliseconds
        /// </summary>
        /// <param name="target">The effect target</param>
        /// <param name="effectiveness">The effect effectiveness</param>
        /// <returns>The effect duration in milliseconds</returns>
        protected override int CalculateEffectDuration(GameLiving target, double effectiveness)
        {
            // http://support.darkageofcamelot.com/kb/article.php?id=423
            // Patch Notes: Version 1.52
            // The duration is 100% at the middle of the area, and it tails off to 50%
            // duration at the edges. This does NOT change the way area effect spells
            // work against monsters, only realm enemies (i.e. enemy players and enemy realm guards).
            double duration = base.CalculateEffectDuration(target, effectiveness);

            if (!(target is GamePlayer) && !(target is Keeps.GameKeepGuard))
            {
                return((int)duration);
            }

            duration *= 0.5 + 0.5 * effectiveness;
            duration -= duration * target.GetResistBase(Spell.DamageType) * 0.01;

            if (duration < 1)
            {
                duration = 1;
            }
            else if (duration > Spell.Duration * 4)
            {
                duration = Spell.Duration * 4;
            }

            return((int)duration);
        }
        /// <summary>
        /// Calculates the effect duration in milliseconds
        /// </summary>
        /// <param name="target">The effect target</param>
        /// <param name="effectiveness">The effect effectiveness</param>
        /// <returns>The effect duration in milliseconds</returns>
        protected override int CalculateEffectDuration(GameLiving target, double effectiveness)
        {
            // http://support.darkageofcamelot.com/kb/article.php?id=423
            // Patch Notes: Version 1.52
            // The duration is 100% at the middle of the area, and it tails off to 50%
            // duration at the edges. This does NOT change the way area effect spells
            // work against monsters, only realm enemies (i.e. enemy players and enemy realm guards).
            double duration = base.CalculateEffectDuration(target, effectiveness);
            if (!(target is GamePlayer) && !(target is Keeps.GameKeepGuard))
                return (int)duration;
            duration *= (0.5 + 0.5 * effectiveness);
            duration -= duration * target.GetResistBase(Spell.DamageType) * 0.01;

            if (duration < 1)
                duration = 1;
            else if (duration > (Spell.Duration * 4))
                duration = (Spell.Duration * 4);
            return (int)duration;
        }