## About The Pull Request
Ever since Clarkes could pick up boulders they've been broken if you
ever collected one. The UI would break and all your precious minerals
would be trapped inside the Clarke, only being obtainable if you broke
the Clarke itself.
This also updates the Clarke Storage to differentiate by ore name rather
than icon, as otherwise the lower quality boulders would be mixed with
normal boulders with no way to differentiate them in the UI.
## Why It's Good For The Game
Fixes https://github.com/tgstation/tgstation/issues/84364
Before:
<details>
<summary>Before</summary>
https://github.com/user-attachments/assets/f90daf35-733a-42bd-8af5-7e6712f09fba
</details>
<details>
<summary>After</summary>
https://github.com/user-attachments/assets/4510803c-6dee-403e-a051-966a8a66c17c
</details>
## Changelog
🆑 TwistedSilicon
fix: Clarkes will no longer become unable to dump ores upon picking a
boulder up. Mine away.
/🆑
Hello everybuddy, your number three rated coder-failure here to clean up
some mess. This PR accomplishes some of the more major structural clean
up changes I wanted to do with /obj/ folder, but decided to wait on
until wallening gets merged, and so, time has come. Several things to
still be done, although I know these cleaning PR's are quite a load, so
will wait for this one to get done with first.
## Why It's Good For The Game
Saner spriters, better sprites, less annoyance. Also deleted a whole
load of redundancy this time around, a lot of sprites which existed
simultaniously in two places now got exit their quantum superposition.
<!-- 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
Mob remains alive when it is metalgenned into glass and then shattered
currently, here's a preview of what it causes

Reported on discord
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and its effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
fix: Soulscythe now deletes the soul mob when destroyed
/🆑
<!-- 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: Jack Edge <yellowbounder@gmail.com>
## About The Pull Request
This change allows AI Sillicon players to use the BRM - 6 months ago
this PR did a refactor https://github.com/tgstation/tgstation/pull/81358
- Whilst it added the ability for Cyborgs to interact with it - Nothing
was added for AI. This PR just corrects that and changes nothing else.

**The addition of the below matching attack_robot with identical
functions depending on left or right click**
`/obj/machinery/brm/attack_ai(mob/user)`
`/obj/machinery/brm/attack_ai_secondary(mob/user, list/modifiers)`
## Why It's Good For The Game
On many low pop scenarios with AI players, It allows them to begin
generating basic resources (Iron and Glass) for the station. Gives AI
players another task they can do to assist the crew and adds to the
value of an AI even in low pop.
I believe the original PR from six months ago meant to include AI but it
was an oversight, this PR corrects that oversight.
## Changelog
🆑
fix: AI Players can now operate the BRM (Boulder Retrival Matrix)
/🆑
## About The Pull Request
Turns out HANDS and FEET coverage doesn't actually apply armor to the
body, at all, making it entirely useless. Despite this, a lot of
clothing still does it! So I added ARMS and LEGS flags to gloves/shoes
that do it respectively and wrote a unit test for it that will yell out
a list of all items missing coverage while having non acid/bio/fire
armor (three snowflake types)
as discusses with melbert on discord
## Why It's Good For The Game
...features working as intended?
## Changelog
🆑
balance: Multiple gloves/shoes that had armor values but failed to apply
them got fixed
/🆑
## What's going on here
Kept you waitin huh!
This pr resprites most all walls, windows and other "wall adjacent"
things to a 3/4th perspective, technical term is "tall" walls (we are
very smart).
If you're trying to understand the technical details here, much of the
"rendering tech" is built off the idea of split-vis. Basically, split a
sprite up and render it on adjacent turfs, to prevent seeing "through"
walls/doors, and to support seeing "edges" without actually seeing the
atom itself.
Most of the rest of it is pipelining done to accommodate how icons are
cut.
## Path To Merge
Almost* all sprites and code is done at this point.
There are some things missing both on and off the bounty list, but that
will be the case forever unless we force upstream (you guys) to stop
adding new shit that doesn't fit the style.
I plan on accepting and integrating prs to the current working repo
<https://github.com/wall-nerds/wallening> up until a merge, to make
contribution simpler and allow things like bounties to close out more
easily
This pr is quite bulky, even stripping away map changes it's maybe 7000
LOC (We have a few maps that were modified with UpdatePaths, I am also
tentatively pring our test map, for future use.)
This may inhibit proper review, although that is part of why I am
willing to make it despite my perfectionism. Apologies in advance.
Due to the perspective shift, a lot of mapping work is going to need to
be done at some point. This comes in varying levels of priority. Many
wallmounts are offset by hand, some are stuck in the wall/basically
cannot be placed on the east/west/north edges of walls (posters), some
just don't look great good in their current position.
Tests are currently a minor bit yorked, I thought it was more important
to get this up then to clean them fully.
## What does it look like?






