added hear_message, like hear_talk but for audible emotes, voice analyzer & newscaster support

This commit is contained in:
Tastyfish
2015-12-13 04:36:41 -05:00
parent 3986cbe698
commit f39649be57
12 changed files with 68 additions and 9 deletions
+3
View File
@@ -85,6 +85,9 @@
if(bombassembly)
bombassembly.hear_talk(M, msg)
/obj/item/device/onetankbomb/hear_message(mob/living/M as mob, msg)
if(bombassembly)
bombassembly.hear_message(M, msg)
// ---------- Procs below are for tanks that are used exclusively in 1-tank bombs ----------
+6
View File
@@ -100,6 +100,12 @@
a_left.hear_talk(M, msg)
if(a_right)
a_right.hear_talk(M, msg)
hear_message(mob/living/M as mob, msg)
if(a_left)
a_left.hear_message(M, msg)
if(a_right)
a_right.hear_message(M, msg)
proc/process_movement() // infrared beams and prox sensors
if(a_left && a_right)
+10 -2
View File
@@ -6,6 +6,7 @@
origin_tech = "magnets=1"
var/listening = 0
var/recorded = null //the activation message
var/recorded_type = 0 // 0 for say, 1 for emote
bomb_name = "voice-activated bomb"
@@ -16,15 +17,22 @@
return "[src] is deactivated."
hear_talk(mob/living/M as mob, msg)
hear_input(M, msg, 0)
hear_message(mob/living/M as mob, msg)
hear_input(M, msg, 1)
proc/hear_input(mob/living/M as mob, msg, type)
if(!istype(M,/mob/living))
return
if(listening)
recorded = msg
recorded_type = type
listening = 0
var/turf/T = get_turf(src) //otherwise it won't work in hand
T.visible_message("\icon[src] beeps, \"Activation message is '[recorded]'.\"")
T.visible_message("\icon[src] beeps, \"Activation message is [type ? "the sound when one [recorded]" : "'[recorded]'."]\"")
else
if(findtext(msg, recorded))
if(findtext(msg, recorded) && type == recorded_type)
pulse(0)
var/turf/T = get_turf(src) //otherwise it won't work in hand
T.visible_message("\icon[src] \red beeps!")
+4
View File
@@ -33,6 +33,10 @@
pockets.hear_talk(M, msg)
..()
/obj/item/clothing/suit/storage/hear_message(mob/M, var/msg)
pockets.hear_message(M, msg)
..()
/obj/item/clothing/suit/storage/proc/return_inv()
var/list/L = list( )
@@ -40,6 +40,10 @@
hold.hear_talk(M, msg, verb, speaking)
..()
/obj/item/clothing/accessory/storage/hear_message(mob/M, var/msg, verb, datum/language/speaking)
hold.hear_message(M, msg)
..()
/obj/item/clothing/accessory/storage/proc/return_inv()
var/list/L = list( )
+15 -1
View File
@@ -106,7 +106,21 @@
for(var/mob/M in get_mobs_in_view(range, src))
if(self_message && M==src)
msg = self_message
M.show_message( msg, 2, deaf_message, 1)
M.show_message(msg, 2, deaf_message, 1)
// based on say code
var/omsg = replacetext(message, "<B>[src]</B> ", "")
var/list/listening_obj = new
for(var/atom/movable/A in view(range, src))
if(istype(A, /mob))
var/mob/M = A
for(var/obj/O in M.contents)
listening_obj |= O
else if(istype(A, /obj))
var/obj/O = A
listening_obj |= O
for(var/obj/O in listening_obj)
O.hear_message(src, omsg)
// Show a message to all mobs in earshot of this atom
// Use for objects performing audible actions
+8 -4
View File
@@ -497,7 +497,6 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
var/icon_on = "videocam_on"
var/icon_off = "videocam"
var/canhear_range = 7
var/watcherslist = list()
/obj/item/device/videocam/attack_self(mob/user)
on = !on
@@ -523,14 +522,19 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
if(..(user, 1))
user << "This video camera can send live feeds to the entertainment network. It's [camera ? "" : "in"]active."
/obj/item/device/videocam/hear_talk(mob/M as mob, msg)
if (camera && on)
if(get_dist(src, M) <= canhear_range)
talk_into(M, msg)
for(var/mob/living/carbon/human/H in watcherslist)
H.show_message(text("\blue (Newscaster) [] says, '[]'",M,msg), 1)
for(var/obj/machinery/computer/security/telescreen/T)
if(T.current == camera)
T.audible_message("<span class='game radio'><span class='name'>(Newscaster) [M]</span> says, '[msg]'", hearing_distance = 2)
/obj/item/device/videocam/hear_message(mob/M as mob, msg)
if (camera && on)
for(var/obj/machinery/computer/security/telescreen/T)
if(T.current == camera)
T.audible_message("<span class='game radio'><span class='name'>(Newscaster) [M]</span> [msg]", hearing_distance = 2)
///hauntings, like hallucinations but more spooky
@@ -266,6 +266,10 @@
if(assembly)
assembly.hear_talk(M, msg)
/obj/item/weapon/reagent_containers/glass/beaker/hear_message(mob/living/M, msg)
if(assembly)
assembly.hear_message(M, msg)
/obj/item/weapon/reagent_containers/glass/beaker/large
name = "large beaker"
desc = "A large beaker. Can hold up to 100 units."
@@ -176,6 +176,10 @@
if(rig)
rig.hear_talk(M, msg)
/obj/structure/reagent_dispensers/fueltank/hear_message(mob/living/M, msg)
if(rig)
rig.hear_message(M, msg)
/obj/structure/reagent_dispensers/fueltank/Bump()
..()
if(rig)