From 51e28ae76a40bb40bdd6f163773d2e3bd8f76ec4 Mon Sep 17 00:00:00 2001 From: Treeston Date: Thu, 25 Jan 2018 13:45:11 +0100 Subject: DB/SpawnGroup: Instance spawn group data for Tempest Keep: The Eye and Hellfire Citadel: Ramparts. (also some minor adjustments to command output for convenience) --- src/server/game/Maps/Map.cpp | 6 +++++- src/server/game/Maps/Map.h | 2 +- src/server/scripts/Commands/cs_debug.cpp | 6 ++++-- src/server/scripts/Commands/cs_npc.cpp | 6 +++--- 4 files changed, 13 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 9e55fbddb7c..6958392f66d 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -3311,7 +3311,7 @@ bool Map::SpawnGroupSpawn(uint32 groupId, bool ignoreRespawn, bool force, std::v return true; } -bool Map::SpawnGroupDespawn(uint32 groupId, bool deleteRespawnTimes) +bool Map::SpawnGroupDespawn(uint32 groupId, bool deleteRespawnTimes, size_t* count) { SpawnGroupTemplateData const* groupData = GetSpawnGroupData(groupId); if (!groupData || groupData->flags & SPAWNGROUP_FLAG_SYSTEM) @@ -3348,6 +3348,10 @@ bool Map::SpawnGroupDespawn(uint32 groupId, bool deleteRespawnTimes) return false; } } + + if (count) + *count = toUnload.size(); + // now do the actual despawning for (WorldObject* obj : toUnload) obj->AddObjectToRemoveList(); diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index 006617051c8..37e8f3294e9 100644 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -796,7 +796,7 @@ class TC_GAME_API Map : public GridRefManager SpawnGroupTemplateData const* GetSpawnGroupData(uint32 groupId) const; bool SpawnGroupSpawn(uint32 groupId, bool ignoreRespawn = false, bool force = false, std::vector* spawnedObjects = nullptr); - bool SpawnGroupDespawn(uint32 groupId, bool deleteRespawnTimes = false); + bool SpawnGroupDespawn(uint32 groupId, bool deleteRespawnTimes = false, size_t* count = nullptr); void SetSpawnGroupActive(uint32 groupId, bool state); bool IsSpawnGroupActive(uint32 groupId) const; diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index 67c617cbb35..b4f28aa65eb 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -41,6 +41,8 @@ EndScriptData */ #include "Transport.h" #include #include +#include +#include class debug_commandscript : public CommandScript { @@ -1756,7 +1758,7 @@ public: return false; } auto const& spawnGroups = *instance->_instanceSpawnGroups; - std::unordered_map>> store; + std::map>> store; for (InstanceSpawnGroupInfo const& info : spawnGroups) { if (groupID && info.SpawnGroupId != groupID) @@ -1813,7 +1815,7 @@ public: } } else - handler->PSendSysMessage(" | |-- '%s' could've been %s if boss state %u matched mask %u; but it is %s -> %u, which does not match.", + handler->PSendSysMessage(" | |-- '%s' could've been %s if boss state %u matched mask 0x%02x; but it is %s -> 0x%02x, which does not match.", groupData->name, isSpawn ? "allowed to spawn" : "blocked from spawning", bossStateId, std::get<2>(tuple), InstanceScript::GetBossStateName(actualState), (1 << actualState)); } if (isBlocked) diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 89187ba6067..7c47265a313 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -216,8 +216,6 @@ bool HandleNpcSpawnGroup(ChatHandler* handler, char const* args) } handler->PSendSysMessage(LANG_SPAWNGROUP_SPAWNCOUNT, creatureList.size()); - for (WorldObject* obj : creatureList) - handler->PSendSysMessage("%s (%s)", obj->GetName(), obj->GetGUID().ToString().c_str()); return true; } @@ -248,12 +246,14 @@ bool HandleNpcDespawnGroup(ChatHandler* handler, char const* args) Player* player = handler->GetSession()->GetPlayer(); - if (!player->GetMap()->SpawnGroupDespawn(groupId, deleteRespawnTimes)) + size_t n = 0; + if (!player->GetMap()->SpawnGroupDespawn(groupId, deleteRespawnTimes, &n)) { handler->PSendSysMessage(LANG_SPAWNGROUP_BADGROUP, groupId); handler->SetSentErrorMessage(true); return false; } + handler->PSendSysMessage("Despawned a total of %zu objects.", n); return true; } -- cgit v1.2.3