aboutsummaryrefslogtreecommitdiff
path: root/src/game/Unit.cpp
diff options
context:
space:
mode:
authorQAston <none@none>2009-07-08 22:26:46 +0200
committerQAston <none@none>2009-07-08 22:26:46 +0200
commitf829ee0dc0e669a9d7ca20710dc2a9fcba48f80f (patch)
tree24bd6441a00b8b1e00863ca0e238071e0f7f6285 /src/game/Unit.cpp
parent60e8de1d2ef8d92e43fb9139b82b6ec5e60936dd (diff)
*Correct target requirement for eyes of the beast and add some crash preventing checks to charm code.
--HG-- branch : trunk
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?