diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 2028a84ea99..d1006837106 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -563,4 +563,16 @@ component_parts += new /obj/item/stack/cable_coil(null, 1) 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_c-open" + base_icon = "sleeper_c" + possible_chems = list("epinephrine", "salbutamol", "styptic_powder", "silver_sulfadiazine", "oculine", "mannitol") + light_color = LIGHT_COLOR_DARKRED + +/obj/machinery/sleeper/clockwork/crowbar_act(mob/user, obj/item/I) + to_chat(user, "You pry on the internal mechanisms of [src] with all your might, but they refuse to budge!") + return FALSE + #undef ADDICTION_SPEEDUP_TIME diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 81bbc3a5781..b4551ee4071 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -487,6 +487,29 @@ security_level = 1 paintable = FALSE +// MARK: Clockwork Airlocks + +/obj/machinery/door/airlock/clockwork + name = "pinion airlock" + desc = "A massive cogwheel set into two heavy slabs of brass." + icon = 'icons/obj/doors/airlocks/clockwork/clockwork.dmi' + overlays_file = 'icons/obj/doors/airlocks/clockwork/clockwork-overlays.dmi' + assemblytype = /obj/structure/door_assembly/door_assembly_clockwork + paintable = FALSE + +/obj/machinery/door/airlock/clockwork/Initialize(mapload) + . = ..() + new /obj/effect/temp_visual/ratvar/door(loc) + +/obj/machinery/door/airlock/clockwork/allowed(mob/living/L) + if(..()) + new /obj/effect/temp_visual/ratvar/door(loc) + return TRUE + +/obj/machinery/door/airlock/clockwork/glass + glass = TRUE + opacity = FALSE + ////////////////////////////////// /* MARK: Cult Airlocks diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 313caa58c9b..c35f465cbf0 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -611,7 +611,15 @@ GLOBAL_LIST_INIT(brass_recipes, list ( new /datum/stack_recipe/window("directional brass window", /obj/structure/window/reinforced/clockwork, time = 0 SECONDS, on_floor = TRUE, window_checks = TRUE), new /datum/stack_recipe/window("fulltile brass window", /obj/structure/window/reinforced/clockwork/fulltile, 2, time = 0 SECONDS, on_floor = TRUE, window_checks = TRUE), new /datum/stack_recipe("brass chair", /obj/structure/chair/brass, 1, time = 0 SECONDS, one_per_turf = TRUE, on_floor = TRUE), + new /datum/stack_recipe_list("pews", list( + new /datum/stack_recipe("brass pew (middle)", /obj/structure/chair/sofa/pew/clockwork, 5, one_per_turf = TRUE, on_floor = TRUE), + new /datum/stack_recipe("brass pew (left)", /obj/structure/chair/sofa/pew/clockwork/left, 5, one_per_turf = TRUE, on_floor = TRUE), + new /datum/stack_recipe("brass pew (right)", /obj/structure/chair/sofa/pew/clockwork/right, 5, one_per_turf = TRUE, on_floor = TRUE) + )), + new /datum/stack_recipe("pinion airlock assembly", /obj/structure/door_assembly/door_assembly_clockwork, 4, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE), new /datum/stack_recipe("brass table frame", /obj/structure/table_frame/brass, 1, time = 0.5 SECONDS, one_per_turf = TRUE, on_floor = TRUE), + new /datum/stack_recipe("brass storage shelf", /obj/structure/shelf/clockwork, 5, time = 2.5 SECONDS, one_per_turf = TRUE, on_floor = TRUE), + new /datum/stack_recipe("brass gun rack", /obj/structure/gunrack/clockwork, 5, time = 2.5 SECONDS, one_per_turf = TRUE, on_floor = TRUE), new /datum/stack_recipe("brass light fixture frame", /obj/item/mounted/frame/light_fixture/clockwork, 2, time = 0 SECONDS, one_per_turf = FALSE, on_floor = FALSE), new /datum/stack_recipe("small brass light fixture frame", /obj/item/mounted/frame/light_fixture/clockwork/small, 1, time = 0 SECONDS, one_per_turf = FALSE, on_floor = FALSE), new /datum/stack_recipe("brass floor light fixture frame", /obj/item/mounted/frame/light_fixture/clockwork/floor, 3, time = 0 SECONDS, one_per_turf = FALSE, on_floor = FALSE), diff --git a/code/game/objects/structures/door_assembly_types.dm b/code/game/objects/structures/door_assembly_types.dm index a74b9d2cd95..8d5035018f0 100644 --- a/code/game/objects/structures/door_assembly_types.dm +++ b/code/game/objects/structures/door_assembly_types.dm @@ -186,6 +186,12 @@ overlays_file = GET_CULT_DATA(airlock_unruned_overlays_file, initial(overlays_file)) update_icon() +/obj/structure/door_assembly/door_assembly_clockwork + icon = 'icons/obj/doors/airlocks/clockwork/clockwork.dmi' + overlays_file = 'icons/obj/doors/airlocks/clockwork/clockwork-overlays.dmi' + airlock_type = /obj/machinery/door/airlock/clockwork + glass_type = /obj/machinery/door/airlock/clockwork/glass + /obj/structure/door_assembly/door_assembly_centcom icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi' overlays_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi' diff --git a/code/game/objects/structures/shelves.dm b/code/game/objects/structures/shelves.dm index f6585a6720c..c0175375fe8 100644 --- a/code/game/objects/structures/shelves.dm +++ b/code/game/objects/structures/shelves.dm @@ -14,6 +14,7 @@ GLOBAL_LIST_INIT(shelf_colors, list("basic", "sci", "sup", "serv", "med", "sec", var/shelf_style = "basic" /// The current overlay of the top shelf. Used for interleaving objects and shelf layers for the illusion of depth. var/image/shelf_overlay + var/build_stack_type = /obj/item/stack/sheet/metal COOLDOWN_DECLARE(spraypaint_cd) /obj/structure/shelf/Initialize(mapload) @@ -30,9 +31,14 @@ GLOBAL_LIST_INIT(shelf_colors, list("basic", "sci", "sup", "serv", "med", "sec", var/obj/item/toy/crayon/spraycan/spraycan = I if(!istype(spraycan)) return ..() + if(spraycan.capped) return ..() + // Spraypaint cannot turn brass into steel. + if(shelf_style == "clockwork") + return ..() + if(!COOLDOWN_FINISHED(src, spraypaint_cd)) to_chat(user, "The paint on [src] is still drying!") return @@ -74,7 +80,7 @@ GLOBAL_LIST_INIT(shelf_colors, list("basic", "sci", "sup", "serv", "med", "sec", deconstruct() /obj/structure/shelf/deconstruct(disassembled) - new /obj/item/stack/sheet/metal(get_turf(src), 5) + new build_stack_type(get_turf(src), 5) return ..() /obj/structure/shelf/engineering @@ -105,6 +111,12 @@ GLOBAL_LIST_INIT(shelf_colors, list("basic", "sci", "sup", "serv", "med", "sec", icon_state = "shelf_sup" shelf_style = "sup" +/obj/structure/shelf/clockwork + name = "brass shelf" + icon_state = "shelf_clockwork" + shelf_style = "clockwork" + build_stack_type = /obj/item/stack/tile/brass + /obj/structure/gunrack name = "gun rack" desc = "A rack for stowing firearms." @@ -115,6 +127,7 @@ GLOBAL_LIST_INIT(shelf_colors, list("basic", "sci", "sup", "serv", "med", "sec", anchored = TRUE pass_flags_self = PASSTAKE max_integrity = 80 + var/build_stack_type = /obj/item/stack/sheet/metal /obj/structure/gunrack/Initialize(mapload) . = ..() @@ -135,5 +148,10 @@ GLOBAL_LIST_INIT(shelf_colors, list("basic", "sci", "sup", "serv", "med", "sec", deconstruct() /obj/structure/gunrack/deconstruct(disassembled) - new /obj/item/stack/sheet/metal(get_turf(src), 5) + new build_stack_type(get_turf(src), 5) return ..() + +/obj/structure/gunrack/clockwork + name = "brass weapon rack" + icon_state = "gunrack_clockwork" + build_stack_type = /obj/item/stack/tile/brass diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 68acdf87b61..b84616c0d91 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -373,6 +373,19 @@ /obj/structure/chair/sofa/pew/right icon_state = "pewend_right" +/obj/structure/chair/sofa/pew/clockwork + name = "brass pew" + desc = "An ornate pew fashioned from brass. It is even less comfortable than a regular pew, but it does radiate a pleasent warmth." + icon_state = "clockwork_pew_middle" + buildstacktype = /obj/item/stack/tile/brass + buildstackamount = 5 + +/obj/structure/chair/sofa/pew/clockwork/left + icon_state = "clockwork_pew_left" + +/obj/structure/chair/sofa/pew/clockwork/right + icon_state = "clockwork_pew_right" + /obj/structure/chair/sofa/bench name = "bench" desc = "You sit in this. Either by will or force." diff --git a/icons/obj/chairs.dmi b/icons/obj/chairs.dmi index 969f2e3e7de..7b2a970ac0d 100644 Binary files a/icons/obj/chairs.dmi and b/icons/obj/chairs.dmi differ diff --git a/icons/obj/cryogenic2.dmi b/icons/obj/cryogenic2.dmi index d92b54b5dbd..c5093f23540 100644 Binary files a/icons/obj/cryogenic2.dmi and b/icons/obj/cryogenic2.dmi differ diff --git a/icons/obj/doors/airlocks/clockwork/clockwork-overlays.dmi b/icons/obj/doors/airlocks/clockwork/clockwork-overlays.dmi new file mode 100644 index 00000000000..161f78b5b1a Binary files /dev/null and b/icons/obj/doors/airlocks/clockwork/clockwork-overlays.dmi differ diff --git a/icons/obj/doors/airlocks/clockwork/clockwork.dmi b/icons/obj/doors/airlocks/clockwork/clockwork.dmi new file mode 100644 index 00000000000..61cb9ae2746 Binary files /dev/null and b/icons/obj/doors/airlocks/clockwork/clockwork.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index 8a21b505ce4..91da581928f 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/obj/structures/shelves.dmi b/icons/obj/structures/shelves.dmi index fd3991998c4..3c4ddc332f9 100644 Binary files a/icons/obj/structures/shelves.dmi and b/icons/obj/structures/shelves.dmi differ