Merge pull request #4203 from MrPerson/track_bugs

AI Tracking bugfixes
This commit is contained in:
Alex
2014-07-25 09:23:54 +01:00
3 changed files with 28 additions and 29 deletions
+2 -2
View File
@@ -297,13 +297,13 @@
if("Show Camera List")
if(isAI(usr))
var/mob/living/silicon/ai/AI = usr
var/camera = input(AI) in AI.get_camera_list()
var/camera = input(AI, "Choose which camera you want to view", "Cameras") as null|anything in AI.get_camera_list()
AI.ai_camera_list(camera)
if("Track With Camera")
if(isAI(usr))
var/mob/living/silicon/ai/AI = usr
var/target_name = input(AI) in AI.trackable_mobs()
var/target_name = input(AI, "Choose who you want to track", "Tracking") as null|anything in AI.trackable_mobs()
AI.ai_camera_track(target_name)
if("Toggle Camera Light")
+25 -26
View File
@@ -1,5 +1,7 @@
/mob/living/silicon/ai/proc/get_camera_list()
track.cameras.Cut()
if(src.stat == 2)
return
@@ -10,32 +12,25 @@
camera_sort(L)
var/list/T = list()
T["Cancel"] = "Cancel"
for (var/obj/machinery/camera/C in L)
var/list/tempnetwork = C.network&src.network
if (tempnetwork.len)
T[text("[][]", C.c_tag, (C.can_use() ? null : " (Deactivated)"))] = C
track = new()
track.cameras = T
return T
/mob/living/silicon/ai/proc/ai_camera_list(var/camera in get_camera_list())
if(src.stat == 2)
src << "You can't list the cameras because you are dead!"
return
if (!camera || camera == "Cancel")
/mob/living/silicon/ai/proc/ai_camera_list(var/camera)
if (!camera)
return 0
var/obj/machinery/camera/C = track.cameras[camera]
track = null
src.eyeobj.setLoc(C)
return
// Used to allow the AI is write in mob names/camera name from the CMD line.
/datum/trackable
var/list/names = list()
var/list/namecounts = list()
@@ -45,10 +40,14 @@
/mob/living/silicon/ai/proc/trackable_mobs()
track.names.Cut()
track.namecounts.Cut()
track.humans.Cut()
track.others.Cut()
if(usr.stat == 2)
return list()
var/datum/trackable/TB = new()
for(var/mob/living/M in mob_list)
// Easy checks first.
// Don't detect mobs on Centcom. Since the wizard den is on Centcom, we only need this.
@@ -82,30 +81,30 @@
continue
var/name = M.name
if (name in TB.names)
TB.namecounts[name]++
name = text("[] ([])", name, TB.namecounts[name])
if (name in track.names)
track.namecounts[name]++
name = text("[] ([])", name, track.namecounts[name])
else
TB.names.Add(name)
TB.namecounts[name] = 1
track.names.Add(name)
track.namecounts[name] = 1
if(human)
TB.humans[name] = M
track.humans[name] = M
else
TB.others[name] = M
track.others[name] = M
var/list/targets = sortList(track.humans) + sortList(track.others)
var/list/targets = sortList(TB.humans) + sortList(TB.others)
src.track = TB
return targets
/mob/living/silicon/ai/proc/ai_camera_track(var/target_name in trackable_mobs())
if(src.stat == 2)
src << "You can't track with camera because you are dead!"
return
/mob/living/silicon/ai/verb/ai_camera_track(var/target_name as null|anything in trackable_mobs())
set name = "track"
set hidden = 1 //Don't display it on the verb lists. This verb exists purely so you can type "track Oldman Robustin" and follow his ass
if(!target_name)
src.cameraFollow = null
return
var/mob/target = (isnull(track.humans[target_name]) ? track.others[target_name] : track.humans[target_name])
src.track = null
ai_actual_track(target)
/mob/living/silicon/ai/proc/ai_actual_track(mob/living/target as mob)
+1 -1
View File
@@ -48,7 +48,7 @@ var/list/ai_list = list()
var/camera_light_on = 0
var/list/obj/machinery/camera/lit_cameras = list()
var/datum/trackable/track = null
var/datum/trackable/track = new()
var/last_paper_seen = null
var/can_shunt = 1