diff options
-rw-r--r-- | src/game/SpellMgr.cpp | 24 | ||||
-rw-r--r-- | src/game/SpellMgr.h | 3 | ||||
-rw-r--r-- | src/game/Unit.cpp | 3 |
3 files changed, 20 insertions, 10 deletions
diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 35105593cc6..43ee5d7d4a5 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -410,12 +410,23 @@ SpellSpecific GetSpellSpecific(uint32 spellId) return SPELL_ASPECT; } - for(int i = 0; i < 3; i++) - if( spellInfo->Effect[i] == SPELL_EFFECT_APPLY_AURA && ( - spellInfo->EffectApplyAuraName[i] == SPELL_AURA_TRACK_CREATURES || - spellInfo->EffectApplyAuraName[i] == SPELL_AURA_TRACK_RESOURCES || - spellInfo->EffectApplyAuraName[i] == SPELL_AURA_TRACK_STEALTHED ) ) - return SPELL_TRACKER; + for(int i = 0; i < 3; ++i) + { + if(spellInfo->Effect[i] == SPELL_EFFECT_APPLY_AURA) + { + switch(spellInfo->EffectApplyAuraName[i]) + { + case SPELL_AURA_TRACK_CREATURES: + case SPELL_AURA_TRACK_RESOURCES: + case SPELL_AURA_TRACK_STEALTHED: + return SPELL_TRACKER; + case SPELL_AURA_MOD_CHARM: + case SPELL_AURA_MOD_POSSESS_PET: + case SPELL_AURA_MOD_POSSESS: + return SPELL_CHARM; + } + } + } // elixirs can have different families, but potion most ofc. if(SpellSpecific sp = spellmgr.GetSpellElixirSpecific(spellInfo->Id)) @@ -455,6 +466,7 @@ bool IsSingleFromSpellSpecificPerTarget(uint32 spellSpec1,uint32 spellSpec2) case SPELL_WELL_FED: case SPELL_DRINK: case SPELL_FOOD: + case SPELL_CHARM: return spellSpec1==spellSpec2; case SPELL_BATTLE_ELIXIR: return spellSpec2==SPELL_BATTLE_ELIXIR diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h index f823c7e9c09..4ac0871e853 100644 --- a/src/game/SpellMgr.h +++ b/src/game/SpellMgr.h @@ -288,7 +288,8 @@ enum SpellSpecific SPELL_WARLOCK_CORRUPTION= 17, SPELL_WELL_FED = 18, SPELL_DRINK = 19, - SPELL_FOOD = 20 + SPELL_FOOD = 20, + SPELL_CHARM = 21, }; #define SPELL_LINKED_MAX_SPELLS 200000 diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index ee52ad1367d..9ed77d70cb2 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -12969,9 +12969,6 @@ void Unit::SetCharmedOrPossessedBy(Unit* charmer, bool possess) if(GetTypeId() == TYPEID_PLAYER) ((Player*)this)->StopCastingCharm(); - // Charmed stop being charmed - RemoveCharmAuras(); - // Set charmed charmer->SetCharm(this); SetCharmerGUID(charmer->GetGUID()); |