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.
Refactoring the entire destroy proc path from Mob Human all the way down
to Atom while trying to find the causes for the damn mob human hard
deletes. This PR comprehensively reorganizes every single stray
snowflake var used by /atom/ all the way to /mob/living/carbon/human,
and makes sure that every var that COULD store a reference, is now
cleared during the entirety of the Mob Destroy() parent hierarchy.
This may very well be the end of the lag war.
In total, I've hunted down and cleared 39 hanging references between
/atom and /mob/living/carbon/human
---------
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
<img width="1701" height="292" alt="image"
src="https://github.com/user-attachments/assets/db1dbc50-1a6a-4549-b9e5-b838ec62f849"
/>
**This is but one of several PRs as part of Project Anabasis, and is a
necessary building-block for a Traits System and a Skills System**
This PR was essentially prompted by recent lore changes to Skrell that
weren't yet existing in the game, so I'm kicking off this as a PR to
start a series of more meaningful psionic reworks. With a focus on
Components and Signals as a way of dramatically increasing the systems
interactivity of psionics. With this PR, mobs have an effective
"Psi-Sensitivity" that can be checked by psionic effects, and influence
a wide variety of interactions.
Psi-Sensitivity is calculated based on a Signal interaction, whereby
multiple responding sources have a chance to respond to the signal and
influence the end result of the calculation. For now there still remains
a cutout specifically for owners of a Psi-Complexus(Which is just Skrell
and Antag Psions), who have a bonus to the psi-sensitivity check equal
to their PSI-RATING. That being 1 for Skrell, and 2 for antag psions.
But eventually in the future this should be replaced with a standalone
component separate from the concept of "Sending"
The other common sources of sensitivity currently are the Psionic
Receiver implant, MindShield, and Mind Blanker implants. With Psionic
Receivers giving a bonus to psi-sensitivity, and the latter two giving a
penalty to psi-sensitivity. Both MindShields and Mind Blankers are now
unified in how they interact with psionics, both using the same system
of Signals without a hardcoded check for the mindshield.
As an important distinction to make, Psi-Sensitivity is NOT the same
thing as being Psionic. Actually Psionic characters like Skrell have a
big bonus to their sensitivity. It's more a measurement of how receptive
a character is to Receiving (separate from Sending) psionic influences.
You can actually be capable of using psionic abilities, but have a
sensitivity of 0, effectively meaning such a character can "Send but not
Receive" psi influences.
- [x] I have tested this PR and have verified that it works, you're
welcome.
This PR adds a pair of new "BioAugs" as loadout options for Galatean
characters, called Mind Blanker. They come in two variants, and both are
available exclusively to Galateans. The basic version of the mind
blanker makes its user immune to mind-affecting psionic powers.
The advanced version of it inflicts lethal biofeedback on any psychic
that attempts to enter the user's mind, while also providing the user
with the same protection as the basic version. The advanced version is
more expensive, and is exclusively available to Galatean Consulars.
This PR was requested by Human Lore for their "Galatean Bioaugments"
list.
<img width="739" height="334" alt="image"
src="https://github.com/user-attachments/assets/8dd0e65c-2834-4949-8a03-8966f22eeca4"
/>
---------
Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
Refactored Life() to receive seconds per tick and times fired as
parameters.
Life() now cannot be slept in, turned various sleepings into async calls
procs.
Optimized mob AI subsystems, gave them new priorities levels and flags.
Grab upgrades are now elaborated asynchronously, tweaked them to avoid
stacking multiple upgrades.
Fixed plains tyrants keeping sending messages about stomping even if
dead.
Autohiss/stutter no longer procs twice when using `say :w` to whisper
**PLEASE TESTMERGE THIS BEFORE MERGE**. Say proc is spaghetti so had to
touch alot of things to get this to work.
Co-authored-by: Ben10083 <Ben10083@users.noreply.github.com>
Fixed srom not working properly.
Fixed a runtime with translators implants.
Aligned runechat correctly in srom mobs.
Turned the srom entry points into a GLOB list.
Fixes#19207
Unified most of the procs into one definition, so there are no duplicate
around the codebase.
Marked some of the above as overridable if a good enough case can be
made for them (eg. external dependency or unlikely to be used).
* pain
* sadfas
* sdfa
* sdfasf
* sfa
* sdf
* might the lord have mercy on our soul
* i cri everidai
* adeste fideles
* sdf
* where will this lead, what's coming next, from your inventions
* dear lord
* gjvhk
* i cri everidai
* fsgf
* sdfa
* sdaf
* hiuhi
* Your unbeatable smile wrecks the media
We wanna know your secret, so mysterious
* Even the things she lacks end up in her area
Such a perfect liar, you are
* Miss ingenious, godly idol!
(You're my savior, you're my saving grace)
* So, what'd you eat today?
What's your favorite book?
* And if you wanna go to play, where are you gonna go?
I haven't eaten at all
* That's a secret
No matter what you ask
* She's elusive, evasive
* So nonchalant
Yet still shining bright;
* Her secret: out of sight, as if visible, has the taste of honey
There is none, none, none of this
* And also none, none, none of that
What type of guy do you like?
* Who is your partner?
Come on, answer me
* "I don't understand what falling in love with someone else is like" (Hey! Hey!)
I cannot tell what is true from what is a lie (Hey! Hey! Hey! Hey!)
* And yet again, someone falls for such words (Hey! Hey! Hey! Hey!)
Gently lulled into love
* Drawing everyone's eyes
You are the perfect, ultimate idol
* Never to appear again
A reincarnation of Venus
* With that smile, with that "I love you"
You captivate everyone
* Even if those eyes, those words, are false
They make up a perfect love (Ai)
* Yeah, yeah, that girl stands out, exceptional
We were extras from the beginning
* BS that acted as adornments for the star's leading role
Everything we've accomplished is thanks to her — no!
* How impudent
How could envy and jealousy not exist?
* examine
* This isn't some made-up drama for appearances
So I cannot forgive
* You're not perfect, I cannot forgive you
I cannot forgive myself
* I cannot accept any version of you other than the one stronger than everyone else
* Everybody trusts and worships
The very strongest, most invincible idol
* Weaknesses and whatnot are not to be found
Carrying the morning star within
* Showing any weakness is no good, no good (Hey! Hey!)
Don't let them see anything that they don't want to know (Hey! Hey! Hey! Hey!)
* Anything but being one-of-a-kind is a definite no, no (Hey! Hey! Hey! Hey!)
That is the real love (Hey!)
* can commune fixes
* can commune rename
* fix is psi blocked
* fixes agian
* My signature smile that fires up the media
The only secret that I shall keep is this:
* My career was built upon fake "I love you"s
This is love, in my own way
* Even the flowing sweats are beautiful Aqua
These eyelids that hid the Ruby within
* Sing, dance, flutter, I am Maria —
Right, lying is the most exquisite form of love
* I have never been loved by anyone
Nor have I loved anyone else
* That such lies of mine will become true someday
I trust in it
* Someday, surely, I will have it all in hand
I am such a greedy idol
* Because I wish to love everybody properly in a life-sized way
I shall lie today as well (Hey! Hey! Hey! Hey!)
* a
* b
* c
* d
* And yet, still, (Hey! Hey!)
I have been unable to tell you, and you, alone (Hey! Hey! Hey! Hey!)
* jesus christ
* Update code/controllers/subsystems/processing/psi.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/controllers/subsystems/processing/psi.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/controllers/subsystems/processing/psi.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/game/gamemodes/technomancer/spell_objs.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/mob/living/carbon/human/human.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/mob/living/carbon/human/human_helpers.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/organs/organ_external.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/assay.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/command.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/emotional_suggestion.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/grip.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/grip.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/mend.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/mend.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/mend.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/psi_search.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/shockwave.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/shockwave.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/singularity.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/time_stop.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/events/mini_spasm.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/interface/ui_hub.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/interface/ui_hub.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/interface/ui_hub.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/interface/ui_hub.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/interface/ui_hub.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/interface/ui_hub.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* cl update
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Your unbeatable smile wrecks the media
We wanna know your secret, so mysterious
* Even the things she lacks end up in her area
Such a perfect liar, you are
* Miss ingenious, godly idol!
(You're my savior, you're my saving grace)
* So, what'd you eat today?
What's your favorite book?
* And if you wanna go to play, where are you gonna go?
I haven't eaten at all
* That's a secret
No matter what you ask
* She's elusive, evasive
* So nonchalant
Yet still shining bright;
* Her secret: out of sight, as if visible, has the taste of honey
There is none, none, none of this
* And also none, none, none of that
What type of guy do you like?
* Who is your partner?
Come on, answer me
* "I don't understand what falling in love with someone else is like" (Hey! Hey!)
I cannot tell what is true from what is a lie (Hey! Hey! Hey! Hey!)
* And yet again, someone falls for such words (Hey! Hey! Hey! Hey!)
Gently lulled into love
* Drawing everyone's eyes
You are the perfect, ultimate idol
* Never to appear again
A reincarnation of Venus
* With that smile, with that "I love you"
You captivate everyone
* Even if those eyes, those words, are false
They make up a perfect love (Ai)
* Yeah, yeah, that girl stands out, exceptional
We were extras from the beginning
* BS that acted as adornments for the star's leading role
Everything we've accomplished is thanks to her — no!
* How impudent
How could envy and jealousy not exist?
* examine
* This isn't some made-up drama for appearances
So I cannot forgive
* You're not perfect, I cannot forgive you
I cannot forgive myself
* I cannot accept any version of you other than the one stronger than everyone else
* Everybody trusts and worships
The very strongest, most invincible idol
* Weaknesses and whatnot are not to be found
Carrying the morning star within
* Showing any weakness is no good, no good (Hey! Hey!)
Don't let them see anything that they don't want to know (Hey! Hey! Hey! Hey!)
* Anything but being one-of-a-kind is a definite no, no (Hey! Hey! Hey! Hey!)
That is the real love (Hey!)
* can commune fixes
* can commune rename
* fix is psi blocked
* fixes agian
* My signature smile that fires up the media
The only secret that I shall keep is this:
* My career was built upon fake "I love you"s
This is love, in my own way
* Even the flowing sweats are beautiful Aqua
These eyelids that hid the Ruby within
* Sing, dance, flutter, I am Maria —
Right, lying is the most exquisite form of love
* I have never been loved by anyone
Nor have I loved anyone else
* That such lies of mine will become true someday
I trust in it
* Someday, surely, I will have it all in hand
I am such a greedy idol
* Because I wish to love everybody properly in a life-sized way
I shall lie today as well (Hey! Hey! Hey! Hey!)
* a
* b
* c
* d
* And yet, still, (Hey! Hey!)
I have been unable to tell you, and you, alone (Hey! Hey! Hey! Hey!)
* jesus christ
* Update code/controllers/subsystems/processing/psi.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/controllers/subsystems/processing/psi.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/controllers/subsystems/processing/psi.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/game/gamemodes/technomancer/spell_objs.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/mob/living/carbon/human/human.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/mob/living/carbon/human/human_helpers.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/organs/organ_external.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/assay.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/command.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/emotional_suggestion.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/grip.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/grip.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/mend.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/mend.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/mend.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/psi_search.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/shockwave.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/shockwave.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/singularity.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/abilities/time_stop.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/events/mini_spasm.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/interface/ui_hub.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/interface/ui_hub.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/interface/ui_hub.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/interface/ui_hub.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/interface/ui_hub.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* Update code/modules/psionics/interface/ui_hub.dm
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
* cl update
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
Spawned borers now get added to the Ghostspawner menu, allowing players to inhabit them even if they didn't catch the original request.
Borers have gained the ability to survey their host's health, allowing them to better choose when to administer certain chemicals.
Borers now regenerate chemicals even if their host is unconscious.
Awakening psionics now take 15 seconds instead of 10, and the host now gets a message about feeling something bad coming on, allowing them to make a dash to safety and or seclusion.
Skrell returning from Srom no longer eject controlling borers to the lobby by replacing their ckey into the aether.
Skrell no longer spontaneously die when entering Srom on a map that doesn't have a Srom location.
Psychics can now utilize the Srom and other commune procs.
Being under the effects of a neural suppressor should no longer spam-slam you into the Srom and back into the mortal world.
This PR will lead us towards the Promised Day, for in its wake there shall be much celebration and ecstasy as this world becomes a world suitable for developer hegemony. The first strike is thusly;
All << is converted into to_chat().
Okay, a big update kinda.
* Shaking, punching, grabbing, pushing, throwing objects, shooting, attacking any carbon mobs while they are willingfully asleep wakes them up instantly. ISkrell in a shared dream will recieve a message if their physical body is being disturbed, message will be different depending on severity of disturbance. If their health is below 50% and they are being attacked/shot/thrown stuff at, they will be forcefully woken up.
* Skrell are no longer displayed as an SSD when while in shared dream. Fixes#5759
* Examining skrell who are in shared dream will display if their astral body is AFK/ghosted.
Implements skrell shared dreaming.
Whilst Unconscious and alive, skrell will enter the Srom, aka Dream, in which they telepathically link to one another.
In game, they will appear in a custom area, able to communicate with one another.
Whilst in Srom, skrell find it very hard to keep their own secrets, if not impossible, and will often 'mumble' important information.