aboutsummaryrefslogtreecommitdiff
path: root/src/game/SpellMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/SpellMgr.cpp')
-rw-r--r--src/game/SpellMgr.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp
index 208f31540dc..53683a6ebdc 100644
--- a/src/game/SpellMgr.cpp
+++ b/src/game/SpellMgr.cpp
@@ -2266,9 +2266,28 @@ void SpellMgr::LoadSpellLinked()
}
if(type) //we will find a better way when more types are needed
- trigger += 1000000;
+ {
+ if(trigger > 0)
+ trigger += SPELL_LINKED_MAX_SPELLS * type;
+ else
+ trigger -= SPELL_LINKED_MAX_SPELLS * type;
+ }
mSpellLinkedMap[trigger].push_back(effect);
+ if(trigger > 0)
+ {
+ switch(type)
+ {
+ case 0: mSpellCustomAttr[trigger] |= SPELL_ATTR_CU_LINK_CAST; break;
+ case 1: mSpellCustomAttr[trigger] |= SPELL_ATTR_CU_LINK_HIT; break;
+ case 2: mSpellCustomAttr[trigger] |= SPELL_ATTR_CU_LINK_AURA; break;
+ }
+ }
+ else
+ {
+ mSpellCustomAttr[-trigger] |= SPELL_ATTR_CU_LINK_REMOVE;
+ }
+
++count;
} while( result->NextRow() );