aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2018-01-25 13:45:11 +0100
committerShauren <shauren.trinity@gmail.com>2021-06-16 23:01:48 +0200
commit7db3f7ca968239f05b16609f5dfc7bb633a61ff1 (patch)
treecd8888299278e2fb86c186949926ef77d037d7f2 /src
parent7c0ac5b959c4c0ad5db3b1a3e3cc9526e7b73466 (diff)
DB/SpawnGroup: Instance spawn group data for Tempest Keep: The Eye and Hellfire Citadel: Ramparts.
(also some minor adjustments to command output for convenience) (cherry picked from commit 51e28ae76a40bb40bdd6f163773d2e3bd8f76ec4)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Maps/Map.cpp6
-rw-r--r--src/server/game/Maps/Map.h2
-rw-r--r--src/server/scripts/Commands/cs_debug.cpp6
-rw-r--r--src/server/scripts/Commands/cs_npc.cpp6
4 files changed, 13 insertions, 7 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 2fda273c57f..856b5a4185c 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -3461,7 +3461,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)
@@ -3498,6 +3498,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 289fb4180b3..fbd2478adb7 100644
--- a/src/server/game/Maps/Map.h
+++ b/src/server/game/Maps/Map.h
@@ -761,7 +761,7 @@ class TC_GAME_API Map : public GridRefManager<NGridType>
SpawnGroupTemplateData const* GetSpawnGroupData(uint32 groupId) const;
bool SpawnGroupSpawn(uint32 groupId, bool ignoreRespawn = false, bool force = false, std::vector<WorldObject*>* 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 c966330b04e..e1ca92ce670 100644
--- a/src/server/scripts/Commands/cs_debug.cpp
+++ b/src/server/scripts/Commands/cs_debug.cpp
@@ -50,6 +50,8 @@ EndScriptData */
#include "WorldSession.h"
#include <fstream>
#include <limits>
+#include <map>
+#include <set>
#include <sstream>
class debug_commandscript : public CommandScript
@@ -1522,7 +1524,7 @@ public:
return false;
}
auto const& spawnGroups = *instance->_instanceSpawnGroups;
- std::unordered_map<uint32, std::set<std::tuple<bool, uint8, uint8>>> store;
+ std::map<uint32, std::set<std::tuple<bool, uint8, uint8>>> store;
for (InstanceSpawnGroupInfo const& info : spawnGroups)
{
if (groupID && info.SpawnGroupId != groupID)
@@ -1579,7 +1581,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 b33548acc68..23f15dd2f1f 100644
--- a/src/server/scripts/Commands/cs_npc.cpp
+++ b/src/server/scripts/Commands/cs_npc.cpp
@@ -246,8 +246,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;
}
@@ -278,12 +276,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;
}