Files
Paradise/code/datums/wires/alarm.dm
T
AffectedArc07andGitHub 1feb9fbd38 [READY] Atmos Refactor Part 7 (I think) - Kills signals + TGUIs stuff (#19867)
* I AM NOT A KING. I AM NOT A GOD. I AM LUNACY.

* THE SCOPE CREEP

* This was done in vi. No langserver. Send help.

* Progress

* Some issues fixed

* The code builds, but the maps dont

* CC builds, I doubt anything else does

* Do this now

* Safety

* The map compiles

* THE MAPPING HELL

* Airlock controllers dont work

* Fixed bombs

* AND THATS FIXED

* Phantom edit

* Restores LL I think

* The mapmerge hooks are actually retarded

* Fixes spawners

* Half working air control

* Picky

* Hyper efficient tank monitor

* Sanity

* Laying the framework

* Improved alert console

* Dont think this is actually done anywhere

* Metering

* ONE HUNDRED AND ~~EIGHTY~~ TWENTY SEVEN

* WE ARE READY FOR BOX TO BUILD

* One map done

* Well that was easy

* Another one

* I think this is done

* I should have removed this

* I would make a russian joke but <current event>

* Delta WIP

* Makes delta work

* Early review

* TM safeguard

* oops

* METAAAAAAAAAAAAAAAAAAAAAAAAA

* Fix #4213

* Trailing

* oh for piss sake

* Shutter fix

* Roundstart ATs can go away

* Review pass 1

* What could go wrong

* BOOM BOOM BOOM

* Not needed

* Fix seed vault

* Oops

* Review changes
2023-01-03 20:59:35 +00:00

84 lines
1.9 KiB
Plaintext

/datum/wires/alarm
holder_type = /obj/machinery/alarm
wire_count = 5
window_x = 385
window_y = 90
proper_name = "Air alarm"
/datum/wires/alarm/New(atom/_holder)
wires = list(
WIRE_IDSCAN , WIRE_MAIN_POWER1 , WIRE_SYPHON,
WIRE_AI_CONTROL, WIRE_AALARM
)
return ..()
/datum/wires/alarm/interactable(mob/user)
var/obj/machinery/alarm/A = holder
if(A.wiresexposed)
return TRUE
return FALSE
/datum/wires/alarm/get_status()
. = ..()
var/obj/machinery/alarm/A = holder
. += "The Air Alarm is [A.locked ? "" : "un"]locked."
. += "The Air Alarm is [(A.shorted || (A.stat & (NOPOWER|BROKEN))) ? "offline." : "working properly!"]"
. += "The 'AI control allowed' light is [A.aidisabled ? "off" : "on"]."
/datum/wires/alarm/on_cut(wire, mend)
var/obj/machinery/alarm/A = holder
switch(wire)
if(WIRE_IDSCAN)
if(!mend)
A.locked = TRUE
if(WIRE_MAIN_POWER1)
A.shock(usr, 50)
A.shorted = !mend
A.update_icon()
if(WIRE_AI_CONTROL)
A.aidisabled = !mend
if(WIRE_SYPHON)
if(!mend)
A.mode = 3 // AALARM_MODE_PANIC
A.apply_mode()
if(WIRE_AALARM)
A.alarm_area.atmosalert(ATMOS_ALARM_DANGER, A)
A.update_icon()
..()
/datum/wires/alarm/on_pulse(wire)
var/obj/machinery/alarm/A = holder
switch(wire)
if(WIRE_IDSCAN)
A.locked = !A.locked
if(WIRE_MAIN_POWER1)
if(!A.shorted)
A.shorted = TRUE
A.update_icon()
addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/alarm, unshort_callback)), 120 SECONDS)
if(WIRE_AI_CONTROL)
if(!A.aidisabled)
A.aidisabled = TRUE
A.updateDialog()
addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/alarm, enable_ai_control_callback)), 10 SECONDS)
if(WIRE_SYPHON)
if(A.mode == 1) // AALARM_MODE_SCRUB
A.mode = 3 // AALARM_MODE_PANIC
else
A.mode = 1 // AALARM_MODE_SCRUB
A.apply_mode()
if(WIRE_AALARM)
A.alarm_area.atmosalert(ATMOS_ALARM_NONE, A)
A.update_icon()
..()