diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm
index a82c9e13c0f..5d0c32f2d51 100644
--- a/code/game/machinery/computer/crew.dm
+++ b/code/game/machinery/computer/crew.dm
@@ -6,24 +6,18 @@
idle_power_usage = 250
active_power_usage = 500
circuit = "/obj/item/weapon/circuitboard/crew"
- var/list/tracked = list( )
-
-
-/obj/machinery/computer/crew/New()
- tracked = list()
- ..()
-
/obj/machinery/computer/crew/attack_ai(mob/user)
- attack_hand(user)
- interact(user)
-
+ if(stat & (BROKEN|NOPOWER))
+ return
+ crewmonitor(user)
/obj/machinery/computer/crew/attack_hand(mob/user)
+ user.set_machine(src)
add_fingerprint(user)
if(stat & (BROKEN|NOPOWER))
return
- interact(user)
+ crewmonitor(user)
/obj/machinery/computer/crew/update_icon()
@@ -53,46 +47,37 @@
return
-/obj/machinery/computer/crew/interact(mob/user)
- if(stat & (BROKEN|NOPOWER))
- return
- if(!istype(user, /mob/living/silicon) && get_dist(src, user) > 1)
- user.unset_machine()
- user << browse(null, "window=powcomp")
- return
- user.set_machine(src)
- src.scan()
- var/t = ""
- t += "
Refresh "
- t += "Close
"
- t += "
Name | Vitals | Position |
"
+proc/crewmonitor(mob/user)
+ var/t = "Name | Vitals | Position |
"
var/list/logs = list()
- for(var/obj/item/clothing/under/C in src.tracked)
+ var/list/tracked = crewscan()
+ for(var/mob/living/carbon/human/H in tracked)
var/log = ""
- var/turf/pos = get_turf(C)
- if((C) && (C.has_sensor) && (pos) && (pos.z == src.z) && C.sensor_mode)
- if(istype(C.loc, /mob/living/carbon/human))
-
- var/mob/living/carbon/human/H = C.loc
+ var/turf/pos = get_turf(H)
+ if(istype(H.w_uniform, /obj/item/clothing/under))
+ var/obj/item/clothing/under/U = H.w_uniform
+ if(pos && pos.z == 1 && U.sensor_mode)
var/obj/item/ID = null
-
if(H.wear_id)
ID = H.wear_id.GetID()
- var/dam1 = round(H.getOxyLoss(),1)
- var/dam2 = round(H.getToxLoss(),1)
- var/dam3 = round(H.getFireLoss(),1)
- var/dam4 = round(H.getBruteLoss(),1)
var/life_status = "[H.stat > 1 ? "Deceased" : "Living"]"
- var/damage_report = "([dam1]/[dam2]/[dam3]/[dam4])"
if(ID)
log += "| [ID.name] | "
else
log += "
| Unknown | "
- switch(C.sensor_mode)
+ var/damage_report
+ if(U.sensor_mode > 1)
+ var/dam1 = round(H.getOxyLoss(),1)
+ var/dam2 = round(H.getToxLoss(),1)
+ var/dam3 = round(H.getFireLoss(),1)
+ var/dam4 = round(H.getBruteLoss(),1)
+ damage_report = "([dam1]/[dam2]/[dam3]/[dam4])"
+
+ switch(U.sensor_mode)
if(1)
log += "[life_status] | Not Available |
"
if(2)
@@ -105,22 +90,16 @@
for(var/log in logs)
t += log
t += "
"
- //user << browse(t, "window=crewcomp;size=900x600")
- //onclose(user, "crewcomp")
- var/datum/browser/popup = new(user, "crewcomp", name, 900, 600)
+ var/datum/browser/popup = new(user, "crewcomp", "Crew Monitoring", 900, 600)
popup.set_content(t)
- popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.open()
-/obj/machinery/computer/crew/proc/scan()
- for(var/obj/item/clothing/under/C in world)
- if((C.has_sensor) && (istype(C.loc, /mob/living/carbon/human)))
- var/check = 0
- for(var/O in src.tracked)
- if(O == C)
- check = 1
- break
- if(!check)
- src.tracked.Add(C)
- return 1
\ No newline at end of file
+proc/crewscan()
+ var/list/tracked = list()
+ for(var/mob/living/carbon/human/H in living_mob_list)
+ if(istype(H.w_uniform, /obj/item/clothing/under))
+ var/obj/item/clothing/under/U = H.w_uniform
+ if(U.has_sensor && U.sensor_mode)
+ tracked.Add(H)
+ return tracked
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 9be5fa05662..2d8c202a78b 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -223,6 +223,10 @@ var/list/ai_list = list()
src << browse(dat, "window=airoster")
onclose(src, "airoster")
+/mob/living/silicon/ai/verb/ai_crew()
+ set category = "AI Commands"
+ set name = "Crew Monitoring Console"
+ crewmonitor(src)
/mob/living/silicon/ai/proc/ai_call_shuttle()
set category = "AI Commands"
set name = "Call Emergency Shuttle"
@@ -331,7 +335,6 @@ var/list/ai_list = list()
H.attack_ai(src) //may as well recycle
else
src << "Unable to locate the holopad."
-
if (href_list["track"])
var/mob/target = locate(href_list["track"]) in mob_list
var/mob/living/silicon/ai/A = locate(href_list["track2"]) in mob_list
@@ -681,4 +684,3 @@ var/list/ai_list = list()
set name = "State Laws"
checklaws()
-