diff --git a/zone/client.cpp b/zone/client.cpp index 7cff859b2..c894a0ad9 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -156,7 +156,8 @@ Client::Client(EQStreamInterface* ieqs) merc_timer(RuleI(Mercs, UpkeepIntervalMS)), ItemTickTimer(10000), ItemQuestTimer(500), - m_Proximity(FLT_MAX, FLT_MAX, FLT_MAX) //arbitrary large number + m_Proximity(FLT_MAX, FLT_MAX, FLT_MAX), //arbitrary large number + m_ZoneSummonLocation(-2.0f,-2.0f,-2.0f) { for(int cf=0; cf < _FilterCount; cf++) ClientFilters[cf] = FilterShow; @@ -202,9 +203,6 @@ Client::Client(EQStreamInterface* ieqs) auto_attack = false; auto_fire = false; linkdead_timer.Disable(); - zonesummon_x = -2; - zonesummon_y = -2; - zonesummon_z = -2; zonesummon_id = 0; zonesummon_ignorerestrictions = 0; zoning = false; diff --git a/zone/client.h b/zone/client.h index 0bba0d931..53a8ad521 100644 --- a/zone/client.h +++ b/zone/client.h @@ -1368,9 +1368,8 @@ private: void DoZoneSuccess(ZoneChange_Struct *zc, uint16 zone_id, uint32 instance_id, float dest_x, float dest_y, float dest_z, float dest_h, int8 ignore_r); void ZonePC(uint32 zoneID, uint32 instance_id, float x, float y, float z, float heading, uint8 ignorerestrictions, ZoneMode zm); void ProcessMovePC(uint32 zoneID, uint32 instance_id, float x, float y, float z, float heading, uint8 ignorerestrictions = 0, ZoneMode zm = ZoneSolicited); - float zonesummon_x; - float zonesummon_y; - float zonesummon_z; + + xyz_location m_ZoneSummonLocation; uint16 zonesummon_id; uint8 zonesummon_ignorerestrictions; ZoneMode zone_mode; diff --git a/zone/zoning.cpp b/zone/zoning.cpp index 3032662ab..49a5601aa 100644 --- a/zone/zoning.cpp +++ b/zone/zoning.cpp @@ -195,9 +195,9 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) { dest_z = safe_z; break; case GMSummon: - dest_x = zonesummon_x; - dest_y = zonesummon_y; - dest_z = zonesummon_z; + dest_x = m_ZoneSummonLocation.m_X; + dest_y = m_ZoneSummonLocation.m_Y; + dest_z = m_ZoneSummonLocation.m_Z; ignorerestrictions = 1; break; case GateToBindPoint: @@ -213,9 +213,9 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) { break; case ZoneSolicited: //we told the client to zone somewhere, so we know where they are going. //recycle zonesummon variables - dest_x = zonesummon_x; - dest_y = zonesummon_y; - dest_z = zonesummon_z; + dest_x = m_ZoneSummonLocation.m_X; + dest_y = m_ZoneSummonLocation.m_Y; + dest_z = m_ZoneSummonLocation.m_Z; break; case ZoneUnsolicited: //client came up with this on its own. //client requested a zoning... what are the cases when this could happen? @@ -391,9 +391,7 @@ void Client::DoZoneSuccess(ZoneChange_Struct *zc, uint16 zone_id, uint32 instanc //reset to unsolicited. zone_mode = ZoneUnsolicited; - zonesummon_x = 0; - zonesummon_y = 0; - zonesummon_z = 0; + m_ZoneSummonLocation = xyz_location::Origin(); zonesummon_id = 0; zonesummon_ignorerestrictions = 0; } @@ -500,18 +498,14 @@ void Client::ZonePC(uint32 zoneID, uint32 instance_id, float x, float y, float z SetHeading(heading); break; case GMSummon: - zonesummon_x = m_Position.m_X = x; - zonesummon_y = m_Position.m_Y = y; - zonesummon_z = m_Position.m_Z = z; + m_ZoneSummonLocation = m_Position = xyz_heading(x,y,z,heading); SetHeading(heading); zonesummon_id = zoneID; zonesummon_ignorerestrictions = 1; break; case ZoneSolicited: - zonesummon_x = x; - zonesummon_y = y; - zonesummon_z = z; + m_ZoneSummonLocation = xyz_location(x,y,z); SetHeading(heading); zonesummon_id = zoneID; @@ -533,16 +527,12 @@ void Client::ZonePC(uint32 zoneID, uint32 instance_id, float x, float y, float z LogFile->write(EQEMuLog::Debug, "Player %s has died and will be zoned to bind point in zone: %s at LOC x=%f, y=%f, z=%f, heading=%f", GetName(), pZoneName, m_pp.binds[0].x, m_pp.binds[0].y, m_pp.binds[0].z, m_pp.binds[0].heading); break; case SummonPC: - zonesummon_x = m_Position.m_X = x; - zonesummon_y = m_Position.m_Y = y; - zonesummon_z = m_Position.m_Z = z; + m_ZoneSummonLocation = m_Position = xyz_location(x, y, z); SetHeading(heading); break; case Rewind: LogFile->write(EQEMuLog::Debug, "%s has requested a /rewind from %f, %f, %f, to %f, %f, %f in %s", GetName(), m_Position.m_X, m_Position.m_Y, m_Position.m_Z, m_RewindLocation.m_X, m_RewindLocation.m_Y, m_RewindLocation.m_Z, zone->GetShortName()); - zonesummon_x = m_Position.m_X = x; - zonesummon_y = m_Position.m_Y = y; - zonesummon_z = m_Position.m_Z = z; + m_ZoneSummonLocation = m_Position = xyz_location(x, y, z); SetHeading(heading); break; default: @@ -682,9 +672,7 @@ void Client::ZonePC(uint32 zoneID, uint32 instance_id, float x, float y, float z { if(zm != EvacToSafeCoords && zm != ZoneToSafeCoords && zm != ZoneToBindPoint) { - zonesummon_x = 0; - zonesummon_y = 0; - zonesummon_z = 0; + m_ZoneSummonLocation = xyz_location::Origin(); zonesummon_id = 0; zonesummon_ignorerestrictions = 0; zone_mode = ZoneUnsolicited;