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) master.show_message(rendered, 2)
return 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) /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. var/obj/effect/overlay/hologram = new(T)//Spawn a blank effect at the location.
hologram.icon = A.holo_icon hologram.icon = A.holo_icon

View File

@@ -258,6 +258,12 @@
occupant.show_message(rendered, 2) 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 //// ///// Action processing ////
//////////////////////////// ////////////////////////////

View File

@@ -160,6 +160,13 @@
var/rendered = "<span class='message'>[text]</span>" var/rendered = "<span class='message'>[text]</span>"
carded_ai.show_message(rendered, 2) 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) /obj/item/device/aicard/relaymove(var/mob/user, var/direction)
if(src.loc && istype(src.loc.loc, /obj/item/rig_module)) if(src.loc && istype(src.loc.loc, /obj/item/rig_module))

View File

@@ -324,3 +324,9 @@
var/rendered = "<span class='message'>[text]</span>" var/rendered = "<span class='message'>[text]</span>"
pai.show_message(rendered, 2) 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 else
storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] [verb], \"[msg]\"" 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) /obj/item/device/taperecorder/attackby(obj/item/weapon/W as obj, mob/user as mob)
..() ..()
if(istype(W, /obj/item/weapon/card/emag)) if(istype(W, /obj/item/weapon/card/emag))
@@ -146,7 +165,10 @@
if(storedinfo.len < i) if(storedinfo.len < i)
break break
var/turf/T = get_turf(src) 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) if(storedinfo.len < i+1)
playsleepseconds = 1 playsleepseconds = 1
sleep(10) sleep(10)
@@ -200,7 +222,10 @@
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(src)) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(src))
var/t1 = "<B>Transcript:</B><BR><BR>" var/t1 = "<B>Transcript:</B><BR><BR>"
for(var/i=1,storedinfo.len >= i,i++) 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.info = t1
P.name = "Transcript" P.name = "Transcript"
canprint = 0 canprint = 0

View File

@@ -450,6 +450,18 @@
var/obj/O = A var/obj/O = A
O.hear_talk(M, text, verb, speaking) 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 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. //Returns -1 if the atom was not found on container.
/atom/proc/storage_depth(atom/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) /obj/proc/see_emote(mob/M as mob, text, var/emote_type)
return return
/obj/proc/show_message(msg, type, alt, alt_type)
return

View File

@@ -302,6 +302,18 @@
var/obj/O = A var/obj/O = A
O.hear_talk(M, text, verb, speaking) 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) /obj/structure/closet/attack_generic(var/mob/user, var/damage, var/attack_message = "destroys", var/wallbreaker)
if(!damage || !wallbreaker) if(!damage || !wallbreaker)
return return

View File

@@ -33,6 +33,14 @@
pockets.hear_talk(M, msg, verb, speaking) 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. //Jackets with buttons, used for labcoats, IA jackets, First Responder jackets, and brown jackets.
/obj/item/clothing/suit/storage/toggle /obj/item/clothing/suit/storage/toggle
var/icon_open var/icon_open

View File

@@ -38,6 +38,14 @@
hold.hear_talk(M, msg, verb, speaking) 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) /obj/item/clothing/accessory/storage/attack_self(mob/user as mob)
user << "<span class='notice'>You empty [src].</span>" user << "<span class='notice'>You empty [src].</span>"
var/turf/T = get_turf(src) var/turf/T = get_turf(src)

View File

@@ -32,9 +32,9 @@
for(var/mob/M in src.contents) for(var/mob/M in src.contents)
M.attackby(W,user) 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) 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 procs and vars for scooping up
/mob/living/var/holder_type /mob/living/var/holder_type

View File

