aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.cpp4
-rw-r--r--src/server/game/Spells/SpellMgr.cpp20
-rw-r--r--src/server/shared/SharedDefines.h6
-rw-r--r--src/server/shared/enuminfo_SharedDefines.cpp18
4 files changed, 16 insertions, 32 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp
index b33ffa86fea..dcac910c347 100644
--- a/src/server/game/Spells/Auras/SpellAuras.cpp
+++ b/src/server/game/Spells/Auras/SpellAuras.cpp
@@ -2004,8 +2004,8 @@ uint8 Aura::GetProcEffectMask(AuraApplication* aurApp, ProcEventInfo& eventInfo,
return 0;
// check if aura can proc when spell is triggered (exception for hunter auto shot & wands)
- if (spell->IsTriggered() && !(procEntry->AttributesMask & PROC_ATTR_TRIGGERED_CAN_PROC) && !(eventInfo.GetTypeMask() & AUTO_ATTACK_PROC_FLAG_MASK))
- if (!GetSpellInfo()->HasAttribute(SPELL_ATTR3_CAN_PROC_WITH_TRIGGERED))
+ if (!GetSpellInfo()->HasAttribute(SPELL_ATTR3_CAN_PROC_FROM_PROCS) && !(procEntry->AttributesMask & PROC_ATTR_TRIGGERED_CAN_PROC) && !(eventInfo.GetTypeMask() & AUTO_ATTACK_PROC_FLAG_MASK))
+ if (spell->IsTriggered() && !spell->GetSpellInfo()->HasAttribute(SPELL_ATTR3_NOT_A_PROC))
return 0;
if (spell->m_CastItem && (procEntry->AttributesMask & PROC_ATTR_CANT_PROC_FROM_ITEM_CAST))
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index a31d6fcbaab..f5bd8748a44 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -520,22 +520,6 @@ bool SpellMgr::CanSpellTriggerProcOnEvent(SpellProcEntry const& procEntry, ProcE
if (eventInfo.GetTypeMask() & (PROC_FLAG_KILLED | PROC_FLAG_KILL | PROC_FLAG_DEATH))
return true;
- // do triggered cast checks
- // Do not consider autoattacks as triggered spells
- if (!(procEntry.AttributesMask & PROC_ATTR_TRIGGERED_CAN_PROC) && !(eventInfo.GetTypeMask() & AUTO_ATTACK_PROC_FLAG_MASK))
- {
- if (Spell const* spell = eventInfo.GetProcSpell())
- {
- if (spell->IsTriggered())
- {
- SpellInfo const* spellInfo = spell->GetSpellInfo();
- if (!spellInfo->HasAttribute(SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_PROC_2) &&
- !spellInfo->HasAttribute(SPELL_ATTR2_TRIGGERED_CAN_TRIGGER_PROC))
- return false;
- }
- }
- }
-
// check school mask (if set) for other trigger types
if (procEntry.SchoolMask && !(eventInfo.GetSchoolMask() & procEntry.SchoolMask))
return false;
@@ -3237,7 +3221,7 @@ void SpellMgr::LoadSpellInfoCorrections()
{
// due to discrepancies between ranks
spellInfo->EquippedItemSubClassMask = 0x0000FC33;
- spellInfo->AttributesEx3 |= SPELL_ATTR3_CAN_PROC_WITH_TRIGGERED;
+ spellInfo->AttributesEx3 |= SPELL_ATTR3_CAN_PROC_FROM_PROCS;
});
ApplySpellFix({
@@ -3250,7 +3234,7 @@ void SpellMgr::LoadSpellInfoCorrections()
}, [](SpellInfo* spellInfo)
{
// Entries were not updated after spell effect change, we have to do that manually :/
- spellInfo->AttributesEx3 |= SPELL_ATTR3_CAN_PROC_WITH_TRIGGERED;
+ spellInfo->AttributesEx3 |= SPELL_ATTR3_CAN_PROC_FROM_PROCS;
});
ApplySpellFix({
diff --git a/src/server/shared/SharedDefines.h b/src/server/shared/SharedDefines.h
index f6f2e4e7045..e263346932f 100644
--- a/src/server/shared/SharedDefines.h
+++ b/src/server/shared/SharedDefines.h
@@ -507,7 +507,7 @@ enum SpellAttr2 : uint32
SPELL_ATTR2_UNK27 = 0x08000000, // TITLE Unknown attribute 27@Attr2
SPELL_ATTR2_UNK28 = 0x10000000, // TITLE Unknown attribute 28@Attr2
SPELL_ATTR2_CANT_CRIT = 0x20000000, // TITLE Cannot critically strike
- SPELL_ATTR2_TRIGGERED_CAN_TRIGGER_PROC = 0x40000000, // TITLE Allow triggered spell to trigger (type 1) DESCRIPTION Without this attribute, any triggered spell will be unable to trigger other auras' procs
+ SPELL_ATTR2_ACTIVE_THREAT = 0x40000000, // TITLE Active Threat
SPELL_ATTR2_FOOD_BUFF = 0x80000000 // TITLE Food buff (client only)
};
@@ -523,7 +523,7 @@ enum SpellAttr3 : uint32
SPELL_ATTR3_UNK6 = 0x00000040, // TITLE Unknown attribute 6@Attr3
SPELL_ATTR3_STACK_FOR_DIFF_CASTERS = 0x00000080, // TITLE Stack separately for each caster
SPELL_ATTR3_ONLY_TARGET_PLAYERS = 0x00000100, // TITLE Can only target players
- SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_PROC_2 = 0x00000200, // TITLE Allow triggered spell to trigger (type 2) DESCRIPTION Without this attribute, any triggered spell will be unable to trigger other auras' procs
+ SPELL_ATTR3_NOT_A_PROC = 0x00000200, // TITLE Not a Proc DESCRIPTION Without this attribute, any triggered spell will be unable to trigger other auras' procs
SPELL_ATTR3_MAIN_HAND = 0x00000400, // TITLE Require main hand weapon
SPELL_ATTR3_BATTLEGROUND = 0x00000800, // TITLE Can only be cast in battleground
SPELL_ATTR3_ONLY_TARGET_GHOSTS = 0x00001000, // TITLE Can only target ghost players
@@ -540,7 +540,7 @@ enum SpellAttr3 : uint32
SPELL_ATTR3_UNK23 = 0x00800000, // TITLE Unknown attribute 23@Attr3
SPELL_ATTR3_REQ_OFFHAND = 0x01000000, // TITLE Requires offhand weapon
SPELL_ATTR3_TREAT_AS_PERIODIC = 0x02000000, // TITLE Treat as periodic effect
- SPELL_ATTR3_CAN_PROC_WITH_TRIGGERED = 0x04000000, // TITLE Can trigger from triggered spells
+ SPELL_ATTR3_CAN_PROC_FROM_PROCS = 0x04000000, // TITLE Can Proc From Procs
SPELL_ATTR3_DRAIN_SOUL = 0x08000000, // TITLE Drain Soul
SPELL_ATTR3_UNK28 = 0x10000000, // TITLE Unknown attribute 28@Attr3
SPELL_ATTR3_NO_DONE_BONUS = 0x20000000, // TITLE Damage dealt is unaffected by modifiers
diff --git a/src/server/shared/enuminfo_SharedDefines.cpp b/src/server/shared/enuminfo_SharedDefines.cpp
index 61e776be136..776c1f99389 100644
--- a/src/server/shared/enuminfo_SharedDefines.cpp
+++ b/src/server/shared/enuminfo_SharedDefines.cpp
@@ -556,7 +556,7 @@ TC_API_EXPORT EnumText EnumUtils<SpellAttr2>::ToString(SpellAttr2 value)
case SPELL_ATTR2_UNK27: return { "SPELL_ATTR2_UNK27", "Unknown attribute 27@Attr2", "" };
case SPELL_ATTR2_UNK28: return { "SPELL_ATTR2_UNK28", "Unknown attribute 28@Attr2", "" };
case SPELL_ATTR2_CANT_CRIT: return { "SPELL_ATTR2_CANT_CRIT", "Cannot critically strike", "" };
- case SPELL_ATTR2_TRIGGERED_CAN_TRIGGER_PROC: return { "SPELL_ATTR2_TRIGGERED_CAN_TRIGGER_PROC", "Allow triggered spell to trigger (type 1)", "Without this attribute, any triggered spell will be unable to trigger other auras' procs" };
+ case SPELL_ATTR2_ACTIVE_THREAT: return { "SPELL_ATTR2_ACTIVE_THREAT", "Active Threat", "" };
case SPELL_ATTR2_FOOD_BUFF: return { "SPELL_ATTR2_FOOD_BUFF", "Food buff (client only)", "" };
default: throw std::out_of_range("value");
}
@@ -600,7 +600,7 @@ TC_API_EXPORT SpellAttr2 EnumUtils<SpellAttr2>::FromIndex(size_t index)
case 27: return SPELL_ATTR2_UNK27;
case 28: return SPELL_ATTR2_UNK28;
case 29: return SPELL_ATTR2_CANT_CRIT;
- case 30: return SPELL_ATTR2_TRIGGERED_CAN_TRIGGER_PROC;
+ case 30: return SPELL_ATTR2_ACTIVE_THREAT;
case 31: return SPELL_ATTR2_FOOD_BUFF;
default: throw std::out_of_range("index");
}
@@ -641,7 +641,7 @@ TC_API_EXPORT size_t EnumUtils<SpellAttr2>::ToIndex(SpellAttr2 value)
case SPELL_ATTR2_UNK27: return 27;
case SPELL_ATTR2_UNK28: return 28;
case SPELL_ATTR2_CANT_CRIT: return 29;
- case SPELL_ATTR2_TRIGGERED_CAN_TRIGGER_PROC: return 30;
+ case SPELL_ATTR2_ACTIVE_THREAT: return 30;
case SPELL_ATTR2_FOOD_BUFF: return 31;
default: throw std::out_of_range("value");
}
@@ -664,7 +664,7 @@ TC_API_EXPORT EnumText EnumUtils<SpellAttr3>::ToString(SpellAttr3 value)
case SPELL_ATTR3_UNK6: return { "SPELL_ATTR3_UNK6", "Unknown attribute 6@Attr3", "" };
case SPELL_ATTR3_STACK_FOR_DIFF_CASTERS: return { "SPELL_ATTR3_STACK_FOR_DIFF_CASTERS", "Stack separately for each caster", "" };
case SPELL_ATTR3_ONLY_TARGET_PLAYERS: return { "SPELL_ATTR3_ONLY_TARGET_PLAYERS", "Can only target players", "" };
- case SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_PROC_2: return { "SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_PROC_2", "Allow triggered spell to trigger (type 2)", "Without this attribute, any triggered spell will be unable to trigger other auras' procs" };
+ case SPELL_ATTR3_NOT_A_PROC: return { "SPELL_ATTR3_NOT_A_PROC", "Not a Proc", "Without this attribute, any triggered spell will be unable to trigger other auras' procs" };
case SPELL_ATTR3_MAIN_HAND: return { "SPELL_ATTR3_MAIN_HAND", "Require main hand weapon", "" };
case SPELL_ATTR3_BATTLEGROUND: return { "SPELL_ATTR3_BATTLEGROUND", "Can only be cast in battleground", "" };
case SPELL_ATTR3_ONLY_TARGET_GHOSTS: return { "SPELL_ATTR3_ONLY_TARGET_GHOSTS", "Can only target ghost players", "" };
@@ -681,7 +681,7 @@ TC_API_EXPORT EnumText EnumUtils<SpellAttr3>::ToString(SpellAttr3 value)
case SPELL_ATTR3_UNK23: return { "SPELL_ATTR3_UNK23", "Unknown attribute 23@Attr3", "" };
case SPELL_ATTR3_REQ_OFFHAND: return { "SPELL_ATTR3_REQ_OFFHAND", "Requires offhand weapon", "" };
case SPELL_ATTR3_TREAT_AS_PERIODIC: return { "SPELL_ATTR3_TREAT_AS_PERIODIC", "Treat as periodic effect", "" };
- case SPELL_ATTR3_CAN_PROC_WITH_TRIGGERED: return { "SPELL_ATTR3_CAN_PROC_WITH_TRIGGERED", "Can trigger from triggered spells", "" };
+ case SPELL_ATTR3_CAN_PROC_FROM_PROCS: return { "SPELL_ATTR3_CAN_PROC_FROM_PROCS", "Can Proc From Procs", "" };
case SPELL_ATTR3_DRAIN_SOUL: return { "SPELL_ATTR3_DRAIN_SOUL", "Drain Soul", "" };
case SPELL_ATTR3_UNK28: return { "SPELL_ATTR3_UNK28", "Unknown attribute 28@Attr3", "" };
case SPELL_ATTR3_NO_DONE_BONUS: return { "SPELL_ATTR3_NO_DONE_BONUS", "Damage dealt is unaffected by modifiers", "" };
@@ -708,7 +708,7 @@ TC_API_EXPORT SpellAttr3 EnumUtils<SpellAttr3>::FromIndex(size_t index)
case 6: return SPELL_ATTR3_UNK6;
case 7: return SPELL_ATTR3_STACK_FOR_DIFF_CASTERS;
case 8: return SPELL_ATTR3_ONLY_TARGET_PLAYERS;
- case 9: return SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_PROC_2;
+ case 9: return SPELL_ATTR3_NOT_A_PROC;
case 10: return SPELL_ATTR3_MAIN_HAND;
case 11: return SPELL_ATTR3_BATTLEGROUND;
case 12: return SPELL_ATTR3_ONLY_TARGET_GHOSTS;
@@ -725,7 +725,7 @@ TC_API_EXPORT SpellAttr3 EnumUtils<SpellAttr3>::FromIndex(size_t index)
case 23: return SPELL_ATTR3_UNK23;
case 24: return SPELL_ATTR3_REQ_OFFHAND;
case 25: return SPELL_ATTR3_TREAT_AS_PERIODIC;
- case 26: return SPELL_ATTR3_CAN_PROC_WITH_TRIGGERED;
+ case 26: return SPELL_ATTR3_CAN_PROC_FROM_PROCS;
case 27: return SPELL_ATTR3_DRAIN_SOUL;
case 28: return SPELL_ATTR3_UNK28;
case 29: return SPELL_ATTR3_NO_DONE_BONUS;
@@ -749,7 +749,7 @@ TC_API_EXPORT size_t EnumUtils<SpellAttr3>::ToIndex(SpellAttr3 value)
case SPELL_ATTR3_UNK6: return 6;
case SPELL_ATTR3_STACK_FOR_DIFF_CASTERS: return 7;
case SPELL_ATTR3_ONLY_TARGET_PLAYERS: return 8;
- case SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_PROC_2: return 9;
+ case SPELL_ATTR3_NOT_A_PROC: return 9;
case SPELL_ATTR3_MAIN_HAND: return 10;
case SPELL_ATTR3_BATTLEGROUND: return 11;
case SPELL_ATTR3_ONLY_TARGET_GHOSTS: return 12;
@@ -766,7 +766,7 @@ TC_API_EXPORT size_t EnumUtils<SpellAttr3>::ToIndex(SpellAttr3 value)
case SPELL_ATTR3_UNK23: return 23;
case SPELL_ATTR3_REQ_OFFHAND: return 24;
case SPELL_ATTR3_TREAT_AS_PERIODIC: return 25;
- case SPELL_ATTR3_CAN_PROC_WITH_TRIGGERED: return 26;
+ case SPELL_ATTR3_CAN_PROC_FROM_PROCS: return 26;
case SPELL_ATTR3_DRAIN_SOUL: return 27;
case SPELL_ATTR3_UNK28: return 28;
case SPELL_ATTR3_NO_DONE_BONUS: return 29;