[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:
Byemoh
2023-12-19 16:56:21 -06:00
committed by GitHub
parent 64be2f4afd
commit def53a1a31
5 changed files with 707 additions and 536 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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...")