## About The Pull Request
``get_temperature()`` returns a value in kelvins, not a boolean. Trying
to treat it as such will result in ***any*** item with a thermal value,
like condensers, being treated as a lighter.
## Why It's Good For The Game
Consistency, allows us to have actually functioning cooling items that
don't act like lighters all the time.
## Changelog
🆑
fix: Condensers can no longer be used to ignite things
/🆑
## About The Pull Request
1. Refactors gauze
Removes gauze var from `/stack`, adds a shared parent between tape and
gauze.
Behavior of "sticking thing on limb" is now a bit more generic, with
there being a component to facilitate it and a framework on `/bodypart`
Closes#92990
2. Adds Tourniquets
A first aid item, when attached to a limb it reduces blood loss from
that limb by 90%.
However while attached you walk slower (if on a leg), interact slower
(if on a arm), and yes, you rapidly die if you put it on your head
Paramedic belts have their starting equipment changed again for the
500th time.
Surgical tape -> Tourniquet
Bone gel -> Bonesetter
<img width="604" height="224" alt="image"
src="https://github.com/user-attachments/assets/443dd5c0-44a3-4ccb-9f6a-c561bbf2fba9"
/>
## Why It's Good For The Game
Adds some more variety for field treatment of bleeding wounds, and in
the future we can add things like "improvised tourniquets" or
"improvised splints" with wooden planks.
## Changelog
🆑 Melbert
add: Adds Tourniquets. While attached to a limb, reduces blood loss from
that limb by 90%, but makes you walk / interact slower. (Or if you put
it on your head, you die.)
add: You can purchase Tourniquets from the premium section of the
medical vendor
add: Paramedic belt setup has changed yet again: Surgical tape replaced
with Tourniquet, Bone gel replaced with Bonesetter.
add: You can use all forms of tape as splint - like Gauze. Will secure a
fracture but won't stop your blood from exiting.
refactor: Refactored gauze entirely, report any strangeness with it (or
tape, or tourniquets)
/🆑
## About The Pull Request
1. Adds doppler radar towers to Lavaland and the Icemoon
Weather radios now need a doppler radar on the target z-level to get an
accurate reading. Without a radar tower, the expected timing of incoming
storms will be off by a random factor.
Lavaland and the Icemoon both have a few towers mapped into them.
The towers themselves can be constructed with plasteel if they some how
get destroyed. They also have an in built GPS.
Each tower requires a cable connection to function. They need a pretty
small amount of power to function.
2. Adds anomalous radar towers
Attaching a weather anomaly core to a radar tower results in an
anomalous radar tower.
<img width="260" height="409" alt="image"
src="https://github.com/user-attachments/assets/3430b0aa-0bbc-44df-ae75-67c2c3cca5a6"
/>
This allows you to cancel ongoing storms **or summon storms yourself**.
Each cancellation and summon uses a percentage of the core's charge.
After the charge runs dry, the core is destroyed, and the tower goes
back to being normal.
Yes, you can construct a radar tower on the station to summon storms on
the station, *including* rad storms.
All storms summoned abide by radstorm rules, meaning maint is safe.
Summoning onto the station uses significantly more charge.
3. Limits weather anomaly cores to 5
Because they are charge based and spamming weather events all round
would be annoying, slightly lowers the max core count.
## Why It's Good For The Game
Weather manipulation seems super appropriate for weather anomaly cores.
Initially it was just going to be the machine, but then I thought "what
if I want the frame of the machine to be available roundstart on
Lavaland to encourage cooperation with miners" and then I thought "what
if it tied into the weather radios, which opens up rare sabotage
methods"
So that's how we got here. The towers exist to facilitate the anomaly
use while also allowing enterprising traitors to sabotage, potentially
leaving their target unaware in a storm.
## Changelog
🆑 Melbert
add: Adds doppler radar towers to Lavaland and the Icemoon. These towers
ensure weather radios have accurate readings.
add: Adding a weather anomaly core to a radar tower upgrades it, giving
you control of weather - allowing you to cancel storms or even spawn a
weather event of your choice. However, the core will expire after use,
requiring replacement.
add: You can construct radar towers with plasteel. Even on the station.
Yes, you can summon weather onto the station.
balance: Limits weather anomaly cores to 5.
/🆑
## About The Pull Request
As title says, skin butchered from humans (currently only applies to
lizardskin) now inherits their owner's skin color, and so do items
(lizardskin boots and hats) made from it.
Also this PR gagsifies lizardskin hats and boots for this very reason.
## Why It's Good For The Game
Consistency, when you butcher a purple lizard you should get purple
lizard boots.
## Changelog
🆑
add: Made lizard skin and lizardskin items inherit their "donor's" skin
color
/🆑
## About The Pull Request
Inspired by #94233. `grind_results`(list) & `juice_typepath`(typepath)
are only used when grinding & juicing after which the atom is deleted.
This means if that object is not processed these vars occupy memory &
don't do anything.
Now these values are only generated on demand by calling their
respective procs. Considering how these vars are on the obj level the
memory savings are quite significant
## Changelog
🆑
refactor: grinding & juicing have been refactored to occupy low memory.
Report bugs on github
code: improved grinding & juicing code
/🆑
## About The Pull Request
Title.
You can now spawn in/map in/exist in sandbags in a stack of fifty.
<img width="1004" height="338" alt="изображение"
src="https://github.com/user-attachments/assets/3a0bf21c-20b3-4773-b5be-52ca3aca130b"
/>
<img width="566" height="549" alt="изображение"
src="https://github.com/user-attachments/assets/403fa312-1643-4223-b3c6-57e9cb3e8d7c"
/>
## Why It's Good For The Game
This should prove useful for mappers and admins who'll require sandbags
at one or another point.
~~See I needed sandbags for a map I'm making and varediting a stack into
a fifty-stack felt wrong.~~
## Changelog
🆑 Stalkeros
add: Stack of fifty sandbags
/🆑
## About The Pull Request
The "old ratty sofa" can now be crafted! Crafted version is called the
"retro sofa." Also grouped all craftable sofas under one dropdown menu
to reduce UI clutter.
<img width="702" height="439" alt="retro sofa coded"
src="https://github.com/user-attachments/assets/18a6f462-ffaf-4c8e-a64a-8247e9222578"
/>
## Why It's Good For The Game
The brown sofa looks right at home in cozy places like maints, library,
bar, even the command quarters. We had the model as a map spawn, so I
thought it'd be nice to give players the option to craft them too. Goes
well with wood! Also, reduced UI clutter by putting all sofas into one
drop-down menu.
## 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
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
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
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
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
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
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>

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
/🆑
## 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
/🆑
## About The Pull Request
Alleviates #91603
As in it does not fix it because i have not been able to reproduce it.
It now checks for invalid values and defaults to `amount`(which is 1)
during `Initialize()` and not null so we don't have to pass the number
`1` when creating a single sheet.
A stack trace is thrown for <= 0 sheet amounts so we can debug & fix
stuff
## Changelog
🆑
code: stacks error on invalid amounts, removed manual passing of number
`1` when creating a single stack in many cases
/🆑
## About The Pull Request
Alleviates #91603
As in it does not fix it because i have not been able to reproduce it.
It now checks for invalid values and defaults to `amount`(which is 1)
during `Initialize()` and not null so we don't have to pass the number
`1` when creating a single sheet.
A stack trace is thrown for <= 0 sheet amounts so we can debug & fix
stuff
## Changelog
🆑
code: stacks error on invalid amounts, removed manual passing of number
`1` when creating a single stack in many cases
/🆑
Melee attack chain now has a list passed along with it,
`attack_modifiers`, which you can stick force modifiers to change the
resulting attack
This is basically a soft implementation of damage packets until a more
definitive pr, but one that only applies to item attack chain, and not
unarmed attacks.
This change was done to facilitate a baton refactor - batons no longer
hack together their own attack chain, and are now integrated straight
into the real attack chain. This refactor itself was done because batons
don't send any attack signals, which has been annoying in the past (for
swing combat).
🆑 Melbert
refactor: Batons have been refactored again. Baton stuns now properly
count as an attack, when before it was a nothing. Report any oddities,
particularly in regards to harmbatonning vs normal batonning.
refactor: The method of adjusting item damage mid-attack has been
refactored - some affected items include the Nullblade and knives.
Report any strange happenings with damage numbers.
refactor: A few objects have been moved to the new interaction chain -
records consoles, mawed crucible, alien weeds and space vines, hedges,
restaurant portals, and some mobs - to name a few.
fix: Spears only deal bonus damage against secure lockers, not all
closet types (including crates)
/🆑
- Damp rag is now no longer god's perfect cleaning tool. After blood,
the damp rag will collect it, and after cleaning a lot of blood, you can
no longer clean with the rag until you wash it in a sink (or with
cleaner or however you want)
- This means the rag will collect DNA in it as you clean, which gives
detectives an opportunity to investigate.
- It also means the DNA it collects will occasionally spread onto you,
meaning you will have to clean your gloves or hands.
- Cleaning vomit and such is (currently) unaffected (and does not dirty
the rag).
- Diseases are not currently transferred to the rag (but this would be
fun to add)
- Gauze now gets dirty when using it to wrap bleeding wounds. This is
just visual, though blood DNA gets transferred. It can be washed in a
sink.
- Removed gauze on sink / cloth on sink interaction.
- Can't really wash gauze with it, plus it's redundant.
- Damp rag is no longer a cup.
Damp rag is just "soap without any downsides", which is kinda lame.
I thought about going a step further and making it require you wet it
first but then it just becomes "mop but small" which is also lame.
Instead, you're required to clean it, which gives janitors / crewmembers
an alternate cleaning method:
- Soap: Small, finite, limited. Can't be replenished.
- Cleaner: Small, finite, even more limited, ranged. Can be refilled
with chemistry's help.
- Mop: Large, infinite, limited. Needs a water bucket.
- Damp Rag: Small, infinite, limited. Need to clean it after a few goes.
🆑 Melbert
balance: Damp Rags can now get dirty when using them to clean blood,
passing blood DNA along.
add: Gauze now gets dirty when apply it to actively bleeding wounds.
Doesn't spread disease or anything, just passes blood DNA. It can be
cleaned in a sink.
del: Removed cloth on sink / gauze on sink interaction to make rags.
Just use the crafting menu
/🆑