## Credits
<details>
<summary>Historical Mumbojumbo</summary>
I am gonna do my best to document how this project came to be. I am
operating off third party info and half remembered details, so if I'm
wrong please yell at me.
This project started sometime in late 2020, as a product of Rohesie
trying to integrate and make easier work from Mojave Sun (A recently
defunct fallout server) with /tg/.
Mojave Sun (Apparently this was LITERALLY JUST infrared baron, that man
is insane) was working with tall walls, IE walls that are 48px tall
instead of the normal 32. This was I THINK done based off a technical
prototype from aao7 proving A it was possible and B it didn't look like
dogwater.
This alongside oranges begging the art team for 3/4th walls (he meant
TGMC style) lead to Rohesie bringing on contributors from general /tg/,
including actionninja who would eventually take over as technical lead
and Kryson, who would define /tg/'s version of the artstyle. Much of the
formative aspects of this project are their work.
The project was coming along pretty well for a few months, but ran into
serious technical issues with `SIDE_MAP`, a byond map_format that allows
for simpler 3/4th rendering.
Due to BULLSHIT I will not detail here, the map format caused issues
both at random with flickering and heavily with multiz.
Concurrent with this, action stepped down after hacking out the
rendering tech and starting work on an icon cutter that would allow for
simpler icon generation, leaving ninjanomnom to manage the project.
Some time passed, and the project stalled out due to the technical
issues. Eventually I built a test case for the issues we had with
`SIDE_MAP` and convinced lummox jr (byond's developer) to explain how
the fuckin thing actually worked. This understanding made the project
theoretically possible, but did not resolve the problems with multi-z.
Resolving those required a full rework of how rendering like, worked. I
(alongside tattle) took over project development from ninjanomnom at
this time, and started work on Plane Cube (#69115), which when finished
would finally make the project technically feasible.
The time between then and now has been slow, progressive work. Many many
artists and technical folks have dumped their time into this (as you can
see from the credits). I will get into this more below but I would like
to explicitly thank (in no particular order) tattle, draco, arcanemusic,
actionninja, imaginos, viro and kylerace for keeping the project alive
in this time period. I would have curled up into a ball and died if I
had to do this all myself, your help has been indispensable.
</details>
<details>
<summary>Detailed Credits</summary>
Deep apologies if I have forgotten someone (I am sure I have, if someone
is you please contact me). I've done my best to collate from the git
log/my memory.
Thanks to (In no particular order):
Raccoff: Being funny to bully, creating threshold decals for airlocks
aa07: (I think) inspiring the project
ActionNinja: Laying the technical rock we build off, supporting me
despite byond trying to kill him, building the icon cutter that makes
this possible
ArcaneMusic: Artistic and technical work spanning from the project's
start to literally today, being a constant of motivation and positivity.
I can't list all the stuff he's done
Armhulen: Key rendering work (he's the reason thindows render right), an
upbeat personality and a kick in the ass. Love you arm
Azlan: Damn cool sprites, consistently
Ben10Omintrix: You know ben showed up just to make basic mobs work, he's
just fuckin like that man
BigBimmer: A large amount of bounty work, alongside just like, throwing
shit around. An absolute joy to work with
Capsandi: Plaques, blastdoors, artistic work early on
CapybaraExtravagante: Rendering work on wall frames
Draco: SO MUCH STUFF. Much of the spritework done over the past two
years is his, constantly engaged and will take on anything. I would have
given up if not for you
Floyd: Early rendering work, so early I don't even know the details.
Enjoy freedom brother
Imaginos16: A guiding hand through the middle years, handled much of the
sprite review and contribution for a good bit there
Iamgoofball: A dedication to detail and aesthetic goals, spends a lot of
effort dissecting feedback with a focus on making things as good as they
can be at the jump
Infrared: Part of the impetus for the project, made all the xenomorph
stuff in the MS style
Jacquerel: A bunch of little upkeep/technical things, has done so much
sprite gruntwork (WHY ARE THERE SO MANY PAINTING TYPES)
Justice12354: Solved a bunch of error sprites (and worked out how to
actually make prs to the project) Thanks bro!
Kryson: Built the artstyle of the project, carrying on for years even
when it was technically dying, only stopping to casually beat cancer. So
much of our style and art is Kryson
KylerAce: Handled annoying technical stuff for me, built window frame
logic and fully got rid of grilles.
LemonInTheDark: Rendering dirtywork, project management and just so much
fucking time in dreammaker editing sprites
Meyhazah: Table buttons, brass windows and alll the old style doors
Mothblocks: Has provided constant support, gave me a deadline and
motivation, erased worries about "it not being done", gave just SO much
money to fill in the critical holes in sprites. Thanks moth
MTandi: Contributed art despite his own blackjack and hookers club
opening right down the road, I'm sorry I rolled over some of your
sprites man I wish we had finished earlier
Ninjanomnomnom: Consulted on gags issues, kept things alive through some
truly shit times
oranges: This is his fault
Rohesie: Organized the effort, did much of the initial like, proof of
concept stuff. I hope you're doin well whatever you're up to.
san7890: Consulting on mapper UX/design problems, being my pet mapper
Senefi: Offsetting items with a focus on detail/the more unused
canidates
SimplyLogan: Detailed map work and mapper feedback, personally very kind
even if we end up talking past each other sometimes. Thank you!
SpaceSmithers: Just like, random mapping support out of nowhere, and
bein a straight up cool dude
Tattle: A bunch of misc project management stuff, organizing the
discord, managing the test server, dealing with all the mapping bullshit
for me, being my backup in case of bus. I know you think you didn't do
much but your presence and work have been a great help
Thunder12345: Came out of nowhere and just so much of the random
bounties, I'm kind of upset about how much we paid him
Time-Green: I hooked him in by fucking with stuff he made and now he's
just doin shit, thanks for helping out man!
Twaticus: Provided artistic feedback and authority for my poor feeble
coder brain, believed in the project for YEARS, was a constant source of
❤️ and affirmation
unit0016: I have no god damn idea who she is, popped out of nowhere on
the github one day and dealt with a bunch of annoying
rendering/refactoring. Godspeed random furry thank you for all your
effort and issue reports
Viro: A bunch of detailed spriting moving towards 3/4ths, both on and
off the wallening fork. If anyone believed this project would be done,
it was viro
Wallem: Artistic review and consultation, was my go-to guy for a long
time when the other two spritetainers were inactive
Waltermeldon: Cracked out a bunch of rendering work, he's the reason
windows look like not dogwater. Alongside floyd and action spent a TON
of time speaking to lummox/unearthing how byond rendering worked trying
to make this thing happen
ZephyrTFA: Added directional airlock helpers, dealt with a big fuckin
bugaboo that was living in my brain like it was nothing. Love you
brother
And finally:
The Mojave Sun development team. They provided a testbed for the idea,
committed hundreds and hundreds of hours to the artstyle, and were a
large reason we caught issues early enough to meaningfully deal with
them. Your work is a testament to what longterm effort and deep detailed
care produce. I hope you're doing well whatever you're up to. Go out
with a bang!
</details>
## Changelog
🆑 Raccoff, aa07, ActionNinja, ArcaneMusic, Armhulen, Azlan,
Ben10Omintrix, BigBimmer, Capsandi, CapybaraExtravagante, Draco, Floyd,
Iamgoofball, Imaginos16, Infrared, Jacquerel, Justice12354, Kryson,
KylerAce, LemonInTheDark, Meyhazah, Mothblocks, MTandi, Ninjanomnom,
oranges, Rohesie, Runi-c, san7890, Senefi, SimplyLogan, SomeAngryMiner,
SpaceSmithers, Tattle, Thunder12345, Time-Green, Twaticus, unit0016,
Viro, Waltermeldon, ZephyrTFA with thanks to the Mojave Sun team!
add: Resprites or offsets almost all "tall" objects in the game to match
a 3/4ths perspective
add: Bunch of rendering mumbo jumbo to make said 3/4ths perspective work
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: = <stewartareid@outlook.com>
Co-authored-by: Capsandi <dansullycc@gmail.com>
Co-authored-by: ArcaneMusic <hero12290@aol.com>
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: SomeAngryMiner <53237389+SomeAngryMiner@users.noreply.github.com>
Co-authored-by: KylerAce <kylerlumpkin1@gmail.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Runi-c <5150427+Runi-c@users.noreply.github.com>
Co-authored-by: Roryl-c <5150427+Roryl-c@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@gmail.com>
Co-authored-by: Senefi <20830349+Peliex@users.noreply.github.com>
Co-authored-by: Justice <42555530+Justice12354@users.noreply.github.com>
Co-authored-by: BluBerry016 <50649185+unit0016@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: Rob Bailey <github@criticalaction.net>
Co-authored-by: MMMiracles <lolaccount1@hotmail.com>
## About The Pull Request
<img alt="0Jva48mReD"
src="https://github.com/user-attachments/assets/8b5ef2a2-c1dd-4561-89ef-15c0ca199e5d">
Renamed all seed packs to say "Apple seed pack" instead of "Pack of
apple seeds.
## Why It's Good For The Game
Shorter and better for UIs.
Easier to find the needed items in a list, the important part of the
name won't be truncated by ellipsis.
## Changelog
🆑
qol: Renamed seed packs to have the plant name at the beginning
/🆑
## About The Pull Request
Mineral stacking machine consoles had a reversed isnull area check,
preventing them from linking with stacking machines
## Changelog
🆑
fix: Stacking machine consoles link to machinery now
/🆑
## About The Pull Request
it's - conjunction of "it" and "is"
its - possessive form of "it"
grammar is hard, and there were a lot of places where "it's" was used
where it shouldn't have been. i went and painstakingly searched the
entire repository for these instances, spending a few hours on it. i
completely ignored the changelog archive, and i may have missed some
outliers. most player-facing ones should be corrected, though
## Why It's Good For The Game
proper grammar is good
## Changelog
🆑
spellcheck: Numerous instances of "it's" have been properly replaced
with "its"
/🆑
## About The Pull Request
Now uses a THERMAL_VISION trait instead of directly applying it to be a
tad bit cleaner, and actually updates your vision when it stops orbiting
you.
## Changelog
🆑
fix: Recalling lantern wisp now properly removes its effects from you
/🆑
## About The Pull Request
Due to how projectile code currently operates its (almost) impossible to
parry projectiles and completely impossible to projectile boost them, as
they move away from you instantly after being shot. Parrying others
projectiles requires them to be slow enough and to land on a tile right
in front of you on their last move of their tick, as else they instantly
hit you.
I moved parrying component from being on user to being on projectiles
themselves and added TRAIT_MINING_PARRYING which allows users to
actually perform the parries. This allows me to get rid of parry code
existing on all projectiles and add a "grace period" mechanic - now you
can parry projectiles by clicking on any turf they moved through in the
last 0.25 seconds. Parrying actually runs when projectiles hit you if
you clicked on the correct turf during same grace period timer. This
also acts as lag compensation, allowing players with high ping to
utilize this mechanic. Projectile boosting occurs when you hit a tile
the projectile moved through in first 0.25 seconds of its existence.
Parry also occurs on click instead of attack_hand due to this, so you
can parry projectiles while holding your
accelerator/crusher/resonator(what even?) - which is also important to
make projectile boosting possible as firing sets your click cooldown -
making attacking the turf impossible (another roadblock on ultrakill
players' path)
Projectile boosting now grants x1.5 damage multiplier and +40% speed
instead of x1.15 and +20% like parrying, since its significantly harder
to perform.
Crusher projectiles now can be parried/boosted. Crushers are ***the***
badass miner weapon, but they weren't possible to boost - probably
because it'd be pointless due to their lack of damage. Now boosting a
crusher blast gives it 10 damage, +3 range and makes the mark it applies
always count as backstab for additional style (although doing so is very
tricky due to speed/range)
Crusher marks are now a STATUS_EFFECT_REFRESH effect and no longer
per-user. This means that anyone can blow up anyone else's mark and
applying new ones refreshes the timer. Trophy effects of the person who
detonated the mark are the ones actually applied.
also cleaned up pixel_move a bit
## Why It's Good For The Game
Parrying refactor - parries are a very cool mechanic which is almost
impossible to execute in-game (and boosting is physically impossible)
and even if "fixed" would require perfect server performance and single
digit ping. Making them slightly easier to execute and adding a grace
period will allow more players to utilize it and also make it possible
to do parrying/boosting on highpop.
Boosting damage/speed buff - Boosting is harder to perform, and while
with parrying damage/speed is a nice bonus to the fact that your face
doesn't explode outwards from a death bolt, for boosting its the only
reason why you'd do it (beyond style points)
Crusher boosting - Crushers are more often used by skilled miners as
they are a high risk/high reward weapon. Them not being boostable is
rather disappointing as boosting is supposed to be a thing for extremely
skilled miners to do, essentially turning crushers into deadweight for
those who wanted to use style meters.
Unified crusher marks - Mobs being able to have multiple crusher marks
made fighting very confusing for rare coop crusher miners, as you
weren't able to tell if you could detonate the mark or not. This should
make coop fighting more viable as marks can now be comboed if you have
good cooperation with your teammate.
## Changelog
🆑
refactor: Refactored parrying to be projectile-side and not user-side.
add: You can now parry crusher projectiles to give them some more range,
add damage and make the mark always count as a backstab.
add: Projectile parrying has been significantly improved, making
parrying and boosting projectiles actually possible. Includes a small
grace period as lag compensation for players with higher pings.
balance: Crusher marks can now be detonated by any crusher, not only the
one that applied it, as to incentivise coop mining for crusher users.
balance: Projectile boosting now gives a significantly bigger damage and
speed increase
/🆑
## About The Pull Request
Adds a new trait TRAIT_TOSS_GUN_HARD (which currently comes from the
Sleeping Carp scroll, ninja MODsuit, berserk armor, being a medieval
pirate or highlander). The owner of this trait deals an additional
**10-20** (depending on the size of the weapon) damage to the enemy by
throwing a gun, and also knocks them for 0.5 seconds. If a ballistic
weapon **with a magazine** was thrown, then the magazine is removed and
the bolt is racked, and if **without a magazine**, then all cartridges
(revolvers) or chambered one is removed. Here's a preview of how it
works:
https://github.com/tgstation/tgstation/assets/126676387/2a56eb74-6d37-4343-a685-3bf7159ab628
## Why It's Good For The Game
It's classic

## Changelog
🆑
add: If you can't shoot a gun, then... JUST TOSS IT AT THEM (for 0.5
seconds of knockdown and 10-20 an additional brute damage)
/🆑
---------
Co-authored-by: paganiy <leunscrupuloustrolle@gmail.com>
## About The Pull Request
You can emag grapple gun to use it on station.
## Why It's Good For The Game
Cool hook. Gives him the way to use his mechanics at the station.
🆑
add: You can emag grapple gun to use it on station.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
- Fixes#84794
`/datum/component/remote_materials` blocks the tool act from continuing
when linking with ore silo fails. We don't want that for stacking
machines
## Changelog
🆑
fix: stacking machines can be linked with its console via multitool
/🆑
## About The Pull Request
Cleaned up crusty old code and made it more readable, removed single
letter variables, camel case, etc.
Improved naming for strange objects. Unidentified objects are "Strange
[thing]", activating the item replaces the word "strange" with a new
prefix. Improved the list of strings.
Added cosmetic themes for artefacts. All current strange objects are now
"prototype" artefacts, reflecting their man-made origin in space.
Artefacts with different themes pick from different sprite and name
pools, reflecting who made them.
New "necrotech" theme for relics. These are strange objects from
lavaland. Instead of getting half-multitool-half-gun-blows-up-when-used
monstrosities crafted by insane maint dwellers, you will now get strange
relics that look like this.

And they're called something like "ruined instrument" or "dark relic".
## Why It's Good For The Game
Code needed cleaned up. It was in a bad state. Years of neglect.
Themes add more flavour to these items. I really didn't like how the
boulder machine looked when it produced lots of relics, so now it
produces more appropriate ones.
Lets admins and mappers use variable editing to decide what relics do
and what cooldown they should have before they are activated.
Previously, this would be overwritten when the relic was activated.
## Changelog
🆑
code: Cleaned up relic code.
image: Added necrotech themed relics.
/🆑
## About The Pull Request
1. Objects now have an `get_proxy_for()` proc. This returns an atom that
will participate in the object melee attack chain on behalf of your
atom. Allows for general purpose polymorphism per object interaction
2. Cleaned up some multitool acts to accommodate proxy behaviour
3. You can pry tiles as an Engiborg with crowbar in hand & do other
similar behaviour with crowbar
5. Improves & Depends on #83880. We don't need a hidden omni toolbox &
can create the tools directly in the omnitool and pass them in the
attack chain as a proxy rather than calling the attack chain manually.
All tools are on the borg directly
- Fixes#84355
- Fixes#84359
- Fixes#84393
## Changelog
SyncIt21,zxaber
🆑
fix: omni crowbar tool interaction for replacing tiles has been fixed
fix: techfab screentip does not runtime when you hover over it with an
omnitool multitool
fix: medi borgs can do brain surgery again
code: improved multitool & general tool code for some machines
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
Living being attached to fultons are now forced upright so that the
animation works properly, plus it looks like people are being attached
by their back. Adjusted the layers a bit for that, plus moved the
animation into a callback so it doesn't force item_interaction to wait
until it finishes.
## Why It's Good For The Game
Proper animation and code quality, I don't know what exactly a 32 second
delay could mess up but it doesn't seem very good.
## Changelog
🆑
fix: Fulton animation is no longer sideways.
code: Fulton code no longer forces attack chain to wait for 32 seconds.
/🆑
## About The Pull Request
Since non-clothing items can also be worn on several slots, there's no
need for cigarettes/vapes to be subtypes of masks anymore, since that
comes with a few oddities like #82870.
## Why It's Good For The Game
This should fix#82870, with about no side-effect aside them no longer
being edible by moths 🤢.
## About The Pull Request
So the 'large mushrooms' from lavalands contain sugar and ethanol in a
ratio such that most of the ethanol instantly reacts with the sugar to
form Fringe Weaver (an alcoholic beverage).


This is not ideal and makes it impossible to extract any useable
quantity of ethanol, so to solve this issue the sugar has been removed
from large mushrooms and put into the fireblossoms instead (they had a
similar quantity of nutriment).
## Why It's Good For The Game
Makes ghetto chemistry more enjoyable in the lavalands. Sugar can still
be acquired, just from a different kind of mushroom now.
## Changelog
🆑
qol: polypore mycelium no longer contains sugar, preventing it from
instantly creating fringe weaver beverage when ground up. qol: sugar may
be acquired from grinding fireblossoms instead of polypore mycelium.
/🆑
## About The Pull Request
Fixes two typos, specifies why a grappling hook is good for lavaland
(lavaland's famous rock walls), and adds a description of the item
itself.
## Why It's Good For The Game
Old item description had typos and didn't actually contain a description
for the item at all, so it needed fixed.
## Changelog
🆑
spellcheck: Grapple gun's description has been updated.
/🆑
## About The Pull Request
Refactors body markings (lizard and moths) into the bodypart overlays
system
I've also renamed the icon states for lizard bodymarkings (downstreams
with lots of lizard body markings might have problems with this)
## Why It's Good For The Game
Gives us better controle over /human appearances. I didn't add any means
of actually changing them on the person (aside from genetics. how would
that even work? with a waterproof marker?), but makes it easy for
when/if I do. Also unloads mutant_bodyparts more, moving is yet closer
to full species dedatumization
## Changelog
🆑
refactor: Lizard and moth markings now use the bodypart overlay system
/🆑
## About The Pull Request
This PR changes it so that if you refine an anomaly by neutralising it,
it respects the same limit on number of anomaly cores as refining one
you bought from Cargo.
If it would produce an illegal core, it will create a mostly useless
inert core which you can sell at cargo for 80% of the price of buying a
raw core.
## Why It's Good For The Game
https://hackmd.io/@tgstation/r1tzxpwPL
This was a requirement in the original design doc which just never made
it into the game.
We want to be able to control how many cores of each type can possibly
exist in a round, as this is what allows them to have the "these items
can be really busted" allowance.
## Changelog
🆑
fix: Neutralising an anomaly cannot produce more anomaly cores than are
supposed to exist in a single round
/🆑
## About The Pull Request
I was looking at sounds (as you do) and I noticed this

These sounds don't exist
We have `portal_open_1`, not `portal_open1`.
This wasn't caught on compile because they used `""` and not `''`.
So I went through and audited a bunch of playsound uses that don't use
`''`. Only one error, fortunately
Likewise there was a ton of places running `get_sfx` pointlessly
(because `playsound` does it for you) so I clened that up.
However while auditing the portal stuff I noticed a few oddities, so I
cleaned it up a bit.
Also also I added the portal sounds to the wormholes event and gave it a
free ™️ optimization because it was an in-world loop
## Changelog
🆑 Melbert
sound: Portals made by portal guns now make sounds as expected
sound: Wormholes from the wormhole event now make sounds when formed
/🆑
## About The Pull Request
adds a `resistance_tag = FIRE_PROOF` to both the PKA and PKC
## Why It's Good For The Game
Miner equipment should be fireproof. The explorer suit does not burn so
their weapons should not either.
fix#83851
## Changelog
🆑 Goat
qol: Mining's PKAs and PKCs are now fireproof.
/🆑
## About The Pull Request
Mouse drag & drop has been refactored into its own attack chain. The
flowchart below summarizes it

Brief summary of each proc is as follows
**1. `atom/MouseDrop()`**
- It is now non overridable. No subtype should ever touch this proc
because it performs 2 basic checks
a) Measures the time between mouse down & mouse release. If its less
than `LENIENCY_TIME`(0.1 seconds) then the operation is not considered a
drag but a simple click
b) Measures the distance squared between the drag start & end point. If
its less than `LENIENCY_DISTANCE`(16 pixels screen space) then the drag
is considered too small and is discarded
- These 2 sanity checks for drag & drop are applied across all
operations without fail
**2. `atom/base_mouse_drop_handler()`**
- This is where atoms handle mouse drag & drop inside the world. Ideally
it is non overridable in most cases because it also performs 2 checks
- Is the dragged object & the drop target adjacent to the player?.
Screen elements always return true for this case
- Additional checks can be enforced by `can_perform_action()` done only
on the dragged object. It uses the combined flags of
`interaction_flags_mouse_drop` for both the dragged object & drop target
to determine if the operation is feasible.
We do this only on the dragged object because if both the dragged object
& drop target are adjacent to the player then `can_perform_action()`
will return the same results when done on either object so it makes no
difference.
Checks can be bypassed via the `IGNORE_MOUSE_DROP_CHECKS` which is used
by huds & screen elements or in case you want to implement your own
unique checks
**3. `atom/mouse_drop_dragged()`**
- Called on the object that is being dragged, drop target passed here as
well, subtypes do their stuff here
- `COMSIG_MOUSEDROP_ONTO` is sent afterwards. It does not require
subtypes to call their parent proc
**4. `atom/mouse_drop_receive()`**
- Called on the drop target that is receiving the dragged object,
subtypes do their stuff here
- `COMSIG_MOUSEDROPPED_ONTO` is sent afterwards. It does not require
subtypes to call their parent proc
## Why It's Good For The Game
Implements basic sanity checks across all drag & drop operations. Allows
us to reduce code like this
8c8311e624/code/game/machinery/dna_scanner.dm (L144-L145)
Into this
```
if(!iscarbon(target))
return
```
I'm tired of seeing this code pattern `!Adjacent(user) ||
!user.Adjacent(target)` copy pasted all over the place. Let's just write
that at the atom level & be done with it
## Changelog
🆑
refactor: Mouse drag & drop attack chain has been refactored. Report any
bugs on GitHub
fix: You cannot close the cryo tube on yourself with Alt click like
before
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
## About The Pull Request
This PR closes a bounty
(https://tgstation13.org/phpBB/viewtopic.php?t=36203), but is also a
change I'm personally interested in.
Distilling and juicing now explicitly checks for nutriment and vitamin
and ignores any other reagents, as per the bounty requirements, meaning
potentially useful chems like oils don't get removed.
## Why It's Good For The Game
More possibilities for cooking and ghetto chemistry, makes more sense
because something like Frost Oil probably shouldn't turn into juice.
## About The Pull Request
- Afterattack is a very simple proc now: All it does is this, and all
it's used for is for having a convenient place to put effects an item
does after a successful attack (IE, the attack was not blocked)

- An overwhelming majority of afterattack implementations have been
moved to `interact_with_atom` or the new `ranged_interact_with_atom`
I have manually tested many of the refactored procs but there was 200+
so it's kinda hard
## Why It's Good For The Game
Afterattack is one of the worst parts of the attack chain, as it
simultaneously serves as a way of doing random interactions NOT AT ALL
related to attacks (despite the name) while ALSO serving as the defacto
way to do a ranged interaction with an item
This means careless coders (most of them) may throw stuff in afterattack
without realizing how wide reaching it is, which causes bugs. By making
two well defined, separate procs for handing adjacent vs ranged
interactions, it becomes WAY WAY WAY more easy to develop for.
If you want to do something when you click on something else and you're
adjacent, use `interact_with_atom`
If you want to do something when you click on something else and you're
not adjacent, use 'ranged_interact_with_atom`
This does result in some instances of boilerplate as shown here:

But I think it's acceptable, feel free to oppose if you don't I'm sure
we can think of another solution
~~Additionally it makes it easier to implement swing combat. That's a
bonus I guess~~
## Changelog
🆑 Melbert
refactor: Over 200 item interactions have been refactored to use a
newer, easier-to-use system. Report any oddities with using items on
other objects you may see (such as surgery, reagent containers like cups
and spray bottles, or construction devices), especially using something
at range (such as guns or chisels)
refactor: Item-On-Modsuit interactions have changed slightly. While on
combat mode, you will attempt to "use" the item on the suit instead of
inserting it into the suit's storage. This means being on combat mode
while the suit's panel is open will block you from inserting items
entirely via click (but other methods such as hotkey, clicking on the
storage boxes, and mousedrop will still work).
refactor: The detective's scanner will now be inserted into storage
items if clicked normally, and will scan the storage item if on combat
mode
/🆑
## About The Pull Request
stacking machine consoles check in area instead of a tiny view range on
init
## Why It's Good For The Game
turns out there are areas where you cant cram the console directly next
to a stacker
## Changelog
🆑
code: stacking machine consoles check in area instead of a tiny view
range on init
/🆑
<!-- 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
Fixes https://github.com/tgstation/tgstation/issues/83684
Adds an intermediary item called drake remains, which are used to
construct drake armor and empower berserker armor.
There is no functional balance change here, as the components to make a
drake armor are relatively the same.
## Why It's Good For The Game
I borked it. This is the most reasonable and flexible method to fix the
bug and what I should have done in the first place.
## 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 it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
fix: Drake empowerment for berserker armor now uses valuable drake
remains, made from ashdrake hides and bones.
add: Drake armor is made use drake remains to construct. (This is a net
neutral to the previous recipe)
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
## About The Pull Request
this refactors honkbots into basic mobs. its mostly a faithful 1:1
refactor but i couldnt keep my hands to myselves so i gave them some new
behaviors.
honkbots now love playing with clowns, they will go seek out for clowns
and celebrate around them. also, if the honkbot finds a banana peel or a
slippery item near it, it will actively drag people onto them
honkbots will now go out of theirway to mess with secbots and annoy them
## Why It's Good For The Game
refactors hinkbots into basic bots and also undoes some of the silliness
i did in the previous basic bot prs. i also added lazylist support to
remove_thing_from_list.
## Changelog
🆑
refactor: honkbots are now basic mobs, please report any bugs
add: honkbots will try to slip people on banana peels
/🆑
## About The Pull Request
What it says on the tin. If you're not wielding the crusher, rather than
forcefully dropping everything in your hands, you simply just don't
attack.
## Why It's Good For The Game
This was added when the crusher was able to be held in one-hand, before
we got the two-handed component. However, for some inexplicable reason
there was a noob trap added into that feature that has existed for
almost five years. Maybe skoglol had their reasons for putting it in
there at the time, but I don't believe this is anything other than
unnecessarily punishing in the modern state of the code. A return works
just fine.
The PR that added it for anyone curious
https://github.com/tgstation/tgstation/pull/45110
## Changelog
🆑
qol: Failing to hit someone with a proto-kinetic crusher one-handedly no
longer force drops everything in your hands.
/🆑
## About The Pull Request
**PR body copied from last PR (#83149). I fucked something up (I think
by leaving dream maker open while trying to fix the merge conflicts?)
and rather than try and walk backwards I'm just making a new branch.**
This implements the digging of graves on most soil/dirt/planetary type
turfs, and gives the coroner their own private burial ground.
**Change 1 - Gravedigging:**
You can right-click planetary/dirt/grass tiles using a shovel or shovel
subtype (or entrenching tool). Speed varies on the type of shovel you
are using. This creates a Makeshift Grave, an unmarked burial mound
(different from the ones at the elephant graveyard).
This is handled through the new gravedigger component, which is mostly
unremarkable but worth mentioning in case anyone wants to add this
behavior elsewhere.
**Change 2 - Icebox Morgue Graveyard:**

The icebox morgue now has private burial ground, sealed off by a fence.
Mourners are expected to keep out and perform their grieving at the
appropriate distance. This does not affect the chaplain's burial ground,
which is publicly accessible from the outside. This gives a more secure
place to bury bodies (I'm sure someone will have a reason for this some
day) and may lead to fighting over corpses, which I think is funny.
Also, there might be some goodies left in those graves, but you wouldn't
go graverobbing just for some useless loot, would you??
This also adds a new area type, graveyard, which is mostly just the
icemoon outdoors with the spooky ambiance of the morgue.

## Why It's Good For The Game
Now you can bury your friends in an unmarked grave! Bury people alive!
Bury your treasure, or reminders of the sins you've committed! Bury
anything, anywhere you want!
The morgue graveyard is a nice bit of flavor. I know the Chaplain
already gets one (I forgot this when I started this PR though) but the
Coroner is an equal-if-not-more-important corpsekeeper than them.
## Changelog
🆑 Rhials
add: Shovels and entrenching tools can be used to dig graves on
asteroid/dirt/etc. surfaces. Neat!
add: The Icebox Morgue has been given a fenced-off graveyard in the
back.
code: burn_tile() is no longer double-defined on asteroid turfs.
/🆑
## About The Pull Request
### Suit Storage
Makes the suit storage of the various suits consistent across one
another. Now, all the mining suits use a single list which is easier to
maintain.
**The affected suit list is as follows;**
Explorer Suits (and therefore Syndicate Explorer Suits), Goliath Cloaks,
Bone Armor, Drake Armor, Godslayer Armor, Berserker Armor, Mining
MODsuits, H.E.C.K. Suit.
**The list of holdable items is as follows;**
Flashlights, Proto-Kinetic Accelerators, Advanced Mining Scanners /
Mining Scanners, Pickaxes, Upgraded Resonators / Resonators, Ore Bags,
Air Tanks, Spears, special monster organs like Regenerative Cores,
Knives, Proto-Kinetic Crushers, Cleaving Saws (the one that Blood-Drunk
Miners drop), Grappling Guns and Climbing Hooks.
~~It probably doesn't matter too terribly much because you know only air
tanks are going in that slot 95% of the time~~
### Bone Armor and Goliath Cloaks
Bone armor and goliath cloaks both have the same armor values,
environmental protections and coverage as the explorer suit (bone armor
includes the feet due to the sprite physically covering the feet, which
is not a terribly significant balancing point but worth mentioning).
They use the armor plate component to improve the parts of bone armor.
However, they use bone talismans instead of goliath hide to be upgraded.
Goliath cloaks come fully upgraded. You'll see why in a second.
Their recipes are slightly different. Goliath cloaks take nine hides
(I'm so sorry this is for consistency I promise you can't use the
upgrade system with something that deletes its own armor values like
this) and three sinew. Bone armor takes three goliath hides and 6 bone.
### Berserker Armor
Berserker armor can now be improved to the same armor value as drake
armor by using a full suit on both the body and the helmet of the
berserker armor. (Each drake makes two suits, so you need to use up both
suits).
Instead of an armor boost, rage now halves incoming brute damage. Fuck
you, Bubblegum!
### Minor Mining MODsuit Tweak and other armor value changes
The base value for the armor is now 20, rather than 15, so that when it
reaches max ash accretion it has equivalent armor to a fully upgraded
explorer suit. This is only a value difference of 5, but it always
annoyed me seeing it.
All the above mentioned suits also now have a value of about 10 wound
armor. This is because miners do actually experience wounding on
lavaland. Some of the armors had this wound armor. Some didn't. Now they
all do. I don't believe this to have been a deliberate design choice,
but rather, an oversight. Iunno, someone who keeps track of this please
tell me otherwise.
Upgraded suits get a prefix to show they are upgraded. Now, never doubt
whether the miner you are fighting is in a baseline explorer suit or a
riot suit level improved explorer suit ever again!
### Berserker Armor actually covers up clothing/hair underneath properly
and other minor stuff
This is why I started this PR by the way. This one fix. I expand the
scope of my horizons so broadly when I really sit down and PR, don't I?
H.E.C.K. and Berserker helmets can be used for internals.
## Why It's Good For The Game
There is a great deal of inconsistency with regards to the various
lavaland armor you can find and use. Some armors were wildly inferior to
others and only really having value for aesthetic. Some just seemed to
have oversights that didn't seem quite right. And most importantly, the
actual storage list for mining suits in general were not only
inconsistent in of themselves, but were also not being updated as time
goes on.
Bringing them all into line allows for miners to have a bit of freedom
of choice when it comes to appearance, without it becoming a balancing
sticking point nor a detriment to their effectiveness. It is also much
easier to maintain one list than six or seven lists.
Assuming that the baseline of the explorer suit is a-okay for someone to
possess, goliath cloaks and bone armor should now feel more like
fashionable choices rather than, in some cases, being either a worse or
better choice to take (its bone armor, bone armor is the best of these,
its really good generalist armor). I don't care what effect it has on
the ashlander economy. Neither should you.
The minor tweaks and fixes are just stuff that annoyed me for autism
reasons or were oversights due to changes to the items in question or
the game around it. I doubt anyone but me cares very much about these
minor differences, but I like consistency.
## Changelog
🆑
balance: The various mining related suits now have consistent suit
storage. Try putting a knife into your explorer suit's suit storage
today!
balance: Bone armor work similarly to explorer suits, with similar armor
values and options to upgrade their parts. However, they use bone
talismans instead of goliath hides to upgrade. Magic? Just believing
really strongly that the drake is hitting you slightly less hard because
of the talismans? You be the judge.
balance: Goliath cloaks come fully upgraded. However...
balance: The recipes for bone armor and goliath cloaks are slightly
different. Particularly goliath cloaks, which need a lot more dead
goliaths to make. Sorry.
balance: Mining MODsuits achieve at maximum ash accretion the same
amount of melee armor as an upgraded explorer suit.
balance: These various suits also consistently have wound armor.
fix: Berserker armor properly hides underclothing and hair.
balance: Berserker armor pieces can absorb drake armor to gain their
enhanced protection. Become the warrior of Khorne you've always wanted
to be.
balance: Berserker rage now halves brute damage rather than just adding
Melee Armor to you and your squishy body.
qol: Berserker and H.E.C.K. helmets can be used for internals.
/🆑
## About The Pull Request
This PR turns gondolas into basic mobs and does some fiddling with
gondola pods
Their verbs are now action buttons which they lose upon delivering. If
set to stay, they won't have their abilities afterwards (or wont get
them in the first place if the delivery is already done).
Lets them survive without a pod requirement in case admins want to spawn
one for their own stuff, so I also removed it from the snowflake checks
to exclude them from stuff.
Also replaced the hardcoded "cant speak" with simply giving the mute
trait, so admins can make gondolas speak if they want to for any reason.
## Why It's Good For The Game
The pet level of simple animals can finally be killed off, also gives
admins more control over gondola-related stuff if they so wish.
## Changelog
🆑
refactor: Gondolas (including gondola pods) are now basic mobs.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
NODE Drones now have higher move resistance
(MOVE_FORCE_EXTREMELY_STRONG), preventing them from being bumped off the
node, pulled away, or lifted away by a fulton extraction kit.
As an extra layer of assurance, the NODE Drone will depart from the site
if it is moved off of its vent.
## Why It's Good For The Game
Closes#83164.
I'm pretty sure these things shouldn't really be ever moving off of
their vents.
## Changelog
🆑 Rhials
fix: You can no longer force NODE Drones off of ore vents. That includes
using fulton packs!
fix: When a NODE Drone is forcibly separated from its vent, it will fly
away.
/🆑
## About The Pull Request
I tried to make the name a proper noun with the /p tag, but /p isn't the
way to do it. I don't know the way to do it, but the name will be
capitalised anyways so lets just remove it.
## Why It's Good For The Game
It's better this way.
## Changelog
🆑
spellcheck: Fixes labour camp shuttle retrieval message starting with
"/p".
/🆑
## About The Pull Request
In my effort to make the /icons/ folder cleaner and more intuitive
instead of having to rely on recalling names of stuff and looking them
up in code to find them for poor sods such as myself, plus in spurt of
complusion to organize stuff, here goes. I've tracked all changes in
commit descriptions. A lot still to be done, but I know these waves go
over dozens of files making things slow, so went lighter on it.
Destroyed useless impostor files taking up space and cleaned a stray
pixel on my way.
## Why It's Good For The Game
Cleaner /icons/ file means saner spriters, less time spent. Stray pixels
and impostor files (ones which are copies of actually used ones
elsewhere) are not good.
## Changelog
🆑
image: Cleaned a single stray pixel in a single frame of a bite
telegraphing accidentaly found while re-organizing the files.
/🆑
## About The Pull Request
Designed for use in #83163 , not implemented anywhere else currently.
Mining cars (existing crate reskin) now have a hefty drag slowdown.
Click-dragging them onto a minecart rail (new), however, will negate
this slowdown, allowing you to drag them at nearly full speed.
This also gives you the opportunity to give them a bump to push them
down the tracks at a decent pace.
https://github.com/tgstation/tgstation/assets/51863163/293adbfb-e2bd-49ba-beef-c998c388ecf0
Other notes:
- Running a cable underneath a minecart (underfloor allowed) will power
the rail, keeping its momentum, or boosting it slightly if it falls
below certain thresholds.
- If the minecart comes to an abrupt stop with a decent amount of speed,
it will chuck all of its contents ahead a few tiles.
- Break rails also exist, and stop the cart instantly (and with no
contents chucking) when powered with cable.
- The cart does hurt people who are standing in the way if it's moving
with moderate speed.
- And it also hurts people lying on the tracks.
- You can buckle yourself onto a (closed) minecart to ride it. Someone
else has to give you a push though.
## Why It's Good For The Game
I was struggling to come up with a method of bulk transferring items for
the linked PR that didn't seem too contrived (bluespace BS, pods),
wouldn't require work refactoring an existing system (transit tubes),
and wasn't a tram, and I realized we have mine carts but no rails.
So I added rails and made the minecarts work on the rails. This gives a
method of shipping items from point A to point B that fits well in
certain settings, such as the lower areas of Icebox, or maybe in space
ruins.
I also think it would be fun to give miners some tools to construct
rails, to let them ship boulders back to the station via railway rather
than using teleportation.
## Changelog
🆑 Melbert
add: Adds Minecarts, (possibly admin only depending on when this PR is
merged in relation to the Icebox Bar PR)
/🆑
## About The Pull Request
Plainly: Expands the status effect API so their alerts can showcase
duration remaining.
https://github.com/tgstation/tgstation/assets/51863163/02eaad84-ebb7-4af9-9895-977c6e71acc4
## Why It's Good For The Game
I figure there are some status effects out there which really want the
player to know how long the duration is.
And right now, for 95% of them, you have to code dive to find out. This
is rather punishing for players who... don't code dive.
At the same time, there are effects which *do* tell you how long they
last, which leaves it up to the player to intuit when it'll run out.
This can get a bit silly during lag, and again, punishes new players.
That's not to say I think every status effect should report how much
duration is left: **For very common effects, like sleeping, it should be
left up to the player to guess.** Otherwise we lose a lot of paranoia
and feeling of helplessness. (Also keep in mind this only applies to
status effects with alerts associated.)
Hence why I only added it, largely, to the more "gamified" buffs and
debuffs - Things from (generally) one or two sources and with a static
duration, (or things which already informed the player how long they
last).
Notable ones include Fleshmend, Convulsing (from emag defib), Regen
core.
## Changelog
🆑 Melbert
qol: Some alerts, such as Fleshmend's, show their remaining duration on
their icon.
/🆑
## About The Pull Request
The labour camp shuttle paroles the user when they complete their
points. The station return message specifies which prisoner returned.
## Why It's Good For The Game
People shouldn't be looking like fugitives after completing their work.
## Changelog
🆑
qol: The labor camp shuttle properly sets people to parole after they
complete their work.
qol: The labor camp shuttle specifies which person returned to the
station.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
This is just a revitalization of #80275.
## About The Pull Request
On the tin, basically demotes everything related to setting up and
storing these bulky lists generated from reading
`/datum/sprite_accessory` subtypes from living in a global space that
will instead be in a compartmentalized subsystem for accesses. Also a
lot of code modernization and micro-improvements (unquantifiable)
## Why It's Good For The Game
Same exact expected results, just accessed in a different way.

