Core/Spells: Remove leftover code from old mechanic - default spellpower scaling coefficients

Port From (https://github.com/TrinityCore/TrinityCore/commit/407e5aea1a0e9395f8a0dda58b004c5659e78b7b)
This commit is contained in:
hondacrx
2021-09-05 10:11:16 -04:00
parent 4c08eebc49
commit fcb7edb93f
2 changed files with 0 additions and 121 deletions
-97
View File
@@ -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)
-24
View File
@@ -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