## About The Pull Request
- Fixes#79931
The way crafting menu handles reagents is an abomination. It manually
updates its volume, rather than calling the correct procs for it and
also "clones" reagents like... it does some weird stuff that can leave
the beaker in an inconsistent state let's just leave it at that.
Now we properly consume the reagent via `remove_reagent()` proc and
don't do stuff manually so it works now. Also added some sanity checks
such as `>=` and not simply `>` when checking for reagent volumes and
also checks if we actually found a container in our surroundings which
could runtime if none was available
Also for my sanity please don't tell me to change any single letter var
names here. This whole file is crawling with them so let someone else
get their GBP from that
## Changelog
🆑
fix: crafting food or any other items that require reagents will not
leave behind blank reagents. That and properly updates the holder those
reagents are stored in
/🆑
## About The Pull Request
Code to handle this flag only ever existed on the `/obj` sublevel, so
there's no need for it to be on the `/atom` level `flags_1`. There was
probably a point in time in which mobs or turfs conducted electricity
but there's zero code for it anymore so we truly just live in a society
now.
## Why It's Good For The Game
Frees up a slot on `flags_1` (which is really nice actually), proper
scoping of certain bitflag stuff, etc.
## Changelog
Not relevant to players.
I may have screwed something up, will be doing a few passes on this
myself to ensure all the search and replaces went alright but we should
be good™️
## About The Pull Request
psyker echolocation cooldown time has been reduced from 2 to 1.8 seconds
psyker heads no longer render an overlay of not having eyes
psyker echolocation rendering has been reworked to hopefully not crash
the game anymore when theres many psykers
## Why It's Good For The Game
these changes make psyker better
## Changelog
🆑
qol: psyker echolocation cooldown time has been reduced from 2 to 1.8
seconds
fix: psyker heads no longer render an overlay of not having eyes
/🆑
## About The Pull Request
Changes two lines in `sign_language.dm` such that it actually updates
its background when toggled, rather than only when forced to update by
some other signal.
## Why It's Good For The Game
The Sign Language action has a visual distinction for whether it's
active or not, but it did not update this properly when toggled. This
fixes that problem.
## Changelog
🆑
fix: Sign Language action properly toggles between an active/inactive
background again.
/🆑
## About The Pull Request
Fixes#80027. My bad.
EDIT: Also fixes#80050.
## Why It's Good For The Game
See the issues above.
## Changelog
🆑
fix: Fixed an issue with the offsets of ridden vehicles on tables, and
another when buckled to a bed.
/🆑
## About The Pull Request
A prior refactor of how ID cards worked removed (without commentary?)
the long-previously-existing behaviour that Agent IDs cause a
subtraction from the level of suspicion that security bots see from you.
I have not only restored this behaviour, but applied it to a handful of
other ID cards (based on trim).
When Beepsky looks at you he will make an assessment based on various
factors controlled by his bot settings:
- If Beepsky is set to check ID and your identity is concealed (you
appear as "Unknown") add 4 points.
- If Beepsky is set to check Weapons and you are holding a restricted
weapon without a permit, add 4 points.
- If Beepsky is set to check Weapons and you are wearing a restricted
weapon on your belt or back without a permit, add 2 points.
- If Beepsky is set to check records and you are set to Arrest, add 5
points.
- If Beepsky is set to check records and you have some other
non-innocent status, add 2 points.
- If you are wearing a wizard's hat, add 2 points.
- If you are not human, add 1 point (police are racist).
- If you are loyalty implanted, subtract 1 point.
Factors added or restored in this PR based on your ID now are:
- If you are wearing an Agent ID, subtract 5 points.
- If you are wearing a Cybercop ID, subtract 1 point.
- If you are wearing a Centcomm ID, subtract 10 points.
- If you are wearing an Admin ID, subtract infinite points.
- If you are wearing a prisoner ID, add 1 point.
- If you are wearing a Syndicate or Battlecruiser ID, add 5 or 10
points.
If Beepsky is _emagged_ then he will view all targets as having 10
threat, regardless of their ID card.
If you complete this process with >4 points he will attempt to arrest
you.
The upshot of my changes are:
Wearing an Agent ID card will cause Beepsky to overlook the fact that
you are carrying a gun in your hands without a permit, unless you are
also set to arrest.
Wearing an Agent ID card will cause Beepsky to overlook the fact that
you are set to arrest, unless you are carrying a gun in your hands.
Wearing a prisoner ID while not human will cause Beepsky to try and
arrest you if you have a weapon on your belt or back (if he is set to
care about weapons permits or unless you have one).
Wearing a centcomm ID card will cause Beepsky to treat you as above the
law in basically all circumstances, up to and including when you try and
beat him to death. He will simply sit there and take it.
In addition to this, this information forwarded to AI is now also
available to player secbots upon examine.
Players can't become secbots very easily because you can't upload PAIs
into them or enable their sentience in the panel, but it sometimes
happens via random event or admin intervention.
## Why It's Good For The Game
I think this was removed by mistake? It wasn't included in the changelog
and everyone I talked to thought it was still true.
It's a fun feature which makes agent IDs marginally more useful.
I think Beepsky and pals judging you based on your job makes sense, even
if it is mostly applied to fluff roles.
## Changelog
🆑
add: Agent IDs once more trick Beepsky into treating you more leniently.
add: Prisoner IDs make Beepsky treat you somewhat more suspiciously, as
do Syndicate IDs. Wearing a Centcomm ID means that Beepsky is aware that
you are above the law.
add: Player-controlled security bots can view someone's assessed threat
level by examining them.
/🆑
## About The Pull Request
Fixes a typo in one of the spacer quirk's negative moodlets.
## Why It's Good For The Game
Typos aren't good.
## Changelog
🆑
spellcheck: fixed typo in one of spacer's moodlets
/🆑
## About The Pull Request
Adds slime wings. The slime wings look similar to dragon wings, but are
a bit more transparent throughout, especially in the middle part of the
wing membranes, and have some drippiness to the bottom (though thats
harder to see on darker slimes)


