New follow system for observers

This commit is contained in:
ZomgPonies
2013-09-29 20:59:43 -04:00
parent ac87641781
commit 4d287509ca
5 changed files with 68 additions and 10 deletions
@@ -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
+4 -3
View File
@@ -60,9 +60,10 @@
message = say_quote(message)
rendered = "<i><span class='game say'>Hivemind, <span class='name'>[name]</span> <span class='message'>[message_a]</span></span></i>"
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)
if (M.stat > 1 && istype(M, /mob/dead/observer))
rendered2 = "<i><span class='game say'>Hivemind, <span class='name'>[name]</span> <a href='byond://?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_a]</span></span></i>"
M.show_message(rendered2, 2)
+19 -2
View File
@@ -359,7 +359,16 @@ var/list/department_radio_keys = list(
message_a = "<i>[message_a]</i>"
rendered = "<span class='game say'><span class='name'>[GetVoice()]</span>[alt_name] <span class='message'>[message_a]</span></span>"
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 = "<span class='game say'><span class='name'>[GetVoice()]</span></span> [alt_name] <a href='byond://?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_a]</span></span>"
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 = "<i>[message_b]</i>"
rendered = "<span class='game say'><span class='name'>[name]</span>[alt_name] <span class='message'>[message_b]</span></span>" //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 = "<span class='game say'><span class='name'>[voice_name]</span></span> <a href='byond://?src=\ref[MM];follow2=\ref[MM];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_b]</span></span>"
MM:show_message(rendered2, 2)
continue
if(hascall(M,"show_message"))
M:show_message(rendered, 2)
M << speech_bubble
+9 -1
View File
@@ -108,6 +108,9 @@
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 if(istype(S , /mob/dead/observer) && S.stat == DEAD)
var/rendered2 = "<i><span class='game say'>Robotic Talk, <span class='name'>[name]</span> <a href='byond://?src=\ref[S];follow2=\ref[S];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_a]</span></span></i>"
S.show_message(rendered2, 2)
else
S.show_message(rendered, 2)
@@ -116,6 +119,9 @@
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 if(istype(S , /mob/dead/observer) && S.stat == DEAD)
var/rendered2 = "<i><span class='game say'>Robotic Talk, <span class='name'>[name]</span> <a href='byond://?src=\ref[S];follow2=\ref[S];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_a]</span></span></i>"
S.show_message(rendered2, 2)
else
S.show_message(rendered, 2)
@@ -142,8 +148,10 @@
message = say_quote(message)
rendered = "<i><span class='game say'>Robotic Talk, <span class='name'>[name]</span> <span class='message'>[message_a]</span></span></i>"
// rendered = "<i><span class='game say'>Robotic Talk, <span class='name'>[name]</span> <span class='message'>[message_a]</span></span></i>"
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 = "<i><span class='game say'>Robotic Talk, <span class='name'>[name]</span> <a href='byond://?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_a]</span></span></i>"
M.show_message(rendered, 2)
+5 -4
View File
@@ -49,16 +49,17 @@
alt_name = " (died as [real_name])"
message = src.say_quote(message)
var/rendered = "<span class='game deadsay'><span class='prefix'>DEAD:</span> <span class='name'>[name]</span>[alt_name] <span class='message'>[message]</span></span>"
//var/rendered = "<span class='game deadsay'><span class='prefix'>DEAD:</span> <span class='name'>[name]</span>[alt_name] <span class='message'>[message]</span></span>"
var/rendered2 = null//edited
for(var/mob/M in player_list)
rendered2 = "<span class='game deadsay'><span class='prefix'>DEAD:</span> <span class='name'>[name]</span>[alt_name] <a href='byond://?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>(Follow)</a> <span class='message'>[message]</span></span>"//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)