* Fixes grammar in cat_house.dm (#83651)
## About The Pull Request
Capitalizes and adds a period to the inspection text of the cat house.
## Why It's Good For The Game
Grammar is good. I like grammar.
## Changelog
🆑
spellcheck: Changed grammar in cat_house.dm
/🆑
* Fixes grammar in cat_house.dm
---------
Co-authored-by: vendingmachine24 <109557428+vendingmachine24@users.noreply.github.com>
* Fixes incorrect arguments in Status Displays (#83611)
## About The Pull Request
Introduced in #83296 (9c58d7d1b9)
Args for `generate_status_text()`: `line_y, message, x_offset,
text_color, header_text_color, line_pair`
The positional args we were feeding it via
`/obj/machinery/status_display/proc/update_message()`: `line_y, message,
text_color, header_text_color, x_offset, line_pair`
This PR just moves `x_offset` to the proper position so we aren't
plugging the wrong numbers into the positional arguments.
## Why It's Good For The Game
Was likely broken, now it is fixed. In my test case, I found that it
would break really weirdly and badly without this fix and worked fine
with this fix. Probably due to the keys actually working. Anyways this
was almost definitely the correct behavior seeing as x_offset is always
the third argument everywhere so
## Changelog
🆑
fix: Status displays should now no longer sporadically randomly break
when in the custom message mode
/🆑
* Fixes incorrect arguments in Status Displays
---------
Co-authored-by: san7890 <the@san7890.com>
* removes the force drop when trying to attack with an unwielded crusher (#83641)
## About The Pull Request
What it says on the tin. If you're not wielding the crusher, rather than
forcefully dropping everything in your hands, you simply just don't
attack.
## Why It's Good For The Game
This was added when the crusher was able to be held in one-hand, before
we got the two-handed component. However, for some inexplicable reason
there was a noob trap added into that feature that has existed for
almost five years. Maybe skoglol had their reasons for putting it in
there at the time, but I don't believe this is anything other than
unnecessarily punishing in the modern state of the code. A return works
just fine.
The PR that added it for anyone curious
https://github.com/tgstation/tgstation/pull/45110
## Changelog
🆑
qol: Failing to hit someone with a proto-kinetic crusher one-handedly no
longer force drops everything in your hands.
/🆑
* removes the force drop when trying to attack with an unwielded crusher
---------
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Removes references to no-longer-existent "Tesla Energy Relay" from nukeop uplink (#83644)
## About The Pull Request
Title
## Why It's Good For The Game

## Changelog
🆑 PapaMichael
spellcheck: Nukie uplinks no longer claim to have nonexistent "Tesla
Energy Relays"
/🆑
* Removes references to no-longer-existent "Tesla Energy Relay" from nukeop uplink
---------
Co-authored-by: PapaMichael <papa.michael.1996@gmail.com>
* The memories for Smoker and Alcoholic now actually mention the preferred brand (#83674)
## About The Pull Request
This revises the descriptions for the smoker/alcoholic quirk memories to
actually mention the preferred brand:
## Why It's Good For The Game
Because memories should help you, well, remember stuff, and "Joe's
smoking problem" is kinda useless when you've forgotten _which_ brand
your character prefers.
`[name]'s smoking problem.` -> `[name]'s addiction to [preferred_brand]
cigarettes.`
`[name]'s drinking problem.` -> `[name]'s addiction to
[preferred_brandy] alcohol.`
## Changelog
🆑
qol: The memories for Smoker and Alcoholic now actually mention the
preferred brand.
/🆑
* The memories for Smoker and Alcoholic now actually mention the preferred brand
---------
Co-authored-by: Lucy <lucy@absolucy.moe>
* Make AI's jump to AI Core button work while on backup power (#83669)
## About The Pull Request
Allows the AI Core button which snaps their camera to their mob to work
even on backup power.
I don't consider this a balance change because there are already a
myriad of ways to get `AI.view_core()` to be called besides the button
(one of them being to simply reconnect), or other ways to bypass like
what I have taken to doing is prepare a camera hotkey at roundstart
since those do continue to work fine on backup power for some reason.
## Why It's Good For The Game
QoL good. Makes AI a little more intuitive to play especially when s*it
hits the fan.
## Changelog
🆑
qol: AI's jump to AI Core button works while on backup power (likely
when needed most).
/🆑
* Make AI's jump to AI Core button work while on backup power
---------
Co-authored-by: Wayland-Smithy <64715958+Wayland-Smithy@users.noreply.github.com>
* Minor Spider Rebalance (#83554)
## About The Pull Request
Breacher and Viper player-controlled Spiders have swapped castes; Vipers
now come from Abnormal Eggs, while Breachers will now come from Enriched
Eggs. This means that Vipers may be seen more, while Breachers require
the Nest to acquire at least a single kill to wrap and create an
Enriched Egg from. Nurse Spiders also perform their heal action much
faster, at the cost of a bit less healing. It was very difficult to heal
others due to the long do_after and thus we saw very few Nurse Spiders.
Breacher Spiders also are now NOT immune to cold, and will die if they
try to space a room or go into space.
## Why It's Good For The Game
Breacher Spiders are in kind of a difficult spot, both in theming and
balance; their space resistance made them able to vent the station in
multiple places by breaking key walls, and they had no need to commit to
their sieges because they could escape into space at all times. It also
broke part of the dynamic of Spiders wanting to keep the atmosphere in
the station, and disincentivizing Breachers from venting the station
also makes them more coherently a part of the Nest because they won't
reduce the Nest's habitable area.
Viper Spiders were seen quite little instead of the other options in the
Enriched Egg; now, hopefully we'll see more. Likewise, the Breacher is
quite powerful for being an Abnormal Egg, so perhaps now we'll see more
focus on cocooning to unlock the powerful Breachers, or just overall
less of them, which will help even the odds.
Nurse Spiders were VERY underutilized despite their power— the do_after
for their healing just felt obnoxiously long, and especially in tense
situations, you'd have shuffle and Spiders yelling at one another
because two of them have to Space Hulk the hallway for a semi-extended
period of time. Now, Nurses will be able to heal and move on a bit
faster. I don't believe this will create too many issues, balance-wise,
as the time-to-kill on Spiders is still quite low for all but the
tankiest against lasers and even welders.
## Changelog
🆑 Jane
balance: Spider Breachers and Vipers have swapped castes. Breachers come
from Enriched Eggs while Vipers come from Abnormals! Breachers can no
longer survive in spaced rooms/temperatures. The Nurse wraps wounds
faster, but with less damage healed per wrap.
/🆑
* Minor Spider Rebalance
---------
Co-authored-by: DrAmazing343 <147954468+DrAmazing343@users.noreply.github.com>
* Fixes crutches crippling you and giving infinite speedboosts (#83660)
Fixes#83646
Fixes crutches setting your legs to null whenever you pick them up or
drop them
Fixes slowdown reduction on crutches being permanent (this was hard to
notice because they instantly cripple you)
🆑
fix: fixes touching a crutch permanently crippling you
fix: fixes crutches giving permanent speedboosts even when dropped
/🆑
* Fixes crutches crippling you and giving infinite speedboosts
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
* Bumps rust-g to `3.3.0` (#83635)
## About The Pull Request
Release notes: https://github.com/tgstation/rust-g/releases/tag/3.3.0
Mainly bumping in order to use a feature of it in #83138, to optimize
the system a little better.
## Why It's Good For The Game
Faster init when that system will be more widely used is a good thing.
Also keeps us up to date and enables more tools to be available to
coders.
* Bumps rust-g to `3.3.0`
---------
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Adds Soup boiling SFX (#83649)
## About The Pull Request
In honor of the new sound effects general
https://github.com/tgstation/tgstation/assets/51863163/b2db8ee1-51ef-45a8-9cc8-31594d034ea5
Adds a sound effect that plays when soup is boiling (IE, it only plays
when smoke appears over the soup pot)
It has a sharp falloff and a distance penalty so it will really only be
heard in the kitchen (or though the kitchen's walls), maps with ranges
close to the counter like Metastation notwithstanding.
## Why It's Good For The Game
A touch of atmosphere
## Changelog
🆑 Melbert
sound: Boiling soup now makes a sound.
/🆑
* Adds Soup boiling SFX
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Added the zipzap to the ocean sources (#83645)
## About The Pull Request
In this PR I am just adding the Anxious Zipzap from #83508 to an actual
fishing source, as that was left out of the original PR by mistake. It
compiled properly and loaded as a server.
## Why It's Good For The Game
Adding a way to actually obtain a recently added fish (with the only
other way to interact with the power generation mechanics being an emag)
seems like it would be good overall.
## Changelog
🆑
fix: Made the anxious zipzap accessible.
/🆑
* Added the zipzap to the ocean sources
---------
Co-authored-by: jwc1015 <64438862+jwc1015@users.noreply.github.com>
* Revert "Blade creation ritual returns lost blades" (#83594)
Reverts tgstation/tgstation#82592
The point of the limit on blades is to punish heretics for handling them
carelessly, allowing them to undo that for free is lame.
Maybe someone can re-add this as a separate ritual which has its own
requirements, maybe a knowledge requirement.
🆑
del: Heretics can no longer return their stolen blades, that's the point
of the limit
/🆑
* Revert "Blade creation ritual returns lost blades"
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Adds Crutches to Medbay & Crafting (#83242)
## About The Pull Request
Added crutches! Wooden ones can be made with wood. Medical ones can be
bought from the medvendor.
Crutches will reduce slowdown from missing a leg by 60%, and they will
remove the limping from fractured bones. They're also a fairly decent
bludgeon. However, they do nothing if both legs are cut off. Canes now
also remove broken bone limping as well
Changed the 'white cane' name to 'probing cane' to better reflect its
function.
Shuffled some wound and mob code around, added signals for limbless
slowdown and limping.
Crutches make you waddle.
SPRITES BY XHORIAN!!!!!!!!!!!!!




## Why It's Good For The Game
> Added crutches! Wooden ones can be made with wood. Medical ones can be
bought from the medvendor.
> Crutches will reduce slowdown from missing a leg by 60%, and they will
remove the limping from broken bones. They're also a fairly decent
bludgeon. However, they do nothing if both legs are cut off.
Currently there's no way to abate slowdown from a missing leg except
getting on a vehicle, which I think is pretty lame. What if all the
doctors are busy, missing, or dead? What if medbay is a hole? A crutch
helps make up for the loss at the cost of a hand slot.
> Changed the 'white cane' name to 'probing cane' to better reflect its
function.
'White cane' was undescriptive.
> Shuffled some wound and mob code around, added signals for limbless
slowdown and limping.
I dont know where to put the friggin signals
## Changelog
🆑
Carlarc, Xhorian
add: Added crutches! Wooden ones can be made with wood. Medical ones can
be bought from the medvendor.
add: Crutches will reduce slowdown from missing a leg by 60%, and they
will remove the limping from fractured bones. (canes do that now too)
They're also a fairly decent bludgeon. However, they do nothing if both
legs are cut off.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Adds Crutches to Medbay & Crafting
* This should do the trick
* Missed one
* fix
---------
Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
Patches exploit with (and pre-emptively bumps the usage costs) to the new Adrenal Glands (#83612)
## About The Pull Request
1.
Because the reset timer was not done with `TIMER_UNIQUE|TIMER_OVERRIDE`,
this meant that you could pop the ability, wait 19 seconds, and then pop
it again. And now you had all the benefits of the ability without any of
the downsides, because the timers would not reset and instead run
simultaneously.
I fixed this by both adding the timer flags and by preventing usage of
the skill while you are under the effects of it. (Just in case.)
2.
With permission from Jacquerel, I bumped the chemical cost and dna cost
back up to similar numbers as before. I think the PR swung the hammer
way too far in that direction (You don't make it more spammable while
also making it better, you either do one or the other!)
## Changelog
🆑 Melbert
balance: Re-ups the cost of the new ling adrenal ability
fix: Patches an exploit with new ling adrenal ability
/🆑
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Borgs: the moduling (Various fixups to borg module code) (#83116)
- Gets rid of the item addition copypaste code (Why nobody did this for
7 years is beyond me)
- Adds variable and proper checks for if a module is already installed
(Borgs will no longer eat up unlimited masses of lavaproof track
upgrades, among others) (Technically this never allows duplicates, at
least currently, as I don't recall any modules being capable to used
multiple times intentionally without also deleting themselves with
single_use)
- Unsingleletters most if not all of `robot_upgrades.dm`
Makes the borg module code much cleaner, makes it significantly easier
for new ones to be added. Fixes unintended behaviour with some modules
being able to stack, which until now was always solved by copypasting
code.
🆑
fix: Fixed some borg modules just being constantly eaten up by borgs
even when they shouldn't allow duplicates
refactor: Borg module code now has better handling for adding/removing
items, and to prevent duplicate module usage (Unless one wishes to
override the behaviour.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
* Welp
* fix
---------
Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
* Gondolas are now basic mobs (#83451)
## About The Pull Request
This PR turns gondolas into basic mobs and does some fiddling with
gondola pods
Their verbs are now action buttons which they lose upon delivering. If
set to stay, they won't have their abilities afterwards (or wont get
them in the first place if the delivery is already done).
Lets them survive without a pod requirement in case admins want to spawn
one for their own stuff, so I also removed it from the snowflake checks
to exclude them from stuff.
Also replaced the hardcoded "cant speak" with simply giving the mute
trait, so admins can make gondolas speak if they want to for any reason.
## Why It's Good For The Game
The pet level of simple animals can finally be killed off, also gives
admins more control over gondola-related stuff if they so wish.
## Changelog
🆑
refactor: Gondolas (including gondola pods) are now basic mobs.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
* Well then. Hope it works.
* Ohhh.
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Mining armor and suit storage cleanup/generalization/modernization (#83437)
## About The Pull Request
### Suit Storage
Makes the suit storage of the various suits consistent across one
another. Now, all the mining suits use a single list which is easier to
maintain.
**The affected suit list is as follows;**
Explorer Suits (and therefore Syndicate Explorer Suits), Goliath Cloaks,
Bone Armor, Drake Armor, Godslayer Armor, Berserker Armor, Mining
MODsuits, H.E.C.K. Suit.
**The list of holdable items is as follows;**
Flashlights, Proto-Kinetic Accelerators, Advanced Mining Scanners /
Mining Scanners, Pickaxes, Upgraded Resonators / Resonators, Ore Bags,
Air Tanks, Spears, special monster organs like Regenerative Cores,
Knives, Proto-Kinetic Crushers, Cleaving Saws (the one that Blood-Drunk
Miners drop), Grappling Guns and Climbing Hooks.
~~It probably doesn't matter too terribly much because you know only air
tanks are going in that slot 95% of the time~~
### Bone Armor and Goliath Cloaks
Bone armor and goliath cloaks both have the same armor values,
environmental protections and coverage as the explorer suit (bone armor
includes the feet due to the sprite physically covering the feet, which
is not a terribly significant balancing point but worth mentioning).
They use the armor plate component to improve the parts of bone armor.
However, they use bone talismans instead of goliath hide to be upgraded.
Goliath cloaks come fully upgraded. You'll see why in a second.
Their recipes are slightly different. Goliath cloaks take nine hides
(I'm so sorry this is for consistency I promise you can't use the
upgrade system with something that deletes its own armor values like
this) and three sinew. Bone armor takes three goliath hides and 6 bone.
### Berserker Armor
Berserker armor can now be improved to the same armor value as drake
armor by using a full suit on both the body and the helmet of the
berserker armor. (Each drake makes two suits, so you need to use up both
suits).
Instead of an armor boost, rage now halves incoming brute damage. Fuck
you, Bubblegum!
### Minor Mining MODsuit Tweak and other armor value changes
The base value for the armor is now 20, rather than 15, so that when it
reaches max ash accretion it has equivalent armor to a fully upgraded
explorer suit. This is only a value difference of 5, but it always
annoyed me seeing it.
All the above mentioned suits also now have a value of about 10 wound
armor. This is because miners do actually experience wounding on
lavaland. Some of the armors had this wound armor. Some didn't. Now they
all do. I don't believe this to have been a deliberate design choice,
but rather, an oversight. Iunno, someone who keeps track of this please
tell me otherwise.
Upgraded suits get a prefix to show they are upgraded. Now, never doubt
whether the miner you are fighting is in a baseline explorer suit or a
riot suit level improved explorer suit ever again!
### Berserker Armor actually covers up clothing/hair underneath properly
and other minor stuff
This is why I started this PR by the way. This one fix. I expand the
scope of my horizons so broadly when I really sit down and PR, don't I?
H.E.C.K. and Berserker helmets can be used for internals.
## Why It's Good For The Game
There is a great deal of inconsistency with regards to the various
lavaland armor you can find and use. Some armors were wildly inferior to
others and only really having value for aesthetic. Some just seemed to
have oversights that didn't seem quite right. And most importantly, the
actual storage list for mining suits in general were not only
inconsistent in of themselves, but were also not being updated as time
goes on.
Bringing them all into line allows for miners to have a bit of freedom
of choice when it comes to appearance, without it becoming a balancing
sticking point nor a detriment to their effectiveness. It is also much
easier to maintain one list than six or seven lists.
Assuming that the baseline of the explorer suit is a-okay for someone to
possess, goliath cloaks and bone armor should now feel more like
fashionable choices rather than, in some cases, being either a worse or
better choice to take (its bone armor, bone armor is the best of these,
its really good generalist armor). I don't care what effect it has on
the ashlander economy. Neither should you.
The minor tweaks and fixes are just stuff that annoyed me for autism
reasons or were oversights due to changes to the items in question or
the game around it. I doubt anyone but me cares very much about these
minor differences, but I like consistency.
## Changelog
🆑
balance: The various mining related suits now have consistent suit
storage. Try putting a knife into your explorer suit's suit storage
today!
balance: Bone armor work similarly to explorer suits, with similar armor
values and options to upgrade their parts. However, they use bone
talismans instead of goliath hides to upgrade. Magic? Just believing
really strongly that the drake is hitting you slightly less hard because
of the talismans? You be the judge.
balance: Goliath cloaks come fully upgraded. However...
balance: The recipes for bone armor and goliath cloaks are slightly
different. Particularly goliath cloaks, which need a lot more dead
goliaths to make. Sorry.
balance: Mining MODsuits achieve at maximum ash accretion the same
amount of melee armor as an upgraded explorer suit.
balance: These various suits also consistently have wound armor.
fix: Berserker armor properly hides underclothing and hair.
balance: Berserker armor pieces can absorb drake armor to gain their
enhanced protection. Become the warrior of Khorne you've always wanted
to be.
balance: Berserker rage now halves brute damage rather than just adding
Melee Armor to you and your squishy body.
qol: Berserker and H.E.C.K. helmets can be used for internals.
/🆑
* Mining armor and suit storage cleanup/generalization/modernization
* There we go.
* Guess I missed this one
---------
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
* Floor diseases are easier to cure (#83613)
## About The Pull Request
The floor diseases were supposed to be more of a joke, but it seems to
be a bother for many due to the scarcity of cures.
This PR changes the floor diseases cures to some common chemicals.
## Why It's Good For The Game
They weren't supposed to suffer this much.
## Changelog
🆑
balance: Floor diseases cures are now common chemicals: Milk, Chlorine,
Space Cleaner
/🆑
* Floor diseases are easier to cure
---------
Co-authored-by: Andrew <mt.forspam@gmail.com>
* Toilet and urinal updates (flushing dead fish included) (#83490)
## About The Pull Request
I split the water closets file into a folder for all the different
structures and also did a few other things
1. Remakes https://github.com/tgstation/tgstation/pull/81914
2. Reworks toilets, it’s now Alt Click to open/close the cover, left
click takes things out of the toilet and cistern, right click flushes
3. You can now put dead fish in the toilet to flush it
4. Adds context tips to toilets.
## Why It's Good For The Game
When I was a 7 year old boy, I had a friend goldfish named Jeremy. He
was my greatest friend until one day when my brother told me it’s for
babies and flushed him alive down the toilet, and I’ve never seen it
again.
Closes https://github.com/tgstation/tgstation/issues/81903
Lets you flush down people’s fish in the toilet, and re-experience their
loss.
This was inspired by my lawyer fish PR, to add things more on the
non-fishing side of fish.
## Changelog
🆑
add: You can now flush toilets. You can also put fish in the toilet. And
flush them.
fix: Urinals can no longer be used to delete items.
fix: Urinals no longer grant infinite urinal cakes.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@ users.noreply.github.com>
* Toilet and urinal updates (flushing dead fish included)
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@ users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Fixes COMSIG_ATOM_POST_DIR_CHANGE having the same definition as COMSIG_ATOM_DIR_CHANGE (#83604)
## About The Pull Request
Title.
## Why It's Good For The Game
Turns out, signals having the same definition causes a lot of issues.
## Changelog
🆑
fix: COMSIG_ATOM_POST_DIR_CHANGE is now a functional signal
/🆑
* Fixes COMSIG_ATOM_POST_DIR_CHANGE having the same definition as COMSIG_ATOM_DIR_CHANGE
---------
Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
* Cuffed people can sign (to a limited degree), signing tone emotes improvement (#83501)
## About The Pull Request
Currently, if you handcuff someone and they only have sign language
available to speak in (mute, no tongue, nearby people are deaf, you have
bronchitis(?)), they are rendered totally unable to communicate with
anything but emotes. This is stifling to trying to roleplay with nearby
people who want to keep you cuffed for whatever reason (security,
antagonists, weirdos who keep hugging you, etc).
So instead, I've made it so that if you use sign language while
handcuffed, you are still able to sign, but to a much more limited
degree (3 - 5 words per message).
If you're put in a straightjacket, you're still totally unable to use
sign language.
Additionally, I spruced up the messages that sign language uses to
signify tone (?, !) and added one for EXCLAIMED QUESTIONS?! I also made
the emotes work as emotes, rather than the small (easily missable)
messages in the chat box. These emotes will not fire if you sign with
tone while cuffed, to avoid you becoming a spam machine.
## Why It's Good For The Game
It lets cuffed sign language users communicate, which is usually a
pretty good thing when it comes to improving a scene for both them and
the people they're playing with.
It improves the descriptiveness of the inquisitive and exclamatory tone
messaging for sign language users, and also adds one for a combination
of the two tones.
## Changelog
🆑
qol: Sign language users can now sign in cuffs, but to a very limited
degree. They also have more descriptive emotes for questions,
exclamations, and a combination of the two.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Cuffed people can sign (to a limited degree), signing tone emotes improvement
---------
Co-authored-by: Joshua Kidder <49173900+Metekillot@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Fixes being permanently attached to tram (#83606)
## About The Pull Request
Verifies transport contents at time of tram departure, removing any
invalid movables
Fixes https://github.com/tgstation/tgstation/issues/77722
## Why It's Good For The Game
Movables no longer get invisibly, permanently attached to the tram in
rare event transport moves before contents are updated.
## Changelog
🆑 LT3
fix: Fixed bug where players could be invisibly attached to the tram
forever
/🆑
* Fixes being permanently attached to tram
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Refactored ghetto chem separator (#83275)
## About The Pull Request
This completely reworks how ghetto chem separator works & brings more
depth & immersion to it. To understand the new system let's compare it
with the current one
**Old System**
1. You insert a beaker containing the reagents you want to separate.
2. You use a lighter/whatever to light a flame, Flame has _magic &
unrealistic_ properties such as
- It will never heat the beaker above 100k
- It doesn't burn oxygen or use fuel source to sustain it
- Distillation rate is a constant 5u/s. It doesn't increase as the
solution boils hotter
3. The apparatus sorts the reagents alphabetically? & transfers the 1st
reagent from sorted list to the target beaker. It does not care if each
individual reagent has their boiling points & how to separate them based
on that etc. It's just bland overall
**New System**
1. You insert a beaker containing the reagents you want to separate,
just lke the old system
2. You use a lighter/whatever to light a flame just like the old system,
however flame behaves in a more realistic fashion as follows
- It will heat the beaker all the way to 1000k if you let it run long
enough
- It now burns oxygen & uses a fuel source(a secondary beaker which you
must insert containing flamable reagents like oil, welding fuel etc).
When oxygen is the fuel source no O2 gas is required
- Distillation rate starts at 2u/s & increases with rising temps
- Intensity of the flame depends on the quality of reagents used as
fuel, Oil has best flammable quality & will heat the beaker faster,
other reagents mixed in various proportions can produce better quality
flames which you can understand by examining the aparatus
- The flame intensity can be adjusted via the burner knob setting
3. Each reagent now has their _boiling computed_ computed from their
mass allowing for realistic interactions, like having to control the
temp's just right to separate your required reagent
4. Temps automatically cooldown and you can install a condenser to
Facilitate faster cooling
Here's the demo video explaining everything
https://github.com/tgstation/tgstation/assets/110812394/ba591859-3fff-4d06-90f8-024c7266f830
## Changelog
🆑
refactor: ghetto chem separator has been reworked from scratch. See PR
83275 for details
qol: adds examines & screentips for ghetto chem separator
/🆑
* Refactored ghetto chem separator
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* Minor code clean-up for Cryo (#83477)
## About The Pull Request
- Converts `attackby()` to `item_interaction_with()`
- Prevents abstract/hologram beaker interactions with Cryo
- Cryo respects `NO_DEBRIS_AFTER_DECONSTRUCTION` by properly removing
the mobs visual contents flag & related traits inside
`handle_deconstruct()` instead of `on_deconstruction()`
- Uses `CHEMICAL_VOLUME_ROUNDING` define for rounding reagent volumes.
Everything else is just shuffling code around
## Changelog
🆑
fix: Cryo tube respects `NO_DEBRIS_AFTER_DECONSTRUCTION` for the
occupants visual contents flags & traits & won't allow hologram/abstract
item interactions
code: Cryo has improved attack chain & uses defines for reagent volume
rounding
/🆑
* Minor code clean-up for Cryo
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* Adds an ion storm law that affects the humanity status of station pets (#83527)
## About The Pull Request
Adds a few laws that basically do this:

Has a chance to select a concept that is related to other lawsets, just
in case.
## Why It's Good For The Game
I think it is funny when the AI has to care about the station pets. I
have added the AI law "POLY IS HUMAN" in the past to relative hilarity,
especially when Poly decides to give the AI an order. The other pets
aren't likely to do this, but it's still cute to make the AI care about
the existence of lower lifeforms.
## Changelog
🆑 Vekter
add: Adds an ion law possibility that changes the human status of
station pets.
/🆑
* Adds an ion storm law that affects the humanity status of station pets
---------
Co-authored-by: Vekter <TheVekter@users.noreply.github.com>
* fix: allow giant spiders aggressively grab again (#83531)
## About The Pull Request
Remove check that restricted non-carbon mobs from upgrading grab, using
`max_grab` instead which exists for this purpose
All mobs now have `max_grab` set to `GRAB_PASSIVE` by default, overrided
where required.
Giant spiders can now agressively grab, which makes `ambush` spider
playable again (i hope).
closes#83485
## Why It's Good For The Game
Ambush spider works as intended, as it has `STRONG_GRABBER` trait, but
effectively it didn't work, as spiders couldn't grab agressively.
## Changelog
🆑
fix: ambush spider (should instantly agressive grab) and other giant
spiders can now agressively grab
/🆑
* fix: allow giant spiders aggressively grab again
---------
Co-authored-by: Gaxeer <44334376+Gaxeer@users.noreply.github.com>
* Fix not being able to stop looking vertically (#83503)
## About The Pull Request
This fixes a bug with the look down/up verbs where you are not able to
*stop* looking unless you're on a tile where you're able to *start*
looking.
## Why It's Good For The Game

## Changelog
🆑
fix: you are now able to cancel the look up/down verbs from anywhere
/🆑
* Fix not being able to stop looking vertically
---------
Co-authored-by: Echriser <EthanSC2001@outlook.com>
* Pillow now consumes stamina in both unwielded and wielded states (#83444)
## About The Pull Request
There was some issue about players being kept in stamcrit via stamina
damage refreshing the timer. @ Watermelon914 has confirmed that refresh
mechanic is ok but only with stamina weapon with limited charges, pillow
does not have charges in its unwielded state so I have added some. Now
there is a limited amount of hits you can make before being stam crit
yourself. Self damage for wielded state have also been increased to
create a trade off between dealing more damage and how much self damage
you take.
## Why It's Good For The Game
## Changelog
🆑
balance: Attack with a pillow now consumes 5 stamina regardless of
wielded or not.
/🆑
* Pillow now consumes stamina in both unwielded and wielded states
---------
Co-authored-by: FinancialGoose <92416224+TheBoondock@users.noreply.github.com>
* Makes disease airborne spread more realistic (#83423)
## About The Pull Request
1. Rather than checking every life tick to try to spread via air, it
checks every breath tick. IE, every 8 seconds.
2. Wearing a mask now protects you from catching airborne diseases,
rather than only protecting you from spreading it.
3. Wearing a mask is no longer guaranteed effective (unless on
internals), it now scales based on BIO armor. This is doubly effectively
for people wearing a mask to stop spreading to others vs wearing a mask
to block spreading to them.
## Why It's Good For The Game
Wearing any kind of mask means airborne viruses will never spread, but
also wearing any kind of mask on the opposite end is pointless unless on
internals. Kinda silly.
This PR unifies those behaviors. Wearing a mask to stop spread is still
rewarded, as BIO armor is doubly effective at stopping a spread attempt
as blocking a spread attempt.
Ultimately the goal of this is to give players a realistic way to
protect themselves against airborne transmission vectors besides staying
on internals 100% of the time.
## Changelog
🆑 Melbert
balance: Wearing a mask can now prevent you from being spread airborne
diseases. Prior, it only stopped you from spreading it yourself.
balance: Wearing a mask no longer 100% guarantees you don't spread
viruses to others people - it now scales on the masks BIO armor. Get a
sterile mask from Medical for max safety.
balance: Wearing a mask to stop you from spreading to other people is
doubly effective than wearing a mask to prevent spread to yourself -
Mask up for the greater good!
balance: Passive airborne virus spread attempts are now done every time
you breathe (every eight seconds), rather than every two seconds. The
chance of spread is the same, though - it has been scaled up to
accommodate.
code: Cleaned up a fair bid of airborne-transmission-code. Report any
oddities.
/🆑
* Makes disease airborne spread more realistic
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Improves the NTSS Independence's medical bay (#83569)
## About The Pull Request
Makes some minor changes to the NTSS Independence, mostly regarding the
medical area, listed below:
Cryogenics thermomachine is now rotated properly
Cryogenics now has a mannitol pill bottle like other cryo rooms
The sleeper is now fully upgraded
There is now a full advanced surgery toolset, a health analyzer, and a
compact defibrillator in the surgery corner
The medical kiosk has been replaced with a second stasis bed
The basic medibot has been turned into a much better medibot
One of the vibebots has been removed due to their effects conflicting
with one another
## Why It's Good For The Game
The ship is the most expensive in the game, it's supposed to have a
robust medical area. Lukewarm cryo cells and a
'bring-your-own-equipment' type operating area just don't cut it for the
cost.
## Changelog
🆑
fix: The NTSS Independence cryogenics thermomachine is now properly
hooked up to the cryo loop.
qol: The NTSS Independence's medical bay has received improvements. The
medibot and the sleeper are upgraded, and advanced surgery equipment has
been added.
/🆑
* Improves the NTSS Independence's medical bay
---------
Co-authored-by: norsvenska <73006946+norsvenska@users.noreply.github.com>
* Restrict AI floor bolt external manipulation (#83463)
## About The Pull Request
My delayed reaction to #68451
**When an AI is alive, on main power, and not SSD its bolts cannot be
raised or lowered externally thus returning some small amount of
autonomy to everyone's favorite brain in a box.**
I tested to be sure this change does not interfere with (de)construction
or other tool actions besides their "must be anchored" requirements.
Should maintainers wish I can adjust the check to allow external
lowering, but not raising, of the bolts anytime to satisfy those
scenarios.
I decided to include "is on backup power (incapacitated)" in the check
as a middle ground so when moving an AI from a bombed sat or the like
anyone who is now used to being able to wrench for a rescue is not
caught off guard since AI gets a harsh penalty for moving bolts on
backup power (most likely overlooked in the original PR). This also
means if you really want to move an active AI Core against its will you
still have a path forward aside from _convincing_ the AI to raise them
voluntarily.
## Why It's Good For The Game
IMO this sort of check should have been included in the original
changes, or at least made to post the anchor status message to the AI's
chat rather than a balloon they are likely to miss. An incapacitated AI
is much more likely to be watching their core.
In the grand scheme this changes very little for anyone out to get an AI
since they will most likely just card or smash it to death anyway. It's
mostly just good for a little silicon piece of mind.
## Changelog
🆑
balance: When an AI is alive, on main power, and not SSD its bolts
cannot be raised or lowered externally.
/🆑
* Restrict AI floor bolt external manipulation
---------
Co-authored-by: Wayland-Smithy <64715958+Wayland-Smithy@users.noreply.github.com>
* projectile dismemberment respects limb dismemberability (#83479)
## About The Pull Request
projectile dismemberment respects limb dismemberability
## Why It's Good For The Game
bug bad
## Changelog
🆑
balance: you may not decap people with a plasma cutter
/🆑
* projectile dismemberment respects limb dismemberability
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
* Allows the fermenting (wooden) barrel to be emptied and to be wrenched + add contextual helpers to help visualize its interactions (#83491)
## About The Pull Request
Wooden barrels can now be wrenched down to be anchored, which should
make them a lot more convenient if you want to avoid people constantly
pushing them around.
They can also now be emptied by right-clicking with an empty hand, to
help with accidents that do unfortunately happen, like when you add an
additional fruit that you didn't mean to add to the barrel on accident.
I also figured I'd improve its readability by giving it contextual
helpers, and I'm quite pleased with the results.
## Why It's Good For The Game
More QoL functionalities is always good. More controls visibility is
just better for accessibility.
## Changelog
🆑 GoldenAlpharex
qol: Fermenting (wooden) barrels can now be emptied when opened by
right-clicking with an empty hand!
qol: Fermenting (wooden) barrels can now be anchored/unanchored using
wrenches!
qol: Fermenting (wooden) barrels now have contextual helpers, to show
what you need to do at a glance to interact with them.
code: Documented a few of the fermenting barrel's variables.
/🆑
* Allows the fermenting (wooden) barrel to be emptied and to be wrenched + add contextual helpers to help visualize its interactions
---------
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* adds missing context tips to atmos canisters (#83602)
## About The Pull Request
What the title says
## Why It's Good For The Game
Being able to understand game mechanics by examining objects is very
helpful.
## Changelog
🆑 grungussuss
fix: added missing context tips for atmos canisters
/🆑
* adds missing context tips to atmos canisters
---------
Co-authored-by: grungussuss <96586172+Sadboysuss@users.noreply.github.com>
* Remove a bunch of unnecessary periods from photo descriptions containing living entities. (#83564)
## About The Pull Request
Looking at a picture I noticed the description was a bit off, so I did
some testing:

Lo and behold, wow it really does just slap periods on everywhere huh?
So I just went through the code for getting mob photo descriptions and
shuffled around where and when the periods are placed til it no longer
did that:

Also replaced a single letter variable while I was at it.
### EDIT:
Also added newlines between them, for good measure.

## Why It's Good For The Game
Think it's better for there to not be excess periods. ..
### EDIT:
The added newlines also make it, well, more readable.
## Changelog
🆑
spellcheck: Photo descriptions containing living entities no longer have
a pile of unnecessary periods. .. Which they used to have between
describing different entities. .. Also removed that additional space
they had too sometimes..
qol: Photo descriptions containing living entities have these
sub-descriptions split into newlines for ease of reading.
/🆑
* Remove a bunch of unnecessary periods from photo descriptions containing living entities.
---------
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
* Fix imaginary friend trauma and message range (#83590)
## About The Pull Request
So during a previous pr, attaching the imaginary friend to a host and
setting up its preferences were moved from initialization to two
separate procs. The _smite_ was then updated to account for this, but in
the process the brain trauma version was left behind- it even still
tried to add a nonexistent parameter when making a new imaginary friend.
We first fix this by having those two procs be called during
`add_friend(...)`, after finding and assigning a ghost.
```dm
/datum/brain_trauma/special/imaginary_friend/proc/add_friend(mob/dead/observer/ghost)
if(isnull(ghost))
qdel(src)
return
friend.key = ghost.key
friend.attach_to_owner(owner) //new
friend.setup_appearance() //new
friend_initialized = TRUE
friend.log_message("became [key_name(owner)]'s split personality.", LOG_GAME)
message_admins("[ADMIN_LOOKUPFLW(friend)] became [ADMIN_LOOKUPFLW(owner)]'s split personality.")
```
This solves our first issue, where this not being called made every
brain trauma imaginary friend get banished to gay baby jail where they
do not have an appearance, cannot move from their spot, cannot be heard,
and emit runtimes constantly.
Testing this brings us to our second issue, where the host couldn't
actually hear their imaginary friend unless they were at most one tile
away, and would get their message starred if not on the exact same tile.
Looking into it, this seemed to be because `Hear(...)` now had a
`message_range = 0` parameter which we don't actually set here.
Upshot! This seems to let us gut the whisper starring code on our side
and just proxy the right message range to `Hear(...)`.
So we gut our code a bit and do just that, and this fixes it.
## Why It's Good For The Game
Fixes#81138.
Fixes imaginary friend brain trauma being non-functional and emitting
runtimes like hell.
Fixes imaginary friends not being audible to their host beyond a one
tile distance.
## Changelog
🆑
fix: Imaginary friend brain trauma works again.
fix: Imaginary friends can be heard by their hosts from more than a tile
away again.
/🆑
* Fix imaginary friend trauma and message range
---------
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
* print 5 cable coils instead of 1 in lathes (#83601)
## About The Pull Request
What the title says.
## Why It's Good For The Game
It is incredibly tedious to get a large amount of cables from lathes,
considering you need a lot most of the time (especially in engineering),
it should be printing way more than one piece of cable.
## Changelog
🆑 grungussuss
qol: lathes will now print cables coils in packs of 5
/🆑
* print 5 cable coils instead of 1 in lathes
---------
Co-authored-by: grungussuss <96586172+Sadboysuss@users.noreply.github.com>
* Fixes runtime with serializing photo metadata (#83562)
## About The Pull Request
So while working on an entirely unrelated thing, I noticed runtimes
appearing in my logs after taking a picture.
Specifically a bad index runtime for the 77th line here:
2f6920105e/code/modules/photography/_pictures.dm (L66-L78)
And the 199th line here:
2f6920105e/code/datums/datum.dm (L193-L200)
This seemed to be caused by the fact `serialize_list(...)` is called
with a null `semvers` parameter, which then causes it to try to add to a
null list.
I asked about this in code general on the main discord, and got told
just putting an empty list in when `serialize_list(...)` is called
should be fine.
This resolves the runtime.
## Why It's Good For The Game
Better to not have two runtimes added to the logs whenever someone takes
a picture.
Fixes#80514.
* Fixes runtime with serializing photo metadata
---------
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
* [NO GBP] fixes positive viruses being hidden (#83576)
## About The Pull Request
#83459 made stealth a function of being equal to or higher than severity
which made a lot of previously visible positive viruses hidden.
Unintended behavior, fixes it.
## Why It's Good For The Game
fix good, most people without HUDs can't see these anyway. It's almost a
QOL thing to just be able to ask a doctor "hey do I have a positive
virus" since if it's perfectly positive, there's nothing really gained
by people not knowing (you, enemies, and friends alike.)
## Changelog
🆑
fix: positive viruses are no longer hidden.
/🆑
* [NO GBP] fixes positive viruses being hidden
---------
Co-authored-by: Higgin <cdonny11@yahoo.com>
Reworks Adrenaline Glands into Repurposed Glands (Realingment) (#83474)
Adrenaline Glands have been removed and replaced with Repurposed Glands.
This ability removes use of your arms in exchange for regenerating your
legs, breaking cuffs, giving you speed, damage slowdown immunity, and
regenerating and doubling your stamina temporarily.
It's probably a bit overtuned right now. I remembered how useless this
ability is and it made me mad.
I'm tired of AG being a completely useless noob trap that doesn't do
anything of value and isn't even accurate to its description or flavor.
Taking inspiration from Realignment, this turns it into what skoglol
tried and failed to turn it into: An escape plan that can't be used as
free stimulants.
🆑
balance: Reworks Adrenaline Glands into Repurposed Glands (Realingment).
Lose the use of your arms, but you can escape any situation!
/🆑
Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
* [no GBP] Corrupt organs check patient for Holy Water, not surgeon (#83500)
## About The Pull Request
Was looking into #83493 and I have no idea how that happens but I _did_
notice this unrelated runtime and logic error.
Due to the args being incorrect, we were checking the status of the
surgeon performing the operation rather than the person the organ was
being removed from.
## Changelog
🆑
fix: When removing a corrupted organ from a patient, the patient will
now be checked for Holy Water or magic resistance, rather than the
person performing the surgery.
/🆑
* [no GBP] Corrupt organs check patient for Holy Water, not surgeon
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Gives the Lawyer a pet goldfish (#83461)
## About The Pull Request
The law office now has a pet, a goldfish named McGill.
## Why It's Good For The Game
I've wanted to integrate aquariums and fishes in general into more
roundstart, since it currently either requires being built and/or
ordered, and thought giving it as a pet to the Law Office would be
pretty cool since the law office doesn't have one and deserves one, and
also just a silly reference.
## Changelog
🆑
add: The Law office now has a pet goldfish.
/🆑
* Modular maps
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
## About The Pull Request
So, with the somewhat-recent power changes, cells now have a shitton of
charge compared to the old one.
Now, recently, the `model.respawn_consumable` call in
`/mob/living/silicon/robot/proc/charge` was changed to use this
variable, so every time you had a borg inside a charger, it would
constantly drain 0.5% of its cell charge, and use it for the light
replacer charge calculation.
### The light replacer
So, we now have about 200000 as the charge coefficient on bluespace
cells. On code that was made back for 1000 charge in like 2012 according
to the gitblame. Slight issue: **There's a fucking for loop looping
200000 times every time we charge**, calling
`/obj/item/lightreplacer/proc/Charge` every time it loops. It has no
break condition, so it does this every machinery tick. This, with a
single janiborg with a blue cell kills the machinery subsystem and
causes a hell of a lot of overtime, and a hilarious profiler log:

### The fix
Simply not make the light replacer calculation loop like this and just
use division and a modulo, like a normal sensible coder, plus adjust it
to the new cell values.
See the profiler log now:

## Why It's Good For The Game
It fixes a potentially game killing bug. A FUCK moment to be sure
## Warning for upstreams
_Looks at Nova and Skyrat_ check your Charge() proc usages, I know you
have at least one extra hit for it.
## Changelog
🆑
fix: Fixes janitor borgs killing the machinery subsystem by charging
light replacers 200k times a tick.
/🆑