## Why It's Good For The Game
If even flies and skeletons can get wings - why not slimes? Especially
since xenobiologists which often end up as slimepeople can make the
flight potion via xenobiology.
## Changelog
🆑
add: Slimepeople can now get wings from flight potions.
/🆑
## About The Pull Request
On the tin, this lived on the `/obj` level and polluted a lot of stuff
even though only a very small fraction of stuff actually leveraged it.
Let's make it a trait for that boolean-like behavior so I can be happier
scrolling through view-variables with less non-necessary things.
I wish we could tie it to unique sources but that whole drinking glass
thing makes me suspicious of weirder things so I think the way we do it
(source being a `REF()` to the thing itself) is probably fine enough for
the time being.
## Why It's Good For The Game
Same behavior one can expect but just a bit cleaner on the backend.
## Changelog
Nothing that particularly concerns players.
## About The Pull Request
shield gens now have a board, cant be printed

you may now screw open an unlocked shield generator to access its sole
wire, the wire that toggles it on and off
you may also after that crowbar it if it isnt active to deconstruct
converted things to balloon alerts and some cleaning
## Why It's Good For The Game
these things just vanishing if destroyed is dumb and wiring allows for
shenanigans
## Changelog
🆑
fix: shield wall gens actually use power now
qol: shield wall gens may now be rebuilt and use some balloon alerts,
and have wiring
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
Adds medical record descriptions to the heterochromatic, signer, spacer,
and voracious quirks.
## Why It's Good For The Game
More flavor text! And also means they show up on medical records or when
using medical HUDs to view quirks.
Right now if you view someone with these quirks the line will be blank
in the medical records, so it makes that less confusing.
## Changelog
🆑
add: Heterochromatic, Signer, Spacer, and Voracious quirks are now
properly accounted for in medical records.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
removes the triple ai mode secret and makes it into a station trait
## Why It's Good For The Game
it seems to be an interesting way to spice up the gameplay of a given
round
## Changelog
🆑
add: turns triple ai mode into a station trait
/🆑
## About The Pull Request
Or, how I tried to kill `/datum/forced_movement` but got absolutely
clonged.
Actually, I did kill `/datum/forced_movement`. It was only used in one
spot so I just went ahead and cooked it into a special utility datum
that should only be used in one spot. We can optimize the code later or
something, but I like the way it is right now (pretty much status quo
without the potential of someone using a depreciated framework).
Alright, there were also like 3 `TODO`s (4 if you count the move loop
comment (which is ehhhh)). I naively tried to tackle them a very hard
way, but then I just realized I could use the fancy new datum I cooked
up and wow they're all solved now. The hook looks so fucking good now.
* The code is overall more streamlined, with all of the post-projectile
work being handled by a special datum (I wanted it to be handled by the
hook but the timings were all based on SSFastprocess so datum it is).
Forced movement is killed but we just salvaged whatever we needed from
it.
* More traits to ensure we don't cheese in a way we're not supposed to
* A very sexy chain will spawn when you drag your kill in (this wasn't
there before but I fixeded it :3)
* The firer will actually get grounded when they try and shoot the chain
out. They get grounded for 0.25 seconds unless they hit something. I
don't know how the timing is but I think it's fair.
* We also add a unique suicide act, because I noticed we did the
"magical" one previously, which big-league sucked.
* More traits to ensure less cheese! I like how nice it is now.
## Why It's Good For The Game
The meat hook really makes you _feel_ like Roadhog from Overwatch.
Resolves a bunch of old TODOs while getting rid of a completely obsolete
framework in a really neat way. I don't typically like mixing balances
and refactors but these TODOs were getting crusty man i just wanted to
get them out of the way
## Changelog
🆑
balance: The Meat Hook will now "ground" you whenever you fire it out at
someone. You get a very small immobilization every time you fire, which
"upgrades" to a full immobilization whenever you actually hit an atom
and start to drag it in.
fix: A chain should now show up as you drag in something with the meat
hooks.
fix: Meat hooks should no longer play the "magical gun" suicide if you
were to use it, but instead do their own unique thing.
/🆑
## About The Pull Request
Instead of choosing 2-3 brothers, *one* person will be selected and
given a flash which can convert one other person over. In accordance to
the existing 10% chance for 3 members, there is a 10% chance that the
first person converted will receive a flash of their own.
Expectation is people will flash a friend or a robust guy or whatever.
My intent is primarily to see if this kind of blood brothers is more
enjoyable to play with/against, and if their inclusion in a round
increases the general chaos of it. My theory is that since most likely
blood brothers will be people who know each other, that it can become
more consistently interesting to the rest of the crew. That or they just
murderbone together idk
Fikou and head admins said they wanted this to replace rather than add
which I agree with.
## Why It's Good For The Game
Keeps the sandboxy aspect of blood brothers (no uplink) while likely
making it more enjoyable to play. Conversion is equally as simple as
revs for the user, and is just as intuitive to the one being converted
since there are no new mechanics thrown in your face.
Blood brothers is currently disabled everywhere on the main servers
except for MRP. I think this form will be more appealing to all
rulesets. If left enabled, Dynamic now has more antagonists to make
rounds diverse with and I want that
## Changelog
🆑
add: Instead of teaming up random people together, blood brothers will
now start out with one player and let them convert a single other person
over to blood brother using a flash.
/🆑
## About The Pull Request
The maximum value wasn't properly taking into account the intensity
steps, meaning that it would simply keep on scaling past the expected
maximum of one hour and forty minutes that was set in the original PR.
Not really noticeable when your round doesn't really scale past the two
hours mark, but if it ends up going past that, it ends up being very
noticeable.
`maximum_nebula_intensity` is actually not intensity, but rather the
time at which the maximum intensity will have been reached, hence why
this fix had to be done in order for it to work.
I could alternatively make it so the intensity is properly
representative of the maximum intensity the nebula can reach, if that's
what we want, it would technically make the math a bit simpler to
calculate the amount of shielding will be needed to protect the station
entirely, but I opted not to just to reduce the amount of changes I
would have to do, and because it gives a better idea of how long the
scaling takes. I don't mind doing it that way if asked to, however.
## Why It's Good For The Game
Makes a maximum properly work like a maximum, so that caps can be
properly respected.
## Changelog
🆑 GoldenAlpharex
fix: The Radioactive Nebula station trait will now respect its upper
intensity cap set at one hour and forty minutes, no longer scaling past
that, as was initially intended.
/🆑
## About The Pull Request
this pr transforms cats into basic pets! cats now have some new
behavior. they can carry fish and hunted mice in their mouths to deliver
it to kittens, and kittens will eat them.


