Merge pull request #14846 from moxian/firelock-faster

Firelocks can be opened by hand in reasonable time
This commit is contained in:
AffectedArc07
2020-11-15 09:34:37 +00:00
committed by GitHub
2 changed files with 28 additions and 21 deletions
+10 -5
View File
@@ -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)
+18 -16
View File
@@ -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, "<span class='warning'>[src] is welded shut!</span>")
return
add_fingerprint(user)
user.changeNext_move(CLICK_CD_MELEE)
if(can_force && (!glass || user.a_intent != INTENT_HELP))
user.visible_message("<span class='notice'>[user] begins forcing \the [src].</span>", \
"<span class='notice'>You begin forcing \the [src].</span>")
if(do_after(user, force_open_time, target = src))
user.visible_message("<span class='notice'>[user] forces \the [src].</span>", \
"<span class='notice'>You force \the [src].</span>")
open()
else if(glass)
user.visible_message("<span class='warning'>[user] bangs on \the [src].</span>",
"<span class='warning'>You bang on \the [src].</span>")
playsound(get_turf(src), 'sound/effects/glassknock.ogg', 10, 1)
user.visible_message(
"<span class='notice'>[user] tries to open [src] manually.</span>",
"<span class='notice'>You operate the manual lever on [src].</span>")
if(do_after(user, manual_open_time, target = src))
user.visible_message(
"<span class='notice'>[user] opens [src].</span>",
"<span class='notice'>You open [src].</span>")
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