implements whisper and subtle for soulcatcher mobs (#17212)

* implements whisper and subtle for soulcatcher mobs

* .

* .
This commit is contained in:
Kashargul
2025-03-01 13:05:41 -05:00
committed by GitHub
parent cc0984aaf1
commit 49ae2d6b19
+47 -24
View File
@@ -72,52 +72,77 @@
/datum/nifsoft/soulcatcher/proc/notify_into(var/message)
var/sound = nif.good_sound
message = " " + span_bold("Soulcatcher") + " displays, \"" + span_notice(span_nif("[message]")) + "\""
to_chat(nif.human,
type = MESSAGE_TYPE_NIF,
html = span_nif(span_bold("\[[icon2html(nif.big_icon, nif.human)]NIF\]") + " " + span_bold("Soulcatcher") + " displays, \"" + span_notice(span_nif("[message]")) + "\""))
html = span_nif(span_bold("\[[icon2html(nif.big_icon, nif.human)]NIF\]") + message))
nif.human << sound
for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs)
to_chat(CS,
type = MESSAGE_TYPE_NIF,
html = span_nif(span_bold("\[[icon2html(nif.big_icon, CS.client)]NIF\]") + " " + span_bold("Soulcatcher") + " displays, \"" + span_notice(span_nif("[message]")) + "\""))
html = span_nif(span_bold("\[[icon2html(nif.big_icon, CS.client)]NIF\]") + message))
CS << sound
/datum/nifsoft/soulcatcher/proc/say_into(var/message, var/mob/living/sender, var/mob/eyeobj)
/datum/nifsoft/soulcatcher/proc/say_into(var/message, var/mob/living/sender, var/mob/eyeobj, var/whisper)
var/sender_name = eyeobj ? eyeobj.name : sender.name
//AR Projecting
if(eyeobj)
sender.eyeobj.visible_message(span_game(span_say(span_bold("[sender_name]") + " says, \"[message]\"")))
var/speak_verb = "says"
message = span_game(span_say(span_bold("[sender_name]") + " [speak_verb], \"[message]\""))
if(whisper)
speak_verb = "whispers"
sender.eyeobj.visible_message(span_italics(message), range = 1)
else
sender.eyeobj.visible_message(message)
//Not AR Projecting
else
var/speak_verb = "speaks"
message = " " + span_bold("[sender_name]") + " [speak_verb], \"[message]\""
to_chat(nif.human,
type = MESSAGE_TYPE_NIF,
html = span_nif(span_bold("\[[icon2html(nif.big_icon, nif.human.client)]NIF\]") + " " + span_bold("[sender_name]") + " speaks, \"[message]\""))
for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs)
to_chat(CS,
html = span_nif(span_bold("\[[icon2html(nif.big_icon, nif.human.client)]NIF\]") + message))
if(whisper)
speak_verb = "whispers"
to_chat(sender,
type = MESSAGE_TYPE_NIF,
html = span_nif(span_bold("\[[icon2html(nif.big_icon, CS.client)]NIF\]") + " " + span_bold("[sender_name]") + " speaks, \"[message]\""))
html = span_nif(span_bold("\[[icon2html(nif.big_icon, sender.client)]NIF\]") + span_italics(message)))
else
for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs)
to_chat(CS,
type = MESSAGE_TYPE_NIF,
html = span_nif(span_bold("\[[icon2html(nif.big_icon, CS.client)]NIF\]") + message))
log_nsay(message,nif.human.real_name,sender)
/datum/nifsoft/soulcatcher/proc/emote_into(var/message, var/mob/living/sender, var/mob/eyeobj)
/datum/nifsoft/soulcatcher/proc/emote_into(var/message, var/mob/living/sender, var/mob/eyeobj, var/whisper)
var/sender_name = eyeobj ? eyeobj.name : sender.name
//AR Projecting
if(eyeobj)
sender.eyeobj.visible_message(span_emote("[sender_name] [message]"))
var/range = world.view
if(whisper)
range = 1
sender.eyeobj.visible_message(span_emote("[sender_name] [message]"), range = range)
//Not AR Projecting
else
message = " " + span_bold("[sender_name]") + " [message]"
to_chat(nif.human,
type = MESSAGE_TYPE_NIF,
html = span_nif(span_bold("\[[icon2html(nif.big_icon,nif.human.client)]NIF\]") + " " + span_bold("[sender_name]") + " [message]"))
for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs)
to_chat(CS,
html = span_nif(span_bold("\[[icon2html(nif.big_icon,nif.human.client)]NIF\]") + message))
if(whisper)
to_chat(sender,
type = MESSAGE_TYPE_NIF,
html = span_nif(span_bold("\[[icon2html(nif.big_icon,CS.client)]NIF\]") + " " + span_bold("[sender_name]") + " [message]"))
html = span_nif(span_bold("\[[icon2html(nif.big_icon,sender.client)]NIF\]") + span_italics(message)))
else
for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs)
to_chat(CS,
type = MESSAGE_TYPE_NIF,
html = span_nif(span_bold("\[[icon2html(nif.big_icon,CS.client)]NIF\]") + message))
log_nme(message,nif.human.real_name,sender)
@@ -347,16 +372,6 @@
return FALSE
..()
/mob/living/carbon/brain/caught_soul/me_verb_subtle()
set hidden = TRUE
return FALSE
/mob/living/carbon/brain/caught_soul/whisper()
set hidden = TRUE
return FALSE
/mob/living/carbon/brain/caught_soul/face_atom(var/atom/A)
if(eyeobj)
return eyeobj.face_atom(A)
@@ -369,6 +384,14 @@
else
return ..(direction)
/mob/living/carbon/brain/caught_soul/me_verb_subtle(message as message)
if(silent) return FALSE
soulcatcher.emote_into(message,src,eyeobj,TRUE)
/mob/living/carbon/brain/caught_soul/whisper(message as text)
if(silent) return FALSE
soulcatcher.say_into(message,src,eyeobj,TRUE)
/mob/living/carbon/brain/caught_soul/say(var/message, var/datum/language/speaking = null, var/whispering = 0)
if(silent) return FALSE
soulcatcher.say_into(message,src,eyeobj)