diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index ef4561b5720..bf67c82b513 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -215,6 +215,14 @@
damtype = "fire"
START_PROCESSING(SSobj, src)
+/obj/item/flashlight/flare/decompile_act(obj/item/matter_decompiler/C, mob/user)
+ if(!fuel)
+ C.stored_comms["metal"] += 1
+ C.stored_comms["glass"] += 1
+ qdel(src)
+ return TRUE
+ return ..()
+
// GLOWSTICKS
/obj/item/flashlight/flare/glowstick
diff --git a/code/game/objects/items/weapons/cigs.dm b/code/game/objects/items/weapons/cigs.dm
index 87f5475b6ff..48b79de70ef 100644
--- a/code/game/objects/items/weapons/cigs.dm
+++ b/code/game/objects/items/weapons/cigs.dm
@@ -52,6 +52,11 @@ LIGHTERS ARE IN LIGHTERS.DM
STOP_PROCESSING(SSobj, src)
return ..()
+/obj/item/clothing/mask/cigarette/decompile_act(obj/item/matter_decompiler/C, mob/user)
+ C.stored_comms["wood"] += 1
+ qdel(src)
+ return TRUE
+
/obj/item/clothing/mask/cigarette/attack(mob/living/M, mob/living/user, def_zone)
if(istype(M) && M.on_fire)
user.changeNext_move(CLICK_CD_MELEE)
diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm
index 7934f746968..f556cd73dc3 100644
--- a/code/game/objects/items/weapons/storage/fancy.dm
+++ b/code/game/objects/items/weapons/storage/fancy.dm
@@ -65,6 +65,13 @@
update_icon(UPDATE_OVERLAYS)
return
+/obj/item/storage/fancy/donut_box/decompile_act(obj/item/matter_decompiler/C, mob/user)
+ if(!length(contents))
+ C.stored_comms["wood"] += 1
+ qdel(src)
+ return TRUE
+ return ..()
+
/*
* Egg Box
*/
diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm
index 4b5ac043646..41e9b3ddc10 100644
--- a/code/modules/hydroponics/grown/banana.dm
+++ b/code/modules/hydroponics/grown/banana.dm
@@ -57,6 +57,11 @@
/obj/item/grown/bananapeel/proc/choose_icon_state()
icon_state = "[icon_state]_[rand(1, 3)]"
+/obj/item/grown/bananapeel/decompile_act(obj/item/matter_decompiler/C, mob/user)
+ C.stored_comms["wood"] += 1
+ qdel(src)
+ return TRUE
+
/obj/item/grown/bananapeel/suicide_act(mob/user)
user.visible_message("[user] is deliberately slipping on [src]! It looks like [user.p_theyre()] trying to commit suicide.")
playsound(loc, 'sound/misc/slip.ogg', 50, 1, -1)
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm
index 750b62c62a2..ef6189ec24a 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm
@@ -138,15 +138,12 @@
user.visible_message("[user] removes the power cell from [A]!", "You remove the power cell.")
return TRUE
-//TODO: Matter decompiler.
/obj/item/matter_decompiler
-
name = "matter decompiler"
desc = "Eating trash, bits of glass, or other debris will replenish your stores."
icon = 'icons/obj/toy.dmi'
icon_state = "minigibber"
-
- //Metal, glass, wood, plastic.
+ /// Metal, glass, wood, plastic.
var/list/stored_comms = list(
"metal" = 0,
"glass" = 0,
@@ -157,14 +154,15 @@
return
/obj/item/matter_decompiler/afterattack(atom/target, mob/living/user, proximity, params)
- if(!proximity) return //Not adjacent.
+ if(!proximity)
+ return // Not adjacent.
- //We only want to deal with using this on turfs. Specific items aren't important.
+ // We only want to deal with using this on turfs. Specific items aren't important.
var/turf/T = get_turf(target)
if(!istype(T))
return
- //Used to give the right message.
+ // Used to give the right message.
var/grabbed_something = FALSE
for(var/atom/movable/A in T)
@@ -177,14 +175,13 @@
to_chat(user, "Nothing on \the [T] is useful to you.")
return
-//Putting the decompiler here to avoid doing list checks every tick.
+// Putting the decompiler here to avoid doing list checks every tick.
/mob/living/silicon/robot/drone/use_power()
-
..()
if(low_power_mode || !decompiler)
return
- //The decompiler replenishes drone stores from hoovered-up junk each tick.
+ // The decompiler replenishes drone stores from hoovered-up junk each tick.
for(var/type in decompiler.stored_comms)
if(decompiler.stored_comms[type] > 0)
var/obj/item/stack/sheet/stack
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index e60dffed617..940c270bb79 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -555,6 +555,11 @@
if(info)
icon_state = "scrap_words"
+/obj/item/paper/crumpled/decompile_act(obj/item/matter_decompiler/C, mob/user)
+ C.stored_comms["wood"] += 1
+ qdel(src)
+ return TRUE
+
/obj/item/paper/crumpled/bloody
icon_state = "scrap_bloodied"