diff options
-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); |