diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
index 7859d735d6..201418eba1 100644
--- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm
+++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
@@ -41663,7 +41663,7 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/green/visible,
-/obj/machinery/atmospherics/pipe/simple/dark/visible{
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
dir = 4
},
/turf/open/floor/plasteel/white/corner,
@@ -44797,7 +44797,7 @@
/area/engine/engineering)
"ccy" = (
/obj/machinery/atmospherics/pipe/simple/yellow/visible,
-/obj/machinery/atmospherics/pipe/simple/dark/visible{
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
dir = 4
},
/turf/open/floor/plasteel,
@@ -45150,7 +45150,7 @@
"cdB" = (
/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/simple/dark/visible{
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
dir = 4
},
/turf/open/floor/plating,
@@ -54054,6 +54054,13 @@
},
/turf/open/floor/wood,
/area/crew_quarters/bar)
+"emX" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/turf/open/floor/plating/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors)
"ene" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -55773,6 +55780,12 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/pool)
+"iBR" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 6
+ },
+/turf/open/floor/plating/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors)
"iEJ" = (
/obj/machinery/door/airlock/external{
name = "Escape Pod One"
@@ -56517,6 +56530,12 @@
/obj/structure/window,
/turf/open/floor/wood,
/area/crew_quarters/bar)
+"krn" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 9
+ },
+/turf/open/floor/plating/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors)
"ksp" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible,
/turf/closed/wall,
@@ -57370,6 +57389,13 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
+"mAU" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/turf/open/floor/plating/asteroid/snow/icemoon,
+/area/icemoon/surface/outdoors)
"mCy" = (
/obj/machinery/space_heater{
anchored = 1
@@ -97640,14 +97666,14 @@ bFJ
bvd
bKH
bzs
-avm
-ayF
-avm
-ayF
-avB
-ayF
-avm
-ayF
+iBR
+avx
+mAU
+avx
+emX
+avx
+mAU
+krn
avB
awd
awe
diff --git a/code/datums/dna.dm b/code/datums/dna.dm
index 747db3d6ce..ed5104e296 100644
--- a/code/datums/dna.dm
+++ b/code/datums/dna.dm
@@ -391,16 +391,6 @@
/mob/living/carbon/human/proc/hardset_dna(ui, list/mutation_index, newreal_name, newblood_type, datum/species/mrace, newfeatures)
- if(newfeatures)
- var/old_size = dna.features["body_size"]
- dna.features = newfeatures
- dna.update_body_size(old_size)
-
- if(mrace)
- var/datum/species/newrace = new mrace.type
- newrace.copy_properties_from(mrace)
- set_species(newrace, icon_update=0)
-
if(newreal_name)
real_name = newreal_name
dna.generate_unique_enzymes()
@@ -410,7 +400,17 @@
if(ui)
dna.uni_identity = ui
- updateappearance(icon_update=0)
+ updateappearance(icon_update=FALSE)
+
+ if(newfeatures)
+ var/old_size = dna.features["body_size"]
+ dna.features = newfeatures
+ dna.update_body_size(old_size)
+
+ if(mrace)
+ var/datum/species/newrace = new mrace.type
+ newrace.copy_properties_from(mrace)
+ set_species(newrace, icon_update=FALSE)
if(LAZYLEN(mutation_index))
dna.mutation_index = mutation_index.Copy()
diff --git a/code/datums/wires/apc.dm b/code/datums/wires/apc.dm
index 997c77aa51..19b2b8dda8 100644
--- a/code/datums/wires/apc.dm
+++ b/code/datums/wires/apc.dm
@@ -30,6 +30,7 @@
if(WIRE_POWER1, WIRE_POWER2) // Short for a long while.
if(!A.shorted)
A.shorted = TRUE
+ A.update()
addtimer(CALLBACK(A, /obj/machinery/power/apc.proc/reset, wire), 1200)
if(WIRE_IDSCAN) // Unlock for a little while.
A.locked = FALSE
@@ -49,6 +50,7 @@
else
A.shorted = TRUE
A.shock(usr, 50)
+ A.update()
if(WIRE_AI) // Disable AI control.
if(mend)
A.aidisabled = FALSE
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index 67113fcf78..a2d3cccc35 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -70,14 +70,13 @@
if(W.amount < 5)
to_chat(user, "You need at least five wooden planks to make a wall!")
return
- else
- to_chat(user, "You start adding [I] to [src]...")
- if(do_after(user, 50, target=src))
- W.use(5)
- var/turf/T = get_turf(src)
- T.PlaceOnTop(/turf/closed/wall/mineral/wood/nonmetal)
- qdel(src)
- return
+ to_chat(user, "You start adding [I] to [src]...")
+ if(do_after(user, 50, target=src))
+ W.use(5)
+ var/turf/T = get_turf(src)
+ T.PlaceOnTop(/turf/closed/wall/mineral/wood/nonmetal)
+ qdel(src)
+ return
return ..()
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 4c12809184..2a45267c65 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -470,15 +470,15 @@
if(welded)
weld_overlay = get_airlock_overlay("welded", overlays_file)
if(obj_integrity < integrity_failure * max_integrity)
- damag_overlay = get_airlock_overlay("sparks_broken", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE)
+ damag_overlay = get_airlock_overlay("sparks_broken", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE)
else if(obj_integrity < (0.75 * max_integrity))
- damag_overlay = get_airlock_overlay("sparks_damaged", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE)
+ damag_overlay = get_airlock_overlay("sparks_damaged", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE)
if(lights && hasPower())
if(locked)
- lights_overlay = get_airlock_overlay("lights_bolts", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE)
+ lights_overlay = get_airlock_overlay("lights_bolts", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE)
else if(emergency)
- lights_overlay = get_airlock_overlay("lights_emergency", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE)
+ lights_overlay = get_airlock_overlay("lights_emergency", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE)
if(note)
note_overlay = get_airlock_overlay(notetype, note_overlay_file)
@@ -496,18 +496,18 @@
else
panel_overlay = get_airlock_overlay("panel_closed", overlays_file)
if(obj_integrity < integrity_failure * max_integrity)
- damag_overlay = get_airlock_overlay("sparks_broken", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE)
+ damag_overlay = get_airlock_overlay("sparks_broken", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE)
else if(obj_integrity < (0.75 * max_integrity))
- damag_overlay = get_airlock_overlay("sparks_damaged", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE)
+ damag_overlay = get_airlock_overlay("sparks_damaged", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE)
if(welded)
weld_overlay = get_airlock_overlay("welded", overlays_file)
- lights_overlay = get_airlock_overlay("lights_denied", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE)
+ lights_overlay = get_airlock_overlay("lights_denied", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE)
if(note)
note_overlay = get_airlock_overlay(notetype, note_overlay_file)
if(AIRLOCK_EMAG)
frame_overlay = get_airlock_overlay("closed", icon)
- sparks_overlay = get_airlock_overlay("sparks", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE)
+ sparks_overlay = get_airlock_overlay("sparks", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE)
if(airlock_material)
filling_overlay = get_airlock_overlay("[airlock_material]_closed", overlays_file)
else
@@ -518,9 +518,9 @@
else
panel_overlay = get_airlock_overlay("panel_closed", overlays_file)
if(obj_integrity < integrity_failure * max_integrity)
- damag_overlay = get_airlock_overlay("sparks_broken", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE)
+ damag_overlay = get_airlock_overlay("sparks_broken", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE)
else if(obj_integrity < (0.75 * max_integrity))
- damag_overlay = get_airlock_overlay("sparks_damaged", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE)
+ damag_overlay = get_airlock_overlay("sparks_damaged", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE)
if(welded)
weld_overlay = get_airlock_overlay("welded", overlays_file)
if(note)
@@ -533,7 +533,7 @@
else
filling_overlay = get_airlock_overlay("fill_closing", icon)
if(lights && hasPower())
- lights_overlay = get_airlock_overlay("lights_closing", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE)
+ lights_overlay = get_airlock_overlay("lights_closing", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE)
if(panel_open)
if(security_level)
panel_overlay = get_airlock_overlay("panel_closing_protected", overlays_file)
@@ -554,7 +554,7 @@
else
panel_overlay = get_airlock_overlay("panel_open", overlays_file)
if(obj_integrity < (0.75 * max_integrity))
- damag_overlay = get_airlock_overlay("sparks_open", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE)
+ damag_overlay = get_airlock_overlay("sparks_open", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE)
if(note)
note_overlay = get_airlock_overlay("[notetype]_open", note_overlay_file)
@@ -565,7 +565,7 @@
else
filling_overlay = get_airlock_overlay("fill_opening", icon)
if(lights && hasPower())
- lights_overlay = get_airlock_overlay("lights_opening", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE)
+ lights_overlay = get_airlock_overlay("lights_opening", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE)
if(panel_open)
if(security_level)
panel_overlay = get_airlock_overlay("panel_opening_protected", overlays_file)
@@ -577,11 +577,17 @@
cut_overlays()
add_overlay(frame_overlay)
add_overlay(filling_overlay)
- add_overlay(lights_overlay)
+ if(lights_overlay)
+ add_overlay(lights_overlay)
+ var/mutable_appearance/lights_vis = mutable_appearance(lights_overlay.icon, lights_overlay.icon_state)
+ add_overlay(lights_vis)
add_overlay(panel_overlay)
add_overlay(weld_overlay)
add_overlay(sparks_overlay)
- add_overlay(damag_overlay)
+ if(damag_overlay)
+ add_overlay(damag_overlay)
+ var/mutable_appearance/damage_vis = mutable_appearance(damag_overlay.icon, damag_overlay.icon_state)
+ add_overlay(damage_vis)
add_overlay(note_overlay)
check_unres()
diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm
index 5b332cda46..7450cb937c 100644
--- a/code/game/objects/items/devices/paicard.dm
+++ b/code/game/objects/items/devices/paicard.dm
@@ -99,7 +99,7 @@
if(href_list["reset_radio_short"])
pai.unshort_radio()
if(href_list["setlaws"])
- var/newlaws = stripped_multiline_input("Enter any additional directives you would like your pAI personality to follow. Note that these directives will not override the personality's allegiance to its imprinted master. Conflicting directives will be ignored.", "pAI Directive Configuration", MAX_MESSAGE_LEN)
+ var/newlaws = stripped_multiline_input(usr, "Enter any additional directives you would like your pAI personality to follow. Note that these directives will not override the personality's allegiance to its imprinted master. Conflicting directives will be ignored.", "pAI Directive Configuration", "", MAX_MESSAGE_LEN)
if(newlaws && pai)
pai.add_supplied_law(0,newlaws)
if(href_list["toggle_holo"])
diff --git a/code/game/objects/items/implants/implant_abductor.dm b/code/game/objects/items/implants/implant_abductor.dm
index 0c50beadea..e0765e7951 100644
--- a/code/game/objects/items/implants/implant_abductor.dm
+++ b/code/game/objects/items/implants/implant_abductor.dm
@@ -5,36 +5,30 @@
icon_state = "implant"
activated = 1
var/obj/machinery/abductor/pad/home
- var/cooldown = 30
+ var/next_use = 0
/obj/item/implant/abductor/activate()
. = ..()
- if(cooldown == initial(cooldown))
+ if(next_use <= world.time)
home.Retrieve(imp_in,1)
- cooldown = 0
- START_PROCESSING(SSobj, src)
+ next_use = world.time + 60 SECONDS
else
- to_chat(imp_in, "You must wait [30 - cooldown] seconds to use [src] again!")
-
-/obj/item/implant/abductor/process()
- if(cooldown < initial(cooldown))
- cooldown++
- if(cooldown == initial(cooldown))
- STOP_PROCESSING(SSobj, src)
+ to_chat(imp_in, "You must wait [DisplayTimeText(next_use - world.time)] to use [src] again!")
/obj/item/implant/abductor/implant(mob/living/target, mob/user)
- if(..())
- var/obj/machinery/abductor/console/console
- if(ishuman(target))
- var/datum/antagonist/abductor/A = target.mind.has_antag_datum(/datum/antagonist/abductor)
- if(A)
- console = get_abductor_console(A.team.team_number)
- home = console.pad
-
- if(!home)
- var/list/consoles = list()
- for(var/obj/machinery/abductor/console/C in GLOB.machines)
- consoles += C
- console = pick(consoles)
+ . = ..()
+ if(!.)
+ return
+ var/obj/machinery/abductor/console/console
+ if(ishuman(target))
+ var/datum/antagonist/abductor/A = target.mind.has_antag_datum(/datum/antagonist/abductor)
+ if(A)
+ console = get_abductor_console(A.team.team_number)
home = console.pad
- return TRUE
+
+ if(!home)
+ var/list/consoles = list()
+ for(var/obj/machinery/abductor/console/C in GLOB.machines)
+ consoles += C
+ console = pick(consoles)
+ home = console.pad
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 420164edfa..aae17e3ce8 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -406,8 +406,6 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
resistance_flags = FLAMMABLE
force = 0
throwforce = 0
- pull_effort = 90
- is_fabric = TRUE
merge_type = /obj/item/stack/sheet/cloth
/obj/item/stack/sheet/cloth/get_main_recipes()
@@ -428,7 +426,7 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \
new/datum/stack_recipe("durathread beret", /obj/item/clothing/head/beret/durathread, 2, time = 40), \
new/datum/stack_recipe("durathread beanie", /obj/item/clothing/head/beanie/durathread, 2, time = 40), \
new/datum/stack_recipe("durathread bandana", /obj/item/clothing/mask/bandana/durathread, 1, time = 25), \
- new/datum/stack_recipe("durathread string", /obj/item/weaponcrafting/durathread_string, 1, time = 40) \
+ new/datum/stack_recipe("durathread string", /obj/item/weaponcrafting/durathread_string, 1, time = 40), \
))
/obj/item/stack/sheet/durathread
@@ -820,13 +818,12 @@ new /datum/stack_recipe("paper frame door", /obj/structure/mineral_door/paperfra
max_amount = 80
singular_name = "raw cotton ball"
icon_state = "sheet-cotton"
- is_fabric = TRUE
resistance_flags = FLAMMABLE
force = 0
throwforce = 0
merge_type = /obj/item/stack/sheet/cotton
- pull_effort = 30
- loom_result = /obj/item/stack/sheet/cloth
+ var/pull_effort = 30
+ var/loom_result = /obj/item/stack/sheet/cloth
/obj/item/stack/sheet/cotton/ten
amount = 10
diff --git a/code/game/objects/items/stacks/sheets/sheets.dm b/code/game/objects/items/stacks/sheets/sheets.dm
index 378855707e..dfba533247 100644
--- a/code/game/objects/items/stacks/sheets/sheets.dm
+++ b/code/game/objects/items/stacks/sheets/sheets.dm
@@ -13,9 +13,6 @@
mats_per_stack = MINERAL_MATERIAL_AMOUNT
var/sheettype = null //this is used for girders in the creation of walls/false walls
var/point_value = 0 //turn-in value for the gulag stacker - loosely relative to its rarity
- var/is_fabric = FALSE //is this a valid material for the loom?
- var/loom_result //result from pulling on the loom
- var/pull_effort = 0 //amount of delay when pulling on the loom
var/shard_type // the shard debris typepath left over by solar panels and windows etc.
/obj/item/stack/sheet/Initialize(mapload, new_amount, merge)
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index ff59b85332..bc0c1328af 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -777,6 +777,7 @@
var/cooldown = 0
var/obj/machinery/computer/holodeck/holo = null // Holodeck cards should not be infinite
var/list/cards = list()
+ var/original_size = 52
/obj/item/toy/cards/deck/Initialize()
. = ..()
@@ -834,11 +835,11 @@
/obj/item/toy/cards/deck/update_icon_state()
switch(cards.len)
- if(27 to INFINITY)
+ if(INFINITY to original_size/2)
icon_state = "deck_[deckstyle]_full"
- if(11 to 27)
+ if(original_size/2 to original_size/4)
icon_state = "deck_[deckstyle]_half"
- if(1 to 11)
+ if(original_size/4 to 1)
icon_state = "deck_[deckstyle]_low"
else
icon_state = "deck_[deckstyle]_empty"
diff --git a/code/game/objects/structures/loom.dm b/code/game/objects/structures/loom.dm
index ad128b01c2..164e597117 100644
--- a/code/game/objects/structures/loom.dm
+++ b/code/game/objects/structures/loom.dm
@@ -21,21 +21,21 @@
return TRUE
///Handles the weaving.
-/obj/structure/loom/proc/weave(obj/item/stack/sheet/S, mob/user)
- if(!istype(S) || !S.is_fabric)
+/obj/structure/loom/proc/weave(obj/item/stack/sheet/cotton/W, mob/user)
+ if(!istype(W))
return FALSE
if(!anchored)
user.show_message("The loom needs to be wrenched down.", MSG_VISUAL)
return FALSE
- if(S.amount < FABRIC_PER_SHEET)
- user.show_message("You need at least [FABRIC_PER_SHEET] units of fabric before using this.", 1)
+ if(W.amount < FABRIC_PER_SHEET)
+ user.show_message("You need at least [FABRIC_PER_SHEET] units of fabric before using this.", MSG_VISUAL)
return FALSE
- user.show_message("You start weaving \the [S.name] through the loom..", MSG_VISUAL)
- if(S.use_tool(src, user, S.pull_effort))
- if(S.amount >= FABRIC_PER_SHEET)
- new S.loom_result(drop_location())
- S.use(FABRIC_PER_SHEET)
- user.show_message("You weave \the [S.name] into a workable fabric.", MSG_VISUAL)
+ user.show_message("You start weaving \the [W.name] through the loom..", MSG_VISUAL)
+ if(W.use_tool(src, user, W.pull_effort))
+ if(W.amount >= FABRIC_PER_SHEET)
+ new W.loom_result(drop_location())
+ W.use(FABRIC_PER_SHEET)
+ user.show_message("You weave \the [W.name] into a workable fabric.", MSG_VISUAL)
return TRUE
#undef FABRIC_PER_SHEET
\ No newline at end of file
diff --git a/code/game/turfs/simulated/floor/plating/misc_plating.dm b/code/game/turfs/simulated/floor/plating/misc_plating.dm
index fd969d511b..5323db001f 100644
--- a/code/game/turfs/simulated/floor/plating/misc_plating.dm
+++ b/code/game/turfs/simulated/floor/plating/misc_plating.dm
@@ -198,7 +198,7 @@
/turf/open/floor/plating/ice/smooth
icon_state = "smooth"
smooth = SMOOTH_MORE | SMOOTH_BORDER
- canSmoothWith = list(/turf/open/floor/plating/ice/smooth, /turf/open/floor/plating/ice)
+ canSmoothWith = list(/turf/open/floor/plating/ice/smooth, /turf/open/floor/plating/ice, /turf/open/floor/plating/ice/colder)
/turf/open/floor/plating/ice/colder
temperature = 140
diff --git a/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm b/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm
index a4b19f2d40..f1ce13a90f 100644
--- a/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm
@@ -113,6 +113,8 @@
"You start tenderly lifting [skewee] off of [src]...")
if(!do_after(user, 60, target = skewee))
skewee.visible_message("[skewee] painfully slides back down [src].")
+ if(skewee.stat >= UNCONSCIOUS)
+ return //by ratvar, no more spamming my deadchat, holy fuck
skewee.say("Oof, ouch owwie!!", forced = "fail brass skewer removal")
return
skewee.visible_message("[skewee] comes free of [src] with a squelching pop!", \
diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm
index 93927f4420..58e826b36d 100644
--- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm
+++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm
@@ -244,6 +244,7 @@ GLOBAL_LIST_INIT(meta_gas_fusions, meta_gas_fusion_list())
if(!ispath(path))
path = gas_id2path(path) //a lot of these strings can't have embedded expressions (especially for mappers), so support for IDs needs to stick around
gases[path] = text2num(gas[id])
+ archive()
return 1
/datum/gas_mixture/share(datum/gas_mixture/sharer, atmos_adjacent_turfs = 4)
diff --git a/code/modules/games/unum.dm b/code/modules/games/unum.dm
new file mode 100644
index 0000000000..9820fa6754
--- /dev/null
+++ b/code/modules/games/unum.dm
@@ -0,0 +1,22 @@
+/// A deck of unum cards. Classic.
+/obj/item/toy/cards/deck/unum
+ name = "\improper UNUM deck"
+ desc = "A deck of unum cards. House rules to argue over not included."
+ icon = 'icons/obj/toy.dmi'
+ icon_state = "deck_unum_full"
+ deckstyle = "unum"
+ original_size = 108
+
+//Populate the deck.
+/obj/item/toy/cards/deck/unum/populate_deck()
+ for(var/colour in list("Red","Yellow","Green","Blue"))
+ cards += "[colour] 0" //Uno, i mean, cough cough, Unum decks have only one colour of each 0, weird huh?
+ for(var/k in 0 to 1) //two of each colour of number
+ cards += "[colour] skip"
+ cards += "[colour] reverse"
+ cards += "[colour] draw 2"
+ for(var/i in 1 to 9)
+ cards += "[colour] [i]"
+ for(var/k in 0 to 3) //4 wilds and draw 4s
+ cards += "Wildcard"
+ cards += "Draw 4"
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 838de24b60..5364486b04 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -287,12 +287,12 @@ Works together with spawning an observer, noted above.
var/maximumRoundEnd = SSautotransfer.starttime + SSautotransfer.voteinterval * SSautotransfer.maxvotes
if(penalty - SSshuttle.realtimeofstart > maximumRoundEnd + SSshuttle.emergencyCallTime + SSshuttle.emergencyDockTime + SSshuttle.emergencyEscapeTime)
penalty = CANT_REENTER_ROUND
- if(!(ckey in GLOB.client_ghost_timeouts))
- GLOB.client_ghost_timeouts += ckey
- GLOB.client_ghost_timeouts[ckey] = 0
- else if(GLOB.client_ghost_timeouts[ckey] == CANT_REENTER_ROUND)
+ if(!(ghost.ckey in GLOB.client_ghost_timeouts))
+ GLOB.client_ghost_timeouts += ghost.ckey
+ GLOB.client_ghost_timeouts[ghost.ckey] = 0
+ else if(GLOB.client_ghost_timeouts[ghost.ckey] == CANT_REENTER_ROUND)
return
- GLOB.client_ghost_timeouts[ckey] = max(GLOB.client_ghost_timeouts[ckey],penalty)
+ GLOB.client_ghost_timeouts[ghost.ckey] = max(GLOB.client_ghost_timeouts[ghost.ckey],penalty)
// needs to be done AFTER the ckey transfer, too
return ghost
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index f1108189c7..dc091cb451 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -1411,6 +1411,7 @@
if(WIRE_POWER1, WIRE_POWER2)
if(!wires.is_cut(WIRE_POWER1) && !wires.is_cut(WIRE_POWER2))
shorted = FALSE
+ update()
if(WIRE_AI)
if(!wires.is_cut(WIRE_AI))
aidisabled = FALSE
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 344d41071d..3c3f3c9541 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -314,8 +314,11 @@
. = ..()
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
if(on && status == LIGHT_OK)
- SSvis_overlays.add_vis_overlay(src, overlayicon, base_state, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE, dir, clamp(light_power*250, 30, 200))
-
+ var/overlay_alpha = clamp(light_power*250, 30, 200)
+ SSvis_overlays.add_vis_overlay(src, overlayicon, base_state, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE, dir, overlay_alpha)
+ var/mutable_appearance/M = mutable_appearance(overlayicon, base_state)
+ M.alpha = overlay_alpha
+ . += M
// update the icon_state and luminosity of the light depending on its state
/obj/machinery/light/proc/update(trigger = TRUE)
diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm
index efd9aad673..641e52dd13 100644
--- a/code/modules/vending/games.dm
+++ b/code/modules/vending/games.dm
@@ -6,7 +6,8 @@
products = list(/obj/item/toy/cards/deck = 5,
/obj/item/storage/pill_bottle/dice = 10,
/obj/item/toy/cards/deck/cas = 3,
- /obj/item/toy/cards/deck/cas/black = 3)
+ /obj/item/toy/cards/deck/cas/black = 3,
+ /obj/item/toy/cards/deck/unum = 3)
contraband = list(/obj/item/dice/fudge = 9)
premium = list(/obj/item/melee/skateboard/pro = 3,
/obj/item/melee/skateboard/hoverboard = 1)
diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi
index 698c1f7a34..e8106905b7 100644
Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 6fa096ca45..2a61ac361b 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1994,6 +1994,7 @@
#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_soup.dm"
#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_spaghetti.dm"
#include "code\modules\games\cas.dm"
+#include "code\modules\games\unum.dm"
#include "code\modules\goonchat\browserOutput.dm"
#include "code\modules\holiday\easter.dm"
#include "code\modules\holiday\holidays.dm"