visible_message() now affects objects. Holopads, pAIs, AI cards people in mecha should hence be able to see them

Tape recorders record hearable emotes and action messages

Human and robot emotes now use custom_emote()
This commit is contained in:
RavingManiac
2015-05-16 16:01:41 +10:00
parent 8dcb2ba3ea
commit c67ed25b85
14 changed files with 285 additions and 155 deletions

View File

@@ -113,6 +113,12 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
master.show_message(rendered, 2)
return
/obj/machinery/hologram/holopad/show_message(msg, type, alt, alt_type)
for(var/mob/living/silicon/ai/master in masters)
var/rendered = "<i><span class='game say'>Holopad received, <span class='message'>[msg]</span></span></i>"
master.show_message(rendered, type)
return
/obj/machinery/hologram/holopad/proc/create_holo(mob/living/silicon/ai/A, turf/T = loc)
var/obj/effect/overlay/hologram = new(T)//Spawn a blank effect at the location.
hologram.icon = A.holo_icon

View File

@@ -258,6 +258,12 @@
occupant.show_message(rendered, 2)
..()
/obj/mecha/show_message(msg, type, alt, alt_type)
if(occupant && occupant.client)
var/rendered = "<span class='message'>[msg]</span>"
occupant.show_message(rendered, type)
..()
////////////////////////////
///// Action processing ////
////////////////////////////

View File

