diff options
Diffstat (limited to 'src/server/scripts/Commands')
| -rw-r--r-- | src/server/scripts/Commands/cs_go.cpp | 34 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_list.cpp | 30 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_npc.cpp | 2 |
3 files changed, 35 insertions, 31 deletions
diff --git a/src/server/scripts/Commands/cs_go.cpp b/src/server/scripts/Commands/cs_go.cpp index 98d599e2720..47e1c737849 100644 --- a/src/server/scripts/Commands/cs_go.cpp +++ b/src/server/scripts/Commands/cs_go.cpp @@ -85,13 +85,15 @@ public: return commandTable; } - static bool DoTeleport(ChatHandler* handler, WorldLocation loc) + static bool DoTeleport(ChatHandler* handler, Position pos, uint32 mapId = MAPID_INVALID) { Player* player = handler->GetSession()->GetPlayer(); - if (!MapManager::IsValidMapCoord(loc) || sObjectMgr->IsTransportMap(loc.GetMapId())) + if (mapId == MAPID_INVALID) + mapId = player->GetMapId(); + if (!MapManager::IsValidMapCoord(mapId, pos) || sObjectMgr->IsTransportMap(mapId)) { - handler->PSendSysMessage(LANG_INVALID_TARGET_COORD, loc.GetPositionX(), loc.GetPositionY(), loc.GetMapId()); + handler->PSendSysMessage(LANG_INVALID_TARGET_COORD, pos.GetPositionX(), pos.GetPositionY(), mapId); handler->SetSentErrorMessage(true); return false; } @@ -102,7 +104,7 @@ public: else player->SaveRecallPosition(); // save only in non-flight case - player->TeleportTo(loc); + player->TeleportTo({ mapId, pos }); return true; } @@ -116,7 +118,7 @@ public: return false; } - return DoTeleport(handler, spawnpoint->spawnPoint); + return DoTeleport(handler, spawnpoint->spawnPoint, spawnpoint->mapId); } static bool HandleGoCreatureCIdCommand(ChatHandler* handler, Variant<Hyperlink<creature_entry>, uint32> cId) @@ -143,7 +145,7 @@ public: return false; } - return DoTeleport(handler, spawnpoint->spawnPoint); + return DoTeleport(handler, spawnpoint->spawnPoint, spawnpoint->mapId); } static bool HandleGoGameObjectSpawnIdCommand(ChatHandler* handler, uint32 spawnId) @@ -156,7 +158,7 @@ public: return false; } - return DoTeleport(handler, spawnpoint->spawnPoint); + return DoTeleport(handler, spawnpoint->spawnPoint, spawnpoint->mapId); } static bool HandleGoGameObjectGOIdCommand(ChatHandler* handler, uint32 goId) @@ -183,7 +185,7 @@ public: return false; } - return DoTeleport(handler, spawnpoint->spawnPoint); + return DoTeleport(handler, spawnpoint->spawnPoint, spawnpoint->mapId); } static bool HandleGoGraveyardCommand(ChatHandler* handler, uint32 gyId) @@ -315,7 +317,7 @@ public: handler->SetSentErrorMessage(true); return false; } - return DoTeleport(handler, { node->ContinentID, { node->Pos.X, node->Pos.Y, node->Pos.Z } }); + return DoTeleport(handler, { node->Pos.X, node->Pos.Y, node->Pos.Z }, node->ContinentID); } static bool HandleGoAreaTriggerCommand(ChatHandler* handler, Variant<Hyperlink<areatrigger>, uint32> areaTriggerId) @@ -327,7 +329,7 @@ public: handler->SetSentErrorMessage(true); return false; } - return DoTeleport(handler, { uint32(at->ContinentID), { at->Pos.X, at->Pos.Y, at->Pos.Z } }); + return DoTeleport(handler, { at->Pos.X, at->Pos.Y, at->Pos.Z }, at->ContinentID); } //teleport at coordinates @@ -428,7 +430,7 @@ public: z = std::max(map->GetStaticHeight(PhasingHandler::GetEmptyPhaseShift(), x, y, MAX_HEIGHT), map->GetWaterLevel(PhasingHandler::GetEmptyPhaseShift(), x, y)); } - return DoTeleport(handler, { mapId, { x, y, *z, o.get_value_or(0.0f) } }); + return DoTeleport(handler, { x, y, *z, o.get_value_or(0.0f) }, mapId); } template<typename T> @@ -455,7 +457,7 @@ public: static bool HandleGoOffsetCommand(ChatHandler* handler, float dX, Optional<float> dY, Optional<float> dZ, Optional<float> dO) { - WorldLocation loc = handler->GetSession()->GetPlayer()->GetWorldLocation(); + Position loc = handler->GetSession()->GetPlayer()->GetPosition(); loc.RelocateOffset({ dX, dY.get_value_or(0.0f), dZ.get_value_or(0.0f), dO.get_value_or(0.0f) }); return DoTeleport(handler, loc); @@ -620,9 +622,9 @@ public: handler->PSendSysMessage(LANG_COMMAND_BOSS_MULTIPLE_SPAWNS, boss->Name.c_str(), boss->Entry); for (CreatureData const* spawn : spawns) { - uint32 const mapId = spawn->spawnPoint.GetMapId(); + uint32 const mapId = spawn->mapId; MapEntry const* const map = ASSERT_NOTNULL(sMapStore.LookupEntry(mapId)); - handler->PSendSysMessage(LANG_COMMAND_BOSS_MULTIPLE_SPAWN_ETY, spawn->spawnId, mapId, map->MapName[handler->GetSessionDbcLocale()], spawn->spawnPoint.GetPosition().ToString().c_str()); + handler->PSendSysMessage(LANG_COMMAND_BOSS_MULTIPLE_SPAWN_ETY, spawn->spawnId, mapId, map->MapName[handler->GetSessionDbcLocale()], spawn->spawnPoint.ToString().c_str()); } handler->SetSentErrorMessage(true); return false; @@ -635,8 +637,8 @@ public: player->SaveRecallPosition(); CreatureData const* const spawn = spawns.front(); - uint32 const mapId = spawn->spawnPoint.GetMapId(); - if (!player->TeleportTo(spawn->spawnPoint)) + uint32 const mapId = spawn->mapId; + if (!player->TeleportTo({ mapId, spawn->spawnPoint })) { char const* const mapName = ASSERT_NOTNULL(sMapStore.LookupEntry(mapId))->MapName[handler->GetSessionDbcLocale()]; handler->PSendSysMessage(LANG_COMMAND_GO_BOSS_FAILED, spawn->spawnId, boss->Name.c_str(), boss->Entry, mapName); diff --git a/src/server/scripts/Commands/cs_list.cpp b/src/server/scripts/Commands/cs_list.cpp index b0fdcd613d2..f0856c9a028 100644 --- a/src/server/scripts/Commands/cs_list.cpp +++ b/src/server/scripts/Commands/cs_list.cpp @@ -658,7 +658,7 @@ public: for (auto const& pair : sObjectMgr->GetAllCreatureData()) { SpawnData const& data = pair.second; - if (data.spawnPoint.GetMapId() != mapId) + if (data.mapId != mapId) continue; CreatureTemplate const* cTemp = sObjectMgr->GetCreatureTemplate(data.id); if (!cTemp) @@ -669,7 +669,7 @@ public: for (auto const& pair : sObjectMgr->GetAllGameObjectData()) { SpawnData const& data = pair.second; - if (data.spawnPoint.GetMapId() != mapId) + if (data.mapId != mapId) continue; GameObjectTemplate const* goTemp = sObjectMgr->GetGameObjectTemplate(data.id); if (!goTemp) @@ -711,25 +711,27 @@ public: map->GetRespawnInfo(respawns, SpawnObjectTypeMask(1 << type)); for (RespawnInfo const* ri : respawns) { - SpawnData const* data = sObjectMgr->GetSpawnData(ri->type, ri->spawnId); + SpawnMetadata const* data = sObjectMgr->GetSpawnMetadata(ri->type, ri->spawnId); if (!data) continue; - uint32 respawnZoneId = map->GetZoneId(PhasingHandler::GetEmptyPhaseShift(), data->spawnPoint); - if (range) + uint32 respawnZoneId = 0; + if (SpawnData const* edata = data->ToSpawnData()) { - if (!player->IsInDist(data->spawnPoint, range)) - continue; - } - else - { - if (zoneId != respawnZoneId) - continue; + respawnZoneId = map->GetZoneId(PhasingHandler::GetEmptyPhaseShift(), edata->spawnPoint); + if (range) + { + if (!player->IsInDist(edata->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(UI64FMTD " | %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)"); } diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 6530652fe71..db5531c9eef 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -804,7 +804,7 @@ public: return false; } - if (player->GetMapId() != data->spawnPoint.GetMapId()) + if (player->GetMapId() != data->mapId) { handler->PSendSysMessage(LANG_COMMAND_CREATUREATSAMEMAP, std::to_string(lowguid).c_str()); handler->SetSentErrorMessage(true); |
