diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 669dbd029bd..ce8d2828d89 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -1,8 +1,6 @@
-#define CONSTRUCTION_COMPLETE 0 //No construction done - functioning as normal
#define CONSTRUCTION_PANEL_OPEN 1 //Maintenance panel is open, still functioning
-#define CONSTRUCTION_WIRES_EXPOSED 2 //Cover plate is removed, wires are available
-#define CONSTRUCTION_GUTTED 3 //Wires are removed, circuit ready to remove
-#define CONSTRUCTION_NOCIRCUIT 4 //Circuit board removed, can safely weld apart
+#define CONSTRUCTION_NO_CIRCUIT 2 //Circuit board removed, can safely weld apart
+#define DEFAULT_STEP_TIME 20 /// default time for each step
/obj/machinery/door/firedoor
name = "firelock"
@@ -21,7 +19,7 @@
layer = BELOW_OPEN_DOOR_LAYER
closingLayer = CLOSED_FIREDOOR_LAYER
assemblytype = /obj/structure/firelock_frame
- armor = list("melee" = 30, "bullet" = 30, "laser" = 20, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 95, "acid" = 70)
+ armor = list("melee" = 10, "bullet" = 30, "laser" = 20, "energy" = 20, "bomb" = 30, "bio" = 100, "rad" = 100, "fire" = 95, "acid" = 70)
interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_REQUIRES_SILICON | INTERACT_MACHINE_OPEN
var/nextstate = null
var/boltslocked = TRUE
@@ -95,7 +93,6 @@
add_fingerprint(user)
if(operating)
return
-
if(welded)
if(C.tool_behaviour == TOOL_WRENCH)
if(boltslocked)
@@ -104,7 +101,7 @@
C.play_tool_sound(src)
user.visible_message("[user] starts undoing [src]'s bolts...", \
"You start unfastening [src]'s floor bolts...")
- if(!C.use_tool(src, user, 50))
+ if(!C.use_tool(src, user, DEFAULT_STEP_TIME))
return
playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE)
user.visible_message("[user] unfastens [src]'s bolts.", \
@@ -117,7 +114,6 @@
C.play_tool_sound(src)
boltslocked = !boltslocked
return
-
return ..()
/obj/machinery/door/firedoor/try_to_activate_door(mob/user)
@@ -127,7 +123,7 @@
if(!W.tool_start_check(user, amount=0))
return
user.visible_message("[user] starts [welded ? "unwelding" : "welding"] [src].", "You start welding [src].")
- if(W.use_tool(src, user, 40, volume=50))
+ if(W.use_tool(src, user, DEFAULT_STEP_TIME, volume=50))
welded = !welded
to_chat(user, "[user] [welded?"welds":"unwelds"] [src].", "You [welded ? "weld" : "unweld"] [src].")
update_icon()
@@ -193,13 +189,17 @@
/obj/machinery/door/firedoor/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
- var/obj/structure/firelock_frame/F = new assemblytype(get_turf(src))
- if(disassembled)
- F.constructionStep = CONSTRUCTION_PANEL_OPEN
+ var/turf/T = get_turf(src)
+ if(disassembled || prob(40))
+ var/obj/structure/firelock_frame/F = new assemblytype(T)
+ if(disassembled)
+ F.constructionStep = CONSTRUCTION_PANEL_OPEN
+ else
+ F.constructionStep = CONSTRUCTION_NO_CIRCUIT
+ F.obj_integrity = F.max_integrity * 0.5
+ F.update_icon()
else
- F.constructionStep = CONSTRUCTION_WIRES_EXPOSED
- F.obj_integrity = F.max_integrity * 0.5
- F.update_icon()
+ new /obj/item/electronics/firelock (T)
qdel(src)
@@ -268,22 +268,18 @@
icon_state = "frame1"
anchored = FALSE
density = TRUE
- var/constructionStep = CONSTRUCTION_NOCIRCUIT
+ var/constructionStep = CONSTRUCTION_NO_CIRCUIT
var/reinforced = 0
/obj/structure/firelock_frame/examine(mob/user)
. = ..()
switch(constructionStep)
if(CONSTRUCTION_PANEL_OPEN)
- . += "It is unbolted from the floor. A small loosely connected metal plate is covering the wires."
+ . += "It is unbolted from the floor. The circuit could be removed with a crowbar."
if(!reinforced)
. += "It could be reinforced with plasteel."
- if(CONSTRUCTION_WIRES_EXPOSED)
- . += "The maintenance plate has been pried away, and wires are trailing."
- if(CONSTRUCTION_GUTTED)
- . += "The maintenance panel is missing wires and the circuit board is loosely connected."
- if(CONSTRUCTION_NOCIRCUIT)
- . += "There are no firelock electronics in the frame. The frame could be cut apart."
+ if(CONSTRUCTION_NO_CIRCUIT)
+ . += "There are no firelock electronics in the frame. The frame could be welded apart ."
/obj/structure/firelock_frame/update_icon_state()
icon_state = "frame[constructionStep]"
@@ -293,16 +289,17 @@
if(CONSTRUCTION_PANEL_OPEN)
if(C.tool_behaviour == TOOL_CROWBAR)
C.play_tool_sound(src)
- user.visible_message("[user] starts prying something out from [src]...", \
- "You begin prying out the wire cover...")
- if(!C.use_tool(src, user, 50))
+ user.visible_message("[user] begins removing the circuit board from [src]...", \
+ "You begin prying out the circuit board from [src]...")
+ if(!C.use_tool(src, user, DEFAULT_STEP_TIME))
return
if(constructionStep != CONSTRUCTION_PANEL_OPEN)
return
playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE)
- user.visible_message("[user] pries out a metal plate from [src], exposing the wires.", \
- "You remove the cover plate from [src], exposing the wires.")
- constructionStep = CONSTRUCTION_WIRES_EXPOSED
+ user.visible_message("[user] removes [src]'s circuit board.", \
+ "You remove the circuit board from [src].")
+ new /obj/item/electronics/firelock(drop_location())
+ constructionStep = CONSTRUCTION_NO_CIRCUIT
update_icon()
return
if(C.tool_behaviour == TOOL_WRENCH)
@@ -312,7 +309,7 @@
C.play_tool_sound(src)
user.visible_message("[user] starts bolting down [src]...", \
"You begin bolting [src]...")
- if(!C.use_tool(src, user, 30))
+ if(!C.use_tool(src, user, DEFAULT_STEP_TIME))
return
if(locate(/obj/machinery/door/firedoor) in get_turf(src))
return
@@ -336,7 +333,7 @@
user.visible_message("[user] begins reinforcing [src]...", \
"You begin reinforcing [src]...")
playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE)
- if(do_after(user, 60, target = src))
+ if(do_after(user, DEFAULT_STEP_TIME, target = src))
if(constructionStep != CONSTRUCTION_PANEL_OPEN || reinforced || P.get_amount() < 2 || !P)
return
user.visible_message("[user] reinforces [src].", \
@@ -345,77 +342,29 @@
P.use(2)
reinforced = 1
return
-
- if(CONSTRUCTION_WIRES_EXPOSED)
- if(C.tool_behaviour == TOOL_WIRECUTTER)
- C.play_tool_sound(src)
- user.visible_message("[user] starts cutting the wires from [src]...", \
- "You begin removing [src]'s wires...")
- if(!C.use_tool(src, user, 60))
- return
- if(constructionStep != CONSTRUCTION_WIRES_EXPOSED)
- return
- user.visible_message("[user] removes the wires from [src].", \
- "You remove the wiring from [src], exposing the circuit board.")
- new/obj/item/stack/cable_coil(get_turf(src), 5)
- constructionStep = CONSTRUCTION_GUTTED
- update_icon()
- return
- if(C.tool_behaviour == TOOL_CROWBAR)
- C.play_tool_sound(src)
- user.visible_message("[user] starts prying a metal plate into [src]...", \
- "You begin prying the cover plate back onto [src]...")
- if(!C.use_tool(src, user, 80))
- return
- if(constructionStep != CONSTRUCTION_WIRES_EXPOSED)
- return
+ if(CONSTRUCTION_NO_CIRCUIT)
+ if(istype(C, /obj/item/electronics/firelock))
+ user.visible_message("[user] starts adding [C] to [src]...", \
+ "You begin adding a circuit board to [src]...")
+ playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE)
+ if(!do_after(user, DEFAULT_STEP_TIME, target = src))
+ return
+ if(constructionStep != CONSTRUCTION_NO_CIRCUIT)
+ return
+ qdel(C)
+ user.visible_message("[user] adds a circuit to [src].", \
+ "You insert and secure [C].")
playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE)
- user.visible_message("[user] pries the metal plate into [src].", \
- "You pry [src]'s cover plate into place, hiding the wires.")
constructionStep = CONSTRUCTION_PANEL_OPEN
- update_icon()
return
- if(CONSTRUCTION_GUTTED)
- if(C.tool_behaviour == TOOL_CROWBAR)
- user.visible_message("[user] begins removing the circuit board from [src]...", \
- "You begin prying out the circuit board from [src]...")
- if(!C.use_tool(src, user, 50, volume=50))
- return
- if(constructionStep != CONSTRUCTION_GUTTED)
- return
- user.visible_message("[user] removes [src]'s circuit board.", \
- "You remove the circuit board from [src].")
- new /obj/item/electronics/firelock(drop_location())
- constructionStep = CONSTRUCTION_NOCIRCUIT
- update_icon()
- return
- if(istype(C, /obj/item/stack/cable_coil))
- var/obj/item/stack/cable_coil/B = C
- if(B.get_amount() < 5)
- to_chat(user, "You need more wires to add wiring to [src].")
- return
- user.visible_message("[user] begins wiring [src]...", \
- "You begin adding wires to [src]...")
- playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE)
- if(do_after(user, 60, target = src))
- if(constructionStep != CONSTRUCTION_GUTTED || B.get_amount() < 5 || !B)
- return
- user.visible_message("[user] adds wires to [src].", \
- "You wire [src].")
- playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE)
- B.use(5)
- constructionStep = CONSTRUCTION_WIRES_EXPOSED
- update_icon()
- return
- if(CONSTRUCTION_NOCIRCUIT)
if(C.tool_behaviour == TOOL_WELDER)
if(!C.tool_start_check(user, amount=1))
return
user.visible_message("[user] begins cutting apart [src]'s frame...", \
"You begin slicing [src] apart...")
- if(C.use_tool(src, user, 40, volume=50, amount=1))
- if(constructionStep != CONSTRUCTION_NOCIRCUIT)
+ if(C.use_tool(src, user, DEFAULT_STEP_TIME, volume=50, amount=1))
+ if(constructionStep != CONSTRUCTION_NO_CIRCUIT)
return
user.visible_message("[user] cuts apart [src]!", \
"You cut [src] into metal.")
@@ -425,28 +374,13 @@
new /obj/item/stack/sheet/plasteel(T, 2)
qdel(src)
return
- if(istype(C, /obj/item/electronics/firelock))
- user.visible_message("[user] starts adding [C] to [src]...", \
- "You begin adding a circuit board to [src]...")
- playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE)
- if(!do_after(user, 40, target = src))
- return
- if(constructionStep != CONSTRUCTION_NOCIRCUIT)
- return
- qdel(C)
- user.visible_message("[user] adds a circuit to [src].", \
- "You insert and secure [C].")
- playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE)
- constructionStep = CONSTRUCTION_GUTTED
- update_icon()
- return
if(istype(C, /obj/item/electroadaptive_pseudocircuit))
var/obj/item/electroadaptive_pseudocircuit/P = C
- if(!P.adapt_circuit(user, 30))
+ if(!P.adapt_circuit(user, DEFAULT_STEP_TIME * 0.5))
return
user.visible_message("[user] fabricates a circuit and places it into [src].", \
"You adapt a firelock circuit and slot it into the assembly.")
- constructionStep = CONSTRUCTION_GUTTED
+ constructionStep = CONSTRUCTION_PANEL_OPEN
update_icon()
return
return ..()
@@ -454,7 +388,7 @@
/obj/structure/firelock_frame/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
if(the_rcd.mode == RCD_DECONSTRUCT)
return list("mode" = RCD_DECONSTRUCT, "delay" = 50, "cost" = 16)
- else if((constructionStep == CONSTRUCTION_NOCIRCUIT) && (the_rcd.upgrade & RCD_UPGRADE_SIMPLE_CIRCUITS))
+ else if((constructionStep == CONSTRUCTION_NO_CIRCUIT) && (the_rcd.upgrade & RCD_UPGRADE_SIMPLE_CIRCUITS))
return list("mode" = RCD_UPGRADE_SIMPLE_CIRCUITS, "delay" = 20, "cost" = 1)
return FALSE
@@ -463,7 +397,7 @@
if(RCD_UPGRADE_SIMPLE_CIRCUITS)
user.visible_message("[user] fabricates a circuit and places it into [src].", \
"You adapt a firelock circuit and slot it into the assembly.")
- constructionStep = CONSTRUCTION_GUTTED
+ constructionStep = CONSTRUCTION_PANEL_OPEN
update_icon()
return TRUE
if(RCD_DECONSTRUCT)
@@ -476,8 +410,5 @@
name = "heavy firelock frame"
reinforced = TRUE
-#undef CONSTRUCTION_COMPLETE
#undef CONSTRUCTION_PANEL_OPEN
-#undef CONSTRUCTION_WIRES_EXPOSED
-#undef CONSTRUCTION_GUTTED
-#undef CONSTRUCTION_NOCIRCUIT
+#undef CONSTRUCTION_NO_CIRCUIT
diff --git a/icons/obj/doors/doorfire.dmi b/icons/obj/doors/doorfire.dmi
index 3b9f05cfa32..472415ec798 100644
Binary files a/icons/obj/doors/doorfire.dmi and b/icons/obj/doors/doorfire.dmi differ