From fcb7edb93fac59fe2d9ebfaf03eb6405034cc505 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sun, 5 Sep 2021 10:11:16 -0400 Subject: [PATCH] Core/Spells: Remove leftover code from old mechanic - default spellpower scaling coefficients Port From (https://github.com/TrinityCore/TrinityCore/commit/407e5aea1a0e9395f8a0dda58b004c5659e78b7b) --- Source/Game/Entities/Unit/Unit.Spells.cs | 97 ------------------------ Source/Game/Entities/Unit/Unit.cs | 24 ------ 2 files changed, 121 deletions(-) diff --git a/Source/Game/Entities/Unit/Unit.Spells.cs b/Source/Game/Entities/Unit/Unit.Spells.cs index 77400c5c1..f185e776f 100644 --- a/Source/Game/Entities/Unit/Unit.Spells.cs +++ b/Source/Game/Entities/Unit/Unit.Spells.cs @@ -890,103 +890,6 @@ namespace Game.Entities spell.Finish(ok); } - uint GetCastingTimeForBonus(SpellInfo spellProto, DamageEffectType damagetype, uint CastingTime) - { - // Not apply this to creature casted spells with casttime == 0 - if (CastingTime == 0 && IsTypeId(TypeId.Unit) && !IsPet()) - return 3500; - - if (CastingTime > 7000) CastingTime = 7000; - if (CastingTime < 1500) CastingTime = 1500; - - if (damagetype == DamageEffectType.DOT && !spellProto.IsChanneled()) - CastingTime = 3500; - - int overTime = 0; - byte effects = 0; - bool DirectDamage = false; - bool AreaEffect = false; - - foreach (SpellEffectInfo effect in spellProto.GetEffects()) - { - if (effect == null) - continue; - - switch (effect.Effect) - { - case SpellEffectName.SchoolDamage: - case SpellEffectName.PowerDrain: - case SpellEffectName.HealthLeech: - case SpellEffectName.EnvironmentalDamage: - case SpellEffectName.PowerBurn: - case SpellEffectName.Heal: - DirectDamage = true; - break; - case SpellEffectName.ApplyAura: - switch (effect.ApplyAuraName) - { - case AuraType.PeriodicDamage: - case AuraType.PeriodicHeal: - case AuraType.PeriodicLeech: - if (spellProto.GetDuration() != 0) - overTime = spellProto.GetDuration(); - break; - default: - // -5% per additional effect - ++effects; - break; - } - break; - default: - break; - } - - if (effect.IsTargetingArea()) - AreaEffect = true; - } - - // Combined Spells with Both Over Time and Direct Damage - if (overTime > 0 && CastingTime > 0 && DirectDamage) - { - // mainly for DoTs which are 3500 here otherwise - int OriginalCastTime = spellProto.CalcCastTime(); - if (OriginalCastTime > 7000) - OriginalCastTime = 7000; - if (OriginalCastTime < 1500) - OriginalCastTime = 1500; - // Portion to Over Time - float PtOT = (overTime / 15000.0f) / ((overTime / 15000.0f) + (OriginalCastTime / 3500.0f)); - - if (damagetype == DamageEffectType.DOT) - CastingTime = (uint)(CastingTime * PtOT); - else if (PtOT < 1.0f) - CastingTime = (uint)(CastingTime * (1 - PtOT)); - else - CastingTime = 0; - } - - // Area Effect Spells receive only half of bonus - if (AreaEffect) - CastingTime /= 2; - - // 50% for damage and healing spells for leech spells from damage bonus and 0% from healing - foreach (SpellEffectInfo effect in spellProto.GetEffects()) - { - if (effect != null && (effect.Effect == SpellEffectName.HealthLeech || - (effect.Effect == SpellEffectName.ApplyAura && effect.ApplyAuraName == AuraType.PeriodicLeech))) - { - CastingTime /= 2; - break; - } - } - - // -5% of total per any additional effect - for (byte i = 0; i < effects; ++i) - CastingTime *= (uint)0.95f; - - return CastingTime; - } - public virtual SpellInfo GetCastSpellInfo(SpellInfo spellInfo) { SpellInfo findMatchingAuraEffectIn(AuraType type) diff --git a/Source/Game/Entities/Unit/Unit.cs b/Source/Game/Entities/Unit/Unit.cs index 2d483cacb..5b4802dd5 100644 --- a/Source/Game/Entities/Unit/Unit.cs +++ b/Source/Game/Entities/Unit/Unit.cs @@ -3771,30 +3771,6 @@ namespace Game.Entities public virtual SpellSchoolMask GetMeleeDamageSchoolMask(WeaponAttackType attackType = WeaponAttackType.BaseAttack) { return SpellSchoolMask.None; } - float CalculateDefaultCoefficient(SpellInfo spellInfo, DamageEffectType damagetype) - { - // Damage over Time spells bonus calculation - float DotFactor = 1.0f; - if (damagetype == DamageEffectType.DOT) - { - - int DotDuration = spellInfo.GetDuration(); - if (!spellInfo.IsChanneled() && DotDuration > 0) - DotFactor = DotDuration / 15000.0f; - - uint DotTicks = spellInfo.GetMaxTicks(); - if (DotTicks != 0) - DotFactor /= DotTicks; - } - - uint CastingTime = (uint)(spellInfo.IsChanneled() ? spellInfo.GetDuration() : spellInfo.CalcCastTime()); - // Distribute Damage over multiple effects, reduce by AoE - CastingTime = GetCastingTimeForBonus(spellInfo, damagetype, CastingTime); - - // As wowwiki says: C = (Cast Time / 3.5) - return (CastingTime / 3500.0f) * DotFactor; - } - public virtual void UpdateDamageDoneMods(WeaponAttackType attackType) { UnitMods unitMod = attackType switch