@@ -160,6 +160,13 @@
var/rendered = "<span class='message'>[text]</span>"
carded_ai.show_message(rendered, 2)
..()
/obj/item/device/aicard/show_message(msg, type, alt, alt_type)
if(carded_ai && carded_ai.client)
var/rendered = "<span class='message'>[msg]</span>"
carded_ai.show_message(rendered, type)
..()
/*
/obj/item/device/aicard/relaymove(var/mob/user, var/direction)
if(src.loc && istype(src.loc.loc, /obj/item/rig_module))

View File

@@ -324,3 +324,9 @@
var/rendered = "<span class='message'>[text]</span>"
pai.show_message(rendered, 2)
..()
/obj/item/device/paicard/show_message(msg, type, alt, alt_type)
if(pai && pai.client)
var/rendered = "<span class='message'>[msg]</span>"
pai.show_message(rendered, type)
..()

View File

@@ -29,6 +29,25 @@
else
storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] [verb], \"[msg]\""
/obj/item/device/taperecorder/see_emote(mob/M as mob, text, var/emote_type)
if(emote_type != 2) //only hearable emotes
return
if(recording)
timestamp += timerecorded
storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [strip_html_properly(text)]"
/obj/item/device/taperecorder/show_message(msg, type, alt, alt_type)
var/recordedtext
if (msg && type == 2) //must be hearable
recordedtext = msg
else if (alt && alt_type == 2)
recordedtext = alt
else
return
if(recording)
timestamp += timerecorded
storedinfo += "*\[[time2text(timerecorded*10,"mm:ss")]\] *[strip_html_properly(recordedtext)]*" //"*" at front as a marker
/obj/item/device/taperecorder/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/card/emag))
@@ -146,7 +165,10 @@
if(storedinfo.len < i)
break
var/turf/T = get_turf(src)
T.visible_message("<font color=Maroon><B>Tape Recorder</B>: [storedinfo[i]]</font>")
var/playedmessage = storedinfo[i]
if (findtextEx(playedmessage,"*",1,2)) //remove marker for action sounds
playedmessage = copytext(playedmessage,2)
T.visible_message("<font color=Maroon><B>Tape Recorder</B>: [playedmessage]</font>")
if(storedinfo.len < i+1)
playsleepseconds = 1
sleep(10)
@@ -200,7 +222,10 @@
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(src))
var/t1 = "<B>Transcript:</B><BR><BR>"
for(var/i=1,storedinfo.len >= i,i++)
t1 += "[storedinfo[i]]<BR>"
var/printedmessage = storedinfo[i]
if (findtextEx(printedmessage,"*",1,2)) //replace action sounds
printedmessage = "\[[time2text(timestamp[i]*10,"mm:ss")]\] (Unrecognized sound)"
t1 += "[printedmessage]<BR>"
P.info = t1
P.name = "Transcript"
canprint = 0

View File

@@ -450,6 +450,18 @@
var/obj/O = A
O.hear_talk(M, text, verb, speaking)
/obj/item/weapon/storage/see_emote(mob/M as mob, text, var/emote_type)
for (var/atom/A in src)
if(istype(A,/obj/))
var/obj/O = A
O.see_emote(M, text, emote_type)
/obj/item/weapon/storage/show_message(msg, type, alt, alt_type)
for (var/atom/A in src)
if(istype(A,/obj/))
var/obj/O = A
O.show_message(msg, type, alt, alt_type)
//Returns the storage depth of an atom. This is the number of storage items the atom is contained in before reaching toplevel (the area).
//Returns -1 if the atom was not found on container.
/atom/proc/storage_depth(atom/container)

View File

@@ -141,3 +141,6 @@
/obj/proc/see_emote(mob/M as mob, text, var/emote_type)
return
/obj/proc/show_message(msg, type, alt, alt_type)
return

View File

@@ -302,6 +302,18 @@
var/obj/O = A
O.hear_talk(M, text, verb, speaking)
/obj/structure/closet/see_emote(mob/M as mob, text, var/emote_type)
for (var/atom/A in src)
if(istype(A,/obj/))
var/obj/O = A
O.see_emote(M, text, emote_type)
/obj/structure/closet/show_message(msg, type, alt, alt_type)
for (var/atom/A in src)
if(istype(A,/obj/))
var/obj/O = A
O.show_message(msg, type, alt, alt_type)
/obj/structure/closet/attack_generic(var/mob/user, var/damage, var/attack_message = "destroys", var/wallbreaker)
if(!damage || !wallbreaker)
return

View File

@@ -33,6 +33,14 @@
pockets.hear_talk(M, msg, verb, speaking)
..()
/obj/item/clothing/suit/storage/see_emote(mob/M as mob, text, var/emote_type)
pockets.see_emote(M, text, emote_type)
..()
/obj/item/clothing/suit/storage/show_message(msg, type, alt, alt_type)
pockets.show_message(msg, type, alt, alt_type)
..()
//Jackets with buttons, used for labcoats, IA jackets, First Responder jackets, and brown jackets.
/obj/item/clothing/suit/storage/toggle
var/icon_open

View File

@@ -38,6 +38,14 @@
hold.hear_talk(M, msg, verb, speaking)
..()
/obj/item/clothing/accessory/storage/see_emote(mob/M as mob, text, var/emote_type)
hold.see_emote(M, text, emote_type)
..()
/obj/item/clothing/accessory/storage/show_message(msg, type, alt, alt_type)
hold.show_message(msg, type, alt, alt_type)
..()
/obj/item/clothing/accessory/storage/attack_self(mob/user as mob)
user << "<span class='notice'>You empty [src].</span>"
var/turf/T = get_turf(src)

View File

@@ -32,9 +32,9 @@
for(var/mob/M in src.contents)
M.attackby(W,user)
/obj/item/weapon/holder/proc/show_message(var/message, var/m_type)
/obj/item/weapon/holder/show_message(msg, type, alt, alt_type)
for(var/mob/living/M in contents)
M.show_message(message,m_type)
M.show_message(msg,type)
//Mob procs and vars for scooping up
/mob/living/var/holder_type

View File

@@ -21,15 +21,15 @@
switch(act)
if ("airguitar")
if (!src.restrained())
message = "<B>[src]</B> is strumming the air and headbanging like a safari chimp."
message = "is strumming the air and headbanging like a safari chimp."
m_type = 1
if ("blink")
message = "<B>[src]</B> blinks."
message = "blinks."
m_type = 1
if ("blink_r")
message = "<B>[src]</B> blinks rapidly."
message = "blinks rapidly."
m_type = 1
if ("bow")
@@ -44,9 +44,9 @@
param = null
if (param)
message = "<B>[src]</B> bows to [param]."
message = "bows to [param]."
else
message = "<B>[src]</B> bows."
message = "bows."
m_type = 1
if ("custom")
@@ -94,73 +94,73 @@
param = null
if (param)
message = "<B>[src]</B> salutes to [param]."
message = "salutes to [param]."
else
message = "<B>[src]</b> salutes."
message = "salutes."
m_type = 1
if ("choke")
if(miming)
message = "<B>[src]</B> clutches his throat desperately!"
message = "clutches his throat desperately!"
m_type = 1
else
if (!muzzled)
message = "<B>[src]</B> chokes!"
message = "chokes!"
m_type = 2
else
message = "<B>[src]</B> makes a strong noise."
message = "makes a strong noise."
m_type = 2
if ("clap")
if (!src.restrained())
message = "<B>[src]</B> claps."
message = "claps."
m_type = 2
if(miming)
m_type = 1
if ("flap")
if (!src.restrained())
message = "<B>[src]</B> flaps \his wings."
message = "flaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] wings."
m_type = 2
if(miming)
m_type = 1
if ("aflap")
if (!src.restrained())
message = "<B>[src]</B> flaps \his wings ANGRILY!"
message = "flaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] wings ANGRILY!"
m_type = 2
if(miming)
m_type = 1
if ("drool")
message = "<B>[src]</B> drools."
message = "drools."
m_type = 1
if ("eyebrow")
message = "<B>[src]</B> raises an eyebrow."
message = "raises an eyebrow."
m_type = 1
if ("chuckle")
if(miming)
message = "<B>[src]</B> appears to chuckle."
message = "appears to chuckle."
m_type = 1
else
if (!muzzled)
message = "<B>[src]</B> chuckles."
message = "chuckles."
m_type = 2
else
message = "<B>[src]</B> makes a noise."
message = "makes a noise."
m_type = 2
if ("twitch")
message = "<B>[src]</B> twitches violently."
message = "twitches violently."
m_type = 1
if ("twitch_s")
message = "<B>[src]</B> twitches."
message = "twitches."
m_type = 1
if ("faint")
message = "<B>[src]</B> faints."
message = "faints."
if(src.sleeping)
return //Can't faint while asleep
src.sleeping += 10 //Short-short nap
@@ -168,58 +168,58 @@
if ("cough")
if(miming)
message = "<B>[src]</B> appears to cough!"
message = "appears to cough!"
m_type = 1
else
if (!muzzled)
message = "<B>[src]</B> coughs!"
message = "coughs!"
m_type = 2
else
message = "<B>[src]</B> makes a strong noise."
message = "makes a strong noise."
m_type = 2
if ("frown")
message = "<B>[src]</B> frowns."
message = "frowns."
m_type = 1
if ("nod")
message = "<B>[src]</B> nods."
message = "nods."
m_type = 1
if ("blush")
message = "<B>[src]</B> blushes."
message = "blushes."
m_type = 1
if ("wave")
message = "<B>[src]</B> waves."
message = "waves."
m_type = 1
if ("gasp")
if(miming)
message = "<B>[src]</B> appears to be gasping!"
message = "appears to be gasping!"
m_type = 1
else
if (!muzzled)
message = "<B>[src]</B> gasps!"
message = "gasps!"
m_type = 2
else
message = "<B>[src]</B> makes a weak noise."
message = "makes a weak noise."
m_type = 2
if ("deathgasp")
message = "<B>[src]</B> [species.death_message]"
message = "[species.death_message]"
m_type = 1
if ("giggle")
if(miming)
message = "<B>[src]</B> giggles silently!"
message = "giggles silently!"
m_type = 1
else
if (!muzzled)
message = "<B>[src]</B> giggles."
message = "giggles."
m_type = 2
else
message = "<B>[src]</B> makes a noise."
message = "makes a noise."
m_type = 2
if ("glare")
@@ -233,9 +233,9 @@
param = null
if (param)
message = "<B>[src]</B> glares at [param]."
message = "glares at [param]."
else
message = "<B>[src]</B> glares."
message = "glares."
if ("stare")
var/M = null
@@ -248,9 +248,9 @@
param = null
if (param)
message = "<B>[src]</B> stares at [param]."
message = "stares at [param]."
else
message = "<B>[src]</B> stares."
message = "stares."
if ("look")
var/M = null
@@ -264,86 +264,86 @@
param = null
if (param)
message = "<B>[src]</B> looks at [param]."
message = "looks at [param]."
else
message = "<B>[src]</B> looks."
message = "looks."
m_type = 1
if ("grin")
message = "<B>[src]</B> grins."
message = "grins."
m_type = 1
if ("cry")
if(miming)
message = "<B>[src]</B> cries."
message = "cries."
m_type = 1
else
if (!muzzled)
message = "<B>[src]</B> cries."
message = "cries."
m_type = 2
else
message = "<B>[src]</B> makes a weak noise. \He frowns."
message = "makes a weak noise. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"] [get_visible_gender() == NEUTER ? "frown" : "frowns"]."
m_type = 2
if ("sigh")
if(miming)
message = "<B>[src]</B> sighs."
message = "sighs."
m_type = 1
else
if (!muzzled)
message = "<B>[src]</B> sighs."
message = "sighs."
m_type = 2
else
message = "<B>[src]</B> makes a weak noise."
message = "makes a weak noise."
m_type = 2
if ("laugh")
if(miming)
message = "<B>[src]</B> acts out a laugh."
message = "acts out a laugh."
m_type = 1
else
if (!muzzled)
message = "<B>[src]</B> laughs."
message = "laughs."
m_type = 2
else
message = "<B>[src]</B> makes a noise."
message = "makes a noise."
m_type = 2
if ("mumble")
message = "<B>[src]</B> mumbles!"
message = "mumbles!"
m_type = 2
if(miming)
m_type = 1
if ("grumble")
if(miming)
message = "<B>[src]</B> grumbles!"
message = "grumbles!"
m_type = 1
if (!muzzled)
message = "<B>[src]</B> grumbles!"
message = "grumbles!"
m_type = 2
else
message = "<B>[src]</B> makes a noise."
message = "makes a noise."
m_type = 2
if ("groan")
if(miming)
message = "<B>[src]</B> appears to groan!"
message = "appears to groan!"
m_type = 1
else
if (!muzzled)
message = "<B>[src]</B> groans!"
message = "groans!"
m_type = 2
else
message = "<B>[src]</B> makes a loud noise."
message = "makes a loud noise."
m_type = 2
if ("moan")
if(miming)
message = "<B>[src]</B> appears to moan!"
message = "appears to moan!"
m_type = 1
else
message = "<B>[src]</B> moans!"
message = "moans!"
m_type = 2
if ("johnny")
@@ -354,10 +354,10 @@
param = null
else
if(miming)
message = "<B>[src]</B> takes a drag from a cigarette and blows \"[M]\" out in smoke."
message = "takes a drag from a cigarette and blows \"[M]\" out in smoke."
m_type = 1
else
message = "<B>[src]</B> says, \"[M], please. He had a family.\" [src.name] takes a drag from a cigarette and blows his name out in smoke."
message = "says, \"[M], please. He had a family.\" [src.name] takes a drag from a cigarette and blows his name out in smoke."
m_type = 2
if ("point")
@@ -370,26 +370,26 @@
break
if (!M)
message = "<B>[src]</B> points."
message = "points."
else
pointed(M)
if (M)
message = "<B>[src]</B> points to [M]."
message = "points to [M]."
else
m_type = 1
if ("raise")
if (!src.restrained())
message = "<B>[src]</B> raises a hand."
message = "raises a hand."
m_type = 1
if("shake")
message = "<B>[src]</B> shakes \his head."
message = "shakes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] head."
m_type = 1
if ("shrug")
message = "<B>[src]</B> shrugs."
message = "shrugs."
m_type = 1
if ("signal")
@@ -397,85 +397,85 @@
var/t1 = round(text2num(param))
if (isnum(t1))
if (t1 <= 5 && (!src.r_hand || !src.l_hand))
message = "<B>[src]</B> raises [t1] finger\s."
message = "raises [t1] finger\s."
else if (t1 <= 10 && (!src.r_hand && !src.l_hand))
message = "<B>[src]</B> raises [t1] finger\s."
message = "raises [t1] finger\s."
m_type = 1
if ("smile")
message = "<B>[src]</B> smiles."
message = "smiles."
m_type = 1
if ("shiver")
message = "<B>[src]</B> shivers."
message = "shivers."
m_type = 2
if(miming)
m_type = 1
if ("pale")
message = "<B>[src]</B> goes pale for a second."
message = "goes pale for a second."
m_type = 1
if ("tremble")
message = "<B>[src]</B> trembles in fear!"
message = "trembles in fear!"
m_type = 1
if ("sneeze")
if (miming)
message = "<B>[src]</B> sneezes."
message = "sneezes."
m_type = 1
else
if (!muzzled)
message = "<B>[src]</B> sneezes."
message = "sneezes."
m_type = 2
else
message = "<B>[src]</B> makes a strange noise."
message = "makes a strange noise."
m_type = 2
if ("sniff")
message = "<B>[src]</B> sniffs."
message = "sniffs."
m_type = 2
if(miming)
m_type = 1
if ("snore")
if (miming)
message = "<B>[src]</B> sleeps soundly."
message = "sleeps soundly."
m_type = 1
else
if (!muzzled)
message = "<B>[src]</B> snores."
message = "snores."
m_type = 2
else
message = "<B>[src]</B> makes a noise."
message = "makes a noise."
m_type = 2
if ("whimper")
if (miming)
message = "<B>[src]</B> appears hurt."
message = "appears hurt."
m_type = 1
else
if (!muzzled)
message = "<B>[src]</B> whimpers."
message = "whimpers."
m_type = 2
else
message = "<B>[src]</B> makes a weak noise."
message = "makes a weak noise."
m_type = 2
if ("wink")
message = "<B>[src]</B> winks."
message = "winks."
m_type = 1
if ("yawn")
if (!muzzled)
message = "<B>[src]</B> yawns."
message = "yawns."
m_type = 2
if(miming)
m_type = 1
if ("collapse")
Paralyse(2)
message = "<B>[src]</B> collapses!"
message = "collapses!"
m_type = 2
if(miming)
m_type = 1
@@ -493,9 +493,9 @@
M = null
if (M)
message = "<B>[src]</B> hugs [M]."
message = "hugs [M]."
else
message = "<B>[src]</B> hugs \himself."
message = "hugs [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]."
if ("handshake")
m_type = 1
@@ -511,9 +511,9 @@
if (M)
if (M.canmove && !M.r_hand && !M.restrained())
message = "<B>[src]</B> shakes hands with [M]."
message = "shakes hands with [M]."
else
message = "<B>[src]</B> holds out \his hand to [M]."
message = "holds out [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] hand to [M]."
if("dap")
m_type = 1
@@ -525,20 +525,20 @@
M = A
break
if (M)
message = "<B>[src]</B> gives daps to [M]."
message = "gives daps to [M]."
else
message = "<B>[src]</B> sadly can't find anybody to give daps to, and daps \himself. Shameful."
message = "sadly can't find anybody to give daps to, and daps [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]. Shameful."
if ("scream")
if (miming)
message = "<B>[src]</B> acts out a scream!"
message = "acts out a scream!"
m_type = 1
else
if (!muzzled)
message = "<B>[src]</B> screams!"
message = "screams!"
m_type = 2
else
message = "<B>[src]</B> makes a very loud noise."
message = "makes a very loud noise."
m_type = 2
if ("help")
@@ -553,23 +553,7 @@
if (message)
log_emote("[name]/[key] : [message]")
//Hearing gasp and such every five seconds is not good emotes were not global for a reason.
// Maybe some people are okay with that.
for(var/mob/M in dead_mob_list)
if(!M.client || istype(M, /mob/new_player))
continue //skip monkeys, leavers and new players
if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(src,null)))
M.show_message(message)
if (m_type & 1)
for (var/mob/O in get_mobs_in_view(world.view,src))
O.show_message(message, m_type)
else if (m_type & 2)
for (var/mob/O in (hearers(src.loc, null) | get_mobs_in_view(world.view,src)))
O.show_message(message, m_type)
custom_emote(m_type,message)
/mob/living/carbon/human/verb/pose()
@@ -577,7 +561,7 @@
set desc = "Sets a description which will be shown when someone examines you."
set category = "IC"
pose = sanitize(input(usr, "This is [src]. \He is...", "Pose", null) as text)
pose = sanitize(input(usr, "This is [src]. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"] [get_visible_gender() == NEUTER ? "are" : "is"]...", "Pose", null) as text)
/mob/living/carbon/human/verb/set_flavor()
set name = "Set Flavour Text"

View File

@@ -38,9 +38,9 @@
param = null
if (param)
message = "<B>[src]</B> salutes to [param]."
message = "salutes to [param]."
else
message = "<B>[src]</b> salutes."
message = "salutes."
m_type = 1
if ("bow")
if (!src.buckled)
@@ -54,39 +54,39 @@
param = null
if (param)
message = "<B>[src]</B> bows to [param]."
message = "bows to [param]."
else
message = "<B>[src]</B> bows."
message = "bows."
m_type = 1
if ("clap")
if (!src.restrained())
message = "<B>[src]</B> claps."
message = "claps."
m_type = 2
if ("flap")
if (!src.restrained())
message = "<B>[src]</B> flaps his wings."
message = "flaps his wings."
m_type = 2
if ("aflap")
if (!src.restrained())
message = "<B>[src]</B> flaps his wings ANGRILY!"
message = "flaps his wings ANGRILY!"
m_type = 2
if ("twitch")
message = "<B>[src]</B> twitches violently."
message = "twitches violently."
m_type = 1
if ("twitch_s")
message = "<B>[src]</B> twitches."
message = "twitches."
m_type = 1
if ("nod")
message = "<B>[src]</B> nods."
message = "nods."
m_type = 1
if ("deathgasp")
message = "<B>[src]</B> shudders violently for a moment, then becomes motionless, its eyes slowly darkening."
message = "shudders violently for a moment, then becomes motionless, its eyes slowly darkening."
m_type = 1
if ("glare")
@@ -100,9 +100,9 @@
param = null
if (param)
message = "<B>[src]</B> glares at [param]."
message = "glares at [param]."
else
message = "<B>[src]</B> glares."
message = "glares."
if ("stare")
var/M = null
@@ -115,9 +115,9 @@
param = null
if (param)
message = "<B>[src]</B> stares at [param]."
message = "stares at [param]."
else
message = "<B>[src]</B> stares."
message = "stares."
if ("look")
var/M = null
@@ -131,9 +131,9 @@
param = null
if (param)
message = "<B>[src]</B> looks at [param]."
message = "looks at [param]."
else
message = "<B>[src]</B> looks."
message = "looks."
m_type = 1
if("beep")
@@ -147,9 +147,9 @@
param = null
if (param)
message = "<B>[src]</B> beeps at [param]."
message = "beeps at [param]."
else
message = "<B>[src]</B> beeps."
message = "beeps."
playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0)
m_type = 1
@@ -164,9 +164,9 @@
param = null
if (param)
message = "<B>[src]</B> pings at [param]."
message = "pings at [param]."
else
message = "<B>[src]</B> pings."
message = "pings."
playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
m_type = 1
@@ -181,15 +181,15 @@
param = null
if (param)
message = "<B>[src]</B> buzzes at [param]."
message = "buzzes at [param]."
else
message = "<B>[src]</B> buzzes."
message = "buzzes."
playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
m_type = 1
if("law")
if (istype(module,/obj/item/weapon/robot_module/security))
message = "<B>[src]</B> shows its legal authorization barcode."
message = "shows its legal authorization barcode."
playsound(src.loc, 'sound/voice/biamthelaw.ogg', 50, 0)
m_type = 2
@@ -211,10 +211,6 @@
src << "\blue Unusable emote '[act]'. Say *help for a list."
if ((message && src.stat == 0))
if (m_type & 1)
for(var/mob/O in viewers(src, null))
O.show_message(message, m_type)
else
for(var/mob/O in hearers(src, null))
O.show_message(message, m_type)
custom_emote(m_type,message)
return

View File

@@ -51,6 +51,37 @@
// blind_message (optional) is what blind people will hear e.g. "You hear something!"
/mob/visible_message(var/message, var/self_message, var/blind_message)
var/list/seeing_obj = list()
for(var/I in view(world.view, get_turf(usr))) //get_turf is needed to stop weirdness with x-ray.
if(istype(I, /mob/))
var/mob/M = I
for(var/obj/O in M.contents)
seeing_obj |= O
else if(istype(I, /obj/))
var/obj/O = I
seeing_obj |= O
for (var/mob/O in viewers(get_turf(src), null))
if(O.see_invisible < invisibility)
continue // Cannot view the invisible
var/msg = message
if(O.status_flags & PASSEMOTES)
for(var/obj/item/weapon/holder/H in O.contents)
H.show_message( msg, 1, blind_message, 2)
for(var/mob/living/M in O.contents)
M.show_message( msg, 1, blind_message, 2)
if(self_message && O==src)
msg = self_message
O.show_message( msg, 1, blind_message, 2)
for(var/obj/O in seeing_obj)
spawn(0)
if(O) //It's possible that it could be deleted in the meantime.
O.show_message( message, 1, blind_message, 2)
/*
for(var/mob/M in viewers(src))
if(M.see_invisible < invisibility)
continue // Cannot view the invisible
@@ -58,14 +89,40 @@
if(self_message && M==src)
msg = self_message
M.show_message( msg, 1, blind_message, 2)
*/
// Show a message to all mobs in sight of this atom
// Use for objects performing visible actions
// message is output to anyone who can see, e.g. "The [src] does something!"
// blind_message (optional) is what blind people will hear e.g. "You hear something!"
/atom/proc/visible_message(var/message, var/blind_message)
for(var/mob/M in viewers(src))
M.show_message( message, 1, blind_message, 2)
var/list/seeing_obj = list()
for(var/I in view(world.view, get_turf(src))) //get_turf is needed to stop weirdness with x-ray.
if(istype(I, /mob/))
var/mob/M = I
for(var/obj/O in M.contents)
seeing_obj |= O
else if(istype(I, /obj/))
var/obj/O = I
seeing_obj |= O
for (var/mob/O in viewers(get_turf(src), null))
if(O.see_invisible < invisibility)
continue // Cannot view the invisible
var/msg = message
if(O.status_flags & PASSEMOTES)
for(var/obj/item/weapon/holder/H in O.contents)
H.show_message( msg, 1, blind_message, 2)
for(var/mob/living/M in O.contents)
M.show_message( msg, 1, blind_message, 2)
O.show_message( msg, 1, blind_message, 2)
for(var/obj/O in seeing_obj)
spawn(0)
if(O) //It's possible that it could be deleted in the meantime.
O.show_message( message, 1, blind_message, 2)
// Returns an amount of power drawn from the object (-1 if it's not viable).
// If drain_check is set it will not actually drain power, just return a value.