diff --git a/zone/client.h b/zone/client.h index 0c69bbadb..e0732fd92 100644 --- a/zone/client.h +++ b/zone/client.h @@ -655,6 +655,7 @@ public: void Sacrifice(Client* caster); void GoToDeath(); inline const int32 GetInstanceID() const { return zone->GetInstanceID(); } + void SetZoning(bool in) { bZoning = in; } FACTION_VALUE GetReverseFactionCon(Mob* iOther); FACTION_VALUE GetFactionLevel(uint32 char_id, uint32 npc_id, uint32 p_race, uint32 p_class, uint32 p_deity, int32 pFaction, Mob* tnpc); diff --git a/zone/worldserver.cpp b/zone/worldserver.cpp index 18730bb55..6417b9c1d 100644 --- a/zone/worldserver.cpp +++ b/zone/worldserver.cpp @@ -338,6 +338,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) if (ztz->response <= 0) { zc2->success = ZONE_ERROR_NOTREADY; entity->CastToMob()->SetZone(ztz->current_zone_id, ztz->current_instance_id); + entity->CastToClient()->SetZoning(false); } else { entity->CastToClient()->UpdateWho(1); diff --git a/zone/zoning.cpp b/zone/zoning.cpp index ed92e3ca1..cbd928f21 100644 --- a/zone/zoning.cpp +++ b/zone/zoning.cpp @@ -308,6 +308,8 @@ void Client::SendZoneCancel(ZoneChange_Struct *zc) { //reset to unsolicited. zone_mode = ZoneUnsolicited; + // reset since we're not zoning anymore + bZoning = false; } void Client::SendZoneError(ZoneChange_Struct *zc, int8 err) @@ -327,6 +329,8 @@ void Client::SendZoneError(ZoneChange_Struct *zc, int8 err) //reset to unsolicited. zone_mode = ZoneUnsolicited; + // reset since we're not zoning anymore + bZoning = false; } void Client::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) {