@@ -728,6 +728,32 @@ struct SpellTargetPosition
728728
729729typedef UNORDERED_MAP<uint32, SpellTargetPosition> SpellTargetPositionMap;
730730
731+ // Spell linked types
732+ enum SpellLinkedType
733+ {
734+ SPELL_LINKED_TYPE_NONE = 0 ,
735+ SPELL_LINKED_TYPE_BOOST = 1 ,
736+ SPELL_LINKED_TYPE_PRECAST = 2 ,
737+ SPELL_LINKED_TYPE_TRIGGERED = 3 ,
738+ SPELL_LINKED_TYPE_PROC = 4 ,
739+ SPELL_LINKED_TYPE_REMOVEONCAST = 5 ,
740+ SPELL_LINKED_TYPE_REMOVEONREMOVE = 6 ,
741+ SPELL_LINKED_TYPE_CASTONREMOVE = 7 ,
742+ SPELL_LINKED_TYPE_MAX,
743+ };
744+
745+ struct SpellLinkedEntry
746+ {
747+ uint32 spellId;
748+ uint32 linkedId;
749+ uint32 type;
750+ uint32 effectMask;
751+ };
752+
753+ typedef std::multimap<uint32, SpellLinkedEntry> SpellLinkedMap;
754+ typedef std::pair<SpellLinkedMap::const_iterator, SpellLinkedMap::const_iterator> SpellLinkedMapBounds;
755+ typedef std::set<uint32> SpellLinkedSet;
756+
731757// Spell pet auras
732758class PetAura
733759{
@@ -1123,6 +1149,13 @@ class SpellMgr
11231149 return mSpellAreaForAreaMap .equal_range (area_id);
11241150 }
11251151
1152+ SpellLinkedMapBounds GetSpellLinkedMapBounds (uint32 spell_id) const
1153+ {
1154+ return mSpellLinkedMap .equal_range (spell_id);
1155+ }
1156+
1157+ SpellLinkedSet GetSpellLinked (uint32 spell_id, SpellLinkedType type) const ;
1158+
11261159 // Modifiers
11271160 public:
11281161 static SpellMgr& Instance ();
@@ -1139,6 +1172,7 @@ class SpellMgr
11391172 void LoadSpellProcEvents ();
11401173 void LoadSpellProcItemEnchant ();
11411174 void LoadSpellBonuses ();
1175+ void LoadSpellLinked ();
11421176 void LoadSpellTargetPositions ();
11431177 void LoadSpellThreats ();
11441178 void LoadSkillLineAbilityMap ();
@@ -1161,6 +1195,7 @@ class SpellMgr
11611195 SpellProcEventMap mSpellProcEventMap ;
11621196 SpellProcItemEnchantMap mSpellProcItemEnchantMap ;
11631197 SpellBonusMap mSpellBonusMap ;
1198+ SpellLinkedMap mSpellLinkedMap ;
11641199 SkillLineAbilityMap mSkillLineAbilityMap ;
11651200 SkillRaceClassInfoMap mSkillRaceClassInfoMap ;
11661201 SpellPetAuraMap mSpellPetAuraMap ;
0 commit comments