diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Spell.cpp | 15 | ||||
-rw-r--r-- | src/game/Unit.cpp | 4 |
2 files changed, 9 insertions, 10 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 3e7b2519224..add99c25795 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -814,15 +814,14 @@ void Spell::prepareDataForTriggerSystem(AuraEffect const * triggeredByAura) } m_procEx= PROC_EX_NONE; - // Hunter traps spells (for Entrapment trigger) - // Gives your Immolation Trap, Frost Trap, Explosive Trap, and Snake Trap .... - if (m_spellInfo->SpellFamilyName == SPELLFAMILY_HUNTER && (m_spellInfo->SpellFamilyFlags[1] & 0x00002000 || m_spellInfo->SpellFamilyFlags[0] & 0x1C)) - { + // Hunter trap spells - activation proc for Lock and Load, Entrapment and Misdirection + if (m_spellInfo->SpellFamilyName == SPELLFAMILY_HUNTER && + (m_spellInfo->SpellFamilyFlags[0] & 0x18 || // Freezing and Frost Trap, Freezing Arrow + 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; - // Trigger only from spells originally casted by hunter(trap activation) to prevent multiple trigger from trap triggered spells - if (m_originalCasterGUID != m_caster->GetGUID() && m_originalCasterGUID) - return; - } + /* Effects which are result of aura proc from triggered spell cannot proc to prevent chain proc of these spells diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 1c9afc1538a..d9c1179823c 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -8377,8 +8377,8 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig // Lock and Load case 56453: { - // Proc only from trap activation (from periodic proc another aura of this spell) - if (!(procFlags & PROC_FLAG_ON_TRAP_ACTIVATION) || !roll_chance_i(triggerAmount)) + // Proc only from Frost/Freezing trap activation or from Freezing Arrow (the periodic dmg proc handled elsewhere) + if (!(procFlags & PROC_FLAG_ON_TRAP_ACTIVATION) || !procSpell || !(procSpell->SchoolMask & SPELL_SCHOOL_MASK_FROST) || !roll_chance_i(triggerAmount)) return false; break; } |