mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Expanded ghost following.
Ghosts can now follow the Eye of a speaking mob, if it has one, or the body of someone who has died. Partial port of https://github.com/ParadiseSS13/Paradise/pull/1151.
This commit is contained in:
@@ -681,3 +681,16 @@ mob/dead/observer/MayRespawn(var/feedback = 0)
|
|||||||
src << "<span class='warning'>antagHUD restrictions prevent you from respawning.</span>"
|
src << "<span class='warning'>antagHUD restrictions prevent you from respawning.</span>"
|
||||||
return 0
|
return 0
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
/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>"
|
||||||
|
|
||||||
|
if(istype(target, /mob/dead/observer))
|
||||||
|
var/mob/dead/observer/O = target
|
||||||
|
if(O.mind && O.mind.current)
|
||||||
|
. += "|<a href='byond://?src=\ref[ghost];track=\ref[O.mind.current]'>body</a>"
|
||||||
|
else if(istype(target, /mob)) // Eye follow links
|
||||||
|
var/mob/M = target
|
||||||
|
if(M.client && M.eyeobj) // No point following clientless eyes
|
||||||
|
. += "|<a href='byond://?src=\ref[ghost];track=\ref[M.eyeobj]'>eye</a>"
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
return
|
return
|
||||||
if(speaker_name != speaker.real_name && speaker.real_name)
|
if(speaker_name != speaker.real_name && speaker.real_name)
|
||||||
speaker_name = "[speaker.real_name] ([speaker_name])"
|
speaker_name = "[speaker.real_name] ([speaker_name])"
|
||||||
track = "(<a href='byond://?src=\ref[src];track=\ref[speaker]'>follow</a>) "
|
track = "([ghost_follow_link(speaker, src)]) "
|
||||||
if(client.prefs.toggles & CHAT_GHOSTEARS && speaker in view(src))
|
if(client.prefs.toggles & CHAT_GHOSTEARS && speaker in view(src))
|
||||||
message = "<b>[message]</b>"
|
message = "<b>[message]</b>"
|
||||||
|
|
||||||
@@ -180,7 +180,7 @@
|
|||||||
if(istype(src, /mob/dead/observer))
|
if(istype(src, /mob/dead/observer))
|
||||||
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.
|
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])"
|
speaker_name = "[speaker.real_name] ([speaker_name])"
|
||||||
track = "[speaker_name] (<a href='byond://?src=\ref[src];track=\ref[speaker]'>follow</a>)"
|
track = "[speaker_name] ([ghost_follow_link(speaker, src)])"
|
||||||
|
|
||||||
var/formatted
|
var/formatted
|
||||||
if(language)
|
if(language)
|
||||||
|
|||||||
@@ -555,7 +555,7 @@ proc/is_blind(A)
|
|||||||
var/lname
|
var/lname
|
||||||
if(subject)
|
if(subject)
|
||||||
if(subject != M)
|
if(subject != M)
|
||||||
follow = "(<a href='byond://?src=\ref[M];track=\ref[subject]'>follow</a>) "
|
follow = "([ghost_follow_link(subject, M)]) "
|
||||||
if(M.stat != DEAD && M.client.holder)
|
if(M.stat != DEAD && M.client.holder)
|
||||||
follow = "(<a href='?src=\ref[M.client.holder];adminplayerobservejump=\ref[subject]'>JMP</a>) "
|
follow = "(<a href='?src=\ref[M.client.holder];adminplayerobservejump=\ref[subject]'>JMP</a>) "
|
||||||
var/mob/dead/observer/DM
|
var/mob/dead/observer/DM
|
||||||
|
|||||||
Reference in New Issue
Block a user