diff options
author | QAston <qaston@gmail.com> | 2011-02-04 02:51:12 +0100 |
---|---|---|
committer | QAston <qaston@gmail.com> | 2011-02-04 02:51:12 +0100 |
commit | f862db8b9291f03030b52d08c8ba144c1171da9d (patch) | |
tree | 23cd9be6ba4bec6a3122463bf055282ceb362949 /src | |
parent | 38ea56952594eeac678ab9f3c85e00cbbfb0d4d0 (diff) |
Core/Unit: Move code using polymorphism out of CharmInfo destructor - fixes issues introduced with 38ea56952594eeac678a.
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 9 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.h | 1 |
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); |