## About The Pull Request
This pull request does a little bit of cleanup that I came across awhile
ago while looking at #85081, then forgot about, then came back up when I
was looking at some additional cleanup that needed to be done.
Reorganizes the handle_wave_conclusion function such that it can take a
force arg, to force a ore vent to be completed for debug purposes.
This also fixes a minor bug where vents, when successfully completed,
will still show a warning alert that the waves were failed, and that the
vent has closed up.
Grammar fix to the examine of boulder processing machines.
Moves the can-move behavior of boulders on conveyor belts and during
regular stacking to an early return over a late return (Thank you
Goofball for pointing that out).
Artifact boulders will now default to their artifact icon_state whenever
possible.
Finally, adds an additional sanity check to boulder processing to check
for custom material length, to attempt to avoid zero-content boulders
existing and running into the afforementioned #85081
## Why It's Good For The Game
Largely applies cleanup to several aspects of the boulder processing
system, and a handful of (hopefully) performance related rearrangements
to the existing layout of boulder processing code.
I can't for sure say that it'll fix the linked issue, due to the fact
that I could not for some reason re-create the issue in local testing,
but I'm hopeful that it's some kind of nebulous sanity-related issue.
Cleans up grammar in some spots, and provides a useful debug tool for
admin purposes when you just want a vent to flip. Might be a good
justification for a ore-manager admin panel later? 🤷
## Changelog
🆑
fix: Artifact boulders should keep their alien icon even after a first
round of processing.
fix: Boulders are less likely to exist with zero materials after
processing.
fix: Boulders should be slightly less laggy on conveyor belts.
fix: Grammar of refinery/smeltery examine is corrected.
/🆑
## About The Pull Request
Fixes typos for closets.
## Why It's Good For The Game
Proper spelling so it doesn't ruin immersion and user experience.
## Changelog
🆑
spellcheck: Fixed closet typos
/🆑
## About The Pull Request
123 changed files and multiple crashes after writing broken regex, I
replaced most remains of direct spans with macros. This cleans up the
code and makes it easier to work with in general, see justification for
the original PR. I also fixed a bunch of broken and/or unclosed spans
here too.
I intentionally avoided replacing spans with multiple classes (in most
cases) and spans in the middle of strings as it would impact readability
(in my opinion at least) and could be done later if required.
## Why It's Good For The Game
Cleaner code, actually using our macros, fixes borked HTML in some
places. See original PR.
## Changelog
Nothing player-facing
## About The Pull Request
The overlays shows on directions other than south because the code
doesn't update the overlays whenever the dir is changed.
Honestly saving a tiny blip of space with a pair of 1-dir static icons
isn't worth making all this messy code over anyway, so I just scratched
all of it and gave the icon state 4 dirs (3 of which are empty but that
may change if someone decides to give the toilet
a 3/4 perspective when facing right or left.
## Why It's Good For The Game
Fixed water overlays showing on toilets facing directions other than
SOUTH (down).
## Changelog
🆑
fix: Fixed water overlays showing on toilets facing directions other
than SOUTH (down).
/🆑
## About The Pull Request
<details>
- renamed ai folder to announcer
-- announcer --
- moved vox_fem to announcer
- moved approachingTG to announcer
- separated the ambience folder into ambience and instrumental
-- ambience --
- created holy folder moved all related sounds there
- created engineering folder and moved all related sounds there
- created security folder and moved ambidet there
- created general folder and moved ambigen there
- created icemoon folder and moved all icebox-related ambience there
- created medical folder and moved all medbay-related ambi there
- created ruin folder and moves all ruins ambi there
- created beach folder and moved seag and shore there
- created lavaland folder and moved related ambi there
- created aurora_caelus folder and placed its ambi there
- created misc folder and moved the rest of the files that don't have a
specific category into it
-- instrumental --
- moved traitor folder here
- created lobby_music folder and placed our songs there (title0 not used
anywhere? - server-side modification?)
-- items --
- moved secdeath to hailer
- moved surgery to handling
-- effects --
- moved chemistry into effects
- moved hallucinations into effects
- moved health into effects
- moved magic into effects
-- vehicles --
- moved mecha into vehicles
created mobs folder
-- mobs --
- moved creatures folder into mobs
- moved voice into mobs
renamed creatures to non-humanoids
renamed voice to humanoids
-- non-humanoids--
created cyborg folder
created hiss folder
moved harmalarm.ogg to cyborg
-- humanoids --
-- misc --
moved ghostwhisper to misc
moved insane_low_laugh to misc
I give up trying to document this.
</details>
- [X] ambience
- [x] announcer
- [x] effects
- [X] instrumental
- [x] items
- [x] machines
- [x] misc
- [X] mobs
- [X] runtime
- [X] vehicles
- [ ] attributions
## Why It's Good For The Game
This folder is so disorganized that it's vomit inducing, will make it
easier to find and add new sounds, providng a minor structure to the
sound folder.
## Changelog
🆑 grungussuss
refactor: the sound folder in the source code has been reorganized,
please report any oddities with sounds playing or not playing
server: lobby music has been repathed to sound/music/lobby_music
/🆑
Fixes#86784
## About The Pull Request
Although some of the issues found were a direct result from #86692
(c698196766), there was still 40% of
length-related issues that wouldn't be covered anyways that are fixed in
this PR. I.E.:
* Name inputs without `MAX_NAME_LEN`
* Desc inputs without `MAX_DESC_LEN`
* Plaque inputs without `MAX_PLAQUE_LEN`
* Some people just screwed up the arguments so it would prefill
something like "40" in the `default` var because they didn't name their
vars.
To help me audit I added a lot of `max_length` named arguments to help
people understand it better. I think it might be kinder to have a
wrapper that handles adding `MAX_MESSAGE_LEN` in a lot of these cases
but I think there is some reason for a coder to be cognitive about input
texts? Let me know what you think. I didn't update anything
admin-related from what I can recall, let me know if anything needs to
be unlimited again.
## Why It's Good For The Game
The change to `INFINITY` notwithstanding, there were still an abundance
of issues that we needed to check up on. A lot of these are filtered on
down the line but it is clear that there needs to be something to catch
these issues. Maybe we could lint to make `max_length` a mandatory
argument? I don't know if that's necessary at all but I think that the
limit should be set by the invoker due to the wide arrangement of cases
that this proc could be used in.
This could all be a big nothingburger if the aforementioned PR is
reverted but a big chunk of cases fixed in this PR need to be fixed
regardless of that since people could put in 1024 character names for
stuff like guardians (or more now with the change). Consider this
"revert agnostic".
## Changelog
🆑
fix: A lot of instances where you could fill in 1024-character names
(normal limit is 42) have been patched out, along with too-long plaque
names, too-long descriptions, and more.
/🆑
## About The Pull Request

So, as you may know, I really like the bootleg weaponry this game has,
but after dealing with gun code for the crossbow, I wasnt inclined to
make more of it. However, when I'm playing ss13 I often have background
noise on, and one day I was listening to an age of empires game, which,
if you aren't aware, is basically a medival rts, featuring a weapon
called an "organ gun". Said organ gun is basically 8 or so muskets stuck
together firing at once. And well, given SS13 has pipeguns, also called
muskets, I couldnt pass up the pun of "pipe organ gun." And thats why
this pr exists. However, as I am noticing I have a habit of doing, I
tend to end up coding more than I ever initially planned.
So what does it add? Well, lets start with the pipe organ gun.
<img width="428" alt="image"
src="https://github.com/user-attachments/assets/0cb93fb9-6ed3-4cb1-a340-0b54832ac577">
The pipe organ gun is made from wood, pipes, iron, typical maints weapon
stuff. Where it differs is it isn't a handheld object - it's a machine
you push and pull around akin to say, the pirate cannons. It can hold up
to 8 pipegun shells, and launches them all at once when lit with
anything that ignites stuff, like a welder, match, torch, etc. It does a
lot of damage, but requires time to reload, and a smart enemy can just
lie down and ignore it. Or maybe it'll just roll 8 of the really bad
ammo types and do nothing, who knows.
https://github.com/user-attachments/assets/5ee1353b-c965-4f47-aa22-4f5cfeb04c51
Initially I planned to use the cannon code as a base, but that presented
a lot of issues, as they need to use cannonballs (which arent ammo in
the traditonal sense), along with only being single shot among other
things. So I made an entire new type of structure called Mounted guns,
which are like cannons that can use conventional ballistic ammo, and
dont have any of the restrictions, and made to be customizable. You want
a gun that takes plasma bars as ammo and launches fireballs? it can do
that. You want to have a rebar ballista, that can shoot up to 3 rods at
once, but only needs to be loaded once? It can do that too. Hell, you
could probably just make full-on gun emplacements with some code
changes. If it's a projectile, it can shoot it, and if its an object, it
can use it as ammo. A list of the current stuff you can change is below.
<img width="510" alt="image"
src="https://github.com/user-attachments/assets/107abbc1-a004-4724-9627-a3388f92cd63">
Which leads me to the second gun I added, which is more of an example of
what can be done with the mounted_gun class.
The canister gatling spawns on the flying dutchman pirate ship, with
enough ammo for five shots.
<img width="453" alt="image"
src="https://github.com/user-attachments/assets/46fdc16e-813a-4e14-b25a-9cf49d245ca6">
Five shots may not sound like much at first - but thats because each
shot is a burst of 50 individual shrapnel bullets. It's unable to break
any walls or doors except for windows, but against anything that isnt a
structure... well, as shown below, they'll have a very bad day.
https://github.com/user-attachments/assets/3519c49d-97e6-4095-99cf-ee8039adbaba
If people like these concepts, I genuinely might add that engineering
rebar ballista.
## Why It's Good For The Game
As said above, I'm a big fan of the whole improvised armory concept ss13
has, and the fact the only "big" gun featured is the trash cannon (which
is locked behind maint loot) is a shame. I felt the pipe-organ gun was a
good compromise - as stated, its just eight pipeguns stuck together,
with all the strengths (high damage output) and weaknesses (slow reload,
needs to be dragged around, cant hit people on the floor, cant damage
walls) that it lacks. As for the canister gatling, I dont forsee it
being a massive problem, as it cant breach walls or doors, so it isn't
just a better cannon.
## Changelog
🆑 WebcomicArtist
add: Added pipe-organ gun: a buildable object akin to trash cannon that
takes pipegun rounds, and shoots up to 8 off at once.
add: Added The Canister Gatling, a rapid fire but non-destructive cannon
for skeleton pirates. Also Canister shot ammo.
sound: Added sounds for the above guns.
image: Added sprites for the guns as well.
code: Added a whole "mounted_gun" class that is basically cannons but
you aren't forced to use cannonballs as ammo and load them with
gunpowder.
/🆑
## About The Pull Request
Adds a `secure` check to `ifnull(id_card)`, this allows crates without
airlock electronics or card readers to be renamed by anyone. Also
removes the 'personal' in the TGUI as it doesn't make sense anymore.
## Why It's Good For The Game
Allows any random crate to be renamed and re described. Communal
lockers, like departmental lockers, cannot be renamed because that would
be RUDE.
fix#85628
## Changelog
🆑 Goat
fix: lockers and crates with no access requirements can now be renamed
by anyone
/🆑
## About The Pull Request
A foreword, I had to refactor a few bits of shitcode my past self added
first. For context, the "gone fishing" and "actively fishing" traits
only had one source, which is the fishing challenge itself, ad there was
no way to access the challenge from outside its code, except for a few
weakrefs which were being used as sources for the aforementioned traits
(the shitcode in a nutshell). There were also a few signals that I
didn't like because they were being sent to the harder-to-access
challenge datum rather than the user. So I scrapped the traits for a
couple signals to send to the user, then added a global list as a mean
to easily access the challenge datum, and lastly changed the code to
accomodate the titled feature (and allow the challenge to recalculate
its difficulty DURING the minigame phase)
Moving on to the actual feature: I've added a component that can be
added to objects on which mobs can be buckled to or items. When equipped
in the right slots or buckled to, the object will adjust the difficulty
of current and future fishing challenges by a certain amount (more often
than not positive, but there're many exceptions) as long as the object
isn't equipped or the user is unbuckled.
I've been having some fun adding component to a ton of clothes in the
game as well as chairs. Way too many objects to enumerate, so I'll give
you the general idea:
- each carp-themed article provides a slight positive modifier (easier)
- some (not all) doctor-related garbs provide a marginal positive
modifier each (fish doctor jokes)
- floortile camo clothes have positive modifiers
- Tuxedo, laceups, gowns provide negative modifier (more difficult)
- utility garbs such as bio/bomb/rad hoods and suits are quite bad. Riot
armor too.
- boxing gloves are very, very bad. Insulated gloves and haul gauntlets
are also very bad, to a lesser degree.
- **tackle** gloves are good. (pun intended)
- wizard garbs are good, because wizards are good at casting. (also a
pun)
- magboots slightly bad. Space suits bad.
- Blindfolds and welding protection are also bad. Gas masks marginally
bad.
- Pirate attire is nice to have. (I just vibed a little on this one)
- plastic chairs are quite versatile because they can be carried around,
but the mime chair is the best, followed by ratvarian chairs.
- Fishing toolboxes, analyzers and the fish catalog are a plus, because
they can be held.
- And the fishing hat, obviously (not as great as you'd think)
Some of these may be subject to change depending on what people say.
## Why It's Good For The Game
A hundred lines of fishing challenge code made ever-so-slightly less
awful, and a way to modify fishing diffculty beside skills and bait.
## Changelog
🆑
add: Your current clothes and what chair you sit on can now influence
the difficulty of fishing minigames. Having a bare minimum of fishing
skill will let you distinguish which objects can help and which won't,
so keep an eye out. Holding fishing toolboxes, fish analyzers or fish
catalogs can also help.
/🆑
## About The Pull Request
Closes#86710, statues now add noblood themselves from a different
source
## Changelog
🆑
fix: Fixed petrification not removing NOBLOOD trait after ending
/🆑
## About The Pull Request
I am bored enough to the point where I'm diving into downstream github
issues.
Thindows have IGNORE_DENSITY but windoors and railings do not,
preventing crafting on their tiles. This ***should not*** cause any side
effects as I went through all the recipes and they still have
BLOCKS_CONSTRUCTION_DIR which should block duplicates or windows from
being constructed on the same tile, but ideally this needs another pair
of eyes.
## Why It's Good For The Game
Windoors/railings should not be preventing you from crafting sprears and
boxes on their tiles. Also parity with thindows.
## Changelog
🆑
fix: You can now craft things on tiles with windoors and railings on
them.
/🆑
## About The Pull Request
when working on #86031 , i added some checks that were already being
handled earlier in the chain, serving nothing. thanks to melbert for
catching these
## Why It's Good For The Game
removes some duplicated checks
## About The Pull Request
Bodybags (with people inside them) can be click+dragged to disposals, so
you can dump bodybags down disposals
## Why It's Good For The Game
It's a classic crime trope, so I thought it'd be funny to represent.
## Changelog
🆑 Melbert
qol: You can dump bodybags (with people inside them) down disposals
/🆑
## About The Pull Request
GODMODE has a lot of sources that toggle it. From admin-stuff to status
effects, components, actions and mobs which are supposed to be
invincible. It's better off as a trait than a flag, so we can manage
these sources.
## Why It's Good For The Game
See above.
## Changelog
🆑
admin: godmode is now a datum trait instead of a bitflag. This means the
process for toggling it is a little different now.
/🆑
## About The Pull Request
I've recently realized that bitrunning fishing spots can steal the
limited loot from outside the virtual reality, which sucks. Also Livrah
asked me why the treasure chest is anchored, to which I said it's
actually an oversight.
## Why It's Good For The Game
Fixing stuff.
## Changelog
🆑
fix: Bitrunning fishing spots no longer deplete limited loot from
outside the virtual reality.
fix: The treasure chest from the beach is no longer anchored to the
floor.
/🆑
## About The Pull Request
Lighters now have welding fuel which can be filled/extracted by hand,
giving a small but consistent source of welding fuel for non-chemists.
Welding fuel is now required for these lighters to work, they'll close
automatically once they're out of fuel.
They last for a minute, zippo lasts 2 minutes, before they need to be
refuelled. It can have other reagents put into it but it only checks for
welding fuel, so it won't work at all unless its got some.
They can be used as welding tools in minor cases, mostly fixing things
and welding doors shut, but can't do big things like deconstruction,
except the xenobio one because it's a lot hotter than the normal
lighter.
Also added a baseline support to check for heat to perform certain
welds, before heat is just this binary "has or doesnt have heat", which
made its value useless.
## Why It's Good For The Game
Adds a ghetto way of getting welding fuel, hiding reagents, and a ghetto
welding tool without being something that prisoners could break out of
prison with. They could weld the doors shut which is a little funny,
security still has proper welding tools to counter it.
It also currently is kinda lame that lighters could just be open 24/7,
unlike matches which has a lifespan of 10 seconds each or something.
## Changelog
🆑
add: Lighters now use and require welding fuel to work, but can be used
as a welding tool for tasks that don't require much heat.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Because the wings were in fact made of wax
## About The Pull Request
Storage goes to the very bottom of the interaction chain, hardcoded in
on `/atom`.
This is not preferred, obviously, but it ends up being a lot less
snowflaking overall.
Tables also go at the very bottom by extending `base_item_interaction`.
Fixes#83742Fixes#84434Fixes#83982Fixes#85516Fixes#84990Fixes#84890Closes#85036Closes#84025 (RMB places it on the table.)
Closes#86616
Other changes:
Refactored pod storage to be less jank. Patches some exploits around it.
## Why It's Good For The Game
Should make a lot more interactions a lot more reliable... hopefully
## Changelog
🆑 Melbert
refactor: Storage and Tables are now a lower priority action, meaning
some uses of items on storage should work... better, now. Here's hoping
at least, report any oddities.
refactor: Note: For an overwhelming majority of items, **combat mode**
will attempt to attack/insert into the target, while **non-combat-mode**
will attempt to use on a target. This means screwdrivering or emagging a
MODsuit must be done on non-combat-mode, as combat mode will simply put
the screwdriver or emag into its storage. Same applies to tables, though
when in doubt, RMB may help (for things which are also weapons, like
mops).
refactor: Refactored escape pod storage, now they actually properly show
as unlocked on red alert and above.
/🆑
## About The Pull Request
Reworks most of the Void Heretic kit.
All Void spells now apply a stacking debuff that makes you gradually
colder.
Void Blast has been replaced with a new spell "Void Conduit" and a new
Side knowledge spell, "Void Prison" has been introduced.
Waltz At The End Of Time has been completely overhauled.
Lastly Void Blade has been resprited along with the overlay of Void
Chill, check any of the linked videos to see the new look.
All new sprites have been kindly made by OrcaCora.
## Why It's Good For The Game
Void path is *Supposedly* themed around the cold of space but doesn't
have any tools to live up to the fantasy of being an harbringer of the
Void whose main goal is to freeze the station to an icicle.
Then there's also the issue of Void being utterly underwhelming compared
to his neighbors, Cold is way too easy to treat as a status effect, so
much so, a simple cup of coffee can utterly shutdown the void storm,
which is just unacceptable.
# **Changes**
- **Void Chill**: Is now a stacking debuff, each stack slows movement
speed by a percentage while lowering body temperature, upon reaching the
cap, which is 5 stacks, the victim cannot heat up anymore, all void
Spells apply 1 stack of the debuff, with the exception of the grasp
applying 5 (2 for the mark and 3 for the detonation) and the blade
upgrade applying 2.
**Reasoning**: Void chill currently suffers from being completely
shutdown by sipping tea, coffee or having the COLD_RESIST trait,with
this change you can still negate the damage and the slowdown you get
from being cold but not the slowdown from the debuff itself.
- **Aristocrat's Way**: Now grants no slip on ice and water tiles on
cold or depressurized turfs
**Reasoning:** Since the rework revolves around making Void heretic more
involved in freezing the station, they should be able to move in their
domain without getting punished for it.
- **Void Cloak:** Can now be toggled on and off to make the cloak
visible or invisible; when the cloak is visible it grants low pressure
immunity trait.
**Reasoning:** Not having pressure resistance as a Void Heretic just
sucks, as you are clearly intended to somewhat go into space at some
point; giving it to the cloak is a good compromise since you sacrifice
better protection (***the armor values of the cloak are pitiful***) for
utility.
- **Replaces "Void Blast" with a new spell, "Void Conduit"**.
**Void Conduit:** Opens a gate to the Void; it releases an intermittent
pulse that damages windows and airlocks and applies a stack of void
chill to non heretics, Heretics are granted the low pressure resistance
trait.
**Reasoning**: I like the idea behind Void Blast; unfortunately, the
spell has limited uses if an area isn't already spaced, which is hard to
do considering the current kit of Void Heretic doesn't provide anything
to help in that regard.
I wanted to give Void Heretic a tool to turn any area of their choosing
into their ideal habitat. Not amazing for quick assassinations, good if
you are anticipating a fight or want to simply expand your domain, the
added Trait might seem redundant, but let's not forget that the void
cloak is still a side knowledge, I don't want newbie heretics to space
an area and accidentally killing themselves because of it.
Video Demonstration: https://www.youtube.com/watch?v=nhPdj1hIgSI
- **New side knowledge: "Void Prison."**
**Void Prison:** It makes the target invulnerable and unable to do
anything for 10 seconds , when the spell ends, it applies a few stacks
of void chill, cannot be self-cast.
It occupies the same slot of Blood Siphon (inbetween Raw Ritual and Void
Phase.)
Video Demonstration: https://www.youtube.com/watch?v=nKZd8aEcZFw
**Reasoning**: Void is technically meant to be an assassination path and
not really apt at tackling multiple opponents, this spell might come
into clutch if you are outnumbered, or simply want some breathing room
from your pursuers.
- **Void Jaunt and Void Pull**
Cooldown respectively reduced to 25 and 30 seconds, down from 30 and 40.
**Reasoning:** I felt that the cooldown on these was a bit too high
overall; as it stands, Void Phase cooldown is twice as long as Ashen
passage, one of the best and arguably most sidepathed spells in the
game.
Granted phase is faster and has more range but I don't think it
justifies its cooldown being this long.
Void pull could also use slightly less cooldown, being the very last
spell you unlock and offering a simple melee knockdown.
- **Seeking Blade:** Now applies 2 stacks of void chill per hit.
**Reasoning:** Seeking blade is a bit underwhelming for being the final
blade upgrade, teleporting to a target you just stunned at melee range
is incredibly niche, now that Void chill is a stacking debuff we can
probably just slap it on the blade itself.
- **Waltz At The End Of Time:** The Heretic becomes weightless and able
to levitate around, (carp movement essentialy).
The heavy storm is no longer bound to the room the heretic is in but is
now an aura around them, this does a few things.
1) Releases a pulse that depressurizes areas, shatters windows, airlocks
and firelocks, and applies a stack of void chill to non heretics, the
passive burn and oxy damage effect has been removed.
2) Grants to the Heretic projectile deflection.
**Reasoning:** Void Has the reputation of having the weakest ascension
in the game, which it's hard to disagree on considering you can
completely neutralize the effects of the storm by simply sipping tea and
how generally little it does overall.
It's also kind of strange that you have this massive Eldritch storm
ravaging the station and for it to have no effects on its atmosphere,
infrastructure, or projectiles whatsoever.
Video Demonstration: https://www.youtube.com/watch?v=1_blr20-hgA
## Changelog
🆑
add: New Heretic Side Knowledge, Void Prison.
add: New Void Spell Void Conduit has now replaced Void Blast.
balance: Void Chill is now a stacking debuff, upon reaching the cap,
makes the target unable to heat up.
balance: Aristocrat's way now grants immunity to ice and water slips on
cold turfs.
balance: Void Cloak now grants low pressure resistance when visible.
balance: Void Phase and Void pull have received a minor CD reduction.
balance: Seeking Blade now applies a couple of stacks of void chill.
balance: Void Heretic Ascension has been overhauled, it's now protects
the heretic from projectiles, destroys windows and airlocks and applies
void chills to non heretics.
image: Void Blade and Void Chill have received some new sprites.
/🆑
---------
Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
## About The Pull Request
Forgot to set the default value for `uses_left` to infinity when I added
the treasure chest to the beach (it still has 18 uses).
## Why It's Good For The Game
This will fix#86547
## Changelog
🆑
fix: Fixes mystery boxes breaking after a single use.
/🆑
## About The Pull Request
So previously I put out a pr that made beds alternate their
`buckle_lying` angle based on their current direction, such that you
would always use the headrest as a headrest.
However, the medical/roller beds have their sprites flipped, and so
these would instead always use the headrest as a footrest.
This wasn't obvious before as both regular and medical/roller beds would
use the headrest on half their directions, just different halves.
While we could have fixed this by flipping the sprites on the
medical/roller beds, I think it's better to flip their buckling angles
instead so that the medical/roller beds maintain how they look while
being pulled, so my first thought was to override the
`update_buckle_vars(...)` proc with the other directions.
However, during testing I realized that these flipped sprites would also
affect the `bed_tuckable` element interactions with the code, used to
work out how to place certain items onto beds.
So instead of just overriding the proc, we add a new var
`left_headrest_dirs` that defines the directions for which the headrest
faces left, change its value for medical/roller beds, and use this for
the `update_buckle_vars(...)` proc and `bed_tuckle` element.
This fixes our issues.
As a side-effect, this also fixes an issue where `bed_tuckable` would
consider north-facing regular beds as if their headrest was on the right
rather than on the left.
<details>
<summary>Images</summary>




</details>
## Why It's Good For The Game
Fixes part of #86521.
Good to not use the headrest as a footrest all the time.
## Changelog
🆑
fix: Fixed being buckled to medical/roller beds making you always use
the headrest as a footrest.
fix: Fixed bedsheets/diskies/plushies/etc put on medical/roller beds
facing the wrong direction.
fix: Fixed bedsheets/diskies/plushies/etc put on any bed facing the
wrong direction on some beds.
/🆑
## About The Pull Request
Fixes several errors to spelling, grammar, and punctuation.
## Why It's Good For The Game
Improves readability and user experience.
## Changelog
🆑
spellcheck: fixed a few typos
/🆑
## About The Pull Request
If you remove last case, board will crash. Now will not.
Also i limited number of cases for 8 cases
## Why It's Good For The Game
Fixes
## Changelog
🆑 FeudeyTF
fix: fixed removing last case
/🆑
## About The Pull Request
redoes #85962 which had been undone by the wallening revert
## Why It's Good For The Game
fixes fences being pitch black
## Changelog
🆑
fix: wooden fences will no longer appear pitch black in lower levels of
icebox
/🆑
## About The Pull Request
If you switch case, the ropes will stay, untill you reenter in the
interface. Now it will change to new case's ropes ☑
If you scroll down with linked evidences, ropes will stay on the screen.
Now it will move with evidences ☑
If you try put big content in paper, evidence wil be VERY big. Now max
width is 300px ☑
Title will wrap, if it too big. Content of evidence too. ☑
Also i again fixed placement problem, because of wallening revert ☑
## Why It's Good For The Game
Fixes
## Changelog
🆑 FeudeyTF
fix: fixed an UI problems of evidence board
/🆑
## About The Pull Request
this is a revival of #82635 . i got permission from potato to reopen
this, he did almost all the work. i only just solved the conflicts and
fixed all the bugs that were preventing the original from being merged
(but it should be TMed first)
## Why It's Good For The Game
slightly improves the performance of basic mob AI
## Changelog
🆑
LemonInTheDark
refactor: able_to_run and incapacitated have been refactored to be event
based
/🆑
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: ZephyrTFA <matthew@tfaluc.com>
## About The Pull Request
Previously, buckling yourself to a bed would always tilt you by 90
degrees, meaning you would always have your head to the east regardless
of the actual position of the pillow.
We fix this by updating `buckle_lying` to 270 degrees when in the
`NORTH` or `EAST` positions.
Then, I noticed being buckled to a bed sets your dir to that of the bed,
which just unintuitively rotates you. _Especially_ so given there's only
two visual directions, but building a bed may grant it any of the four
directions.
We resolve this by adding a `buckle_dir` parallel to `buckle_lying`,
which allows objects to override what dir we should be set to face when
buckling. This defaults to `BUCKLE_MATCH_DIR`, being the current
behaviour of matching the atom dir.
This fixes our issues.
<details>
<summary>Images</summary>




</details>
## Why It's Good For The Game
Looks a bit awkward to be forced to use your pillow like a footrest if
your bed's a certain direction.
Also, awkward to have your dir upon being buckled be dependent on the
direction it was built in, when this is not intuitive at all.
Fixes#84017.
## Changelog
🆑
fix: Buckling yourself to a bed or stasis bed will now make you actually
use the headrest/pillow and face up.
/🆑
## About The Pull Request
Pride mirrors haven't been dropping people into chasms for the past 10
months and nobody noticed. Now they drop you if you actually changed
something about yourself instead of doing so even if you just opened and
closed the menu.
Additionally, menus now use tooltips for their radials as they lack
sprites for those.
## Why It's Good For The Game
Pride mirror is a free species swap right now without requiring a
jacob's ladder/jaunter/whatever funny shenanigans you can think of.
Dumping people for just opening the menu is a bit dumb, and tooltips
allow you to use magic mirrors without having to look into the bottom
left corner of your screen all the time.
## Changelog
🆑
qol: Mirrors now have text tooltips for their radial menus
fix: Fixed pride mirrors not dumping you into space after use
/🆑
## About The Pull Request
Due to the reverse construction, the detective board was placed
incorrectly:

Now its correct.
Also if you try attach not paper or photo, you will not recieve messages
## Why It's Good For The Game
Fixes
## Changelog
🆑 FeudeyTF
fix: fixed detective board placing
/🆑
## About The Pull Request
Originally wanted to include those with syndicate-corp themed gear for
nukies, but... I think this might be an useful thing for mappers in
general, and with the wallening hitting, I reckon they will be going
around stuff a lot, so!
most of them pictured!

## Why It's Good For The Game
Adds representation of several lesser known corporations and a nice
touch of flavour to add to places for mappers!
## Changelog
🆑
add: Added crates of the following varieties; Interdyne, Interdyne
freezer, Tiger Co-Op, S.E.L.F. MI13, A.R.C., Cybersun (4 colour
variants), Waffle Corp, Donk, Gorlex, Gorlex weapons, DeForest, Nakamure
Engineeing, Robust Industries
/🆑
<!-- 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
Adds Punching Mitts, which grant the wearer Hunter Boxing. Hunter Boxing
works similar to boxing, but rather than just targeting those who are
boxing ready, it also allows you to apply your boxing skills to various
wildlife and creatures that deserve to be wiped off the face of the
earth in a violent manner.
While the gloves function as a lethal pair of boxing gloves, you still
cannot apply the new effects to normal humans. Even against other
boxers, the gloves operate as normal save that you are dealing Brute
damage instead of Stamina. This is NOT Evil Boxing.
Against wildlife, you gain an extra amount of damage and a much faster
punch speed. You also rebuke the targets that you crit, rather than
staggering/knockout. You also do three times the damage against wildlife
when you crit. You also..yell out your attacks. Loudly.
You can get these gloves from tendril chests and from demonic portals. I
replaced the Nuka Cola from the portals with these gloves. You're
welcome.
Megafauna can now be targeted by martial arts. This is really isn't a
major concern, since even if our martial artist had, say, Gloves of the
North Star, the highest damaging martial arts most people could access,
Sleeping Carp, does pathetically small amounts of damage to megafauna.
And you're in melee. And colossi eat you. This shouldn't be a problem.

## Why It's Good For The Game
I just really, really, REALLY wanted to punch the absolute SHIT out of
Bubblegum while screaming the whole time, and by god I should be allowed
to do that because that's awesome as fuck.
Adds a very practical but very rare method of applying your athletics to
some very self-contained content. I was tempted to have this
increase/become stronger with mining skill instead of athletics, but I
actually thought it would be funny if miners were taking the time to
work out before heading down to throttle drakes.
## 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. -->
🆑
add: Punching mitts! Punch wildlife to death and scream the whole time.
ADVENTURE!
balance: Megafauna can be affected by martial arts.
/🆑
<!-- 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. -->
---------
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
This adds an sound effect for windows reforming after being destroyed by
the `temporary_glass_shatterer` component.
https://github.com/user-attachments/assets/bcaeeaf9-9884-45c5-9e9b-b8ad419cb834
Please let me know if the sound is too sharp. We're literally dealing
with 2 different "glass shattering" sounds played in reverse, so the
chances that this is grating for anyone with a better headset than mine
is high.
## Why It's Good For The Game
Cool sound effects for cool visual effects. This process being silent
felt off.
## Changelog
🆑 Rhials
sound: Windows blown out by a Voidwalker blade now have a cool sound
that plays as they reform.
/🆑
## About The Pull Request
fixes wooden fences appearing pitch black on lower levels of icebox.
also fixes layering issues with them appearing on top of players
## Why It's Good For The Game
Fixes black fences and layering issues
## Changelog
🆑
fix: fences will no longer appear pitch black and they will layer
properly
/🆑
## About The Pull Request
Adds three new deathmatch maps.
### Important nonDM Balance Changes
Cult daggers fit on belts.
Heretic blades fit on belts.
Veil shifters fit on belts.
I really don't know why these didn't, it makes inventory management
rather annoying at times. It also screwed my loadouts over.
Cursed Blades fit on cult robes. They're cult equipment after all.
Bronze suits fit toy watches!!
### Ragnarok

A vicious battle in the jungle, between the three major religious sects:
Prove your deity's might! And try not to upset any primates. Or fall
into the chasm.
Going clockwise:
**Cultist Invoker**: Wielding a mirror shield, shielded robes, a sword,
and some bolas, this cultist has a 'well-balanced' set of equipment to
annihilate their opponents.
**Cultist Artificer**: This set harnesses the blood magicks - with
spells of stunning, blood rites, and ranged hallucinations, with a
wicked Cursed Blade and Veil Shifter as implement, and Berserker Robes
to finish the look.
**Holy Crusader**: Nullifying most, but certainly not all, of the
fearsome arsenal of the opponents with the null rod at their belt, the
Crusader packs a dangerous claymore and armor to protect them from the
demons.
**Rat'var Apostate**: Hey, what's that guy doing there in the dark? They
don't have any magic because their god is Fucking Dead, but they're
still going to show up for a token effort. Good luck!
**Heretic Scribe**: This mad soul wields an antique rifle and an
assortment of other dangerous relics, with a set of magic geared towards
staying far apart, picking enemies off from range and evading their
attacks for the final blow.
**Heretic Warrior**: With the deadliest of Mansus Magic at their
disposal, this warrior is only limited by their ability to juggle all
their spells at once - don't get overwhelmed sorting your spells while
an Invoker runs at you with a sword and shield and makes you cry
yourself to death.
### Lattice Battles

A fresh change of pace: In this pacifist map, the only way to kill your
opponents is to snip the lattices and catwalks from under them. Watch
your step.
### Species Warfare

Prove the might of your static by duking it out with every other kind of
crewmember out there. Features a messy dorms, a ticking-timebomb atmos,
a rather sterile robotics, a slippery closet, a fluffy medbay, and an
energetic bridge.
Mirror Shields now shatter on throw (which stuns and hurts)
## Code changes
Added two new traits, TRAIT_ACT_AS_CULTIST and TRAIT_ACT_AS_HERETIC.
Added these as an OR to respective IS_X checks. Added new GET_X checks
for them, which do not check the trait.
Tidied up the file those are in.
Added belt_contents() to outfits, but it dosen't work....
Added a heretic rust sister-type to rust walls and floors.
Fixed a typo in cult ascension.
## Why It's Good For The Game
These maps all aim to do something interesting and unique with DM rather
than the usual deathfest and hugging of random crates.
Ragnarok allows players to practice unusual and rare magical mechanics,
similar to Ragin' Mages.
Lattice Battles adds SPLEEF to the game, which I think is awesome.
Species Warfare is, I think, fun and funny. Each 'department' has
incredibly chaotic and thematically-appropiate content for the species
its meant to symbolize, and I look forward to the chaos that every round
in it is inevitably going to have.
> Mirror Shields now shatter on throw.
I'm surprised they didn't! Since they aren't used anywhere I can do what
I want with them.
## Code changes
> Added two new traits, TRAIT_ACT_AS_CULTIST and TRAIT_ACT_AS_HERETIC.
Added these as an OR to respective IS_X checks. Added new GET_X checks
for them, which do not check the trait.
I think this is a clever solution to the problem of 'what if I want
someone who acts as the antag, but isn't?' Some procs do need the datum
to modify it, so there's GET_X, but those aren't common and don't seem
likely to be an issue.
> Added belt_contents() to outfits, but it dosen't work....
Help would be very much appreciated, I don't know what I'm doing wrong
here. It's only used for the heretic scribe's unfathomable curio.
Some post-PR cleanup coming up.
## Changelog
🆑
add: Added three new DM maps - Ragnarok, Lattice Battles, Species
Showdown.
/🆑
## About The Pull Request
Currently to check for Silicon access, we do:
``if is silicon or is admin ghost or has unlimited silicon privileges or
has machine remote in hand``
What has unlimited silicon privileges? Bots, Drones, and admin ghosts.
To check for AI access, it just checks for AI instead of silicon, and
doesnt check for unlimited silicon privileges.
This was kinda silly, so I thought I should make this a little easier to
understand.
Now all silicon/ai traits come from ``AI_ACCESS_TRAIT`` or
``SILICON_ACCESS_TRAIT``. I made a single exception to keep Admin ghost,
since now instead of being a var on the client, we moved it to using the
same trait but giving it to the client instead, but since we have to
keep parity with previous functionality (admins can spawn in and not
have this on, it only works while as a ghost), I kept previous checks as
well.
No more type checks, removes a silly var on the mob level and another on
the client.
Now while I was doing this, I found a lot of tgui's ``ui_act`` still
uses ``usr`` and the wrong args, so I fixed those wherever I saw them,
and used a mass replace for the args.
Other changes:
- machinery's ``ui_act`` from
https://github.com/tgstation/tgstation/pull/81250 had ``isAI`` replaced
with ``HAS_AI_ACCESS``, this has been reverted. Machine wands and admin
ghosts no longer get kicked off things not on cameras. This was my
fault, I overlooked this when adding Human AI.
- Human AI's wand gives AI control as long as it's in your hand, you can
swap to your offhand. I hope this doesn't end up going horribly,
otherwise I'll revert this part. It should let human AIs not have their
UI closed on them when swapping to eat food or use their door wand or
whatnot.
- Bots previously had special checks to scan reagents and be
unobservant, I replaced this with giving them the trait. I also fixed an
instance of unobservant not being used, so now statues don't affect the
basic creature, whatever that is.
## Why It's Good For The Game
This is an easier to understand way of handling silicon access and makes
these mobs more consistent between eachother.
Other than what I've mentioned above, this should have no impact on
gameplay itself.
## Changelog
🆑
fix: Statues don't count as eyes to creatures.
fix: Human AIs and Admin ghosts no longer get kicked off of machines
that aren't on cameranets.
/🆑
## About The Pull Request
I've refactored the FISH_SAFE_STORAGE trait into an element, mainly
because there were a few problems with how it worked: It wasn't stopping
hunger from raising, ditto with the breeding wait, and it offered no
healing whatsoever, which I find kind of a bummer. The new element will
keep the fish from getting any hungrier or ready to reproduce and will
heal them up to 65% of their base health.
Also, I've added a new bluespace fish case as a techweb design, found
along with other stuff in the advanced fishing node, though if you want
I can move it to a bluespace node. This should make it possible to
reasonably store and carry around larger fish.
Examining a fish will no longer give out readings on weight and size if
you haven't at least attempted fishing once (you can get to novice level
in less than a minute). While examining a fish with apprentice level or
higher will also give readings on the general conditions of the fish (is
it starving? drowning? has it lost a considerable chunk of health?). The
fishing skillchip also gives you these traits.
I've also converted two fish variables into traits, because fish have
waaaay too many variables. and gave some topdown shading to the
pre-existing fishbox sprite.
## Why It's Good For The Game
## Changelog
🆑
add: Added a bluespace fish case to the advanced fishing node.
balance: Fish cases will keep a fish from getting hungrier or ready to
reproduce, while also healing it up to 65% health.
balance: Examining a fish with zero fishing skill whatsoever won't give
a reading on its size and weight. Conversely, examining one with the
skill leveled two times will give general information on if it's
starving, sick, hungry, or dead.
/🆑
## About The Pull Request
Turns
`ON_WALL_LAYER`
into
`FLAT_ON_WALL_LAYER`
`ON_WALL_LAYER`
`HIGH_ON_WALL_LAYER`
Where `FLAT_ON_WALL_LAYER` is meant for lower-priority wall mounts like
signs and posters
`ON_WALL_LAYER` is default
and `HIGH_ON_WALL_LAYER` is for stuff that "hang over" the wall
Also makes the incident display actually wall mounted
## Why It's Good For The Game
I noticed this while doing mapping and I thought it was a really cool
effect

Unfortunately this effect was a coinflip because all wall mounts were on
the same layer. Sometimes it'd look like this

So this allows us to do this kinda stuff consistently.
Also has the added effect of letting us "de-prioritize" stuff like
posters, so we can hang stuff *over* posters and signs, which could be
useful.
## Changelog
🆑 Melbert
qol: Some wall mounts will now consistently layer over others (light
switches and cameras, notably, should always layer above other mounts
like signs and status displays)
/🆑
## About The Pull Request
Fixes#85679.
## Why It's Good For The Game
Fixes#85679.
## Changelog
🆑
fix: Fixed the shower water visually not coming out behind the
showerhead.
/🆑
## About The Pull Request
Requires #85491 to be merged first, as otherwise leaning on directional
windows looks incredibly goofy
You can now lean on both fulltile and directional windows, and its
possible to easily extend this functionality to other objects. Dunno if
this even deserves to be called a refactor so not marking it in any way.
## Why It's Good For The Game
Just makes sense that you'd be able to do it
## Changelog
🆑
add: You can now lean on windows the same way you can lean on walls
fix: You no longer stop leaning on walls after clicking on anything
/🆑