This commit is contained in:
@@ -9475,14 +9475,8 @@
|
||||
/obj/structure/sign/warning/nosmoking{
|
||||
pixel_y = 30
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/janitor)
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/medical/sleeper)
|
||||
"asN" = (
|
||||
/obj/machinery/airalarm{
|
||||
dir = 4;
|
||||
@@ -9567,20 +9561,10 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/medbay/central)
|
||||
"asY" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/crowbar,
|
||||
/obj/item/clothing/neck/stethoscope,
|
||||
/obj/item/reagent_containers/spray/cleaner,
|
||||
/obj/structure/sign/warning/nosmoking{
|
||||
pixel_y = 30
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/central)
|
||||
"ata" = (
|
||||
/turf/open/floor/wood,
|
||||
@@ -56039,6 +56023,10 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/theatre)
|
||||
"kEm" = (
|
||||
/mob/living/simple_animal/opossum/poppy,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port/aft)
|
||||
"kEY" = (
|
||||
/obj/effect/landmark/stationroom/box/engine,
|
||||
/turf/open/space/basic,
|
||||
@@ -58166,6 +58154,10 @@
|
||||
/obj/effect/decal/cleanable/blood/old,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/fore)
|
||||
"rtU" = (
|
||||
/mob/living/simple_animal/opossum,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/fore)
|
||||
"ruo" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
@@ -85350,7 +85342,7 @@ bVI
|
||||
bTA
|
||||
xgk
|
||||
bHE
|
||||
bHE
|
||||
kEm
|
||||
bHE
|
||||
bHE
|
||||
bHE
|
||||
@@ -91231,7 +91223,7 @@ bqH
|
||||
aJq
|
||||
aJq
|
||||
gnf
|
||||
asM
|
||||
bCv
|
||||
bDJ
|
||||
bCt
|
||||
bGD
|
||||
@@ -95597,7 +95589,7 @@ bEe
|
||||
bhh
|
||||
bBL
|
||||
bvj
|
||||
bAl
|
||||
asM
|
||||
bAl
|
||||
bvh
|
||||
bzS
|
||||
@@ -104295,7 +104287,7 @@ anf
|
||||
anf
|
||||
alP
|
||||
alP
|
||||
anf
|
||||
rtU
|
||||
alP
|
||||
alP
|
||||
alP
|
||||
|
||||
@@ -242,13 +242,13 @@
|
||||
pixel_x = 22
|
||||
},
|
||||
/obj/structure/rack,
|
||||
/obj/item/gun/energy{
|
||||
/obj/item/gun/energy/e_gun{
|
||||
pixel_y = -6
|
||||
},
|
||||
/obj/item/gun/energy{
|
||||
/obj/item/gun/energy/e_gun{
|
||||
pixel_y = -3
|
||||
},
|
||||
/obj/item/gun/energy,
|
||||
/obj/item/gun/energy/e_gun,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ai_monitored/security/armory)
|
||||
"aaI" = (
|
||||
|
||||
@@ -126384,6 +126384,13 @@
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/engine/atmos)
|
||||
"kqo" = (
|
||||
/obj/structure/cable/white{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/mob/living/simple_animal/opossum,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port/fore)
|
||||
"ktK" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
@@ -127042,6 +127049,10 @@
|
||||
dir = 1
|
||||
},
|
||||
/area/science/circuit)
|
||||
"pok" = (
|
||||
/mob/living/simple_animal/opossum/poppy,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/crew_quarters/theatre/abandoned)
|
||||
"poI" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/tank/internals/anesthetic,
|
||||
@@ -164027,7 +164038,7 @@ aof
|
||||
aky
|
||||
aky
|
||||
aky
|
||||
arD
|
||||
kqo
|
||||
asZ
|
||||
aui
|
||||
avF
|
||||
@@ -178786,7 +178797,7 @@ dCX
|
||||
dEj
|
||||
dFq
|
||||
dGJ
|
||||
dGJ
|
||||
pok
|
||||
dJy
|
||||
dGJ
|
||||
dGJ
|
||||
|
||||
@@ -78498,6 +78498,7 @@
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
|
||||
/mob/living/simple_animal/opossum/poppy,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
@@ -84902,6 +84903,11 @@
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/hallway/secondary/entry)
|
||||
"jGN" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/mob/living/simple_animal/opossum,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/aft)
|
||||
"jHJ" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/general/visible{
|
||||
dir = 9
|
||||
@@ -125028,7 +125034,7 @@ bAP
|
||||
bCf
|
||||
bhQ
|
||||
bhQ
|
||||
bAM
|
||||
jGN
|
||||
bGH
|
||||
bOc
|
||||
bHZ
|
||||
|
||||
@@ -80285,6 +80285,11 @@
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/area/engine/engineering)
|
||||
"eCO" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/mob/living/simple_animal/opossum/poppy,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/maintenance/starboard/aft)
|
||||
"eDP" = (
|
||||
/obj/effect/turf_decal/trimline/blue/filled/corner{
|
||||
dir = 8
|
||||
@@ -82038,6 +82043,10 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/cafeteria,
|
||||
/area/crew_quarters/kitchen)
|
||||
"vDO" = (
|
||||
/mob/living/simple_animal/opossum,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/fore)
|
||||
"vDW" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
@@ -107578,7 +107587,7 @@ aaA
|
||||
abY
|
||||
ayy
|
||||
acw
|
||||
acw
|
||||
vDO
|
||||
acw
|
||||
acw
|
||||
aeG
|
||||
@@ -135197,7 +135206,7 @@ bPp
|
||||
ccJ
|
||||
clR
|
||||
bQh
|
||||
clN
|
||||
eCO
|
||||
bPp
|
||||
bQh
|
||||
bYx
|
||||
|
||||
@@ -10324,6 +10324,7 @@
|
||||
/turf/open/floor/carpet,
|
||||
/area/crew_quarters/dorms)
|
||||
"atd" = (
|
||||
/mob/living/simple_animal/opossum,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "panelscorched"
|
||||
},
|
||||
@@ -82149,6 +82150,16 @@
|
||||
/obj/structure/grille,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port/aft)
|
||||
"pbc" = (
|
||||
/obj/structure/light_construct/small{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/computer/security/telescreen/entertainment{
|
||||
pixel_x = 30
|
||||
},
|
||||
/mob/living/simple_animal/opossum/poppy,
|
||||
/turf/open/floor/wood,
|
||||
/area/maintenance/port/aft)
|
||||
"pbF" = (
|
||||
/obj/machinery/portable_atmospherics/canister,
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
|
||||
@@ -100175,7 +100186,7 @@ csT
|
||||
dux
|
||||
cxQ
|
||||
ckS
|
||||
cmi
|
||||
pbc
|
||||
cnk
|
||||
ckP
|
||||
cmi
|
||||
|
||||
@@ -41988,6 +41988,16 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hydroponics)
|
||||
"saI" = (
|
||||
/obj/structure/cable/white{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/opossum,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard)
|
||||
"scn" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
@@ -45205,6 +45215,10 @@
|
||||
/obj/effect/landmark/carpspawn,
|
||||
/turf/open/space,
|
||||
/area/space/station_ruins)
|
||||
"uXV" = (
|
||||
/mob/living/simple_animal/opossum/poppy,
|
||||
/turf/open/floor/wood,
|
||||
/area/maintenance/port/aft)
|
||||
"ver" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
|
||||
dir = 10
|
||||
@@ -79446,7 +79460,7 @@ aFM
|
||||
aOH
|
||||
aOT
|
||||
aPV
|
||||
aRm
|
||||
uXV
|
||||
aSI
|
||||
aRC
|
||||
aKm
|
||||
@@ -92526,7 +92540,7 @@ aSD
|
||||
aRz
|
||||
aRz
|
||||
aRz
|
||||
sGY
|
||||
saI
|
||||
aRz
|
||||
sIb
|
||||
bsD
|
||||
|
||||
@@ -54046,6 +54046,20 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/construction/mining/aux_base)
|
||||
"fgS" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/mob/living/simple_animal/opossum/poppy,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/maintenance/department/engine)
|
||||
"fhM" = (
|
||||
/obj/item/storage/secure/safe{
|
||||
pixel_x = -22
|
||||
@@ -58645,6 +58659,10 @@
|
||||
"pyw" = (
|
||||
/turf/open/space/basic,
|
||||
/area/hallway/secondary/entry)
|
||||
"pzF" = (
|
||||
/mob/living/simple_animal/opossum,
|
||||
/turf/open/floor/wood,
|
||||
/area/maintenance/department/crew_quarters/dorms)
|
||||
"pBD" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-8"
|
||||
@@ -83454,7 +83472,7 @@ bHP
|
||||
bJb
|
||||
bJb
|
||||
bJb
|
||||
bJb
|
||||
fgS
|
||||
bJb
|
||||
bJb
|
||||
bPp
|
||||
@@ -99823,7 +99841,7 @@ akh
|
||||
alc
|
||||
alR
|
||||
amF
|
||||
alb
|
||||
pzF
|
||||
alb
|
||||
anm
|
||||
ajv
|
||||
|
||||
@@ -18912,6 +18912,10 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/storage/primary)
|
||||
"ihL" = (
|
||||
/mob/living/simple_animal/opossum,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/aft/secondary)
|
||||
"ihX" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-2"
|
||||
@@ -24053,6 +24057,10 @@
|
||||
"luo" = (
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/science/misc_lab)
|
||||
"lwl" = (
|
||||
/mob/living/simple_animal/opossum/poppy,
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
"lwH" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-4"
|
||||
@@ -83466,7 +83474,7 @@ tRe
|
||||
tRe
|
||||
tRe
|
||||
bWf
|
||||
bVa
|
||||
ihL
|
||||
kXG
|
||||
sqx
|
||||
owj
|
||||
@@ -98024,7 +98032,7 @@ xUL
|
||||
xUL
|
||||
dKF
|
||||
ijZ
|
||||
ijZ
|
||||
lwl
|
||||
bnU
|
||||
oJa
|
||||
cNE
|
||||
|
||||
+59
-175
@@ -12,9 +12,9 @@
|
||||
density = FALSE
|
||||
state_open = TRUE
|
||||
circuit = /obj/item/circuitboard/machine/sleeper
|
||||
req_access = list(ACCESS_CMO) //Used for reagent deletion and addition of non medicines
|
||||
|
||||
var/efficiency = 1
|
||||
var/min_health = 30
|
||||
var/min_health = -25
|
||||
var/list/available_chems
|
||||
var/controls_inside = FALSE
|
||||
var/list/possible_chems = list(
|
||||
@@ -31,32 +31,13 @@
|
||||
|
||||
/obj/machinery/sleeper/Initialize()
|
||||
. = ..()
|
||||
create_reagents(500, NO_REACT)
|
||||
// if(mapload)
|
||||
// component_parts -= circuit
|
||||
// QDEL_NULL(circuit)
|
||||
occupant_typecache = GLOB.typecache_living
|
||||
update_icon()
|
||||
reset_chem_buttons()
|
||||
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()
|
||||
var/E
|
||||
@@ -73,15 +54,11 @@
|
||||
available_chems |= possible_chems[i]
|
||||
reset_chem_buttons()
|
||||
|
||||
//Total container size 500 - 2000u
|
||||
if(reagents)
|
||||
reagents.maximum_volume = (500*E)
|
||||
|
||||
|
||||
/obj/machinery/sleeper/update_icon_state()
|
||||
icon_state = initial(icon_state)
|
||||
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)
|
||||
visible_message("<span class='notice'>[occupant] emerges from [src]!</span>",
|
||||
@@ -98,10 +75,12 @@
|
||||
|
||||
/obj/machinery/sleeper/open_machine()
|
||||
if(!state_open && !panel_open)
|
||||
// flick("[initial(icon_state)]-anim", src)
|
||||
..()
|
||||
|
||||
/obj/machinery/sleeper/close_machine(mob/user)
|
||||
if((isnull(user) || istype(user)) && state_open && !panel_open)
|
||||
// flick("[initial(icon_state)]-anim", src)
|
||||
..(user)
|
||||
var/mob/living/mob_occupant = occupant
|
||||
if(mob_occupant && mob_occupant.stat != DEAD)
|
||||
@@ -112,46 +91,23 @@
|
||||
if (. & EMP_PROTECT_SELF)
|
||||
return
|
||||
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)
|
||||
open_machine()
|
||||
//Is this too much?
|
||||
//Is this too much? Cit specific
|
||||
if(severity == EMP_HEAVY)
|
||||
var/chem = pick(available_chems)
|
||||
available_chems -= chem
|
||||
available_chems += get_random_reagent_id()
|
||||
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)
|
||||
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
|
||||
if(isliving(user))
|
||||
var/mob/living/L = user
|
||||
if(!(L.mobility_flags & MOBILITY_STAND))
|
||||
return
|
||||
close_machine(target)
|
||||
|
||||
/obj/machinery/sleeper/screwdriver_act(mob/living/user, obj/item/I)
|
||||
@@ -187,23 +143,9 @@
|
||||
visible_message("<span class='notice'>[usr] pries open [src].</span>", "<span class='notice'>You pry open [src].</span>")
|
||||
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)
|
||||
if(controls_inside)
|
||||
return GLOB.notcontained_state
|
||||
return GLOB.contained_state
|
||||
return GLOB.default_state
|
||||
|
||||
/obj/machinery/sleeper/ui_interact(mob/user, datum/tgui/ui)
|
||||
@@ -212,6 +154,18 @@
|
||||
ui = new(user, src, "Sleeper", name)
|
||||
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()
|
||||
..()
|
||||
check_nap_violations()
|
||||
@@ -221,22 +175,13 @@
|
||||
|
||||
/obj/machinery/sleeper/ui_data()
|
||||
var/list/data = list()
|
||||
var/chemical_list = list()
|
||||
var/blood_percent = 0
|
||||
|
||||
data["occupied"] = occupant ? 1 : 0
|
||||
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()
|
||||
for(var/chem in available_chems)
|
||||
var/datum/reagent/R = reagents.has_reagent(chem)
|
||||
R = GLOB.chemical_reagents_list[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)))
|
||||
var/datum/reagent/R = GLOB.chemical_reagents_list[chem]
|
||||
data["chems"] += list(list("name" = R.name, "id" = R.type, "allowed" = chem_allowed(chem)))
|
||||
|
||||
data["occupant"] = list()
|
||||
var/mob/living/mob_occupant = occupant
|
||||
@@ -264,40 +209,10 @@
|
||||
data["occupant"]["fireLoss"] = mob_occupant.getFireLoss()
|
||||
data["occupant"]["cloneLoss"] = mob_occupant.getCloneLoss()
|
||||
data["occupant"]["brainLoss"] = mob_occupant.getOrganLoss(ORGAN_SLOT_BRAIN)
|
||||
|
||||
if(mob_occupant.reagents.reagent_list.len)
|
||||
data["occupant"]["reagents"] = list()
|
||||
if(mob_occupant.reagents && mob_occupant.reagents.reagent_list.len)
|
||||
for(var/datum/reagent/R in mob_occupant.reagents.reagent_list)
|
||||
chemical_list += 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
|
||||
data["occupant"]["reagents"] += list(list("name" = R.name, "volume" = R.volume))
|
||||
return data
|
||||
|
||||
/obj/machinery/sleeper/ui_act(action, params)
|
||||
@@ -314,37 +229,14 @@
|
||||
. = TRUE
|
||||
if("inject")
|
||||
var/chem = text2path(params["chem"])
|
||||
var/amount = text2num(params["volume"])
|
||||
if(!is_operational() || !mob_occupant || isnull(chem))
|
||||
return
|
||||
if(mob_occupant.health < min_health && chem != /datum/reagent/medicine/epinephrine)
|
||||
return
|
||||
if(inject_chem(chem, usr, amount))
|
||||
if(inject_chem(chem, usr))
|
||||
. = TRUE
|
||||
if(scrambled_chems && prob(5))
|
||||
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)
|
||||
. = ..()
|
||||
@@ -353,10 +245,9 @@
|
||||
to_chat(user, "<span class='warning'>You scramble the sleeper's user interface!</span>")
|
||||
return TRUE
|
||||
|
||||
//trans to
|
||||
/obj/machinery/sleeper/proc/inject_chem(chem, mob/user, volume = 10)
|
||||
if(chem_allowed(chem))
|
||||
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
|
||||
/obj/machinery/sleeper/proc/inject_chem(chem, mob/user)
|
||||
if((chem in available_chems) && 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
|
||||
if(user)
|
||||
log_combat(user, occupant, "injected [chem] into", addition = "via [src]")
|
||||
return TRUE
|
||||
@@ -369,14 +260,6 @@
|
||||
var/occ_health = mob_occupant.health > min_health || chem == /datum/reagent/medicine/epinephrine
|
||||
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()
|
||||
scrambled_chems = FALSE
|
||||
LAZYINITLIST(chem_buttons)
|
||||
@@ -416,23 +299,6 @@
|
||||
component_parts += new /obj/item/stack/cable_coil(null)
|
||||
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
|
||||
icon_state = "oldpod"
|
||||
|
||||
@@ -443,8 +309,6 @@
|
||||
idle_power_usage = 3000
|
||||
circuit = /obj/item/circuitboard/machine/sleeper/party
|
||||
var/leddit = FALSE //Get it like reddit and lead alright fine
|
||||
ui_x = 310
|
||||
ui_y = 400
|
||||
|
||||
controls_inside = TRUE
|
||||
possible_chems = list(
|
||||
@@ -477,3 +341,23 @@
|
||||
/obj/machinery/sleeper/party/emag_act(mob/user)
|
||||
..()
|
||||
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)
|
||||
|
||||
@@ -569,7 +569,6 @@
|
||||
buildstacktype = /obj/item/stack/tile/brass
|
||||
buildstackamount = 1
|
||||
item_chair = null
|
||||
var/turns = 0
|
||||
|
||||
/obj/structure/chair/brass/ComponentInitialize()
|
||||
return //it spins with the power of ratvar, not components.
|
||||
@@ -581,16 +580,12 @@
|
||||
/obj/structure/chair/brass/process()
|
||||
setDir(turn(dir,-90))
|
||||
playsound(src, 'sound/effects/servostep.ogg', 50, FALSE)
|
||||
turns++
|
||||
if(turns >= 8)
|
||||
STOP_PROCESSING(SSfastprocess, src)
|
||||
|
||||
/obj/structure/chair/brass/ratvar_act()
|
||||
return
|
||||
|
||||
/obj/structure/chair/brass/AltClick(mob/living/user)
|
||||
. = ..()
|
||||
turns = 0
|
||||
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
|
||||
return
|
||||
if(!(datum_flags & DF_ISPROCESSING))
|
||||
|
||||
@@ -37,14 +37,14 @@ GLOBAL_LIST_INIT(abductor_gear, subtypesof(/datum/abductor_gear))
|
||||
description = "A dual-mode tool for retrieving specimens and scanning appearances. Scanning can be done through cameras."
|
||||
id = "science_tool"
|
||||
build_path = /obj/item/abductor/gizmo
|
||||
/*
|
||||
|
||||
/datum/abductor_gear/advanced_baton
|
||||
name = "Advanced Baton"
|
||||
description = "A quad-mode baton used for incapacitation and restraining of specimens."
|
||||
id = "advanced_baton"
|
||||
cost = 2
|
||||
build_path = /obj/item/melee/baton/abductor //does not exist?
|
||||
*/
|
||||
build_path = /obj/item/abductor/baton //does not exist?
|
||||
|
||||
/datum/abductor_gear/superlingual_matrix
|
||||
name = "Superlingual Matrix"
|
||||
description = "A mysterious structure that allows for instant communication between users. Pretty impressive until you need to eat something."
|
||||
|
||||
@@ -30,6 +30,22 @@
|
||||
/// Possible gear to be dispensed
|
||||
var/list/possible_gear
|
||||
|
||||
/obj/machinery/abductor/console/Initialize(mapload)
|
||||
. = ..()
|
||||
possible_gear = get_abductor_gear()
|
||||
|
||||
/**
|
||||
* get_abductor_gear: Returns a list of a filtered abductor gear sorted by categories
|
||||
*/
|
||||
/obj/machinery/abductor/console/proc/get_abductor_gear()
|
||||
var/list/filtered_modules = list()
|
||||
for(var/path in GLOB.abductor_gear)
|
||||
var/datum/abductor_gear/AG = new path
|
||||
if(!filtered_modules[AG.category])
|
||||
filtered_modules[AG.category] = list()
|
||||
filtered_modules[AG.category][AG] = AG
|
||||
return filtered_modules
|
||||
|
||||
/obj/machinery/abductor/console/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
|
||||
if(!HAS_TRAIT(user, TRAIT_ABDUCTOR_TRAINING) && !HAS_TRAIT(user.mind, TRAIT_ABDUCTOR_TRAINING))
|
||||
to_chat(user, "<span class='warning'>You start mashing alien buttons at random!</span>")
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
throwforce = 0
|
||||
blood_volume = 0
|
||||
has_field_of_vision = FALSE //we are a spoopy ghost
|
||||
rad_flags = RAD_NO_CONTAMINATE | RAD_PROTECT_CONTENTS
|
||||
|
||||
see_in_dark = 8
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||
|
||||
@@ -543,6 +543,7 @@
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
flags_inv = HIDEHAIR|HIDEEARS
|
||||
rad_flags = RAD_NO_CONTAMINATE
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/centcom
|
||||
name = "centcom winter coat"
|
||||
@@ -1062,4 +1063,4 @@
|
||||
name = "Samurai outfit"
|
||||
desc = "An outfit used by traditional japanese warriors."
|
||||
icon_state = "samurai"
|
||||
item_state = "samurai"
|
||||
item_state = "samurai"
|
||||
|
||||
@@ -16,11 +16,16 @@
|
||||
search = findtext(text, ":", pos + length(text[pos]))
|
||||
if(search)
|
||||
emoji = lowertext(copytext(text, pos + length(text[pos]), search))
|
||||
var/isthisapath = (emoji[1] == "/") && text2path(emoji)
|
||||
var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/goonchat)
|
||||
var/tag = sheet.icon_tag("emoji-[emoji]")
|
||||
if(tag)
|
||||
parsed += "<i style='width:16px !important;height:16px !important;'>[tag]</i>" //evil way of enforcing 16x16
|
||||
pos = search + length(text[pos])
|
||||
else if(ispath(isthisapath, /atom)) //path
|
||||
var/atom/thisisanatom = isthisapath
|
||||
parsed += "[icon2html(initial(thisisanatom.icon), world, initial(thisisanatom.icon_state))]"
|
||||
pos = search + length(text[pos])
|
||||
else
|
||||
parsed += copytext(text, pos, search)
|
||||
pos = search
|
||||
|
||||
@@ -348,6 +348,12 @@
|
||||
name = "Cowboy Shirt Shortsleeved Red"
|
||||
icon_state = "cowboyshirt_reds"
|
||||
|
||||
/datum/sprite_accessory/underwear/top/bra_binder
|
||||
name = "Bra (binder)"
|
||||
icon_state = "bra_binder"
|
||||
has_color = TRUE
|
||||
|
||||
|
||||
|
||||
/datum/sprite_accessory/underwear/top/bra_binder_strapless
|
||||
name = "Bra (binder, strapless)"
|
||||
icon_state = "bra_binder_strapless"
|
||||
has_color = TRUE
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
brutemod = 1.25 //They're weak to punches
|
||||
attack_type = BURN //burn bish
|
||||
damage_overlay_type = "" //We are too cool for regular damage overlays
|
||||
species_traits = list(MUTCOLORS, NO_UNDERWEAR, HAIR, HAS_FLESH, HAS_BONE) // i mean i guess they have blood so they can have wounds too
|
||||
species_traits = list(MUTCOLORS, HAIR, HAS_FLESH, HAS_BONE) // i mean i guess they have blood so they can have wounds too
|
||||
species_language_holder = /datum/language_holder/ethereal
|
||||
inherent_traits = list(TRAIT_NOHUNGER)
|
||||
sexes = FALSE
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
/mob/living/simple_animal/opossum
|
||||
name = "opossum"
|
||||
desc = "It's an opossum, a small scavenging marsupial."
|
||||
icon_state = "possum"
|
||||
icon_living = "possum"
|
||||
icon_dead = "possum_dead"
|
||||
speak = list("Hiss!","HISS!","Hissss?")
|
||||
speak_emote = list("hisses")
|
||||
emote_hear = list("hisses.")
|
||||
emote_see = list("runs in a circle.", "shakes.")
|
||||
speak_chance = 1
|
||||
turns_per_move = 3
|
||||
blood_volume = 250
|
||||
see_in_dark = 5
|
||||
maxHealth = 15
|
||||
health = 15
|
||||
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 1)
|
||||
response_help_continuous = "pets"
|
||||
response_help_simple = "pet"
|
||||
response_disarm_continuous = "gently pushes aside"
|
||||
response_disarm_simple = "gently push aside"
|
||||
response_harm_continuous = "stamps on"
|
||||
response_harm_simple = "stamp"
|
||||
density = FALSE
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
pass_flags = PASSTABLE | PASSMOB
|
||||
mob_size = MOB_SIZE_TINY
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
|
||||
/mob/living/simple_animal/opossum/poppy
|
||||
name = "Poppy the Safety Possum"
|
||||
desc = "Safety first!"
|
||||
icon_state = "poppypossum"
|
||||
icon_living = "poppypossum"
|
||||
icon_dead = "poppypossum_dead"
|
||||
butcher_results = list(/obj/item/clothing/head/hardhat = 1)
|
||||
@@ -649,8 +649,6 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0)
|
||||
continue
|
||||
if(overrides.len && (A in overrides))
|
||||
continue
|
||||
if(A.IsObscured())
|
||||
continue
|
||||
statpanel(listed_turf.name, null, A)
|
||||
if(mind)
|
||||
add_spells_to_statpanel(mind.spell_list)
|
||||
|
||||
@@ -36,8 +36,9 @@
|
||||
/obj/machinery/computer/nanite_cloud_controller/proc/eject(mob/living/user)
|
||||
if(!disk)
|
||||
return
|
||||
if(!istype(user) || !Adjacent(user))// ||!user.put_in_active_hand(disk))
|
||||
disk.forceMove(drop_location())
|
||||
disk.forceMove(drop_location())
|
||||
if(istype(user) && user.Adjacent(src))
|
||||
user.put_in_active_hand(disk)
|
||||
disk = null
|
||||
|
||||
/obj/machinery/computer/nanite_cloud_controller/proc/get_backup(cloud_id)
|
||||
|
||||
@@ -53,8 +53,9 @@
|
||||
/obj/machinery/nanite_program_hub/proc/eject(mob/living/user)
|
||||
if(!disk)
|
||||
return
|
||||
if(!istype(user) || !Adjacent(user))// || !user.put_in_active_hand(disk))
|
||||
disk.forceMove(drop_location())
|
||||
disk.forceMove(drop_location())
|
||||
if(istype(user) && Adjacent(user))
|
||||
user.put_in_active_hand(disk)
|
||||
disk = null
|
||||
|
||||
/obj/machinery/nanite_program_hub/AltClick(mob/user)
|
||||
|
||||
@@ -39,8 +39,9 @@
|
||||
/obj/machinery/nanite_programmer/proc/eject(mob/living/user)
|
||||
if(!disk)
|
||||
return
|
||||
if(!istype(user) || !Adjacent(user))// || !user.put_in_active_hand(disk))
|
||||
disk.forceMove(drop_location())
|
||||
disk.forceMove(drop_location())
|
||||
if(istype(user) && user.Adjacent(src))
|
||||
user.put_in_active_hand(disk)
|
||||
disk = null
|
||||
program = null
|
||||
|
||||
|
||||
+80
-51
@@ -50,6 +50,86 @@
|
||||
-->
|
||||
<div class="commit sansserif">
|
||||
|
||||
<h2 class="date">15 August 2020</h2>
|
||||
<h3 class="author">LetterN updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">missing anomaly core icons</li>
|
||||
<li class="bugfix">wrong state. blame the tg vertion i copied</li>
|
||||
</ul>
|
||||
<h3 class="author">silicons updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">the 8 rotation limit from clockwork chairs has been removed. please don't abuse this.</li>
|
||||
<li class="tweak">ethereals can now wear underwear</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">14 August 2020</h2>
|
||||
<h3 class="author">silicons updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">abductors can buy things</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">13 August 2020</h2>
|
||||
<h3 class="author">LetterN updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscdel">Removes fermisleepers and reverts them to tg ones</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">12 August 2020</h2>
|
||||
<h3 class="author">DeltaFire15 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="balance">hellgun single-pack classification: goodies -> armory</li>
|
||||
</ul>
|
||||
<h3 class="author">Detective-Google updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">hallway table hallway table</li>
|
||||
</ul>
|
||||
<h3 class="author">Hatterhat updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="balance">The temporal katana is now slightly more worthy of the 2 spell point cost, with a smaller, antimagic respecting timestop, less force, and no random blockchance. Society has progressed past the need for blockchance.</li>
|
||||
</ul>
|
||||
<h3 class="author">LetterN updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Mafia Component</li>
|
||||
<li class="bugfix">Fixed missing icons and handtele</li>
|
||||
</ul>
|
||||
<h3 class="author">Putnam3145 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">a whole lot of jank regarding funny part sprite display.</li>
|
||||
</ul>
|
||||
<h3 class="author">Toriate updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Opossums have migrated into the maintenance tunnels! Seek them out at your own peril!</li>
|
||||
</ul>
|
||||
<h3 class="author">ancientpower updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Doors added to the west side of box medbay to make things a bit more manageable.</li>
|
||||
</ul>
|
||||
<h3 class="author">kappa-sama updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">smuggler satchel cost 2->1</li>
|
||||
<li class="tweak">radio jammer cost 5->2</li>
|
||||
<li class="bugfix">smuggler satchel uplink description now implies that persistence is disabled</li>
|
||||
</ul>
|
||||
<h3 class="author">lolman360 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">renameable necklace (accessory, attaches to suit) and ring (glove slot.)</li>
|
||||
<li class="tweak">custom rename is now 2048 characters? i think it's characters.</li>
|
||||
</ul>
|
||||
<h3 class="author">silicons updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">You can now use anything as an emoji by doing :/obj/item/path/to/item:. This works for any /atom or subtype.</li>
|
||||
</ul>
|
||||
<h3 class="author">timothyteakettle updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">syndicate agents now have access to mechanical aim enhancers which allow them to aim bullets to bounce off walls</li>
|
||||
<li class="bugfix">ricochets work properly now for the bullets that support them</li>
|
||||
</ul>
|
||||
<h3 class="author">zeroisthebiggay updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="imageadd">hair and some sechuds</li>
|
||||
<li class="balance">ce hardsuit radproofing</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">11 August 2020</h2>
|
||||
<h3 class="author">Hatterhat updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
@@ -1361,57 +1441,6 @@
|
||||
<li class="rscadd">Parrying has been added, keybound to F. Timing-based counterattacks, effect heavily dependent on the item, WIP.</li>
|
||||
<li class="balance">Disks are now smaller.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">12 June 2020</h2>
|
||||
<h3 class="author">EmeraldSundisk updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">The Detective's Office has been commandeered in order to serve a Head of Security. Detectives will find their new office within starboard maintenance.</li>
|
||||
<li class="rscadd">Adds the Head of Security's standard equipment to their new office.</li>
|
||||
<li class="tweak">Slight adjustment/expansion to the main security department</li>
|
||||
<li class="rscadd">Additional maintenance work</li>
|
||||
</ul>
|
||||
<h3 class="author">timothyteakettle updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Crabs, cockroaches, slimes and crabs are now small enough to fit in pet carriers</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">11 June 2020</h2>
|
||||
<h3 class="author">Ghommie updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="balance">Balanced vending machine prices to be generally more affordable, a minority has been priced up though.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">10 June 2020</h2>
|
||||
<h3 class="author">DeltaFire15 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Golems / simillar now inherit the neutered antag datum if the creator is neutered.</li>
|
||||
</ul>
|
||||
<h3 class="author">Ghommie updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Fixing missing pill type buttons from the chem master UI.</li>
|
||||
</ul>
|
||||
<h3 class="author">Naksu updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="code_imp">Lighting corner updates are ever so slightly faster.</li>
|
||||
</ul>
|
||||
<h3 class="author">Putnam for helping me code the contamination clearing on people updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Lab made Zeolites have been remade anew and more affective now that they refined the best possable way to mix and make a supper Zeolite capable of clearing contamination form not only people but items!</li>
|
||||
</ul>
|
||||
<h3 class="author">Trilbyspaceclone updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Tank Dispender has been moved into toxin storage from toxins</li>
|
||||
</ul>
|
||||
<h3 class="author">kevinz000 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">traitor classes can now be poplocked. hijack/glorious death are now locked to 25/20 respectively.</li>
|
||||
</ul>
|
||||
<h3 class="author">timothyteakettle updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">adds a new fermichem, used for creating sentient plushies!</li>
|
||||
<li class="rscadd">Mice can now breed using cheese wedges</li>
|
||||
<li class="rscadd">Royal cheese can be crafted to convert a mouse into king rat</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<b>GoonStation 13 Development Team</b>
|
||||
|
||||
@@ -26872,3 +26872,53 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
||||
- tweak: tracer no longer gives you full stamheals per use
|
||||
zeroisthebiggay:
|
||||
- rscadd: volaju two
|
||||
2020-08-12:
|
||||
DeltaFire15:
|
||||
- balance: 'hellgun single-pack classification: goodies -> armory'
|
||||
Detective-Google:
|
||||
- bugfix: hallway table hallway table
|
||||
Hatterhat:
|
||||
- balance: The temporal katana is now slightly more worthy of the 2 spell point
|
||||
cost, with a smaller, antimagic respecting timestop, less force, and no random
|
||||
blockchance. Society has progressed past the need for blockchance.
|
||||
LetterN:
|
||||
- rscadd: Mafia Component
|
||||
- bugfix: Fixed missing icons and handtele
|
||||
Putnam3145:
|
||||
- bugfix: a whole lot of jank regarding funny part sprite display.
|
||||
Toriate:
|
||||
- rscadd: Opossums have migrated into the maintenance tunnels! Seek them out at
|
||||
your own peril!
|
||||
ancientpower:
|
||||
- tweak: Doors added to the west side of box medbay to make things a bit more manageable.
|
||||
kappa-sama:
|
||||
- tweak: smuggler satchel cost 2->1
|
||||
- tweak: radio jammer cost 5->2
|
||||
- bugfix: smuggler satchel uplink description now implies that persistence is disabled
|
||||
lolman360:
|
||||
- rscadd: renameable necklace (accessory, attaches to suit) and ring (glove slot.)
|
||||
- tweak: custom rename is now 2048 characters? i think it's characters.
|
||||
silicons:
|
||||
- rscadd: You can now use anything as an emoji by doing :/obj/item/path/to/item:.
|
||||
This works for any /atom or subtype.
|
||||
timothyteakettle:
|
||||
- rscadd: syndicate agents now have access to mechanical aim enhancers which allow
|
||||
them to aim bullets to bounce off walls
|
||||
- bugfix: ricochets work properly now for the bullets that support them
|
||||
zeroisthebiggay:
|
||||
- imageadd: hair and some sechuds
|
||||
- balance: ce hardsuit radproofing
|
||||
2020-08-13:
|
||||
LetterN:
|
||||
- rscdel: Removes fermisleepers and reverts them to tg ones
|
||||
2020-08-14:
|
||||
silicons:
|
||||
- bugfix: abductors can buy things
|
||||
2020-08-15:
|
||||
LetterN:
|
||||
- bugfix: missing anomaly core icons
|
||||
- bugfix: wrong state. blame the tg vertion i copied
|
||||
silicons:
|
||||
- tweak: the 8 rotation limit from clockwork chairs has been removed. please don't
|
||||
abuse this.
|
||||
- tweak: ethereals can now wear underwear
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
author: "timothyteakettle"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "syndicate agents now have access to mechanical aim enhancers which allow them to aim bullets to bounce off walls"
|
||||
- bugfix: "ricochets work properly now for the bullets that support them"
|
||||
@@ -1,6 +0,0 @@
|
||||
author: "kappa-sama"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "smuggler satchel cost 2->1"
|
||||
- tweak: "radio jammer cost 5->2"
|
||||
- bugfix: "smuggler satchel uplink description now implies that persistence is disabled"
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "ancientpower"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Doors added to the west side of box medbay to make things a bit more manageable."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "Putnam3145"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "a whole lot of jank regarding funny part sprite display."
|
||||
@@ -1,5 +0,0 @@
|
||||
author: "lolman360"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "renameable necklace (accessory, attaches to suit) and ring (glove slot.)"
|
||||
- tweak: "custom rename is now 2048 characters? i think it's characters."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "LetterN"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Mafia Component"
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "Hatterhat"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "The temporal katana is now slightly more worthy of the 2 spell point cost, with a smaller, antimagic respecting timestop, less force, and no random blockchance. Society has progressed past the need for blockchance."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "zeroisthebiggay"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "ce hardsuit radproofing"
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "DeltaFire15"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "hellgun single-pack classification: goodies -> armory"
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "zeroisthebiggay"
|
||||
delete-after: True
|
||||
changes:
|
||||
- imageadd: "hair and some sechuds"
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "LetterN"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Fixed missing icons and handtele"
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 275 KiB After Width: | Height: | Size: 283 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 22 KiB |
@@ -12,7 +12,7 @@
|
||||
|
||||
/obj/item/gun/energy/pumpaction/emp_act(severity) //makes it not rack itself when emp'd
|
||||
cell.use(round(cell.charge / severity))
|
||||
chambered = 0 //we empty the chamber
|
||||
chambered = null //we empty the chamber
|
||||
update_icon()
|
||||
|
||||
/obj/item/gun/energy/pumpaction/process() //makes it not rack itself when self-charging
|
||||
@@ -20,7 +20,7 @@
|
||||
charge_tick++
|
||||
if(charge_tick < charge_delay)
|
||||
return
|
||||
charge_tick = 0
|
||||
charge_tick = null
|
||||
if(selfcharge == EGUN_SELFCHARGE_BORG)
|
||||
var/atom/owner = loc
|
||||
if(istype(owner, /obj/item/robot_module))
|
||||
@@ -44,7 +44,7 @@
|
||||
if(chambered && !chambered.BB) //if BB is null, i.e the shot has been fired...
|
||||
var/obj/item/ammo_casing/energy/shot = chambered
|
||||
cell.use(shot.e_cost)//... drain the cell cell
|
||||
chambered = 0 //either way, released the prepared shot
|
||||
chambered = null //either way, released the prepared shot
|
||||
|
||||
/obj/item/gun/energy/pumpaction/post_set_firemode()
|
||||
var/has_shot = chambered
|
||||
|
||||
@@ -2622,6 +2622,7 @@
|
||||
#include "code\modules\mob\living\simple_animal\friendly\penguin.dm"
|
||||
#include "code\modules\mob\living\simple_animal\friendly\pet.dm"
|
||||
#include "code\modules\mob\living\simple_animal\friendly\plushie.dm"
|
||||
#include "code\modules\mob\living\simple_animal\friendly\possum.dm"
|
||||
#include "code\modules\mob\living\simple_animal\friendly\sloth.dm"
|
||||
#include "code\modules\mob\living\simple_animal\friendly\snake.dm"
|
||||
#include "code\modules\mob\living\simple_animal\friendly\drone\_drone.dm"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
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 { Window } from '../layouts';
|
||||
|
||||
@@ -41,18 +41,6 @@ export const Sleeper = (props, context) => {
|
||||
}
|
||||
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 (
|
||||
<Window
|
||||
width={310}
|
||||
@@ -93,15 +81,6 @@ export const Sleeper = (props, context) => {
|
||||
color="bad" />
|
||||
</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
|
||||
label="Cells"
|
||||
color={occupant.cloneLoss ? 'bad' : 'good'}>
|
||||
@@ -116,18 +95,6 @@ export const Sleeper = (props, context) => {
|
||||
</Fragment>
|
||||
)}
|
||||
</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
|
||||
title="Medicines"
|
||||
minHeight="205px"
|
||||
@@ -149,33 +116,6 @@ export const Sleeper = (props, context) => {
|
||||
})} />
|
||||
))}
|
||||
</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>
|
||||
);
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user