AI can now track its cyborgs who speak on robotic talk.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3526 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
VivianFoxfoot@gmail.com
2012-04-29 00:00:54 +00:00
parent 4b9e382170
commit 05ebff4f54
4 changed files with 75 additions and 32 deletions
+6 -3
View File
@@ -1,7 +1,10 @@
/mob/living/proc/binarycheck()
if (istype(src, /mob/living/silicon/pai)) return
if (issilicon(src)) return 1
if (!ishuman(src)) return
if (istype(src, /mob/living/silicon/pai))
return
if (issilicon(src))
return 1
if (!ishuman(src))
return
var/mob/living/carbon/human/H = src
if (H.ears)
var/obj/item/device/radio/headset/dongle = H.ears
+24
View File
@@ -265,6 +265,30 @@
if (href_list["laws"]) // With how my law selection code works, I changed statelaws from a verb to a proc, and call it through my law selection panel. --NeoFite
statelaws()
if (href_list["track"])
var/mob/target = locate(href_list["track"])
var/mob/living/silicon/ai/A = locate(href_list["track2"])
if(A && target)
A.ai_actual_track(target)
return
else if (href_list["faketrack"])
var/mob/target = locate(href_list["track"])
var/mob/living/silicon/ai/A = locate(href_list["track2"])
if(A && target)
A:cameraFollow = target
A << text("Now tracking [] on camera.", target.name)
if (usr.machine == null)
usr.machine = usr
while (usr:cameraFollow == target)
usr << "Target is not on or near any active cameras on the station. We'll check again in 5 seconds (unless you use the cancel-camera verb)."
sleep(40)
continue
return
return
/mob/living/silicon/ai/meteorhit(obj/O as obj)
+14 -3
View File
@@ -79,12 +79,23 @@
var/message_a = say_quote(message)
var/rendered = "<i><span class='game say'>Robotic Talk, <span class='name'>[name]</span> <span class='message'>[message_a]</span></span></i>"
for (var/mob/living/S in world)
if(!S.stat)
if(S.robot_talk_understand && (S.robot_talk_understand == robot_talk_understand))
S.show_message(rendered, 2)
if(S.robot_talk_understand && (S.robot_talk_understand == robot_talk_understand)) // This SHOULD catch everything caught by the one below, but I'm not going to change it.
if(istype(S , /mob/living/silicon/ai))
var/renderedAI = "<i><span class='game say'>Robotic Talk, <a href='byond://?src=\ref[S];track2=\ref[S];track=\ref[src]'><span class='name'>[name]</span></a> <span class='message'>[message_a]</span></span></i>"
S.show_message(renderedAI, 2)
else
S.show_message(rendered, 2)
else if (S.binarycheck())
S.show_message(rendered, 2)
if(istype(S , /mob/living/silicon/ai))
var/renderedAI = "<i><span class='game say'>Robotic Talk, <a href='byond://?src=\ref[S];track2=\ref[S];track=\ref[src]'><span class='name'>[name]</span></a> <span class='message'>[message_a]</span></span></i>"
S.show_message(renderedAI, 2)
else
S.show_message(rendered, 2)
var/list/listening = hearers(1, src)
listening -= src