mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Datumizes saymodes (#33013)
* Datumized saymodes! * Update living.dm * ...
This commit is contained in:
committed by
Jordan Brown
parent
b9848d2640
commit
36414ac1e6
@@ -187,3 +187,5 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list(
|
|||||||
/obj/item/stack/sheet/plasmarglass)))
|
/obj/item/stack/sheet/plasmarglass)))
|
||||||
|
|
||||||
#define is_glass_sheet(O) (is_type_in_typecache(O, GLOB.glass_sheet_types))
|
#define is_glass_sheet(O) (is_type_in_typecache(O, GLOB.glass_sheet_types))
|
||||||
|
|
||||||
|
#define isblobmonster(O) (istype(O, /mob/living/simple_animal/hostile/blob))
|
||||||
@@ -49,4 +49,10 @@
|
|||||||
#define LOGCHAT "chat"
|
#define LOGCHAT "chat"
|
||||||
#define LOGASAY "adminsay"
|
#define LOGASAY "adminsay"
|
||||||
#define LOGCOMMENT "comment"
|
#define LOGCOMMENT "comment"
|
||||||
#define LOGOOC "ooc"
|
#define LOGOOC "ooc"
|
||||||
|
|
||||||
|
|
||||||
|
#define LINGHIVE_NONE 0
|
||||||
|
#define LINGHIVE_OUTSIDER 1
|
||||||
|
#define LINGHIVE_LING 2
|
||||||
|
#define LINGHIVE_LINK 3
|
||||||
@@ -30,7 +30,7 @@ SUBSYSTEM_DEF(atoms)
|
|||||||
initialized = INITIALIZATION_INNEW_MAPLOAD
|
initialized = INITIALIZATION_INNEW_MAPLOAD
|
||||||
|
|
||||||
LAZYINITLIST(late_loaders)
|
LAZYINITLIST(late_loaders)
|
||||||
|
|
||||||
var/count
|
var/count
|
||||||
var/list/mapload_arg = list(TRUE)
|
var/list/mapload_arg = list(TRUE)
|
||||||
if(atoms)
|
if(atoms)
|
||||||
@@ -60,10 +60,10 @@ SUBSYSTEM_DEF(atoms)
|
|||||||
A.LateInitialize()
|
A.LateInitialize()
|
||||||
testing("Late initialized [late_loaders.len] atoms")
|
testing("Late initialized [late_loaders.len] atoms")
|
||||||
late_loaders.Cut()
|
late_loaders.Cut()
|
||||||
|
|
||||||
if(atoms)
|
if(atoms)
|
||||||
. = created_atoms + atoms
|
. = created_atoms + atoms
|
||||||
created_atoms = null
|
created_atoms = null
|
||||||
|
|
||||||
/datum/controller/subsystem/atoms/proc/InitAtom(atom/A, list/arguments)
|
/datum/controller/subsystem/atoms/proc/InitAtom(atom/A, list/arguments)
|
||||||
var/the_type = A.type
|
var/the_type = A.type
|
||||||
@@ -77,7 +77,7 @@ SUBSYSTEM_DEF(atoms)
|
|||||||
|
|
||||||
if(start_tick != world.time)
|
if(start_tick != world.time)
|
||||||
BadInitializeCalls[the_type] |= BAD_INIT_SLEPT
|
BadInitializeCalls[the_type] |= BAD_INIT_SLEPT
|
||||||
|
|
||||||
var/qdeleted = FALSE
|
var/qdeleted = FALSE
|
||||||
|
|
||||||
if(result != INITIALIZE_HINT_NORMAL)
|
if(result != INITIALIZE_HINT_NORMAL)
|
||||||
@@ -92,12 +92,12 @@ SUBSYSTEM_DEF(atoms)
|
|||||||
qdeleted = TRUE
|
qdeleted = TRUE
|
||||||
else
|
else
|
||||||
BadInitializeCalls[the_type] |= BAD_INIT_NO_HINT
|
BadInitializeCalls[the_type] |= BAD_INIT_NO_HINT
|
||||||
|
|
||||||
if(!A) //possible harddel
|
if(!A) //possible harddel
|
||||||
qdeleted = TRUE
|
qdeleted = TRUE
|
||||||
else if(!A.initialized)
|
else if(!A.initialized)
|
||||||
BadInitializeCalls[the_type] |= BAD_INIT_DIDNT_INIT
|
BadInitializeCalls[the_type] |= BAD_INIT_DIDNT_INIT
|
||||||
|
|
||||||
return qdeleted || QDELING(A)
|
return qdeleted || QDELING(A)
|
||||||
|
|
||||||
/datum/controller/subsystem/atoms/proc/map_loader_begin()
|
/datum/controller/subsystem/atoms/proc/map_loader_begin()
|
||||||
|
|||||||
@@ -3,6 +3,13 @@ SUBSYSTEM_DEF(radio)
|
|||||||
flags = SS_NO_FIRE|SS_NO_INIT
|
flags = SS_NO_FIRE|SS_NO_INIT
|
||||||
|
|
||||||
var/list/datum/radio_frequency/frequencies = list()
|
var/list/datum/radio_frequency/frequencies = list()
|
||||||
|
var/list/saymodes = list()
|
||||||
|
|
||||||
|
/datum/controller/subsystem/radio/PreInit(timeofday)
|
||||||
|
for(var/_SM in subtypesof(/datum/saymode))
|
||||||
|
var/datum/saymode/SM = new _SM()
|
||||||
|
saymodes[SM.key] = SM
|
||||||
|
return ..()
|
||||||
|
|
||||||
/datum/controller/subsystem/radio/proc/add_object(obj/device, new_frequency as num, filter = null as text|null)
|
/datum/controller/subsystem/radio/proc/add_object(obj/device, new_frequency as num, filter = null as text|null)
|
||||||
var/f_text = num2text(new_frequency)
|
var/f_text = num2text(new_frequency)
|
||||||
|
|||||||
112
code/datums/saymode.dm
Normal file
112
code/datums/saymode.dm
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
/datum/saymode
|
||||||
|
var/key
|
||||||
|
var/mode
|
||||||
|
|
||||||
|
//Return FALSE if you have handled the message. Otherwise, return TRUE and saycode will continue doing saycode things.
|
||||||
|
//user = whoever said the message
|
||||||
|
//message = the message
|
||||||
|
//language = the language.
|
||||||
|
/datum/saymode/proc/handle_message(mob/living/user, message, datum/language/language)
|
||||||
|
return TRUE
|
||||||
|
|
||||||
|
|
||||||
|
/datum/saymode/changeling
|
||||||
|
key = "g"
|
||||||
|
mode = MODE_CHANGELING
|
||||||
|
|
||||||
|
/datum/saymode/changeling/handle_message(mob/living/user, message, datum/language/language)
|
||||||
|
switch(user.lingcheck())
|
||||||
|
if(LINGHIVE_LINK)
|
||||||
|
var/msg = "<i><font color=#800040><b>[user.mind]:</b> [message]</font></i>"
|
||||||
|
for(var/_M in GLOB.mob_list)
|
||||||
|
var/mob/M = _M
|
||||||
|
if(M in GLOB.dead_mob_list)
|
||||||
|
var/link = FOLLOW_LINK(M, user)
|
||||||
|
to_chat(M, "[link] [msg]")
|
||||||
|
else
|
||||||
|
switch(M.lingcheck())
|
||||||
|
if(LINGHIVE_LINK, LINGHIVE_LING)
|
||||||
|
to_chat(M, msg)
|
||||||
|
if(LINGHIVE_OUTSIDER)
|
||||||
|
if(prob(40))
|
||||||
|
to_chat(M, "<i><font color=#800080>We can faintly sense an outsider trying to communicate through the hivemind...</font></i>")
|
||||||
|
if(LINGHIVE_LING)
|
||||||
|
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
|
||||||
|
var/msg = "<i><font color=#800080><b>[changeling.changelingID]:</b> [message]</font></i>"
|
||||||
|
log_talk(src,"[changeling.changelingID]/[user.key] : [message]",LOGSAY)
|
||||||
|
for(var/_M in GLOB.mob_list)
|
||||||
|
var/mob/M = _M
|
||||||
|
if(M in GLOB.dead_mob_list)
|
||||||
|
var/link = FOLLOW_LINK(M, user)
|
||||||
|
to_chat(M, "[link] [msg]")
|
||||||
|
else
|
||||||
|
switch(M.lingcheck())
|
||||||
|
if(LINGHIVE_LINK)
|
||||||
|
to_chat(M, msg)
|
||||||
|
if(LINGHIVE_LING)
|
||||||
|
to_chat(M, msg)
|
||||||
|
if(LINGHIVE_OUTSIDER)
|
||||||
|
if(prob(40))
|
||||||
|
to_chat(M, "<i><font color=#800080>We can faintly sense another of our kind trying to communicate through the hivemind...</font></i>")
|
||||||
|
if(LINGHIVE_OUTSIDER)
|
||||||
|
to_chat(user, "<i><font color=#800080>Our senses have not evolved enough to be able to communicate this way...</font></i>")
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
|
||||||
|
/datum/saymode/xeno
|
||||||
|
key = "a"
|
||||||
|
mode = MODE_ALIEN
|
||||||
|
|
||||||
|
/datum/saymode/xeno/handle_message(mob/living/user, message, datum/language/language)
|
||||||
|
if(user.hivecheck())
|
||||||
|
user.alien_talk(message)
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
|
||||||
|
/datum/saymode/vocalcords
|
||||||
|
key = "x"
|
||||||
|
mode = MODE_VOCALCORDS
|
||||||
|
|
||||||
|
/datum/saymode/vocalcords/handle_message(mob/living/user, message, datum/language/language)
|
||||||
|
if(iscarbon(user))
|
||||||
|
var/mob/living/carbon/C = user
|
||||||
|
var/obj/item/organ/vocal_cords/V = C.getorganslot(ORGAN_SLOT_VOICE)
|
||||||
|
if(V && V.can_speak_with())
|
||||||
|
V.handle_speech(message) //message
|
||||||
|
V.speak_with(message) //action
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
|
||||||
|
/datum/saymode/binary //everything that uses .b (silicons, drones, blobbernauts/spores, swarmers)
|
||||||
|
key = "b"
|
||||||
|
mode = MODE_BINARY
|
||||||
|
|
||||||
|
/datum/saymode/binary/handle_message(mob/living/user, message, datum/language/language)
|
||||||
|
if(isswarmer(user))
|
||||||
|
var/mob/living/simple_animal/hostile/swarmer/S = user
|
||||||
|
S.swarmer_chat(message)
|
||||||
|
return FALSE
|
||||||
|
if(isblobmonster(user))
|
||||||
|
var/mob/living/simple_animal/hostile/blob/B = user
|
||||||
|
B.blob_chat(message)
|
||||||
|
return FALSE
|
||||||
|
if(isdrone(user))
|
||||||
|
var/mob/living/simple_animal/drone/D = user
|
||||||
|
D.drone_chat(message)
|
||||||
|
return FALSE
|
||||||
|
if(user.binarycheck())
|
||||||
|
user.robot_talk(message)
|
||||||
|
return FALSE
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
|
||||||
|
/datum/saymode/holopad
|
||||||
|
key = "h"
|
||||||
|
mode = MODE_HOLOPAD
|
||||||
|
|
||||||
|
/datum/saymode/holopad/handle_message(mob/living/user, message, datum/language/language)
|
||||||
|
if(isAI(user))
|
||||||
|
var/mob/living/silicon/ai/AI = user
|
||||||
|
AI.holopad_talk(message, language)
|
||||||
|
return FALSE
|
||||||
|
return FALSE
|
||||||
@@ -56,13 +56,6 @@
|
|||||||
return 1
|
return 1
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/blob/handle_inherent_channels(message, message_mode)
|
|
||||||
if(message_mode == MODE_BINARY)
|
|
||||||
blob_chat(message)
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
..()
|
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/blob/proc/blob_chat(msg)
|
/mob/living/simple_animal/hostile/blob/proc/blob_chat(msg)
|
||||||
var/spanned_message = say_quote(msg, get_spans())
|
var/spanned_message = say_quote(msg, get_spans())
|
||||||
var/rendered = "<font color=\"#EE4000\"><b>\[Blob Telepathy\] [real_name]</b> [spanned_message]</font>"
|
var/rendered = "<font color=\"#EE4000\"><b>\[Blob Telepathy\] [real_name]</b> [spanned_message]</font>"
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
to_chat(target, "<span class='userdanger'>A migraine throbs behind your eyes, you hear yourself screaming - but your mouth has not opened!</span>")
|
to_chat(target, "<span class='userdanger'>A migraine throbs behind your eyes, you hear yourself screaming - but your mouth has not opened!</span>")
|
||||||
for(var/mi in GLOB.mob_list)
|
for(var/mi in GLOB.mob_list)
|
||||||
var/mob/M = mi
|
var/mob/M = mi
|
||||||
if(M.lingcheck() == 2)
|
if(M.lingcheck() == LINGHIVE_LING)
|
||||||
to_chat(M, "<i><font color=#800080>We can sense a foreign presence in the hivemind...</font></i>")
|
to_chat(M, "<i><font color=#800080>We can sense a foreign presence in the hivemind...</font></i>")
|
||||||
target.mind.linglink = 1
|
target.mind.linglink = 1
|
||||||
target.say(":g AAAAARRRRGGGGGHHHHH!!")
|
target.say(":g AAAAARRRRGGGGGHHHHH!!")
|
||||||
|
|||||||
@@ -120,13 +120,6 @@
|
|||||||
if(statpanel("Status"))
|
if(statpanel("Status"))
|
||||||
stat("Resources:",resources)
|
stat("Resources:",resources)
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/swarmer/handle_inherent_channels(message, message_mode)
|
|
||||||
if(message_mode == MODE_BINARY)
|
|
||||||
swarmer_chat(message)
|
|
||||||
return ITALICS | REDUCE_RANGE
|
|
||||||
else
|
|
||||||
. = ..()
|
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/swarmer/get_spans()
|
/mob/living/simple_animal/hostile/swarmer/get_spans()
|
||||||
return ..() | SPAN_ROBOT
|
return ..() | SPAN_ROBOT
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
return ITALICS | REDUCE_RANGE
|
return ITALICS | REDUCE_RANGE
|
||||||
|
|
||||||
/mob/living/brain/lingcheck()
|
/mob/living/brain/lingcheck()
|
||||||
return 0
|
return LINGHIVE_NONE
|
||||||
|
|
||||||
/mob/living/brain/treat_message(message)
|
/mob/living/brain/treat_message(message)
|
||||||
message = capitalize(message)
|
message = capitalize(message)
|
||||||
|
|||||||
@@ -1009,4 +1009,15 @@
|
|||||||
|
|
||||||
/mob/living/proc/add_abilities_to_panel()
|
/mob/living/proc/add_abilities_to_panel()
|
||||||
for(var/obj/effect/proc_holder/A in abilities)
|
for(var/obj/effect/proc_holder/A in abilities)
|
||||||
statpanel("[A.panel]",A.get_panel_text(),A)
|
statpanel("[A.panel]",A.get_panel_text(),A)
|
||||||
|
|
||||||
|
/mob/living/lingcheck()
|
||||||
|
if(mind)
|
||||||
|
var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling)
|
||||||
|
if(changeling)
|
||||||
|
if(changeling.changeling_speak)
|
||||||
|
return LINGHIVE_LING
|
||||||
|
return LINGHIVE_OUTSIDER
|
||||||
|
if(mind && mind.linglink)
|
||||||
|
return LINGHIVE_LINK
|
||||||
|
return LINGHIVE_NONE
|
||||||
|
|||||||
@@ -37,41 +37,42 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
|||||||
//kinda localization -- rastaf0
|
//kinda localization -- rastaf0
|
||||||
//same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding.
|
//same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding.
|
||||||
// Location
|
// Location
|
||||||
"ê" = "right hand",
|
"<EFBFBD>" = "right hand",
|
||||||
"ä" = "left hand",
|
"<EFBFBD>" = "left hand",
|
||||||
"ø" = "intercom",
|
"<EFBFBD>" = "intercom",
|
||||||
|
|
||||||
// Department
|
// Department
|
||||||
"ð" = "department",
|
"<EFBFBD>" = "department",
|
||||||
"ñ" = "Command",
|
"<EFBFBD>" = "Command",
|
||||||
"ò" = "Science",
|
"<EFBFBD>" = "Science",
|
||||||
"ü" = "Medical",
|
"<EFBFBD>" = "Medical",
|
||||||
"ó" = "Engineering",
|
"<EFBFBD>" = "Engineering",
|
||||||
"û" = "Security",
|
"<EFBFBD>" = "Security",
|
||||||
"ã" = "Supply",
|
"<EFBFBD>" = "Supply",
|
||||||
"ì" = "Service",
|
"<EFBFBD>" = "Service",
|
||||||
|
|
||||||
// Faction
|
// Faction
|
||||||
"å" = "Syndicate",
|
"<EFBFBD>" = "Syndicate",
|
||||||
"í" = "CentCom",
|
"<EFBFBD>" = "CentCom",
|
||||||
|
|
||||||
// Species
|
// Species
|
||||||
"è" = "binary",
|
"<EFBFBD>" = "binary",
|
||||||
"ï" = "changeling",
|
"<EFBFBD>" = "changeling",
|
||||||
"ô" = "alientalk",
|
"<EFBFBD>" = "alientalk",
|
||||||
|
|
||||||
// Admin
|
// Admin
|
||||||
"ç" = "admin",
|
"<EFBFBD>" = "admin",
|
||||||
"â" = "deadmin",
|
"<EFBFBD>" = "deadmin",
|
||||||
|
|
||||||
// Misc
|
// Misc
|
||||||
"ù" = "AI Private",
|
"<EFBFBD>" = "AI Private",
|
||||||
"÷" = "cords"
|
"<EFBFBD>" = "cords"
|
||||||
))
|
))
|
||||||
|
|
||||||
/mob/living/say(message, bubble_type,var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE)
|
/mob/living/say(message, bubble_type,var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE)
|
||||||
var/static/list/crit_allowed_modes = list(MODE_WHISPER = TRUE, MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE)
|
var/static/list/crit_allowed_modes = list(MODE_WHISPER = TRUE, MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE)
|
||||||
var/static/list/unconscious_allowed_modes = list(MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE)
|
var/static/list/unconscious_allowed_modes = list(MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE)
|
||||||
|
var/key = get_key(message)
|
||||||
|
|
||||||
var/static/list/one_character_prefix = list(MODE_HEADSET = TRUE, MODE_ROBOT = TRUE, MODE_WHISPER = TRUE)
|
var/static/list/one_character_prefix = list(MODE_HEADSET = TRUE, MODE_ROBOT = TRUE, MODE_WHISPER = TRUE)
|
||||||
|
|
||||||
@@ -134,8 +135,11 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
|||||||
// AIs use inherent channels for the holopad. Most inherent channels
|
// AIs use inherent channels for the holopad. Most inherent channels
|
||||||
// ignore the language argument however.
|
// ignore the language argument however.
|
||||||
|
|
||||||
if(handle_inherent_channels(message, message_mode, language)) //Hiveminds, binary chat & holopad.
|
var/datum/saymode/SM = SSradio.saymodes[key]
|
||||||
return
|
if(key && SM)
|
||||||
|
if(!SM.handle_message(src, message, language))
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
if(!can_speak_vocal(message))
|
if(!can_speak_vocal(message))
|
||||||
to_chat(src, "<span class='warning'>You find yourself unable to speak!</span>")
|
to_chat(src, "<span class='warning'>You find yourself unable to speak!</span>")
|
||||||
@@ -264,7 +268,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
|||||||
INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, I, speech_bubble_recipients, 30)
|
INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, I, speech_bubble_recipients, 30)
|
||||||
|
|
||||||
/mob/proc/binarycheck()
|
/mob/proc/binarycheck()
|
||||||
return 0
|
return FALSE
|
||||||
|
|
||||||
/mob/living/can_speak(message) //For use outside of Say()
|
/mob/living/can_speak(message) //For use outside of Say()
|
||||||
if(can_speak_basic(message) && can_speak_vocal(message))
|
if(can_speak_basic(message) && can_speak_vocal(message))
|
||||||
@@ -307,6 +311,11 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
|||||||
var/key_symbol = lowertext(copytext(message, 2, 3))
|
var/key_symbol = lowertext(copytext(message, 2, 3))
|
||||||
return GLOB.department_radio_keys[key_symbol]
|
return GLOB.department_radio_keys[key_symbol]
|
||||||
|
|
||||||
|
/mob/living/proc/get_key(message)
|
||||||
|
var/key = copytext(message, 1, 2)
|
||||||
|
if(key in GLOB.department_radio_prefixes)
|
||||||
|
return lowertext(copytext(message, 2, 3))
|
||||||
|
|
||||||
/mob/living/proc/get_message_language(message)
|
/mob/living/proc/get_message_language(message)
|
||||||
if(copytext(message, 1, 2) == ",")
|
if(copytext(message, 1, 2) == ",")
|
||||||
var/key = copytext(message, 2, 3)
|
var/key = copytext(message, 2, 3)
|
||||||
@@ -316,60 +325,6 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
|||||||
return LD
|
return LD
|
||||||
return null
|
return null
|
||||||
|
|
||||||
/mob/living/proc/handle_inherent_channels(message, message_mode)
|
|
||||||
if(message_mode == MODE_CHANGELING)
|
|
||||||
switch(lingcheck())
|
|
||||||
if(3)
|
|
||||||
var/msg = "<i><font color=#800040><b>[src.mind]:</b> [message]</font></i>"
|
|
||||||
for(var/_M in GLOB.mob_list)
|
|
||||||
var/mob/M = _M
|
|
||||||
if(M in GLOB.dead_mob_list)
|
|
||||||
var/link = FOLLOW_LINK(M, src)
|
|
||||||
to_chat(M, "[link] [msg]")
|
|
||||||
else
|
|
||||||
switch(M.lingcheck())
|
|
||||||
if(3)
|
|
||||||
to_chat(M, msg)
|
|
||||||
if(2)
|
|
||||||
to_chat(M, msg)
|
|
||||||
if(1)
|
|
||||||
if(prob(40))
|
|
||||||
to_chat(M, "<i><font color=#800080>We can faintly sense an outsider trying to communicate through the hivemind...</font></i>")
|
|
||||||
if(2)
|
|
||||||
var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling)
|
|
||||||
var/msg = "<i><font color=#800080><b>[changeling.changelingID]:</b> [message]</font></i>"
|
|
||||||
log_talk(src,"[changeling.changelingID]/[key] : [message]",LOGSAY)
|
|
||||||
for(var/_M in GLOB.mob_list)
|
|
||||||
var/mob/M = _M
|
|
||||||
if(M in GLOB.dead_mob_list)
|
|
||||||
var/link = FOLLOW_LINK(M, src)
|
|
||||||
to_chat(M, "[link] [msg]")
|
|
||||||
else
|
|
||||||
switch(M.lingcheck())
|
|
||||||
if(3)
|
|
||||||
to_chat(M, msg)
|
|
||||||
if(2)
|
|
||||||
to_chat(M, msg)
|
|
||||||
if(1)
|
|
||||||
if(prob(40))
|
|
||||||
to_chat(M, "<i><font color=#800080>We can faintly sense another of our kind trying to communicate through the hivemind...</font></i>")
|
|
||||||
if(1)
|
|
||||||
to_chat(src, "<i><font color=#800080>Our senses have not evolved enough to be able to communicate this way...</font></i>")
|
|
||||||
return TRUE
|
|
||||||
if(message_mode == MODE_ALIEN)
|
|
||||||
if(hivecheck())
|
|
||||||
alien_talk(message)
|
|
||||||
return TRUE
|
|
||||||
if(message_mode == MODE_VOCALCORDS)
|
|
||||||
if(iscarbon(src))
|
|
||||||
var/mob/living/carbon/C = src
|
|
||||||
var/obj/item/organ/vocal_cords/V = C.getorganslot(ORGAN_SLOT_VOICE)
|
|
||||||
if(V && V.can_speak_with())
|
|
||||||
V.handle_speech(message) //message
|
|
||||||
V.speak_with(message) //action
|
|
||||||
return TRUE
|
|
||||||
return FALSE
|
|
||||||
|
|
||||||
/mob/living/proc/treat_message(message)
|
/mob/living/proc/treat_message(message)
|
||||||
if(getBrainLoss() >= 60)
|
if(getBrainLoss() >= 60)
|
||||||
message = derpspeech(message, stuttering)
|
message = derpspeech(message, stuttering)
|
||||||
@@ -408,22 +363,9 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
|||||||
return ITALICS | REDUCE_RANGE
|
return ITALICS | REDUCE_RANGE
|
||||||
|
|
||||||
if(MODE_BINARY)
|
if(MODE_BINARY)
|
||||||
if(binarycheck())
|
|
||||||
robot_talk(message)
|
|
||||||
return ITALICS | REDUCE_RANGE //Does not return 0 since this is only reached by humans, not borgs or AIs.
|
return ITALICS | REDUCE_RANGE //Does not return 0 since this is only reached by humans, not borgs or AIs.
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
/mob/living/lingcheck() //1 is ling w/ no hivemind. 2 is ling w/hivemind. 3 is ling victim being linked into hivemind.
|
|
||||||
if(mind)
|
|
||||||
var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling)
|
|
||||||
if(changeling)
|
|
||||||
if(changeling.changeling_speak)
|
|
||||||
return 2
|
|
||||||
return 1
|
|
||||||
if(mind && mind.linglink)
|
|
||||||
return 3
|
|
||||||
return 0
|
|
||||||
|
|
||||||
/mob/living/say_mod(input, message_mode)
|
/mob/living/say_mod(input, message_mode)
|
||||||
if(message_mode == MODE_WHISPER)
|
if(message_mode == MODE_WHISPER)
|
||||||
. = verb_whisper
|
. = verb_whisper
|
||||||
|
|||||||
@@ -31,15 +31,6 @@
|
|||||||
else
|
else
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/mob/living/silicon/ai/handle_inherent_channels(message, message_mode, language)
|
|
||||||
. = ..()
|
|
||||||
if(.)
|
|
||||||
return .
|
|
||||||
|
|
||||||
if(message_mode == MODE_HOLOPAD)
|
|
||||||
holopad_talk(message, language)
|
|
||||||
return 1
|
|
||||||
|
|
||||||
//For holopads only. Usable by AI.
|
//For holopads only. Usable by AI.
|
||||||
/mob/living/silicon/ai/proc/holopad_talk(message, language)
|
/mob/living/silicon/ai/proc/holopad_talk(message, language)
|
||||||
|
|
||||||
|
|||||||
@@ -57,14 +57,3 @@
|
|||||||
return MODE_ROBOT
|
return MODE_ROBOT
|
||||||
else
|
else
|
||||||
return .
|
return .
|
||||||
|
|
||||||
/mob/living/silicon/handle_inherent_channels(message, message_mode)
|
|
||||||
. = ..()
|
|
||||||
if(.)
|
|
||||||
return .
|
|
||||||
|
|
||||||
if(message_mode == MODE_BINARY)
|
|
||||||
if(binarycheck())
|
|
||||||
robot_talk(message)
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|||||||
@@ -3,14 +3,6 @@
|
|||||||
/////////////
|
/////////////
|
||||||
//Drone speach
|
//Drone speach
|
||||||
|
|
||||||
/mob/living/simple_animal/drone/handle_inherent_channels(message, message_mode)
|
|
||||||
if(message_mode == MODE_BINARY)
|
|
||||||
drone_chat(message)
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
..()
|
|
||||||
|
|
||||||
|
|
||||||
/mob/living/simple_animal/drone/get_spans()
|
/mob/living/simple_animal/drone/get_spans()
|
||||||
return ..() | SPAN_ROBOT
|
return ..() | SPAN_ROBOT
|
||||||
|
|
||||||
|
|||||||
@@ -79,4 +79,4 @@
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
/mob/proc/lingcheck()
|
/mob/proc/lingcheck()
|
||||||
return 0
|
return LINGHIVE_NONE
|
||||||
|
|||||||
@@ -267,6 +267,7 @@
|
|||||||
#include "code\datums\recipe.dm"
|
#include "code\datums\recipe.dm"
|
||||||
#include "code\datums\riding.dm"
|
#include "code\datums\riding.dm"
|
||||||
#include "code\datums\ruins.dm"
|
#include "code\datums\ruins.dm"
|
||||||
|
#include "code\datums\saymode.dm"
|
||||||
#include "code\datums\shuttles.dm"
|
#include "code\datums\shuttles.dm"
|
||||||
#include "code\datums\soullink.dm"
|
#include "code\datums\soullink.dm"
|
||||||
#include "code\datums\spawners_menu.dm"
|
#include "code\datums\spawners_menu.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user