diff options
| author | QAston <none@none> | 2010-10-08 19:17:49 +0200 |
|---|---|---|
| committer | QAston <none@none> | 2010-10-08 19:17:49 +0200 |
| commit | e5e53498cede475ae0d80623e89c4a3cbec39b62 (patch) | |
| tree | dd36ff2d5749c91f2c1d2179cb120bdac8f52b81 /src/server/game/Spells/Spell.cpp | |
| parent | 3339e6345eb4cf252b0a803d212ba505ecb7a431 (diff) | |
Core/Spells:
- Add more descriptive enumerator of procflags - now clearly pointing out that proc flags are dependant to the spell dmg class of the spells causing procs.
- Define and implement PROC_FLAG_DONE_MAINHAND_ATTACK.
--HG--
branch : trunk
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
| -rwxr-xr-x | src/server/game/Spells/Spell.cpp | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 95cb5d5ffcd..b7c8049e1e4 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -847,22 +847,24 @@ void Spell::prepareDataForTriggerSystem(AuraEffect const * /*triggeredByAura*/) switch (m_spellInfo->DmgClass) { case SPELL_DAMAGE_CLASS_MELEE: - m_procAttacker = PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT; + m_procAttacker = PROC_FLAG_DONE_SPELL_MELEE_DMG_CLASS; if (m_attackType == OFF_ATTACK) - m_procAttacker |= PROC_FLAG_SUCCESSFUL_OFFHAND_HIT; - m_procVictim = PROC_FLAG_TAKEN_MELEE_SPELL_HIT; + m_procAttacker |= PROC_FLAG_DONE_OFFHAND_ATTACK; + else + m_procAttacker |= PROC_FLAG_DONE_MAINHAND_ATTACK; + m_procVictim = PROC_FLAG_TAKEN_MELEE_AUTO_ATTACK; break; case SPELL_DAMAGE_CLASS_RANGED: // Auto attack if (m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_AUTOREPEAT_FLAG) { - m_procAttacker = PROC_FLAG_SUCCESSFUL_RANGED_HIT; - m_procVictim = PROC_FLAG_TAKEN_RANGED_HIT; + m_procAttacker = PROC_FLAG_DONE_RANGED_AUTO_ATTACK; + m_procVictim = PROC_FLAG_TAKEN_RANGED_AUTO_ATTACK; } else // Ranged spell attack { - m_procAttacker = PROC_FLAG_SUCCESSFUL_RANGED_SPELL_HIT; - m_procVictim = PROC_FLAG_TAKEN_RANGED_SPELL_HIT; + m_procAttacker = PROC_FLAG_DONE_SPELL_RANGED_DMG_CLASS; + m_procVictim = PROC_FLAG_TAKEN_SPELL_RANGED_DMG_CLASS; } break; default: @@ -870,8 +872,8 @@ void Spell::prepareDataForTriggerSystem(AuraEffect const * /*triggeredByAura*/) m_spellInfo->EquippedItemSubClassMask & (1<<ITEM_SUBCLASS_WEAPON_WAND) && m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_AUTOREPEAT_FLAG) // Wands auto attack { - m_procAttacker = PROC_FLAG_SUCCESSFUL_RANGED_HIT; - m_procVictim = PROC_FLAG_TAKEN_RANGED_HIT; + m_procAttacker = PROC_FLAG_DONE_RANGED_AUTO_ATTACK; + m_procVictim = PROC_FLAG_TAKEN_RANGED_AUTO_ATTACK; } // For other spells trigger procflags are set in Spell::DoAllEffectOnTarget // Because spell positivity is dependant on target @@ -884,7 +886,7 @@ void Spell::prepareDataForTriggerSystem(AuraEffect const * /*triggeredByAura*/) m_spellInfo->Id == 57879 || // Snake Trap - done this way to avoid double proc m_spellInfo->SpellFamilyFlags[2] & 0x00024000)) // Explosive and Immolation Trap - m_procAttacker |= PROC_FLAG_ON_TRAP_ACTIVATION; + m_procAttacker |= PROC_FLAG_DONE_TRAP_ACTIVATION; /* Effects which are result of aura proc from triggered spell cannot proc @@ -894,12 +896,12 @@ void Spell::prepareDataForTriggerSystem(AuraEffect const * /*triggeredByAura*/) // Hellfire Effect - trigger as DOT if (m_spellInfo->SpellFamilyName == SPELLFAMILY_WARLOCK && m_spellInfo->SpellFamilyFlags[0] & 0x00000040) { - m_procAttacker = PROC_FLAG_ON_DO_PERIODIC; - m_procVictim = PROC_FLAG_ON_TAKE_PERIODIC; + m_procAttacker = PROC_FLAG_DONE_PERIODIC; + m_procVictim = PROC_FLAG_TAKEN_PERIODIC; } // Ranged autorepeat attack is set as triggered spell - ignore it - if (!(m_procAttacker & PROC_FLAG_SUCCESSFUL_RANGED_HIT)) + if (!(m_procAttacker & PROC_FLAG_DONE_RANGED_AUTO_ATTACK)) { if (m_IsTriggeredSpell && (m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_TRIGGERED_CAN_TRIGGER || @@ -1215,25 +1217,25 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target) case SPELL_DAMAGE_CLASS_MAGIC: if (positive) { - procAttacker |= PROC_FLAG_SUCCESSFUL_POSITIVE_MAGIC_SPELL; - procVictim |= PROC_FLAG_TAKEN_POSITIVE_MAGIC_SPELL; + procAttacker |= PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_POS; + procVictim |= PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_POS; } else { - procAttacker |= PROC_FLAG_SUCCESSFUL_NEGATIVE_MAGIC_SPELL; - procVictim |= PROC_FLAG_TAKEN_NEGATIVE_MAGIC_SPELL; + procAttacker |= PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG; + procVictim |= PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_NEG; } break; case SPELL_DAMAGE_CLASS_NONE: if (positive) { - procAttacker |= PROC_FLAG_SUCCESSFUL_POSITIVE_SPELL_HIT; - procVictim |= PROC_FLAG_TAKEN_POSITIVE_SPELL; + procAttacker |= PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_POS; + procVictim |= PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_POS; } else { - procAttacker |= PROC_FLAG_SUCCESSFUL_NEGATIVE_SPELL_HIT; - procVictim |= PROC_FLAG_TAKEN_NEGATIVE_SPELL_HIT; + procAttacker |= PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_NEG; + procVictim |= PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_NEG; } break; } @@ -1275,7 +1277,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target) caster->SendSpellNonMeleeDamageLog(&damageInfo); procEx |= createProcExtendMask(&damageInfo, missInfo); - procVictim |= PROC_FLAG_TAKEN_ANY_DAMAGE; + procVictim |= PROC_FLAG_TAKEN_DAMAGE; // Do triggers for unit (reflect triggers passed on hit phase for correct drop charge) if (canEffectTrigger && missInfo != SPELL_MISS_REFLECT) @@ -3506,15 +3508,15 @@ void Spell::_handle_immediate_phase() { case SPELL_DAMAGE_CLASS_MAGIC: if (positive) - procAttacker |= PROC_FLAG_SUCCESSFUL_POSITIVE_MAGIC_SPELL; + procAttacker |= PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_POS; else - procAttacker |= PROC_FLAG_SUCCESSFUL_NEGATIVE_MAGIC_SPELL; + procAttacker |= PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG; break; case SPELL_DAMAGE_CLASS_NONE: if (positive) - procAttacker |= PROC_FLAG_SUCCESSFUL_POSITIVE_SPELL_HIT; + procAttacker |= PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_POS; else - procAttacker |= PROC_FLAG_SUCCESSFUL_NEGATIVE_SPELL_HIT; + procAttacker |= PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_NEG; break; } } |
