aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorQAston <qaston@gmail.com>2011-02-04 02:51:12 +0100
committerQAston <qaston@gmail.com>2011-02-04 02:51:12 +0100
commitf862db8b9291f03030b52d08c8ba144c1171da9d (patch)
tree23cd9be6ba4bec6a3122463bf055282ceb362949 /src
parent38ea56952594eeac678ab9f3c85e00cbbfb0d4d0 (diff)
Core/Unit: Move code using polymorphism out of CharmInfo destructor - fixes issues introduced with 38ea56952594eeac678a.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp9
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.h1
2 files changed, 7 insertions, 3 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 9e76e5f2def..69c88241859 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -206,7 +206,7 @@ Unit::~Unit()
_DeleteRemovedAuras();
- ASSERT(!m_charmInfo);
+ delete m_charmInfo;
delete m_vehicleKit;
ASSERT(!m_duringRemoveFromWorld);
@@ -13360,8 +13360,6 @@ void Unit::CleanupsBeforeDelete(bool finalCleanup)
if (Creature* thisCreature = ToCreature())
if (GetTransport())
GetTransport()->RemovePassenger(thisCreature);
-
- DeleteCharmInfo();
}
void Unit::UpdateCharmAI()
@@ -13404,6 +13402,7 @@ void Unit::DeleteCharmInfo()
if (!m_charmInfo)
return;
+ m_charmInfo->RestoreState();
delete m_charmInfo;
m_charmInfo = NULL;
}
@@ -13424,6 +13423,10 @@ CharmInfo::CharmInfo(Unit* unit)
CharmInfo::~CharmInfo()
{
+}
+
+void CharmInfo::RestoreState()
+{
if (m_unit->GetTypeId() == TYPEID_UNIT)
if (Creature *pCreature = m_unit->ToCreature())
pCreature->SetReactState(m_oldReactState);
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index debdc830a13..cf885ff4a98 100755
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1027,6 +1027,7 @@ struct CharmInfo
public:
explicit CharmInfo(Unit* unit);
~CharmInfo();
+ void RestoreState();
uint32 GetPetNumber() const { return m_petnumber; }
void SetPetNumber(uint32 petnumber, bool statwindow);