From 1e7825903c1adb26a7fc216dee4cd47fb2a1c34d Mon Sep 17 00:00:00 2001 From: XDTM Date: Sun, 26 Feb 2017 16:54:31 +0100 Subject: [PATCH] Diagnostic HUDs can see shocked doors --- code/__DEFINES/atom_hud.dm | 3 ++- code/datums/wires/airlock.dm | 8 ++++---- code/game/data_huds.dm | 12 +++++++++++- code/game/machinery/doors/airlock.dm | 26 +++++++++++++++++--------- icons/mob/hud.dmi | Bin 12158 -> 12486 bytes 5 files changed, 34 insertions(+), 15 deletions(-) diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index ef8a55e7d2e..3a2534c00ba 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -15,8 +15,9 @@ #define DIAG_MECH_HUD "11"// Mech health bar #define DIAG_BOT_HUD "12"// Bot HUDs #define DIAG_TRACK_HUD "13"// Mech tracking beacon +#define DIAG_AIRLOCK_HUD "14"//Airlock shock overlay //for antag huds. these are used at the /mob level -#define ANTAG_HUD "14" +#define ANTAG_HUD "15" //data HUD (medhud, sechud) defines //Don't forget to update human/New() if you change these! diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index 3ea68e02bc1..991f14a7c76 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -78,7 +78,7 @@ A.aiControlDisabled = -1 if(WIRE_SHOCK) // Pulse to shock the door for 10 ticks. if(!A.secondsElectrified) - A.secondsElectrified = 30 + A.set_electrified(30) if(usr) A.shockedby += text("\[[time_stamp()]\][usr](ckey:[usr.ckey])") add_logs(usr, A, "electrified") @@ -87,7 +87,7 @@ while (A.secondsElectrified > 0) A.secondsElectrified -= 1 if(A.secondsElectrified < 0) - A.secondsElectrified = 0 + A.set_electrified(0) sleep(10) if(WIRE_SAFETY) A.safe = !A.safe @@ -137,10 +137,10 @@ if(WIRE_SHOCK) // Cut to shock the door, mend to unshock. if(mend) if(A.secondsElectrified) - A.secondsElectrified = 0 + A.set_electrified(0) else if(A.secondsElectrified != -1) - A.secondsElectrified = -1 + A.set_electrified(-1) if(usr) A.shockedby += text("\[[time_stamp()]\][usr](ckey:[usr.ckey])") add_logs(usr, A, "electrified") diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 935b8502b90..bb1371a8534 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -45,7 +45,7 @@ hud_icons = list(ID_HUD, IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD, WANTED_HUD) /datum/atom_hud/data/diagnostic - hud_icons = list (DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_TRACK_HUD) + hud_icons = list (DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD) /* MED/SEC/DIAG HUD HOOKS */ @@ -380,3 +380,13 @@ holder.icon_state = "hudmove" else holder.icon_state = "" + +/*~~~~~~~~~~~~ + Airlocks! +~~~~~~~~~~~~~*/ +/obj/machinery/door/airlock/proc/diag_hud_set_electrified() + var/image/holder = hud_list[DIAG_AIRLOCK_HUD] + if(secondsElectrified != 0) + holder.icon_state = "electrified" + else + holder.icon_state = "" diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 0886c0a6fd8..673e2e1b5c4 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -87,6 +87,7 @@ var/list/airlock_overlays = list() var/delayed_close_requested = FALSE // TRUE means the door will automatically close the next time it's opened. explosion_block = 1 + hud_possible = list(DIAG_AIRLOCK_HUD) /obj/machinery/door/airlock/New() ..() @@ -107,6 +108,10 @@ var/list/airlock_overlays = list() max_integrity = normal_integrity if(damage_deflection == AIRLOCK_DAMAGE_DEFLECTION_N && security_level > AIRLOCK_SECURITY_METAL) damage_deflection = AIRLOCK_DAMAGE_DEFLECTION_R + prepare_huds() + var/datum/atom_hud/data/diagnostic/diag_hud = huds[DATA_HUD_DIAGNOSTIC] + diag_hud.add_to_hud(src) + diag_hud_set_electrified() /obj/machinery/door/airlock/Initialize() ..() @@ -759,10 +764,10 @@ var/list/airlock_overlays = list() //un-electrify door if(wires.is_cut(WIRE_SHOCK)) usr << text("Can't un-electrify the airlock - The electrification wire is cut.") - else if(src.secondsElectrified==-1) - src.secondsElectrified = 0 - else if(src.secondsElectrified>0) - src.secondsElectrified = 0 + else if(secondsElectrified==-1) + set_electrified(0) + else if(secondsElectrified>0) + set_electrified(0) if(8) // Safeties! We don't need no stinking safeties! @@ -845,12 +850,12 @@ var/list/airlock_overlays = list() else shockedby += "\[[time_stamp()]\][usr](ckey:[usr.ckey])" add_logs(usr, src, "electrified") - src.secondsElectrified = 30 + set_electrified(30) spawn(10) while (src.secondsElectrified>0) src.secondsElectrified-=1 if(src.secondsElectrified<0) - src.secondsElectrified = 0 + set_electrified(0) src.updateUsrDialog() sleep(10) if(6) @@ -864,7 +869,7 @@ var/list/airlock_overlays = list() else shockedby += text("\[[time_stamp()]\][usr](ckey:[usr.ckey])") add_logs(usr, src, "electrified") - src.secondsElectrified = -1 + set_electrified(-1) if (8) // Not in order >.> // Safeties! Maybe we do need some stinking safeties! @@ -1417,7 +1422,7 @@ var/list/airlock_overlays = list() safe = FALSE //DOOR CRUSH close() bolt() //Bolt it! - secondsElectrified = -1 //Shock it! + set_electrified(-1) //Shock it! if(origin) shockedby += "\[[time_stamp()]\][origin](ckey:[origin.ckey])" @@ -1426,7 +1431,7 @@ var/list/airlock_overlays = list() // Must be powered and have working AI wire. if(canAIControl(src) && !stat) unbolt() - secondsElectrified = 0 + set_electrified(0) open() safe = TRUE @@ -1439,6 +1444,9 @@ var/list/airlock_overlays = list() wires.cut_all() update_icon() +/obj/machinery/door/airlock/proc/set_electrified(seconds) + secondsElectrified = seconds + diag_hud_set_electrified() /obj/machinery/door/airlock/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) . = ..() diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index ce8da26271c3cf0a3a51453159d01150088fd530..29c527b123d2f5e70ad6e81b844da5971e5560a7 100644 GIT binary patch literal 12486 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 RGl75~R73xM>D^}${|h~|FeU&1 literal 12158 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 M+K)>gJ$v=v05XA%Q2+n{