mirror of
https://github.com/mangosfour/server.git
synced 2025-12-16 04:37:00 +00:00
[8635] Rewrote bonus damage claculation
* calculation depends on the damageClass now ->SPELL_DAMAGE_CLASS_RANGED & SPELL_DAMAGE_CLASS_MELEE use MeleeDamageBonus() ->SPELL_DAMAGE_CLASS_MAGIC & SPELL_DAMAGE_CLASS_RANGED use SpellDamageBonus() * changes/improvements in MeleeDamageBonus: -> improved criterions to apply bonuses -> implemented scaling of FLAT damage Bonus for non weapon damage based spells -> support of DOT's -> added pet's bonus damage for non weapon based spells * general cleanup in CalculateSpellDamage() and MeleeDamageBonus() * implemented global helper functions GetWeaponAttackType() and GetAuraTicks() in SpellMgr Signed-off-by: ApoC <apoc@nymfe.net>
This commit is contained in:
parent
29fde5f671
commit
c47cf7bd61
9 changed files with 414 additions and 290 deletions
|
|
@ -90,6 +90,60 @@ uint32 GetSpellCastTime(SpellEntry const* spellInfo, Spell const* spell)
|
|||
return (castTime > 0) ? uint32(castTime) : 0;
|
||||
}
|
||||
|
||||
uint16 GetSpellAuraMaxTicks(SpellEntry const* spellInfo)
|
||||
{
|
||||
int32 DotDuration = GetSpellDuration(spellInfo);
|
||||
if(DotDuration == 0)
|
||||
return 1;
|
||||
|
||||
// 200% limit
|
||||
if(DotDuration > 30000)
|
||||
DotDuration = 30000;
|
||||
|
||||
int j = 0;
|
||||
for( ; j < 3; j++)
|
||||
{
|
||||
if( spellInfo->Effect[j] == SPELL_EFFECT_APPLY_AURA && (
|
||||
spellInfo->EffectApplyAuraName[j] == SPELL_AURA_PERIODIC_DAMAGE ||
|
||||
spellInfo->EffectApplyAuraName[j] == SPELL_AURA_PERIODIC_HEAL ||
|
||||
spellInfo->EffectApplyAuraName[j] == SPELL_AURA_PERIODIC_LEECH) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(spellInfo->EffectAmplitude[j] != 0)
|
||||
return DotDuration / spellInfo->EffectAmplitude[j];
|
||||
|
||||
return 6;
|
||||
}
|
||||
|
||||
WeaponAttackType GetWeaponAttackType(SpellEntry const *spellInfo)
|
||||
{
|
||||
if(!spellInfo)
|
||||
return BASE_ATTACK;
|
||||
|
||||
switch (spellInfo->DmgClass)
|
||||
{
|
||||
case SPELL_DAMAGE_CLASS_MELEE:
|
||||
if (spellInfo->AttributesEx3 & SPELL_ATTR_EX3_REQ_OFFHAND)
|
||||
return OFF_ATTACK;
|
||||
else
|
||||
return BASE_ATTACK;
|
||||
break;
|
||||
case SPELL_DAMAGE_CLASS_RANGED:
|
||||
return RANGED_ATTACK;
|
||||
break;
|
||||
default:
|
||||
// Wands
|
||||
if (spellInfo->AttributesEx2 & SPELL_ATTR_EX2_AUTOREPEAT_FLAG)
|
||||
return RANGED_ATTACK;
|
||||
else
|
||||
return BASE_ATTACK;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool IsPassiveSpell(uint32 spellId)
|
||||
{
|
||||
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue