diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 59055650072..27e6cd8a779 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -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) = {" diff --git a/code/game/area/areas/centcom.dm b/code/game/area/areas/centcom.dm index 6e61e3a90c6..5db39eebc66 100644 --- a/code/game/area/areas/centcom.dm +++ b/code/game/area/areas/centcom.dm @@ -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" diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm index 0e0d81dabf2..8d83ffdf75e 100644 --- a/code/modules/cargo/centcom_podlauncher.dm +++ b/code/modules/cargo/centcom_podlauncher.dm @@ -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]") \ No newline at end of file + admin_ticket_log(M, "[key_name_admin(usr)] [msg]") diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index 25048353923..b7d83a33a73 100644 Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