mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-12 15:45:25 +01:00
added hear_message, like hear_talk but for audible emotes, voice analyzer & newscaster support
This commit is contained in:
@@ -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 ----------
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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!")
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user