diff --git a/dGame/Entity.cpp b/dGame/Entity.cpp index b53dd1bc..91a13dda 100644 --- a/dGame/Entity.cpp +++ b/dGame/Entity.cpp @@ -167,6 +167,7 @@ Entity::~Entity() { if (m_Character) { m_Character->SaveXMLToDatabase(); + m_Character->SetEntity(nullptr); } CancelAllTimers(); diff --git a/dGame/UserManager.cpp b/dGame/UserManager.cpp index 85757ec1..886e3415 100644 --- a/dGame/UserManager.cpp +++ b/dGame/UserManager.cpp @@ -526,7 +526,7 @@ void UserManager::LoginCharacter(const SystemAddress& sysAddr, uint32_t playerID ZoneInstanceManager::Instance()->RequestZoneTransfer(Game::server, zoneID, character->GetZoneClone(), false, [=](bool mythranShift, uint32_t zoneID, uint32_t zoneInstance, uint32_t zoneClone, std::string serverIP, uint16_t serverPort) { LOG("Transferring %s to Zone %i (Instance %i | Clone %i | Mythran Shift: %s) with IP %s and Port %i", character->GetName().c_str(), zoneID, zoneInstance, zoneClone, mythranShift == true ? "true" : "false", serverIP.c_str(), serverPort); if (character) { - auto* entity = character->GetEntity(); + auto* entity = Game::entityManager->GetEntity(character->GetObjectID()); if (entity) { auto* characterComponent = entity->GetComponent(); if (characterComponent) {