AI tracking update

This commit is contained in:
Markolie
2015-08-17 19:05:09 +02:00
parent fe1fecca11
commit 8822cbba09
7 changed files with 60 additions and 50 deletions
+13 -13
View File
@@ -95,7 +95,7 @@
if(!(language && (language.flags & INNATE))) // skip understanding checks for INNATE languages
if(!say_understands(speaker,language))
if(istype(speaker,/mob/living/simple_animal))
if(isanimal(speaker))
var/mob/living/simple_animal/S = speaker
if(S.speak && S.speak.len)
message = pick(S.speak)
@@ -111,7 +111,8 @@
message = stars(message)
var/speaker_name = "unknown"
if(speaker) speaker_name = speaker.name
if(speaker)
speaker_name = speaker.name
if(vname)
speaker_name = vname
@@ -120,18 +121,17 @@
var/changed_voice
if(istype(src, /mob/living/silicon/ai) && !hard_to_hear)
if(isAI(src) && !hard_to_hear)
var/jobname // the mob's "job"
var/mob/living/carbon/human/impersonating //The crewmember being impersonated, if any.
if (ishuman(speaker))
var/mob/living/carbon/human/H = speaker
if((H.wear_id && istype(H.wear_id,/obj/item/weapon/card/id/syndicate)) && (H.wear_mask && istype(H.wear_mask,/obj/item/clothing/mask/gas/voice)))
var/obj/item/weapon/card/id/id = H.wear_id
if((istype(id) && id.is_untrackable()) && H.HasVoiceChanger())
changed_voice = 1
var/mob/living/carbon/human/I = locate(speaker_name)
if(I)
impersonating = I
jobname = impersonating.get_assignment()
@@ -141,28 +141,28 @@
jobname = H.get_assignment()
else if (iscarbon(speaker)) // Nonhuman carbon mob
jobname = "No id"
jobname = "No ID"
else if (isAI(speaker))
jobname = "AI"
else if (isrobot(speaker))
jobname = "Cyborg"
else if (istype(speaker, /mob/living/silicon/pai))
else if (ispAI(speaker))
jobname = "Personal AI"
else
jobname = "Unknown"
if(changed_voice)
if(impersonating)
track = "<a href='byond://?src=\ref[src];trackname=[html_encode(speaker_name)];track=\ref[impersonating]'>[speaker_name] ([jobname])</a>"
track = "<a href='byond://?src=\ref[src];track=\ref[impersonating]'>[speaker_name] ([jobname])</a>"
else
track = "[speaker_name] ([jobname])"
else
if(istype(follow_target, /obj/machinery/bot) && isAI(src))
track = "<a href='byond://?src=\ref[src];track2=\ref[src];trackbot=\ref[follow_target]'>[speaker_name] ([jobname])</a>"
if(istype(follow_target, /obj/machinery/bot))
track = "<a href='byond://?src=\ref[src];trackbot=\ref[follow_target]'>[speaker_name] ([jobname])</a>"
else
track = "<a href='byond://?src=\ref[src];trackname=[html_encode(speaker_name)];track=\ref[speaker]'>[speaker_name] ([jobname])</a>"
track = "<a href='byond://?src=\ref[src];track=\ref[speaker]'>[speaker_name] ([jobname])</a>"
if(istype(src, /mob/dead/observer))
if(isobserver(src))
if(speaker && (speaker_name != speaker.real_name) && !isAI(speaker)) //Announce computer and various stuff that broadcasts doesn't use it's real name but AI's can't pretend to be other mobs.
speaker_name = "[speaker.real_name] ([speaker_name])"
track = "[speaker_name] ([ghost_follow_link(follow_target, ghost=src)])"
+1 -1
View File
@@ -468,7 +468,7 @@
if(drone_only && !istype(S,/mob/living/silicon/robot/drone))
continue
else if(istype(S , /mob/living/silicon/ai))
message_start = "<i><span class='game say'>[name], <a href='byond://?src=\ref[S];track2=\ref[S];track=\ref[speaker];trackname=[html_encode(speaker.name)]'><span class='name'>[speaker.name]</span></a>"
message_start = "<i><span class='game say'>[name], <a href='byond://?src=\ref[S];track=\ref[speaker]'><span class='name'>[speaker.name]</span></a>"
else if (!S.binarycheck())
continue
+11 -5
View File
@@ -207,16 +207,22 @@
// return 0
return ..()
/mob/living/carbon/human/GetVoice()
var/voice_sub
/mob/living/carbon/human/proc/HasVoiceChanger()
for(var/obj/item/gear in list(wear_mask,wear_suit,head))
if(!gear)
continue
var/obj/item/voice_changer/changer = locate() in gear
if(changer && changer.active && changer.voice)
voice_sub = changer.voice
return changer
return 0
/mob/living/carbon/human/GetVoice()
var/voice_sub
var/has_changer = HasVoiceChanger()
if(has_changer)
voice_sub = has_changer
if(voice_sub)
return voice_sub
if(mind && mind.changeling && mind.changeling.mimicing)
+8 -10
View File
@@ -502,18 +502,18 @@ var/list/ai_verbs_default = list(
if (href_list["track"])
var/mob/target = locate(href_list["track"]) in mob_list
if(target && (!istype(target, /mob/living/carbon/human) || html_decode(href_list["trackname"]) == target:get_face_name()))
if(target && trackable(target))
ai_actual_track(target)
else
src << "\red System error. Cannot locate [html_decode(href_list["trackname"])]."
src << "<span class='warning'>Target is not on or near any active cameras on the station.</span>"
return
if (href_list["trackbot"])
var/obj/machinery/bot/target = locate(href_list["trackbot"]) in aibots
var/mob/living/silicon/ai/A = locate(href_list["track2"]) in mob_list
if(A && target)
A.ai_actual_track(target)
if(target && trackable(target))
ai_actual_track(target)
else
src << "<span class='warning'>Target is not on or near any active cameras on the station.</span>"
return
if (href_list["callbot"]) //Command a bot to move to a selected location.
@@ -925,10 +925,8 @@ var/list/ai_verbs_default = list(
spawn(0)
if(istype(target, /mob/living/carbon/human))
var/mob/living/carbon/human/H = target
if(H.wear_id && istype(H.wear_id.GetID(), /obj/item/weapon/card/id/syndicate))
src << "Unable to locate an airlock"
return
if(H.wear_id && istype(H.wear_id.GetID(), /obj/item/weapon/card/id/syndicate))
var/obj/item/weapon/card/id/id = H.wear_id
if(istype(id) && id.is_untrackable())
src << "Unable to locate an airlock"
return
if(H.digitalcamo)