mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 01:49:19 +00:00
bye!
This commit is contained in:
@@ -12,9 +12,9 @@
|
|||||||
density = FALSE
|
density = FALSE
|
||||||
state_open = TRUE
|
state_open = TRUE
|
||||||
circuit = /obj/item/circuitboard/machine/sleeper
|
circuit = /obj/item/circuitboard/machine/sleeper
|
||||||
req_access = list(ACCESS_CMO) //Used for reagent deletion and addition of non medicines
|
|
||||||
var/efficiency = 1
|
var/efficiency = 1
|
||||||
var/min_health = 30
|
var/min_health = -25
|
||||||
var/list/available_chems
|
var/list/available_chems
|
||||||
var/controls_inside = FALSE
|
var/controls_inside = FALSE
|
||||||
var/list/possible_chems = list(
|
var/list/possible_chems = list(
|
||||||
@@ -31,32 +31,13 @@
|
|||||||
|
|
||||||
/obj/machinery/sleeper/Initialize()
|
/obj/machinery/sleeper/Initialize()
|
||||||
. = ..()
|
. = ..()
|
||||||
create_reagents(500, NO_REACT)
|
// if(mapload)
|
||||||
|
// component_parts -= circuit
|
||||||
|
// QDEL_NULL(circuit)
|
||||||
occupant_typecache = GLOB.typecache_living
|
occupant_typecache = GLOB.typecache_living
|
||||||
update_icon()
|
update_icon()
|
||||||
reset_chem_buttons()
|
reset_chem_buttons()
|
||||||
RefreshParts()
|
RefreshParts()
|
||||||
add_inital_chems()
|
|
||||||
new_occupant_dir = dir
|
|
||||||
|
|
||||||
/obj/machinery/sleeper/setDir(newdir)
|
|
||||||
. = ..()
|
|
||||||
new_occupant_dir = dir
|
|
||||||
|
|
||||||
/obj/machinery/sleeper/on_deconstruction()
|
|
||||||
var/obj/item/reagent_containers/sleeper_buffer/buffer = new (loc)
|
|
||||||
buffer.volume = reagents.maximum_volume
|
|
||||||
buffer.reagents.maximum_volume = reagents.maximum_volume
|
|
||||||
reagents.trans_to(buffer.reagents, reagents.total_volume)
|
|
||||||
|
|
||||||
/obj/machinery/sleeper/proc/add_inital_chems()
|
|
||||||
for(var/i in available_chems)
|
|
||||||
var/datum/reagent/R = reagents.has_reagent(i)
|
|
||||||
if(!R)
|
|
||||||
reagents.add_reagent(i, (20))
|
|
||||||
continue
|
|
||||||
if(R.volume < 20)
|
|
||||||
reagents.add_reagent(i, (20 - R.volume))
|
|
||||||
|
|
||||||
/obj/machinery/sleeper/RefreshParts()
|
/obj/machinery/sleeper/RefreshParts()
|
||||||
var/E
|
var/E
|
||||||
@@ -73,15 +54,11 @@
|
|||||||
available_chems |= possible_chems[i]
|
available_chems |= possible_chems[i]
|
||||||
reset_chem_buttons()
|
reset_chem_buttons()
|
||||||
|
|
||||||
//Total container size 500 - 2000u
|
|
||||||
if(reagents)
|
|
||||||
reagents.maximum_volume = (500*E)
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/sleeper/update_icon_state()
|
/obj/machinery/sleeper/update_icon_state()
|
||||||
icon_state = initial(icon_state)
|
|
||||||
if(state_open)
|
if(state_open)
|
||||||
icon_state += "-open"
|
icon_state = "[initial(icon_state)]-open"
|
||||||
|
else
|
||||||
|
icon_state = initial(icon_state)
|
||||||
|
|
||||||
/obj/machinery/sleeper/container_resist(mob/living/user)
|
/obj/machinery/sleeper/container_resist(mob/living/user)
|
||||||
visible_message("<span class='notice'>[occupant] emerges from [src]!</span>",
|
visible_message("<span class='notice'>[occupant] emerges from [src]!</span>",
|
||||||
@@ -98,10 +75,12 @@
|
|||||||
|
|
||||||
/obj/machinery/sleeper/open_machine()
|
/obj/machinery/sleeper/open_machine()
|
||||||
if(!state_open && !panel_open)
|
if(!state_open && !panel_open)
|
||||||
|
// flick("[initial(icon_state)]-anim", src)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/machinery/sleeper/close_machine(mob/user)
|
/obj/machinery/sleeper/close_machine(mob/user)
|
||||||
if((isnull(user) || istype(user)) && state_open && !panel_open)
|
if((isnull(user) || istype(user)) && state_open && !panel_open)
|
||||||
|
// flick("[initial(icon_state)]-anim", src)
|
||||||
..(user)
|
..(user)
|
||||||
var/mob/living/mob_occupant = occupant
|
var/mob/living/mob_occupant = occupant
|
||||||
if(mob_occupant && mob_occupant.stat != DEAD)
|
if(mob_occupant && mob_occupant.stat != DEAD)
|
||||||
@@ -112,46 +91,23 @@
|
|||||||
if (. & EMP_PROTECT_SELF)
|
if (. & EMP_PROTECT_SELF)
|
||||||
return
|
return
|
||||||
if(is_operational() && occupant)
|
if(is_operational() && occupant)
|
||||||
var/datum/reagent/R = pick(reagents.reagent_list)
|
var/datum/reagent/R = pick(reagents.reagent_list) //cit specific
|
||||||
inject_chem(R.type, occupant)
|
inject_chem(R.type, occupant)
|
||||||
open_machine()
|
open_machine()
|
||||||
//Is this too much?
|
//Is this too much? Cit specific
|
||||||
if(severity == EMP_HEAVY)
|
if(severity == EMP_HEAVY)
|
||||||
var/chem = pick(available_chems)
|
var/chem = pick(available_chems)
|
||||||
available_chems -= chem
|
available_chems -= chem
|
||||||
available_chems += get_random_reagent_id()
|
available_chems += get_random_reagent_id()
|
||||||
reset_chem_buttons()
|
reset_chem_buttons()
|
||||||
|
|
||||||
/obj/machinery/sleeper/attackby(obj/item/I, mob/user, params)
|
|
||||||
if(istype(I, /obj/item/reagent_containers/sleeper_buffer))
|
|
||||||
var/obj/item/reagent_containers/sleeper_buffer/SB = I
|
|
||||||
if((SB.reagents.total_volume + reagents.total_volume) < reagents.maximum_volume)
|
|
||||||
SB.reagents.trans_to(reagents, SB.reagents.total_volume)
|
|
||||||
visible_message("[user] places the [SB] into the [src].")
|
|
||||||
qdel(SB)
|
|
||||||
return
|
|
||||||
else
|
|
||||||
SB.reagents.trans_to(reagents, SB.reagents.total_volume)
|
|
||||||
visible_message("[user] adds as much as they can to the [src] from the [SB].")
|
|
||||||
return
|
|
||||||
if(istype(I, /obj/item/reagent_containers))
|
|
||||||
var/obj/item/reagent_containers/RC = I
|
|
||||||
if(RC.reagents.total_volume == 0)
|
|
||||||
to_chat(user, "<span class='notice'>The [I] is empty!</span>")
|
|
||||||
for(var/datum/reagent/R in RC.reagents.reagent_list)
|
|
||||||
if((obj_flags & EMAGGED) || (allowed(usr)))
|
|
||||||
break
|
|
||||||
if(!istype(R, /datum/reagent/medicine))
|
|
||||||
visible_message("The [src] gives out a hearty boop and rejects the [I]. The Sleeper's screen flashes with a pompous \"Medicines only, please.\"")
|
|
||||||
return
|
|
||||||
RC.reagents.trans_to(reagents, 1000)
|
|
||||||
visible_message("[user] adds as much as they can to the [src] from the [I].")
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/sleeper/MouseDrop_T(mob/target, mob/user)
|
/obj/machinery/sleeper/MouseDrop_T(mob/target, mob/user)
|
||||||
if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser())
|
if(user.stat || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser())
|
||||||
return
|
return
|
||||||
|
if(isliving(user))
|
||||||
|
var/mob/living/L = user
|
||||||
|
if(!(L.mobility_flags & MOBILITY_STAND))
|
||||||
|
return
|
||||||
close_machine(target)
|
close_machine(target)
|
||||||
|
|
||||||
/obj/machinery/sleeper/screwdriver_act(mob/living/user, obj/item/I)
|
/obj/machinery/sleeper/screwdriver_act(mob/living/user, obj/item/I)
|
||||||
@@ -187,20 +143,6 @@
|
|||||||
visible_message("<span class='notice'>[usr] pries open [src].</span>", "<span class='notice'>You pry open [src].</span>")
|
visible_message("<span class='notice'>[usr] pries open [src].</span>", "<span class='notice'>You pry open [src].</span>")
|
||||||
open_machine()
|
open_machine()
|
||||||
|
|
||||||
/obj/machinery/sleeper/AltClick(mob/user)
|
|
||||||
. = ..()
|
|
||||||
if(!user.canUseTopic(src, !hasSiliconAccessInArea(user)))
|
|
||||||
return
|
|
||||||
if(state_open)
|
|
||||||
close_machine()
|
|
||||||
else
|
|
||||||
open_machine()
|
|
||||||
return TRUE
|
|
||||||
|
|
||||||
/obj/machinery/sleeper/examine(mob/user)
|
|
||||||
. = ..()
|
|
||||||
. += "<span class='notice'>Alt-click [src] to [state_open ? "close" : "open"] it.</span>"
|
|
||||||
|
|
||||||
/obj/machinery/sleeper/ui_state(mob/user)
|
/obj/machinery/sleeper/ui_state(mob/user)
|
||||||
if(controls_inside)
|
if(controls_inside)
|
||||||
return GLOB.notcontained_state
|
return GLOB.notcontained_state
|
||||||
@@ -212,6 +154,18 @@
|
|||||||
ui = new(user, src, "Sleeper", name)
|
ui = new(user, src, "Sleeper", name)
|
||||||
ui.open()
|
ui.open()
|
||||||
|
|
||||||
|
/obj/machinery/sleeper/AltClick(mob/user)
|
||||||
|
if(!user.canUseTopic(src, !issilicon(user)))
|
||||||
|
return
|
||||||
|
if(state_open)
|
||||||
|
close_machine()
|
||||||
|
else
|
||||||
|
open_machine()
|
||||||
|
|
||||||
|
/obj/machinery/sleeper/examine(mob/user)
|
||||||
|
. = ..()
|
||||||
|
. += "<span class='notice'>Alt-click [src] to [state_open ? "close" : "open"] it.</span>"
|
||||||
|
|
||||||
/obj/machinery/sleeper/process()
|
/obj/machinery/sleeper/process()
|
||||||
..()
|
..()
|
||||||
check_nap_violations()
|
check_nap_violations()
|
||||||
@@ -221,22 +175,13 @@
|
|||||||
|
|
||||||
/obj/machinery/sleeper/ui_data()
|
/obj/machinery/sleeper/ui_data()
|
||||||
var/list/data = list()
|
var/list/data = list()
|
||||||
var/chemical_list = list()
|
|
||||||
var/blood_percent = 0
|
|
||||||
|
|
||||||
data["occupied"] = occupant ? 1 : 0
|
data["occupied"] = occupant ? 1 : 0
|
||||||
data["open"] = state_open
|
data["open"] = state_open
|
||||||
data["blood_levels"] = blood_percent
|
|
||||||
data["blood_status"] = "Patient either has no blood, or does not require it to function."
|
|
||||||
data["chemical_list"] = chemical_list
|
|
||||||
|
|
||||||
data["chems"] = list()
|
data["chems"] = list()
|
||||||
for(var/chem in available_chems)
|
for(var/chem in available_chems)
|
||||||
var/datum/reagent/R = reagents.has_reagent(chem)
|
var/datum/reagent/R = GLOB.chemical_reagents_list[chem]
|
||||||
R = GLOB.chemical_reagents_list[chem]
|
data["chems"] += list(list("name" = R.name, "id" = R.type, "allowed" = chem_allowed(chem)))
|
||||||
data["synthchems"] += list(list("name" = R.name, "id" = R.type, "synth_allowed" = synth_allowed(chem)))
|
|
||||||
for(var/datum/reagent/R in reagents.reagent_list)
|
|
||||||
data["chems"] += list(list("name" = R.name, "id" = R.type, "vol" = R.volume, "purity" = R.purity, "allowed" = chem_allowed(R.type)))
|
|
||||||
|
|
||||||
data["occupant"] = list()
|
data["occupant"] = list()
|
||||||
var/mob/living/mob_occupant = occupant
|
var/mob/living/mob_occupant = occupant
|
||||||
@@ -264,40 +209,10 @@
|
|||||||
data["occupant"]["fireLoss"] = mob_occupant.getFireLoss()
|
data["occupant"]["fireLoss"] = mob_occupant.getFireLoss()
|
||||||
data["occupant"]["cloneLoss"] = mob_occupant.getCloneLoss()
|
data["occupant"]["cloneLoss"] = mob_occupant.getCloneLoss()
|
||||||
data["occupant"]["brainLoss"] = mob_occupant.getOrganLoss(ORGAN_SLOT_BRAIN)
|
data["occupant"]["brainLoss"] = mob_occupant.getOrganLoss(ORGAN_SLOT_BRAIN)
|
||||||
|
data["occupant"]["reagents"] = list()
|
||||||
if(mob_occupant.reagents.reagent_list.len)
|
if(mob_occupant.reagents && mob_occupant.reagents.reagent_list.len)
|
||||||
for(var/datum/reagent/R in mob_occupant.reagents.reagent_list)
|
for(var/datum/reagent/R in mob_occupant.reagents.reagent_list)
|
||||||
chemical_list += list(list("name" = R.name, "volume" = R.volume))
|
data["occupant"]["reagents"] += list(list("name" = R.name, "volume" = R.volume))
|
||||||
else
|
|
||||||
chemical_list = "Patient has no reagents."
|
|
||||||
|
|
||||||
data["occupant"]["failing_organs"] = list()
|
|
||||||
var/mob/living/carbon/C = mob_occupant
|
|
||||||
if(C)
|
|
||||||
for(var/obj/item/organ/Or in C.getFailingOrgans())
|
|
||||||
if(istype(Or, /obj/item/organ/brain))
|
|
||||||
continue
|
|
||||||
data["occupant"]["failing_organs"] += list(list("name" = Or.name))
|
|
||||||
|
|
||||||
if(istype(C)) //Non-carbons shouldn't be able to enter sleepers, but this is to prevent runtimes if something ever breaks
|
|
||||||
if(mob_occupant.has_dna()) // Blood-stuff is mostly a copy-paste from the healthscanner.
|
|
||||||
blood_percent = round((C.blood_volume / BLOOD_VOLUME_NORMAL)*100)
|
|
||||||
var/blood_id = C.get_blood_id()
|
|
||||||
var/blood_warning = ""
|
|
||||||
if(blood_percent < 80)
|
|
||||||
blood_warning = "Patient has low blood levels."
|
|
||||||
if(blood_percent < 60)
|
|
||||||
blood_warning = "Patient has DANGEROUSLY low blood levels."
|
|
||||||
if(blood_id)
|
|
||||||
var/blood_type = C.dna.blood_type
|
|
||||||
if(!(blood_id in GLOB.blood_reagent_types)) // special blood substance
|
|
||||||
var/datum/reagent/R = GLOB.chemical_reagents_list[blood_id]
|
|
||||||
if(R)
|
|
||||||
blood_type = R.name
|
|
||||||
else
|
|
||||||
blood_type = blood_id
|
|
||||||
data["blood_status"] = "Patient has [blood_type] type blood. [blood_warning]"
|
|
||||||
data["blood_levels"] = blood_percent
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
/obj/machinery/sleeper/ui_act(action, params)
|
/obj/machinery/sleeper/ui_act(action, params)
|
||||||
@@ -314,37 +229,14 @@
|
|||||||
. = TRUE
|
. = TRUE
|
||||||
if("inject")
|
if("inject")
|
||||||
var/chem = text2path(params["chem"])
|
var/chem = text2path(params["chem"])
|
||||||
var/amount = text2num(params["volume"])
|
|
||||||
if(!is_operational() || !mob_occupant || isnull(chem))
|
if(!is_operational() || !mob_occupant || isnull(chem))
|
||||||
return
|
return
|
||||||
if(mob_occupant.health < min_health && chem != /datum/reagent/medicine/epinephrine)
|
if(mob_occupant.health < min_health && chem != /datum/reagent/medicine/epinephrine)
|
||||||
return
|
return
|
||||||
if(inject_chem(chem, usr, amount))
|
if(inject_chem(chem, usr))
|
||||||
. = TRUE
|
. = TRUE
|
||||||
if(scrambled_chems && prob(5))
|
if(scrambled_chems && prob(5))
|
||||||
to_chat(usr, "<span class='warning'>Chemical system re-route detected, results may not be as expected!</span>")
|
to_chat(usr, "<span class='warning'>Chemical system re-route detected, results may not be as expected!</span>")
|
||||||
if("synth")
|
|
||||||
var/chem = text2path(params["chem"])
|
|
||||||
if(!is_operational())
|
|
||||||
return
|
|
||||||
reagents.add_reagent(chem_buttons[chem], 10) //other_purity = 0.75 for when the mechanics are in
|
|
||||||
if("purge")
|
|
||||||
var/chem = text2path(params["chem"])
|
|
||||||
if(allowed(usr))
|
|
||||||
if(!is_operational())
|
|
||||||
return
|
|
||||||
reagents.remove_reagent(chem, 1000)
|
|
||||||
return
|
|
||||||
if(chem in available_chems)
|
|
||||||
if(!is_operational())
|
|
||||||
return
|
|
||||||
/*var/datum/reagent/R = reagents.has_reagent(chem) //For when purity effects are in
|
|
||||||
if(R.purity < 0.8)*/
|
|
||||||
reagents.remove_reagent(chem, 1000)
|
|
||||||
else
|
|
||||||
visible_message("<span class='warning'>Access Denied.</span>")
|
|
||||||
playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0)
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/sleeper/emag_act(mob/user)
|
/obj/machinery/sleeper/emag_act(mob/user)
|
||||||
. = ..()
|
. = ..()
|
||||||
@@ -353,10 +245,9 @@
|
|||||||
to_chat(user, "<span class='warning'>You scramble the sleeper's user interface!</span>")
|
to_chat(user, "<span class='warning'>You scramble the sleeper's user interface!</span>")
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
//trans to
|
/obj/machinery/sleeper/proc/inject_chem(chem, mob/user)
|
||||||
/obj/machinery/sleeper/proc/inject_chem(chem, mob/user, volume = 10)
|
if((chem in available_chems) && chem_allowed(chem))
|
||||||
if(chem_allowed(chem))
|
occupant.reagents.add_reagent(chem_buttons[chem], 10) //emag effect kicks in here so that the "intended" chem is used for all checks, for extra FUUU
|
||||||
reagents.trans_id_to(occupant, chem, volume)//emag effect kicks in here so that the "intended" chem is used for all checks, for extra FUUU
|
|
||||||
if(user)
|
if(user)
|
||||||
log_combat(user, occupant, "injected [chem] into", addition = "via [src]")
|
log_combat(user, occupant, "injected [chem] into", addition = "via [src]")
|
||||||
return TRUE
|
return TRUE
|
||||||
@@ -369,14 +260,6 @@
|
|||||||
var/occ_health = mob_occupant.health > min_health || chem == /datum/reagent/medicine/epinephrine
|
var/occ_health = mob_occupant.health > min_health || chem == /datum/reagent/medicine/epinephrine
|
||||||
return amount && occ_health
|
return amount && occ_health
|
||||||
|
|
||||||
/obj/machinery/sleeper/proc/synth_allowed(chem)
|
|
||||||
var/datum/reagent/R = reagents.has_reagent(chem)
|
|
||||||
if(!R)
|
|
||||||
return TRUE
|
|
||||||
if(R.volume < 50)
|
|
||||||
return TRUE
|
|
||||||
return FALSE
|
|
||||||
|
|
||||||
/obj/machinery/sleeper/proc/reset_chem_buttons()
|
/obj/machinery/sleeper/proc/reset_chem_buttons()
|
||||||
scrambled_chems = FALSE
|
scrambled_chems = FALSE
|
||||||
LAZYINITLIST(chem_buttons)
|
LAZYINITLIST(chem_buttons)
|
||||||
@@ -416,23 +299,6 @@
|
|||||||
component_parts += new /obj/item/stack/cable_coil(null)
|
component_parts += new /obj/item/stack/cable_coil(null)
|
||||||
RefreshParts()
|
RefreshParts()
|
||||||
|
|
||||||
/obj/machinery/sleeper/clockwork
|
|
||||||
name = "soothing sleeper"
|
|
||||||
desc = "A large cryogenics unit built from brass. Its surface is pleasantly cool the touch."
|
|
||||||
icon_state = "sleeper_clockwork"
|
|
||||||
enter_message = "<span class='bold inathneq_small'>You hear the gentle hum and click of machinery, and are lulled into a sense of peace.</span>"
|
|
||||||
possible_chems = list(list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/bicaridine,
|
|
||||||
/datum/reagent/medicine/kelotane, /datum/reagent/medicine/oculine, /datum/reagent/medicine/inacusiate, /datum/reagent/medicine/mannitol))
|
|
||||||
|
|
||||||
/obj/machinery/sleeper/clockwork/process()
|
|
||||||
if(occupant && isliving(occupant))
|
|
||||||
var/mob/living/L = occupant
|
|
||||||
if(GLOB.clockwork_vitality) //If there's Vitality, the sleeper has passive healing
|
|
||||||
GLOB.clockwork_vitality = max(0, GLOB.clockwork_vitality - 1)
|
|
||||||
L.adjustBruteLoss(-1)
|
|
||||||
L.adjustFireLoss(-1)
|
|
||||||
L.adjustOxyLoss(-5)
|
|
||||||
|
|
||||||
/obj/machinery/sleeper/old
|
/obj/machinery/sleeper/old
|
||||||
icon_state = "oldpod"
|
icon_state = "oldpod"
|
||||||
|
|
||||||
@@ -443,8 +309,6 @@
|
|||||||
idle_power_usage = 3000
|
idle_power_usage = 3000
|
||||||
circuit = /obj/item/circuitboard/machine/sleeper/party
|
circuit = /obj/item/circuitboard/machine/sleeper/party
|
||||||
var/leddit = FALSE //Get it like reddit and lead alright fine
|
var/leddit = FALSE //Get it like reddit and lead alright fine
|
||||||
ui_x = 310
|
|
||||||
ui_y = 400
|
|
||||||
|
|
||||||
controls_inside = TRUE
|
controls_inside = TRUE
|
||||||
possible_chems = list(
|
possible_chems = list(
|
||||||
@@ -477,3 +341,23 @@
|
|||||||
/obj/machinery/sleeper/party/emag_act(mob/user)
|
/obj/machinery/sleeper/party/emag_act(mob/user)
|
||||||
..()
|
..()
|
||||||
leddit = TRUE
|
leddit = TRUE
|
||||||
|
|
||||||
|
/obj/machinery/sleeper/clockwork
|
||||||
|
name = "soothing sleeper"
|
||||||
|
desc = "A large cryogenics unit built from brass. Its surface is pleasantly cool the touch."
|
||||||
|
icon_state = "sleeper_clockwork"
|
||||||
|
enter_message = "<span class='bold inathneq_small'>You hear the gentle hum and click of machinery, and are lulled into a sense of peace.</span>"
|
||||||
|
possible_chems = list(
|
||||||
|
list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/kelotane, /datum/reagent/medicine/oculine, /datum/reagent/medicine/inacusiate, /datum/reagent/medicine/mannitol)
|
||||||
|
) //everything is available at start
|
||||||
|
fair_market_price = 0 //it's free
|
||||||
|
|
||||||
|
/obj/machinery/sleeper/clockwork/process()
|
||||||
|
..()
|
||||||
|
if(occupant && isliving(occupant))
|
||||||
|
var/mob/living/L = occupant
|
||||||
|
if(GLOB.clockwork_vitality) //If there's Vitality, the sleeper has passive healing
|
||||||
|
GLOB.clockwork_vitality = max(0, GLOB.clockwork_vitality - 1)
|
||||||
|
L.adjustBruteLoss(-1)
|
||||||
|
L.adjustFireLoss(-1)
|
||||||
|
L.adjustOxyLoss(-5)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useBackend } from '../backend';
|
import { useBackend } from '../backend';
|
||||||
import { AnimatedNumber, Box, Section, LabeledList, Button, ProgressBar } from '../components';
|
import { Box, Section, LabeledList, Button, ProgressBar } from '../components';
|
||||||
import { Fragment } from 'inferno';
|
import { Fragment } from 'inferno';
|
||||||
import { Window } from '../layouts';
|
import { Window } from '../layouts';
|
||||||
|
|
||||||
@@ -41,18 +41,6 @@ export const Sleeper = (props, context) => {
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
});
|
});
|
||||||
const preSortSynth = data.synthchems || [];
|
|
||||||
const synthchems = preSortSynth.sort((a, b) => {
|
|
||||||
const descA = a.name.toLowerCase();
|
|
||||||
const descB = b.name.toLowerCase();
|
|
||||||
if (descA < descB) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (descA > descB) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
return (
|
return (
|
||||||
<Window
|
<Window
|
||||||
width={310}
|
width={310}
|
||||||
@@ -93,15 +81,6 @@ export const Sleeper = (props, context) => {
|
|||||||
color="bad" />
|
color="bad" />
|
||||||
</LabeledList.Item>
|
</LabeledList.Item>
|
||||||
))}
|
))}
|
||||||
<LabeledList.Item
|
|
||||||
label={'Blood'}>
|
|
||||||
<ProgressBar
|
|
||||||
value={data.blood_levels/100}
|
|
||||||
color="bad">
|
|
||||||
<AnimatedNumber value={data.blood_levels} />
|
|
||||||
</ProgressBar>
|
|
||||||
{data.blood_status}
|
|
||||||
</LabeledList.Item>
|
|
||||||
<LabeledList.Item
|
<LabeledList.Item
|
||||||
label="Cells"
|
label="Cells"
|
||||||
color={occupant.cloneLoss ? 'bad' : 'good'}>
|
color={occupant.cloneLoss ? 'bad' : 'good'}>
|
||||||
@@ -116,18 +95,6 @@ export const Sleeper = (props, context) => {
|
|||||||
</Fragment>
|
</Fragment>
|
||||||
)}
|
)}
|
||||||
</Section>
|
</Section>
|
||||||
<Section title="Chemical Analysis">
|
|
||||||
<LabeledList.Item label="Chemical Contents">
|
|
||||||
{data.chemical_list.map(specificChem => (
|
|
||||||
<Box
|
|
||||||
key={specificChem.id}
|
|
||||||
color="good" >
|
|
||||||
{specificChem.volume} units of {specificChem.name}
|
|
||||||
</Box>
|
|
||||||
),
|
|
||||||
)}
|
|
||||||
</LabeledList.Item>
|
|
||||||
</Section>
|
|
||||||
<Section
|
<Section
|
||||||
title="Medicines"
|
title="Medicines"
|
||||||
minHeight="205px"
|
minHeight="205px"
|
||||||
@@ -149,33 +116,6 @@ export const Sleeper = (props, context) => {
|
|||||||
})} />
|
})} />
|
||||||
))}
|
))}
|
||||||
</Section>
|
</Section>
|
||||||
<Section
|
|
||||||
title="Synthesize Chemicals">
|
|
||||||
{synthchems.map(chem => (
|
|
||||||
<Button
|
|
||||||
key={chem.name}
|
|
||||||
content={chem.name}
|
|
||||||
width="140px"
|
|
||||||
onClick={() => act('synth', {
|
|
||||||
chem: chem.id,
|
|
||||||
})}
|
|
||||||
/>
|
|
||||||
))}
|
|
||||||
</Section>
|
|
||||||
<Section
|
|
||||||
title="Purge Chemicals">
|
|
||||||
{chems.map(chem => (
|
|
||||||
<Button
|
|
||||||
key={chem.name}
|
|
||||||
content={chem.name}
|
|
||||||
disabled={!(chem.allowed)}
|
|
||||||
width="140px"
|
|
||||||
onClick={() => act('purge', {
|
|
||||||
chem: chem.id,
|
|
||||||
})}
|
|
||||||
/>
|
|
||||||
))}
|
|
||||||
</Section>
|
|
||||||
</Window.Content>
|
</Window.Content>
|
||||||
</Window>
|
</Window>
|
||||||
);
|
);
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user