diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index a86ea7d4a6b..d9568f69ac1 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -14,21 +14,26 @@
damage_deflection = 10
var/closingLayer = CLOSED_DOOR_LAYER
var/visible = 1
+ /// Is it currently in the process of opening or closing.
var/operating = FALSE
var/autoclose = 0
- var/safe = TRUE //whether the door detects things and mobs in its way and reopen or crushes them.
- var/locked = FALSE //whether the door is bolted or not.
+ /// Whether the door detects things and mobs in its way and reopen or crushes them.
+ var/safe = TRUE
+ // Whether the door is bolted or not.
+ var/locked = FALSE
var/glass = FALSE
var/welded = FALSE
var/normalspeed = TRUE
var/auto_close_time = 150
var/auto_close_time_dangerous = 15
- var/assemblytype //the type of door frame to drop during deconstruction
+ /// The type of door frame to drop during deconstruction
+ var/assemblytype
var/datum/effect_system/spark_spread/spark_system
var/real_explosion_block //ignore this, just use explosion_block
var/heat_proof = FALSE // For rglass-windowed airlocks and firedoors
var/emergency = FALSE
- var/unres_sides = 0 //Unrestricted sides. A bitflag for which direction (if any) can open the door with no access
+ /// Unrestricted sides. A bitflag for which direction (if any) can open the door with no access.
+ var/unres_sides = 0
//Multi-tile doors
var/width = 1
@@ -300,7 +305,7 @@
update_icon()
if(visible && !glass)
set_opacity(1)
- operating = 0
+ operating = FALSE
air_update_turf(1)
update_freelook_sight()
if(safe)
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index c509675868b..b19888ba907 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -6,7 +6,7 @@
/obj/machinery/door/firedoor
name = "firelock"
- desc = "Apply crowbar."
+ desc = "A convenable firelock. Equipped with a manual lever for operating in case of emergency."
icon = 'icons/obj/doors/doorfireglass.dmi'
icon_state = "door_open"
opacity = 0
@@ -19,13 +19,14 @@
safe = FALSE
layer = BELOW_OPEN_DOOR_LAYER
closingLayer = CLOSED_FIREDOOR_LAYER
- auto_close_time = 50
+ auto_close_time = 5 SECONDS
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)
- var/can_force = TRUE
- var/force_open_time = 300
+ /// How long does opening by hand take, in deciseconds.
+ var/manual_open_time = 5 SECONDS
var/can_crush = TRUE
var/nextstate = null
+ /// Whether the "bolts" are "screwed". Used for deconstruction sequence. Has nothing to do with airlock bolting.
var/boltslocked = TRUE
var/active_alarm = FALSE
var/list/affecting_areas
@@ -89,20 +90,22 @@
if(operating || !density)
return
+ if(welded)
+ to_chat(user, "[src] is welded shut!")
+ return
+
add_fingerprint(user)
user.changeNext_move(CLICK_CD_MELEE)
- if(can_force && (!glass || user.a_intent != INTENT_HELP))
- user.visible_message("[user] begins forcing \the [src].", \
- "You begin forcing \the [src].")
- if(do_after(user, force_open_time, target = src))
- user.visible_message("[user] forces \the [src].", \
- "You force \the [src].")
- open()
- else if(glass)
- user.visible_message("[user] bangs on \the [src].",
- "You bang on \the [src].")
- playsound(get_turf(src), 'sound/effects/glassknock.ogg', 10, 1)
+ user.visible_message(
+ "[user] tries to open [src] manually.",
+ "You operate the manual lever on [src].")
+
+ if(do_after(user, manual_open_time, target = src))
+ user.visible_message(
+ "[user] opens [src].",
+ "You open [src].")
+ open(auto_close = FALSE)
/obj/machinery/door/firedoor/attackby(obj/item/C, mob/user, params)
add_fingerprint(user)
@@ -298,7 +301,6 @@
opacity = 1
explosion_block = 2
assemblytype = /obj/structure/firelock_frame/heavy
- can_force = FALSE
max_integrity = 550
/obj/item/firelock_electronics