mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-29 03:21:30 +00:00
This is now updated to baymerge and completed rscadd "Overhauled all of the security hud job icons, to be more visually pleasing and better communicate roles" bugfix "Intern positions and psychiatrists now have an icon. All jobs that were missing an icon should be fixed" tweak "Made the loyalty implant icon a less obtrusive green light, instead of a big red square" tweak "CCIA, ERT, IAA and any similar nanotrasen representatives now have the N logo as their icon"
93 lines
2.8 KiB
Plaintext
93 lines
2.8 KiB
Plaintext
/* Using the HUD procs is simple. Call these procs in the life.dm of the intended mob.
|
|
Use the regular_hud_updates() proc before process_med_hud(mob) or process_sec_hud(mob) so
|
|
the HUD updates properly! */
|
|
|
|
//Medical HUD outputs. Called by the Life() proc of the mob using it, usually.
|
|
proc/process_med_hud(var/mob/M, var/local_scanner, var/mob/Alt)
|
|
if(!can_process_hud(M))
|
|
return
|
|
|
|
var/datum/arranged_hud_process/P = arrange_hud_process(M, Alt, med_hud_users)
|
|
for(var/mob/living/carbon/human/patient in P.Mob.in_view(P.Turf))
|
|
if(P.Mob.see_invisible < patient.invisibility)
|
|
continue
|
|
|
|
if(local_scanner)
|
|
P.Client.images += patient.hud_list[HEALTH_HUD]
|
|
P.Client.images += patient.hud_list[STATUS_HUD]
|
|
else
|
|
var/sensor_level = getsensorlevel(patient)
|
|
if(sensor_level >= SUIT_SENSOR_VITAL)
|
|
P.Client.images += patient.hud_list[HEALTH_HUD]
|
|
if(sensor_level >= SUIT_SENSOR_BINARY)
|
|
P.Client.images += patient.hud_list[LIFE_HUD]
|
|
|
|
//Security HUDs. Pass a value for the second argument to enable implant viewing or other special features.
|
|
proc/process_sec_hud(var/mob/M, var/advanced_mode, var/mob/Alt)
|
|
if(!can_process_hud(M))
|
|
return
|
|
var/datum/arranged_hud_process/P = arrange_hud_process(M, Alt, sec_hud_users)
|
|
for(var/mob/living/carbon/human/perp in P.Mob.in_view(P.Turf))
|
|
if(P.Mob.see_invisible < perp.invisibility)
|
|
continue
|
|
|
|
P.Client.images += perp.hud_list[ID_HUD]
|
|
if(advanced_mode)
|
|
P.Client.images += perp.hud_list[WANTED_HUD]
|
|
P.Client.images += perp.hud_list[IMPTRACK_HUD]
|
|
P.Client.images += perp.hud_list[IMPLOYAL_HUD]
|
|
P.Client.images += perp.hud_list[IMPCHEM_HUD]
|
|
|
|
datum/arranged_hud_process
|
|
var/client/Client
|
|
var/mob/Mob
|
|
var/turf/Turf
|
|
|
|
proc/arrange_hud_process(var/mob/M, var/mob/Alt, var/list/hud_list)
|
|
hud_list |= M
|
|
var/datum/arranged_hud_process/P = new
|
|
P.Client = M.client
|
|
P.Mob = Alt ? Alt : M
|
|
P.Turf = get_turf(P.Mob)
|
|
return P
|
|
|
|
proc/can_process_hud(var/mob/M)
|
|
if(!M)
|
|
return 0
|
|
if(!M.client)
|
|
return 0
|
|
if(M.stat != CONSCIOUS)
|
|
return 0
|
|
return 1
|
|
|
|
//Deletes the current HUD images so they can be refreshed with new ones.
|
|
mob/proc/handle_hud_glasses() //Used in the life.dm of mobs that can use HUDs.
|
|
if(client)
|
|
for(var/image/hud in client.images)
|
|
if(copytext(hud.icon_state,1,4) == "hud")
|
|
client.images -= hud
|
|
med_hud_users -= src
|
|
sec_hud_users -= src
|
|
|
|
mob/proc/in_view(var/turf/T)
|
|
return view(T)
|
|
|
|
/mob/eye/in_view(var/turf/T)
|
|
var/list/viewed = new
|
|
for(var/mob/living/carbon/human/H in mob_list)
|
|
if(get_dist(H, T) <= 7)
|
|
viewed += H
|
|
return viewed
|
|
|
|
proc/get_sec_hud_icon(var/mob/living/carbon/human/H)//This function is called from human/life,dm, ~line 1663
|
|
var/state
|
|
if(H.wear_id)
|
|
var/obj/item/weapon/card/id/I = H.wear_id.GetID()
|
|
if(I)
|
|
state = "hud[ckey(I.GetJobName())]"
|
|
else
|
|
state = "hudunknown"
|
|
else
|
|
state = "hudunknown"
|
|
|
|
return state |