diff options
author | Treeston <treeston.mmoc@gmail.com> | 2019-07-16 19:22:24 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-12-16 21:20:38 +0100 |
commit | 8b78f5055640bd606751d2ccc9549d14fd1d552e (patch) | |
tree | 31c2cb661103a9e91c464818f50168739892aa3d | |
parent | 6f6cf975e4e0bef621b9465f364476ec6731ae0d (diff) |
Core/DB: Merge pool_creature, pool_gameobject and pool_pool into a single pool_members table.
(More pooling prep, I really don't want to have any sql update files in that PR if I can help it.)
(cherry picked from commit 45bc91c238d04f2e2544622ff29faaf46713d15c)
-rw-r--r-- | sql/updates/world/master/2021_12_16_04_world_2019_07_16_01_world.sql | 23 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 10 | ||||
-rw-r--r-- | src/server/game/Pools/PoolMgr.cpp | 14 |
3 files changed, 35 insertions, 12 deletions
diff --git a/sql/updates/world/master/2021_12_16_04_world_2019_07_16_01_world.sql b/sql/updates/world/master/2021_12_16_04_world_2019_07_16_01_world.sql new file mode 100644 index 00000000000..9bc838f2c6e --- /dev/null +++ b/sql/updates/world/master/2021_12_16_04_world_2019_07_16_01_world.sql @@ -0,0 +1,23 @@ +-- +DROP TABLE IF EXISTS `pool_members`; +CREATE TABLE `pool_members` ( + `type` smallint(10) unsigned NOT NULL, + `spawnId` int(10) unsigned NOT NULL, + `poolSpawnId` int(10) unsigned NOT NULL, + `chance` double unsigned NOT NULL, + `description` varchar(255) DEFAULT NULL, + PRIMARY KEY (`type`,`spawnId`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +INSERT INTO `pool_members` (`type`,`spawnId`,`poolSpawnId`,`chance`,`description`) +SELECT 0 as `type`, `guid` as `spawnId`, `pool_entry` as `poolSpawnId`, `chance`, `description` FROM `pool_creature`; + +INSERT INTO `pool_members` (`type`,`spawnId`,`poolSpawnId`,`chance`,`description`) +SELECT 1 as `type`, `guid` as `spawnId`, `pool_entry` as `poolSpawnId`, `chance`, `description` FROM `pool_gameobject`; + +INSERT INTO `pool_members` (`type`,`spawnId`,`poolSpawnId`,`chance`,`description`) +SELECT 2 as `type`, `pool_id` as `spawnId`, `mother_pool` as `poolSpawnId`, `chance`, `description` FROM `pool_pool`; + +DROP TABLE IF EXISTS `pool_creature`; +DROP TABLE IF EXISTS `pool_gameobject`; +DROP TABLE IF EXISTS `pool_pool`; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 4a81a16a9f6..df97c30ff11 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -2068,13 +2068,13 @@ void ObjectMgr::LoadCreatures() // 0 1 2 3 4 5 6 7 8 9 10 QueryResult result = WorldDatabase.Query("SELECT creature.guid, id, map, position_x, position_y, position_z, orientation, modelid, equipment_id, spawntimesecs, spawndist, " - // 11 12 13 14 15 16 17 18 19 20 21 - "currentwaypoint, curhealth, curmana, MovementType, spawnDifficulties, eventEntry, pool_entry, creature.npcflag, creature.unit_flags, creature.unit_flags2, creature.unit_flags3, " + // 11 12 13 14 15 16 17 18 19 20 21 + "currentwaypoint, curhealth, curmana, MovementType, spawnDifficulties, eventEntry, poolSpawnId, creature.npcflag, creature.unit_flags, creature.unit_flags2, creature.unit_flags3, " // 22 23 24 25 26 27 "creature.dynamicflags, creature.phaseUseFlags, creature.phaseid, creature.phasegroup, creature.terrainSwapMap, creature.ScriptName " "FROM creature " "LEFT OUTER JOIN game_event_creature ON creature.guid = game_event_creature.guid " - "LEFT OUTER JOIN pool_creature ON creature.guid = pool_creature.guid"); + "LEFT OUTER JOIN pool_members ON pool_members.type = 0 AND creature.guid = pool_members.spawnId"); if (!result) { @@ -2419,11 +2419,11 @@ void ObjectMgr::LoadGameObjects() // 0 1 2 3 4 5 6 QueryResult result = WorldDatabase.Query("SELECT gameobject.guid, id, map, position_x, position_y, position_z, orientation, " // 7 8 9 10 11 12 13 14 15 16 - "rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, spawnDifficulties, eventEntry, pool_entry, " + "rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, spawnDifficulties, eventEntry, poolSpawnId, " // 17 18 19 20 21 "phaseUseFlags, phaseid, phasegroup, terrainSwapMap, ScriptName " "FROM gameobject LEFT OUTER JOIN game_event_gameobject ON gameobject.guid = game_event_gameobject.guid " - "LEFT OUTER JOIN pool_gameobject ON gameobject.guid = pool_gameobject.guid"); + "LEFT OUTER JOIN pool_members ON pool_members.type = 1 AND gameobject.guid = pool_members.spawnId"); if (!result) { diff --git a/src/server/game/Pools/PoolMgr.cpp b/src/server/game/Pools/PoolMgr.cpp index 4f3c21626de..89d6e1ab450 100644 --- a/src/server/game/Pools/PoolMgr.cpp +++ b/src/server/game/Pools/PoolMgr.cpp @@ -599,8 +599,8 @@ void PoolMgr::LoadFromDB() { uint32 oldMSTime = getMSTime(); - // 1 2 3 - QueryResult result = WorldDatabase.Query("SELECT guid, pool_entry, chance FROM pool_creature"); + // 1 2 3 + QueryResult result = WorldDatabase.Query("SELECT spawnId, poolSpawnId, chance FROM pool_members WHERE type = 0"); if (!result) { @@ -656,8 +656,8 @@ void PoolMgr::LoadFromDB() { uint32 oldMSTime = getMSTime(); - // 1 2 3 - QueryResult result = WorldDatabase.Query("SELECT guid, pool_entry, chance FROM pool_gameobject"); + // 1 2 3 + QueryResult result = WorldDatabase.Query("SELECT spawnId, poolSpawnId, chance FROM pool_members WHERE type = 1"); if (!result) { @@ -727,7 +727,7 @@ void PoolMgr::LoadFromDB() uint32 oldMSTime = getMSTime(); // 1 2 3 - QueryResult result = WorldDatabase.Query("SELECT pool_id, mother_pool, chance FROM pool_pool"); + QueryResult result = WorldDatabase.Query("SELECT spawnId, poolSpawnId, chance FROM pool_members WHERE type = 2"); if (!result) { @@ -905,9 +905,9 @@ void PoolMgr::LoadFromDB() { uint32 oldMSTime = getMSTime(); - QueryResult result = WorldDatabase.Query("SELECT DISTINCT pool_template.entry, pool_pool.pool_id, pool_pool.mother_pool FROM pool_template" + QueryResult result = WorldDatabase.Query("SELECT DISTINCT pool_template.entry, pool_members.spawnId, pool_members.poolSpawnId FROM pool_template" " LEFT JOIN game_event_pool ON pool_template.entry = game_event_pool.pool_entry" - " LEFT JOIN pool_pool ON pool_template.entry = pool_pool.pool_id WHERE game_event_pool.pool_entry IS NULL"); + " LEFT JOIN pool_members ON pool_members.type = 2 AND pool_template.entry = pool_members.spawnId WHERE game_event_pool.pool_entry IS NULL"); if (!result) { |