## About The Pull Request
- Across the board, bleeding wounds cause ~0.85x slower blood loss.
- Wound clot rate while bandaged has also seen a ~0.85x reduction.
- And slashing wounds have also had their natural clotting rate reduced
by ~0.85x.
- All in all, blood wounds are expected to last marginally longer while
keeping the same level of deadliness.
- Sutures blood flow reduction has been reduced by ~0.85x as well.
Medicated suture is unaffected.
- Blood Mary now scales blood regeneration based on drunkness.
- Old: Flat 3 blood/tick.
- 0 drunkness = 0 blood/tick. 40 drunkness = 2 blood/tick. 80 drunkness
= 4 blood/tick.
- Epoetin Alfa saw drastic changes.
- No longer heals liver damage.
- No longer adds Sanguirite to the system.
- Now directly clots 0.1 flow of bloodiest wound (almost effectively
quadrupling clot rate, but 3x less effective than sanguirite)
- Blood/tick reduced from 3 blood/tick to 1 blood/tick.
- Now causes minor heart damage (0.2 damage/tick).
## Why It's Good For The Game
- A while back we were talking about how volatile blood wounds were.
Blood wounds are super scary, which is good, but just how scary they
were meant that the extent to which you interacted with this was a bit
stifled. My thoughts are slowing their pace a bit should open up more
opportunities for interaction while keeping them as scary.
- See above.
- Bloody Mary was ridiculously good at healing blood loss, better than
any chemical. The tweak to the effect aims to keep it as a pocket option
for aspiring bartender-alchemists without overpowering other chemicals
in medical contexts.
- Epoetin Alfa is effectively a producible form of Sanguirite which is
something that I believe is not mass producible for a reason (it's
really strong). The changes to it aim to make it a bit less potent that
sanguirite itself while keeping it as a viable blood healing option.
- I understand the liver healing is kinda a real world analog but in the
context of our chemical system, liver damage is something intentionally
not very common. It allows for complete negation of several other chem's
downsides. While I like this form of emergent chem mixing (mannitol and
bath salts, for example), this one earns a "particularly problematic"
badge due to negating 100% of the downsides of many chems.
## Changelog
🆑 Melbert
balance: Blood flow and clotting has universally been slashed by about
0.85x. This means blood wounds kill you slightly slower, but heal
slightly slower.
balance: Sutures now heal 0.85x less blood flow and gauze's clotting
bonus is also 0.85x lower. Medicated sutures are unaffected.
balance: Bloody Mary's blood healing effect now scales with how drunk
you are. Worse in low amounts, better in high amounts.
balance: Epoetin Alfa no longer generates Sangurite. It now directly
clots bleeding wounds (at a rate ~3x worse than sangurite, but still ~4x
better than the natural clotting rate)
balance: Epoetin Alfa no longer heals liver damage.
balance: Epoetin Alfa regenerates 3x less blood. It's still 4x effective
than Saline Glucose or Iron.
balance: Epoetin Alfa now causes minor heart damage (0.2 damage per
tick).
code: All "coagulating" effects now use a shared function.
/🆑
## About The Pull Request
Empy lists. There are a lot of 'em.
<img width="981" height="512" alt="image"
src="https://github.com/user-attachments/assets/b94b041a-2904-466b-ab89-54bd1de11b4e"
/>
Going through ways to reduce memory I found a few easy ones here. Wires,
the edible component, the seethrough component. None of these are really
a concern when it comes to needing lists in memory for performance
reasons. Wires aren't going to be cut most of the time for each door. A
lot of food does not have any junkiness. Seethrough component lies
dormant most of the round. Etc.
Making lists lazy in these cases should be a no brainer.
Everything I tested still seems to work exactly the same.
## Why It's Good For The Game
Frees memory that is just taking up space a lot of the time.
## Changelog
Not player-facing, this is all under-the-hood stuff.
## About The Pull Request
Extends the part of the crafting unit test that ensures consistency
between the total mats of the components of a recipe (or rather, the
result of said recipe) and a generic instance of the same type as its
result, previously only implemented on food recipes.
## Why It's Good For The Game
This ensures a degree of consistency with the material composition of
various objects in the game. I couldn't do it in the original PR as that
one was too big already and it took months to get it merged, and have
the relative bugs fixed.
Currently a WIP as I slowly deal with the unit test reports.
## Changelog
🆑
refactor: Follow-up to the crafting/material refactor from months ago.
All objects crafted with stacks now inherit their mat composition (not
necessarily the effects and color) by default, while previously only a
few things like chair, sinks and toilets did. Report any object looking
or behaving weirdly as a result.
fix: The material composition of ammo boxes is no longer a 1/10 of what
it's supposed to be. It was a shitty hack to make it harder to recycle
empty ammo boxes. Instead, they lose materials as they're emptied now.
/🆑
## About The Pull Request
It's just a partial cleanup of
anti-[STYLE](https://github.com/tgstation/tgstation/blob/master/.github/guides/STYLE.md)
code from /tg/'s ancient history. I compiled & tested with my helpful
assistant and damage is still working.
<img width="1920" height="1040" alt="image"
src="https://github.com/user-attachments/assets/26dabc17-088f-4008-b299-3ff4c27142c3"
/>
I'll upload the .cs script I used to do it shortly.
## Why It's Good For The Game
Just minor code cleanup.
Script used is located at https://metek.tech/camelTo-Snake.7z
EDIT 11/23/25: Updated the script to use multithreading and sequential
scan so it works a hell of a lot faster
```
/*
//
Copyright 2025 Joshua 'Joan Metekillot' Kidder
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
//
*/
using System.Text.RegularExpressions;
class Program
{
static async Task Main(string[] args)
{
var readFile = new FileStreamOptions
{
Access = FileAccess.Read,
Share = FileShare.ReadWrite,
Options = FileOptions.Asynchronous | FileOptions.SequentialScan
};
FileStreamOptions writeFile = new FileStreamOptions
{
Share = FileShare.ReadWrite,
Access = FileAccess.ReadWrite,
Mode = FileMode.Truncate,
Options = FileOptions.Asynchronous
};
RegexOptions regexOptions = RegexOptions.Multiline | RegexOptions.Compiled;
Dictionary<string, int> changedProcs = new();
string regexPattern = @"(?<=\P{L})([a-z]+)([A-Z]{1,2}[a-z]+)*(Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss)([A-Z]{1,2}[a-z]+)*";
Regex camelCaseProcRegex = new(regexPattern, regexOptions);
string snakeify(Match matchingRegex)
{
var vals =
matchingRegex.Groups.Cast<Group>().SelectMany(_ => _.Captures).Select(_ => _.Value).ToArray();
var newVal = string.Join("_", vals.Skip(1).ToArray()).ToLower();
string logString = $"{vals[0]} => {newVal}";
if (changedProcs.TryGetValue(logString, out int value))
{
changedProcs[logString] = value + 1;
}
else
{
changedProcs.Add(logString, 1);
}
return newVal;
}
var dmFiles = Directory.EnumerateFiles(".", "*.dm", SearchOption.AllDirectories).ToAsyncEnumerable<string>();
// uses default ParallelOptions
// https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.paralleloptions?view=net-10.0#main
await Parallel.ForEachAsync(dmFiles, async (filePath, UnusedCancellationToken) =>
{
var reader = new StreamReader(filePath, readFile);
string oldContent = await reader.ReadToEndAsync();
string newContent = camelCaseProcRegex.Replace(oldContent, new MatchEvaluator((Func<Match, string>)snakeify));
if (oldContent != newContent)
{
var writer = new StreamWriter(filePath, writeFile);
await writer.WriteAsync(newContent);
await writer.DisposeAsync();
}
reader.Dispose();
});
var logToList = changedProcs.Cast<KeyValuePair<string, int>>().ToList();
foreach (var pair in logToList)
{
Console.WriteLine($"{pair.Key}: {pair.Value} locations");
}
}
}
```
## Changelog
🆑 Bisar
code: All (Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss) procs now use
snake_case, in-line with the STYLE guide. Underscores rule!
/🆑
## About The Pull Request
This 1st has to be PR'd so the integration tests can point out all
wallmounts that could not find a support structure to mount on. I then
will do many map edits to align them onto the closest atom
Yes we no longer use wall mount but atom mounted component. All objects
that are mounted on windows/tables & fences now also fall off when
destroyed
It'll probably be a WHILE before I can fix all wall mounts. Long day.
Expect me to misalign many stuff to fix failing CI so make sure to
provide suggestions when possible
Improved wallmount code overall
- Fixes#93793
## Changelog
🆑
fix: fixes all incorrectly maploded wall mounts that aren't actually
hanging on any support structure
fix: objects mounted on tables, windows & fences also fall off now when
destoryed
qol: lights can be mounted on windows
qol: cameras can be mounted on windows
qol: buttons can be mounted on tables
refactor: improved how wall mounts interact with objects as a whole
report bugs on github
/🆑
## About The Pull Request
Ore bags try to insert the stack without actually checking if it can
merge with anything, meaning that ores can take up limited slots which
may end up with 7 single-ore stacks preventing any more ore from
entering the bag, despite there being ample space for 49 more ore of
each type. Now bags will actually try to merge picked up ore into
themselves first, ensuring that this doesn't occur, and that the bag
will always be topped up (This needed additional logic to ensure that
stacks don't merge beyond the size that the storage they're in can
handle)
Additionally, I've changed how stacks merge when dragged (instead of
merging themselves into the target, target is merged into themselves)
and prevent dragging from changing focus to stack that is being merged
into if the merging stack isn't empty, fixing the "pull churn" issue
that locks out player inputs if you try to pry and drag floor tiles due
to constantly swapping the pull target after every tile pried, plus I've
removed that weird ore box `insertion` animation (which I recon is an
oversight) and ore bags sucking up the ores you drop from your hand
because you're probably doing so intentionally
## Changelog
🆑
fix: Fixed ore bags being able to reject any ores despite having ample
space
fix: Pulling a stack behind you and getting it topped up by lying items
will no longer spam pulls and lock out your inputs
fix: Picking up ores into an ore box via an ore bag will no longer play
a jank animation
qol: Ore bags and MODule ore bags no longer pick up ores you've dropped
from your hand until you walk over them again
/🆑
## About The Pull Request
ports https://github.com/DaedalusDock/daedalusdock/pull/1144
ports https://github.com/DaedalusDock/daedalusdock/pull/1147
full credit to @Kapu1178 for the juice
instead of `reacher.CanReach(target)` we now do
`target.CanBeReachedBy(reacher)`, this allows us to give special
behavior to atoms which we want to reach, which is exactly what I need
for a feature I'm working on.
## Why It's Good For The Game
allows us to be more flexible with reachability
## Changelog
🆑
refactor: refactored how reaching items works, report any oddities with
being unable to reach something you should be able to!
/🆑
## About The Pull Request
This PR allows golems or anyone with the genetic mutation to benefit
from the effects of golem food if what they're eating is made of a
material tied to ore or sheets with golem food effects.
In layman terms, this means you can deepfry a chair and get golem buffs
that way. The duration also scales with the amount of material consumed,
which also depends on the bite size of the food. Smaller doses translate
to a shorter duration of the effect, while the viceversa is also true
(however with diminishing returns).
Also, you won't take immediate damage from biting, food with items made
of metals and glass stuffed into it if you've the rock eater trait (come
on dude, you eat literal raw diamonds). This has nothing to do with
golem food, but it's one less peeve off the list as I slowly and
occasionally work on material datums and their presence in the game.
## Why It's Good For The Game
Adding some depth to materials and food, albeit not much.
## About The Pull Request
Apparently wall construction code is snowflaked and indented as fuck
(and the same goes for door assemblies). I'm not bothering refactoring
everything with them, only to reduce the indentation, changing a couple
vars and overall making it easier to work with them later. This includes
wall construction not being hardcoded to sheets but include the
possibility to use other kind of stacks as well (if you don't count the
snowflake interaction with iron rods). In layman's terms, this means you
can make walls made out of sand (distinct from sandstone) again.
Also I've done some small changes to the materials storage, so that it
can eject ores too if the material doesn't have a sheet type.
Also, I've been told there may be issues with broken, uninteractable
(probably not properly initialized) glass sheets beside the ORM. I'm not
100% sure about the deets, but it may have something to do with spawning
the glass on the same turf the ORM is listening to, when smelting sand,
causing some race conditions, so let's spawn it in nullspace
## Why It's Good For The Game
While I'm sure there may be more elegant solutions (just take a look at
the wall and door construction code, they both use text2path oh god!),
I'm just here to make things a lil' cleaner and be done with issues with
the fact that sand is made of sand.
## Changelog
🆑
fix: You can once again make sand walls.
fix: Deconstructing an autolathe with sand in it should now drop sand.
/🆑
## About The Pull Request
`heal_end_sound` is null by default so we should be checking it is
actually something first.
## Why It's Good For The Game
Less pointless runtime log pollution
## Changelog
N/A
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
Complete rework of the metal hydrogen armor for atmos. Rebalancing the
stats, crafting recipe, and most importantly new sprites for planti and
digi. EDIT: Teshari sprites now included.
## Why It's Good For The Game
The metal hydrogen armor has been a direct downgrade to nearly every
single other atmospherics tool, modsuits, firesuits, etc. Despite being
the hardest piece of atmospherics equipment to make. Taking around 45-60
minutes depending on skill level. Plus it was just extremely ugly. Its
now gotten an immense buff, with significantly better resistances before
and guess what... ITS ACTUALLY FIREPROOF NOW, among that its been made
into a "firesuit upgrade" requiring an atmospherics firesuit/helmet +
metal hydrogen to craft. specific stats will be listed in changelog.
it was also highly voted as seen below.
https://discord.com/channels/1059199070016655462/1071095123145924679/1374831845337993367
## Proof Of Testing
I've tested this extensively and made sure 0 errors occurred during the
process.
<img width="474" height="511" alt="image"
src="https://github.com/user-attachments/assets/6b38c4d4-dbf0-4a19-9f1d-7d67943777a4"
/>
<img width="84" height="78" alt="image"
src="https://github.com/user-attachments/assets/9b01e970-ed65-4cce-bc5f-402e9174d34d"
/>
<img width="88" height="81" alt="image"
src="https://github.com/user-attachments/assets/10a218eb-9ee9-432f-b346-092440a28ca8"
/>
## Changelog
🆑
add: Added Elder Atmos crafting recipes
del: Removed metal H2 Armor stack craft
image: Resprited Metal H2 Armor, digitigrade and plantigrade
spellcheck: Fixed a typo with the Metal H2 Axe
code: Changed metal H2 armor stack crafting
balance: Metal H2 Fireaxe force_wielded from 15 > 20
Metal H2 Fireaxe wound_bonus from -15 > -10
balance: Elder Atmosian Armor Set Buffs
Stat buffs across the board, including several flag changes to better
fit the armor.
/🆑
## About The Pull Request
moves all implementations (im aware of) for "Im a parent type dont spawn
me please" to the datum layer to standardized behavior
adds a standerized proc for filtering out "bad" items that we dont want
spawning. applies to it the subtype vendor, gifts, and a new spawner and
mystery box for a random gun (neither playerfacing)
"port" of https://github.com/shiptest-ss13/Shiptest/pull/4621https://github.com/user-attachments/assets/22f6f0b2-b44e-411a-b3dc-6b97dc0287aa
small warning: I dont have EVERY abstract type defined right now but,
ive done a good enough job for now. Im tired of data entry rn
## Why It's Good For The Game
standardizing behavior. Might be a micro hit to performance however
having this lets us not rely on icon state to determine whether
something is a parent type and makes it much easier to tell something is
a parent type (could be applied further to things like admin spawning
menus and things like that).
need feedback on if this is actually good for the game.
## Changelog
🆑
add: Soda cans show up in the silver slime drink table.
add: Examine tag for items that are not mean to show up ingame.
refactor: Standardizes how gifts rule out abstract types.
fix: gifts no longer check if something has an inhand, massively
expanding the list of potential items.
/🆑
## About The Pull Request
sand blocks existed for the only purpose of making sand available as a
material. However, the only method to get them was pretty whimsical and
the existence of the feature wasn't really conveyed to the player, which
involves rinsing regular sand in a sink... and before you ask, we also
have sandstone, which can be crafted just by using the sand in hands, no
water involved. In fact, the sand blocks use the same sprites for
regular sandstone, except they have no recipes associated to them,
nothing! Nada!
Let's address the elephant in the room: We already have sand, however
said sand already has the glass material attached to it even before
being smelted, so if you put sand into the Autolathe, you get glass,
yay. Sand blocks really only existed to make up for the shortcoming of
whoever coded the sand material at the time.
But enough ranting. As the title says, sand is now made of sand, sand
blocks are kill. I've been careful enough to give the ORM the ability to
smelt gathered sand into glass beforehand, so miners won't curse me for
making them _actually_ use the smelter for once, "I will rather die to a
goliath than have anything to do with that". However, this still means
you cannot shove sand directly into lathes and expect glass out of it.
Get a welder.
## Why It's Good For The Game
## Changelog
🆑
balance: sand is now made of sand and not glass. Get a welder if you
plan to shove it into a protolathe.
del: Removed now useless sand blocks.
/🆑
## About The Pull Request
- Wrapping a crate with package wrapping while pulling it will now
automatically make you grab it
- You can now open the crate while dragging it with the H.A.U.L.
gauntlets if you're the one who's pulling it. Also applies to other
items (including MOD modules) that have the component
https://github.com/user-attachments/assets/7b4743c8-855d-4274-89ca-b0507f6d3e0e
## Why It's Good For The Game
QOL for cargo technicians - having to constantly grab and let go of
crates is very annoying
## About The Pull Request
Blood beam, while supposed to be quite costly can be used after slicing
the throat of a single monkey.
You could then, put as many iron sheets on the floor as you wanted, aim
your blood beam at it (aiming away from the center of the station
recommended) and convert potentially multiple full stacks of it 1:1 into
cult metal.
## Why It's Good For The Game
Cultists already have a dedicated spell for creating cult metal
requiring plasteel instead, which is usually harder to gather in bulk
especially early on. That interaction completely overshadows it. As a
fun fact, it's also older than the change that moved the construct spell
from iron to plasteel so it's likely somebody just forgot.
## About The Pull Request
It should be invulnerable to damage, not completely indestructible by
all means
Closes#92540
## Changelog
🆑
fix: Fixed metal hydrogen being blocked from all material storages
/🆑
## About The Pull Request
Port of my changes from [Monkestation/Monkestation2.0@`c54fc87`
(#7295)](https://github.com/Monkestation/Monkestation2.0/pull/7295/commits/c54fc872bfe767238a02da2b8bb5efdeb93a8526)
This nukes `/obj/item/bodypart/proc/get_modified_bleed_rate()`, instead
everything just uses the `cache_bleed_rate` var - `refresh_bleed_rate()`
will now take into account body position and grasping in the same way
`get_modified_bleed_rate` did.
(Un)grasping a limb already called `refresh_bleed_rate()` anyways, so
the only other change needed was making
`COMSIG_LIVING_SET_BODY_POSITION` also call it.
## About The Pull Request
This overhauls Water Coolers (now referred to as "liquid coolers"
internally and in most external cases). They'll feel less like a useless
prop now.
(sprites may look off because of the gif software I use)
**Important Thing # 1:** The reagents are now handled by cooler jugs.
You can pop the jug off of a cooler, fill it with whatever the hell you
want, and put it back on. Fill it with drugs. Fill it with acid. I don't
care, I'm not your mom.
<img width="41" height="56" alt="image"
src="https://github.com/user-attachments/assets/4c618cab-99b4-4a72-ae7b-7b900d7f5eaf"
/>
The sprite now uses an overlay to change colors based on the mix. Water,
when present in the cooler, is magically turned blue to keep that
classic water cooler look.
<img width="280" height="333" alt="image"
src="https://github.com/user-attachments/assets/8a6a905c-bef4-4f5f-9393-5ce5dcca0620"
/>
The jugs are 200 reagents, and are mechanically comparable to the jerry
can. No 200 unit acid splashes or anything.
Y'know, unless you put the jug in a cooler and knock it over...

**Important Thing # 2:** They can be anchored, tipped, and crafted.
Tipping them requires the cooler be unanchored. If you want to use one
of these tactically, unwrench it beforehand.

**Important Thing # 3:** They can be bought from cargo now!
<img width="501" height="605" alt="image"
src="https://github.com/user-attachments/assets/6f261aab-f11a-4126-98ce-d9278d01d0a0"
/>
**Important Thing # 4**
Fruit punch.
<img width="175" height="127" alt="image"
src="https://github.com/user-attachments/assets/ac81e48c-47ff-461f-85f8-3e77a6a6ca55"
/>
Fruit punch is a drink with impressive (slightly faster than omnizine)
healing qualities. Unfortunately, it's so unbearably sweet that it can
only be safely consumed near a liquid cooler! Drinking this stuff is a
commitment, since if you stray from the cooler while digesting it, you
will be hurt and disoriented. You should avoid drinking too much at
once, in case an emergency comes up!
For this reason, we encourage drinkers to _take small sips from your
paper cooler cup, hang around the cooler, and maybe chat with other
people who are healing too._
(Mapload) water coolers have a 1% chance to start full of punch instead
of water. Maybe you'll get lucky and start with a healing station in
your department, or maybe a hopeless space explorer will find one in a
ruin and be saved.
You can also buy one from cargo but it's priceyyyyy. It's also the only
source of punch.
## Why It's Good For The Game
Realizing how little functionality water coolers have was super
disappointing. They do hardly anything but take up space and look
pretty. And now, they're getting mapped into all of the new stations! We
can't have a bunch of inert, sandbox-shunning furniture just sitting
around, the other codebases would laugh at us!
Now, coolers are more congruent with how most people would expect one to
behave in the game environment. Even minor changes like making them
unanchorable or refillable helps them fit in with most players'
intuitive understanding of how atoms typically behave.
The reagent storage change gives coolers their own unique niche in the
sandbox. Tipping them over can also give you an edge in escaping
someone, so even the untouched roundstart coolers can serve a purpose to
savvy players.
For the punch cooler, I figured "why not make a reagent that rewards
players for treating the water cooler like a water cooler?" The punch
encourages players to stand around it, slowly sip from the cooler, and
chat with their co-workers. Just like people do in offices! It's
thematically sound!
## Changelog
🆑 Rhials
add: You may now remove water cooler jugs and put whatever you want in
them. Go nuts.
add: Water coolers are now craftable (with plastic), orderable from
cargo, and tippable when unanchored.
add: Rarely, water coolers will spawn full of healing fruit punch
instead of water! Be careful not to stray from the cooler while
digesting this stuff.
add: You can also just buy the punch cooler from cargo if you feel like
it.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
# Conflicts:
# code/modules/reagents/reagent_dispenser.dm
## About The Pull Request
Adds a new surface ruin to icebox, the RoroCo factory. Contains a couple
of puzzles, and a small amount of loot in the form of ~~3 total pairs of
insulated gloves~~ a pair of insulated gloves, two adorable roros and a
cool unique labcoat. Just don't ask where the gloves come from...
Puzzles can of course be avoided/brute-forced by breaking down the walls
but that's for chumps.
<img width="1152" height="1024" alt="Space Station 13 2025-08-06 221903"
src="https://github.com/user-attachments/assets/21050aa6-9b27-494d-a949-7496aeda18cf"
/>
## Why It's Good For The Game
The upcoming 1x3 icebox surface calls for more ruin content to help fill
that space.
## Changelog
🆑
add: A new insulated glove factory has popped up on the ice moon.
add: Freezer floor tiles now come in the full range of shapes.
/🆑
## About The Pull Request
Converts as many time vars expressed in deciseconds as I could find to
use time defines.
## Why It's Good For The Game
Makes these values neater and more readable.
## Changelog
🆑
code: Converted a lot of time-based variables to be expressed with time
defines.
/🆑
# Conflicts:
# code/modules/clothing/head/hat.dm
# code/modules/clothing/shoes/boots.dm
# code/modules/clothing/suits/utility.dm
## About The Pull Request
Port of my changes from [Monkestation/Monkestation2.0@`c54fc87`
(#7295)](https://github.com/Monkestation/Monkestation2.0/pull/7295/commits/c54fc872bfe767238a02da2b8bb5efdeb93a8526)
This nukes `/obj/item/bodypart/proc/get_modified_bleed_rate()`, instead
everything just uses the `cache_bleed_rate` var - `refresh_bleed_rate()`
will now take into account body position and grasping in the same way
`get_modified_bleed_rate` did.
(Un)grasping a limb already called `refresh_bleed_rate()` anyways, so
the only other change needed was making
`COMSIG_LIVING_SET_BODY_POSITION` also call it.
## About The Pull Request
This overhauls Water Coolers (now referred to as "liquid coolers"
internally and in most external cases). They'll feel less like a useless
prop now.
(sprites may look off because of the gif software I use)
**Important Thing # 1:** The reagents are now handled by cooler jugs.
You can pop the jug off of a cooler, fill it with whatever the hell you
want, and put it back on. Fill it with drugs. Fill it with acid. I don't
care, I'm not your mom.
<img width="41" height="56" alt="image"
src="https://github.com/user-attachments/assets/4c618cab-99b4-4a72-ae7b-7b900d7f5eaf"
/>
The sprite now uses an overlay to change colors based on the mix. Water,
when present in the cooler, is magically turned blue to keep that
classic water cooler look.
<img width="280" height="333" alt="image"
src="https://github.com/user-attachments/assets/8a6a905c-bef4-4f5f-9393-5ce5dcca0620"
/>
The jugs are 200 reagents, and are mechanically comparable to the jerry
can. No 200 unit acid splashes or anything.
Y'know, unless you put the jug in a cooler and knock it over...

**Important Thing # 2:** They can be anchored, tipped, and crafted.
Tipping them requires the cooler be unanchored. If you want to use one
of these tactically, unwrench it beforehand.

**Important Thing # 3:** They can be bought from cargo now!
<img width="501" height="605" alt="image"
src="https://github.com/user-attachments/assets/6f261aab-f11a-4126-98ce-d9278d01d0a0"
/>
**Important Thing # 4**
Fruit punch.
<img width="175" height="127" alt="image"
src="https://github.com/user-attachments/assets/ac81e48c-47ff-461f-85f8-3e77a6a6ca55"
/>
Fruit punch is a drink with impressive (slightly faster than omnizine)
healing qualities. Unfortunately, it's so unbearably sweet that it can
only be safely consumed near a liquid cooler! Drinking this stuff is a
commitment, since if you stray from the cooler while digesting it, you
will be hurt and disoriented. You should avoid drinking too much at
once, in case an emergency comes up!
For this reason, we encourage drinkers to _take small sips from your
paper cooler cup, hang around the cooler, and maybe chat with other
people who are healing too._
(Mapload) water coolers have a 1% chance to start full of punch instead
of water. Maybe you'll get lucky and start with a healing station in
your department, or maybe a hopeless space explorer will find one in a
ruin and be saved.
You can also buy one from cargo but it's priceyyyyy. It's also the only
source of punch.
## Why It's Good For The Game
Realizing how little functionality water coolers have was super
disappointing. They do hardly anything but take up space and look
pretty. And now, they're getting mapped into all of the new stations! We
can't have a bunch of inert, sandbox-shunning furniture just sitting
around, the other codebases would laugh at us!
Now, coolers are more congruent with how most people would expect one to
behave in the game environment. Even minor changes like making them
unanchorable or refillable helps them fit in with most players'
intuitive understanding of how atoms typically behave.
The reagent storage change gives coolers their own unique niche in the
sandbox. Tipping them over can also give you an edge in escaping
someone, so even the untouched roundstart coolers can serve a purpose to
savvy players.
For the punch cooler, I figured "why not make a reagent that rewards
players for treating the water cooler like a water cooler?" The punch
encourages players to stand around it, slowly sip from the cooler, and
chat with their co-workers. Just like people do in offices! It's
thematically sound!
## Changelog
🆑 Rhials
add: You may now remove water cooler jugs and put whatever you want in
them. Go nuts.
add: Water coolers are now craftable (with plastic), orderable from
cargo, and tippable when unanchored.
add: Rarely, water coolers will spawn full of healing fruit punch
instead of water! Be careful not to stray from the cooler while
digesting this stuff.
add: You can also just buy the punch cooler from cargo if you feel like
it.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
Adds a new surface ruin to icebox, the RoroCo factory. Contains a couple
of puzzles, and a small amount of loot in the form of ~~3 total pairs of
insulated gloves~~ a pair of insulated gloves, two adorable roros and a
cool unique labcoat. Just don't ask where the gloves come from...
Puzzles can of course be avoided/brute-forced by breaking down the walls
but that's for chumps.
<img width="1152" height="1024" alt="Space Station 13 2025-08-06 221903"
src="https://github.com/user-attachments/assets/21050aa6-9b27-494d-a949-7496aeda18cf"
/>
## Why It's Good For The Game
The upcoming 1x3 icebox surface calls for more ruin content to help fill
that space.
## Changelog
🆑
add: A new insulated glove factory has popped up on the ice moon.
add: Freezer floor tiles now come in the full range of shapes.
/🆑
## About The Pull Request
Converts as many time vars expressed in deciseconds as I could find to
use time defines.
## Why It's Good For The Game
Makes these values neater and more readable.
## Changelog
🆑
code: Converted a lot of time-based variables to be expressed with time
defines.
/🆑
## About The Pull Request
Because fish is an item, it inherits the use of integrity from objects,
however it also has its own health variable. For consistency, ~~damaging
its integrity should also lower its health and healing it should also
recover its integrity. Fish has a max integrity that's double its
health.
I've also renamed `adjust_health` to `set_health` since it doesn't
adjust the health by the provided value but sets it to said value.~~
I've scrapped the latter to instead use integrity.
## Why It's Good For The Game
A small bit of consistency. If you shoot a fish with a laser gun,
wouldn't it die?
(cherry picked from commit 940d73aeae)
## About The Pull Request
Because fish is an item, it inherits the use of integrity from objects,
however it also has its own health variable. For consistency, ~~damaging
its integrity should also lower its health and healing it should also
recover its integrity. Fish has a max integrity that's double its
health.
I've also renamed `adjust_health` to `set_health` since it doesn't
adjust the health by the provided value but sets it to said value.~~
I've scrapped the latter to instead use integrity.
## Why It's Good For The Game
A small bit of consistency. If you shoot a fish with a laser gun,
wouldn't it die?
## About The Pull Request
Introduces perfect tense attack verbs for all of our limbs, as just
adding ``ed`` to the end doesn't work in about half the cases.
- Closes#90573
## About The Pull Request
Introduces perfect tense attack verbs for all of our limbs, as just
adding ``ed`` to the end doesn't work in about half the cases.
- Closes#90573

This PR adds "platforms" to the game, a port of the window frames from
the Wallening branch but with no windows attached.
You can craft them with two stacks of many kinds of materials.
Functionally they're basically just tables for standing on and act as a
decorative tool allowing you to make raised areas like stages.
Largely as far as I can tell I _think_ these were sprited by @Krysonism
although it's a little hard to check if there's any that were done by
someone else.
You can walk directly from tables to platforms (and crates) and vice
versa. You can also tableslam people onto them.
This PR also comes with "steps" (AKA small stairs)
You can use steps to walk onto platforms (or tables, or crates) without
needing to do the climbing action first.

If you try to run through them the wrong way you will trip.
Right now they only come in "Iron" flavour. Maybe one day someone will
sprite some wooden ones, or other varieties.
Basically the intention is to use them to build a little stage or altar
or maze or something. They don't have a lot of non-decorative purpose.
Don't be alarmed by the touched files list. It's mostly sprites and
there's barely even any code in this PR. It's almost entirely elements
and boilerplate.
Mappers keep asking me to add these.
Salvages some sprites from the Wallening project which we can still use.
You can make a really really big multitile pizza.
🆑 Jacquerel, Smartkar, sprites by Kryson
add: Added "platforms", or "half-walls" which are a kind of decorative
block similar to tables which you can walk around on.
add: You can walk freely between tables, platforms, and crates that
happen to be near tables or platforms.
add: You can construct iron steps to traverse tables and platforms
without needing to climb on, but try not to trip over them.
/🆑
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
## About The Pull Request

This PR adds "platforms" to the game, a port of the window frames from
the Wallening branch but with no windows attached.
You can craft them with two stacks of many kinds of materials.
Functionally they're basically just tables for standing on and act as a
decorative tool allowing you to make raised areas like stages.
Largely as far as I can tell I _think_ these were sprited by @Krysonism
although it's a little hard to check if there's any that were done by
someone else.
You can walk directly from tables to platforms (and crates) and vice
versa. You can also tableslam people onto them.
This PR also comes with "steps" (AKA small stairs)
You can use steps to walk onto platforms (or tables, or crates) without
needing to do the climbing action first.

If you try to run through them the wrong way you will trip.
Right now they only come in "Iron" flavour. Maybe one day someone will
sprite some wooden ones, or other varieties.
Basically the intention is to use them to build a little stage or altar
or maze or something. They don't have a lot of non-decorative purpose.
Don't be alarmed by the touched files list. It's mostly sprites and
there's barely even any code in this PR. It's almost entirely elements
and boilerplate.
## Why It's Good For The Game
Mappers keep asking me to add these.
Salvages some sprites from the Wallening project which we can still use.
You can make a really really big multitile pizza.
## Changelog
🆑 Jacquerel, Smartkar, sprites by Kryson
add: Added "platforms", or "half-walls" which are a kind of decorative
block similar to tables which you can walk around on.
add: You can walk freely between tables, platforms, and crates that
happen to be near tables or platforms.
add: You can construct iron steps to traverse tables and platforms
without needing to climb on, but try not to trip over them.
/🆑
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
## About The Pull Request
Title; also introduces a stack trace in case a non-borg tries to shatter
a <1 sheet stack. Moves shard creation to `drop_location()` instead of
`user.loc` so shattering glass with TK won't magic shards under your
feet.
## Why It's Good For The Game
no issue opened for this one apparently, weird
anyway, less bug good
## Changelog
🆑
fix: fixed borgs being able to shatter glass into shards when there's no
glass in the synthesizer
fix: shattering sheets into shards with telekinesis will place the
shards at the stack, not at the user's feet
/🆑