From cf2ace805b23d3c15bf368ba4844eb2899ee438d Mon Sep 17 00:00:00 2001 From: Sarjuuk Date: Fri, 24 Oct 2025 18:29:41 +0200 Subject: [PATCH] Spawns/Fixup * fix maps for single-floor dungeons borked in 33cd290dc3553764fd955fb30c087316630a4f6c --- includes/game/worldposition.class.php | 7 +++++-- includes/utilities.php | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/includes/game/worldposition.class.php b/includes/game/worldposition.class.php index fbcd16e2..ae7d457e 100644 --- a/includes/game/worldposition.class.php +++ b/includes/game/worldposition.class.php @@ -123,7 +123,8 @@ abstract class WorldPosition x.`id`, x.`areaId`, IF(x.`defaultDungeonMapId` < 0, x.`floor` + 1, x.`floor`) AS `floor`, - IF(dm.`id` IS NOT NULL OR x.`defaultDungeonMapId` < 0, 1, 0) AS `srcPrio`, + IF(useDM.`id` IS NOT NULL OR x.`defaultDungeonMapId` < 0, 1, 0) AS `srcPrio`, + IF(multiDM.`id` IS NOT NULL OR x.`defaultDungeonMapId` < 0, 1, 0) AS `multifloor`, ROUND((x.`maxY` - ?d) * 100 / (x.`maxY` - x.`minY`), 1) AS `posX`, ROUND((x.`maxX` - ?d) * 100 / (x.`maxX` - x.`minX`), 1) AS `posY`, SQRT(POWER(ABS((x.`maxY` - ?d) * 100 / (x.`maxY` - x.`minY`) - 50), 2) + @@ -133,7 +134,9 @@ abstract class WorldPosition SELECT dm.`id`, `areaId`, wma.`mapId`, `minY`, `maxY`, `maxX`, `minX`, `floor`, `worldMapAreaId`, `defaultDungeonMapId` FROM ?_worldmaparea wma JOIN ?_dungeonmap dm ON dm.`mapId` = wma.`mapId` WHERE wma.`mapId` NOT IN (0, 1, 530, 571) OR wma.`areaId` = 4395) x LEFT JOIN - ?_dungeonmap dm ON dm.`mapId` = x.`mapId` AND dm.`worldMapAreaId` = x.`worldMapAreaId` AND dm.`floor` = x.`floor` AND dm.`worldMapAreaId` > 0 + ?_dungeonmap useDM ON useDM.`mapId` = x.`mapId` AND useDM.`worldMapAreaId` = x.`worldMapAreaId` AND useDM.`floor` = x.`floor` AND useDM.`worldMapAreaId` > 0 + LEFT JOIN + ?_dungeonmap multiDM ON multiDM.`mapId` = x.`mapId` AND multiDM.`worldMapAreaId` = x.`worldMapAreaId` AND multiDM.`floor` <> x.`floor` AND multiDM.`worldMapAreaId` > 0 WHERE x.`mapId` = ?d AND IF(?d, x.`areaId` = ?d, x.`areaId` <> 0){ AND x.`floor` = ?d - IF(x.`defaultDungeonMapId` < 0, 1, 0)} GROUP BY diff --git a/includes/utilities.php b/includes/utilities.php index e746e2fe..2f3db816 100644 --- a/includes/utilities.php +++ b/includes/utilities.php @@ -1173,7 +1173,7 @@ abstract class Util $menu = [[null, "Move Location to..."]]; foreach ($points as $p) { - if ($p['srcPrio']) + if ($p['multifloor']) $floors[$p['areaId']][] = $p['floor']; if (isset($menu[$p['areaId']]))