Commit Graph

29 Commits

Author SHA1 Message Date
lew 11a9a2d644 Multi-Languages: a complete Saycode rewrite (#22637)
Rewrites Saycode and Langchat to add support for multiple languages in
one message, including audible emotes.

<img width="1139" height="338" alt="image"
src="https://github.com/user-attachments/assets/25e26932-7a6e-4c54-ab74-56fffb92ecad"
/>

Here's some samples to explain how to mix languages.

<img width="422" height="26" alt="image"
src="https://github.com/user-attachments/assets/e1b176cc-8625-4dc9-83c8-a053d3f310e6"
/>

`Languages ,2 can be mixed ,3 like this.`

<img width="540" height="21" alt="image"
src="https://github.com/user-attachments/assets/19156c67-4670-4d7a-84d7-26e527de2676"
/>

`!explains, ,2Emotes work too. ,0The text will get auto-quoted.`

<img width="592" height="18" alt="image"
src="https://github.com/user-attachments/assets/cfc31c5c-2383-41c8-82be-b36836339321"
/>

`,3Most languages ,0can be ,2mixed ,1arbitrarily, ,3any number of
,0times.`

<img width="636" height="20" alt="image"
src="https://github.com/user-attachments/assets/388b4f9d-192a-4374-ac31-bbd4e4e5dfe4"
/>

`,2Emotes. ,eAnd he nods. ,3They don't have to come first anymore.`

There are some exceptions. The exceptions are currently anything with
any of the flags `SIGNLANG`, `HIVEMIND`, `PRESSUREPROOF`,
`KNOWONLYHEAR`. Exceptions work the same as current languages do: they
must be the first language in the message. If so, they prevent switching
into any other language mid-message; if they're not first, they just
wont trigger.

They're exceptions currently because there's not really a clean way that
I or the people I asked for help on this one to make them look nice.
`SIGNLANG` for example doesn't scramble text, it shows it's own `
gestures a lengthy message.` text for those that don't understand. Could
we just replace every instance of sign language with that if somebody
doesn't understand? Probably. It would look pretty awful though. e.g.
`Alina Eskelinen says, "Hello." Alina Eskelinen gestures a short
message.`

This definitely needs testmerging because it more or less rewrites the
entire pipeline surrounding `say`. The `say` code itself had to be
rewritten to support the multiple languages, as well as all the existing
plumbing for listeners receiving messages. In return though, it's
significantly more straightforward and hopefully by extension easier for
people to add to in the future.

Primarily, instead of having four different `hear_say`, `hear_radio`,
`hear_sleep`, etc., routes for messages to come through, every single
audible message is received by `hear_message`, which is responsible for
figuring out how clear the message is (is the radio damaged? is it a
whisper we're eavesdropping on?), who needs to receive it in their
chatbox, formatting it correctly for each listener, and finally if any
npc or object within range needs to react to it in some way, like a
parrot or a mech.

changelog:
- rscadd: "Adds code-switching: you can now speak in multiple languages
in the same message."
- rscadd: "Adds audible emotes to the language list. They can be
triggered with ,e."
  - rscdel: "Removes SSrunechat."
- refactor: "Rewrote langchat in order to support multiple languages and
partial comprehension."
- refactor: "Rewrote a vast majority of all saycode and the code
responsible for displaying saytext to clients."
- bugfix: "Sleeping mobs are no longer able to understand all
languages."
- bugfix: "Langchat now correctly shows the appropriate comprehension
for all viewers rather than all viewers sharing the comprehension of the
last viewer."
- bugfix: "Languages which are supposed to be invisible when not
understood no longer appear as scrambled overhead text."

Forgive me whoever has to review this. Biggest areas that have room for
error is stuff like a borer inside someone's head, and Dionae stuff. Old
langchat had odd exceptions for those and I was forced to rewrite it
entirely, but I think I got it all back to how it was working before.
2026-06-11 10:47:26 +00:00
Matt Atlas 30f521acb1 Fixes audible emotes having weird colour sometimes. (#18142)
Co-authored-by: Matt Atlas <liermattia@gmail.com>
2024-01-05 17:04:52 +00:00
SleepyGemmy c3881f075c Tweaks Audible Emote Visual Feedback (#15166)
* Tweaks the Audible Emote Visual Feedback

* More Accurate Description
2022-12-12 03:17:33 +01:00
Wowzewow (Wezzy) 9e3467bb72 pai sounds (#14579) 2022-08-18 19:34:07 +02:00
Matt Atlas 871e1f9008 Audible emotes and radio emotes now show accents. (#14302)
Co-authored-by: Matt Atlas <liermattia@gmail.com>
2022-06-16 00:19:05 +02:00
Jaraci b55a4e206b Adds Elyran Standard language (#12880) 2022-01-17 16:52:00 +01:00
Jaraci 0192b316bb Adds language colours for Tradeband and Freespeak. (#11892) 2021-05-17 15:51:42 +02:00
Geeves 862f35ad31 Singing Fix (#11733) 2021-04-22 19:54:01 +02:00
Jaraci 0253ea8d94 Freespeak speech verb tweak + EAL singing bugfix (#11703) 2021-04-22 19:17:23 +02:00
Geeves 9f323af11c Written Languages (#11624) 2021-04-19 13:21:28 +02:00
Geeves c55a0af3e5 Singing (#11645) 2021-04-18 12:35:30 +02:00
Matt Atlas 3ba9ddb8e0 You now only shout if you use !! instead of ! + apostrophe autopunctuation. (#9609)
* And I'm living one, big nightmare...

* We upload our status and beg for attention while they're all eating Cake in Capitol Hill...

* whisper fix

* SIGN

* Update code/modules/mob/language/language.dm

Co-authored-by: mikomyazaki <47489928+mikomyazaki@users.noreply.github.com>

Co-authored-by: mikomyazaki <47489928+mikomyazaki@users.noreply.github.com>
2020-08-07 11:59:29 +02:00
Alberyk 7fbdeb2a02 Adds an accent system (#9196) 2020-07-03 21:36:08 +03:00
Geeves 102e4379f6 fixes radio emotes when tcomms script is active (#7078) 2019-09-29 20:45:24 +03:00
Alberyk 8291e3b474 Tajaran stuff: five years plan edition (#6913)
-adds the honorary party member card to the loadout
-adds mata'ke priest clothing to the loadout
-removed siiktau
-removed some unused clothing
-added some extra description_fluff
2019-09-01 21:49:12 +03:00
Werner 66aa7a3cb8 Added a language variable to NTSL (#5470)
Adds a variable that contains the language of the transmission to NTSL.
Adds a language parameter to the broadcast function.
2018-11-01 01:30:19 +02:00
Alberyk e349bbd49f Adds the new syllable at the lore team request. (#5329)
This pr adds the new syllables proposed by the lore team to the human languages, also fixes the zhan language using the wrong ones.
2018-10-07 00:34:43 +03:00
Alberyk 80a82cd4ec Adds siik'tau and a bit more (#4947)
This pr adds siik'tau, as proposed here: https://forums.aurorastation.org/viewtopic.php?f=78&t=11259
A language that humans, skrell and tajara can select.

Also, tweaks how skrell handles language at the request of the skrell lore person and cleans up a tiny bit of the species language related vars.
2018-07-15 16:25:04 +02:00
LordFowl ad00601b81 Ports /tg/ Brain Trauma (#3979) 2018-01-27 12:13:19 -06:00
Alberyk 9b30fce672 Changes the languages' descriptions to fit the lore (#4100) 2018-01-16 01:10:18 -06:00
Lohikar 6acfb4d22a Gutter language lore changes (#3103)
Changes made by loredev request.

changes:

Gutter has been renamed to "Freespeak" via. define. Define name is unchanged.
The description of Gutter has been replaced with one supplied by Jackboot.
Replaced remaining references to gutter in the code with the define.
2017-07-19 23:38:44 +03:00
Lohikar 0b5fdba52d Miscellaneous Fixes & Tweaks (#1504)
changes:

tweak: "Auto-Hiss should no longer act on sign languages."
tweak: "Auto-Hiss should no longer act on Tajaran languages."
tweak: "Auto-Hiss should no longer act on Unathi languages."
tweak: "Examining an IPC no longer checks their non-existent pulse."
tweak: "You can no longer check the pulse of a species that does not have one."
bugfix: "Examining a human-type mob with robotic limbs no longer shows red examine text for each limb."
bugfix: "Examining a human-type mob now shows hunger level again."
bugfix: "The Ninja's self-destruct should actually kill the Ninja now."
bugfix: "You can no longer use sign language over radios."
Changes not in changelog:

Cleaned up the BST's code a bit.
BSTs now understand/speak the newly added languages
Added #define for languages that did not have them.
BSTs now understand/speak Vaurca Hivenet.
Slightly tweaked names/descriptions of BST items.
Fixed runtime from lawgivers overhearing speech from non-human mobs.
Fixes #1492
Fixes #1500
Fixes #1505
2017-01-12 00:23:33 +02:00
skull132 87e041aa75 Merge remote-tracking branch 'bay12-upstream/master' into development 2016-10-07 00:58:39 +03:00
skull132 6e00593de0 Bugfix Bonanza - Skull's turn (#555)
Fixes #531
Fixes #276
`/mob/living/proc/revive` now also sets `mob/var/suiciding` to false. This is to stop rejuvinated/ling revived mobs from dying again after being brought back.
Fixes #92
Fixes #479
Fixes #157
Fixes #533
Fixes #486
Fixes #528
2016-07-12 14:53:57 +03:00
Alberyk e0f7a0ef36 Changing galatic common back to Ceti Basic (#476) 2016-07-05 21:48:58 +03:00
skull132 a3a62bc186 Sign Language
Adds in sign language accessible with key :4, moves xenocommon to :z.
Also stops you from speaking sign language over any radios.
2016-02-02 14:03:27 +02:00
HarpyEagle 5e6617e7e6 Cleans up living/say broadcast and verb logic
Human say_quote() will use the language to obtain a speech verb while
silicon say_quote() will use synth speech verbs, so no need for the extra
language flag. Will mean that silicons will always use their synth speech
verbs regardless of language, however. Logic for what silicons use as
their verb should probably go in say_quote() anyways, so future updates to
that can go there instead of branching in living say code.
2015-09-09 03:04:18 -04:00
Zuhayr 840b5b756b Fixes #10358, #10359 and #10257 2015-08-01 23:17:27 +09:30
Zuhayr b3bae8a509 Split language.dm across multiple files. 2015-03-01 02:01:43 +10:30