diff --git a/code/modules/wiremod/components/action/speech.dm b/code/modules/wiremod/components/action/speech.dm index 32495889faf..f149cba9122 100644 --- a/code/modules/wiremod/components/action/speech.dm +++ b/code/modules/wiremod/components/action/speech.dm @@ -9,8 +9,6 @@ category = "Action" circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL - /// Spans to apply to the output message. - var/datum/port/input/color_input // BUBBER ADDITION /// The message to send var/datum/port/input/message /// The quiet mode flag @@ -24,7 +22,6 @@ . += create_ui_notice("Speech Cooldown: [DisplayTimeText(speech_cooldown)]", "orange", "stopwatch") /obj/item/circuit_component/speech/populate_ports() - color_input = add_input_port("Color", PORT_TYPE_STRING, default = "Default") // BUBBER ADDITION message = add_input_port("Message", PORT_TYPE_STRING, trigger = null) quietmode = add_input_port("Quiet Mode", PORT_TYPE_NUMBER, default = 0) @@ -35,12 +32,7 @@ if(TIMER_COOLDOWN_RUNNING(parent.shell, COOLDOWN_CIRCUIT_SPEECH)) return - // BUBBER ADDITION - if(!(color_input.value in GLOB.component_span_color_list)) - color_input.set_value("Default", TRUE) - // BUBBER ADDITION END - if(message.value) var/atom/movable/shell = parent.shell - shell.say(message.value, forced = "circuit speech | [parent.get_creator()]", message_range = quietmode.value > 0 ? WHISPER_RANGE : MESSAGE_RANGE, spans = list(GLOB.component_span_color_list[color_input.value])) // BUBBER EDIT + shell.say(message.value, forced = "circuit speech | [parent.get_creator()]", message_range = quietmode.value > 0 ? WHISPER_RANGE : MESSAGE_RANGE) TIMER_COOLDOWN_START(shell, COOLDOWN_CIRCUIT_SPEECH, speech_cooldown) diff --git a/modular_zubbers/code/modules/wiremod/components/action/speech.dm b/modular_zubbers/code/modules/wiremod/components/action/speech.dm new file mode 100644 index 00000000000..8698a74bfc8 --- /dev/null +++ b/modular_zubbers/code/modules/wiremod/components/action/speech.dm @@ -0,0 +1,45 @@ +/obj/item/circuit_component/speech + /// The language setting + var/datum/port/input/language_port + + /// Spans to apply to the output message. + var/datum/port/input/color_input + + //Shell language selected from the list + var/shell_language + + //List of valid languages of the speech circuit + var/static/list/circuit_languages + +/obj/item/circuit_component/speech/Initialize(mapload) + . = ..() + if(!circuit_languages) + circuit_languages = list() + for(var/datum/language/language as anything in GLOB.language_datum_instances) + if(language.secret) + continue + circuit_languages[language.name] = language + +/obj/item/circuit_component/speech/populate_ports() + . = ..() + color_input = add_input_port("Color", PORT_TYPE_STRING, default = "Default") + language_port = add_input_port("Language", PORT_TYPE_STRING, trigger = null) + +/obj/item/circuit_component/speech/input_received(datum/port/input/port) + if(!parent.shell) + return + + if(TIMER_COOLDOWN_RUNNING(parent.shell, COOLDOWN_CIRCUIT_SPEECH)) + return + + if(!(color_input.value in GLOB.component_span_color_list)) + color_input.set_value("Default", TRUE) + + if(message.value) + var/atom/movable/shell = parent.shell + if (language_port.value in circuit_languages) //if user selected language is an [item] in the list then... + shell_language = circuit_languages[language_port.value] //selects the [value] for the specified [item] + else shell_language = /datum/language/common //if it is not in an [item] in the list then it defaults to common + shell.say(message.value, language = shell_language, forced = "circuit speech | [parent.get_creator()]", message_range = quietmode.value > 0 ? WHISPER_RANGE : MESSAGE_RANGE, spans = list(GLOB.component_span_color_list[color_input.value])) + TIMER_COOLDOWN_START(shell, COOLDOWN_CIRCUIT_SPEECH, speech_cooldown) + diff --git a/tgstation.dme b/tgstation.dme index c573813a5b5..0e31811bc45 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9703,6 +9703,7 @@ #include "modular_zubbers\code\modules\voting\_votes.dm" #include "modular_zubbers\code\modules\voting\living_timer.dm" #include "modular_zubbers\code\modules\voting\vote_overrides.dm" +#include "modular_zubbers\code\modules\wiremod\components\action\speech.dm" #include "modular_zubbers\code\modules\wiremod\components\string\color.dm" #include "modular_zubbers\code\modules\wizard_dize\wizard_dice_event.dm" #include "modular_zubbers\code\modules\wizard_dize\wizard_dice_object.dm"