From d785d7d94eeba6a3e9c2d3351f69fe3185d94657 Mon Sep 17 00:00:00 2001 From: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Date: Mon, 31 Jan 2022 15:56:56 -0800 Subject: [PATCH] Fixes kilo's whiteship not spawning (#64558) --- .../RandomRuins/SpaceRuins/whiteshipdock.dmm | 1277 ++++++++++++++++- code/controllers/subsystem/shuttle.dm | 3 +- code/modules/shuttle/shuttle.dm | 52 +- 3 files changed, 1325 insertions(+), 7 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/whiteshipdock.dmm b/_maps/RandomRuins/SpaceRuins/whiteshipdock.dmm index 433977ea2b0..ca8d7627ef7 100644 --- a/_maps/RandomRuins/SpaceRuins/whiteshipdock.dmm +++ b/_maps/RandomRuins/SpaceRuins/whiteshipdock.dmm @@ -30,6 +30,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (2,1,1) = {" a @@ -54,6 +77,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (3,1,1) = {" a @@ -78,6 +124,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (4,1,1) = {" a @@ -102,6 +171,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (5,1,1) = {" a @@ -126,6 +218,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (6,1,1) = {" a @@ -150,6 +265,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (7,1,1) = {" a @@ -174,6 +312,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (8,1,1) = {" a @@ -198,6 +359,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (9,1,1) = {" a @@ -222,6 +406,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (10,1,1) = {" a @@ -246,6 +453,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (11,1,1) = {" a @@ -270,6 +500,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (12,1,1) = {" a @@ -294,6 +547,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (13,1,1) = {" a @@ -318,6 +594,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (14,1,1) = {" a @@ -342,6 +641,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (15,1,1) = {" a @@ -366,6 +688,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (16,1,1) = {" a @@ -390,6 +735,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (17,1,1) = {" a @@ -414,6 +782,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (18,1,1) = {" a @@ -438,6 +829,29 @@ a a a a +a +a +a +a +a +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (19,1,1) = {" a @@ -462,6 +876,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (20,1,1) = {" a @@ -486,6 +923,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (21,1,1) = {" a @@ -510,6 +970,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (22,1,1) = {" a @@ -534,6 +1017,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (23,1,1) = {" a @@ -558,9 +1064,55 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (24,1,1) = {" -b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a a a a @@ -606,6 +1158,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (26,1,1) = {" a @@ -630,6 +1205,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (27,1,1) = {" a @@ -654,6 +1252,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (28,1,1) = {" a @@ -678,6 +1299,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (29,1,1) = {" a @@ -702,6 +1346,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (30,1,1) = {" a @@ -726,6 +1393,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (31,1,1) = {" a @@ -750,6 +1440,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (32,1,1) = {" a @@ -774,6 +1487,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (33,1,1) = {" a @@ -798,6 +1534,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (34,1,1) = {" a @@ -822,6 +1581,29 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (35,1,1) = {" a @@ -846,4 +1628,497 @@ a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(36,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(37,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(38,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(39,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(40,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(41,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(42,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(43,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(44,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(45,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 6e6120beca2..b378b7fb19d 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -766,8 +766,7 @@ SUBSYSTEM_DEF(shuttle) // but we can ignore the someone else docked error because we'll // be moving into their place shortly if((result != SHUTTLE_CAN_DOCK) && (result != SHUTTLE_SOMEONE_ELSE_DOCKED)) - WARNING("Template shuttle [preview_shuttle] cannot dock at [D] ([result]).") - return + CRASH("Template shuttle [preview_shuttle] cannot dock at [D] ([result]).") if(existing_shuttle && replace) existing_shuttle.jumpToNullSpace() diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index c8b02bfeb5d..0d178c7babd 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -312,13 +312,57 @@ /obj/docking_port/stationary/picked/whiteship name = "Deep Space" id = "whiteship_away" - dheight = 0 + height = 45 //Width and height need to remain in sync with the size of whiteshipdock.dmm, otherwise we'll get overflow + width = 44 + dheight = 18 + dwidth = 18 dir = 2 - dwidth = 11 - height = 22 - width = 35 shuttlekeys = list("whiteship_meta", "whiteship_pubby", "whiteship_box", "whiteship_cere", "whiteship_kilo", "whiteship_donut", "whiteship_delta", "whiteship_tram") +/// Helper proc that tests to ensure all whiteship templates can spawn at their docking port, and logs their sizes +/// This should be a unit test, but too much of our other code breaks during shuttle movement, so not yet, not yet. +/proc/test_whiteship_sizes() + var/obj/docking_port/stationary/port_type = /obj/docking_port/stationary/picked/whiteship + var/datum/turf_reservation/docking_yard = SSmapping.RequestBlockReservation(initial(port_type.width), initial(port_type.height)) + var/turf/spawnpoint = locate(docking_yard.bottom_left_coords[1] + initial(port_type.dwidth), docking_yard.bottom_left_coords[2] + initial(port_type.dheight), docking_yard.bottom_left_coords[3]) + + var/obj/docking_port/stationary/picked/whiteship/port = new(spawnpoint) + var/list/ids = port.shuttlekeys + var/height = 0 + var/width = 0 + var/dheight = 0 + var/dwidth = 0 + var/delta_height = 0 + var/delta_width = 0 + for(var/id in ids) + var/datum/map_template/shuttle/our_template = SSmapping.shuttle_templates[id] + // We do a standard load here so any errors will properly runtimes + var/obj/docking_port/mobile/ship = SSshuttle.action_load(our_template, port) + if(ship) + ship.jumpToNullSpace() + ship = null + // Yes this is very hacky, but we need to both allow loading a template that's too big to be an error state + // And actually get the sizing information from every shuttle + SSshuttle.load_template(our_template) + var/obj/docking_port/mobile/theoretical_ship = SSshuttle.preview_shuttle + if(theoretical_ship) + height = max(theoretical_ship.height, height) + width = max(theoretical_ship.width, width) + dheight = max(theoretical_ship.dheight, dheight) + dwidth = max(theoretical_ship.dwidth, dwidth) + delta_height = max(theoretical_ship.height - theoretical_ship.dheight, delta_height) + delta_width = max(theoretical_ship.width - theoretical_ship.dwidth, delta_width) + theoretical_ship.jumpToNullSpace() + qdel(port, TRUE) + log_world("Whitship sizing information. Use this to set the docking port, and the map size\n\ + Max Height: [height] \n\ + Max Width: [width] \n\ + Max DHeight: [dheight] \n\ + Max DHeight: [dwidth] \n\ + The following are the safest bet for map sizing. Anything smaller then this could in the worst case not fit in the docking port\n\ + Max Combined Width: [height + dheight] \n\ + Max Combinded Height [width + dwidth]") + /obj/docking_port/mobile name = "shuttle" icon_state = "pinonclose"