/tg/ style observer follow links (#2534)

Adopts the /tg/ style of ghost follow links. This is to make clicking them a less of a PITA when you're a ghost. All links tested as functional and properly formatted.
This commit is contained in:
skull132
2017-05-29 23:03:19 +03:00
committed by GitHub
parent 0ad3d4c189
commit c95cca4cd8
8 changed files with 20 additions and 15 deletions
+3 -3
View File
@@ -849,13 +849,13 @@ mob/dead/observer/MayRespawn(var/feedback = 0, var/respawn_type = null)
/mob/extra_ghost_link(var/atom/ghost)
if(client && eyeobj)
return "|<a href='byond://?src=\ref[ghost];track=\ref[eyeobj]'>eye</a>"
return "|<a href='byond://?src=\ref[ghost];track=\ref[eyeobj]'>\[E\]</a>"
/mob/dead/observer/extra_ghost_link(var/atom/ghost)
if(mind && mind.current)
return "|<a href='byond://?src=\ref[ghost];track=\ref[mind.current]'>body</a>"
return "|<a href='byond://?src=\ref[ghost];track=\ref[mind.current]'>\[B\]</a>"
/proc/ghost_follow_link(var/atom/target, var/atom/ghost)
if((!target) || (!ghost)) return
. = "<a href='byond://?src=\ref[ghost];track=\ref[target]'>follow</a>"
. = "<a href='byond://?src=\ref[ghost];track=\ref[target]'>\[F\]</a>"
. += target.extra_ghost_link(ghost)
+5 -5
View File
@@ -55,7 +55,7 @@
return
if(speaker_name != speaker.real_name && speaker.real_name)
speaker_name = "[speaker.real_name] ([speaker_name])"
track = "([ghost_follow_link(speaker, src)]) "
track = "[ghost_follow_link(speaker, src)] "
if(client.prefs.toggles & CHAT_GHOSTEARS && speaker in view(src))
message = "<b>[message]</b>"
@@ -67,9 +67,9 @@
src << "<span class='name'>[speaker_name]</span>[alt_name] talks but you cannot hear \him."
else
if(language)
on_hear_say("<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [track][language.format_message(message, verb)]</span>")
on_hear_say("[track]<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [language.format_message(message, verb)]</span>")
else
on_hear_say("<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [track][verb], <span class='message'><span class='body'>\"[message]\"</span></span></span>")
on_hear_say("[track]<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [verb], <span class='message'><span class='body'>\"[message]\"</span></span></span>")
if (speech_sound && (get_dist(speaker, src) <= world.view && src.z == speaker.z))
var/turf/source = speaker? get_turf(speaker) : get_turf(src)
src.playsound_local(source, speech_sound, sound_vol, 1)
@@ -185,7 +185,7 @@
if(speaker != null)
if(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(speaker, src)])"
track = "[ghost_follow_link(speaker, src)] "
var/formatted
if(language)
@@ -205,7 +205,7 @@
src << "[part_a][speaker_name][part_b][formatted]"
/mob/dead/observer/on_hear_radio(part_a, speaker_name, track, part_b, formatted)
src << "[part_a][track][part_b][formatted]"
src << "[track][part_a][speaker_name][part_b][formatted]"
/mob/living/silicon/on_hear_radio(part_a, speaker_name, track, part_b, formatted)
var/time = say_timestamp()
+1 -1
View File
@@ -116,7 +116,7 @@
/mob/dead/observer/hear_broadcast(var/datum/language/language, var/mob/speaker, var/speaker_name, var/message)
if(speaker.name == speaker_name || antagHUD)
src << "<i><span class='game say'>[language.name], <span class='name'>[speaker_name]</span> ([ghost_follow_link(speaker, src)]) [message]</span></i>"
src << "[ghost_follow_link(speaker, src)] <i><span class='game say'>[language.name], <span class='name'>[speaker_name]</span> [message]</span></i>"
else
src << "<i><span class='game say'>[language.name], <span class='name'>[speaker_name]</span> [message]</span></i>"
+1 -1
View File
@@ -24,7 +24,7 @@
for (var/mob/M in dead_mob_list)
if(!istype(M,/mob/new_player) && !istype(M,/mob/living/carbon/brain)) //No meta-evesdropping
M.show_message("[message_start] ([ghost_follow_link(speaker, M)]) [message_body]", 2)
M.show_message("[ghost_follow_link(speaker, M)] [message_start] [message_body]", 2)
for (var/mob/living/S in living_mob_list)
+3 -3
View File
@@ -166,7 +166,7 @@ proc/getsensorlevel(A)
/mob/living/proc/is_wizard(exclude_apprentice = FALSE)
if(exclude_apprentice)
return mind && mind.assigned_role == "Space Wizard"
else
else
return mind && (mind.assigned_role == "Space Wizard" || mind.assigned_role == "Apprentice")
/*
@@ -543,7 +543,7 @@ proc/is_blind(A)
var/lname
if(subject)
if(subject != M)
follow = "([ghost_follow_link(subject, M)]) "
follow = "[ghost_follow_link(subject, M)] "
if(M.stat != DEAD && M.client.holder)
follow = "([admin_jump_link(subject, M.client.holder)]) "
var/mob/dead/observer/DM
@@ -559,7 +559,7 @@ proc/is_blind(A)
else // Everyone else (dead people who didn't ghost yet, etc.)
lname = name
lname = "<span class='name'>[lname]</span> "
M << "<span class='deadsay'>" + create_text_tag("dead", "DEAD:", M.client) + " [lname][follow][message]</span>"
M << "[follow] <span class='deadsay'>" + create_text_tag("dead", "DEAD:", M.client) + " [lname][message]</span>"
//Announces that a ghost has joined/left, mainly for use with wizards
/proc/announce_ghost_joinleave(O, var/joined_ghosts = 1, var/message = "")