## About The Pull Request
This PR:
- Converts all of the blood types into their own datums, which can be
set up to have their own colors, descriptions, and other fun unique
properties. For example, the clown blood that is constantly randomizing
itself.
- Converts all the blood decals into greyscale, which in turn eliminates
the need for separate xeno sprites. They both use the same ones now.
- Audit of blood splatters/gibs/bodyparts/organs to make sure that they
are getting the correct forensic data applied to them.
- For the admins: Adds a clown blood smite.
My primary goal with was to make the appearance of the new sprites look
almost indistinguishable to the original ones.
I consider this a "first pass", as in there are still some further
refactors I would like to do on the backend side, but am satisfied with
it enough to push it forward as a first step towards a better blood
system! I didn't want to do too much at once because of A) fatigue and
B) easier to test things to make sure I'm not breaking something
important this way.
This has been test-merged on Nova for over a week now and has been going
great, so I finally got around to upstreaming the bones to TG. Although
I did test it a bit you may want to TM it just in case I missed some
things when copying it over.
## About The Pull Request
Fixes#90836Fixes#90841
In a recent merge some checks in `component/two_handed` were changed
from `if(!value)` to `if(isnull(value))`.
This change was in error because these values are never null, they
default to 0.
I have changed them to more sensible and appropriate numerical checks.
## Changelog
🆑
fix: Holding a two-handed weapon in both hands will now once again
appropriately modify its attack power.
/🆑
## About The Pull Request
- Closes#90704
The following changes were implemented for this
- Moved sending signals `COMSIG_MOVABLE_TELEPORTING` &
`COMSIG_ATOM_INTERCEPT_TELEPORTING` from `check_teleport_valid` into
`do_teleport`. These 2 signals were causing all the side effects
- Removed signals `COMSIG_ATOM_INTERCEPT_TELEPORTED` &
`COMSIG_MOVABLE_TELEPORTED` as the above 2 signals can do their jobs &
block the teleport if needed so these signals became obsolete
- Removed define `COMPONENT_BLOCK_TELEPORT` in favour of returning a
positive value if teleport was successfully blocked. Having 2 signals
located in 2 separate files use this same define doesn't look great.
## Changelog
🆑
code: cleans up teleportation code. `check_teleport_valid` is now a pure
function with no side effects
/🆑
## About The Pull Request
Bubblegum trophy has attempted to modify its' *own* dual wielding, so if
you attached and detached it you were able to have a tiny 20 force two
handed weapon. Yeah. This PR implements a way for trophies to
consistently modify their damage, and fixes some oversights (values not
being assigned/updating) in two handed component code.
Closes#90731
## Changelog
🆑
fix: Fixed inconsistent proto-kinetic crusher descriptions
fix: Fixed Bubblegum and Wendigo crusher trophies sometimes not working.
/🆑
## About The Pull Request
Since we now have deep water that makes people drown, it makes sense to
go the extra mile and incorporate the ability for boats to travel over
water. This should allow some cool mapping stuff where you can make
islands that are only reachable by boat.
## Why It's Good For The Game
Mapping benefits.
## Changelog
🆑
add: Allow boats to travel over water
/🆑
## About The Pull Request
People can now pet held mothroaches and pugs if they want to, or use
items on them, hopefully without causing many issues. After all, it only
took about a couple dozen lines of code to make...
...Oh, did the 527 files changed or the 850~ lines added/removed perhaps
catch your eye? Made you wonder if I accidentally pushed the wrong
branch? or skewed something up big time? Well, nuh uh. I just happen to
be fed up with the melee attack chain still using stringized params
instead of an array/list. It was frankly revolting to see how I'd have
had to otherwise call `list2params` for what I'm trying to accomplish
here, and make this PR another tessera to the immense stupidity of our
attack chain procs calling `params2list` over and over and over instead
of just using that one call instance from `ClickOn` as an argument. It's
2025, honey, wake up!
I also tried to replace some of those single letter vars/args but there
are just way too many of them.
## Why It's Good For The Game
Improving old code. And I want to be able to pet mobroaches while
holding them too.
## Changelog
🆑
qol: You can now interact with held mobs in more ways beside wearing
them.
/🆑
## About The Pull Request
adds a single line (`override_allow_spacemove = TRUE`) to the megacarp
movement datum
## Why It's Good For The Game
it's a big ass fucking shark if the small carp can carry me through
space so can the megacarp. if i remember correctly it used to be able to
so why not. i want to ride my cool ass shark through space
## Changelog
🆑 Goat
fix: The megacarp (shark) will now be able to fly through space when
ridden like its smaller carp siblings.
/🆑
## About The Pull Request
adds a new visual effect for holograms ,such as holosigns and several
holoanimals, where they'll glitch out when walked through, attacked, or
when a thrown object passes through them
https://github.com/user-attachments/assets/5c18e48e-6ea5-4e57-a7d4-6a9323e317f5
## Why It's Good For The Game
i think its good for the sake of immersion. also, if pai players feel
like this might get annoying i have no problems excluding them from this
effect.
## Changelog
🆑
add: adds a new glitch-out effect for holograms when they're interacted
with
/🆑
## About The Pull Request
Metalgen imprinting is now logged, foam and smoke have better logging
and so do plasma metalgenned things, metalgen no longer causes a ton of
runtimes on almost everything and foam and smoke no longer affect
abstract objects.
Also ***hopefully*** solves the issue with infinite hotspot loops, but I
don't think anyone knows what exactly occured there.
## Why It's Good For The Game
If servers explode, admins need to know who did it and coders need to
know how they did it.
## Changelog
🆑
fix: Metalgen foam/smoke no longer cause an absurd amount of runtimes
fix: Foam and smoke no longer affect abstract objects like landmarks
admin: Metalgen imprinting is now logged
admin: Improved logging for foam and smoke, and plasma metalgenned
objects
/🆑
## About The Pull Request
Was missing a source arg, thus trying to get mob's bonus_value var and
runtiming.
## Changelog
🆑
fix: Fixed watcher crusher trophies not applying their effects on
basicmobs
/🆑
## About The Pull Request
Orbiting component typechecked a knowingly null parent, which errored
and caused two runtimes for the price of one when you tried to transfer
a mob's mind while it had orbiters.
## Changelog
🆑
fix: Fixed mind transfers not transferring mob's observers to mind's new
mob.
/🆑
## About The Pull Request
Holidays with mail allowed are now able to have a pool of mail goodies
associated with them.
(If anyone has any ideas I missed please do tell me them. Ones I really
wanted to add are things for Ramadan and Hanukkah but I both don't know
enough about them and also don't know any traditional Islamic/Jewish
foods/trinkets we have in our codebase)
## Why It's Good For The Game
Adds more flavor to the game's various holidays.
## Changelog
🆑 Wallem
add: Some holidays have been given their own pool of mail goodies.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
## About The Pull Request
Adds bubblegum wrappers, I was originally gonna make it a trash type for
gum but thought it would hide the feature since there's no indication
that they are in a wrapper (and you'd have to eat the entire gum to get
to it, which I don't think you can even do?), so instead bubblegum boxes
have 4 wrappers which each holds 1 piece of gum.
These wrappers can be grinded down for aluminium, or used in a crafting
recipe with a cell of any kind to make a makeshift match, you can ignite
it by using it in your hand (at the cost of minor burn damage).
Fixes the description for matches having 2 periods in them

Icon for the wrapper is a recolored version of ``janitor.dmi``'s floor
sign, while the match itself is the "crappy" cell with a codersprited
stick of gum coiled around it, with a copy paste of the regular match's
fire for the fire.
## Why It's Good For The Game
For years I've thought of how cool it would be to add makeshift
equipment that prisoners could make, this is a pretty harmless addition;
a source of aluminium and matches. Prisoners currently are incredibly
dependent on prison loot spawn, which kinda sucks, and this is also
reliant on prisoner loots, but at the very least it means getting more
use out of the lesser-useful items.
It would be nice to open up new ways to play Prisoner that don't involve
some form of prison breakout.
## Changelog
🆑
add: Bubblegum now comes in wrappers.
add: You can make a match out of a battery and a gum wrapper.
spellcheck: Matches no longer have 2 periods in the description once
used.
/🆑
## About The Pull Request
##### Disclaimer - Some of the code/icons/sounds were ported from TMGC.
Introducing more weather types! And yes, you can now have rain be
reagent based!
<details>
<summary>Regular Rain</summary>

</details>
<details>
<summary>Blood Rain</summary>

</details>
<details>
<summary>Acid Rain</summary>

</details>
You can even make it rain ants, plasma, or drugs. All of their effects
get applied to turfs, objects, and mobs depending on the weather options
you select.
Did I mention... there is thunder?
<details>
<summary>Thunder Strikes</summary>

</details>
<details>
<summary>Sand Storms</summary>

</details>
Despite all this new stuff, none of it has been directly added to the
game but the code can be used in the future for:
- Wizard event - Similar to lava on floor, but this time make the
reagent random or picked from a list and give wizard immunity
- Chaplain ability - Maybe make this a benefit or ability once enough
favor has been obtained
- Admin events - I have added a BUNCH of admin tooling to run customized
weather events that let you control a lot of options
- New station maps/biomes for downstreams (Jungle Station, etc.)
- Change Ion storms to use the new weather system that triggers
EMP/thunder effects across the station
- IceBox could get plasma rain
- Lavaland could get thunder effects applied to ash storms
Relevant PRs that removed/added some of the weather stuff I used:
- #60303
- #25222
---
#### Attribution
- Rain sprites were added via [novaepee](https://github.com/novaepee) in
https://github.com/tgstation/TerraGov-Marine-Corps/pull/9675
- Sand sprites were added via [TiviPlus](https://github.com/TiviPlus)
(who commissioned them from bimmer) in
https://github.com/tgstation/TerraGov-Marine-Corps/pull/4645
- Rain sounds [already existed on
tg](https://github.com/tgstation/tgstation/pull/25222#discussion_r106794579)
and were provided by provided by Cuboos, using Royalty Free sounds,
presumed under default tg sound license - Creative Commons 3.0 BY-SA
- Siren sound is from siren.wav by IFartInUrGeneralDirection --
[Freesound](https://freesound.org/s/46092/) -- License: Attribution 4.0
The original `siren.ogg` sound used on a lot of SS13 servers doesn't
seem to have any attribution that I could locate. The sound was added
about 15 years ago. So I just looked for a somewhat similar sounding
siren noise on Freesound.
## Why It's Good For The Game
More weather customization!
## Changelog
🆑
add: Added new weather types for rain and sandstorms. Rain now uses a
reagent that gets exposed to the turfs, mobs, and objects. There is also
a thunder strike setting you can apply to any weather.
add: Hydro trays and soil will now add reagents to their trays when
exposed to a chemical reaction. (weather, shower, chem spills, foam
grenades, etc.)
add: Weather temperature now affects weather reagents and mobs body
temperature.
bal: Snowstorm temperature calculations were tweaked to allow universal
weather temperature effects.
sound: Added weather sounds from TGMC for rain and sirens (attributed to
Cuboos and IFartInUrGeneralDirection )
image: Added weather images from TGMC for rain and sand storms
(attributed to Novaepee and Bimmer)
refactor: Refactored a lot of the weather code to be more robust
admin: Admins can now control more weather related options when running
weather events. The weather admin verbs have been moved to their own
"Weather" category under the Admin tab.
/🆑
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
This PR introduces the `set_locked()` proc, which I'll also need for
something else later.
## Why It's Good For The Game
I could still interact with the storage of a box I placed into a secure
safe after I locked the latter.
## Changelog
🆑
fix: Locking a storage item now locks you out of other storage items
inside it.
/🆑
## About The Pull Request
This overhauls nearly all aspects related to heart attacks, making them
more urgent and threatening. It also enables the use of defibrillators
for quicker, less invasive treatment of heart attacks.
They are now a status effect instead of a virus, with a fixed countdown
of about two and a half minutes before full stoppage. As this timer
counts down, symptoms steadily escalate from audio cues to suffocation
and dizziness. Through treatment, the countdown can be wound back and
eventually cured (or you can just swap the heart like usual. Boring!!).
### Treatment
Replacing the heart is no longer the *only* option for treatment. Now,
heart attacks can be cured with the use of a defib. Each shock will
rewind the countdown (and symptoms) heavily, curing it after 2-4 zaps in
quick succession. In lieu of a defib, most other shock sources will
work, albeit much less effectively.
So, if you're in security and *really* don't feel like going to medical,
you can just have your fellow officers taze you back to health!

The emergency penthrite given after the attack has a new icon/message,
and is slightly less forgiving. You can still use it to shock yourself
back to life, still being a very risky move.
The heart attack doesn't manifest on medical HUDs immediately. It only
appears after the victim has reached stage 3 for the first time. At
stage 3, it's pretty apparent to both the victim and anyone around that
they're having a heart attack anyways, but until then it will be on the
victim to identify symptoms. Heart attacks will always be reported on
health analyzer scans, shown as the organ failing due to a myocardial
infarction and a tooltip suggesting defibs/other shocks to treat it.
This also adds two tips, for secoffs and medics, on how to treat a heart
attack.
Defibs also now use up charge for restarting a stopped heart, instead of
only when reviving a corpse.
## Why It's Good For The Game
Making heart attacks more of a threat gives way more weight to something
people should be afraid of, but aren't. Heart attacks fail to emulate
anything resembling a heart attack, to the point that it is lame and
dissapointing. They're an annoyance and a trip to the surgery room for
anyone familiar enough with the game. This iteration may be more
dangerous, but it's also more *exciting* (and can be treated faster).
Broadening the ways to treat a heart attack, or just stave off symptoms,
gives an amount of player agency over this threat. It may be more
urgent, but it doesn't mean it has to be a trip to medbay every time.
You can look for other ways to get zapped (security will help if asked,
I promise) or sandbox up your own solution.
Also, treating heart attacks with defib shocks just makes sense. Why do
we have to trash the whole heart? Usually after a heart attack it still
has like, a year or so of juice left before it quits for good.
More threatening heart attacks also further incentivize synthetic hearts
and working out, or any other clever ways of shielding oneself from an
attack (in case you're paranoid like that).
And lastly, the whole reason I started with this PR in the first place
-- I think it is a bit odd having heart attacks be handled as *diseases*
in the code. Status effects make more sense.
## Changelog
🆑 Rhials
balance: Heart attacks are now more violent and urgent. If you can hear
your own heartbeat and are short of breath, you should probably see a
doctor.
balance: Heart attacks can now be treated and eventually cured with
repeated defibrillation shocks.
balance: Heart attacks can now be treated and eventually cured with
repeated shocks from other sources.
/🆑
## About The Pull Request
Hunger bar is now dynamic rather than 4 static sprites
Hunger bar now accounts for food you have yet to metabolize, meaning it
updates as you eat
https://github.com/user-attachments/assets/06269da7-f07d-4738-98b2-ca6bde8ba0fe
Other changes:
- Adds a hunger tier between hungry and starving
## Why It's Good For The Game
Overeating happens so often simply because this bar is trash, so let's
give it some love
## Changelog
🆑 Melbert
fix: All humans no longer have a baseline "75" ghost nutrition (which
means you can eat more)
qol: Hunger bar update! It's now dynamic and updates as you eat.
qol: Adds a hunger tier between hungry and starving (for mood)
/🆑
## About The Pull Request
- Fixes jukebox volume reverting to 100% instead of preference setting
when adjusted at the jukebox.
- Fixes jukebox volume preference not applying to active jukebox music
track
- Splits jukebox and instrument into two different preferences.
## Why It's Good For The Game
The jukebox volume correctly updates and remains at what the player
sets.
## Changelog
🆑 LT3
fix: Jukebox volume preference applies to currently playing music
fix: Jukebox volume no longer resets to 100% when adjusted from the
object
/🆑
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
## About The Pull Request
Because we didn't pass layer into sub-overlays they ended up layering
ontop of other sub-overlays. This didn't break main layering because
BYOND's overlay rendering is actually acting like an ordered tree when
layered overlays are concerned, and blood decals (other user of separate
overlays) also used FLOAT_LAYER (-1).
And hat stabilizers also just assigned an absolute value to theirs,
which also made them not work properly.
Closes#90388
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and its effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
fix: Fixed hat stabilizer overlays rendering behind hats
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
## About The Pull Request

Handcuffed people can be buckled to the tram rails.
If the tram hits them then they will die badly.
If they're not shockproof and are buckled to a powered rail, it will zap
them repeatedly for a little bit of damage (but not a lot because you
probably want them to die from something else).
Unbuckling someone from a powered rail is also pretty dangerous.
While doing this I fucked around a bit with how the "is the tram deadly"
calculation worked because I didn't like how a deadly tram cuts your
head off but does literally no other damage. Now it pulverises _and_
beheads you.
## Why It's Good For The Game

Multiple people I spoke to believed this was already possible
## Changelog
🆑
add: Handcuffed people can now be tied to the tram rails
balance: tram rails will no longer electrocute you if they're not
powered
/🆑
---------
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
## About The Pull Request
1. Burning paper (and similar) is now two way - rather than
necessitating you touch the paper with the burning thing, you can now
touch the burning thing with the paper
2. You can now light a cigarette on a lit candle
3. Candles no longer craft into flashlight eyes
## Why It's Good For The Game
1. Burning money with a cigarette larp
2. Cool Frenchman larp
3. ??? I noticed you can't light a candle with a candle because it tried
to craft flashlight eyes.
## Changelog
🆑 Melbert
qol: Burning paper (and similar) is now two way. Rather than needing to
click on the paper with a burning item, you can now click on a burning
item with the paper. This means you can burn paper on your lit cigarette
like a badass.
qol: You can now light cigarettes on candles.
del: Flares and candles can no longer craft into flashlight eyes, I
guess.
/🆑
## About The Pull Request
I've been feeling for some time that fishes dying if placed on fishable
water (or lava/plasma for a couple ones) to be kinda lakluster and
counterintuitive. YakumoChen opening an issue about it proved I wasn't
the only one thinking that, and I'm not feeling like starting with
adding fishing stuff just yet. Not without improving the existing
content first.
The source_types file was also getting big and a bit bad to navigate
through, so I've decided to split it into half a dozen distinct files:
fishing portals, rifts, turfs, structures, mining/ruins and surgery.
## Why It's Good For The Game
This fixes#89872.
The files should also be bit more organized now.
## Changelog
🆑
fix: Fish will no longer drown if left half-submerged in a fishable turf
on which it can normally be found. Instead it will disperse after a
while or if starving. Note that this only happens if the fish is native
to such turfs (eg. lavaloop on beach water will still die).
/🆑
## About The Pull Request
this fixes a bunch of code incorrectly calling qdel directly on a list,
and adds a stack trace to qdel if someone does pass a list to it
## Why It's Good For The Game
because I'm pretty sure qdel ends up calling fucking `del()` as `/list`
is not a `/datum`
## Changelog
No user-facing changes.
## About The Pull Request
516 requires float layered overlays to be using pixel_w and pixel_z
instead of pixel_x and pixel_y respectively, unless we want
visual/layering errors. This makes sense, as w,z are for visual effects
only. Sadly seems we were not entirely consistent in this, and many
things seem to have been using x,y incorrectly.
This hopefully fixes that, and thus also fixes layering issues. Complete
1:1 compatibility not guaranteed.
I did the lazy way suggested to me by SmArtKar to speed it up (Runtiming
inside apply_overlays), and this is still included in the PR to flash
out possible issues in a TM (Plus I will need someone to grep the
runtimes for me after the TM period to make sure nothing was missed).
After this is done I'll remove all these extra checks.
Lints will probably be failing for a bit, got to wait for [this
update](4b77cd487d)
to them to make it into release. Or just unlint the lines, though that's
probably gonna produce code debt
## Why It's Good For The Game
Fixes this massive 516 mess, hopefully.
closes#90281
## Changelog
🆑
refactor: Changed many of our use cases for pixel_x and pixel_y
correctly into pixel_w and pixel_z, fixing layering issues in the
process.
/🆑
---------
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: SmArtKar <master.of.bagets@gmail.com>
## About The Pull Request
This PR adds the fearful component which acts as a unified handler for
terror effects. This currently includes nyctophobia and claustrophobia
quirks, terrified status effect from nightmare's spell, and the
monophobia brain trauma. The component processes terror handler datums
which act both as terror sources and effects - jittering, stuttering,
vomiting, panic attacks, etc.
This means that nyctophobia and claustrophobia now act more like
terrified status/monophobia - causing jitters, stuttering, periodic
panic attacks, etc, and their effects stack (i.e. being in a closet in
the dark will increase your fear much quicker).
Closes#37492Closes#57121Closes#69684
## Why It's Good For The Game
Terrified status is very immersive and its effects perfectly fit
nycto/claustrophobia quirks, enough to be impactful to owner's gameplay,
but not roleplaying for them, which is what we want quirks to be. It
also makes them share their stress, which is how you'd expect them to
act. (I would also love to see monophobia moved from a brain trauma to a
quirk, as it perfectly fits latter instead of former, and acts as a
great incentive to interact with other people instead of doing autism
projects by yourself.)
I haven't moved phobias to this system yet, but it could be done in the
future without too many issues - should make phobias less painful to
deal with, and maybe make people actually interested in playing around
them instead of rushing a lobotomy because of how debilitating they are
(currently only interaction is getting hugged by someone you're afraid
of, which will increase your terror)
## Changelog
🆑
add: Nyctophobia and Claustrophobia quirks now have proper terror
effects instead of making you walk/suffocate. Immersion!
refactor: All sources of "terror"/"fear" now use a common component,
meaning they share their counters.
/🆑
## About The Pull Request
This trainwreck of a PR is (hopefully) a final solution to all rendering
jank stemming from the new filter-based coloring system. I went over
every single instance of RESET_COLOR, either adding KEEP_APART or
rewriting them entirely so they render properly. I've also fixed blood
rendering issues by utilizing alpha filters and adding an abstract
"holder" appearance for worn items, which holds blood overlays on worn
clothing as to avoid coloring it. I've also fixed horrible
inconsistencies with atmos pipe coloring as a result (of getting sucked
down that rabbit hole) and converted all uses of COLOR_VERY_LIGHT_GRAY
in atmos code to ATMOS_COLOR_OMNI to avoid confusion.
MODsuit modules still get colored into MOD unit's color, need to
refactor their rendering for this.
Closes#88989Closes#87526Closes#89837
## Changelog
🆑
refactor: Audited all remaining coloring code - among noticeable
changes, blood should no longer get colored or "leak out" of item
bounds, atmos pipes no longer color weirdly and repairbots are white
again.
/🆑
## About The Pull Request
Inserting material (i.e. made from a material, but not a material
sheet/stack) items into material containers/remotes (ore silos,
autolathes, protolathes, etc) now uses right click instead of left
click. You still insert sheets using left click.
## Why It's Good For The Game
Its super easy to end up having your guns (which are made out of iron)
or armor (also made out of armor) or disks (also made out of iron) eaten
by an autolathe as you try to click a table next to it. This should
resolve players' frustrations while keeping material item insertion an
option via right clicking.
## Changelog
🆑
qol: Moved material item insertion to right click for material
containers
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
One of my upcoming PRs affects a significant chunk of the codebase so
I'm cleaning up messes that I've found along the way.
This PR adds wrappers for adjusting sanity/checking if a mob already has
a certain moodlet, fixes an oversight where attempting to set sanity
over passed maximum would abort the change outright (instead of actually
capping it out), moved jolly and depression processing into quirks
themselves (instead of having dedicated traits for them used solely by
said quirks and nothing else that are constantly checked for by mood
datums), and rewrote how blessings return their results to move omen's
deletion on blessing effect from constantly checking mood for a blessing
moodlet to a comsig.
## Why It's Good For The Game
Less jank handling of certain mechanics, we ***really*** shouldn't be
checking for blessings every time mood of all things is updated.
## Changelog
🆑
fix: Adjusting sanity over the allowed maximum will no longer completely
halt the change, and instead actually cap it at the maximum value.
code: Cleaned up mood and mood-adjacent code.
/🆑
## About The Pull Request
I was fucking around testing the Voidwalker earlier for a different
issue and didn't like that I couldn't see myself while in space.
This PR makes it so that Voidwalkers and also any variant of Ethereal
Jaunt place an icon visible only to you at your current position (it's
like your _soul_) so that you can see where you are going.
Nobody else can see it.


There are almost certainly some other sources of being invisible which
could use this so let me know if you are aware of one.
Although if you do that I may need to make my code more generic.
## Why It's Good For The Game
It's nice to be able to see where you are precisely rather than just it
being the centre of the screen
## Changelog
🆑
qol: It is now easier to see where you currently are while jaunting
/🆑
## About The Pull Request
Cleaned up an unnecessary proc on base crafting datum, fixed balloon
sutra-exclusive items being craftable by anyone, air sensors being only
craftable via search, crafters adding a second comma when failing to
craft something and missing capitalization in slapcrafting errors.
## Changelog
🆑
fix: You can no longer craft balloon armor and weapons without knowing
Balloon Sutra
fix: Air sensors now show up in atmospherics category
spellcheck: Fixed grammar/capitalization in crafter/slapcrafting error
messages
code: Cleaned up some crafting code
/🆑
## About The Pull Request
Custom material designs cannot be printed with plasteel and other alloys
because of this small issue. This should fix it.
## Why It's Good For The Game
See above.
## Changelog
🆑
fix: Custom material toolboxes and fishing rods can now be printed with
alloys such a plasteel and plasmaglass.
/🆑
## About The Pull Request
Noticed that bitrunning virtual spawners were runtiming if the server
was already emagged. Basically, the guardrail component is added
(virtual_entity), then immediately deleted because it's emagged, leading
to a race condition in `JoinParent()` where parent is null. I still want
to keep this "valid, but delete me" state for components, so I made
`COMPONENT_REDUNDANT` (thx @LemonInTheDark).
I can't say for certain because I couldn't repro, but this /probably/
fixes#89992
## Why It's Good For The Game
Fixes a runtime
Allows devs to add components that execute an arbitrary amount of logic
while still qdeling themselves due to some in-game incompatibility issue
## Changelog
N/A
## About The Pull Request
Changes the file-name, it's .dme include, and the first comment in the
folder (I spent longer then i'd admit trying to find the folder until I
gave up and checked vsc
## Why It's Good For The Game
it's probably isn't IDK
(insert comment here about the death of soul)
## About The Pull Request
One of the more recent incidents involving viral outbreaks utilized
these viruses to easily produce a ton of advanced, mutated diseases out
of the floor diseases. You can get some details here:
https://github.com/tgstation/tgstation/issues/90054
These diseases have bespoke behaviours, yet are capable of being
mutated. It doesn't really make much sense for them to be advanced
diseases because of their unique behaviour. Given it starts with a flag
that indicates that it is meant to not spread, but ,obviously, mutating
it causes it to become contagious anyway, we've just made them basic
viruses with some of the relevant parts of the symptoms they were using
added in.
## Why It's Good For The Game
It makes it too easy to get an advanced virus with which to mutate.
Which results in...well, a Urgathoan/Nurgle Incident waiting to happen.
Don't drink spoiled milk, kids. Or do if you're based.
## Changelog
🆑
code: Changes floor diseases from advanced diseases into basic diseases.
Should mostly function the same, except you can't mutate them.
/🆑
## About The Pull Request
In #89619, I removed the mech PKA's mining AOE and reduced the damaging
AOE to a fraction of the damage.
I have restored both of these aspects, but I have also applied this
change to the standard PKA's mining and damage AOE. I have also included
the mob biotype limitations as well.
AOE modkits take 10% capacity, now allowing miners to use them in more
setups. However, they conflict with one another. You can only have one
AOE mod until you can get the dual AOE mod from tendrils.
The AOE damage/mining effect is now a 2 tile effect rather than 1 tile
effect.
## Why It's Good For The Game
My intent in the previous PR was to bring mech PKA's down to standard
mining limitations. So, why not improve those standards for everyone
instead? The new state of mining expects you to be dealing with a lot of
mobs at once. Even small vents can, on occasion, decide to spit out
several goliaths back to back. That's a lot of mobs with a lot of
health.
Miners need AOE options more than ever. They have very little that are
actually meaningful, sadly. So my intent here is that this should be an
expectation for our miners to be seeking out and can fit into their
current, standard gameplay.
Certainly I've only felt like shit having to sacrifice a damage or
cooldown mod for an AOE mod, only to get a very minor amount of damage
splash for my efforts. That, and the radius doesn't usually impact most
mobs as they spawn and attack from awkward angles or distances from one
another where they are JUST out of reach of one another. Trying to use
the splash to hit multiple enemies is often not worth it compared to
just hitting one enemy at a time with a lot of damage.
So, let's just go with the standard of 'Good AOE is fundamentally needed
now' and worth from that premise.
## Changelog
🆑
balance: Mech PKA now once again mines turfs and does full damage on its
AOE explosion (still only hitting mining mobs).
balance: The standard PKA AOE mods are now by default 10% capacity. But
they cannot be used with one another.
balance: The standard PKA offensive AOE mod now does the PKA's full
damage in its AOE.
balance: Mining AOEs will affect everything within a 2 tile radius
around the point of impact, up from a 1 tile radius.
/🆑
---------
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
## About The Pull Request
I don't know if it's 516 or some of the latter updates 515 (EDIT:
definitely 516), but fish visual overlays are now rendered under other
overlays composing the aquarium when past a certain pixel offset, since
they are using the pixel x/y vars to do it. All we have to do is to
change it to pixel w/z
## Why It's Good For The Game
Small layering issue.
## Changelog
🆑
fix: fixed a small rendering issue with fishes inside an aquarium.
/🆑
## About The Pull Request
Completely refactored how client colors are handled. Now they're similar
to traits, having a source associated with them. Instead of adding and
removing by strict type (which makes client colors prone to getting
duplicated and not cleaned up) you remove a filter associated with a
specific source. Adding another client color with the same source as an
already existing one will replace the existing one if its of a different
type, or do nothing if they're the same (unless force is set to TRUE).
Client colors can also force filter splitting, putting all colors that
come before them, themselves, and all colors after them into separate
filters - this is useful to prevent mixing in filters which are supposed
to remove a certain color.
<details>
<summary>Example of how Perceptomatrix and nightmare vision goggles
combined before this PR:</summary>

And this is after, as you can see nightmare vision effect's red is only
slightly tinted by perceptomatix instead of being literally halved.

</details>
Additionally, added support for custom filters (and not just colors) to
client color code to allow us to work with more colorspaces.
Also fixed weird blindness behavior, so this also
Closes#89787
## Why It's Good For The Game
Makes code less ass to work with, fixes weird color mixing, etc.
## Changelog
🆑
fix: Fixed perceptomatix helmet allowing you to see even when
unconscious
refactor: Refactored how client colors are handled, ensuring that
certain effects like nightmare goggles don't disappear when another
vision-affecting piece of clothing is worn.
/🆑