diff --git a/zone/client.cpp b/zone/client.cpp index 4228f53a3..94a1ccb81 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -11974,6 +11974,8 @@ std::string GetZoneModeString(ZoneMode mode) return "ZoneToSafeCoords"; case GMSummon: return "GMSummon"; + case GMHiddenSummon: + return "GMHiddenSummon"; case ZoneToBindPoint: return "ZoneToBindPoint"; case ZoneSolicited: diff --git a/zone/client.h b/zone/client.h index d171a5fa6..9f168ed79 100644 --- a/zone/client.h +++ b/zone/client.h @@ -112,14 +112,15 @@ enum { //scribing argument to MemorizeSpell //Modes for the zoning state of the client. typedef enum { - ZoneToSafeCoords, // Always send ZonePlayerToBind_Struct to client: Succor/Evac - GMSummon, // Always send ZonePlayerToBind_Struct to client: Only a GM Summon - ZoneToBindPoint, // Always send ZonePlayerToBind_Struct to client: Death Only - ZoneSolicited, // Always send ZonePlayerToBind_Struct to client: Portal, Translocate, Evac spells that have a x y z coord in the spell data + ZoneToSafeCoords, // Always send ZonePlayerToBind_Struct to client: Succor/Evac + GMSummon, // Always send ZonePlayerToBind_Struct to client: Only a GM Summon + GMHiddenSummon, // Always send ZonePlayerToBind_Struct to client silently: Only a GM Summon + ZoneToBindPoint, // Always send ZonePlayerToBind_Struct to client: Death Only + ZoneSolicited, // Always send ZonePlayerToBind_Struct to client: Portal, Translocate, Evac spells that have a x y z coord in the spell data ZoneUnsolicited, - GateToBindPoint, // Always send RequestClientZoneChange_Struct to client: Gate spell or Translocate To Bind Point spell - SummonPC, // In-zone GMMove() always: Call of the Hero spell or some other type of in zone only summons - Rewind, // Summon to /rewind location. + GateToBindPoint, // Always send RequestClientZoneChange_Struct to client: Gate spell or Translocate To Bind Point spell + SummonPC, // In-zone GMMove() always: Call of the Hero spell or some other type of in zone only summons + Rewind, // Summon to /rewind location. EvacToSafeCoords } ZoneMode; diff --git a/zone/gm_commands/summon.cpp b/zone/gm_commands/summon.cpp index ead556744..97bf512b5 100755 --- a/zone/gm_commands/summon.cpp +++ b/zone/gm_commands/summon.cpp @@ -91,7 +91,7 @@ void command_summon(Client *c, const Seperator *sep) c->GetZ(), c->GetHeading(), 2, - GMSummon + c->GetHideMe() ? GMHiddenSummon : GMSummon ); return; } diff --git a/zone/zoning.cpp b/zone/zoning.cpp index b9e479b4d..fd8caed46 100644 --- a/zone/zoning.cpp +++ b/zone/zoning.cpp @@ -88,6 +88,7 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) { target_zone_id = zone->GetZoneID(); break; case GMSummon: + case GMHiddenSummon: case ZoneSolicited: //we told the client to zone somewhere, so we know where they are going. target_zone_id = zonesummon_id; break; @@ -276,6 +277,7 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) { target_heading = safe_heading; break; case GMSummon: + case GMHiddenSummon: target_x = m_ZoneSummonLocation.x; target_y = m_ZoneSummonLocation.y; target_z = m_ZoneSummonLocation.z; @@ -697,6 +699,9 @@ void Client::ProcessMovePC(uint32 zoneID, uint32 instance_id, float x, float y, Message(Chat::Yellow, "You have been summoned by a GM!"); ZonePC(zoneID, instance_id, x, y, z, heading, ignorerestrictions, zm); break; + case GMHiddenSummon: + ZonePC(zoneID, instance_id, x, y, z, heading, ignorerestrictions, zm); + break; case ZoneToBindPoint: ZonePC(zoneID, instance_id, x, y, z, heading, ignorerestrictions, zm); break; @@ -704,7 +709,7 @@ void Client::ProcessMovePC(uint32 zoneID, uint32 instance_id, float x, float y, ZonePC(zoneID, instance_id, x, y, z, heading, ignorerestrictions, zm); break; case SummonPC: - Message(Chat::Yellow, "You have been summoned!"); + MessageString(Chat::Yellow, PLAYER_SUMMONED); ZonePC(zoneID, instance_id, x, y, z, heading, ignorerestrictions, zm); break; case Rewind: @@ -761,6 +766,7 @@ void Client::ZonePC(uint32 zoneID, uint32 instance_id, float x, float y, float z heading = zone_safe_point.w; break; case GMSummon: + case GMHiddenSummon: m_Position = glm::vec4(x, y, z, heading); m_ZoneSummonLocation = m_Position; zonesummon_id = zoneID;