Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions code/_globalvars/lists/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ GLOBAL_LIST_INIT(simple_animals, list(list(),list(),list(),list())) // One for e
GLOBAL_LIST_EMPTY(spidermobs) //all sentient spider mobs
GLOBAL_LIST_EMPTY(bots_list)
GLOBAL_LIST_EMPTY(aiEyes)
GLOBAL_LIST_EMPTY(suit_sensors_list) //all people with suit sensors on
GLOBAL_LIST_EMPTY(nanite_sensors_list) //app people with nanite monitoring program
GLOBAL_LIST_EMPTY(new_player_list) //all /mob/dead/new_player, in theory all should have clients and those that don't are in the process of spawning and get deleted when done.
///underages who have been reported to security for trying to buy things they shouldn't, so they can't spam
GLOBAL_LIST_EMPTY(narcd_underages)
Expand Down
60 changes: 10 additions & 50 deletions code/game/machinery/computer/crew.dm
Original file line number Diff line number Diff line change
Expand Up @@ -128,80 +128,40 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new)
var/pos_y
var/life_status

for(var/i in GLOB.nanite_sensors_list)
var/mob/living/carbon/human/H = i
for(var/mob/living/carbon/human/H in GLOB.carbon_list)
var/nanite_sensors = FALSE
if(H in SSnanites.nanite_monitored_mobs)
nanite_sensors = TRUE
// Check if their z-level is correct and if they are wearing a uniform.
// Accept H.z==0 as well in case the mob is inside an object.

if(((H.z == 0 || H.z == z || (is_station_level(H.z) && is_station_level(z))) && (nanite_sensors)))

pos = H.z == 0 || (nanite_sensors) ? get_turf(H) : null

// Special case: If the mob is inside an object confirm the z-level on turf level.
if (H.z == 0 && (!pos || pos.z != z))
continue

I = H.wear_id ? H.wear_id.GetID() : null

if (I)
name = I.registered_name
assignment = I.assignment
ijob = jobs[I.assignment]
else
name = "Unknown"
assignment = ""
ijob = 80

life_status = (!H.stat ? TRUE : FALSE)

oxydam = round(H.getOxyLoss(),1)
toxdam = round(H.getToxLoss(),1)
burndam = round(H.getFireLoss(),1)
brutedam = round(H.getBruteLoss(),1)

if (!pos)
pos = get_turf(H)
area = get_area_name(H, TRUE)
pos_x = pos.x
pos_y = pos.y

results[++results.len] = list("name" = name, "assignment" = assignment, "ijob" = ijob, "life_status" = life_status, "oxydam" = oxydam, "toxdam" = toxdam, "burndam" = burndam, "brutedam" = brutedam, "area" = area, "pos_x" = pos_x, "pos_y" = pos_y, "can_track" = H.can_track(null))

for(var/i in GLOB.suit_sensors_list)
var/mob/living/carbon/human/H = i
// Check if their z-level is correct and if they are wearing a uniform.
// Accept H.z==0 as well in case the mob is inside an object. Nanite sensors come before normal sensors.
if((H.z == 0 || H.z == z || (is_station_level(H.z) && is_station_level(z))) && (istype(H.w_uniform, /obj/item/clothing/under)) && !(H in GLOB.nanite_sensors_list))
if ((H.z == 0 || H.z == z) && (istype(H.w_uniform, /obj/item/clothing/under) || nanite_sensors))
U = H.w_uniform

// Are the suit sensors on?
if ((U.has_sensor > 0) && U.sensor_mode)
pos = H.z == 0 || (U.sensor_mode == SENSOR_COORDS) ? get_turf(H) : null
if (nanite_sensors || ((U.has_sensor > 0) && U.sensor_mode))
pos = H.z == 0 || (nanite_sensors || U.sensor_mode == SENSOR_COORDS) ? get_turf(H) : null

// Special case: If the mob is inside an object confirm the z-level on turf level.
if (H.z == 0 && (!pos || pos.z != z))
if (H.z == 0 && (!pos || (pos.z != z) && !(is_station_level(pos.z) && is_station_level(z))))
continue

I = H.wear_id ? H.wear_id.GetID() : null

if (I)
name = I.registered_name
assignment = I.originalassignment
ijob = jobs[I.originalassignment]
assignment = I.assignment
ijob = jobs[I.assignment]
else
name = "Unknown"
assignment = ""
ijob = 80

if (U.sensor_mode >= SENSOR_LIVING)
if (nanite_sensors || U.sensor_mode >= SENSOR_LIVING)
life_status = (!H.stat ? TRUE : FALSE)
else
life_status = null

if (U.sensor_mode >= SENSOR_VITALS)
if (nanite_sensors || U.sensor_mode >= SENSOR_VITALS)
oxydam = round(H.getOxyLoss(),1)
toxdam = round(H.getToxLoss(),1)
burndam = round(H.getFireLoss(),1)
Expand All @@ -212,7 +172,7 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new)
burndam = null
brutedam = null

if (U.sensor_mode >= SENSOR_COORDS)
if (nanite_sensors || U.sensor_mode >= SENSOR_COORDS)
if (!pos)
pos = get_turf(H)
area = get_area_name(H, TRUE)
Expand Down
16 changes: 1 addition & 15 deletions code/modules/clothing/clothing.dm
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ BLIND // can't see anything
to_chat(usr, "<span class='warning'>You have moved too far away!</span>")
return
sensor_mode = modes.Find(switchMode) - 1
set_sensor_glob()

if (src.loc == usr)
switch(sensor_mode)
if(0)
Expand Down Expand Up @@ -336,17 +336,3 @@ BLIND // can't see anything
deconstruct(FALSE)
else
..()

/obj/item/clothing/proc/set_sensor_glob()
var/mob/living/carbon/human/H = src.loc

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 && U.has_sensor != BROKEN_SENSORS)
GLOB.suit_sensors_list |= H

else
GLOB.suit_sensors_list -= H

else
GLOB.suit_sensors_list -= H
2 changes: 0 additions & 2 deletions code/modules/clothing/under/_under.dm
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,6 @@
attached_accessory.on_uniform_equip(src, user)
if(attached_accessory.above_suit)
H.update_inv_wear_suit()
set_sensor_glob()

/obj/item/clothing/under/dropped(mob/user)
if(attached_accessory)
Expand All @@ -110,7 +109,6 @@
var/mob/living/carbon/human/H = user
if(attached_accessory.above_suit)
H.update_inv_wear_suit()
set_sensor_glob()
..()

/obj/item/clothing/under/proc/attach_accessory(obj/item/I, mob/user, notifyAttach = 1)
Expand Down
8 changes: 0 additions & 8 deletions code/modules/research/nanites/nanite_programs/utility.dm
Original file line number Diff line number Diff line change
Expand Up @@ -82,19 +82,11 @@
/datum/nanite_program/monitoring/enable_passive_effect()
. = ..()
SSnanites.nanite_monitored_mobs |= host_mob
if(ishuman(host_mob))
var/mob/living/carbon/human/H = host_mob
if(!(H in GLOB.nanite_sensors_list))
GLOB.nanite_sensors_list |= H
host_mob.hud_set_nanite_indicator()

/datum/nanite_program/monitoring/disable_passive_effect()
. = ..()
SSnanites.nanite_monitored_mobs -= host_mob
if(ishuman(host_mob))
var/mob/living/carbon/human/H = host_mob
GLOB.nanite_sensors_list -= H

host_mob.hud_set_nanite_indicator()

/datum/nanite_program/triggered/self_scan
Expand Down