diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 9e76e5f2de..69c8824185 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; } @@ -13423,6 +13422,10 @@ CharmInfo::CharmInfo(Unit* unit) } CharmInfo::~CharmInfo() +{ +} + +void CharmInfo::RestoreState() { if (m_unit->GetTypeId() == TYPEID_UNIT) if (Creature *pCreature = m_unit->ToCreature()) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index debdc830a1..cf885ff4a9 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);