* Feeds OOC messages back to client if blocked in validate_client() (#81769)
## About The Pull Request
Basically, if your long and well-thought-out OOC message gets eaten due
to your client not being fully initialized, the server will feed back
the message to you so you can copy-paste and try again.
In order to facilitate this, I turned `validate_client` into a proc.
This didn't have the ubiquitous usage that we were hoping for (where it
could be dropped and placed anywhere) and I don't think I liked the
"always exit out of proc" stuff anyhow. Also adds some code niceties.
There's probably a way cooler way to do this with tgui_say and whatever
but I don't use tgui_say (byond command bar my beloved) so we'll cope
with this.
## Why It's Good For The Game

Let me know if I should revert the `span_big()` stuff, I just added it
because I wanted it to be obvious to the player instead of look like a
generic error message.
## Changelog
🆑
qol: If your OOC message gets eaten due to some weird circumstance in
how your message is handled, it will feed the applicable message back to
you so you can copy-paste and try to send it again.
/🆑
* Feeds OOC messages back to client if blocked in validate_client()
---------
Co-authored-by: san7890 <the@san7890.com>
* Fix job time stuff not detecting the database was down. (#81821)
This comment hasn't been true for 7 years.
* Fix job time stuff not detecting the database was down.
---------
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Fixes smoothing breaking if a map is loaded post init (#81526)
## About The Pull Request
We'd finish a set of atom creation, then try and smooth those atoms The
problem is they might try and smooth with an uninitialized neighbor,
which wouldn't have its smoothing vars parsed.
This fixes that by pooling "to be smoothed" things into a list based off
the source of the init stoppage, which we then release when we're done.
Also fixes things staying in mapload, even during a sleep. This can
cause massive headaches so it's good to avoid.
This has a cost but it's minuscule (on the order of like 0.006s (6ms
over all of init), so I'm happy with it.
## Why It's Good For The Game
Closes#77040
## Changelog
🆑
fix: Maps loaded in after roundstart will no longer have broken
smoothing
/🆑
* Fixes smoothing breaking if a map is loaded post init
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Micro-Optimize keyLoop's self time (#81464)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
## About The Pull Request
This is a REALLY hot proc, takes up to like 2% of total cpu at highpop
Let's micro it then
First, clients do not go null at random. It's not predictable per say
but it is consistent.
We can use this understanding to remove a bunch of null checks here
For loops are expensive. So rather then doing one each keyLoop, let's
cache the client's intended move direction on the client. Simplifies
some other code too
There is no sense running a turn call if it would have no effect, let's
be more intelligent about this
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
refactor: Fucks with how movement keys are handled. Please report any
bugs
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
* Micro-Optimize keyLoop's self time
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Client colo(u)r no longer uses Client.color, now coloring the render game plane instead (#81328)
## About The Pull Request
Rather than utilizing `client.color`, client color datums now apply
their colors to the render game plane.
This means
1. The player's HUD is no longer affected by client colors. Being
colorblind (in game) no longer makes all hud elements grey as well, only
the world.
2. Overall, less harsh colors.
## Why It's Good For The Game
1. The player's HUD, being an OOC concept, should remain unaffected by
stuff like glasses and blindness. This is how it worked in the past,
before plane cube (IIRC), but it was lost in the transition.
2. Overall just looks a lot better, IMO.
Here's what meson goggles with glasses colors active looks like:
Before:

After:

## Changelog
🆑 Melbert
qol: Glasses colors should be a lot less harsh, and being blind no
longer also blinds your hud.
/🆑
* Client colo(u)r no longer uses Client.color, now coloring the render game plane instead
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Add: 2 Quirks Configs (#81033)
This PR adds two new config options for quirks:
- *Flag* `DISABLE_QUIRK_POINTS`
- When enabled, disables quirk points balancing.
- When enabled, players can select positive quirks without first
selecting negative ones.
- When enabled, the quirk points balance visually hides itself on the
Quirks page.
- *Number* `MAX_POSITIVE_QUIRKS`
- Limits the maximum quantity of positive quirks which players can
select using the Character Preferences page.
- I ported this from the old `MAX_QUIRKS` define.
- When set to `0`, players won't be able to select any positive quirks,
and they won't appear on the Quirks page.
- When set to `-1`, players will be able to select any quantity of
positive quirks.
- When commented-out or undefined, the default is `6`.
- When set to `0` or `-1`, the positive quirk balance visually hides
itself on the Quirks page.
There is some downstream repositories asking for the quirks system to be
configurable. Additionally, I always find myself tweaking these values
on my own private servers and I thought it would be nice to share my
edits. Usually I was simply commenting-out sections of this code in
order to get the same result, so it helps to have an official way to
disable quirk points.
🆑 A.C.M.O.
config: Added two new config flags for quirks, DISABLE_QUIRK_POINTS and
MAX_POSITIVE_QUIRKS.
/🆑
* Oh come on
---------
Co-authored-by: Dani Glore <fantasticdragons@gmail.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Fixes the "Saw this admin message" button not working (#80908)
## About The Pull Request
Wrong fuckin name brother (also topic doesn't automake textnums into
nums)
## Why It's Good For The Game
Closes#80020
## Changelog
🆑
admin: Confirming that you have read an admin message now uh, works.
it's been 2 years bros
/🆑
* Fixes the "Saw this admin message" button not working
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* [BOUNTY] Re-adds Contractors
* I hate copy pasted overrides so much. BEGONE
* Fixes the merge conflict. It's still not gonna work, too many proc redefinition
* The sheer amount of overrides
* This is hell
* remove modular copy of spawn_contractor_partner
* part 2 of spawn_contractor_partner oops
* un-duplicate create_contracts proc
* Remove duplicate contract generate and finish_enter
* something to make the linter stop crying
* Receiving
* removes our contractor stuff in favour of parity
* Update SyndicateContractor.tsx
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Color matrix defines for filters and identity (#80320)
This PR converts the procs `color_matrix_identity`,
`color_matrix_lightness` and `color_matrix_contrast` into
defines/macros. Also adds in defines for common color matrix filters.
I don't like how `color_matrix_identity` is a one-line proc with no arg.
Also these help people identify the sort of color matrix filter is being
used.
* Color matrix defines for filters and identity
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Make spritesheets cacheable by default, killing a lot of overtime in the round start spike (#80522)
## About The Pull Request
Makes all spritesheets cache by default. This wasn't the case originally
because some spritesheets like vending machines relied on in world
state, but none of them do anymore because that's whack.
Also fixes a bug that would cause half completed caches to break other
stuff. This didn't happen in real gameplay, but would've happened if you
tried to change cachable on anything while you already had a tmp folder.
## Changelog
🆑
fix: Cut down a significant amount of time that caused the start of
rounds to lag.
/🆑
* Make spritesheets cacheable by default, killing a lot of overtime in the round start spike
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* update blacklisted client byond versions (#80523)
Also cleans up old ones that don't matter. Since we use 514 client
features so byond forces 514 clients anyways.
Resolves#80504
* update blacklisted client byond versions
---------
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Adds a search function to the loadout menu, and improves readability
* Removes the tutorial button that never did anything
* Trims a lot of the fat, deprecated code
Data was being passed to the ui that isn't even being used any more.
* Update preferences.dm
* Deletes `area` var on clients (#80037)
## About The Pull Request
Literally nothing wrote to or accessed this variable, in pretty much
_every_ case we just use `get_area(mob)` instead of ever looking at the
client's area (again, ???)
## Why It's Good For The Game
this variable was added 12 years ago and I don't think anyone has ever
novelly used this.
## Changelog
Doesn't matter to players.
* Deletes `area` var on clients
---------
Co-authored-by: san7890 <the@san7890.com>
* h
* fsfesef
* awdad
* asdf
* sew
* AA
* dadaw
* fix ci
* aaaa
* a
* aaaa
* dwaawd
* t
* just style
* voila
* we did it reddit
* a
* topic time
* a few tweaks
* Apply suggestions from code review
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* more verbose
* piss
* Apply suggestions from code review
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* basic reviews and some better documentation
* TGUI AAAAAAAAAAAAAAAH
* a
* maybe this
* reduce medicine number
* Update code/__DEFINES/~skyrat_defines/quirks.dm
how did i miss this one
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* the great middlewarening
* why did i check for this (hint: i had no reason to)
* final touches
* step 1
* step two
* why are we still here. just to suffer?
* grammar
* me when [single indentation]
* desparation
* some more!
* Apply suggestions from code review
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* finally
* acl
* a
* global moment
* desc moment
* fixes
* I FORGOT TO FUCKING COMMIT IT
* aaghhhh
* aha!
* yahoo
* Makes it work with the transformation sting PR (it won't conflict anymore)
* Updates the string into the proper define, so Niko doesn't notice or have to care that I did this
* k,l
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* pixel perfect 4x (#79660)
## About The Pull Request
Adds pixel perfect 4x and 4.5x scaling. I tested it and it seems to work
though 4.5 scaling causes very slightly distorted pixel sizes. There's
also a bit of letterboxing but I think that happens with all of the
pixel perfect settings.
## Why It's Good For The Game
better fits 4k monitors and isn't stretch to fit
## Changelog
🆑
qol: adds pixel perfect 4x, 4.5x, and 5x
/🆑
* pixel perfect 4x
---------
Co-authored-by: aaaa1023 <74441292+aaaa1023@users.noreply.github.com>
* Nukie Aliases and Some Hairspray (#79653)
## About The Pull Request
Nuclear operatives now receive an alias for their first name, instead of
a default human name. This alias is randomly selected, or can be set in
your name preferences.

This does not affect Operative Leaders selecting the team's last name.
This means that **operative names are now "[Alias chosen by player]
[Team name chosen by leader]".**
There is a list of default aliases, in case no alias has been selected.
I randomly came up with a bunch of stuff from the top of my head and put
it in a text file. If you think of something better, choose it yourself!
**OH, ALSO:**
There's some hair dye in the Firebase dorms now. Useful if you want to
further differentiate between your Operative/Crew characters, or just
look pretty.
## Why It's Good For The Game
No longer shall nukies be "your character but with a different name".
Now you can give yourself a bit more identity instead of just a random
name.
More customization options means more opportunities for people doing
interesting stuff, and to branch away from the beaten path of boring
meta strats.
## Changelog
🆑 Rhials
add: Nuclear Operatives, in an attempt to appeal to the more "tacticool"
members of their cause, have begun using callsigns to designate
themselves. Check your preferences to set your Operative Alias!
qol: At the request of the more vain members of the cause, hair dye has
been added to the Operative Firebase dorms.
/🆑
* Nukie Aliases and Some Hairspray
---------
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
* Allows TGUI labelled lists to use tooltips, and enables this behavior on preferencelists + adds descs to most character preferences (#79356)
## About The Pull Request
Title.
https://github.com/tgstation/tgstation/assets/59709059/c9fa7d41-6ca4-4b8b-97ec-fdfdd437ce25
## Why It's Good For The Game
The inability to use descriptions in character preferences really limits
the context you can give to readers, which becomes a big problem when
preferences become complicated or laden with policy that must be given
to the reader.
## Changelog
🆑
qol: Character preferences now have descriptions as tooltips - hover
over their names to see them
/🆑
* Allows TGUI labelled lists to use tooltips, and enables this behavior on preferencelists + adds descs to most character preferences
---------
Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
* Prettifies Adminwho into an Examine Block (#79137)
## About The Pull Request
Same vein of #71170 (2d3e7f2383) / #69845
(61d49cb11a) in an attempt to lessen the
number of cruddy "system messages" that just print straight text to
chat.
This could be improved CSS wise but I think a standard examine block
helps a lot while maintaing clarity, see below:

I also heavily refactored adminwho code to not have so much copypasta
while using more `jointext()` and keeping everything a bit more readable
than what it previously was. User-facing stuff should all be the same
(with the addition of an examine block) except in two spots
* Custom header message when no admins are online. I think this is a far
clearer message than having `Current Admins:` and then the message about
adminhelps being relayed to Discord
* There's no tabs per each entry. This was replaced by a bullet point. I
think it's better to read.
## Why It's Good For The Game
As time goes on, I'm more and more peeved by these pretty critical
messages constantly blending in with output from the rest of the game.
This is why balloon_alerts and whatever became so popular to my eyes,
there's just constant junk. I figure that we may as well just keep the
systematic stuff that _must_ live in the chat box looking as neat as
possible.
## Changelog
🆑
qol: Adminwho messages are now in an examine block for heightened
clarity.
/🆑
* Prettifies Adminwho into an Examine Block
---------
Co-authored-by: san7890 <the@san7890.com>
* Adds Food Allergies as a counterpart to Medicine Allergies (#79118)
## About The Pull Request
Adds food allergies as a counterpart to medicinal allergies.
This is about as you would expect. Eating food you are allergic to
causes Anaphylaxis, which can be cured with epinephrine. If you are not
cured rapidly, you will shortly fall into a coma and die.
There is a preference for choosing your character's allergy.
Not all food types are viable allergen types: Only `"Alcohol", "Bugs",
"Dairy", "Fruit", "Grain", "Meat", "Nuts", "Seafood", "Sugar",
"Vegetables"`.
You also get a dogtag like med allergies.
Minor implementation detail: I added a "dangerous" level of food quality
/ scale, so I gave it to the Death Sandwich.
## Why It's Good For The Game
This was a request, and I saw it fairly harmless, so I said why not.
Similar to Medicine Allergy, it adds a small mechanic to concern
yourself with when you visit the kitchen, encouraging you to get a bit
more familiar with food types before diving into food at the kitchen.
As it is not as impactful as Medicine Allergy, it is only a -2 quirk.
## Changelog
🆑 Melbert
add: Adds Food Allergies as a -2 quirk. You can select which food you're
allergic to or rock a random option.
/🆑
* Adds Food Allergies as a counterpart to Medicine Allergies
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* reload savefile on pref assosciation (#78984)
## About The Pull Request
Tells the preferences datum to reload the savefile when we associate to
an already existing one
## Why It's Good For The Game
This trolled me locally for a good hour wondering "why aren't my prefs
updating when I swap out the file"
## Changelog
* reload savefile on pref assosciation
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
* Dullahan Fixes (#78938)
## About The Pull Request
Let's see if these can be like 50% playable by Halloween
Fixes#70890 (mostly)
Also one half of #71020 but does not close it because they still cannot
hear audible messages
There was a list of issues in #70890 which are largely fixed by this,
but some of them were not _bugs_.
Anything which is simply an obvious consequence of "not having a head or
being able to wear anything on your head" isn't and cannot be fixed,
because this species doesn't have a head.
That means that all of these things are still true:
```
Dullahans have no radio
Can't get spaceproofed because without the helmet you still take pressure damage
Can't wear modsuits
Can't wear sunglasses or HUDs
Can't wear clown mask
```
The issue causing everything _else_ is that when we sever the head, we
remove the brain. Removing the brain removes the traits
`TRAIT_ADVANCEDTOOLUSER, TRAIT_LITERATE, TRAIT_CAN_STRIP`. Without these
three traits, Dullahans are blocked from several important actions.
Easy fix: Make these properties of the dullahan species independent of
whether they have a brain or not. Clearly they can do these things
without brains, on account of not having them.
Additionally I gave dullahans their own head subtype which preserves
internal organs, because their brains and eyes were decaying and giving
them brain trauma and blindness.
Finally, I changed a few things from checks in `spec_life` to signal
responses, because `spec_life` checks for "did I gain a head recently?"
are gross.
## Changelog
🆑
fix: Dullahans can read, strip people, and utilise tools.
fix: Dullahan brains and eyes will not decay while inside their living
severed head.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Dullahan Fixes
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: san7890 <the@ san7890.com>
* Adds respawn config option forcing respawn as another character slot (#78459)
## About The Pull Request
Adds an option to the respawn config which forces you to pick another
character (slot) before you respawn.
## Why It's Good For The Game
Just an idea i'm throwing out there, not necessarily pushing for it to
be enabled on any servers.
Respawning as an alternative character can be a good way to make people
less frustrated at dying, particularly if paired with the cooldown
config that already exists:
"Oh shucks, I died and got my head cut off and got absorbed and got
spaced by some changeling. I won't be able to finish my project or
whatever. At least in 15 minutes I may be able to join as my botanist
character to try something else rather than having to wait an hour and a
half for the round to tick over."
Also nice for downstream support.
(Obviously you can just, *ban* people who respawn as the same character,
use an honor system, but codifying it seems better than not.)
## Changelog
🆑 Melbert
config: Adds a config option for player respawning that enables
respawns, but forces you pick a new character.
config: "NORESPAWN" has been replaced with "ALLOW_RESPAWN 0". Unlimited
respawns is "ALLOW_RESPAWN 1" and character limited respawns is
"ALLOW_RESPAWN 2".
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Adds respawn config option forcing respawn as another character slot
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Converts cursed heart effect into a component. (#78554)
## About The Pull Request
Fixes#58401Fixes#58799Fixes#58800
Converts the manual heart-beating effect of the cursed heart into a
component.
Behavior has mostly been maintained, but polished a bit as compared to
the original cursed heart. Most notably, the action for beating your
heart is now a cooldown action - providing a visual indicator of when
you can beat it again, rather than leaving you guessing. Some better
checks have also been put in place for edge cases such as having your
species changed.
Implementation inspired by the existing "manual blinking" and "manual
breathing" components. Currently only used by the cursed heart and the
(now majorly simplified) effect of corazargh.
My first component, so hopefully I didn't miss anything.
## Why It's Good For The Game
The cursed heart was kind of unusably bad - which may have been part of
the intent, but having to count in your head or spam-click the button is
just annoying. With a visual indicator of when you should beat your
heart, hopefully it will be slightly less awful for the cursed.
The real motivation here was that corazargh's implementation was kind of
a travesty - summoning a cursed heart inside of your body while it was
in your system, then restoring your old heart afterward. This was
error-prone as well as just being ridiculous. Making this effect a
component gets rid of these problems, and leaves space open for new uses
of manual heart beating if anyone feels like being cruel.
## Changelog
🆑
fix: Your heart will no longer be deleted if an admin heals you while
you have corazargh in your system.
refactor: The cursed heart has been streamlined a bit, and now gives you
a visual cooldown for when you can beat your heart again.
/🆑
* Converts cursed heart effect into a component.
---------
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
* Fixed spritesheet images for sprite accessories with no icon_state (#78710)
## About The Pull Request
Some sprite accessories (such as bald and shaved) do not have icon
states, and these are stored as nulls in the GLOB lists. When generating
sprite sheets, nulls were simply returning the basic head icon without
scaling it in the same manner as the other sprites were scaled.
Old:

New:

## Why It's Good For The Game
Having some hairstyles be scaled differently in the spritesheets looks
bad.
## Changelog
🆑
fix: Some icons for selecting character preferences are no longer scaled
incorrectly.
/🆑
Co-authored-by: Cruix <discoveryian2@ gmail.com>
* Fixed spritesheet images for sprite accessories with no icon_state
---------
Co-authored-by: Cruix <ianjturk@gmail.com>
Co-authored-by: Cruix <discoveryian2@ gmail.com>
* Feature: bitrunner, a new supply role (READY)
* Delete bepis.dm
* Conflicts
* Update dynamic_rulesets_midround.dm
* Fixing this invalid icon file path
It was trying to use the aesthetics one
* Bepis is dead
* New digi sprites courtesy of CandleJaxx!!
Now in the correct branch!
* Fixing merge conflict
* bitrunning hotfixes [NO GBP]
* Modular health adjustments
* Revert "Modular health adjustments"
This reverts commit 0ff3c48d398f6c1aac51cdf8fecaf869491bbc86.
* Modular health adjustments
Only this one should be necessary
* The screenshot test
* Bitrunner den for voidraptor (FOR #23865) (#23891)
* no shower in sight
* lets bitrunners actually get to their room and spawn there
* New digi sprites courtesy of CandleJaxx!!
* Revert "New digi sprites courtesy of CandleJaxx!!"
This reverts commit eea9f47de256dd407c78450bc8f2a09b814f93e9.
---------
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* Removes bitrunning unit tests (#78607)
## About The Pull Request
Removes the fraction of unit tests I thought would be safe.
Not thrilled that I have to exclude ALL unit tests now, but hey.
The issue is that atmos attempts to process on a turf which hasn't
initialized yet.
## Why It's Good For The Game
Other PRs can pass checks now
## Changelog
N/A
* Update birdshot.dmm
* Tweaks the BEPIS category of the bitrunning order console
* Adds back the flashdark that we had skyrat edited in
* Update tgstation.dme
* Fixes Voidraptor bitrunning den not being connected to the powergrid
---------
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com>
Co-authored-by: Profakos <profakos@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* You can now pick the limb you want replaced with the Prosthetic Limb Quirk. (#78517)
## About The Pull Request
The Prosthetic Limb quirk allows you to pick the limb you want. The
default is still random
## Why It's Good For The Game
Good for character customization, which is always nice. Statics who got
a specific limb replaced can now represent that properly in-game.
Also, this makes the quirk show up on the dummy on the character
customization again. This *does* cause a slight issue where when you
switch to another character, it keeps the previous' skin color, but it's
minor enough that i think the benefits are worth the drawback. If asked
i will make it not appear on the dummy though.
## Changelog
DATA_, with great help from Kapu🆑
add: You can now choose the prosthetic you want with the Prosthetic Limb
quirk.
/🆑
* You can now pick the limb you want replaced with the Prosthetic Limb Quirk.
---------
Co-authored-by: DATAxPUNGED <44149906+DATA-xPUNGED@users.noreply.github.com>
* TTS: Gas Mask muffling, Hailer Mask voice effects, support for more filters that use samplerate, voice effects for lizards, ethereals, and xenomorphs.
* Update RecordView.tsx
* Update types.ts
---------
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Culls client/mouse code only used by beam rifles in favor of signals. (#78113)
* Culls client/mouse code only used by beam rifles in favor of signals.
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Added sounds for unlocking achievements. (#77968)
## About The Pull Request
Unlocking an achievement now plays a sound. Which sound is played
depends on the associated preference of the player, found in the Sound
category of the game preferences UI.
The current options are a [glockenspiel
ping](https://freesound.org/people/FunWithSound/sounds/456965/), a
[beeps jingle](https://freesound.org/people/Eponn/sounds/619838/) and a
["tada!"
fanfare](https://freesound.org/people/plasterbrain/sounds/397355/), with
the obvious fourth option to not play a sound at all.
All sounds are from Freesound and are public domain. As such,
attributions are not required. The sounds have been also converted to
.OGG mono 44.1 Khz in accordance to the standards.
## Why It's Good For The Game
Enhancing the player feedback for unlocking an achievement with
choosable sounds.
## Changelog
🆑
sound: Unlocking an achievement now plays a sound by default. You can
change it in the Sound category of the game preferences.
/🆑
* Added sounds for unlocking achievements.
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Initial draft, most of the stuff is implemented, not really tested or cleaned up yet
* Refactors the handling into a datum-based approach, for more abstraction
* Added migration, properly hooked up the verb to the new system
* Removed some more dead code
* Fixes some missing stuff from the .dme because VSC is stupid sometimes with merge conflicts
* Fixes the schema
* Wow I was really getting tired huh
* A fool, I say, a fool!
* I hate lists of lists I hate lists of lists I hate lists of lists
* I somehow missed this one twice. TWICE!
* This won't actually work if it's defaulting to true, lmao
* Makes it not log stuff if the adding or removing of players is unsuccessful
* Adds a way to update all of the unlock_contents for preferences datums once the donator list is initialized
* Runs update_prefs_unlock_content on mob Login() (hopefully this helps)
* Fixes the bajillion of runtimes caused by my dumb ass trying to make some client calls on ckeys
* Man I was really tired that day
* I had this ready for three hours and forgot to push it
* Revert "Add the ability to use blips as your character's voice" (#77715)
Reverts tgstation/tgstation#77640

This is causing big problems right now and we've agreed to a, at
minimum, temporary revert so that we can re-approach this at a later
date and do things properly
@ MrStonedOne pls i need that TTS repo im begging you pls
* Revert "Add the ability to use blips as your character's voice"
---------
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
* Add the ability to use blips as your character's voice (#77640)
## About The Pull Request
- Adds the ability to force your TTS voice to always be blips, default
is still normal speech
- Probably fixes a bug with silicon voices not transferring properly?
There was an entire argument missing from tts_request/New
- Fixes problems I got from the Docker build not working at all. Only
thing interesting is `--no-cache-dir` which was to fix the container
running out of RAM even though I literally just got 64GB of RAM today
Got permission from @ optimumtact as alternative to being able to disable
your voice, CC @ Iamgoofball
## Why It's Good For The Game
I spent two hours trying to find a voice that didn't make me
uncomfortable to use and that was even in the realm of being the voice I
would actually want people to hear. Characters still have distinct
"voices" because the blips are chopped together from the voice itself
## Changelog
🆑
add: You can now set your voice to just blips.
/🆑
* Add the ability to use blips as your character's voice
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>