There's a few reasons why I want this to happen.
* The `GLOB` space is too clogged. There are at least a thousand
variables on `GLOB`, and it's extremely painful to access stuff on
production/local through view variables when you're debugging stuff like
this. It's also painful when there is stuff that _should_ live on `GLOB`
that you might want to see in VV/Debugger but are forced to either have
to scroll a mile to find what you want or wait a long while for it to
load. The less bulky lists we have of stored initialized datums, the
better.
* `make_datum_reference_lists()` is a consequence of wack stuff like
this where we're reliant on certain things being initialized in the
`GLOB` portion of world initialization _before_ subsystems/static
variables load - most of these datum lists in the aforementioned proc
doesn't _really_ need to be ready to go before `world.New()` for
example. We'll sadly have to abuse `PreInit()` for now, but it really is
something that has to be ready to go due the critical dependence that
stuff like Preferences has on it.
* We don't have to have the procs live in a global namespace either.
Instead of passing in `GLOB.XList` or `DSstorage.XList` every single
time, we can instead just move the proc setup on the subsystem and use
`XList` in a more native fashion.
* It's easier to find what you need. To me, it's a lot nicer to
ctrl+click the DS and go to the variables to find something I'm looking
for instead of having to scavenge around for any footprint/trace of the
global I want to look for. This is more trivial than the other two, but
that's something I like to think about when I go to bed.
I also had to refactor a bit of the code to accommodate the limitations
of the new DS system, but it should be a lot cleaner anyways.
## Changelog
Not relevant
---
Also nothing should have broken but it's a good thing we have screenshot
unit tests to prove me wrong.
## About The Pull Request
fixes#82838, forgot to add the attack_self there
fixes#82869
fixes the atmos hardhat not using flags_inv and transparent_protection
correctly (you could pull off someones glasses through it for example
makes modsuits use the new rendering stuff
fixes rendering stuff not working correctly with adjustable clothing
fixes quick equip dropping the item if you cant equip it
## Why It's Good For The Game
waow its awesome
## Changelog
🆑
fix: you can no longer take off someones glasses or mask through atmos
hardhat
fix: once you adjust a welding helmet or something it no longer makes
your cigarette or sunglasses invisible
fix: welding gas mask works once again
fix: quick equips dont drop the item if you cant equip it
/🆑
## About The Pull Request
Subsystems currently come in two different flavors:
1. Systems that process at intervals with the master controller
2. Global data containers that do not fire
And I think they should be split up...
This moves 4 non firing, non init subsytems -> datasystem
## Why It's Good For The Game
Clarity in code
## About The Pull Request
Credit to Melbert for this idea.
Adds a new achievement awarded for carrying a boulder from Lavaland to
the Centcom Rescue Wing (via the Escape Shuttle).
If the boulder ever leaves your hands you will not gain the achievement.
If the boulder is not outside on Lavaland when you pick it up you will
not gain the achievement.
If you arrive at the Rescue Ship (via pod) you will not gain the
achievement.
If you drop the boulder
If the shuttle is hijacked and you do not arrive at Centcom you will not
gain the achievement (perhaps try hitting the hijacker with the boulder
you are not allowed to drop?).
If you arrive at Centcom via the Escape Shuttle but fail to exit the
shuttle holding the boulder (for instance, because a max cap bomb is
detonated next to you one second after the shuttle arrives) you will not
gain the achievement.
As the achievement is rewarded after the round-end report is generated,
you also will not be represented on the round-end report. This is a
personal struggle.
Also carrying a boulder slows you down. Dragging it already did, so I'm
not sure why carrying one did not. It feels like an oversight, and just
makes sense.
People rarely have any particular need to manually carry them anywhere
so this should be fine, right? 🙂
## Why It's Good For The Game
Making players do pointless and weird bullshit is the reason to have an
achievement system.
It's a social experiment.
I think that it is funny.
## Changelog
🆑 Jacquerel and Melbert
add: A new achievement for moving a boulder from one place to another,
at great effort.
balance: Hauling a boulder around makes you move slower, as it does when
dragging it.
/🆑
## About The Pull Request
refactors clothing visors to use the same system, including masks being
toggled and stuff like riot helmets toggling using the same system and
welding helmets and such
adds a handler that updates all visuals in slots that an item has
obscured, each visual proc calls that so you no longer have weird shit
happening like having to hardcode a proc for heads where you need to
also update hair, mask, glasses everytime you put on an item
one thing here i could also do is make check_obscured_slots return the
HIDEX flags instead of item slots, because in 99% of cases its hardcoded
to be ran against specific slots (like eye code running it against the
glasses slot), but maintainers didnt seem to like that :/
## Why It's Good For The Game
fuck this 2003 bullshit
## Changelog
theres like several bugs here i fixed but i forgot them all and they are
small