aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2021_06_16_13_world_2018_01_25_00_world.sql226
-rw-r--r--sql/updates/world/master/2021_06_16_14_world_2018_01_25_01_world.sql137
-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
6 files changed, 376 insertions, 7 deletions
diff --git a/sql/updates/world/master/2021_06_16_13_world_2018_01_25_00_world.sql b/sql/updates/world/master/2021_06_16_13_world_2018_01_25_00_world.sql
new file mode 100644
index 00000000000..1ba2f52acdd
--- /dev/null
+++ b/sql/updates/world/master/2021_06_16_13_world_2018_01_25_00_world.sql
@@ -0,0 +1,226 @@
+-- SpawnGroupMapper auto-generated SQL for map 550 (Tempest Keep)
+
+-- Constant setter section - adjust this
+-- spawn_group_template (4 entries)
+SET @FIRSTGROUPID := 44;
+-- Boss state associations
+SET @ALAR := 1; -- boss state that controls group "Al'ar"
+SET @VOIDREAVER := 3; -- boss state that controls group "Void Reaver"
+SET @SOLARIAN := 2; -- boss state that controls group "Solarian"
+SET @KAELTHAS := 0; -- boss state that controls group "Kael'thas"
+
+-- DB modification section - you shouldn't need to touch this
+-- Insert spawn group templates
+DELETE FROM `spawn_group_template` WHERE `groupId` BETWEEN @FIRSTGROUPID+0 AND @FIRSTGROUPID+3;
+INSERT INTO `spawn_group_template` (`groupId`,`groupName`,`groupFlags`) VALUES
+ (@FIRSTGROUPID+0, "Tempest Keep - Al'ar", 0x04),
+ (@FIRSTGROUPID+1, "Tempest Keep - Void Reaver", 0x04),
+ (@FIRSTGROUPID+2, "Tempest Keep - Solarian", 0x04),
+ (@FIRSTGROUPID+3, "Tempest Keep - Kael'thas", 0x04);
+
+-- Insert spawn group data
+DELETE FROM `spawn_group` WHERE `groupId` BETWEEN @FIRSTGROUPID+0 AND @FIRSTGROUPID+3;
+INSERT INTO `spawn_group` (`groupId`,`spawnType`,`spawnId`) VALUES
+ (@FIRSTGROUPID+2, 0, 12524),
+ (@FIRSTGROUPID+3, 0, 86952),
+ (@FIRSTGROUPID+2, 0, 12532),
+ (@FIRSTGROUPID+2, 0, 12534),
+ (@FIRSTGROUPID+2, 0, 12536),
+ (@FIRSTGROUPID+2, 0, 12538),
+ (@FIRSTGROUPID+2, 0, 12540),
+ (@FIRSTGROUPID+2, 0, 12542),
+ (@FIRSTGROUPID+1, 0, 12550),
+ (@FIRSTGROUPID+1, 0, 12552),
+ (@FIRSTGROUPID+1, 0, 12554),
+ (@FIRSTGROUPID+1, 0, 12556),
+ (@FIRSTGROUPID+1, 0, 12558),
+ (@FIRSTGROUPID+1, 0, 12564),
+ (@FIRSTGROUPID+1, 0, 12566),
+ (@FIRSTGROUPID+3, 0, 12568),
+ (@FIRSTGROUPID+3, 0, 12570),
+ (@FIRSTGROUPID+0, 0, 554),
+ (@FIRSTGROUPID+3, 0, 144136),
+ (@FIRSTGROUPID+3, 0, 144105),
+ (@FIRSTGROUPID+3, 0, 144137),
+ (@FIRSTGROUPID+3, 0, 86939),
+ (@FIRSTGROUPID+3, 0, 144106),
+ (@FIRSTGROUPID+3, 0, 144138),
+ (@FIRSTGROUPID+3, 0, 7987),
+ (@FIRSTGROUPID+3, 0, 144107),
+ (@FIRSTGROUPID+3, 0, 144139),
+ (@FIRSTGROUPID+3, 0, 86941),
+ (@FIRSTGROUPID+3, 0, 86940),
+ (@FIRSTGROUPID+3, 0, 144110),
+ (@FIRSTGROUPID+3, 0, 144108),
+ (@FIRSTGROUPID+3, 0, 144140),
+ (@FIRSTGROUPID+2, 0, 12467),
+ (@FIRSTGROUPID+3, 0, 144146),
+ (@FIRSTGROUPID+2, 0, 12411),
+ (@FIRSTGROUPID+2, 0, 12413),
+ (@FIRSTGROUPID+2, 0, 12415),
+ (@FIRSTGROUPID+3, 0, 144109),
+ (@FIRSTGROUPID+2, 0, 12419),
+ (@FIRSTGROUPID+2, 0, 12421),
+ (@FIRSTGROUPID+2, 0, 12423),
+ (@FIRSTGROUPID+2, 0, 12425),
+ (@FIRSTGROUPID+2, 0, 12427),
+ (@FIRSTGROUPID+2, 0, 12429),
+ (@FIRSTGROUPID+2, 0, 12431),
+ (@FIRSTGROUPID+0, 0, 12433),
+ (@FIRSTGROUPID+0, 0, 12435),
+ (@FIRSTGROUPID+0, 0, 12437),
+ (@FIRSTGROUPID+0, 0, 12439),
+ (@FIRSTGROUPID+0, 0, 12441),
+ (@FIRSTGROUPID+0, 0, 12443),
+ (@FIRSTGROUPID+0, 0, 12445),
+ (@FIRSTGROUPID+0, 0, 12447),
+ (@FIRSTGROUPID+0, 0, 12449),
+ (@FIRSTGROUPID+0, 0, 12451),
+ (@FIRSTGROUPID+0, 0, 12453),
+ (@FIRSTGROUPID+0, 0, 12455),
+ (@FIRSTGROUPID+1, 0, 12461),
+ (@FIRSTGROUPID+3, 0, 12463),
+ (@FIRSTGROUPID+3, 0, 144144),
+ (@FIRSTGROUPID+2, 0, 12469),
+ (@FIRSTGROUPID+2, 0, 12471),
+ (@FIRSTGROUPID+2, 0, 12473),
+ (@FIRSTGROUPID+0, 0, 12475),
+ (@FIRSTGROUPID+2, 0, 12477),
+ (@FIRSTGROUPID+0, 0, 12479),
+ (@FIRSTGROUPID+3, 0, 144145),
+ (@FIRSTGROUPID+0, 0, 12485),
+ (@FIRSTGROUPID+0, 0, 12487),
+ (@FIRSTGROUPID+2, 0, 12489),
+ (@FIRSTGROUPID+2, 0, 12491),
+ (@FIRSTGROUPID+3, 0, 86943),
+ (@FIRSTGROUPID+2, 0, 12495),
+ (@FIRSTGROUPID+2, 0, 12497),
+ (@FIRSTGROUPID+2, 0, 12499),
+ (@FIRSTGROUPID+2, 0, 12501),
+ (@FIRSTGROUPID+2, 0, 12503),
+ (@FIRSTGROUPID+2, 0, 12505),
+ (@FIRSTGROUPID+2, 0, 12507),
+ (@FIRSTGROUPID+2, 0, 12509),
+ (@FIRSTGROUPID+2, 0, 12511),
+ (@FIRSTGROUPID+3, 0, 144147),
+ (@FIRSTGROUPID+2, 0, 12517),
+ (@FIRSTGROUPID+2, 0, 12519),
+ (@FIRSTGROUPID+2, 0, 12521),
+ (@FIRSTGROUPID+2, 0, 12523),
+ (@FIRSTGROUPID+3, 0, 86944),
+ (@FIRSTGROUPID+2, 0, 12527),
+ (@FIRSTGROUPID+3, 0, 144148),
+ (@FIRSTGROUPID+2, 0, 12533),
+ (@FIRSTGROUPID+2, 0, 12535),
+ (@FIRSTGROUPID+2, 0, 12537),
+ (@FIRSTGROUPID+2, 0, 12539),
+ (@FIRSTGROUPID+2, 0, 12541),
+ (@FIRSTGROUPID+3, 0, 12543),
+ (@FIRSTGROUPID+3, 0, 144149),
+ (@FIRSTGROUPID+1, 0, 12549),
+ (@FIRSTGROUPID+1, 0, 12551),
+ (@FIRSTGROUPID+1, 0, 12553),
+ (@FIRSTGROUPID+1, 0, 12555),
+ (@FIRSTGROUPID+1, 0, 12557),
+ (@FIRSTGROUPID+1, 0, 12559),
+ (@FIRSTGROUPID+3, 0, 144150),
+ (@FIRSTGROUPID+1, 0, 12565),
+ (@FIRSTGROUPID+3, 0, 12567),
+ (@FIRSTGROUPID+3, 0, 12569),
+ (@FIRSTGROUPID+3, 0, 144141),
+ (@FIRSTGROUPID+2, 0, 12513),
+ (@FIRSTGROUPID+3, 0, 144151),
+ (@FIRSTGROUPID+2, 0, 12515),
+ (@FIRSTGROUPID+2, 0, 12529),
+ (@FIRSTGROUPID+2, 0, 12526),
+ (@FIRSTGROUPID+3, 0, 86946),
+ (@FIRSTGROUPID+3, 0, 144152),
+ (@FIRSTGROUPID+3, 0, 86951),
+ (@FIRSTGROUPID+2, 0, 12531),
+ (@FIRSTGROUPID+2, 0, 12530),
+ (@FIRSTGROUPID+2, 0, 12528),
+ (@FIRSTGROUPID+2, 0, 12525),
+ (@FIRSTGROUPID+3, 0, 144153),
+ (@FIRSTGROUPID+3, 0, 144142),
+ (@FIRSTGROUPID+0, 0, 12480),
+ (@FIRSTGROUPID+3, 0, 12465),
+ (@FIRSTGROUPID+3, 0, 86947),
+ (@FIRSTGROUPID+2, 0, 12493),
+ (@FIRSTGROUPID+3, 0, 12544),
+ (@FIRSTGROUPID+3, 0, 86945),
+ (@FIRSTGROUPID+3, 0, 86953),
+ (@FIRSTGROUPID+3, 0, 86942),
+ (@FIRSTGROUPID+1, 0, 12462),
+ (@FIRSTGROUPID+1, 0, 12562),
+ (@FIRSTGROUPID+1, 0, 12561),
+ (@FIRSTGROUPID+1, 0, 12563),
+ (@FIRSTGROUPID+1, 0, 12560),
+ (@FIRSTGROUPID+3, 0, 86948),
+ (@FIRSTGROUPID+0, 0, 12450),
+ (@FIRSTGROUPID+2, 0, 12430),
+ (@FIRSTGROUPID+0, 0, 12434),
+ (@FIRSTGROUPID+2, 0, 12410),
+ (@FIRSTGROUPID+2, 0, 12412),
+ (@FIRSTGROUPID+2, 0, 12414),
+ (@FIRSTGROUPID+2, 0, 12416),
+ (@FIRSTGROUPID+2, 0, 12418),
+ (@FIRSTGROUPID+2, 0, 12420),
+ (@FIRSTGROUPID+2, 0, 12422),
+ (@FIRSTGROUPID+2, 0, 12424),
+ (@FIRSTGROUPID+2, 0, 12426),
+ (@FIRSTGROUPID+2, 0, 12428),
+ (@FIRSTGROUPID+3, 0, 86949),
+ (@FIRSTGROUPID+2, 0, 12432),
+ (@FIRSTGROUPID+0, 0, 12436),
+ (@FIRSTGROUPID+0, 0, 12438),
+ (@FIRSTGROUPID+0, 0, 12440),
+ (@FIRSTGROUPID+0, 0, 12442),
+ (@FIRSTGROUPID+0, 0, 12444),
+ (@FIRSTGROUPID+0, 0, 12446),
+ (@FIRSTGROUPID+0, 0, 12448),
+ (@FIRSTGROUPID+0, 0, 12452),
+ (@FIRSTGROUPID+0, 0, 12454),
+ (@FIRSTGROUPID+0, 0, 12456),
+ (@FIRSTGROUPID+1, 0, 12458),
+ (@FIRSTGROUPID+3, 0, 144143),
+ (@FIRSTGROUPID+3, 0, 86950),
+ (@FIRSTGROUPID+3, 0, 12464),
+ (@FIRSTGROUPID+3, 0, 12466),
+ (@FIRSTGROUPID+3, 0, 12468),
+ (@FIRSTGROUPID+2, 0, 12470),
+ (@FIRSTGROUPID+2, 0, 12472),
+ (@FIRSTGROUPID+2, 0, 12474),
+ (@FIRSTGROUPID+0, 0, 12476),
+ (@FIRSTGROUPID+1, 0, 12478),
+ (@FIRSTGROUPID+0, 0, 12484),
+ (@FIRSTGROUPID+0, 0, 12486),
+ (@FIRSTGROUPID+2, 0, 12488),
+ (@FIRSTGROUPID+2, 0, 12490),
+ (@FIRSTGROUPID+2, 0, 12492),
+ (@FIRSTGROUPID+2, 0, 12494),
+ (@FIRSTGROUPID+2, 0, 12496),
+ (@FIRSTGROUPID+2, 0, 12498),
+ (@FIRSTGROUPID+2, 0, 12500),
+ (@FIRSTGROUPID+2, 0, 12502),
+ (@FIRSTGROUPID+2, 0, 12504),
+ (@FIRSTGROUPID+2, 0, 12506),
+ (@FIRSTGROUPID+2, 0, 12508),
+ (@FIRSTGROUPID+2, 0, 12510),
+ (@FIRSTGROUPID+2, 0, 12512),
+ (@FIRSTGROUPID+2, 0, 12514),
+ (@FIRSTGROUPID+2, 0, 12516),
+ (@FIRSTGROUPID+2, 0, 12518),
+ (@FIRSTGROUPID+2, 0, 12520),
+ (@FIRSTGROUPID+2, 0, 12522),
+ (@FIRSTGROUPID+2, 0, 12417);
+
+-- Link information for instance script
+DELETE FROM `instance_spawn_groups` WHERE `instanceMapId` = 550;
+INSERT INTO `instance_spawn_groups` (`instanceMapId`, `bossStateId`, `bossStates`, `spawnGroupId`, `flags`) VALUES
+ (550,@ALAR,0x17,@FIRSTGROUPID+0,0x1), -- Spawn Al'ar if state is not DONE
+ (550,@VOIDREAVER,0x17,@FIRSTGROUPID+1,0x1), -- Spawn Void Reaver if state is not DONE
+ (550,@SOLARIAN,0x17,@FIRSTGROUPID+2,0x1), -- Spawn Solarian if state is not DONE
+ (550,@KAELTHAS,0x17,@FIRSTGROUPID+3,0x1); -- Spawn Kael'thas if state is not DONE
+
+-- Remove legacy linked_respawn entries
+DELETE lr FROM `linked_respawn` lr INNER JOIN `spawn_group` sg ON sg.`groupId` BETWEEN @FIRSTGROUPID+0 AND @FIRSTGROUPID+3 AND sg.`spawnType` = (lr.linkType >> 1) AND sg.`spawnId`=lr.`guid`;
diff --git a/sql/updates/world/master/2021_06_16_14_world_2018_01_25_01_world.sql b/sql/updates/world/master/2021_06_16_14_world_2018_01_25_01_world.sql
new file mode 100644
index 00000000000..5bd3757d104
--- /dev/null
+++ b/sql/updates/world/master/2021_06_16_14_world_2018_01_25_01_world.sql
@@ -0,0 +1,137 @@
+-- SpawnGroupMapper auto-generated SQL for map 543 (Hellfire Citadel: Ramparts)
+
+-- Constant setter section - adjust this
+-- spawn_group_template (4 entries)
+SET @FIRSTGROUPID := 48;
+-- Boss state associations
+SET @WATCHKEEPERGARGOLMAR := 0; -- boss state that controls group "Watchkeeper Gargolmar"
+SET @OMORTHEUNSCARRED := 1; -- boss state that controls group "Omor the Unscarred"
+SET @VAZRUDEN := 2; -- boss state that controls group "Vazruden & Nazan"
+SET @NAZAN := 3; -- boss state that controls group "Vazruden & Nazan"
+
+-- DB modification section - you shouldn't need to touch this
+-- Insert spawn group templates
+DELETE FROM `spawn_group_template` WHERE `groupId` BETWEEN @FIRSTGROUPID+0 AND @FIRSTGROUPID+3;
+INSERT INTO `spawn_group_template` (`groupId`,`groupName`,`groupFlags`) VALUES
+ (@FIRSTGROUPID+0, "Hellfire Citadel: Ramparts - Watchkeeper Gargolmar", 0x04),
+ (@FIRSTGROUPID+1, "Hellfire Citadel: Ramparts - Final boss trash", 0x04),
+ (@FIRSTGROUPID+2, "Hellfire Citadel: Ramparts - Omor the Unscarred", 0x04),
+ (@FIRSTGROUPID+3, "Hellfire Citadel: Ramparts - Vazruden & Nazan", 0x04);
+
+-- Insert spawn group data
+DELETE FROM `spawn_group` WHERE `groupId` BETWEEN @FIRSTGROUPID+0 AND @FIRSTGROUPID+3;
+INSERT INTO `spawn_group` (`groupId`,`spawnType`,`spawnId`) VALUES
+ (@FIRSTGROUPID+0, 0, 202634),
+ (@FIRSTGROUPID+1, 0, 202650),
+ (@FIRSTGROUPID+1, 0, 202666),
+ (@FIRSTGROUPID+0, 0, 202682),
+ (@FIRSTGROUPID+1, 0, 202698),
+ (@FIRSTGROUPID+0, 0, 202619),
+ (@FIRSTGROUPID+0, 0, 202635),
+ (@FIRSTGROUPID+1, 0, 202651),
+ (@FIRSTGROUPID+0, 0, 202667),
+ (@FIRSTGROUPID+1, 0, 202683),
+ (@FIRSTGROUPID+1, 0, 202699),
+ (@FIRSTGROUPID+1, 0, 202620),
+ (@FIRSTGROUPID+0, 0, 202636),
+ (@FIRSTGROUPID+1, 0, 202652),
+ (@FIRSTGROUPID+1, 0, 202668),
+ (@FIRSTGROUPID+0, 0, 202684),
+ (@FIRSTGROUPID+1, 0, 202700),
+ (@FIRSTGROUPID+0, 0, 202621),
+ (@FIRSTGROUPID+0, 0, 202637),
+ (@FIRSTGROUPID+1, 0, 202653),
+ (@FIRSTGROUPID+1, 0, 202669),
+ (@FIRSTGROUPID+1, 0, 202685),
+ (@FIRSTGROUPID+1, 0, 202701),
+ (@FIRSTGROUPID+0, 0, 202622),
+ (@FIRSTGROUPID+0, 0, 202638),
+ (@FIRSTGROUPID+0, 0, 202654),
+ (@FIRSTGROUPID+0, 0, 202670),
+ (@FIRSTGROUPID+1, 0, 202686),
+ (@FIRSTGROUPID+0, 0, 202702),
+ (@FIRSTGROUPID+0, 0, 202607),
+ (@FIRSTGROUPID+1, 0, 202623),
+ (@FIRSTGROUPID+0, 0, 202639),
+ (@FIRSTGROUPID+0, 0, 202655),
+ (@FIRSTGROUPID+0, 0, 202671),
+ (@FIRSTGROUPID+1, 0, 202687),
+ (@FIRSTGROUPID+0, 0, 202703),
+ (@FIRSTGROUPID+1, 0, 202608),
+ (@FIRSTGROUPID+1, 0, 202624),
+ (@FIRSTGROUPID+0, 0, 202640),
+ (@FIRSTGROUPID+0, 0, 202656),
+ (@FIRSTGROUPID+0, 0, 202672),
+ (@FIRSTGROUPID+1, 0, 202688),
+ (@FIRSTGROUPID+0, 0, 202704),
+ (@FIRSTGROUPID+1, 0, 202609),
+ (@FIRSTGROUPID+0, 0, 202625),
+ (@FIRSTGROUPID+0, 0, 202641),
+ (@FIRSTGROUPID+0, 0, 202657),
+ (@FIRSTGROUPID+0, 0, 202673),
+ (@FIRSTGROUPID+1, 0, 202689),
+ (@FIRSTGROUPID+3, 0, 202705),
+ (@FIRSTGROUPID+0, 0, 202610),
+ (@FIRSTGROUPID+0, 0, 202626),
+ (@FIRSTGROUPID+1, 0, 202642),
+ (@FIRSTGROUPID+0, 0, 202658),
+ (@FIRSTGROUPID+0, 0, 202674),
+ (@FIRSTGROUPID+1, 0, 202690),
+ (@FIRSTGROUPID+3, 0, 202706),
+ (@FIRSTGROUPID+0, 0, 202611),
+ (@FIRSTGROUPID+0, 0, 202627),
+ (@FIRSTGROUPID+1, 0, 202643),
+ (@FIRSTGROUPID+0, 0, 202659),
+ (@FIRSTGROUPID+0, 0, 202675),
+ (@FIRSTGROUPID+0, 0, 202691),
+ (@FIRSTGROUPID+0, 0, 202612),
+ (@FIRSTGROUPID+0, 0, 202628),
+ (@FIRSTGROUPID+1, 0, 202644),
+ (@FIRSTGROUPID+0, 0, 202660),
+ (@FIRSTGROUPID+0, 0, 202676),
+ (@FIRSTGROUPID+0, 0, 202692),
+ (@FIRSTGROUPID+0, 0, 202613),
+ (@FIRSTGROUPID+0, 0, 202629),
+ (@FIRSTGROUPID+0, 0, 202645),
+ (@FIRSTGROUPID+1, 0, 202661),
+ (@FIRSTGROUPID+0, 0, 202677),
+ (@FIRSTGROUPID+3, 0, 202693),
+ (@FIRSTGROUPID+1, 0, 202614),
+ (@FIRSTGROUPID+1, 0, 202630),
+ (@FIRSTGROUPID+0, 0, 202646),
+ (@FIRSTGROUPID+1, 0, 202662),
+ (@FIRSTGROUPID+0, 0, 202678),
+ (@FIRSTGROUPID+2, 0, 202694),
+ (@FIRSTGROUPID+1, 0, 202615),
+ (@FIRSTGROUPID+0, 0, 202631),
+ (@FIRSTGROUPID+0, 0, 202647),
+ (@FIRSTGROUPID+0, 0, 202663),
+ (@FIRSTGROUPID+0, 0, 202679),
+ (@FIRSTGROUPID+0, 0, 202695),
+ (@FIRSTGROUPID+1, 0, 202616),
+ (@FIRSTGROUPID+2, 0, 202632),
+ (@FIRSTGROUPID+0, 0, 202648),
+ (@FIRSTGROUPID+0, 0, 202664),
+ (@FIRSTGROUPID+0, 0, 202680),
+ (@FIRSTGROUPID+0, 0, 202696),
+ (@FIRSTGROUPID+0, 0, 202617),
+ (@FIRSTGROUPID+2, 0, 202633),
+ (@FIRSTGROUPID+0, 0, 202649),
+ (@FIRSTGROUPID+0, 0, 202665),
+ (@FIRSTGROUPID+0, 0, 202681),
+ (@FIRSTGROUPID+0, 0, 202697),
+ (@FIRSTGROUPID+0, 0, 202618);
+
+-- Link information for instance script
+DELETE FROM `instance_spawn_groups` WHERE `instanceMapId` = 543;
+INSERT INTO `instance_spawn_groups` (`instanceMapId`, `bossStateId`, `bossStates`, `spawnGroupId`, `flags`) VALUES
+ (543,@WATCHKEEPERGARGOLMAR,0x17,@FIRSTGROUPID+0,0x1), -- Spawn Watchkeeper Gargolmar if state is not DONE
+ (543,@OMORTHEUNSCARRED,0x17,@FIRSTGROUPID+1,0x1), -- Spawn Final boss trash if state is not DONE
+ (543,@VAZRUDEN,0x08,@FIRSTGROUPID+1,0x2), -- Do not spawn Final boss trash if state is DONE
+ (543,@NAZAN,0x08,@FIRSTGROUPID+1,0x2), -- Do not spawn Final boss trash if state is DONE
+ (543,@OMORTHEUNSCARRED,0x17,@FIRSTGROUPID+2,0x1), -- Spawn Omor the Unscarred if state is not DONE
+ (543,@VAZRUDEN,0x17,@FIRSTGROUPID+3,0x1), -- Spawn Vazruden & Nazan if state is not DONE
+ (543,@NAZAN,0x08,@FIRSTGROUPID+3,0x2); -- Do not spawn Vazruden & Nazan if state is DONE
+
+-- Remove legacy linked_respawn entries
+DELETE lr FROM `linked_respawn` lr INNER JOIN `spawn_group` sg ON sg.`groupId` BETWEEN @FIRSTGROUPID+0 AND @FIRSTGROUPID+3 AND sg.`spawnType` = (lr.linkType >> 1) AND sg.`spawnId`=lr.`guid`;
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;
}