diff --git a/zone/object.cpp b/zone/object.cpp index 252c7c04b..c4f75214a 100644 --- a/zone/object.cpp +++ b/zone/object.cpp @@ -75,6 +75,8 @@ decay_timer(300000) decay_timer.Disable(); } + memset(m_display_name, 0, sizeof(m_display_name)); + respawn_timer.Disable(); // Set drop_id to zero - it will be set when added to zone with SetID() @@ -122,6 +124,8 @@ decay_timer(300000) // Set as much struct data as we can memset(&m_data, 0, sizeof(Object_Struct)); + memset(m_display_name, 0, sizeof(m_display_name)); + m_data.heading = heading; m_data.z = z; m_data.zone_id = zone->GetZoneID(); @@ -164,6 +168,8 @@ decay_timer(300000) // Set as much struct data as we can memset(&m_data, 0, sizeof(Object_Struct)); + memset(m_display_name, 0, sizeof(m_display_name)); + m_data.heading = client->GetHeading(); m_data.x = client->GetX(); m_data.y = client->GetY(); @@ -236,6 +242,8 @@ decay_timer(decay_time) // Set as much struct data as we can memset(&m_data, 0, sizeof(Object_Struct)); + memset(m_display_name, 0, sizeof(m_display_name)); + m_data.heading = heading; m_data.x = x; m_data.y = y; @@ -312,6 +320,8 @@ decay_timer(decay_time) m_data.z = z; m_data.zone_id = zone->GetZoneID(); + memset(m_display_name, 0, sizeof(m_display_name)); + if (!IsFixZEnabled()) { FixZ(); } @@ -353,6 +363,8 @@ void Object::SetID(uint16 set_id) // Reset state of object back to zero void Object::ResetState() { + Close(); + safe_delete(m_inst); m_id = 0; @@ -440,6 +452,12 @@ void Object::Close() { } } + auto outapp = new EQApplicationPacket(OP_ClearObject, sizeof(ClearObject_Struct)); + ClearObject_Struct *cos = (ClearObject_Struct *)outapp->pBuffer; + cos->Clear = 1; + user->QueuePacket(outapp); + safe_delete(outapp); + user->SetTradeskillObject(nullptr); }