@@ -21,15 +21,15 @@
switch(act) switch(act)
if ("airguitar") if ("airguitar")
if (!src.restrained()) 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 m_type = 1
if ("blink") if ("blink")
message = "<B>[src]</B> blinks." message = "blinks."
m_type = 1 m_type = 1
if ("blink_r") if ("blink_r")
message = "<B>[src]</B> blinks rapidly." message = "blinks rapidly."
m_type = 1 m_type = 1
if ("bow") if ("bow")
@@ -44,9 +44,9 @@
param = null param = null
if (param) if (param)
message = "<B>[src]</B> bows to [param]." message = "bows to [param]."
else else
message = "<B>[src]</B> bows." message = "bows."
m_type = 1 m_type = 1
if ("custom") if ("custom")
@@ -94,73 +94,73 @@
param = null param = null
if (param) if (param)
message = "<B>[src]</B> salutes to [param]." message = "salutes to [param]."
else else
message = "<B>[src]</b> salutes." message = "salutes."
m_type = 1 m_type = 1
if ("choke") if ("choke")
if(miming) if(miming)
message = "<B>[src]</B> clutches his throat desperately!" message = "clutches his throat desperately!"
m_type = 1 m_type = 1
else else
if (!muzzled) if (!muzzled)
message = "<B>[src]</B> chokes!" message = "chokes!"
m_type = 2 m_type = 2
else else
message = "<B>[src]</B> makes a strong noise." message = "makes a strong noise."
m_type = 2 m_type = 2
if ("clap") if ("clap")
if (!src.restrained()) if (!src.restrained())
message = "<B>[src]</B> claps." message = "claps."
m_type = 2 m_type = 2
if(miming) if(miming)
m_type = 1 m_type = 1
if ("flap") if ("flap")
if (!src.restrained()) 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 m_type = 2
if(miming) if(miming)
m_type = 1 m_type = 1
if ("aflap") if ("aflap")
if (!src.restrained()) 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 m_type = 2
if(miming) if(miming)
m_type = 1 m_type = 1
if ("drool") if ("drool")
message = "<B>[src]</B> drools." message = "drools."
m_type = 1 m_type = 1
if ("eyebrow") if ("eyebrow")
message = "<B>[src]</B> raises an eyebrow." message = "raises an eyebrow."
m_type = 1 m_type = 1
if ("chuckle") if ("chuckle")
if(miming) if(miming)
message = "<B>[src]</B> appears to chuckle." message = "appears to chuckle."
m_type = 1 m_type = 1
else else
if (!muzzled) if (!muzzled)
message = "<B>[src]</B> chuckles." message = "chuckles."
m_type = 2 m_type = 2
else else
message = "<B>[src]</B> makes a noise." message = "makes a noise."
m_type = 2 m_type = 2
if ("twitch") if ("twitch")
message = "<B>[src]</B> twitches violently." message = "twitches violently."
m_type = 1 m_type = 1
if ("twitch_s") if ("twitch_s")
message = "<B>[src]</B> twitches." message = "twitches."
m_type = 1 m_type = 1
if ("faint") if ("faint")
message = "<B>[src]</B> faints." message = "faints."
if(src.sleeping) if(src.sleeping)
return //Can't faint while asleep return //Can't faint while asleep
src.sleeping += 10 //Short-short nap src.sleeping += 10 //Short-short nap
@@ -168,58 +168,58 @@
if ("cough") if ("cough")
if(miming) if(miming)
message = "<B>[src]</B> appears to cough!" message = "appears to cough!"
m_type = 1 m_type = 1
else else
if (!muzzled) if (!muzzled)
message = "<B>[src]</B> coughs!" message = "coughs!"
m_type = 2 m_type = 2
else else
message = "<B>[src]</B> makes a strong noise." message = "makes a strong noise."
m_type = 2 m_type = 2
if ("frown") if ("frown")
message = "<B>[src]</B> frowns." message = "frowns."
m_type = 1 m_type = 1
if ("nod") if ("nod")
message = "<B>[src]</B> nods." message = "nods."
m_type = 1 m_type = 1
if ("blush") if ("blush")
message = "<B>[src]</B> blushes." message = "blushes."
m_type = 1 m_type = 1
if ("wave") if ("wave")
message = "<B>[src]</B> waves." message = "waves."
m_type = 1 m_type = 1
if ("gasp") if ("gasp")
if(miming) if(miming)
message = "<B>[src]</B> appears to be gasping!" message = "appears to be gasping!"
m_type = 1 m_type = 1
else else
if (!muzzled) if (!muzzled)
message = "<B>[src]</B> gasps!" message = "gasps!"
m_type = 2 m_type = 2
else else
message = "<B>[src]</B> makes a weak noise." message = "makes a weak noise."
m_type = 2 m_type = 2
if ("deathgasp") if ("deathgasp")
message = "<B>[src]</B> [species.death_message]" message = "[species.death_message]"
m_type = 1 m_type = 1
if ("giggle") if ("giggle")
if(miming) if(miming)
message = "<B>[src]</B> giggles silently!" message = "giggles silently!"
m_type = 1 m_type = 1
else else
if (!muzzled) if (!muzzled)
message = "<B>[src]</B> giggles." message = "giggles."
m_type = 2 m_type = 2
else else
message = "<B>[src]</B> makes a noise." message = "makes a noise."
m_type = 2 m_type = 2
if ("glare") if ("glare")
@@ -233,9 +233,9 @@
param = null param = null
if (param) if (param)
message = "<B>[src]</B> glares at [param]." message = "glares at [param]."
else else
message = "<B>[src]</B> glares." message = "glares."
if ("stare") if ("stare")
var/M = null var/M = null
@@ -248,9 +248,9 @@
param = null param = null
if (param) if (param)
message = "<B>[src]</B> stares at [param]." message = "stares at [param]."
else else
message = "<B>[src]</B> stares." message = "stares."
if ("look") if ("look")
var/M = null var/M = null
@@ -264,86 +264,86 @@
param = null param = null
if (param) if (param)
message = "<B>[src]</B> looks at [param]." message = "looks at [param]."
else else
message = "<B>[src]</B> looks." message = "looks."
m_type = 1 m_type = 1
if ("grin") if ("grin")
message = "<B>[src]</B> grins." message = "grins."
m_type = 1 m_type = 1
if ("cry") if ("cry")
if(miming) if(miming)
message = "<B>[src]</B> cries." message = "cries."
m_type = 1 m_type = 1
else else
if (!muzzled) if (!muzzled)
message = "<B>[src]</B> cries." message = "cries."
m_type = 2 m_type = 2
else 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 m_type = 2
if ("sigh") if ("sigh")
if(miming) if(miming)
message = "<B>[src]</B> sighs." message = "sighs."
m_type = 1 m_type = 1
else else
if (!muzzled) if (!muzzled)
message = "<B>[src]</B> sighs." message = "sighs."
m_type = 2 m_type = 2
else else
message = "<B>[src]</B> makes a weak noise." message = "makes a weak noise."
m_type = 2 m_type = 2
if ("laugh") if ("laugh")
if(miming) if(miming)
message = "<B>[src]</B> acts out a laugh." message = "acts out a laugh."
m_type = 1 m_type = 1
else else
if (!muzzled) if (!muzzled)
message = "<B>[src]</B> laughs." message = "laughs."
m_type = 2 m_type = 2
else else
message = "<B>[src]</B> makes a noise." message = "makes a noise."
m_type = 2 m_type = 2
if ("mumble") if ("mumble")
message = "<B>[src]</B> mumbles!" message = "mumbles!"
m_type = 2 m_type = 2
if(miming) if(miming)
m_type = 1 m_type = 1
if ("grumble") if ("grumble")
if(miming) if(miming)
message = "<B>[src]</B> grumbles!" message = "grumbles!"
m_type = 1 m_type = 1
if (!muzzled) if (!muzzled)
message = "<B>[src]</B> grumbles!" message = "grumbles!"
m_type = 2 m_type = 2
else else
message = "<B>[src]</B> makes a noise." message = "makes a noise."
m_type = 2 m_type = 2
if ("groan") if ("groan")
if(miming) if(miming)
message = "<B>[src]</B> appears to groan!" message = "appears to groan!"
m_type = 1 m_type = 1
else else
if (!muzzled) if (!muzzled)
message = "<B>[src]</B> groans!" message = "groans!"
m_type = 2 m_type = 2
else else
message = "<B>[src]</B> makes a loud noise." message = "makes a loud noise."
m_type = 2 m_type = 2
if ("moan") if ("moan")
if(miming) if(miming)
message = "<B>[src]</B> appears to moan!" message = "appears to moan!"
m_type = 1 m_type = 1
else else
message = "<B>[src]</B> moans!" message = "moans!"
m_type = 2 m_type = 2
if ("johnny") if ("johnny")
@@ -354,10 +354,10 @@
param = null param = null
else else
if(miming) 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 m_type = 1
else 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 m_type = 2
if ("point") if ("point")
@@ -370,26 +370,26 @@
break break
if (!M) if (!M)
message = "<B>[src]</B> points." message = "points."
else else
pointed(M) pointed(M)
if (M) if (M)
message = "<B>[src]</B> points to [M]." message = "points to [M]."
else else
m_type = 1 m_type = 1
if ("raise") if ("raise")
if (!src.restrained()) if (!src.restrained())
message = "<B>[src]</B> raises a hand." message = "raises a hand."
m_type = 1 m_type = 1
if("shake") 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 m_type = 1
if ("shrug") if ("shrug")
message = "<B>[src]</B> shrugs." message = "shrugs."
m_type = 1 m_type = 1
if ("signal") if ("signal")
@@ -397,85 +397,85 @@
var/t1 = round(text2num(param)) var/t1 = round(text2num(param))
if (isnum(t1)) if (isnum(t1))
if (t1 <= 5 && (!src.r_hand || !src.l_hand)) 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)) 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 m_type = 1
if ("smile") if ("smile")
message = "<B>[src]</B> smiles." message = "smiles."
m_type = 1 m_type = 1
if ("shiver") if ("shiver")
message = "<B>[src]</B> shivers." message = "shivers."
m_type = 2 m_type = 2
if(miming) if(miming)
m_type = 1 m_type = 1
if ("pale") if ("pale")
message = "<B>[src]</B> goes pale for a second." message = "goes pale for a second."
m_type = 1 m_type = 1
if ("tremble") if ("tremble")
message = "<B>[src]</B> trembles in fear!" message = "trembles in fear!"
m_type = 1 m_type = 1
if ("sneeze") if ("sneeze")
if (miming) if (miming)
message = "<B>[src]</B> sneezes." message = "sneezes."
m_type = 1 m_type = 1
else else
if (!muzzled) if (!muzzled)
message = "<B>[src]</B> sneezes." message = "sneezes."
m_type = 2 m_type = 2
else else
message = "<B>[src]</B> makes a strange noise." message = "makes a strange noise."
m_type = 2 m_type = 2
if ("sniff") if ("sniff")
message = "<B>[src]</B> sniffs." message = "sniffs."
m_type = 2 m_type = 2
if(miming) if(miming)
m_type = 1 m_type = 1
if ("snore") if ("snore")
if (miming) if (miming)
message = "<B>[src]</B> sleeps soundly." message = "sleeps soundly."
m_type = 1 m_type = 1
else else
if (!muzzled) if (!muzzled)
message = "<B>[src]</B> snores." message = "snores."
m_type = 2 m_type = 2
else else
message = "<B>[src]</B> makes a noise." message = "makes a noise."
m_type = 2 m_type = 2
if ("whimper") if ("whimper")
if (miming) if (miming)
message = "<B>[src]</B> appears hurt." message = "appears hurt."
m_type = 1 m_type = 1
else else
if (!muzzled) if (!muzzled)
message = "<B>[src]</B> whimpers." message = "whimpers."
m_type = 2 m_type = 2
else else
message = "<B>[src]</B> makes a weak noise." message = "makes a weak noise."
m_type = 2 m_type = 2
if ("wink") if ("wink")
message = "<B>[src]</B> winks." message = "winks."
m_type = 1 m_type = 1
if ("yawn") if ("yawn")
if (!muzzled) if (!muzzled)
message = "<B>[src]</B> yawns." message = "yawns."
m_type = 2 m_type = 2
if(miming) if(miming)
m_type = 1 m_type = 1
if ("collapse") if ("collapse")
Paralyse(2) Paralyse(2)
message = "<B>[src]</B> collapses!" message = "collapses!"
m_type = 2 m_type = 2
if(miming) if(miming)
m_type = 1 m_type = 1
@@ -493,9 +493,9 @@
M = null M = null
if (M) if (M)
message = "<B>[src]</B> hugs [M]." message = "hugs [M]."
else else
message = "<B>[src]</B> hugs \himself." message = "hugs [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]."
if ("handshake") if ("handshake")
m_type = 1 m_type = 1
@@ -511,9 +511,9 @@
if (M) if (M)
if (M.canmove && !M.r_hand && !M.restrained()) if (M.canmove && !M.r_hand && !M.restrained())
message = "<B>[src]</B> shakes hands with [M]." message = "shakes hands with [M]."
else 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") if("dap")
m_type = 1 m_type = 1
@@ -525,20 +525,20 @@
M = A M = A
break break
if (M) if (M)
message = "<B>[src]</B> gives daps to [M]." message = "gives daps to [M]."
else 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 ("scream")
if (miming) if (miming)
message = "<B>[src]</B> acts out a scream!" message = "acts out a scream!"
m_type = 1 m_type = 1
else else
if (!muzzled) if (!muzzled)
message = "<B>[src]</B> screams!" message = "screams!"
m_type = 2 m_type = 2
else else
message = "<B>[src]</B> makes a very loud noise." message = "makes a very loud noise."
m_type = 2 m_type = 2
if ("help") if ("help")
@@ -553,23 +553,7 @@
if (message) if (message)
log_emote("[name]/[key] : [message]") log_emote("[name]/[key] : [message]")
custom_emote(m_type,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)
/mob/living/carbon/human/verb/pose() /mob/living/carbon/human/verb/pose()
@@ -577,7 +561,7 @@
set desc = "Sets a description which will be shown when someone examines you." set desc = "Sets a description which will be shown when someone examines you."
set category = "IC" 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() /mob/living/carbon/human/verb/set_flavor()
set name = "Set Flavour Text" set name = "Set Flavour Text"

View File

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

View File

@@ -51,6 +51,37 @@
// blind_message (optional) is what blind people will hear e.g. "You hear something!" // 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) /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)) for(var/mob/M in viewers(src))
if(M.see_invisible < invisibility) if(M.see_invisible < invisibility)
continue // Cannot view the invisible continue // Cannot view the invisible
@@ -58,14 +89,40 @@
if(self_message && M==src) if(self_message && M==src)
msg = self_message msg = self_message
M.show_message( msg, 1, blind_message, 2) M.show_message( msg, 1, blind_message, 2)
*/
// Show a message to all mobs in sight of this atom // Show a message to all mobs in sight of this atom
// Use for objects performing visible actions // Use for objects performing visible actions
// message is output to anyone who can see, e.g. "The [src] does something!" // 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!" // blind_message (optional) is what blind people will hear e.g. "You hear something!"
/atom/proc/visible_message(var/message, var/blind_message) /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). // 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. // If drain_check is set it will not actually drain power, just return a value.