diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm
index 9fd72b04937..25e0c7e94a8 100644
--- a/code/datums/emotes.dm
+++ b/code/datums/emotes.dm
@@ -63,7 +63,7 @@
continue
var/T = get_turf(user)
if(isobserver(M) && M.client && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(T)))
- M.show_message("(Follow) " + msg)
+ M.show_message(formatFollow(user) + " " + msg)
if (user.client && M?.client?.prefs.mob_chat_on_map && get_dist(M, user) < M?.client.view)
M.create_chat_message(user, null, msg_runechat, "", list("italics"))
diff --git a/code/datums/recruiter.dm b/code/datums/recruiter.dm
index bef842c56d3..d460be8d1c1 100644
--- a/code/datums/recruiter.dm
+++ b/code/datums/recruiter.dm
@@ -28,10 +28,10 @@
subject=_subject
/datum/recruiter/proc/recruiting_player(var/mob/dead/observer/O)
- player_volunteering.invoke_async(O, "Teleport | Retract")
+ player_volunteering.invoke_async(O, "[formatGhostJump(subject)] | Retract")
/datum/recruiter/proc/nonrecruiting_player(var/mob/dead/observer/O)
- player_not_volunteering.invoke_async(O, "Teleport | Sign up")
+ player_not_volunteering.invoke_async(O, "[formatGhostJump(subject)] | Sign up")
/datum/recruiter/proc/request_player()
currently_querying = list()
@@ -46,13 +46,13 @@
currently_querying |= O
recruiting_player(O)
- //to_chat(O, "Someone is harvesting [display_name]. You have been added to the list of potential ghosts. (Teleport | Retract)")
+ //to_chat(O, "Someone is harvesting [display_name]. You have been added to the list of potential ghosts. ([formatGhostJump(subject)] | Retract)")
for(var/mob/dead/observer/O in dead_mob_list - active_candidates)
if(!check_observer(O))
continue
nonrecruiting_player(O)
- //to_chat(O, "Someone is harvesting [display_name]. (Teleport | Sign up)")
+ //to_chat(O, "Someone is harvesting [display_name]. ([formatGhostJump(subject)] | Sign up)")
spawn(recruitment_timeout)
if(!currently_querying || currently_querying.len==0)
diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm
index cf61d799500..ee2c7d795d7 100644
--- a/code/game/gamemodes/blob/overmind.dm
+++ b/code/game/gamemodes/blob/overmind.dm
@@ -143,7 +143,7 @@
for (var/mob/M in dead_mob_list)
if(!istype(M,/mob/new_player) && !istype(M,/mob/living/carbon/brain)) //No meta-evesdropping
- rendered = "Blob Telepathy, [name] (Follow) [message_a]"
+ rendered = "Blob Telepathy, [name] [formatFollow(src)] [message_a]"
M.show_message(rendered, 2)
/mob/camera/blob/emote(act, m_type = null, message = null, ignore_status = FALSE, arguments)
diff --git a/code/game/objects/items/devices/PDA/apps/messenger.dm b/code/game/objects/items/devices/PDA/apps/messenger.dm
index 21483387ad6..d2931571aaa 100644
--- a/code/game/objects/items/devices/PDA/apps/messenger.dm
+++ b/code/game/objects/items/devices/PDA/apps/messenger.dm
@@ -274,7 +274,7 @@
msg_id++
for(var/mob/dead/observer/M in player_list)
if(!multicast_message && M.stat == DEAD && M.client && (M.client.prefs.toggles & CHAT_GHOSTPDA)) // src.client is so that ghosts don't have to listen to mice
- M.show_message("(Follow) PDA Message - \
+ M.show_message("[formatFollow(U)] PDA Message - \
[U.real_name][U.real_name == pda_device.owner ? "" : " (as [pda_device.owner])"] -> [P.owner]: [t]\
[pda_device.photo ? " (View Photo)" : ""]")
diff --git a/code/game/say.dm b/code/game/say.dm
index cc4edb0b724..c28439b12b0 100644
--- a/code/game/say.dm
+++ b/code/game/say.dm
@@ -326,8 +326,8 @@ var/global/image/ghostimg = image("icon"='icons/mob/mob.dmi',"icon_state"="ghost
if(istype(mob, /mob/new_player))
return //One extra layer of sanity
if(istype(mob,/mob/dead/observer))
- var/reference = "(Follow) "
- message = reference+message
+ var/reference = formatFollow(speaker)
+ message = reference+" "+message
to_chat(mob, message)
else
to_chat(mob, message)
diff --git a/code/modules/bomberman/bomberman.dm b/code/modules/bomberman/bomberman.dm
index 2c56ad8c3c0..aeb9a2c22ab 100644
--- a/code/modules/bomberman/bomberman.dm
+++ b/code/modules/bomberman/bomberman.dm
@@ -988,14 +988,12 @@ var/global/list/arena_spawnpoints = list()//used by /mob/dead/observer/Logout()
log_game("[key_name_admin(user.client)] created a \"[size]\" Bomberman arena at [center.loc.name] ([center.x],[center.y],[center.z]) ")
for(var/mob/dead/observer/O in player_list)
- to_chat(O, "[user.client.key] created a \"[size]\" Bomberman arena at [center.loc.name]. Click here to JUMP to it.")
+ to_chat(O, "[user.client.key] created a \"[size]\" Bomberman arena at [center.loc.name]. Click here to JUMP to it.")
return 1
else
qdel(src)
return 0
-
-
/datum/bomberman_arena/proc/spawn_player(var/turf/T, var/mob/M)
M.forceMove(T)
M.name = "Bomberman #[rand(1,999)]"
diff --git a/code/modules/events/immovablerod.dm b/code/modules/events/immovablerod.dm
index ec3fa77dc45..c4f89adcaa0 100644
--- a/code/modules/events/immovablerod.dm
+++ b/code/modules/events/immovablerod.dm
@@ -89,7 +89,7 @@ var/list/all_rods = list()
/obj/item/projectile/immovablerod/throw_at(atom/end)
for(var/mob/dead/observer/people in observers)
- to_chat(people, "\A [src] has been thrown at the station, Follow it")
+ to_chat(people, "\A [src] has been thrown at the station, [formatFollow(src,"Follow it")]")
original = end
starting = loc
current = loc
diff --git a/code/modules/events/old_vendotron_event/vendor_teleport_event.dm b/code/modules/events/old_vendotron_event/vendor_teleport_event.dm
index bc77558f347..e09c80fe8a4 100644
--- a/code/modules/events/old_vendotron_event/vendor_teleport_event.dm
+++ b/code/modules/events/old_vendotron_event/vendor_teleport_event.dm
@@ -64,7 +64,7 @@
/obj/effect/old_vendotron_entrance/New()
..()
for(var/mob/dead/observer/people in observers)
- to_chat(people, "\A [src] has been thrown at the station, Follow it")
+ to_chat(people, "\A [src] has been thrown at the station, [formatFollow(src,"Follow it")]")
/obj/effect/old_vendotron_entrance/proc/aestheticEntrance()
animate(src, alpha = 255, transform = matrix()*2, time = 3 SECONDS)
diff --git a/code/modules/hydroponics/seed_mobs.dm b/code/modules/hydroponics/seed_mobs.dm
index 42c61a3f1f3..58295abb524 100644
--- a/code/modules/hydroponics/seed_mobs.dm
+++ b/code/modules/hydroponics/seed_mobs.dm
@@ -43,13 +43,13 @@
continue
currently_querying |= O
- to_chat(O, "Someone is harvesting [display_name]. You have been added to the list of potential ghosts. (Teleport | Retract)")
+ to_chat(O, "Someone is harvesting [display_name]. You have been added to the list of potential ghosts. ([formatGhostJump(host)] | Retract)")
for(var/mob/dead/observer/O in dead_mob_list - active_candidates)
if(!check_observer(O))
continue
- to_chat(O, "Someone is harvesting [display_name]. (Teleport | Sign up)")
+ to_chat(O, "Someone is harvesting [display_name]. ([formatGhostJump(host)] | Sign up)")
spawn(600)
if(!currently_querying || !currently_querying.len)
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index c1220711e78..3af5f7e2649 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -413,13 +413,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
/mob/dead/observer/proc/manual_follow(var/atom/movable/target)
if(target)
var/turf/targetloc = get_turf(target)
+ if(targetloc && targetloc.holy && (!invisibility || islegacycultist(src)))
+ to_chat(usr, "You cannot follow a mob standing on holy grounds!")
+ return
var/area/targetarea = get_area(target)
if(targetarea && targetarea.anti_ethereal && !isAdminGhost(usr))
to_chat(usr, "You can sense a sinister force surrounding that mob, your spooky body itself refuses to follow it.")
return
- if(targetloc && targetloc.holy && (!invisibility || islegacycultist(src)))
- to_chat(usr, "You cannot follow a mob standing on holy grounds!")
- return
if(target != src)
if(locked_to)
if(locked_to == target) //Trying to follow same target, don't do anything
@@ -453,43 +453,54 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(istype(A))
A.reenter_corpse()
- //BEGIN TELEPORT HREF CODE
if(usr != src)
return
..()
- if(href_list["follow"])
- var/target = locate(href_list["follow"])
- if(target)
- if(isAI(target))
- var/mob/living/silicon/ai/M = target
- target = M.eyeobj
- manual_follow(target)
+//BEGIN TELEPORT HREF CODE
+/datum/subsystem/mob/Topic(href, href_list)
+ if(istype(usr,/mob/dead/observer))
+ var/mob/dead/observer/O = usr
+ if(href_list["follow"])
+ var/target = locate(href_list["follow"])
+ if(target)
+ if(isAI(target))
+ var/mob/living/silicon/ai/M = target
+ if(!istype(M.loc,/obj/item/device/aicard))
+ target = M.eyeobj
+ O.manual_follow(target)
+ else
+ to_chat(O, "That mob doesn't seem to exist anymore.")
+ return
- if (href_list["jump"])
- var/mob/target = locate(href_list["jump"])
- var/mob/A = usr;
- to_chat(A, "Teleporting to [target]...")
- if(target && target != usr)
- var/turf/pos = get_turf(A)
- var/turf/T=get_turf(target)
- if(T != pos)
- if(!T)
- to_chat(A, "Target not in a turf.")
- return
- if(locked_to)
- manual_stop_follow(locked_to)
- forceMove(T)
+ if (href_list["jump"])
+ var/target = locate(href_list["jump"])
+ if(target && target != usr)
+ to_chat(O, "Teleporting to [target]...")
+ var/turf/pos = get_turf(O)
+ var/turf/T=get_turf(target)
+ if(T != pos)
+ if(!T)
+ to_chat(O, "Target not in a turf.")
+ return
+ if(O.locked_to)
+ O.manual_stop_follow(O.locked_to)
+ O.forceMove(T)
+ else
+ to_chat(O, "That thing doesn't seem to exist anymore, or is you.")
+ return
- if(href_list["jumptoarenacood"])
- var/datum/bomberman_arena/targetarena = locate(href_list["targetarena"])
- if(targetarena)
- if(locked_to)
- manual_stop_follow(locked_to)
- usr.forceMove(targetarena.center)
- to_chat(usr, "Remember to enable darkness to be able to see the spawns. Click on a green spawn between rounds to register on it.")
- else
- to_chat(usr, "That arena doesn't seem to exist anymore.")
+ if(href_list["targetarena"])
+ var/datum/bomberman_arena/targetarena = locate(href_list["targetarena"])
+ if(targetarena)
+ if(O.locked_to)
+ O.manual_stop_follow(O.locked_to)
+ O.forceMove(targetarena.center)
+ to_chat(O, "Click on a green spawn between rounds to register on it.")
+ else
+ to_chat(O, "That arena doesn't seem to exist anymore.")
+ return
+ return ..()
//END TELEPORT HREF CODE
@@ -532,7 +543,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if (get_dist(source_turf, src) <= world.view) // If this isn't true, we can't be in view, so no need for costlier proc.
if (source_turf in view(src))
rendered_speech = "[rendered_speech]"
- to_chat(src, "(Follow) [rendered_speech]")
+ to_chat(src, "[formatFollow(source)] [rendered_speech]")
/mob/dead/observer/hasHUD(var/hud_kind)
switch(hud_kind)
diff --git a/code/modules/mob/dead/observer/say.dm b/code/modules/mob/dead/observer/say.dm
index 7843bc36809..a8ef7c4bb66 100644
--- a/code/modules/mob/dead/observer/say.dm
+++ b/code/modules/mob/dead/observer/say.dm
@@ -54,4 +54,4 @@
say_testing(src, "/mob/dead/observer/Hear(): CHAT_GHOSTRADIO is disabled, blocking. ([client.prefs.toggles] & [CHAT_GHOSTRADIO]) = [client.prefs.toggles & CHAT_GHOSTRADIO]")
return
- to_chat(src, "(Follow) [rendered_speech]")
+ to_chat(src, "[formatFollow(source)] [rendered_speech]")
diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm
index 2f34388541f..6d693a96384 100644
--- a/code/modules/mob/death.dm
+++ b/code/modules/mob/death.dm
@@ -67,7 +67,7 @@
var/mindname = (src.mind && src.mind.name) ? "[src.mind.name]" : "[real_name]"
var/died_as = (mindname == real_name) ? "" : " (died as [real_name])"
for(var/mob/M in get_deadchat_hearers())
- var/rendered = "\proper(Follow) \The [mindname][died_as] has died at \the [get_area(place_of_death)]."
+ var/rendered = "\proper[formatFollow(src)] \The [mindname][died_as] has died at \the [get_area(place_of_death)]."
to_chat(M, rendered)
log_game("[key_name(src)] has died at [get_area(place_of_death)]. Coordinates: ([get_coordinates_string(src)])")
is_dying = FALSE
diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm
index 24c8bc44589..6d979f03cd9 100644
--- a/code/modules/mob/emote.dm
+++ b/code/modules/mob/emote.dm
@@ -73,7 +73,7 @@
if (!M.client)
continue //skip leavers
if(isobserver(M) && M.client.prefs && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(user)))
- M.show_message("(Follow) " + msg)
+ M.show_message(formatFollow(user) + " " + msg)
if(emote_type & EMOTE_VISIBLE)
user.visible_message(msg)
diff --git a/code/modules/mob/living/carbon/alien/larva/alien_embryo.dm b/code/modules/mob/living/carbon/alien/larva/alien_embryo.dm
index a9bf4d43b4a..319a467723c 100644
--- a/code/modules/mob/living/carbon/alien/larva/alien_embryo.dm
+++ b/code/modules/mob/living/carbon/alien/larva/alien_embryo.dm
@@ -19,7 +19,7 @@
for(var/mob/dead/observer/O in get_active_candidates(ROLE_ALIEN,poll="[affected_mob] has been infected by \a [src]!"))
if(O.client && O.client.desires_role(ROLE_ALIEN))
if(check_observer(O))
- to_chat(O, "You have automatically been signed up for \a [src]. (Teleport | Retract)")
+ to_chat(O, "You have automatically been signed up for \a [src]. ([formatGhostJump(src)] | Retract)")
ghost_volunteers += O
spawn(0)
AddInfectionImages(affected_mob)
@@ -135,7 +135,7 @@
picked = affected_mob.key //Pick the person who was infected
else
for(var/mob/dead/observer/O in candidates)
- to_chat(O, "\a [src] is about to burst out of \the [affected_mob]!(Teleport | Sign Up)")
+ to_chat(O, "\a [src] is about to burst out of \the [affected_mob]!([formatGhostJump(src)] | Sign Up)")
else
picked = ghostpicked.key
@@ -143,7 +143,7 @@
stage = 4 // Let's try again later.
var/list/candidates = get_active_candidates(ROLE_ALIEN, buffer=ALIEN_SELECT_AFK_BUFFER, poll=1)
for(var/mob/dead/observer/O in candidates) //Shiggy
- to_chat(O, "\a [src] is about to burst out of \the [affected_mob]!(Teleport | Sign Up)")
+ to_chat(O, "\a [src] is about to burst out of \the [affected_mob]!([formatGhostJump(src)] | Sign Up)")
return
if(affected_mob.lying)
diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm
index 3a950a004c2..f79575d3e4a 100644
--- a/code/modules/mob/living/carbon/slime/slime.dm
+++ b/code/modules/mob/living/carbon/slime/slime.dm
@@ -960,7 +960,7 @@
if(O.client)
var/area/A = get_area(src)
if(A)
- to_chat(O, "Golem rune created in [A.name]. (Teleport | Sign Up)")
+ to_chat(O, "Golem rune created in [A.name]. ([formatGhostJump(src)] | Sign Up)")
/obj/effect/golem_rune/Topic(href,href_list)
if("signup" in href_list)
diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm
index 5403f9be4bb..b94111f528f 100644
--- a/code/modules/mob/living/silicon/pai/recruit.dm
+++ b/code/modules/mob/living/silicon/pai/recruit.dm
@@ -197,7 +197,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates
for(var/mob/dead/observer/O in player_list) // We handle polling ourselves.
if(O.client && get_role_desire_str(O.client.prefs.roles[ROLE_PAI]) != "Never")
if(check_recruit(O))
- to_chat(O, "A pAI card is looking for personalities. (Sign Up | Teleport)")
+ to_chat(O, "A pAI card is looking for personalities. (Sign Up | [formatFollow(p,"Teleport")])")
//question(O.client)
/datum/paiController/proc/check_recruit(var/mob/dead/observer/O)
diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm
index 87939059609..fb77f10005c 100644
--- a/code/modules/mob/living/simple_animal/borer.dm
+++ b/code/modules/mob/living/simple_animal/borer.dm
@@ -332,7 +332,7 @@ var/global/borer_unlock_types_leg = typesof(/datum/unlockable/borer/leg) - /datu
if(istype(M, /mob/new_player))
continue
if(istype(M,/mob/dead/observer) && (M.client && M.client.prefs.toggles & CHAT_GHOSTEARS || (get_turf(src) in view(M))))
- var/controls = "Follow"
+ var/controls = formatFollow(src,"Follow")
if(M.client.holder)
controls+= " | ?"
var/rendered="Thought-speech, [truename] ([controls]) in [host]'s [limb_to_name(hostlimb)]: [encoded_message]"
diff --git a/code/modules/mob/living/simple_animal/borer/captive_brain.dm b/code/modules/mob/living/simple_animal/borer/captive_brain.dm
index a9bc2ae6447..0b94d4bfa74 100644
--- a/code/modules/mob/living/simple_animal/borer/captive_brain.dm
+++ b/code/modules/mob/living/simple_animal/borer/captive_brain.dm
@@ -23,7 +23,7 @@
if(istype(M, /mob/new_player))
continue
if(istype(M,/mob/dead/observer) && (M.client && M.client.prefs.toggles & CHAT_GHOSTEARS))
- var/controls = "Follow"
+ var/controls = formatFollow(src,"Follow")
if(M.client.holder)
controls+= " | ?"
var/rendered="Thought-speech, [src.name] ([controls]) -> [B.truename]: [message]"
diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm
index 3a4052013e3..9ace7e7e25e 100644
--- a/code/modules/mob/say.dm
+++ b/code/modules/mob/say.dm
@@ -73,12 +73,8 @@ var/list/global_deadchat_listeners = list()
var/location_text = get_coordinates_string(src)
log_say("[name]/[key_name(src)] (@[location_text]) Deadsay: [message]")
- var/list/hearers = get_deadchat_hearers()
- if(hearers)
- for(var/mob/M in hearers)
- var/rendered = "(Follow)"
- rendered += " [name][alt_name] [message]"
- to_chat(M, rendered)
+ for(var/mob/M in get_deadchat_hearers())
+ to_chat(M, "[formatFollow(src)] [name][alt_name] [message]")
/mob/proc/get_ear()
// returns an atom representing a location on the map from which this
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index 11ed4c33f32..1e6f6effcf8 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -977,17 +977,8 @@ var/list/obj/machinery/singularity/white_hole_candidates
qdel(target_singulo)
var/message = "An admin has begun DEADCHAT-CONTROLLED SINGULARITY!
It is on ANARCHY mode.
Simply type UP, DOWN, LEFT, or RIGHT to move the singularity.
Cooldown per person is currently [new_singulo.input_cooldown/10] seconds.
"
- for(var/mob/M in player_list)
- if(istype(M, /mob/new_player) || !M.client)
- continue
- if(M.client && M.client.holder && M.client.holder.rights & R_ADMIN && (M.client.prefs.toggles & CHAT_DEAD)) //admins can toggle deadchat on and off. This is a proc in admin.dm and is only give to Administrators and above
- to_chat(M, message + "(Follow)")
- else if(M.client && M.stat == DEAD && !istype(M, /mob/dead/observer/deafmute) && (M.client.prefs.toggles & CHAT_DEAD))
- to_chat(M, message + "(Follow)")
- else if(M.client && istype(M,/mob/living/carbon/brain) && (M.client.prefs.toggles & CHAT_DEAD))
- var/mob/living/carbon/brain/B = M
- if(B.brain_dead_chat())
- to_chat(M, message + "(Follow)")
+ for(var/mob/M in get_deadchat_hearers())
+ to_chat(M, message + formatFollow(new_singulo))
else if(option_chosen == "Democracy")
var/interval = input("Please enter the interval that the singulo makes a move in seconds.", "Interval") as num
if(!interval)
@@ -1011,17 +1002,8 @@ var/list/obj/machinery/singularity/white_hole_candidates
qdel(target_singulo)
var/message = "An admin has begun DEADCHAT-CONTROLLED SINGULARITY!
It is on DEMOCRACY mode.
Simply type UP, DOWN, LEFT, or RIGHT to cast a vote on which direction it should move. Your vote will be your latest message.
The singulo will move every [new_singulo.democracy_cooldown/10] seconds. Votes start now!
"
- for(var/mob/M in player_list)
- if(istype(M, /mob/new_player) || !M.client)
- continue
- if(M.client && M.client.holder && M.client.holder.rights & R_ADMIN && (M.client.prefs.toggles & CHAT_DEAD))
- to_chat(M, message + "(Follow)")
- else if(M.client && M.stat == DEAD && !istype(M, /mob/dead/observer/deafmute) && (M.client.prefs.toggles & CHAT_DEAD))
- to_chat(M, message + "(Follow)")
- else if(M.client && istype(M,/mob/living/carbon/brain) && (M.client.prefs.toggles & CHAT_DEAD))
- var/mob/living/carbon/brain/B = M
- if(B.brain_dead_chat())
- to_chat(M, message + "(Follow)")
+ for(var/mob/M in get_deadchat_hearers())
+ to_chat(M, message + formatFollow(new_singulo))
/obj/machinery/singularity/special
name = "specialarity"
diff --git a/goon/code/datums/browserOutput.dm b/goon/code/datums/browserOutput.dm
index 8e1811c97d0..81639aa3f40 100644
--- a/goon/code/datums/browserOutput.dm
+++ b/goon/code/datums/browserOutput.dm
@@ -337,7 +337,7 @@ For the main html chat area
target << output(url_encode(message), "browseroutput:output")
/proc/get_deadchat_hearers()
- var/list/hearers = list()
+ . = list()
for(var/mob/M in player_list)
if(!M.client)
continue
@@ -346,18 +346,19 @@ For the main html chat area
else if(M.client.prefs.toggles & CHAT_DEAD)
if(M.client.holder && M.client.holder.rights & R_ADMIN) //admins can toggle deadchat on and off. This is a proc in admin.dm and is only give to Administrators and above
- hearers += M
- continue
+ . += M
else if(M.stat == DEAD && !istype(M, /mob/dead/observer/deafmute))
- hearers += M
- continue
+ . += M
else if(istype(M,/mob/living/carbon/brain))
var/mob/living/carbon/brain/B = M
if(B.brain_dead_chat())
- hearers += M
- continue
- . = hearers
- return .
+ . += M
+
+/proc/formatFollow(var/mob/target,var/custom_text="(Follow)")
+ return "[custom_text]"
+
+/proc/formatGhostJump(var/mob/target,var/custom_text="Teleport")
+ return "[custom_text]"
/* This proc only handles sending the message to everyone who can hear deadchat. Formatting that message is up to you! Consider using on your message! */
/* Kinda useless if your message needs to include an href, though... */