aboutsummaryrefslogtreecommitdiff
path: root/src/game/Unit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Unit.cpp')
-rw-r--r--src/game/Unit.cpp10
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?