* Makes the Haunted Eight Ball work(?) (better?) (#78196)
## About The Pull Request
From my recollection the haunted eight ball has been "broken" for like 3
or 4 years. So uh... yea
Makes the Haunted Eight Ball actually, like, work good.
- Fixes all votes counting to 0
- Fixes votes being reported as their vote key and not a flavor message
- Allows ghosts to change their vote
- General small code cleanup
- Calls parent in topic so stat panel clicks work
- Fixes#41718 , again? If it was actually ever fixed, not sure
## Changelog
🆑 Melbert
qol: Haunted 8-ball no longer requires the ghost orbit the petitioner to
submit votes
qol: Haunted 8-ball ghosts can now change their vote after submitting it
fix: Haunted 8-ball no longer always reports "yes"
fix: Haunted 8-ball no longer always reports default "yes", "no", or
"maybe" and now gives a proper eight ball response
fix: Haunted 8-ball can be picked up via the stat panel
/🆑
* Makes the Haunted Eight Ball work(?) (better?)
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Service borg extra apparatus upgrade (#78077)
## About The Pull Request
Adds an upgrade similar to the extra beaker storage for mediborgs to
service borgs, which adds an additional drink apparatus (that also
doesn't do the weird drink refilling thing)
## Why It's Good For The Game
This can allow the service borg to carry a wider variety of drinks, also
considering they specialize in chemistry, they should get an apparatus
upgrade like mediborgs.
## Changelog
🆑
add: Added the service borg "drink apparatus" upgrade, which adds an
extra drinking apparatus to the borg, up to a maximum of 5 extra.
🆑
* Service borg extra apparatus upgrade
---------
Co-authored-by: Teagarden <124026007+Vincent983@users.noreply.github.com>
* Desouls Hivelord (#78213)
## About The Pull Request

Replaces the sprite of the hivelord with a new one, in my continuing
quest to annihilate the old asteroid mob sprites.
A (never completed) asteroid mob resprite was actually my first PR, this
one is my 200th.
I am also planning on fucking with basic mob versions of these mobs some
time but the sprites can be atomised out.
In addition to replacing the old-ass MSPaint sprites, this PR also adds
a short death animation effect to the hivelord brood (from hivelords or
legions) which looks nicer than them just vanishing instantly upon
death.
Look at this video for an example of the animation:
https://www.youtube.com/watch?v=cKaskN5-y2A
## Why It's Good For The Game
Looks nicer.
## Changelog
🆑
image: Hivelords have a new sprite.
image: Hivelord and Legion brood have a death animation.
/🆑
* Desouls Hivelord
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Allows you to smoke cigarettes while not wearing a space helmet (#78202)
## About The Pull Request
Fixes#78199
PR #78122 (ef44be8506) was intended to allow you to smoke cigarettes in space if you
have an oxygenated helmet on.
What it _actually_ did was make it so you can _only_ smoke cigarettes if
you have an oxygenated helmet on, regardless of whether or not you are
in space (or if you inject them with liquid oxygen).
I moved the shared check into a proc to reduce duplicate code and fixed
the logic.
## Changelog
🆑
fix: It is now possible to smoke cigarettes even if you aren't wearing a
safety helmet
/🆑
* Allows you to smoke cigarettes while not wearing a space helmet
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Collected food fixes (#78190)
I went through the code and tried to find all of the remaining places we
forgot to update the arguments passed into `item/food/Initialize` after
more arguments were added to it, because there were a couple and they
caused things to stop working.
Most notably, golems were unable to eat anything because nothing would
correctly spawn "golem food".
_Additionally_ we were using a bunch of named arguments in new whenever
crafting or cooking food. This runtimed, causing the food not to init
properly.
_On top of that_ a late code review on a recent PR processed a list into
a string_assoc_list twice causing it to become null.
Finally, we were trying to check the food preferences of examining
ghosts or dogs or other non-human mobs. We shouldn't do that.
I also added a unit test for moth and golem food in the hopes that we'll
notice them breaking.
* Collected food fixes
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Martian foodtype corrections (#78002)
## About The Pull Request
Due to the size of the Martian food update, it was inevitable that
there'd be a few hiccups with food types. I reviewed everything and
updated everything to the best of my ability.
I'd prefer it if EOB himself gave everything a glance over in approval
before any potential merging.
## Why It's Good For The Game
I said so.
## Changelog
🆑
fix: Corrects various food types from the martian food expansion
/🆑
* Martian foodtype corrections
---------
Co-authored-by: carshalash <carshalash@gmail.com>
* [Icebox] Remaps Arrivals and a bit of surrounding maintenance, feat. actually functioning disposals mass driver. Also nukes the Aux Base. (#78048)
## About The Pull Request
- Remaps Icebox Arrivals
- I added some weather radios as flavor in arrivals someone tell me if I
shouldn't.
- Removes the Aux Base, for it serves no purpose
- Removes the whiteship dock, it serves no purpose. Centcom Ferry now
docks at where the whiteship dock once did.
- Remaps a bit of maintenance around it, specifically disposals
- Remaps a bit of the laundry room and locker room
- Disposals now actually dumps its waste into plasma/lava when using the
mass driver
- Adds a barometric radio to Icebox Mining office
<Details>
<Summary> PICTURES HERE PICTURES HERE PICTURES HERE PICTURES HERE
PICTURES HERE PICTURES HERE PICTURES HERE PICTURES HERE PICTURES HERE
PICTURES HERE PICTURES HERE PICTURES HERE PICTURES HERE PICTURES HERE
</Summary>


</Details>
## Why It's Good For The Game
Icebox Arrivals hasn't changed since Boxstation and as soulful as it is,
it can better integrate into the map's new identity.
To start, the Aux base: Serves no purpose on the Icemoon. Literally
useless besides having an extra stack of Plasteel for cultists to steal
and an extra PKA for tiders to steal.
It's gone. In its place is a small emergency EVA room / an external
airlock access.
Disposals. Literally hasn't been touched since Box, just DUMPED trash 10
tiles away onto the Icemoon. Kinda lame.
I moved it to the lower floor and made the mass driver dump its trash
into the river of plasmalava below.
Whiteship dock. Useless, no whiteship exists on Icebox. If badmins want
to mess around with docking shuttles they have the Centcom Ferry, or for
the more adept, they can manually place a dock.
Otherwise, the changes are just general modernizing. Brings it a bit
closer to how Delta's arrivals is set up.
## Changelog
🆑 Melbert
add: [Icebox] Remaps arrivals and the maintenance around it. Aux base
out, mass driver into a plasma lake in.
/🆑
* [Icebox] Remaps Arrivals and a bit of surrounding maintenance, feat. actually functioning disposals mass driver. Also nukes the Aux Base.
* Updating automapper
* Automapper placement
* Update icebox_arrivals.dmm
* Arrivals shuttle fix
* Update icebox_arrivals.dmm
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Cauteries have heat, you can smoke with a space helmet (#78122)
## About The Pull Request
Cauteries now have 'heat', like lighters, welders, etc.
You can smoke with a space helmet as long as you have internals on.
## Why It's Good For The Game
> Cauteries now have 'heat', like lighters, welders, etc.
Seems like an oversight. If an esword can do it so can a implement meant
to sear wounds shut.
> You can smoke with a space helmet as long as you have internals on.
Space smoking is awesome.
## Changelog
🆑
fix: Cauteries now have 'heat', like lighters, welders, etc.
qol: You can smoke with a space helmet as long as you have internals on.
/🆑
* Cauteries have heat, you can smoke with a space helmet
---------
Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
* Fixing this dead mouse related harddel (#78150)
## About The Pull Request
Fixes https://github.com/tgstation/tgstation/issues/78085
Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23510
Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23506

When the foodening added some args to the constructor of
`/obj/item/food` some instances of the constructor being passed stuff
got overlooked and were not updated.
This resulted in a mob ref potentially being passed in to
`starting_reagent_purity` in some cases, ultimately resulting in this
harddel.
@ SyncIt21 this is exactly the reason I was being so paranoid with #77946
the other day. Tracking constructor uses down can be such a pain when
they aren't prefaced with a type, and are almost guaranteed to get
overlooked during refactors if the compiler does not say anything about
it.
I hate DM.
edit: and I just tested this only to find a second bug with the ice
cream. I can confirm that it is in fact working now after fixing that
one too.
<details><summary>evil ice cream</summary>

</details>
## Why It's Good For The Game
Fixing a harddel that was causing many CI failures
## Changelog
🆑
fix: fixes creamatorium not producing any suspicious ice cream, and
fixes a dead mouse related harrdel
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Fixing this dead mouse related harddel
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Removed an inexplicable Cyrillic letter from the code. (#78148)
## About The Pull Request
Resolves#77906
I've mercilessly torn the soul from the game and rendered it
functionally unplayable. The icon state for caramel popcorn, for
whatever reason, used a Cyrillic "с" in its name, which I've cruelly
rendered into a Latin "c" instead.
## Why It's Good For The Game
It's not pronounced "saramel".
## Changelog
No player-facing changes.
* Removed an inexplicable Cyrillic letter from the code.
---------
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
* [TEST-MERGE FIRST] Allows all limbs to be dismembered and significantly refactors wounds
* ah fuck it
* test
* edaawdawd
* Revert "edaawdawd"
This reverts commit 47be710fe61a1f4ca79212b29b3e88bf05ec9a3a.
* nothing but sheer hatred
* freaawd
* dzfxg
* Fixing some diffs here while we are at it.
* These are deprecated and should be removed
---------
Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: nikothedude <simon.prouty@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* Fixed reagent grinding (and juicing?) (#78136)
## About The Pull Request
Resolves#78063
The Foodening refactored grinding and juicing in the reagent grinder,
but there were a few mistakes along the way. Most notably, items that
gave extra reagents when ground were not doing that (such as peptides in
livers) due to an error in adding those reagents. This error has been
corrected.
I've also fixed the code for juicing, which was erroneously passing a
beaker as its own reagents datum, though I couldn't tell if this
actually had any negative effects. Somehow. Better safe than sorry.
## Why It's Good For The Game
It's good to get everything you're supposed to get when you grind stuff.
The main source of peptides being inadvertently removed also made
cytology harder, and cytology really doesn't need to be made _more_
inconvenient.
## Changelog
🆑
fix: Fixed all-in-one grinders not giving all the correct reagents when
grinding.
/🆑
* Fixed reagent grinding (and juicing?)
---------
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
* minebots basic bots (#78032)
## About The Pull Request
Transforms the minebots into basic robots. You can now command these
minebots to extract minerals for you. To activate automated mining mode,
simply instruct them with the command "mine." They will then proceed to
autonomously mine walls and gather ores. If you wish to make the bot
deposit all the collected ores, use the command "drop." Alternatively,
you can leave it in collection mode, and it will gather all the ores you
mine. Additionally, the bot now responds to several more commands; you
can instruct it to follow you, toggle its lights on or off by saying
"lights." In attack mode, it refrains from mining or collecting ores but
will engage in combat alongside you. If it detects you as deceased or
unconscious, it will alert all miners, request assistance, and relay
your coordinates via the mining communication channel. to power it on u
will need to feed it any type of ore first so it may listen to ur
commands
## Why It's Good For The Game
makes the non sapiant minebots more useful
## Changelog
🆑
refactor: the minebots have been refactored please report any bugs
add: minebots can now mine walls and collect ores automatically and they
will alert everyone if they find u dead
/🆑
* minebots basic bots
* Modular
---------
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* ports noticeboards from the wallening (#78133)
## About The Pull Request
got permission from @ LemonInTheDark to add these here, changes virtually
nothing from the wallening branch.
tested and everything looks good. props to @ Krysonism for the sprites,
they are very very nice
basically just a straightforward resprite. it holds 8 notices now
instead of 5, and uses overlays rather than static sprites.

comparison here

## Why It's Good For The Game
noticeboard was kind of crufty and this either makes the wallening
easier, or doesn't make it more difficult. which is nice!
## Changelog
🆑 Krysonism
image: resprites the noticeboard
/🆑
* ports noticeboards from the wallening
---------
Co-authored-by: Lamb <110322848+CoiledLamb@users.noreply.github.com>
* pAIs control a PDA they're inserted into (#78103)
## About The Pull Request
This PR lets pAIs inserted into a PDA to control the PDA of their owner.
They can see their own pAI configurations but cannot edit any of it.
They also can't eject themselves from it.
This means they can receive and send PDA messages as their owner, acting
like a personal secretary
This also adds support for multiple people using a PDA and its UI
updating for all of them and PDA messages being received and responded
to from multiple people under the same PDA
It also removes pAI camera in favor of using siliconcamera, which is the
same thing; this just cuts down on some copy paste.
I also reverted PDA's ringer being off preventing messages from being
sent to your chat, silent mode was meant to prevent only the ringing
sound.
## Why It's Good For The Game
pAIs can now do a little bit more to help their owners on a personal
level, and adds support for more stuff like this in the future (an idea
I had was being able to hack into PDAs in the same way the CE can hack
into APCs remotely)
This is a re-PR of https://github.com/tgstation/tgstation/pull/76445 but
it's a little better this time and does not remove the PDA Messenger app
from pAIs.
## Changelog
🆑
fix: PDAs being on silent no longer prevents PDAs from being sent to
your chat, again.
add: pAIs inserted into a PDA can now control the PDA, and will receive
PDA messages sent to it (and can respond under the PDA's name).
/🆑
* pAIs control a PDA they're inserted into
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Updates some missed synthetic meats with lower reagent purity (#78065)
## About The Pull Request
These synthetic meats appear to have been missed in the foodening PR.
## Why It's Good For The Game
Consistency
## Changelog
🆑
fix: 'meat product' and imitation carp meat are now considered synthetic
meats for the purposes of reagent purity
/🆑
* Updates some missed synthetic meats with lower reagent purity
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Atmos overalls take 2 (#78007)
## About The Pull Request
This is a reinmagining of #72768 as I never was never given a chance and
feedback to polish the sprites or remake it as a suit item as was
suggested before the PR was closed.
This adds Atmos Overalls that ATs will spawn with, the sprite is based
on the GAGS overalls we already have, but I dodged the GAGS system and
made it a standalone item following the AT firesuit palette and design
to fit in.
It can carry the same gear as the wintercoat and the overalls themselves
have fire and acid armor in parity with the firesuit, but that is for
the clothing itself and not the wearer.
This is first and foremost a fashion item, as with how our game manages
fires, being fireproof on your legs and torso won't do anything with
your arms exposed...

<details><summary>This is how ATs looked at spawn before as
reference</summary>
<p>

</p>
</details>
## Why It's Good For The Game
The only "fashion" suit atmos have is their wintercoat, if an AT is not
using their "functional" clothing (MOD/Firesuit) they all default to the
wintercoat and look mostly the same and even their functional uniform
makes everyone also look the same as it covers everything (That is
something I like to be clear)
There is also the "issue" that AT and Engies have the same jumpsuit and
wintercoat with small changes, and that their department bags use orange
instead of yellow as a second color, which makes them look weird on ATs
and the CE.
So now we have something that ATs can use to look different from each
other while still keeping their job identity.
And, as I said in my previous PR, I just really want the pumbler job to
look like a plumber, when they are not firefighting at least.
## Changelog
:cl:Guillaume Prata
add: Atmos Tech now have new drip and will spawn with Atmos Overalls to
protect their clothing from gas leaks! (It will actually not protect you
against fire or leaks, but hey! It's the thought that counts!!)
/🆑
* Atmos overalls take 2
* Worn digi sprite refit
---------
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* Funny clown internals (#77963)
# About The Pull Request
This PR changes the internals that spawn inside the clown's survival box
for a new one with a rainbow sprite, higher O2 volume (same as the engi
ones) and a secondary gas on top of O2 to make things more interesting
for the clowns.
The gas options are:
BZ, which just adds hallucinations for the clown, without the brain
damage effect as it is in low percentages.
N2O will make the clown giggle and laugh, without the sleep.
Helium will give the clown a "funny voice".
These tanks are also added to the mail list of clown fans and the clown
costume crate at cargo.
And codersprites, I can polish them later if people think it is pixel
soup, I'm not happy with them that much, but making this looks good
might be above my paygrade...
<details><summary>Pics here</summary>
<p>


</p>
</details>
## Why It's Good For The Game
The main goal I have with this is to add more uses for Atmos Content to
other players in a flavorful way.
Atmos is not something the crew interacts in a positive way often and I
want to change that.
These tanks are something quite minor but flavorful IMO, also will make
people know Helium fucking exists...
The tanks *shouldn't* change much of the clown's round in a negative
way, and the default O2 internals are in every hallway's locker so even
if they don't want to deal with the hallucinations it is not a big deal
to dodge them.
## Changelog
🆑 Guillaume Prata
add: New funny internals for the clowns to spawn with. They come with O2
and a secondary gas between 3 options: BZ, Helium and N2O. Talk with a
"different tone" with Helium, giggle and laugh "uncontrollably" while
under the minor effects of N2O or have "fun" hallucinations while under
the minor effects of BZ.
balance: To not cut on how long the clown's O2 internals last due to the
mixed gases, the funny internals have 50% more gas volume, same as
engineers' internals.
/🆑
---------
Co-authored-by: CRITAWAKETS <sebastienracicot@ hotmail.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Funny clown internals
---------
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
Co-authored-by: CRITAWAKETS <sebastienracicot@ hotmail.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Generate theft objective target list more consistently (#78045)
## About The Pull Request
Fixes#77943
Moves the generation of traitor theft objective targets from `new` of
`/datum/objective/steal` to `initialize` of
`/datum/controller/subsystem/traitor`
`/datum/objective/steal` we would generate the full list of possible
theft targets _only_ if the list was already empty.
A recent PR added a secondary "destroy item" objective which has no rep
prerequisite, as a result it is initialised as soon as a traitor datum
is assigned. Importantly this happens _before_ the traitor's theft
objective is assigned.
The "destroy item" objective generates its own item targets using the
"theft item" datum as it is a type of thievery, this pollutes the list
to contain more than 0 entries.
From this point on the only things people can be assigned to steal are
the items that traitors can be assigned to destroy early in a round,
which aren't valid for most kinds of theft objective.
Making the subsystem generate the list before traitor datums are
assigned resolves the race condition, the number of rounds where
_nobody_ has any kind of theft objective and this list is unused is
exceedingly small.
## Why It's Good For The Game
You can get primary theft objectives again.
## Changelog
🆑
fix: Traitors should generate with "free objective" less often, and will
once more be assigned to steal things.
/🆑
* Generate theft objective target list more consistently
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Makes fanny packs be silent, others can't see what you put in or take out. (#78010)
<!-- 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
Just like the syndicate toolbox and a handful of other items.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
This is a blatantly stealth antag buff.
Pockets are 2 silent storage slots everyone has, so it is not adding
anything that antags didn't have access already.
But going from 2 to 5 small items can help a lot, also belts are a lot
smoother to use with their shortcut keys.
Love stealth antags, hate murderboners, gonna help my stealth boys not
be valid hunted because someone checked their chat logs from 10 minutes
ago and read that X player put Y contraband in their bag.
Or people that have some contraband names highlighted on chat... but no
one does that right.... right?
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game 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. -->
:cl:Guillaume Prata
balance: Fanny packs are now silent, no one will get a chat message
about what you put in or take out.
/🆑
<!-- 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: Aki Ito <11748095+ExcessiveUseOfCobblestone@ users.noreply.github.com>
* Makes fanny packs be silent, others can't see what you put in or take out.
---------
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@ users.noreply.github.com>
* Includes chicken breast to the produce console for variety (#77997)
## About The Pull Request
You fell for the bait title. I haven't seen any chicken recipes made in
weeks, by adding an orderable single breast at the produce console we
add the possibility of more varied recipes being made.
## Why It's Good For The Game
More varied use of cooking needs to take place, adding accessibility to
less used ingredients hopes to amend the current lack of variety in chef
players creations.
## Changelog
🆑
qol: Adds accessibility to breasts for service members
/🆑
* Includes chicken breast to the produce console for variety
---------
Co-authored-by: carshalash <carshalash@gmail.com>
* Organ harvester output direction selection (#78013)
## About The Pull Request
The organ harvester now defaults to dropping harvested limbs/organs to
the tile south of it. When the panel is open, you can alt click to cycle
the output between the cardinal directions.

~~I also killed some runtime that was happening in
`/obj/item/bodypart/head/update_limb(dropping_limb, is_creating)`
whenever the organ harvester removed a head. As far as I can tell, the
player facing side of this has not changed at all from this.~~
I think someone else did it first, and they probably did it better.
## Why It's Good For The Game
The organ harvester choosing where to output for you and giving no
indiciation of which way it is is very annoying. Whenever I set it up,
it always ends up dropping the organs on the same tile as a vending
machine or on the other side of a directional window. This gives a
little more control over where things get spat out.
## Changelog
🆑
qol: The organ harvester's output is more predictable, and the direction
can be changed by alt-clicking with the panel screwed open.
/🆑
* Organ harvester output direction selection
---------
Co-authored-by: Vladin Heir <44104681+VladinXXV@users.noreply.github.com>
* removes the nukie tool parcel (#77986)
## About The Pull Request
removes the tool parcel and places tools directly in their box
## Why It's Good For The Game
the step of having to pick up your tools invalidates why we put em there
in the first place - so nukies can use them in an emergency. its
annoying to put them back in your box.
the parcel was added because the tools could make the box go above 7
slots during the extended box station trait, but i fixed that in the pr
that made it so that trait increases the box size of that box
## Changelog
🆑
qol: removes the nukie tool parcel and places the tools directly in
their box
/🆑
* removes the nukie tool parcel
---------
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* Fixes space heaters dropping cells when they get deconstructed without one (#77992)
## About The Pull Request
Space heaters would drop cells when you construct and then immediately
deconstruct it, despite a cell never being put in.
This is because the space heaters would spawn in with a cell, and when
they're constructed they would set the cell reference to nul... but they
never actually deleted the cell. so it'd drop the cell anyways.
This makes sure the cell gets deleted when you construct it, so you
wouldn't get any extra cells when deconstructing.
closes https://github.com/tgstation/tgstation/issues/77990
## Changelog
🆑
fix: Space heaters no longer give extra cells when deconstructed
/🆑
* Fixes space heaters dropping cells when they get deconstructed without one
---------
Co-authored-by: iwishforducks <65363339+iwishforducks@users.noreply.github.com>
* Turns the `to_chat` message about being unable to move into a balloon alert (#77980)
## About The Pull Request
Just the tin!
Also cut the cooldown timer of the message in half, it looked like a
good number since balloon alerts disappear after a second or so.
Weird that this wasn't turned into a balloon alert already, it is one of
the most important messages, people being stuck into the shuttle chairs
is an old meme at this point...
The `to_chat` message does give you more information since it tells you
what you are buckled into, and I can add that back to have both messages
if requested.
## Why It's Good For The Game
Every now and then I get buckled into something without realizing, try
to move and just stand there processing why it is not working for 5 long
seconds until my brain can process all the information.
Using the chat for that simply doesn't work, even more if the it is auto
scrolling over radio or whatever else.
Maybe this helps new players too, I've been here for almost 5 years and
still get confused with why my inputs are not working every now and
then...
## Changelog
🆑 Guillaume Prata
qol: The "You can't move while buckled to X" is now a balloon alert
instead of a to_chat message. Hopefully we all get buckle stuck
processing why our inputs are not working less often for now on.
/🆑
* Turns the `to_chat` message about being unable to move into a balloon alert
---------
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
* [NO GBP]Refactors how sheets are ejected from mat container (#77945)
## About The Pull Request
As #77936 pointed out an infinite while loop occurs in the recycler.
This was caused due to my recent mat changes as follows.
When the recycler eats up an item. If it found any material inside, it
would attempt to eject any sheets formed from it over here
https://github.com/tgstation/tgstation/blob/ed71735fb3d60e834abf5771525c98809a0bb6f5/code/game/machinery/recycler.dm#L199
Inside this proc i first create the sheets in `null space` why is
explained in the comment
https://github.com/tgstation/tgstation/blob/ed71735fb3d60e834abf5771525c98809a0bb6f5/code/datums/components/material/material_container.dm#L599-L600
After doing logging & stuff i then would move the sheets back into its
target turf so it could get merged again
https://github.com/tgstation/tgstation/blob/ed71735fb3d60e834abf5771525c98809a0bb6f5/code/datums/components/material/material_container.dm#L607-L608
Unfortunately this would trigger `COMSIG_ATOM_ENTERED` signal which the
recycler is hooked onto. The recycler would then eat the newly ejected
sheets again, which would cause more sheets to be ejected, which would
again trigger the signal `COMSIG_ATOM_ENTERED` and you have your
infinite loop.
I did this because i had no clue how to stop the stack from merging when
it got spawned and this was a poor solution, so upon examining the code
i found there is a var to specifically stops stacks from merging
https://github.com/tgstation/tgstation/blob/ed71735fb3d60e834abf5771525c98809a0bb6f5/code/game/objects/items/stacks/stack.dm#L81
Yup there is specific param called `merge=TRUE` which allows you to
explicitly stop stacks from merging. I now use this var and manually
merge stacks afterwards without calling `forceMove()` so it doesn't
trigger the recycler anymore which caused the infinite loops.
## Why It's good for the game
Writing checks to see if an object came from null space is weird. It
makes the code difficult to reason with as such situations never happen.
Now it makes sense for an atom to be moved "into" null space for e.g.
when it gets deleted but for an atom to "return back from it" never
happens and you shouldn't be bothered with figuring out how that
happened.
## Changelog
🆑
refactor: sheets are merged in a better way when ejected from machines &
material related stuff
/🆑
* [NO GBP]Refactors how sheets are ejected from mat container
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* RCD directional window qol & wall mount patch. Code improvements (#77858)
## About The Pull Request
Fixes#77852
RCD can build wall mounts on reinforced walls
Closes#77848
Not a fix so labelling this as a qol cause it was always intentional but
now RCD can build directional windows without building a grill first.
Saving some matter units from building a grill is a plus
Added auto doc for some procs & made the extra delay when building
multiple structures into a define
## Changelog
🆑
fix: rcd can build wallmounts on reinforced walls
qol: rcd can build directional windows without requiring/building a
grill
/🆑
* RCD directional window qol & wall mount patch. Code improvements
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Autolathe fixes and code improvements (#78006)
## About The Pull Request
1. Fixes#78000
The while loop ran 1 too many times when printing stacks
2. Autolathe prints stacks of any amount in constant time as was the
case before
3. The autolathe will award the client with `getting_an_upgrade` only
once when printing multiple items that does not contain iron or glass &
updates the UI immediately upon printing
## Changelog
🆑
fix: autolathe prints the correct amount of stacks and merges it with
existing stacks on the turf
fix: autolathe takes constant time when printing stacks
code: autolathe will attempt to award you the "getting an upgrade" award
only once when printing multiple items & updates UI immediately
/🆑
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* Makes it easier to place tiles on multi-z holes (#77935)
## About The Pull Request
Adds the "open space click handler" to tile stacks, which makes it so
you don't have to pixel hunt for a turf on the BELOW z level in order to
fix a hole.
This exists on rods and rpds since they're often used to fix holes.
But wasn't added to tiles when they were made to be able to fix holes
directly, without rods.
Additionally, closes#77540 by having the open space click handler loop
up z levels so that it works if you're clicking on items from multiple z
levels away.
## Why It's Good For The Game
The current behavior can be very frustrating to work around, and appears
to not be intended.
## Changelog
🆑
fix: Made it easier to place tiles on multi z level holes
/🆑
* Makes it easier to place tiles on multi-z holes
---------
Co-authored-by: FlufflesTheDog <piecopresident@gmail.com>
* roundstart scryers now come with the nt frequency (#77957)
## About The Pull Request
fixes#77934
## Why It's Good For The Game
blegh
## Changelog
🆑
fix: roundstart modlink scryers now come with the nt frequency
/🆑
* roundstart scryers now come with the nt frequency
---------
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* QOL improvements to display case chassis (#77785)
## About The Pull Request
Display case chassis now has
Examine Hints
Screentips
Balloon alerts
Also moves wrench deconstruction to wrench_act, removes single-letter
vars, cuts down on copy paste, and makes the electronics drop when
deconstructed.
## Why It's Good For The Game
I am actually bored and looking for things to do.
Someone asked how to build a display case, I didn't even know myself so
I looked up in code how to, and saw features I didn't even know existed.
Thought I might as well make it all visible to players so they can take
full use of them.
## Changelog
🆑
qol: Display case chassis now uses balloon alerts, screentips, examine
hints, etc. Basically, the construction steps are more visible to
players.
/🆑
* QOL improvements to display case chassis
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Fix airlock painter with GAGS airlocks (#77742)
## About The Pull Request
Checks for greyscale_config before applying icon, preventing it from
displaying the mapping helper icon in the event it has a GAGS config.
## Changelog
🆑 LT3
fix: Using an airlock painter on a GAGS airlock works properly
/🆑
* Fix airlock painter with GAGS airlocks
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Transit Tube Fix and New Rotator Disposal Pipe (#77843)
## About The Pull Request
Fixes flipped transit tube stations being inaccessible and adds a new
rotator disposal pipe which rotates the incoming atom 90 degrees no
matter which direction the atom comes from.

## Why It's Good For The Game
Adds new disposal pipe usage for cool projects and fixes a bug.
## Changelog
🆑
add: New rotator disposal pipe.
fix: Flipped transit tube stations are now accessible in the RPD again.
image: New rotator disposal pipe sprite.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Transit Tube Fix and New Rotator Disposal Pipe
---------
Co-authored-by: Comxy <tijntensen@gmail.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>