if a kitten sees you holding food, it will point at you and meow loudly
until u give it the food.
becareful when putting male cats near each other, there is a small
chance they get into a heated argument and meow loudly at each other
until one of them flees.
also added a new small cat house for cats. cats will use these homes if
u build one near them (using 5 wood planks)

Chefs can craft the cake cat and breadcat. these are useful cats because
they can help the chef around in the kitchen. they will turn stoves and
grills off when food is ready, so they dont burn. and the cake cat will
help the chef decorate his donuts
## Why It's Good For The Game
refactors cats into basic mobs and gives them a deeper ai
## Changelog
🆑
refactor: cats are now basic pets. please report any bugs.
add: the cake cat and bread cat can now help the chef around in the
kitchen
/🆑
## About The Pull Request
Fixes#79226
Bitrunning while having claustrophobia would kill you after you left the
VR pod. This is no longer the case since your mind is functionally
outside of your body, which is similar to the other checks performed to
see if you are unconscious.
## Why It's Good For The Game
Consistency.
## Changelog
🆑
fix: Fix bitrunning triggering claustrophobia
/🆑
## About The Pull Request
From the creator of 'cosmetic' elements such as footstep_override and
immerse...
I've made an element called elevation that nudges mobs a few pixels up
while standing on things like tables, crates and beds.
Screenshots of many clones of the same character standing on different
objects:

## Why It's Good For The Game
It makes it look like the mob is actually standing on an elevated
surface.
## Changelog
🆑
add: Standing on structures such as crates, tables and bed will now look
like it.
/🆑
## About The Pull Request
https://github.com/tgstation/tgstation/pull/79903 Fixed the most common
one, but there are still more of these runtimes it seems.

This should take care of all the rest. It turns out that any one of the
step types keys in the list returned by `prepare_step()` can have `null`
values—not just the barefoot one—so we have to check for that in every
instance where we read from it.
(Shown here: the list that gets returned. Note that any one of these
turf vars can be `null`, aka these are the values that we need to
nullcheck for)
4a6d2b9297/code/datums/elements/footstep.dm (L96)
## Why It's Good For The Game
Bugfix
## Changelog
🆑
fix: fixed remaining footstep runtimes
/🆑
## About The Pull Request
Standardizes vv_do_topic() procs on subtypes
Mostly formatting changes
- Add a !. check for every subtype
- Add a space in between each href_list
- Standardize !check_rights(), default is !check_rights(NONE) in the
event that something isnt specified
Introducing new inverse reagents for existing superior healing
medications! This push includes...
**Benzoic Acid** : Inverse of Salicylic Acid. Robust fertilizer that
provides a decent range of benefits for plant life.
**Oxymetholone** : Inverse of Oxandrolone. Anabolic steroid that
promotes the growth of muscle during and after exercise.
**Bamethan** : Inverse of Salbutamol. Blood thinner that drastically
increases the chance of receiving bleeding wounds.
**Pendetide** : Inverse of Pentetic Acid. An unusual bioradioactive drug
that purges basic radiation healing chems. Also increases the severity
of radiation poisoning.
**Hyoscyamine** : Inverse of Atropine. Heals heart and stomach damage,
and slowly removes minor toxin damage.
**Ammoniated Sludge** : Inverse of Ammoniated Mercury. A ghastly looking
mess of mercury by-product which causes bursts of manic hysteria.
**Inreziniver** : Inverse of Rezadone. Makes the user horribly afraid of
all things related to carps.
This is an effort to add more variety to the existing inverse reagent
system within chemistry. Not only should this variety serve to provide
additional options for a Chemist to experiment with, they should also
broaden the possibilities for already existing strategies.
## About The Pull Request
Just cleans up some unused code in the necrosis symptom (it was supposed
to give romerol at some point? what?) and makes it so the threshold for
instant killdeath oxyloss on ARDS is a proportion of mob.maxHealth as
opposed to a static number.
## Why It's Good For The Game
Gets rid of unused code and makes it so we can adjust maxHealth without
unexpected consequences. Should probably do this in other areas like
check_passout too.
## Changelog
🆑
code: Made ARDS death check respect maxHealth.
/🆑
## About The Pull Request
Removes the Heavy Sleeper quirk and rolls its effects into the brand new
All Nighter! On top of the effects of sleeping longer, All Nighter gives
you permanent bags under your eyes as well as a permanent -3 moodlet.
## Why It's Good For The Game
I've been wanting for a way to get bags under your eyes for a while, I
think it'd be a fun visual aspect that can aid with RP and whatnot. I
rolled heavy sleeper into all nighter because the two are both quite
similar, and I didn't feel heavy sleeper quite justified itself on it's
own.
Here's what the bags look like currently on a variety of skin tones and
species:

