28 Commits

Author SHA1 Message Date
MrMelbert b62ee3c6a9 Partial language understanding actually works as intended (#93999)
## About The Pull Request

So, partial language understanding scaled the % chance to translate
something based on the ranking in the most common words list

But the ranking isn't real the list is in alphabetical order

So, adds a new list of the 1000 most common words sorted by *frequency*,
which I found on a random github page.
Is it scientifically found? I have no idea, but it looks good enough to
work.

This list doesn't share the same 1000 words as our existing one, so I
added all the differing words (amounted to ~400) to the original list.

So now partial language understanding correctly translates words based
on frequency.

## Changelog

🆑 Melbert
fix: Partial language understanding now correctly has a higher chance of
translating more common words.
qol: Aphasia got slightly more words to work with 
/🆑
2025-11-18 17:26:19 -07:00
MrMelbert 67dd51be79 Reworks language translations. Add partial language understanding. Bilingual update. (#90252)
## About The Pull Request

Fixes #89445 (well, technically. It fixes the bug associated but these
`say`s should really be emotes.)

Three things:

1. Reworks how language translation works.

Rather than scrambling a sentence into a language entirely, sentences
are now scrambled on a per-word basis.

Additionally, the 1000 most common words of a language are *never*
re-scrambled across the duration of a round. Once it's set it's set in
stone.

Example: (Sample / Old / New)


![image](https://github.com/user-attachments/assets/69be41fa-bc40-45f0-bd80-e24e799c9f38)

This allows for a number of things:

- More consistent translations, making it (more) viable to actually
"teach" someone words for something
- Maintaining emphasis such as caps (but not `||`, `++`, or `__` - at
least not yet)
- The following:

2. Adds partial language understanding

Some languages can understand portions of other languages.


![image](https://github.com/user-attachments/assets/b6eee2c7-f564-437b-8c7a-bd1d88a9b680)

This pr adds the following:
- Those who understand Beachtongue can understand 50% of Common and 33%
of Uncommon words.
- Those who understand Common can understand 33% of Beachtongue and 20%
of Uncommon words.
- Those who understand Uncommon can understand 20% of Common and 20% of
Beachtongue words.

3. Bilingual quirk has been expanded to accomodate these changes.

There are now two more preferences:
- Language Speakable
- You can toggle this, so you only understand the language, rather than
understand AND speak.
- Language Skill
- If you choose to be unable to speak the language, you can set how much
of the language you can understand, down to 10%.

## Why It's Good For The Game

Playing around languages is fun, but due to the way our translation
works, ALL context is immediately lost for what the other person may be
saying.

If the other person is shouting in all caps? Output language is normal
chatting. This is lame!

Even if someone is unable to understand you, there's a LOT you can
convey just by how you speak, and getting that across in game is quite
difficult when all translations get mauled so badly.

So this changes that. 

- Emphasis like caps lock is maintained, so you see someone shouting in
caps in a foreign language you can probably intuit something is wrong
(but not what is wrong!)
- Some languages can gleam bits of other languages, so you MIGHT be able
to pick out context if you pay close attention
- "Brother" languages will now feel more like "brothers" and not
completely divergent
- You can even "teach" someone words in your language - at least the
most common words! (Until next round)

## Changelog

🆑 Melbert
add: Languages can now have partial understanding of other languages.
More common English words are more likely to be mutually understood.
add: Those who understand Beachtongue can understand 50% of Common and
33% of Uncommon words.
add: Those who understand Common can understand 33% of Beachtongue and
20% of Uncommon words.
add: Those who understand Uncommon can understand 20% of Common and 20%
of Beachtongue words.
add: Bilingual quirk: You can now choose between being able to speak or
not speak the language
add: Bilingual quirk: You can now choose to have partial understanding
of your language, rather than full.
qol: If you speak in ALL CAPS in a foreign language, the translated
words will also be ALL CAPS.
qol: Many more forms of punctuation are now conveyed across
translations.
qol: The 1000 most common English words will now never be scrambled when
translating into other languages for the duration of the round. This
means you can actually "learn" some words if you are especially
attentive! (Until the next round at least)
refactor: Refactored language translations. Report if you see any super
odd looking translations.
fix: Force-says forcing you to speak common (such as cult invocations)
will now correctly force you to speak common (even if you don't know
common)
/🆑
2025-04-13 22:01:33 +01:00
Watermelon914 6c017cf1e1 Refactors subsystems to use dependency-ordering to determine init order. Subsystems can now declare their own dependencies. (#90268)
## About The Pull Request
As the title says.
`init_order` is no more, subsystems ordering now depends on their
declared dependencies.
Subsystems can now declare which other subsystems need to init before
them using a list and the subsystem's typepath
I.e.
```dm
dependencies = list(
    /datum/controller/subsystem/atoms,
    /datum/controller/subsystem/mapping
)
```
The reverse can also be done, if a subsystem must initialize after your
own:
```dm
dependents = list(
    /datum/controller/subsystem/atoms
)
```
Cyclical dependencies are not allowed and will throw an error on
initialization if one is found.
There's also a debug tool to visualize the dependency graph, although
it's a bit basic:

![image](https://github.com/user-attachments/assets/80c854d9-c2a5-4f2f-92db-a031e9a8e257)

Subsystem load ordering can still be controlled using `init_stage`, some
subsystems use this in cases where they must initialize first or last
regardless of dependencies. An error will be thrown if a subsystem has
an `init_stage` before one of their dependencies.

## Why It's Good For The Game
Makes dealing with subsystem dependencies easier, and reduces the chance
of making a dependency error when needing to shift around subsystem
inits.

## Changelog
🆑
refactor: Refactored subsystem initialization
/🆑
2025-04-03 17:04:30 -04:00
Ivory ecdf8bc9c1 Support sending channel announcements to multiple channel tags (#89462)
previous system was weird, you had to add a comma separated list in the
channel tag in TGS itself. this is much more intuitive. also it should
not break older configs

🆑
config: Added support for multiple chat channel configs for channel
announcements.
/🆑
2025-02-16 06:57:35 +01:00
norsvenska 5f80128fa9 Corrects 200+ instances of "it's" where it should've been "its" instead (#85169)
## About The Pull Request

it's - conjunction of "it" and "is"
its - possessive form of "it"

grammar is hard, and there were a lot of places where "it's" was used
where it shouldn't have been. i went and painstakingly searched the
entire repository for these instances, spending a few hours on it. i
completely ignored the changelog archive, and i may have missed some
outliers. most player-facing ones should be corrected, though
## Why It's Good For The Game
proper grammar is good

## Changelog
🆑
spellcheck: Numerous instances of "it's" have been properly replaced
with "its"
/🆑
2024-07-21 13:41:37 -06:00
Jordan Dominion 958ce2be83 Implement TGS DMAPI 6.1.0 features (#74341)
Mainly just addressing warnings #74324 (36396bb4c2) added
2023-03-30 16:17:23 -06:00
Kyle Spier-Swenson 57db2c1cd1 Add config to validate admin discord commands with discord links and admin ranks (#73818)
This adds a config to secure discord chat commands used by admins.

When enabled it compares the discord id the chat command came from with
the linked discords db to find their ckey, then checks they have the
correct admin rights.

The check automatically self disables if the db is down or if legacy
admin ranks are enabled. (There is no config for discord account linking
or i'd just use that.)

Moved non-admin discord commands out of the admin modules folder and
into the discord modules folder.

Deleted some defunct shit. There was a global list and admin only notify
command that was used by nothing.

There was a whole discord config section that was used by nothing.
2023-03-07 15:26:00 -07:00
Tastyfish 4733643f39 Clean up subsystem Initialize(), require an explicit result returned, give a formal way to fail (for SSlua) (#69775)
* cleanup SS API, give SSlua a proper way to error out

* New SS_INIT_ system
2022-09-14 23:52:10 -04:00
John Willard 88d7dbfc10 removes double spaces before symbols (#62397)
This can apparently cause some bugs on occasions, so I thought I might as well try to kill them all.
2021-10-28 19:25:50 -03:00
TiviPlus 0eaab0bc54 Grep for space indentation (#54850)
#54604 atomizing
Since a lot of the space indents are in lists ill atomize those later
2020-11-30 12:48:40 -05:00
oranges 6c9d88a4cd Overhauls discord verification system (#53289)
This completely replaces the previous verification system, for one that
will interoperate with a discord redbot instance that uses the cogs
located at you github.com/optimumtact/orangescogs

This cuts out several steps in the system, but it also leaves alone the
existing notify system (which just uses a file list of discord ids) as a
record of who to notify

SQL changes required for the new database system

Version 5.10, 7 August 2020, by oranges

Changes how the discord verification process works.
Adds the discord_links table, and migrates discord id entries from
player table to the discord links table in a once off operation and then
removes the discord id on the player table

The user connects to any tg server, and uses the "Verify Discord
Account" verb, this generates a six word one time use token, with a 4
hour time validity period (defined as 4 hours from the timestamp value)
in the discord links table.

This one time token, and the ckey of the user are stored in
discord_links

At this point the entire DM side is done, this is all it does
2020-08-30 18:24:23 -07:00
TiviPlus ca366c3ea1 Bools and returns super-pr (#53221)
Replaces like 70-80% of 0 and such, as a side effect cleaned up a bunch of returns
Edit: Most left out ones are in mecha which should be done in mecha refactor already
Oh my look how clean it is

Co-authored-by: TiviPlus <TiviPlus>
Co-authored-by: Couls <coul422@gmail.com>
2020-08-28 14:26:37 -07:00
Jordan Brown 1e486a34cd Fix using tag instead of custom_tag in send2chat (#52675)
* Adds more documentation to TGS chat funcs

* Fix using `tag` instead of `custom_tag` for chat channels

* Make new game notifcation message clearer
2020-08-03 14:34:34 -03:00
Jordan Brown 8c0809d0b2 Adds more documentation to TGS chat funcs (#52601) 2020-08-02 23:37:59 +08:00
ShizCalev daee56e486 Update Discord URL to the new one (#52299)
Replace `discordapp.com` with `discord.com`.
2020-07-19 10:10:36 -07:00
jdawg1290 62676e72a8 Force LF line endings with gitattributes and convert repo (#52266)
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-07-16 03:02:40 +03:00
Jordan Brown f3740cdc73 Allow multiple tagged tgs4 chat channels with "," (#51855) 2020-06-27 10:24:13 -07:00
nemvar b87f65d95e Converts ALL typepaths to lowercase (#51642)
* Case of lower

* More changes

* Ruins the nice 420 diff, brainfart when doing the second batch of conversions

* More changes

* Next batch. I think

* Converts even more paths

* Restarts bots

* Capital Free Zone

* Come on travis, do something

* Renames areas

* Bots, please stop dying

* Updates CONTRIBUTING.md and updates a few paths I missed.

* APC recgarftzfvas
/obj/item/computer_hardware/recharger/apc to /obj/item/computer_hardware/recharger/apc_recharger
2020-06-17 20:47:57 -03:00
oranges c9c7a7395a Fix syntax of discord sql command (#51578) 2020-06-11 19:20:16 +12:00
Jordan Brown 0e158aca43 New configuration option to enable the notify command (#51417)
CHAT_NEW_GAME_NOTIFICATIONS

I can't find the commit that untied the original config to the announcement, but this is how it originally was: db68cd1#diff-d91ba57ba114207ed6985097e129dd9cR137

Whoever did it obviously didn't read the send2irc (now send2chat) doc comment

Closes #51416
2020-06-10 20:10:22 +12:00
oranges 20ede4bf73 Make sure the discordid of a user is always returned as text (#51531)
If it's not cast as a varchar when bringing it out of the database
it will get auto converted to scientification notation, which is
unexpected and causes bugs in code that expects the id to be available
for discord API calls
2020-06-08 23:48:48 -04:00
Tad Hardesty 829e95896e Replace BSQL with rust-g, paramaterize all queries (#51255)
cl
refactor: BSQL has been replaced with rust-g, improving SQL reliability and safety.
/cl

Queries were parameterized as much as possible. Careful code read by someone else also versed in SQL would be a good idea. Things seemed fine spot-testing roundstart, library, bans, and polls, but more stress-testing may be useful.

Also updates rust-g to v0.4.5:

    Improved Linux .so detection
    Perlin noise functions

Also updates Travis script to bionic.
2020-06-08 16:00:07 +12:00
spessman-007 ab84042f94 [READY] Improve spelling (#51134)
* Improve spelling

* Spell isn't, ain't, shouldn't, hasn't, wasn't correctly

Co-authored-by: NewSta <spessman-007@users.noreply.github.com>
2020-05-25 02:13:37 +08:00
Jordan Brown 63e20801ed TGS chat usage cleanup
- Rename send2tgs to sent2adminchat.
- Move both chat procs to SSdiscord.dm.
- Fix bug when sending to TGS4 non-admin chats.
- Add DMdocs
- Improve notify command
  - Store mentions as strings
  - Disable command if config setting isn't enabled
2020-05-23 13:33:09 -04:00
Bobbahbrown fdcbc8cd83 Adds Configurable Living Time Requirement to Discord Auto Enrollment (#50052)
About The Pull Request

As requested by oranges this enforces a requirement, when configured, that a player must have a certain amount of living playtime in hours to auto-enroll into a discord role.
Why It's Good For The Game

Removes discord moderation requirement
Changelog

cl bobbahbrown
server: Discord role auto enrollment can now be configured to require a certain number of living hours.
/cl
2020-03-20 21:09:16 +13:00
oranges eea13a21ea Improves discord roleapi system
Sends the discord id to the patch call, not the ckey

Add the verify command to readd the role to the api, with
a hacky, but effective slowdown to prevent the API being flooded easily
2020-02-27 06:47:16 +00:00
AffectedArc07 0315245729 Adds in discord auto-roling (#49374)
About The Pull Request

When a user successfully links their BYOND accounts and discord accounts, they will now be automatically roled, based on config settings.

NOTE: This does not update pre-linked accounts, but I can write an external bot to do that if needed

RUST-G has also been updated in this PR, to be inline with this PR over at RUST-G tgstation/rust-g#23

Why It's Good For The Game

People with linked accounts can now be given a specific role in the discord, which is good for verification.
Changelog

🆑 AffectedArc07
add: Linking your discord and BYOND accounts will now give you a role in the discord
/🆑
2020-02-20 22:37:14 +13:00
AffectedArc07 c4e75bc40b [READY] SSdiscord and Round Notifications (#44231)
* Notify System

* V2

* Adds a hint

* Stoned fixes round 1

* Use grammar wells I can

* This didnt work

* I wish you could test on TGS without committing

* Jordie fixes round 1

* oops

* This took way longer than it should have taken

* Adds in endnotify for serverops

* Spacing
2019-06-30 00:43:25 +10:00