[Zone Instances] Handle routing to instances when using evac/succor (#4297)

This commit is contained in:
JJ 2024-05-04 17:59:20 -04:00 committed by GitHub
parent b3538021cc
commit dfd1bfbd49
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 6 additions and 0 deletions

View File

@ -240,6 +240,7 @@ Client::Client(EQStreamInterface *ieqs) : Mob(
runmode = false;
linkdead_timer.Disable();
zonesummon_id = 0;
zonesummon_instance_id = 0;
zonesummon_ignorerestrictions = 0;
bZoning = false;
m_lock_save_position = false;

View File

@ -1951,6 +1951,7 @@ private:
glm::vec4 m_ZoneSummonLocation;
uint16 zonesummon_id;
uint8 zonesummon_instance_id;
uint8 zonesummon_ignorerestrictions;
ZoneMode zone_mode;

View File

@ -94,6 +94,7 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) {
case GMHiddenSummon:
case ZoneSolicited: //we told the client to zone somewhere, so we know where they are going.
target_zone_id = zonesummon_id;
target_instance_id = zonesummon_instance_id;
break;
case GateToBindPoint:
case ZoneToBindPoint:
@ -126,6 +127,7 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) {
// WildcardX 27 January 2008
if (zone_mode == EvacToSafeCoords && zonesummon_id) {
target_zone_id = zonesummon_id;
target_instance_id = zonesummon_instance_id;
} else {
target_zone_id = zc->zoneID;
}
@ -573,6 +575,7 @@ void Client::DoZoneSuccess(ZoneChange_Struct *zc, uint16 zone_id, uint32 instanc
zone_mode = ZoneUnsolicited;
m_ZoneSummonLocation = glm::vec4();
zonesummon_id = 0;
zonesummon_instance_id = 0;
zonesummon_ignorerestrictions = 0;
// this simply resets the zone shutdown timer
@ -959,6 +962,7 @@ void Client::ZonePC(uint32 zoneID, uint32 instance_id, float x, float y, float z
// we hide the real zoneid we want to evac/succor to here
zonesummon_id = zoneID;
zonesummon_instance_id = instance_id;
outapp->priority = 6;
FastQueuePacket(&outapp);