## Room for Improvement
Currently drafting for a few reasons. looking for input on all this
stuff
- [x] bag sprites could be improved
- [x] bags don't work well on moths/grayer skin tones. cest la vie?
- [x] should heavy sleeper stay? ultimately all I want is bags here, is
there a better way of doing this?
- [x] all quirk elements are not properly applied and removed via VV (no
need for input, i can figure this out myself)
## Changelog
🆑
add: the All Nighter quirk!
remove: Heavy Sleeper (functionality has been rolled into All Nighter)
/🆑
## About The Pull Request
currently verb callbacks still execute if the usr at the time of their
creation got deleted or had their client disconnected before they got
invoked. this can cause issues if the verb being deferred assumes usr
exists, now the callback will return instead of calling its proc if its
invoked after usr is deleted or disconnected.
## Why It's Good For The Game
less runtimes
## Changelog
🆑
code: verb callbacks will no longer execute if the original client
disconnected
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Fixes#79921
Otherwise, on the tin. Attack mode is for attacking, scouting mode is
for scouting. We were listening for clicking and stuff like that but it
was still failing somehow so this is le fix
## Why It's Good For The Game
You aren't supposed to shoot in this mode, only scout.
## Changelog
🆑
fix: Ranged Guardians (Holoparasites/Power Miners/etc.) can no longer
use ranged attacks in scouting (incorporeal) mode.
/🆑
## About The Pull Request
Screwup in #79762 (b251b9dbb0)
This definitely worked two months ago I have no clue when this check got
swapped around.
## Changelog
🆑
fix: Poly should now remember phrases between shifts.
/🆑
## About The Pull Request
LSP supports it, let's GOOOOOO
I've removed the 515 tests since they're stable, alongside the libcall
wrapper. left the rustgcall wrapper cause yaknow memes
Just removed all the 515 and 514 particular define wrappers. gaming
## Changelog
🆑
server: Minimum compile version has been bumped to 515. clients still
support 514 but we're gonna start using 515 restricted features for
serverside now.
/🆑
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Fixes#79845
Honestly this whole thing is awkward. I really don't want to block being
able to force traits under any conditions, but admins keep forcing it on
icebox which just kills everyone. This blocks nebula's storm specificaly
from running on planetary maps
🆑
fix: Fixes nebula killing everyone when forced by an admin on icebox
/🆑
## About The Pull Request
They simply weren't being removed from the influence list
Fixes https://github.com/tgstation/tgstation/issues/79510
## Why It's Good For The Game
cyborgs aren't supposed to see these things
## Changelog
🆑
fix: Fixes cyborged heretics seeing influences.
/🆑
## About The Pull Request
Gives Cargo its own area wires, instead of having them use the same wire
layouts as the Service areas.
## Why It's Good For The Game
Back when the original PR (#52563) was made, cargo was a weird subset of
"quartermaster" areas that must have just been swept into service. I
looked into it and to my surprise cargo just wasn't ever mentioned in
it. When the QM areas were converted to cargo areas, there weren't any
cargo wires so they probably just inherited the service wires and were
forgotten about?
Now, with the QM being a head and cargo being a more defined department
than ever, it shall receive the distinction of being called "its own
department" in the worst way possible -- by giving it its own wires.
## Changelog
🆑 Rhials
qol: Gives Cargo areas its own wire layout, instead of having it use the
same wires as Service areas.
/🆑
## About The Pull Request
Adds a new skillchip, it lets you taste food by examining it.

This has all of the effects of tasting food (various moodlets based on
quality and food type) and can also trigger food allergies if you have
them, however it does not consume the food nor give you any nutritional
benefit.
You can buy it from a vendor or sometimes it spawns in maintenance.
## Why It's Good For The Game
The players are constantly clamouring for more additions to our most
loved and useful feature, skill chips.
<details>

</details>
## Changelog
🆑
add: A new skill chip can be found in maintenance or purchased from the
vendor, allowing you to experience food in new and exciting ways.
add: Abductors also have access to this incredible power, simply using
their genius level brains.
/🆑
## About The Pull Request
Yup this is the last time I'll lay hands on `holder.dm` after 2 rounds
of code compression the file was still over 2000 lines long so now the
next best thing to reduce it is organizing procs into logical files,
that and even more proc removals. As you can see we are still able to
reduce code size even further
**1. Removes & merges `expose_multiple()` proc into `expose()`**
Th only difference between these 2 procs is that `expose()` uses all
reagents inside the holder whereas `expose_multiple()` uses a select few
reagents. We can just add a 4th parameter to `expose()` that will accept
a list of reagents thus achieving the same results and that was done
reducing overall code
**2. Removes `conditonal_update()` proc & `on_update()` proc**
The proc `on_update()` definition is empty and no reagent was overriding
it and as a result `conditonal_update()` that calls this proc is also
functionally useless therefore both of these procs were removed reducing
overall code
**3. Finally splits `holder.dm` into logical files under the folder
`code/modules/reagents/holder`**
- `holder.dm`: this is the still the file for core functionality it's
just now moved into this new folder. Added comments to group procs under
separate categories for easy readability.
- `mob_life.dm`: contains reagent code for metabolizing reagents and for
handling stasis
- `reactions.dm`: all code for reagents reacting inside the holder
- `properties.dm`: procs for editing/reading the volume, temperature,
ph, purity properties of reagents inside the holder, also for reading
its taste description
- `ui_data.dm`: all code for displaying & interacting with reagent data
via UI
## Changelog
🆑
code: removes & merges `expose_multiple()` proc into `expose()` proc
inside reagent holder
code: removes `conditonal_update()` proc & `on_update()` proc inside
reagent holder and reagent
refactor: Reagent code has been trimmed and split into multiple files.
report bugs on github
/🆑
## About The Pull Request
Ninja told me that I shouldn't use a signal to get the variable
modifiers that a dart insert applies to its projectile. When I asked if
using a callback passed as an initialization param was okay, Potato told
me it was better.
## Why It's Good For The Game
Less code smells.
## Changelog
No player-facing changes.
## About The Pull Request
When the ranching PR came out (we love it downstream), there seemed to
be an issue-- the gutlunches would produce milk instead of the miner's
salve that the code said it would. I looked into it and realized that
some of the code would not take into consideration if the udder already
had a preset reagent to create.
I've changed some of the arguments for the procs to be called override
instead, which will be empty. If you want something that functions
similarly to the udder but want it to produce something else and not
care about creating a new udder, you can just use the override when
attaching the component; otherwise, leave it blank for milk (or whatever
kind of reagent the udder you want will produce).
Additionally, gutlunches not only did not produce miner's salve, but
with the special ores, it did not produce any of the additional
reagents. This was fixed by just adding a return TRUE at the end of the
normal udder.


Perhaps it is out of scope (if it is too extreme, please let me know),
but I have changed the probability 95 to not produce milk to a var
instead, which means you can have udders that are more prone to
producing their milk reagent. 95 is still technically the default, but I
have made it 5 in a more readable manner (as in you have a 5 percent
chance to get milk every 2 seconds if the udder has it's required food
type, if any).
## Why It's Good For The Game
Some of this PR is fixes-- we wanted certain behaviors that were not
happening and so I fixed that. Other parts of the PR are for, in the
future, if we want udders that have higher/lower chances to produce its
milk reagent.
## Changelog
🆑
fix: gutlunches now produce miner salve instead of milk, as well as the
other reagents if fed the correct ore
/🆑
## About The Pull Request
Says it on the tin, roundstart permabrig prisoners a key memory so they
can remember what crime they committed.

## Why It's Good For The Game
Prisoners typically remember why they are locked in a jail forever.
Also, if you have the "random" crime selected in your preferences,
sometimes you can forget what crime you committed if you missed it at
the start of the round.
## Changelog
🆑
qol: gives roundstart prisoners a key memory of what their crime is
/🆑
## About The Pull Request
### Tackling Outcomes
Tackling now determines success based on outcome categories. These are
derived from the typical attacker/defender roll that would have
previously determined the outcome on its own. A negative roll results in
a negative outcome, a positive roll a positive outcome, and a result of
exactly 0 resulting in a neutral outcome.
The result of your roll are then passed along to the relevant proc to
determine severity. The derived roll is multiplied by 10 (or -10 for the
negative roll to get a positive value to roll with). Then we see if our
final roll fits a severity bracket. Negative outcomes will roll to
determine their outcome, and potentially could roll a less severe
outcome than what our first roll would suggest.
For positive outcomes, the defender's melee armor reduces the severity
of the outcome.
For negative outcomes, the attacker's melee armor improves the potential
outcome and at least prevents more severe backlash. It'll still be
negative, you can't move from a negative outcome to a positive outcome
just from good armor.
Most of the outcomes are fairly similar to the current outcomes, but
with the inclusion of staggering one or both parties to make the
subsequent potential grabs _stickier_, if that makes sense.
Neutral is now a mutual stagger, but also the tackler being left
upright. It's effectively net zero.
### Blocking
Blocking is checked on impact, and results in a neutral outcome if the
defender successfully blocks. This means our tackler isn't too severely
impacted from an unsuccessful tackle
### Additional Changes
Your arms ``unarmed_effectiveness`` now contributes to the attack mod
and defense mod of tackles. For humans tackling humans, this often
results in a net neutral result. But if you have a better arm, or the
tackle target has worse arms, this can alter the outcome significantly.
Any tackler with the trait TRAIT_NOGUNS (like bezerkers, Sleeping Carp
users or the very unlikely chance ninjas are tackling while wearing
their armor) gains a bonus to their tackles.
Any suit that prevents shove knockdowns grants an attack bonus, and not
just riot armor. This now includes Mk.1 Swat suits, the ones from the
SWAT crate in cargo.
Settlers are vulnerable to tackles, much like their dwarf cousins.
They're also just as bad at tackles.
Security lockers come with gripper gloves, and the sec vendor has 5 sets
of gripper gloves as standard items. They also have a +1 skill bonus.
This should encourage people to use tackling a bit more without having
to always seek out the best gear to accomplish the task. (particularly
since security is inherently pretty good at tackling with the outcome
changes).
The HoS gets a pair of gorilla gloves in his garment bag. If he wants
them.
The shove slowdown is now a new status effect, Staggered. This is just
better functionality overall. Any instance of adding the shove slowdown
now makes our target staggered.
## Why It's Good For The Game
Tackling is a bit outdated, to say the least. Not much content has been
added for a while that isn't strictly meme content. With these changes,
tackling should be slightly more nuanced, considering elements such as
unarmed effectiveness, the presence of martial arts, and actually
properly checking block rather than notionally checking block. There is
also more opportunity to protect yourself from tackle outcomes, both
positive and negative.
It also should be a little fairer to be on the receiving end of tackles
if you have taken the time to layer up defenses against it. Attackers
often overwhelmed defenders due to numbers favoring attackers more than
defenders.
Closes some really outdated design that was resulting in some really
bizarre behaviour with regards to layered defenses against attack not
having the same meaning against tackles, if only because it was looking
for the wrong things and not even the correct parts of what it was
looking for. Namely, blocking and shielding.
The inclusion of more gripper gloves and a good outcome from using them
will hopefully incentivize people to consider tacking as a useful tool,
if a bit risky still due to the splat mechanics.
## Changelog
🆑
balance: Judo Joe, archnemesis of Maint Khan, has begun re-airing his
midnight infomercials shilling his extremely expensive Tackle Supreme
Judo Karate Training video tapes. Unable to pass up a 'bargain',
Nanotrasen has purchased these tapes en masse. Tackling techniques have
started to improve, as well as Nanotrasen's tackling instructional
algorithms within tackle gloves.
balance: The outcomes for tackling are more equalized. It isn't as feast
or famine, and should be somewhat more controllable without becoming too
severe.
add: Blocking successfully against a tackle will force the tackle to be
a neutral outcome.
add: Unarmed effectiveness from arms now contributes to attacking with
and defending from tackles.
add: Those who refuse to use firearms (like Sleeping Carp users and
insane unholy berzerkers) are better at tackling others.
add: Riot specialized armor, and not just riot armor, now contributes
meaningfully to tackling effectiveness.
balance: MK.1 Swat Suits, the ones that come in SWAT crates, now
functions similarly to riot armor.
add: Settlers from the outer rims have noticed they aren't very good at
protecting themselves against Judo Joe's clearly discriminatory tackling
techniques.
add: Security lockers come with gripper gloves, security vendors now
sell them as standard items, and the HoS' garment bag now has a pair of
gorilla gloves. Gripper gloves have a positive skill bonus to tackling.
add: Being insane also makes you INSANELY good at tackling but also
INSANELY likely to eat shit on a whiff. DO OR DIE, BITCH.
refactor: Shoving slowdown and all its implementations now use a status
effect, Staggered.
/🆑
## About The Pull Request
This PR makes the following changes:
- Refactors inserting items into foam darts into a component on items
that can be inserted into darts
- Adds the aforementioned component to pens
- Provides an inspection tip for how to modify a foam dart
- Gives different pen types specific behavior when used in a foam dart
Pens typically give a foam dart 5 brute and 50% embed chance (affected
by falloff). The following types of pens give the specified properties
(usually directly derived from the pen's stats and additional
functions):
- Red pen (and four-color pen set to red): Slightly faster dart
- Captain's fountain pen: Slightly faster dart, and 75% base embed
chance
- Sleepypen: Tries to inject its reagents into the hit mob, but doesn't
penetrate thick clothing like syringe guns do
- Energy Dagger: 35 brute, 100% base embed chance, and slightly faster
dart
- Survival Pen: Mines rocks on impact
- Fine Tip Pen (if someone somehow manages to get one): 100 bare wound
bonus and 9000 demolition modifier
## Why It's Good For The Game
Expands the emergent gameplay possibilities of using pens in foam darts.
While there are balance risks involved with traitors being able to buy
the equivalent of reusable 45u syringe shots and 35 brute bullets, you
are not likely to get your pen back once it hits its target, unless you
somehow have the recall spell and have bound the pen to it. There are
probably more TC-efficient ways to achieve comparable projectile
weaponry, but foam dart guns have an air of subtlety to them... at least
until your skin is pierced by a pointy writing implement that may also
be something more deadly. If maintainers still have balance concerns,
please let me know.
## Changelog
🆑
add: Certain types of pens now function like you expect they would when
inserted into a foam dart
qol: Examining a foam dart closely will show you how to modify it, or
what it is modified with
/🆑
## About The Pull Request
Fixes cursed/bad luck always spawning with only 1 incident.
incidents_left should not have a default value for the arg, as if it's
called with null it will use the incidents_left var.
Fixes https://github.com/tgstation/tgstation/issues/79790
## Changelog
🆑 LT3
fix: Cursed/bad luck omen will now stick with the player for more than 1
incident
/🆑
## About The Pull Request
Fixes#79764
I was going to tackle this issue by slamming `TRAIT_NO_SLIP_ALL` on
Atrocinator users and calling it a day, but like, that didn't feel
proper.
So I thought hey, we could just give them the flying movetype, even
though they technically aren't flying it means they're unaffected by
things that flying would make you unaffected by.
Nope, this means the mob technically "negates gravity", so no falling
and no feetsteps.
Let's try floating - this give us feetsteps but no falling upwards.
So instead of going back to square one, with `TRAIT_NO_SLIP_ALL`, I
decided to go for the more complex route of just adding a movetype.
Hence, move type `UPSIDE_DOWN`. This covers situations where a mob would
be "floating" above the ground, but still walking. ...Negative gravity.
This means overall the Atrociator acts more as you'd expect - you don't
slip on ice, you don't trigger bear traps or mouse traps, you can walk
over railings, unaffected by conveyor belts, etc.
## Why It's Good For The Game
Makes the Atrocinator a lot more consistent with how you'd expect for it
to work.
Admittedly it is a bit niche use of movetypes, but it can possibly be
expanded to more things in the future, who knows? I applied it to mobs
on meat spikes (even though they don't move), just for proof of concept.
## Changelog
🆑 Melbert
fix: Atrocinating mobs will now behave more as you'd expect. Meaning
they don't slip on wet patches, can't trigger bear traps / landmines /
mouse traps, ignore conveyors, and can walk over tables and railings.
fix: Floating mobs are unaffected by conveyor belts, acid (on the
ground), glass tables
fix: Floating mobs won't squish stuff like roaches anymore
fix: Fixes bear traps triggering on floating / flying mobs
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
Changes the floor disease viruses so that they return unique IDs (their
typepath) instead of numeric IDs generated like normal Advanced viruses
do.
## Why It's Good For The Game
Bug reported downstream:
https://github.com/Skyrat-SS13/Skyrat-tg/issues/24724https://github.com/Skyrat-SS13/Skyrat-tg/issues/24643
When players make a virus with the symptoms of only Fever or Headache in
the pandemic (which are common to buff viruses), those will generate
with the same ID as gastritium or carpellosis, because the floor viruses
generated IDs like they were normal advanced viruses. If the virologist
creates a virus sample from that, it will give it the subtype of the
floor virus, and then if that sample is used to generate a healing virus
the healing virus will get the symptoms and name of the healing virus
but keep the subtype (including cure and other affects, like burping
tritium) of the floor virus.
This change makes it so that the floor viruses cant be modified in the
pandemic (trying to modify it and printing a culture tube will just make
the culture tube of the original floor virus), and so that virology
players can't accidentally create healing virus with those nasty
effects.
The typepath was used as the ID to mimic what it looks like for the
other (non-advanced) unique diseases.
If you can think of a better way to fix this, please let me know, I was
just getting tired of having to put up with burping green gas to have a
standard healing virus if the virologist wasn't aware of this bug.
## Changelog
🆑
fix: healing viruses can no longer have floor virus side effects
/🆑
## About The Pull Request
Third /icon/ cleansing splinter 1. Comments on commits say all it does
pretty much.

## Why It's Good For The Game
Inhand for walkietalkie was requested in the project, gets rid of some
usecases of old 'gangtool', headset splitoff requested by Fazzie.
Inhands reflecting the items they are supposed to represent is nice.
## Changelog
🆑
image: Following now have unique item sprites: syndicate war declaration
radio, curator and chief beacon's, chaplain beacon.
image: Following now have unique inhand sprites: radio, export scanner,
walkie-talkie, syndicate war declaration radio, curator and chief
beacon's, chaplain beacon.
/🆑
## About The Pull Request
Alternative title: "Make going non-verbal make you less anxious."
This is a two line change to `social_anxiety.dm` to quit out its
`handle_speech` method when user has the `TRAIT_SIGN_LANG` trait.
This stops the Social Anxiety quirk from applying its
stutters/fillers/blockers for as long as the speaker is using sign
language.
This does nothing to any of social anxiety's non-verbal effects, those
are still active regardless and entirely unaffected.
## Why It's Good For The Game
Primarily: I think giving people the choice between using anxious talk
or sign language, and thus the different hurdles inherent to both, makes
for a more interesting gameplay interaction than simply blanket-applying
the quirk's speech effects to both.
Secondarily: Social Anxiety's non-verbal penalties are entirely
unaffected. One will still get the penalties from making eye contact and
occasionally make eye contact with objects. Notably this includes the
stuttering making eye contact could get you, which still makes your
signing shaky. You're still anxious, after all.
On top of this, it still costs more to pick up Signer than Social
Anxiety allows for, and thus the change doesn't simply make the
combination free points.
Tertiarily: when one has trouble speaking verbally, non-verbal
communication can be helpful in overcoming that hurdle. This is
especially so when the trigger for said anxiety is speaking verbally in
the first place. This is part of why I was so enamoured by the
combination before a broader and, mind you, fairly needed fix to sign
language made these interact differently.
## Changelog
🆑
balance: signers no longer suffer from social anxiety's speech changes
when they go non-verbal. Other effects are maintained.
/🆑
## About The Pull Request
Robotics can print Advanced cybernetic arms and legs. These limbs have a
higher max health (though contribute the exact same amount to core
health as normal limbs), higher unarmed damage and higher unarmed
effectiveness than organic limbs.
In addition, Strongarm implants now respect the unarmed potential of the
limb it occupies. This means you can potentially get much higher damage
output if your arm would be capable of higher potential damage and armor
penetration. They also do additional stamina damage (1.5x punch damage)
so that you can capitalize better on unarmed combinations.
Surplus Prosthetic limbs now contribute a total of 250% of their carried
damage against overall health. With only 20 max HP, that means at full
damage, the user suffers 50 damage per limb. They also have terrible
unarmed values.
Cleans up exofabricators a touch and creates some defines for limb
values.
New Sprites


## Why It's Good For The Game
I really want to encourage people to get involved in unarmed combat, so
I want to include some potential ways to seek out improving your unarmed
combat ability. One possibility should be robotics!
Currently, Strongarm implants are....possibly worse than unarmed
attacks? To solve that slightly, they now utilize the attacking limb's
unarmed potential as bonuses to the damage dealt as well as penetrative
power. I don't have a perfect solution for this at the moment, but at
least anyone utilizing this implant isn't unintentionally harming their
unarmed combat potency...too much.
Surplus Limbs are, once again, extremely good at taking damage and have
almost no actual negatives at the moment. I tried to resolve this in
https://github.com/tgstation/tgstation/pull/71739, but the code changes
I added have since become obsolete once again, leaving us once again
with surplus limbs acting as a health _boost_ rather than a health
_malus_. This fixes that issue once and for all, and if you have these
limbs, they're going to fucking _suck_.
## Changelog
🆑
add: The battle against Maint Khan's forces rages on in the periphery
stations of the Spinward Sector. And with it, a new breed of unarmed
warrior has emerged; the cybernetic martial artist. Nanotrasen, rather
than quell the minor maintenance civil war brewing in their sector, have
chosen to exploit this conflict to push their weapons and cybernetics
research to new heights!
add: Advanced cybernetic arms can be printed at the Robotics
exofabricator once researched. They are unlocked by researching the
Advanced Robotics Research node.
add: Advanced cybernetic arms are more durable than standard limbs, and
also have higher unarmed potential.
balance: Strongarm implants now utilize the attacking limb's unarmed
potential to determine damage and potential armor penetration. It also
does additional stamina damage (1.5x punch damage)
balance: Surplus prosthetic limbs contribute more of their carried
damage to overall health (AKA they make you actively more vulnerable to
damage), and deal less damage with unarmed attacks. Take Quadruple
Amputee at your own risk.
/🆑
## About The Pull Request
Ports icemoon wolves over to the basic mob framework with a bit of extra
stuff:
- Wolves call for help when attacked within a decently large radius.
Because you know, pack animals.
- Wolves can now be tamed with a slab of meat
- When tamed, wolves can be ridden like goliath mounts. Ride wolf, life
good. Pretend you're playing ARK and start shivering to death in thatch
huts for that High Roleplay experience.
- Tamed wolves have access to a bunch of pet commands (following, point
fetching, point attacking, play dead, etc) and will also defend their
owners vehemently if they're attacked.
You can probably tame multiple if you wanted to.
## Why It's Good For The Game
What part about riding wolves isn't entertaining? I don't really play
/tg/ that much so I can't argue too much about the balance implications
this might pose, but it's undoubtedly a stupid little gimmick and is
likely to be used by bored assistants and miners with too much time on
their hands.
Especially robust individuals will probably find a million things to do
with a basic mob capable of fetching, attacking on command and generally
being able to defend themselves decently well.
## Changelog
🆑 yooriss
refactor: Icemoon wolves now use the basic mob framework and should act
more intelligently, defending their pack.
add: Icemoon wolves can be tamed with slabs of meat and can be ridden as
mounts once friendly. Being rather large dogs, they also have access to
most of the pet commands you'd expect, such as fetching things, and
violently mauling people their owners point at.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Part 2 of #79686 where we trim down the size of `holder.dm` even further
and in the process give some procs more advanced features as they get
merged with their counterparts.
**1. Removes & merges `get_multiple_reagent_amounts()` proc with
`get_reagent_amount()`**
The proc `get_multiple_reagent_amounts()` was only used by bio generator
and 1 other item with its only use being finding the sum of all reagents
present in the list returned by
`typesof(datum/reagent/consumable/nutrient)`. Currently the approach is
very inefficient because.
- `typesof()` is an expensive call which returns a long list of reagents
- `get_multiple_reagent_amounts()` would then use 2 nested for loops.
One to loop over every reagent in this holder & another inner for loop
to loop over every reagent returned by `typesof()` operator so the time
complexity of this proc is overall multiplicative which in lamen terms
means "Bad"
We can replicate the same behaviour of `typesof()` by using the
`type2parent()` proc and 1 more direct type check to get the exact same
behaviour but with much faster results, therefore reducing overall code
**2. Removes & merges `get_reagent()` proc with `has_reagent()`**
The proc `has_reagent()` is way more advanced than `get_reagent()` with
arguments requesting for a specific amount, metabolization and now even
has a new argument i.e. `chemical flag`. `has_reagent()` has always
returned the reagent reference directly and not a simple TRUE/FALSE so
it is a perfect replacement for `get_reagent()`, therefore reducing
overall code
**3. Removes & merges `has_chemical_flag()` proc with `has_reagent()`**
The proc `has_reagent()` can now look for a specific reagent with a
specific chemical flag as well as mentioned above thus it can replace
`has_chemical_flag()` therefore reducing overall code
## Changelog
🆑
code: Removes & merges `get_multiple_reagent_amounts()` proc with
`get_reagent_amount()` inside reagent holder
code: Removes & merges `get_reagent()` proc with `has_reagent()` inside
reagent holder
code: Removes & merges `has_chemical_flag()` proc with `has_reagent()`
inside reagent holder
refactor: Reagent holder code has been further compressed. Report bugs
on github
/🆑
## About The Pull Request
One of the timers has a callback to the `modify()` proc which also
doesn't check whether the mutation owner has been deleted since the
timer began, potentially resulting in a runtime.

## Why It's Good For The Game
Fixes bugs
## Changelog
🆑
fix: fixed a race condition with mutations
/🆑
## About The Pull Request
I'm still not satisfied with how ghost notifications work. This gives
every notification with a source (99% of all notifications, in other
words) a link to jump/orbit. Currently, notifications with "play"
interactions would only get the interact link, so jumping to the source
was pretty annoying.
It removes posting the entire message in the alert tooltip, as some got
pretty lengthy and it didn't seem to fit. To replace this, they will
always use headers
After:



NOTIFY_JUMP and NOTIFY_ORBIT have been merged, since the only difference
seems to be whether it's a turf. The result shaves off some redundant
lines of code, since most-every usage of notify_ghosts uses
NOTIFY_ORBIT.
## Why It's Good For The Game
More standardization for the ghost notification system. Adds a few alert
headers that never had them. All in all, makes it easier for creators to
throw alerts at ghosts
## Changelog
🆑
qol: Nearly every ghost alert should now feature a "VIEW" button, even
those with click interaction.
del: Ghost alerts no longer show the entire message in the tooltip,
instead have been replaced with titles.
/🆑
## About The Pull Request
I find the proc hard to read honestly. There's no reason we can't split
this into two functions - the secondary functionality is used only once,
in reader.dmm.
## Why It's Good For The Game
Code improvement
Glorious snake case
## Changelog
N/A nothing player facing
---------
Co-authored-by: san7890 <34697715+san7890@users.noreply.github.com>