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 ce8da26271c..29c527b123d 100644 Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