mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
[GAX] Removes Arrival Shuttle and replaces it with cryogenics, adds experimentor room (#21113)
* bop bo bay * Update GaxStation.dmm * the rest of the owl * Update GaxStation.dmm * Update cryopod.dm
This commit is contained in:
@@ -7,5 +7,6 @@
|
||||
"cargo": "cargo_gax",
|
||||
"ferry": "ferry_fancy",
|
||||
"emergency": "emergency_box"
|
||||
}
|
||||
},
|
||||
"cryo_spawn": true
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -893,38 +893,66 @@ SUBSYSTEM_DEF(job)
|
||||
return
|
||||
|
||||
//bad mojo
|
||||
var/area/shuttle/arrival/A = GLOB.areas_by_type[/area/shuttle/arrival]
|
||||
if(A)
|
||||
//first check if we can find a chair
|
||||
var/obj/structure/chair/C = locate() in A
|
||||
if(C)
|
||||
C.JoinPlayerHere(M, buckle)
|
||||
return
|
||||
|
||||
//last hurrah
|
||||
var/list/avail = list()
|
||||
for(var/turf/T in A)
|
||||
if(!T.is_blocked_turf(TRUE))
|
||||
avail += T
|
||||
if(avail.len)
|
||||
destination = pick(avail)
|
||||
if(SSmapping.config.cryo_spawn)
|
||||
var/area/shuttle/arrival/A = GLOB.areas_by_type[/area/crew_quarters/cryopods]
|
||||
if(A)
|
||||
var/list/pods = list()
|
||||
var/list/unoccupied_pods = list()
|
||||
for(var/obj/machinery/cryopod/pod in A)
|
||||
pods |= pod
|
||||
if(!pod.occupant)
|
||||
unoccupied_pods |= pod
|
||||
if(length(unoccupied_pods)) //if we have any unoccupied ones
|
||||
destination = pick(unoccupied_pods)
|
||||
else if(length(pods))
|
||||
destination = pick(pods) //if they're all full somehow??
|
||||
else //no pods at all
|
||||
var/list/available = list()
|
||||
for(var/turf/T in A)
|
||||
if(!T.is_blocked_turf(TRUE))
|
||||
available += T
|
||||
if(length(available))
|
||||
destination = pick(available)
|
||||
if(destination)
|
||||
destination.JoinPlayerHere(M, FALSE)
|
||||
return
|
||||
else
|
||||
var/msg = "Unable to send mob [M] to late join (CRYOPODS)!"
|
||||
message_admins(msg)
|
||||
CRASH(msg)
|
||||
|
||||
//pick an open spot on arrivals and dump em
|
||||
var/list/arrivals_turfs = shuffle(get_area_turfs(/area/shuttle/arrival))
|
||||
if(arrivals_turfs.len)
|
||||
for(var/turf/T in arrivals_turfs)
|
||||
if(!T.is_blocked_turf(TRUE))
|
||||
T.JoinPlayerHere(M, FALSE)
|
||||
return
|
||||
//last chance, pick ANY spot on arrivals and dump em
|
||||
destination = arrivals_turfs[1]
|
||||
destination.JoinPlayerHere(M, FALSE)
|
||||
else
|
||||
var/msg = "Unable to send mob [M] to late join!"
|
||||
message_admins(msg)
|
||||
CRASH(msg)
|
||||
var/area/shuttle/arrival/A = GLOB.areas_by_type[/area/shuttle/arrival]
|
||||
if(A)
|
||||
//first check if we can find a chair
|
||||
var/obj/structure/chair/C = locate() in A
|
||||
if(C)
|
||||
C.JoinPlayerHere(M, buckle)
|
||||
return
|
||||
|
||||
//last hurrah
|
||||
var/list/avail = list()
|
||||
for(var/turf/T in A)
|
||||
if(!T.is_blocked_turf(TRUE))
|
||||
avail += T
|
||||
if(avail.len)
|
||||
destination = pick(avail)
|
||||
destination.JoinPlayerHere(M, FALSE)
|
||||
return
|
||||
|
||||
//pick an open spot on arrivals and dump em
|
||||
var/list/arrivals_turfs = shuffle(get_area_turfs(/area/shuttle/arrival))
|
||||
if(arrivals_turfs.len)
|
||||
for(var/turf/T in arrivals_turfs)
|
||||
if(!T.is_blocked_turf(TRUE))
|
||||
T.JoinPlayerHere(M, FALSE)
|
||||
return
|
||||
//last chance, pick ANY spot on arrivals and dump em
|
||||
destination = arrivals_turfs[1]
|
||||
destination.JoinPlayerHere(M, FALSE)
|
||||
else
|
||||
var/msg = "Unable to send mob [M] to late join!"
|
||||
message_admins(msg)
|
||||
CRASH(msg)
|
||||
|
||||
///Lands specified mob at a random spot in the hallways
|
||||
/datum/controller/subsystem/job/proc/DropLandAtRandomHallwayPoint(mob/living/living_mob)
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
var/space_empty_levels = 1
|
||||
|
||||
var/minetype = "lavaland"
|
||||
var/cryo_spawn = FALSE
|
||||
|
||||
var/allow_custom_shuttles = TRUE
|
||||
var/shuttles = list(
|
||||
@@ -135,6 +136,9 @@
|
||||
if ("minetype" in json)
|
||||
minetype = json["minetype"]
|
||||
|
||||
if("cryo_spawn" in json)
|
||||
cryo_spawn = json["cryo_spawn"]
|
||||
|
||||
allow_custom_shuttles = json["allow_custom_shuttles"] != FALSE
|
||||
|
||||
#ifdef UNIT_TESTS
|
||||
|
||||
@@ -432,3 +432,27 @@ GLOBAL_VAR_INIT(cryopods_enabled, FALSE)
|
||||
log_admin(span_notice("[key_name(target)] entered a stasis pod."))
|
||||
message_admins("[key_name_admin(target)] entered a stasis pod. (<A HREF='?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
|
||||
add_fingerprint(target)
|
||||
|
||||
/obj/machinery/cryopod/JoinPlayerHere(mob/M, buckle)
|
||||
. = ..()
|
||||
open_machine()
|
||||
if(iscarbon(M))
|
||||
apply_effects_to_mob(M)
|
||||
|
||||
/obj/machinery/cryopod/proc/apply_effects_to_mob(mob/living/carbon/sleepyhead)
|
||||
to_chat(sleepyhead, span_boldnotice("You begin to wake from cryosleep..."))
|
||||
sleepyhead.set_nutrition(200)
|
||||
sleepyhead.SetSleeping(60) //if you read this comment and feel like shitting together something to adjust IPC charge on wakeup, be my guest.
|
||||
//but it can be worse.
|
||||
if(prob(90))
|
||||
sleepyhead.adjust_drowsiness(rand(3 SECONDS, 10 SECONDS))
|
||||
if(prob(75))
|
||||
sleepyhead.blur_eyes(rand(3, 6))
|
||||
//so much worse
|
||||
if(prob(66))
|
||||
sleepyhead.adjust_disgust(rand(25,35))
|
||||
if(prob(33))
|
||||
sleepyhead.adjust_disgust(rand(20,30))
|
||||
if(prob(16))
|
||||
sleepyhead.adjust_disgust(rand(10, 17))
|
||||
to_chat(sleepyhead, "<span class='userdanger'>The symptoms of cryosleep set in as you awaken...")
|
||||
|
||||
Reference in New Issue
Block a user