diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 3d3b1eec098..8c5ed4ddb6e 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1285,6 +1285,7 @@ About the new airlock wires panel: sleep(6) if(QDELETED(src)) return + electronics = new /obj/item/airlock_electronics/destroyed() operating = FALSE if(!open()) update_icon(AIRLOCK_CLOSED, 1) @@ -1406,9 +1407,6 @@ About the new airlock wires panel: ae = electronics electronics = null ae.forceMove(loc) - if(emagged) - ae.icon_state = "door_electronics_smoked" - operating = 0 qdel(src) /obj/machinery/door/airlock/proc/note_type() //Returns a string representing the type of note pinned to this airlock diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index e9435dfe4e8..0be1de00c80 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -102,3 +102,16 @@ if("clear_all") selected_accesses = list() + +/obj/item/airlock_electronics/destroyed + name = "burned-out airlock electronics" + icon_state = "door_electronics_smoked" + +/obj/item/airlock_electronics/destroyed/attack_self(mob/user) + return + +/obj/item/airlock_electronics/destroyed/decompile_act(obj/item/matter_decompiler/C, mob/user) + C.stored_comms["metal"] += 1 + C.stored_comms["glass"] += 1 + qdel(src) + return TRUE diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 7b5e711ca81..59d839018bb 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -219,6 +219,7 @@ if(!operating && density && !emagged) emagged = TRUE operating = TRUE + electronics = new /obj/item/airlock_electronics/destroyed() flick("[base_state]spark", src) playsound(src, "sparks", 75, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) sleep(6) @@ -279,11 +280,6 @@ WA.update_icon() WA.created_name = name - if(emagged) - to_chat(user, "You discard the damaged electronics.") - qdel(src) - return - to_chat(user, "You remove the airlock electronics.") var/obj/item/airlock_electronics/ae diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm index 88663e6c38c..9decdcf4c31 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/misc.dm @@ -58,14 +58,14 @@ /obj/effect/decal/straw/edge icon_state = "strawscatterededge" -/obj/effect/decal/ants +/obj/effect/decal/cleanable/ants name = "space ants" desc = "A bunch of space ants." icon = 'icons/goonstation/effects/effects.dmi' icon_state = "spaceants" scoop_reagents = list("ants" = 20) -/obj/effect/decal/ants/Initialize(mapload) +/obj/effect/decal/cleanable/ants/Initialize(mapload) . = ..() var/scale = (rand(2, 10) / 10) + (rand(0, 5) / 100) transform = matrix(transform, scale, scale, MATRIX_SCALE) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 89ce97ff913..d8abb853e9f 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -192,5 +192,10 @@ desc = "A pair of broken zipties." icon_state = "cuff_white_used" +/obj/item/restraints/handcuffs/cable/zipties/used/decompile_act(obj/item/matter_decompiler/C, mob/user) + C.stored_comms["glass"] += 1 + qdel(src) + return TRUE + /obj/item/restraints/handcuffs/cable/zipties/used/attack() return diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 0d9db6737b6..02cad716d3d 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -75,7 +75,7 @@ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS to_chat(user, "You wire the airlock assembly.") - else if(istype(W, /obj/item/airlock_electronics) && state == AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS && W.icon_state != "door_electronics_smoked") + else if(istype(W, /obj/item/airlock_electronics) && state == AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS && !istype(W, /obj/item/airlock_electronics/destroyed)) playsound(loc, W.usesound, 100, 1) user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly...") @@ -187,6 +187,7 @@ door.name = base_name door.previous_airlock = previous_assembly electronics.forceMove(door) + electronics = null qdel(src) update_icon() diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index fb89c95815b..73e6fadac80 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -131,7 +131,7 @@ if("02") //Adding airlock electronics for access. Step 6 complete. - if(istype(W, /obj/item/airlock_electronics)) + if(istype(W, /obj/item/airlock_electronics) && !istype(W, /obj/item/airlock_electronics/destroyed)) playsound(loc, W.usesound, 100, 1) user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly...") user.drop_item() diff --git a/code/modules/food_and_drinks/food.dm b/code/modules/food_and_drinks/food.dm index 15e28cc6c62..ea3055ad55e 100644 --- a/code/modules/food_and_drinks/food.dm +++ b/code/modules/food_and_drinks/food.dm @@ -44,8 +44,8 @@ if(isturf(loc) && !locate(/obj/structure/table) in T) if(ant_location == T) if(prob(15)) - if(!locate(/obj/effect/decal/ants) in T) - new /obj/effect/decal/ants(T) + if(!locate(/obj/effect/decal/cleanable/ants) in T) + new /obj/effect/decal/cleanable/ants(T) antable = FALSE desc += " It appears to be infested with ants. Yuck!" reagents.add_reagent("ants", 1) // Don't eat things with ants in i you weirdo. diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 58ba6adba90..1e8bd595bb2 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -88,6 +88,13 @@ to_chat(user, "There is no bullet in the casing to inscribe anything into.") ..() +/obj/item/ammo_casing/decompile_act(obj/item/matter_decompiler/C, mob/user) + if(!BB) + C.stored_comms["metal"] += 1 + qdel(src) + return TRUE + return ..() + //Boxes of ammo /obj/item/ammo_box name = "ammo box (generic)" diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm index 9a3adde3a0a..b644e5ad2b9 100644 --- a/code/modules/reagents/chemistry/reagents/toxins.dm +++ b/code/modules/reagents/chemistry/reagents/toxins.dm @@ -1076,7 +1076,7 @@ return ..() | update_flags /datum/reagent/pestkiller/reaction_obj(obj/O, volume) - if(istype(O, /obj/effect/decal/ants)) + if(istype(O, /obj/effect/decal/cleanable/ants)) O.visible_message("The ants die.") qdel(O)