diff options
Diffstat (limited to 'src/game/Unit.cpp')
-rw-r--r-- | src/game/Unit.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 3b88fa9c399..d17d536f468 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -14033,6 +14033,10 @@ void Unit::SetCharmedBy(Unit* charmer, CharmType type) if(GetTypeId() == TYPEID_PLAYER && ((Player*)this)->GetTransport()) return; + // Already charmed + if(GetCharmerGUID()) + return; + CastStop(); CombatStop(); //TODO: CombatStop(true) may cause crash (interrupt spells) DeleteThreatList(); @@ -14122,7 +14126,7 @@ void Unit::SetCharmedBy(Unit* charmer, CharmType type) case CHARM_TYPE_CONVERT: break; } - } + } } void Unit::RemoveCharmedBy(Unit *charmer) @@ -14130,6 +14134,10 @@ void Unit::RemoveCharmedBy(Unit *charmer) if(!isCharmed()) return; + // Charm was not set for unit - return + if (charmer && charmer->m_Controlled.find(this) == charmer->m_Controlled.end()) + return; + if(!charmer) charmer = GetCharmer(); else if(charmer != GetCharmer()) // one aura overrides another? |