Fixes certain situations where people in supplypods would sent to nullspace (#42087)

* reeling it in

* Revert "reeling it in"

This reverts commit 2b795a8baf5eec89fdc1e6b6a6ef9d36276c2e62.

* ya dun know

* huhuhuh tiny fan

* Tweak tangentially related formatting

* Update code/modules/cargo/centcom_podlauncher.dm

Co-Authored-By: MrDoomBringer <emmanuelssr@gmail.com>
This commit is contained in:
MrDoomBringer
2019-01-09 14:05:51 -05:00
committed by Jordan Brown
parent cd4b123a3a
commit ccd618d877
4 changed files with 293 additions and 269 deletions
+274 -256
View File
@@ -2246,6 +2246,13 @@
},
/turf/open/floor/plasteel,
/area/tdome/arena_source)
"fR" = (
/obj/item/reagent_containers/food/snacks/egg/rainbow{
desc = "I bet you think you're pretty clever... well you are.";
name = "easter egg"
},
/turf/open/space/basic,
/area/space)
"fS" = (
/obj/effect/turf_decal/tile/red{
dir = 8
@@ -2933,6 +2940,9 @@
/obj/machinery/capture_the_flag/red,
/turf/open/floor/circuit/green/anim,
/area/ctf)
"hH" = (
/turf/open/floor/holofloor/hyperspace,
/area/space)
"hI" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
@@ -3707,6 +3717,10 @@
},
/turf/open/floor/plasteel,
/area/centcom/control)
"jA" = (
/obj/structure/fans/tiny/invisible,
/turf/open/floor/holofloor/hyperspace,
/area/space)
"jB" = (
/obj/structure/noticeboard{
dir = 8;
@@ -4811,6 +4825,10 @@
},
/turf/open/floor/plasteel/dark,
/area/centcom/control)
"lS" = (
/obj/structure/fans/tiny/invisible,
/turf/open/floor/holofloor/hyperspace,
/area/centcom/supplypod/flyMeToTheMoon)
"lT" = (
/obj/machinery/door/airlock/centcom{
name = "CentCom Security";
@@ -22837,7 +22855,7 @@ aa
aa
aa
aa
aa
fR
aa
aa
aa
@@ -23344,21 +23362,21 @@ aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
aa
"}
(20,1,1) = {"
@@ -23601,21 +23619,21 @@ aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
aa
"}
(21,1,1) = {"
@@ -23858,21 +23876,21 @@ aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
aa
"}
(22,1,1) = {"
@@ -24115,21 +24133,21 @@ aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
aa
"}
(23,1,1) = {"
@@ -24372,21 +24390,21 @@ aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
aa
"}
(24,1,1) = {"
@@ -24629,21 +24647,21 @@ aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
aa
"}
(25,1,1) = {"
@@ -24886,21 +24904,21 @@ aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
jA
jA
jA
jA
jA
hH
hH
hH
hH
hH
aa
"}
(26,1,1) = {"
@@ -25143,21 +25161,21 @@ aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
jA
lS
lS
lS
jA
hH
hH
hH
hH
hH
aa
"}
(27,1,1) = {"
@@ -25400,21 +25418,21 @@ aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
jA
lS
lS
lS
jA
hH
hH
hH
hH
hH
aa
"}
(28,1,1) = {"
@@ -25657,21 +25675,21 @@ aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
jA
lS
lS
lS
jA
hH
hH
hH
hH
hH
aa
"}
(29,1,1) = {"
@@ -25914,21 +25932,21 @@ aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
jA
jA
jA
jA
jA
hH
hH
hH
hH
hH
aa
"}
(30,1,1) = {"
@@ -26171,21 +26189,21 @@ aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
aa
"}
(31,1,1) = {"
@@ -26428,21 +26446,21 @@ aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
aa
"}
(32,1,1) = {"
@@ -26685,21 +26703,21 @@ lI
lI
lI
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
aa
"}
(33,1,1) = {"
@@ -26942,21 +26960,21 @@ lI
lI
lI
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
aa
"}
(34,1,1) = {"
@@ -27199,21 +27217,21 @@ lI
lI
lI
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
aa
"}
(35,1,1) = {"
@@ -27456,21 +27474,21 @@ lI
lI
lI
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
hH
aa
"}
(36,1,1) = {"
+4
View File
@@ -29,6 +29,10 @@
/area/centcom/holding
name = "Holding Facility"
/area/centcom/supplypod/flyMeToTheMoon
name = "Supplypod Shipping lane"
icon_state = "supplypod_flight"
/area/centcom/supplypod
name = "Supplypod Facility"
icon_state = "supplypod"
+15 -13
View File
@@ -2,7 +2,7 @@
//This was originally created as a way to get adminspawned items to the station in an IC manner. It's evolved to contain a few more
//features such as item removal, smiting, controllable delivery mobs, and more.
//This works by creating a supplypod (refered to as temp_pod) in a special room in the centcom map.
//This works by creating a supplypod (refered to as temp_pod) in a special room in the centcom map.
//IMPORTANT: Even though we call it a supplypod for our purposes, it can take on the appearance and function of many other things: Eg. cruise missiles, boxes, or walking, living gondolas.
//When the user launched the pod, items from special "bays" on the centcom map are taken and put into the supplypod
@@ -71,7 +71,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
data["landingDelay"] = temp_pod.landingDelay //How long the pod takes to land after launching
data["openingDelay"] = temp_pod.openingDelay //How long the pod takes to open after landing
data["departureDelay"] = temp_pod.departureDelay //How long the pod takes to leave after opening (if bluespace=true, it deletes. if reversing=true, it flies back to centcom)
data["styleChoice"] = temp_pod.style //Style is a variable that keeps track of what the pod is supposed to look like. It acts as an index to the POD_STYLES list in cargo.dm defines to get the proper icon/name/desc for the pod.
data["styleChoice"] = temp_pod.style //Style is a variable that keeps track of what the pod is supposed to look like. It acts as an index to the POD_STYLES list in cargo.dm defines to get the proper icon/name/desc for the pod.
data["effectStun"] = temp_pod.effectStun //If true, stuns anyone under the pod when it launches until it lands, forcing them to get hit by the pod. Devilish!
data["effectLimb"] = temp_pod.effectLimb //If true, pops off a limb (if applicable) from anyone caught under the pod when it lands
data["effectOrgans"] = temp_pod.effectOrgans //If true, yeets the organs out of any bodies caught under the pod when it lands
@@ -155,7 +155,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
if("launchRandom") //Pick random turfs from the supplypod bay at centcom to launch
if (launchChoice == 2)
launchChoice = 0
updateSelector()
updateSelector()
return
launchChoice = 2
updateSelector()
@@ -375,7 +375,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
temp_pod.soundVolume = soundInput
. = TRUE
////////////////////////////STYLE CHANGES//////////////////
//Style is a value that is used to keep track of what the pod is supposed to look like. It can be used with the POD_STYLES list (in cargo.dm defines)
//Style is a value that is used to keep track of what the pod is supposed to look like. It can be used with the POD_STYLES list (in cargo.dm defines)
//as a way to get the proper icon state, name, and description of the pod.
if("styleStandard")
temp_pod.setStyle(STYLE_STANDARD)
@@ -416,7 +416,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
if("refresh") //Refresh the Pod bay. User should press this if they spawn something new in the centcom bay. Automatically called whenever the user launches a pod
refreshBay()
. = TRUE
if("giveLauncher") //Enters the "Launch Mode". When the launcher is activated, temp_pod is cloned, and the result it filled and launched anywhere the user clicks (unless specificTarget is true)
if("giveLauncher") //Enters the "Launch Mode". When the launcher is activated, temp_pod is cloned, and the result it filled and launched anywhere the user clicks (unless specificTarget is true)
launcherActivated = !launcherActivated
updateCursor(launcherActivated) //Update the cursor of the user to a cool looking target icon
. = TRUE
@@ -489,7 +489,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
orderedArea = list()
if (!isemptylist(A.contents)) //Go through the area passed into the proc, and figure out the top left and bottom right corners by calculating max and min values
var/startX = A.contents[1].x //Create the four values (we do it off a.contents[1] so they have some sort of arbitrary initial value. They should be overwritten in a few moments)
var/endX = A.contents[1].x
var/endX = A.contents[1].x
var/startY = A.contents[1].y
var/endY = A.contents[1].y
for (var/turf/T in A) //For each turf in the area, go through and find:
@@ -506,7 +506,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
orderedArea.Add(locate(j,startY - (i - endY),1)) //After gathering the start/end x and y, go through locating each turf from top left to bottom right, like one would read a book
return orderedArea //Return the filled list
/datum/centcom_podlauncher/proc/preLaunch() //Creates a list of acceptable items,
/datum/centcom_podlauncher/proc/preLaunch() //Creates a list of acceptable items,
numTurfs = 0 //Counts the number of turfs that can be launched (remember, supplypods either launch all at once or one turf-worth of items at a time)
acceptableTurfs = list()
for (var/turf/T in orderedArea) //Go through the orderedArea list
@@ -531,16 +531,18 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
//UpdateSelector() is here (instead if the if(1) switch block) because it also moves the selector to nullspace (to hide it) if needed
/datum/centcom_podlauncher/proc/launch(turf/A) //Game time started
if (isnull(A))
if (isnull(A))
return
var/obj/structure/closet/supplypod/centcompod/toLaunch = DuplicateObject(temp_pod) //Duplicate the temp_pod (which we have been varediting or configuring with the UI) and store the result
toLaunch.bay = bay //Bay is currently a nonstatic expression, so it cant go into toLaunch using DuplicateObject
toLaunch.update_icon()//we update_icon() here so that the door doesnt "flicker on" right after it lands
var/shippingLane = GLOB.areas_by_type[/area/centcom/supplypod/flyMeToTheMoon]
toLaunch.forceMove(shippingLane)
if (launchClone) //We arent launching the actual items from the bay, rather we are creating clones and launching those
for (var/atom/movable/O in launchList)
DuplicateObject(O).forceMove(toLaunch) //Duplicate each atom/movable in launchList and forceMove them into the supplypod
new /obj/effect/DPtarget(A, toLaunch) //Create the DPTarget, which will eventually forceMove the temp_pod to it's location
else
else
for (var/atom/movable/O in launchList) //If we aren't cloning the objects, just go through the launchList
O.forceMove(toLaunch) //and forceMove any atom/moveable into the supplypod
new /obj/effect/DPtarget(A, toLaunch) //Then, create the DPTarget effect, which will eventually forceMove the temp_pod to it's location
@@ -567,7 +569,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
var/podString = effectBurst ? "5 pods" : "a pod"
var/whomString = ""
if (LAZYLEN(whoDyin))
for (var/mob/living/M in whoDyin)
for (var/mob/living/M in whoDyin)
whomString += "[key_name(M)], "
var/delayString = temp_pod.landingDelay == initial(temp_pod.landingDelay) ? "" : " Delay=[temp_pod.landingDelay*0.1]s"
@@ -578,9 +580,9 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
explosionString = " Boom=|"
for (var/X in temp_pod.explosionSize)
explosionString += "[X]|"
var/msg = "launched [podString][whomString].[delayString][damageString][explosionString]]"
var/msg = "launched [podString][whomString].[delayString][damageString][explosionString]"
message_admins("[key_name_admin(usr)] [msg] in [AREACOORD(specificTarget)].")
if (!isemptylist(whoDyin))
for (var/mob/living/M in whoDyin)
admin_ticket_log(M, "[key_name_admin(usr)] [msg]")
admin_ticket_log(M, "[key_name_admin(usr)] [msg]")
Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB