diff options
author | QAston <none@none> | 2009-07-18 23:41:23 +0200 |
---|---|---|
committer | QAston <none@none> | 2009-07-18 23:41:23 +0200 |
commit | 5f3f62222670f70a0c278b76ce91601814da1f3f (patch) | |
tree | 090e08715686e6f47cdc48603fb9518e6a5baa65 /src | |
parent | bc4d862263b6823562c643c270f41de7e12001be (diff) |
*Move coefficients from Spell::SpellDamageSchoolDmg to spell_bonus_data.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/SpellEffects.cpp | 78 | ||||
-rw-r--r-- | src/game/SpellMgr.h | 2 | ||||
-rw-r--r-- | src/game/Unit.cpp | 16 |
3 files changed, 10 insertions, 86 deletions
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index ebf0037781d..bd0b1766acb 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -386,13 +386,6 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) damage = 200; break; } - // Intercept (warrior spell trigger) - case 20253: - case 61491: - { - damage+= uint32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.12f); - break; - } // arcane charge. must only affect demons (also undead?) case 45072: { @@ -426,9 +419,7 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) { // Bloodthirst if(m_spellInfo->SpellFamilyFlags[1] & 0x400) - { damage = uint32(damage * (m_caster->GetTotalAttackPowerValue(BASE_ATTACK)) / 100); - } // Shield Slam else if(m_spellInfo->SpellFamilyFlags[1] & 0x200 && m_spellInfo->Category==1209) damage += int32(m_caster->GetShieldBlockValue()); @@ -438,12 +429,6 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) damage = uint32(damage * m_caster->GetTotalAttackPowerValue(BASE_ATTACK) / 100); m_caster->ModifyAuraState(AURA_STATE_WARRIOR_VICTORY_RUSH, false); } - // Revenge ${$m1+$AP*0.207} to ${$M1+$AP*0.207} - else if(m_spellInfo->SpellFamilyFlags[0] & 0x400) - damage+= uint32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.207f); - // Heroic Throw ${$m1+$AP*.50} - else if(m_spellInfo->SpellFamilyFlags[1] & 0x00000001) - damage+= uint32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.5f); // Shockwave ${$m3/100*$AP} else if(m_spellInfo->SpellFamilyFlags[1] & 0x00008000) { @@ -452,12 +437,6 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) damage+= int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * pct / 100); break; } - // Thunder Clap - else if(m_spellInfo->SpellFamilyFlags[0] & 0x80) - { - damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * 12 / 100); - break; - } break; } case SPELLFAMILY_WARLOCK: @@ -520,17 +499,6 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) damage += int32(energy * multiple); damage += int32(((Player*)m_caster)->GetComboPoints() * ap * 7 / 100); } - // Rake - else if(m_spellInfo->SpellFamilyFlags[0] & 0x1000 && m_spellInfo->Effect[2]==SPELL_EFFECT_ADD_COMBO_POINTS) - { - // $AP*0.01 bonus - damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) / 100); - } - // Swipe - else if(m_spellInfo->SpellFamilyFlags[1] & 0x00100000) - { - damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.08f); - } break; } case SPELLFAMILY_ROGUE: @@ -582,53 +550,14 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) damage += combo*40; } } - // Gouge - else if(m_spellInfo->SpellFamilyFlags[0] & 0x8) - { - damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.21f); - } - // Instant Poison - else if(m_spellInfo->SpellFamilyFlags[0] & 0x2000) - { - damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.10f); - } - // Wound Poison - else if(m_spellInfo->SpellFamilyFlags[0] & 0x10000000) - { - damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.04f); - } break; } case SPELLFAMILY_HUNTER: { - // Gore - if (m_spellInfo->SpellIconID == 1578) - { - damage+= rand()%2 ? damage : 0; - } - // Mongoose Bite - else if((m_spellInfo->SpellFamilyFlags[0] & 0x2) && m_spellInfo->SpellVisual[0]==342) - { - damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.2f); - } - // Counterattack - else if(m_spellInfo->SpellFamilyFlags[1] & 0x00080000) - { - damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.2f); - } - // Arcane Shot - else if((m_spellInfo->SpellFamilyFlags[0] & 0x00000800) && m_spellInfo->maxLevel > 0) - { - damage += int32(m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)*0.15f); - } // Steady Shot - else if(m_spellInfo->SpellFamilyFlags[1] & 0x1) + if(m_spellInfo->SpellFamilyFlags[1] & 0x1) { - int32 base = irand((int32)m_caster->GetWeaponDamageRange(RANGED_ATTACK, MINDAMAGE),(int32)m_caster->GetWeaponDamageRange(RANGED_ATTACK, MAXDAMAGE)); - damage += int32(float(base)/m_caster->GetAttackTime(RANGED_ATTACK)*2800 + m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)*0.1f); - bool found = false; - // check dazed affect Unit::AuraEffectList const& decSpeedList = unitTarget->GetAurasByType(SPELL_AURA_MOD_DECREASE_SPEED); for(Unit::AuraEffectList::const_iterator iter = decSpeedList.begin(); iter != decSpeedList.end(); ++iter) @@ -644,11 +573,6 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) if(found) damage += m_spellInfo->EffectBasePoints[1]; } - // Explosive Trap Effect - else if(m_spellInfo->SpellFamilyFlags[0] & 0x00000004) - { - damage += int32(m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)*0.1f); - } break; } case SPELLFAMILY_PALADIN: diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h index 01ba76e10b2..da23bddc4af 100644 --- a/src/game/SpellMgr.h +++ b/src/game/SpellMgr.h @@ -322,7 +322,7 @@ inline bool IsAutoRepeatRangedSpell(SpellEntry const* spellInfo) inline bool IsRangedWeaponSpell(SpellEntry const* spellInfo) { //spell->DmgClass == SPELL_DAMAGE_CLASS_RANGED should be checked outside - return (spellInfo->SpellFamilyName == SPELLFAMILY_HUNTER) // for 53352, cannot find better way + return (spellInfo->SpellFamilyName == SPELLFAMILY_HUNTER && !(spellInfo->SpellFamilyFlags[1] & 0x100000000)) // for 53352, cannot find better way || (spellInfo->EquippedItemSubClassMask & ITEM_SUBCLASS_MASK_WEAPON_RANGED); } diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index fddbd482b38..5696d3e8bf8 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -9326,15 +9326,15 @@ uint32 Unit::SpellDamageBonus(Unit *pVictim, SpellEntry const *spellProto, uint3 { coeff = bonus->dot_damage; if (bonus->ap_dot_bonus > 0) - DoneTotal+=bonus->ap_dot_bonus * stack * ApCoeffMod * - GetTotalAttackPowerValue(IsRangedWeaponSpell(spellProto) ? RANGED_ATTACK: BASE_ATTACK); + DoneTotal+=bonus->ap_dot_bonus * stack * ApCoeffMod * GetTotalAttackPowerValue( + (IsRangedWeaponSpell(spellProto) && spellProto->DmgClass !=SPELL_DAMAGE_CLASS_MELEE) ? RANGED_ATTACK : BASE_ATTACK); } else { coeff = bonus->direct_damage; if (bonus->ap_bonus > 0) - DoneTotal+=bonus->ap_bonus * stack * ApCoeffMod * - GetTotalAttackPowerValue(IsRangedWeaponSpell(spellProto) ? RANGED_ATTACK: BASE_ATTACK); + DoneTotal+=bonus->ap_dot_bonus * stack * ApCoeffMod * GetTotalAttackPowerValue( + (IsRangedWeaponSpell(spellProto) && spellProto->DmgClass !=SPELL_DAMAGE_CLASS_MELEE)? RANGED_ATTACK : BASE_ATTACK); } } // Default calculation @@ -9801,15 +9801,15 @@ uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint { coeff = bonus->dot_damage; if (bonus->ap_dot_bonus > 0) - DoneTotal+=bonus->ap_dot_bonus * stack * - GetTotalAttackPowerValue(IsRangedWeaponSpell(spellProto) ? RANGED_ATTACK: BASE_ATTACK); + DoneTotal+=bonus->ap_dot_bonus * stack * GetTotalAttackPowerValue( + (IsRangedWeaponSpell(spellProto) && spellProto->DmgClass !=SPELL_DAMAGE_CLASS_MELEE)? RANGED_ATTACK : BASE_ATTACK); } else { coeff = bonus->direct_damage; if (bonus->ap_bonus > 0) - DoneTotal+=bonus->ap_bonus * stack * - GetTotalAttackPowerValue(IsRangedWeaponSpell(spellProto) ? RANGED_ATTACK: BASE_ATTACK); + DoneTotal+=bonus->ap_dot_bonus * stack * GetTotalAttackPowerValue( + (IsRangedWeaponSpell(spellProto) && spellProto->DmgClass !=SPELL_DAMAGE_CLASS_MELEE)? RANGED_ATTACK : BASE_ATTACK); } } else // scripted bonus |