diff --git a/code/game/objects/items/mountable_frames/frames.dm b/code/game/objects/items/mountable_frames/frames.dm
index 6da3982e04d..30e4af872cc 100644
--- a/code/game/objects/items/mountable_frames/frames.dm
+++ b/code/game/objects/items/mountable_frames/frames.dm
@@ -9,6 +9,8 @@
var/metal_sheets_refunded = 2
///amount of glass sheets returned upon the frame being wrenched
var/glass_sheets_refunded = 0
+ ///amount of brass sheets returned upon the frame being wrenched
+ var/brass_sheets_refunded = 0
///The requirements for this frame to be placed, uses bit flags
var/mount_requirements = 0
@@ -18,6 +20,8 @@
new /obj/item/stack/sheet/metal(user_turf, metal_sheets_refunded)
if(glass_sheets_refunded)
new /obj/item/stack/sheet/glass(user_turf, glass_sheets_refunded)
+ if(brass_sheets_refunded)
+ new /obj/item/stack/tile/brass(user_turf, brass_sheets_refunded)
qdel(src)
/obj/item/mounted/frame/try_build(turf/on_wall, mob/user)
diff --git a/code/game/objects/items/mountable_frames/light_frames.dm b/code/game/objects/items/mountable_frames/light_frames.dm
index ab59c8c2952..6f6002122b7 100644
--- a/code/game/objects/items/mountable_frames/light_frames.dm
+++ b/code/game/objects/items/mountable_frames/light_frames.dm
@@ -24,6 +24,12 @@
newlight = new /obj/machinery/light_construct(constrloc)
if("floor")
newlight = new /obj/machinery/light_construct/floor(on_wall)
+ if("clockwork_bulb")
+ newlight = new /obj/machinery/light_construct/clockwork/small(constrloc)
+ if("clockwork_tube")
+ newlight = new /obj/machinery/light_construct/clockwork(constrloc)
+ if("clockwork_floor")
+ newlight = new /obj/machinery/light_construct/clockwork/floor(on_wall)
else
newlight = new /obj/machinery/light_construct/small(constrloc)
newlight.dir = constrdir
@@ -52,3 +58,31 @@
metal_sheets_refunded = 3
buildon_types = list(/turf/simulated/floor)
allow_floor_mounting = TRUE
+
+/obj/item/mounted/frame/light_fixture/clockwork
+ name = "brass light fixture frame"
+ desc = "Used for building brass lights."
+ icon_state = "clockwork_tube-construct-item"
+ fixture_type = "clockwork_tube"
+ metal_sheets_refunded = 0
+ brass_sheets_refunded = 2
+
+/obj/item/mounted/frame/light_fixture/clockwork/small
+ name = "brass small light fixture frame"
+ desc = "Used for building small brass lights."
+ icon = 'icons/obj/lighting.dmi'
+ icon_state = "clockwork_bulb-construct-item"
+ fixture_type = "clockwork_bulb"
+ metal_sheets_refunded = 0
+ brass_sheets_refunded = 1
+
+/obj/item/mounted/frame/light_fixture/clockwork/floor
+ name = "brass floor light fixture frame"
+ desc = "Used for building brass floor lights."
+ icon = 'icons/obj/lighting.dmi'
+ icon_state = "clockwork_floor-construct-item"
+ fixture_type = "clockwork_floor"
+ metal_sheets_refunded = 0
+ brass_sheets_refunded = 3
+ buildon_types = list(/turf/simulated/floor)
+ allow_floor_mounting = TRUE
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index e1eb2711455..6d001ae87f5 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -612,6 +612,9 @@ GLOBAL_LIST_INIT(brass_recipes, list (
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("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 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),
))
/obj/item/stack/tile/brass
diff --git a/code/modules/power/lights.dm b/code/modules/power/lights.dm
index cbce1a01d4a..efbb8c1c7cb 100644
--- a/code/modules/power/lights.dm
+++ b/code/modules/power/lights.dm
@@ -128,6 +128,41 @@
return
icon_state = "[fixture_type]-construct-stage[stage]"
+/**
+ * # Brass fixture frame
+ *
+ * Incomplete brass light tube fixture
+ *
+ * Becomes a [Brass light fixture] when completed
+ */
+
+/obj/machinery/light_construct/clockwork
+ name = "brass light fixture frame"
+ desc = "A brass light fixture under construction."
+ icon_state = "clockwork_tube-construct-stage1"
+ construct_type = /obj/machinery/light/clockwork/built
+ fixture_type = "clockwork_tube"
+
+/obj/machinery/light_construct/clockwork/wrench_act(mob/living/user, obj/item/I)
+ . = TRUE
+ switch(stage)
+ if(1)
+ to_chat(user, "You begin to dismantle [src].")
+ if(!I.use_tool(src, user, 30, volume = I.tool_volume))
+ return
+ new /obj/item/stack/tile/brass(get_turf(loc), sheets_refunded)
+ TOOL_DISMANTLE_SUCCESS_MESSAGE
+ qdel(src)
+ if(2)
+ to_chat(user, "You have to remove the wires first.")
+ if(3)
+ to_chat(user, "You have to unscrew the case first.")
+
+/obj/machinery/light_construct/clockwork/deconstruct(disassembled = TRUE)
+ if(!(flags & NODECONSTRUCT))
+ new /obj/item/stack/tile/brass(loc, sheets_refunded)
+ qdel(src)
+
/**
* # Small light fixture frame
*
@@ -156,6 +191,28 @@
sheets_refunded = 3
construct_type = /obj/machinery/light/floor/built
+/obj/machinery/light_construct/clockwork/small
+ name = "small brass light fixture frame"
+ desc = "A small brass light fixture under construction."
+ icon = 'icons/obj/lighting.dmi'
+ icon_state = "clockwork_bulb-construct-stage1"
+ anchored = TRUE
+ layer = 5
+ stage = 1
+ fixture_type = "clockwork_bulb"
+ sheets_refunded = 1
+ construct_type = /obj/machinery/light/clockwork/small/built
+
+/obj/machinery/light_construct/clockwork/floor
+ name = "brass floor light fixture frame"
+ desc = "A brass floor light fixture under construction."
+ icon_state = "clockwork_floor-construct-stage1"
+ anchored = TRUE
+ layer = ABOVE_OPEN_TURF_LAYER
+ plane = FLOOR_PLANE
+ fixture_type = "clockwork_floor"
+ sheets_refunded = 3
+ construct_type = /obj/machinery/light/clockwork/floor/built
#undef LIGHT_CONSTRUCT_EMPTY_FRAME
#undef LIGHT_CONSTRUCT_WIRED
@@ -268,6 +325,36 @@
layer = ABOVE_OPEN_TURF_LAYER
plane = FLOOR_PLANE
+/obj/machinery/light/clockwork
+ icon_state = "clockwork_tube1"
+ desc = "An industrial brass light fixture."
+ glow_icon_state = "clockwork_tube"
+ base_state = "clockwork_tube"
+ deconstruct_type = /obj/machinery/light_construct/clockwork
+
+/obj/machinery/light/clockwork/small
+ icon_state = "clockwork_bulb1"
+ desc = "A brass light fixture."
+ glow_icon_state = "clockwork_bulb"
+ base_state = "clockwork_bulb"
+ fitting = "bulb"
+ light_type = /obj/item/light/bulb
+ deconstruct_type = /obj/machinery/light_construct/clockwork/small
+
+/obj/machinery/light/clockwork/floor
+ name = "brass floor light"
+ desc = "A brass floor light."
+ icon_state = "clockwork_floor1"
+ glow_icon_state = "clockwork_floor"
+ base_state = "clockwork_floor"
+ fitting = "bulb"
+ light_type = /obj/item/light/bulb
+ deconstruct_type = /obj/machinery/light_construct/clockwork/floor
+ brightness_range = 6
+ nightshift_light_range = 6
+ layer = ABOVE_OPEN_TURF_LAYER
+ plane = FLOOR_PLANE
+
/obj/machinery/light/built
status = LIGHT_EMPTY
@@ -277,6 +364,14 @@
/obj/machinery/light/floor/built
status = LIGHT_EMPTY
+/obj/machinery/light/clockwork/built
+ status = LIGHT_EMPTY
+
+/obj/machinery/light/clockwork/small/built
+ status = LIGHT_EMPTY
+
+/obj/machinery/light/clockwork/floor/built
+ status = LIGHT_EMPTY
// create a new lighting fixture
/obj/machinery/light/Initialize(mapload)
diff --git a/icons/obj/lamps.dmi b/icons/obj/lamps.dmi
index 29d8e21bc40..18efdbc7b6a 100644
Binary files a/icons/obj/lamps.dmi and b/icons/obj/lamps.dmi differ
diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi
index 6d887c8114d..d24011b6068 100644
Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