soft refs

This commit is contained in:
Fox McCloud
2020-07-10 18:41:37 -04:00
parent 85abb6505b
commit 729e9b8922
7 changed files with 68 additions and 93 deletions
+18 -13
View File
@@ -169,11 +169,12 @@
poweralm = state
if(istype(source)) //Only report power alarms on the z-level where the source is located.
for(var/thing in cameras)
var/obj/machinery/camera/C = thing
if(state == 1)
C.network -= "Power Alarms"
else
C.network |= "Power Alarms"
var/obj/machinery/camera/C = locateUID(thing)
if(!QDELETED(C))
if(state == 1)
C.network -= "Power Alarms"
else
C.network |= "Power Alarms"
for(var/item in GLOB.silicon_mob_list)
var/mob/living/silicon/aiPlayer = item
@@ -206,8 +207,9 @@
if(danger_level == ATMOS_ALARM_DANGER)
for(var/thing in cameras)
var/obj/machinery/camera/C = thing
C.network |= "Atmosphere Alarms"
var/obj/machinery/camera/C = locateUID(thing)
if(!QDELETED(C))
C.network |= "Atmosphere Alarms"
for(var/item in GLOB.silicon_mob_list)
var/mob/living/silicon/aiPlayer = item
@@ -221,8 +223,9 @@
else if(atmosalm == ATMOS_ALARM_DANGER)
for(var/thing in cameras)
var/obj/machinery/camera/C = thing
C.network -= "Atmosphere Alarms"
var/obj/machinery/camera/C = locateUID(thing)
if(!QDELETED(C))
C.network -= "Atmosphere Alarms"
for(var/item in GLOB.silicon_mob_list)
var/mob/living/silicon/aiPlayer = item
aiPlayer.cancelAlarm("Atmosphere", src, source)
@@ -277,8 +280,9 @@
F.update_icon()
for(var/thing in cameras)
var/obj/machinery/camera/C = thing
C.network |= "Fire Alarms"
var/obj/machinery/camera/C = locateUID(thing)
if(!QDELETED(C))
C.network |= "Fire Alarms"
for(var/item in GLOB.alert_consoles)
var/obj/machinery/computer/station_alert/a = item
@@ -309,8 +313,9 @@
F.update_icon()
for(var/thing in cameras)
var/obj/machinery/camera/C = thing
C.network -= "Fire Alarms"
var/obj/machinery/camera/C = locateUID(thing)
if(!QDELETED(C))
C.network -= "Fire Alarms"
for(var/item in GLOB.silicon_mob_list)
var/mob/living/silicon/aiPlayer = item
+5 -5
View File
@@ -47,7 +47,7 @@
GLOB.cameranet.addCamera(src)
if(isturf(loc))
myArea = get_area(src)
LAZYADD(myArea.cameras, src)
LAZYADD(myArea.cameras, UID())
if(is_station_level(z) && prob(3) && !start_active)
toggle_cam(null, FALSE)
wires.CutAll()
@@ -67,7 +67,7 @@
GLOB.cameranet.removeCamera(src) //Will handle removal from the camera network and the chunks, so we don't need to worry about that
GLOB.cameranet.cameras -= src
if(isarea(myArea))
LAZYREMOVE(myArea.cameras, src)
LAZYREMOVE(myArea.cameras, UID())
var/area/ai_monitored/A = get_area(src)
if(istype(A))
A.motioncameras -= src
@@ -295,14 +295,14 @@
GLOB.cameranet.addCamera(src)
if(isturf(loc))
myArea = get_area(src)
LAZYADD(myArea.cameras, src)
LAZYADD(myArea.cameras, UID())
else
myArea = null
else
set_light(0)
GLOB.cameranet.removeCamera(src)
if(isarea(myArea))
LAZYREMOVE(myArea.cameras, src)
LAZYREMOVE(myArea.cameras, UID())
GLOB.cameranet.updateChunk(x, y, z)
var/change_msg = "deactivates"
if(status)
@@ -333,7 +333,7 @@
/obj/machinery/camera/proc/triggerCameraAlarm()
alarm_on = TRUE
for(var/mob/living/silicon/S in GLOB.silicon_mob_list)
S.triggerAlarm("Camera", get_area(src), list(src), src)
S.triggerAlarm("Camera", get_area(src), list(UID()), src)
/obj/machinery/camera/proc/cancelCameraAlarm()
alarm_on = FALSE
+1 -1
View File
@@ -56,7 +56,7 @@
return FALSE
for(var/mob/living/silicon/aiPlayer in GLOB.player_list)
if(status)
aiPlayer.triggerAlarm("Motion", get_area(src), list(src), src)
aiPlayer.triggerAlarm("Motion", get_area(src), list(UID()), src)
visible_message("<span class='warning'>A red light flashes on the [src]!</span>")
detectTime = -1
return TRUE
+6 -14
View File
@@ -47,7 +47,7 @@
return data
/obj/machinery/computer/station_alert/proc/triggerAlarm(class, area/A, O, obj/alarmsource)
/obj/machinery/computer/station_alert/proc/triggerAlarm(class, area/A, list/O, obj/alarmsource)
if(alarmsource.z != z)
return
if(stat & (BROKEN))
@@ -58,18 +58,10 @@
if(I == A.name)
var/list/alarm = L[I]
var/list/sources = alarm[3]
if(!(alarmsource in sources))
sources += alarmsource
if(!(alarmsource.UID() in sources))
sources += alarmsource.UID()
return TRUE
var/obj/machinery/camera/C = null
var/list/CL = null
if(O && islist(O))
CL = O
if(CL.len == 1)
C = CL[1]
else if(O && istype(O, /obj/machinery/camera))
C = O
L[A.name] = list(A, (C ? C : O), list(alarmsource))
L[A.name] = list(get_area_name(A, TRUE), O, list(alarmsource.UID()))
update_icon()
return TRUE
@@ -83,8 +75,8 @@
if(I == A.name)
var/list/alarm = L[I]
var/list/srcs = alarm[3]
if(origin in srcs)
srcs -= origin
if(origin.UID() in srcs)
srcs -= origin.UID()
if(srcs.len == 0)
cleared = TRUE
L -= I
+24 -30
View File
@@ -250,20 +250,19 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
if(L.len)
for(var/alarm in L)
var/list/alm = L[alarm]
var/area/A = alm[1]
var/area_name = alm[1]
var/C = alm[2]
var/list/sources = alm[3]
dat += "<NOBR>"
if(C && istype(C, /list))
if(C && islist(C))
var/dat2 = ""
for(var/obj/machinery/camera/I in C)
dat2 += text("[]<A HREF=?src=[UID()];switchcamera=[I.UID()]>[]</A>", (dat2=="") ? "" : " | ", I.c_tag)
dat += text("-- [] ([])", A.name, (dat2!="") ? dat2 : "No Camera")
else if(C && istype(C, /obj/machinery/camera))
var/obj/machinery/camera/Ctmp = C
dat += text("-- [] (<A HREF=?src=[UID()];switchcamera=[Ctmp.UID()]>[]</A>)", A.name, Ctmp.c_tag)
for(var/thing in C)
var/obj/machinery/camera/I = locateUID(thing)
if(!QDELETED(I))
dat2 += text("[]<A HREF=?src=[UID()];switchcamera=[thing]>[]</A>", (dat2 == "") ? "" : " | ", I.c_tag)
dat += text("-- [] ([])", area_name, (dat2 != "") ? dat2 : "No Camera")
else
dat += text("-- [] (No Camera)", A.name)
dat += text("-- [] (No Camera)", area_name)
if(sources.len > 1)
dat += text("- [] sources", sources.len)
dat += "</NOBR><BR>\n"
@@ -819,7 +818,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
Bot.call_bot(src, waypoint)
/mob/living/silicon/ai/triggerAlarm(class, area/A, O, obj/alarmsource)
/mob/living/silicon/ai/triggerAlarm(class, area/A, list/O, obj/alarmsource)
if(alarmsource.z != z)
return
if(stat == DEAD)
@@ -829,27 +828,22 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
if(I == A.name)
var/list/alarm = L[I]
var/list/sources = alarm[3]
if(!(alarmsource in sources))
sources += alarmsource
if(!(alarmsource.UID() in sources))
sources += alarmsource.UID()
return TRUE
var/obj/machinery/camera/C = null
var/list/CL = null
if(O && islist(O))
CL = O
if(CL.len == 1)
C = CL[1]
else if(O && istype(O, /obj/machinery/camera))
C = O
L[A.name] = list(A, (C ? C : O), list(alarmsource))
L[A.name] = list(get_area_name(A, TRUE), O, list(alarmsource.UID()))
if(O)
if(C && C.can_use())
queueAlarm("--- [class] alarm detected in [A.name]! (<A HREF=?src=[UID()];switchcamera=[C.UID()]>[C.c_tag]</A>)", class)
else if(CL && CL.len)
var/obj/machinery/camera/C = locateUID(O[1])
if(O.len == 1 && !QDELETED(C) && C.can_use())
queueAlarm("--- [class] alarm detected in [A.name]! (<A HREF=?src=[UID()];switchcamera=[O[1]]>[C.c_tag]</A>)", class)
else if(O && O.len)
var/foo = 0
var/dat2 = ""
for(var/obj/machinery/camera/I in CL)
dat2 += text("[]<A HREF=?src=[UID()];switchcamera=[I.UID()]>[]</A>", (!foo) ? "" : " | ", I.c_tag) //I'm not fixing this shit...
foo = 1
for(var/thing in O)
var/obj/machinery/camera/I = locateUID(thing)
if(!QDELETED(I))
dat2 += text("[]<A HREF=?src=[UID()];switchcamera=[thing]>[]</A>", (!foo) ? "" : " | ", I.c_tag) //I'm not fixing this shit...
foo = 1
queueAlarm(text ("--- [] alarm detected in []! ([])", class, A.name, dat2), class)
else
queueAlarm(text("--- [] alarm detected in []! (No Camera)", class, A.name), class)
@@ -866,8 +860,8 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
if(I == A.name)
var/list/alarm = L[I]
var/list/srcs = alarm[3]
if(origin in srcs)
srcs -= origin
if(origin.UID() in srcs)
srcs -= origin.UID()
if(srcs.len == 0)
cleared = TRUE
L -= I
@@ -882,7 +876,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
if(!tracking)
cameraFollow = null
if(!C || stat == DEAD) //C.can_use())
if(!C || QDELETED(C) || stat == DEAD) //C.can_use())
return FALSE
if(!eyeobj)
+8 -16
View File
@@ -557,9 +557,9 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
if(L.len)
for(var/alarm in L)
var/list/alm = L[alarm]
var/area/A = alm[1]
var/area_name = alm[1]
dat += "<NOBR>"
dat += text("-- [A.name]")
dat += text("-- [area_name]")
dat += "</NOBR><BR>\n"
else
dat += "-- All Systems Nominal<BR>\n"
@@ -630,7 +630,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
/mob/living/silicon/robot/InCritical()
return low_power_mode
/mob/living/silicon/robot/triggerAlarm(class, area/A, O, obj/alarmsource)
/mob/living/silicon/robot/triggerAlarm(class, area/A, list/O, obj/alarmsource)
if(alarmsource.z != z)
return
if(stat == DEAD)
@@ -640,18 +640,10 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
if(I == A.name)
var/list/alarm = L[I]
var/list/sources = alarm[3]
if(!(alarmsource in sources))
sources += alarmsource
if(!(alarmsource.UID() in sources))
sources += alarmsource.UID()
return TRUE
var/obj/machinery/camera/C = null
var/list/CL = null
if(O && islist(O))
CL = O
if(CL.len == 1)
C = CL[1]
else if(O && istype(O, /obj/machinery/camera))
C = O
L[A.name] = list(A, (C ? C : O), list(alarmsource))
L[A.name] = list(get_area_name(A, TRUE), O, list(alarmsource.UID()))
queueAlarm(text("--- [class] alarm detected in [A.name]!"), class)
return TRUE
@@ -662,8 +654,8 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
if(I == A.name)
var/list/alarm = L[I]
var/list/srcs = alarm[3]
if(origin in srcs)
srcs -= origin
if(origin.UID() in srcs)
srcs -= origin.UID()
if(srcs.len == 0)
cleared = 1
L -= I
@@ -39,7 +39,7 @@
return data
/datum/computer_file/program/alarm_monitor/proc/triggerAlarm(class, area/A, O, obj/alarmsource)
/datum/computer_file/program/alarm_monitor/proc/triggerAlarm(class, area/A, list/O, obj/alarmsource)
if(is_station_level(source.z))
if(!(A.type in GLOB.the_station_areas))
return
@@ -51,18 +51,10 @@
if(I == A.name)
var/list/alarm = L[I]
var/list/sources = alarm[3]
if(!(alarmsource in sources))
sources += alarmsource
if(!(alarmsource.UID() in sources))
sources += alarmsource.UID()
return TRUE
var/obj/machinery/camera/C = null
var/list/CL = null
if(O && islist(O))
CL = O
if(CL.len == 1)
C = CL[1]
else if(O && istype(O, /obj/machinery/camera))
C = O
L[A.name] = list(A, (C ? C : O), list(alarmsource))
L[A.name] = list(get_area_name(A, TRUE), O, list(alarmsource.UID()))
update_alarm_display()
return TRUE
@@ -78,8 +70,8 @@
if(!arealevelalarm) // the traditional behaviour
var/list/alarm = L[I]
var/list/srcs = alarm[3]
if(origin in srcs)
srcs -= origin
if(origin.UID() in srcs)
srcs -= origin.UID()
if(srcs.len == 0)
cleared = 1
L -= I