From 4d287509caa31786481fd897410e8722186c2a7f Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Sun, 29 Sep 2013 20:59:43 -0400 Subject: [PATCH] New follow system for observers --- code/modules/mob/dead/observer/observer.dm | 31 +++++++++++++++++++++ code/modules/mob/living/carbon/alien/say.dm | 7 +++-- code/modules/mob/living/say.dm | 21 ++++++++++++-- code/modules/mob/living/silicon/say.dm | 10 ++++++- code/modules/mob/say.dm | 9 +++--- 5 files changed, 68 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index e2789e446ab..95d2ab907f6 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -296,3 +296,34 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp dat += data_core.get_manifest() src << browse(dat, "window=manifest;size=370x420;can_close=1") + +//BEGIN TELEPORT HREF CODE +/mob/dead/observer/Topic(href, href_list) + if(usr != src) + return + ..() + + if (href_list["follow"]) + var/mob/target = locate(href_list["follow"]) in mob_list + var/mob/A = usr; + A << "You are now following [target]" + //var/mob/living/silicon/ai/A = locate(href_list["track2"]) in mob_list + if(target && target != usr) + following = target + spawn(0) + var/turf/pos = get_turf(A) + while(A.loc == pos) + + var/turf/T = get_turf(target) + if(!T) + break + if(following != target) + break + if(!client) + break + A.loc = T + pos = A.loc + sleep(15) + following = null + ..() +//END TELEPORT HREF CODE \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/say.dm b/code/modules/mob/living/carbon/alien/say.dm index 28947ac55ee..9604a50559d 100644 --- a/code/modules/mob/living/carbon/alien/say.dm +++ b/code/modules/mob/living/carbon/alien/say.dm @@ -60,9 +60,10 @@ message = say_quote(message) rendered = "Hivemind, [name] [message_a]" - + var/rendered2 = null for (var/mob/M in player_list) if (istype(M, /mob/new_player)) continue - if (M.stat > 1) - M.show_message(rendered, 2) \ No newline at end of file + if (M.stat > 1 && istype(M, /mob/dead/observer)) + rendered2 = "Hivemind, [name] (Follow) [message_a]" + M.show_message(rendered2, 2) \ No newline at end of file diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index d7021a22b49..0317983e27e 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -359,7 +359,16 @@ var/list/department_radio_keys = list( message_a = "[message_a]" rendered = "[GetVoice()][alt_name] [message_a]" - for (var/M in heard_a) + var/rendered2 = null + + for (var/mob/M in heard_a) + //BEGIN TELEPORT CHANGES + if(!istype(M, /mob/new_player)) + if(M && M.stat == DEAD) + rendered2 = "[GetVoice()] [alt_name] (Follow) [message_a]" + M:show_message(rendered2, 2) + continue + //END CHANGES if(hascall(M,"show_message")) var/deaf_message = "" var/deaf_type = 1 @@ -381,9 +390,17 @@ var/list/department_radio_keys = list( message_b = "[message_b]" rendered = "[name][alt_name] [message_b]" //Voice_name isn't too useful. You'd be able to tell who was talking presumably. - + var/rendered2 = null for (var/M in heard_b) + var/mob/MM + if(istype(M, /mob)) + MM = M + if(!istype(MM, /mob/new_player) && MM) + if(MM && MM.stat == DEAD) + rendered2 = "[voice_name] (Follow) [message_b]" + MM:show_message(rendered2, 2) + continue if(hascall(M,"show_message")) M:show_message(rendered, 2) M << speech_bubble diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 7c63628ced4..766ddcbcb55 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -108,6 +108,9 @@ if(istype(S , /mob/living/silicon/ai)) var/renderedAI = "Robotic Talk, [name] [message_a]" S.show_message(renderedAI, 2) + else if(istype(S , /mob/dead/observer) && S.stat == DEAD) + var/rendered2 = "Robotic Talk, [name] (Follow) [message_a]" + S.show_message(rendered2, 2) else S.show_message(rendered, 2) @@ -116,6 +119,9 @@ if(istype(S , /mob/living/silicon/ai)) var/renderedAI = "Robotic Talk, [name] [message_a]" S.show_message(renderedAI, 2) + else if(istype(S , /mob/dead/observer) && S.stat == DEAD) + var/rendered2 = "Robotic Talk, [name] (Follow) [message_a]" + S.show_message(rendered2, 2) else S.show_message(rendered, 2) @@ -142,8 +148,10 @@ message = say_quote(message) - rendered = "Robotic Talk, [name] [message_a]" +// rendered = "Robotic Talk, [name] [message_a]" + rendered = null for (var/mob/M in dead_mob_list) if(!istype(M,/mob/new_player) && !istype(M,/mob/living/carbon/brain)) //No meta-evesdropping + rendered = "Robotic Talk, [name] (Follow) [message_a]" M.show_message(rendered, 2) \ No newline at end of file diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 75cbd582f1e..246deeab16f 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -49,16 +49,17 @@ alt_name = " (died as [real_name])" message = src.say_quote(message) - var/rendered = "DEAD: [name][alt_name] [message]" - + //var/rendered = "DEAD: [name][alt_name] [message]" + var/rendered2 = null//edited for(var/mob/M in player_list) + rendered2 = "DEAD: [name][alt_name] (Follow) [message]"//edited if(istype(M, /mob/new_player)) continue if(M.client && M.client.holder && (M.client.holder.rights & R_ADMIN|R_MOD) && (M.client.prefs.toggles & CHAT_DEAD)) // Show the message to admins/mods with deadchat toggled on - M << rendered //Admins can hear deadchat, if they choose to, no matter if they're blind/deaf or not. + M << rendered2 //Admins can hear deadchat, if they choose to, no matter if they're blind/deaf or not. else if(M.client && M.stat == DEAD && (M.client.prefs.toggles & CHAT_DEAD)) // Show the message to regular ghosts with deadchat toggled on. - M.show_message(rendered, 2) //Takes into account blindness and such. + M.show_message(rendered2, 2) //Takes into account blindness and such. return /mob/proc/say_understands(var/mob/other,var/datum/language/speaking = null)