aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2019-08-17 22:30:27 +0200
committerShauren <shauren.trinity@gmail.com>2019-08-17 22:30:27 +0200
commit3a4216fd979eb2a7667b0861a770e9af4f242eab (patch)
tree2af5b7f9e8820093b0d83512cc0a4afd16bff8c0 /src/server/scripts
parent6e64cea69c94a74142b45aea53f589dcad57b5d8 (diff)
Core/Map: Kill zoneId from RespawnInfo, all it did was significantly slow down startup to make one gm command faster
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Commands/cs_list.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/server/scripts/Commands/cs_list.cpp b/src/server/scripts/Commands/cs_list.cpp
index ccca7e79493..e6981873cc9 100644
--- a/src/server/scripts/Commands/cs_list.cpp
+++ b/src/server/scripts/Commands/cs_list.cpp
@@ -683,6 +683,7 @@ public:
AreaTableEntry const* zoneEntry = sAreaTableStore.LookupEntry(zoneId);
return zoneEntry ? zoneEntry->area_name[locale] : "<unknown zone>";
}
+
static bool HandleListRespawnsCommand(ChatHandler* handler, char const* args)
{
Player const* player = handler->GetSession()->GetPlayer();
@@ -695,27 +696,40 @@ public:
char const* stringOverdue = sObjectMgr->GetTrinityString(LANG_LIST_RESPAWNS_OVERDUE, locale);
uint32 zoneId = player->GetZoneId();
+ char const* zoneName = GetZoneName(zoneId, locale);
for (SpawnObjectType type : EnumUtils::Iterate<SpawnObjectType>())
{
if (range)
handler->PSendSysMessage(LANG_LIST_RESPAWNS_RANGE, EnumUtils::ToTitle(type), range);
else
- handler->PSendSysMessage(LANG_LIST_RESPAWNS_ZONE, EnumUtils::ToTitle(type), GetZoneName(zoneId, locale), zoneId);
+ handler->PSendSysMessage(LANG_LIST_RESPAWNS_ZONE, EnumUtils::ToTitle(type), zoneName, zoneId);
+
handler->PSendSysMessage(LANG_LIST_RESPAWNS_LISTHEADER);
std::vector<RespawnInfo*> respawns;
map->GetRespawnInfo(respawns, SpawnObjectTypeMask(1 << type), range ? 0 : zoneId);
- for (RespawnInfo* ri : respawns)
+ for (RespawnInfo const* ri : respawns)
{
SpawnData const* data = sObjectMgr->GetSpawnData(ri->type, ri->spawnId);
if (!data)
continue;
- if (range && !player->IsInDist(data->spawnPoint, range))
- continue;
+
+ uint32 respawnZoneId = map->GetZoneId(data->spawnPoint);
+ if (range)
+ {
+ if (!player->IsInDist(data->spawnPoint, range))
+ continue;
+ }
+ else
+ {
+ if (zoneId != respawnZoneId)
+ continue;
+ }
+
uint32 gridY = ri->gridId / MAX_NUMBER_OF_GRIDS;
uint32 gridX = ri->gridId % MAX_NUMBER_OF_GRIDS;
std::string respawnTime = ri->respawnTime > GameTime::GetGameTime() ? secsToTimeString(uint64(ri->respawnTime - GameTime::GetGameTime()), true) : stringOverdue;
- handler->PSendSysMessage("%u | %u | [%02u,%02u] | %s (%u) | %s%s", ri->spawnId, ri->entry, gridX, gridY, GetZoneName(ri->zoneId, locale), ri->zoneId, respawnTime.c_str(), map->IsSpawnGroupActive(data->spawnGroupData->groupId) ? "" : " (inactive)");
+ handler->PSendSysMessage("%u | %u | [%02u,%02u] | %s (%u) | %s%s", ri->spawnId, ri->entry, gridX, gridY, GetZoneName(respawnZoneId, locale), respawnZoneId, respawnTime.c_str(), map->IsSpawnGroupActive(data->spawnGroupData->groupId) ? "" : " (inactive)");
}
}
return true;