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",
|
"cargo": "cargo_gax",
|
||||||
"ferry": "ferry_fancy",
|
"ferry": "ferry_fancy",
|
||||||
"emergency": "emergency_box"
|
"emergency": "emergency_box"
|
||||||
}
|
},
|
||||||
|
"cryo_spawn": true
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -893,38 +893,66 @@ SUBSYSTEM_DEF(job)
|
|||||||
return
|
return
|
||||||
|
|
||||||
//bad mojo
|
//bad mojo
|
||||||
var/area/shuttle/arrival/A = GLOB.areas_by_type[/area/shuttle/arrival]
|
if(SSmapping.config.cryo_spawn)
|
||||||
if(A)
|
var/area/shuttle/arrival/A = GLOB.areas_by_type[/area/crew_quarters/cryopods]
|
||||||
//first check if we can find a chair
|
if(A)
|
||||||
var/obj/structure/chair/C = locate() in A
|
var/list/pods = list()
|
||||||
if(C)
|
var/list/unoccupied_pods = list()
|
||||||
C.JoinPlayerHere(M, buckle)
|
for(var/obj/machinery/cryopod/pod in A)
|
||||||
return
|
pods |= pod
|
||||||
|
if(!pod.occupant)
|
||||||
//last hurrah
|
unoccupied_pods |= pod
|
||||||
var/list/avail = list()
|
if(length(unoccupied_pods)) //if we have any unoccupied ones
|
||||||
for(var/turf/T in A)
|
destination = pick(unoccupied_pods)
|
||||||
if(!T.is_blocked_turf(TRUE))
|
else if(length(pods))
|
||||||
avail += T
|
destination = pick(pods) //if they're all full somehow??
|
||||||
if(avail.len)
|
else //no pods at all
|
||||||
destination = pick(avail)
|
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)
|
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
|
else
|
||||||
var/msg = "Unable to send mob [M] to late join!"
|
var/area/shuttle/arrival/A = GLOB.areas_by_type[/area/shuttle/arrival]
|
||||||
message_admins(msg)
|
if(A)
|
||||||
CRASH(msg)
|
//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
|
///Lands specified mob at a random spot in the hallways
|
||||||
/datum/controller/subsystem/job/proc/DropLandAtRandomHallwayPoint(mob/living/living_mob)
|
/datum/controller/subsystem/job/proc/DropLandAtRandomHallwayPoint(mob/living/living_mob)
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
var/space_empty_levels = 1
|
var/space_empty_levels = 1
|
||||||
|
|
||||||
var/minetype = "lavaland"
|
var/minetype = "lavaland"
|
||||||
|
var/cryo_spawn = FALSE
|
||||||
|
|
||||||
var/allow_custom_shuttles = TRUE
|
var/allow_custom_shuttles = TRUE
|
||||||
var/shuttles = list(
|
var/shuttles = list(
|
||||||
@@ -135,6 +136,9 @@
|
|||||||
if ("minetype" in json)
|
if ("minetype" in json)
|
||||||
minetype = json["minetype"]
|
minetype = json["minetype"]
|
||||||
|
|
||||||
|
if("cryo_spawn" in json)
|
||||||
|
cryo_spawn = json["cryo_spawn"]
|
||||||
|
|
||||||
allow_custom_shuttles = json["allow_custom_shuttles"] != FALSE
|
allow_custom_shuttles = json["allow_custom_shuttles"] != FALSE
|
||||||
|
|
||||||
#ifdef UNIT_TESTS
|
#ifdef UNIT_TESTS
|
||||||
|
|||||||
@@ -432,3 +432,27 @@ GLOBAL_VAR_INIT(cryopods_enabled, FALSE)
|
|||||||
log_admin(span_notice("[key_name(target)] entered a stasis pod."))
|
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>)")
|
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)
|
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