* Adds IS_TRAITOR macro (#74293)
## About The Pull Request
i was making another PR and found that we have cultist, heretic, and
nuke op IS macros but not one for traitors
this adds one and then replaces it where applicable, mostly in checks
where a traitor device does something different if you are not a traitor
## Why It's Good For The Game
better for people making traitor only devices to have this macro, as it
is more clear and also cleaner in general i think
## Changelog
🆑
code: adds IS_TRAITOR macro
/🆑
* Adds IS_TRAITOR macro
---------
Co-authored-by: Sol N <116288367+flowercuco@users.noreply.github.com>
* Adds The Sturdy Shako (HoS Hat) (#74277)
## About The Pull Request
Adds a new craftable HoS shako, made from the standard peaked cap and
some plasteel and gold.

Moves the HoS cap into a subtype `/obj/item/clothing/head/hats/hos/cap`
to avoid catching the beret in the crafting recipe, the base type
`/obj/item/clothing/head/hats/hos` is now a generic subtype which should
never exist.
(Yes there's a TF2 reference included with the hat)
## Why It's Good For The Game
Adds an additional level of style for an HoS willing to put a little
effort into gathering the required materials. As it is crafted as a
one-to-one trade with another headgear there is no additional spare
headgear introduced.
## Changelog
🆑
add: The Nanotrasen Costuming Department has released specifications for
how to convert the Head of Security's cap into a shako.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Adds The Sturdy Shako (HoS Hat)
---------
Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Remove janitor key UnregisterSignal [NO GBP] (#74280)
## About The Pull Request
Removes UnregisterSignal when the janitor access key ring is destroyed.
Signal will clean itself up. Mentions adding janitor keys to the
Custodial Locator, which I forgot on the last PR
https://github.com/tgstation/tgstation/pull/74181
## Changelog
🆑 LT3
qol: Janitor access keys now show up on the Custodial Locator tablet app
/🆑
* Remove janitor key UnregisterSignal [NO GBP]
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Adds bacteria rich moldy food to random trash spawners. (#74276)
## About The Pull Request
So, as bacteria bread from perma vendor was nerfed, the only way to
obtain mold for cytology is from the mini-fridges. And they won't even
spawn when needed. Correct me if i'm wrong.
And so this adds moldy breadslices and pizzaslices to
`random/trash/garbage` spawner which appears in trashcarts and in
trashbagsfrom the trashcarts. Also added it to `grille_or_waste` spawner
so it can just randomly spawn on the floor.
About the damp rag. Just thought that there should be at least some
piece of cloth at pile of garbage, as there is none at the moment. And
it's quite usefull also, you can clean yourself or your fingerprints
with it. Can cut it out if needed, not a big deal.
## Why It's Good For The Game
More chances to find what you want to do cytology.
Cytology slightly more practical.
Damp rag is usefull.
## Changelog
🆑
add: Bacteria rich moldy food (like breadslices and pizzaslices) now
spawn in trashcarts, trashbags and randomly on the floor.
add: Damp rag now spawns in the trashcarts and etc.
/🆑
* Adds bacteria rich moldy food to random trash spawners.
---------
Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>
* Debug ID Cards Can Now Use Vending Machines (#74278)
## About The Pull Request

This always pissed me off, and has been pissing me off for the last year
or so. I decided to sit down and figure out how to stop this from
occurring, and got it.
## Why It's Good For The Game
When I'm debugging several types of stuff regarding payment in my
pre-fabbed debug suit, I really don't want to fucking have to spawn yet
another ID card with an actual job on it and transfer money to that just
so I can use a vending machine, I WANT TO JUST USE THE VENDING
MACHINE!!! TIME IS PRECIOUS!!!
It does still draw from the station budget, but that's fine because this
is a debug card that is meant to be dangerous to hand out. It's a
debugger's tool. If you're concerned on people somehow getting it from
an admin and beign able to buy smokes from vending machines, they were
still able to withdraw money by alt-clicking on it before this change.
## Changelog
Nothing that really concerns players.
* Debug ID Cards Can Now Use Vending Machines
---------
Co-authored-by: san7890 <the@san7890.com>
* Removes networks from the game (#74142)
## About The Pull Request
This is a continuation of
https://github.com/tgstation/tgstation/pull/74085 - I announced in the
comments there that this would be my next PR, and this is it.
Removes SSnetwork, ``/datum/ntnet``,
``/datum/component/ntnet_interface``, ``var/network_root_id``, the
network unit test, and a lot of other things related to networks.
- NTNet circuits now check for an Ntnet relay, and uses signals to
operate.
- Logs in Wirecarp is now only for PDA and Ntnet Relay things, so you
can no longer see what ruins exist using it (why should Wirecarp know
that Oldstation spawned? The flavor is that they dont know its there).
- Removed it from MULEbots entirely, I don't think it even did anything
for them? Botkeeper seems to work without it, so it's possibly there
from pre-tgui PDAs.
- Moves assigning random names to a base proc instead of being tied to
network, this is things like random-naming scrubbers/vents. The behavior
hasn't changed at all.
- Makes Ntos work for consoles when relays are down, as the comments
said they're supposed to (because they're wired). I think this was an
accidental change on my part, so this is a revert of that.
## Why It's Good For The Game
Ntnet is ancient code that hasn't given us much that we can't do with
already existing alternatives, we've been slowly moving away from it for
init times, and though a large portion of that was limited to airlocks,
I still don't think this is a system worth keeping around.
It's way too complex to expect feature coders to do anything with it,
and too old with better alternatives for anyone to want to improve any
of it.
## Changelog
🆑
fix: Computers are now properly connected to Ethernet, and can use Ntos
when Relays are down.
refactor: Removes Ntnet and Ntnet interfaces, which was only used by
Ntnet circuits (which now directly checks for a Relay to work) and
MULEbots, which did nothing with it.
balance: Wirecarp no longer tells you what ruins spawned in a round,
instead it's limited to PDA logs, and tells you the source too. This
means the RD can catch someone running illegal programs if they don't
make any attempt at hiding it.
qol: Wirecarp logs is now set to save 300 at once, instead of 100 and
being increased to 300 by the RD during the round. This is pretty
insignificant, since there's no reason to NOT want as many logs as
possible.
/🆑
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* Removes networks from the game
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* Machines can now be pried open multiple times and maintain their initial densities (#74163)
## About The Pull Request
These changes fix how machines are pried open with crowbars. Currently,
most machines can be pried open, but many of them have no method for
being closed again. This means they can be pried once, and then never
again (as their internal logic has them stuck in an "open" state).
Additionally, the densities of these machines is also inconsistent, as
density is tied to the procs for opening/closing machines (open =
non-dense, closed = dense). Thus, these new changes allow desired
densities to be passed to `open_machine()` and `close_machine()`, as
well as `default_pry_open()`, meaning that atypical machine densities
can be maintained (e.g. machines that should remain dense when open, or
non-dense when closed).
I've also added a `close_after_pry` boolean parameter to the
`default_pry_open()` proc, which determines whether to immediately close
a machine after opening it. This is useful for machines that don't
really have a use case for remaining open, often lacking a sprite to
represent this state as well.
* Note: Opening and immediately closing machines with this boolean will
still drop their contents onto the floor, but will now immediately
"close" in their logic, allowing for further prying attempts in the
future.
It's worth noting that this implements default density values for these
procs, which match the existing behavior for machines, so as to
(hopefully) not disrupt existing or expected machine behavior.
Two caveats to these changes currently exist:
1. On machines that immediately close after prying, the prying action
can now be spammed to the chat with repeated clicking. I'm uncertain if
this needs some sort of spam protection or if it's fine as is.
2. I've only been able to manually test this code. I'd love to write
unit tests for it, as it affects a lot of different machines, but don't
know where to begin with DM Unit Testing (or which files would be good
examples to reference in the code base).
* Note: I did manually test each and every machine that calls
`default_pry_open()` and they all seem to be working correctly. (Except
for `obj/machinery/plumbing/sender`, but that doesn't seem to need
prying, as it has no contents to drop, only reagents.)
As always, let me know if any improvements/changes should be made.
This closes#26833.
## Why It's Good For The Game
These changes allow crowbar prying to correctly occur multiple times on
any machine, which is intended behavior. It prevents player confusion
that could occur when a machine couldn't be pried open a second time
during a shift, even though it had previously been pried before, forcing
players to question themselves. (Are they missing something? Did they
perform the action a different way last time? Is the machine actually
still powered on instead of off? Etc.)
These changes also maintain the correct density for machines after
prying, preventing scenarios where a machine might behave differently
once it had been pried open. (An example of this was being able to walk
through a smartfridge after prying it open.) Additionally, players are
no longer required to know/use workarounds (such as machine disassembly)
to retrieve a powered-off machine's contents.
Overall, these changes improve consistency around machines, creating
more scenarios where they behave as players would expect.
## Changelog
🆑
fix: machines can now be pried open more than once.
fix: machines now have the correct density when pried open.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Machines can now be pried open multiple times and maintain their initial densities
* wew
---------
Co-authored-by: Antonio Tosti <5588048+atosti@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Minigame DLC - Intergalactic Basketball League (#72459)
## About The Pull Request
New DLC bout to drop.

Lots of new things included:
- New basketball minigame that can be played between 2-7 players
- Crafting recipe for basketballs using leather sheets
- Crafting recipe for basketball hoops using metal, rods, and durathread
- New basketball sounds for the ball and hoops
- New scorecard that can be reset using CtrlClick
- Basketball hoops can be rotated using a wrench and AltClick
- Dunking and shooting animations.
### New basketball mechanics that now utilize stamina:
- Dunking costs large stamina and you must be directly adjacent to the
hoop and click on it.
- Shooting costs medium stamina and uses RMB. Shooting lets you aim the
ball over peoples heads, meaning anyone obstructing your path will be
bypassed. There is a half second delay during shooting where someone can
bump or push to prevent the shot from succeeding.
- Shooting from further away results in less accuracy. If you do not
click directly on the hoop, there is also an accuracy penalty!
- Passing costs no stamina and uses LMB. Trying to score into the hoop
via passing results in a reduced chance.
- Spinning costs medium stamina while holding the ball. It gives a
reduced chance for the ball to be stolen but decreases accuracy for
shooting.
- Pushing a player using RMB will attempt to steal the ball and drain
their stamina.
- The chance to steal the ball is based on the stamina of both players
and the direction they are facing. If the person with the ball is at low
stamina, and the person stealing is at full stamina, they will have a
higher chance. Likewise, if the person with the ball is face to face
with the stealer, then there is a higher chance for the ball to be
stolen. If the person has their back to the stealer, then it's a lower
chance.
- Shooting from more than 2 tiles away, results in 3 points. See below
picture to know the distance.

### Now to introduce the teams:
<details>
<summary>Nanotrasen Basketball Department</summary>

</details>
<details>
<summary>Greytide Worldwide</summary>

</details>
<details>
<summary>Lusty Xenomorphs</summary>

</details>
<details>
<summary>Space Surfers</summary>

</details>
---
Big shoutout to the nukie round a few weeks ago where the nuke ops
challenged the crew (and clown) to a basketball match on their rebuilt
basketball shuttle. The nukies won, but it made me realize that the
basketball mechanics were very raw and needed some polishing.
#### TODO LIST
- [x] Fix bug where ball only goes over peoples heads if they are 1 tile
away
- [x] Remove leftover code comments and procs
- [x] Rebalance stamina values (maybe move this to different ball types)
- [x] Fix basketball stadium template runtiming from wall smoothing
during load
- [x] Fix space surfer stadium having an air breach somewhere
- [x] Add more sounds for when ball is passed, shot, or dunked
- [x] Make it so that holding a ball while on the floor isn't possible
(to avoid those meta cheese strats)
- [x] Drop basketball lets mobs make sounds when spinning (need to
detach signal?)
- [x] Finish adding a simple lobby menu for minigame
## Why It's Good For The Game
_If you can't slam with the best, then jam with the rest._
## Changelog
🆑
add: Add crafting recipe for basketballs (leather sheets) and basketball
hoops (metal, rods, and durathread)
add: Add new basketball minigame for 2-7 players. There are 4 different
courts and teams by default with more planned to be added later.
add: New basketball mechanics that uses stamina. Shoot with RMB, pass
with LMB, and dunk by clicking the hoop while adjacent. Spinning while
holding the ball decreases the chance for someone to steal the ball, but
it decreases your shooting accuracy. Shooting from 2 tiles away lets you
score 3 points.
qol: Basketballs now play a buzzer sound when someone scores. CtrlClick
will reset the scorecard and AltClick with a wrench will rotate the
hoop.
qol: Dunking and shooting animations for basketball.
soundadd: Added basketball bounce sound with credits attribution
imageadd: Added basketball icon to minigames. Move baseball and
dodgeball icons to toy/balls.dmi
/🆑
* Minigame DLC - Intergalactic Basketball League
* Update CentCom_skyrat_z2.dmm
* raptor
---------
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: lessthnthree <three@lessthanthree.dk>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
* Changes guillotine tips to span_notices and fixes a bug about it. (#74161)
## About The Pull Request
Current description of guillotine isn't quite comfortable to read so i
changed it to span_notices.


Also fixed a bug, which occurs if you try to behead already beheaded
body and then you just can't use the guillotine anyway.
## Why It's Good For The Game
yee
## Changelog
🆑
qol: guillotine description tips are now span_notices (blue text)
instead of just a bunch of grey text.
fix: fixed a bug that if you try to behead body without a head with
guillotine it just stops working.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Changes guillotine tips to span_notices and fixes a bug about it.
---------
Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Turns stickers into a component and an element (#74091)
## About The Pull Request
Adds /datum/element/sticker, and /datum/component/attached_sticker
Sticker items now mostly operate off /datum/element/sticker
The sticker element, hooks the whole "attach to stuff" and adds the
attached_sticker component to its target
The attached_sticker component, adds the overlay, hooks the clean and
on-fire signals.
## Why It's Good For The Game
Allows to check if a sticker is present on an object (which I will use
later)
Code is probably cleaner???
## Changelog
🆑
refactor: Stickers use a component and an element now to do their
sticking
/🆑
* Turns stickers into a component and an element
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
* [NO GBP] Aux construction console RCD works again. (#74158)
## About The Pull Request
Fixes#74145
Forgot to make aux construction console RCD use `afterattack()`.
🆑
fix: aux construction console RCD works again
/🆑
* [NO GBP] Aux construction console RCD works again.
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* Fixes atmos machinery breaking when the area is edited/renamed via station blueprints & Deletes empty areas, ARCD upgrades
* areas
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: lessthnthree <three@lessthanthree.dk>
* Adds non-clothing item equipping others feedback messages (#73982)
## About The Pull Request
Things like pens weren't giving any feedback messages when you put them
on someone else, and I ran into this while working on another PR so I've
dealt with that
Renames `worn_dangerous` to `show_visible_message` as it was only used
to confirm if there would be visible messages or not
The `DANGEROUS_OBJECT` clothing flag is a trait now, so it can be put on
non-clothing items too
Removing non-clothing items from someone has been unchanged.
## Why It's Good For The Game
People should be able to identify that someone is putting something on
them, and recognize what that is if they pay attention.
This means that a player cannot reverse pickpocket a grenade onto
someone else without giving any indication of doing so
## Changelog
🆑
balance: Putting a non-clothing item onto someone else creates a visible
message the same way a clothing item would.
/🆑
* Adds non-clothing item equipping others feedback messages
---------
Co-authored-by: ArcaneDefence <51932756+ArcaneDefence@users.noreply.github.com>
* Fixes decals not layering as expected in world (#74232)
## About The Pull Request
They just... were not passing their layer into the element. Stupeeed
Rearranges some layers to ensure things work as they do now
## Why It's Good For The Game
Closes#74165
Should fix weird decal layering. If it doesn't yell at me.
## Changelog
🆑
fix: Fixes decals layering weird in some cases
/🆑
* Fixes decals not layering as expected in world
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Dump ejected implant contents onto our turf, not inside our mob (#74120)
## About The Pull Request
Fixes#74119
This was probably a victim of the storage refactor.
When removing items, it was dumping them _inside the mob_ rather than on
the floor, additionally it was putting mob blood on every item already
inside the mob rather than on the items being dumped for some reason?
Now it doesn't do that.
## Why It's Good For The Game
Removing a storage implant from someone should dump the items, not trap
them in your body.
## Changelog
🆑
fix: Removing a storage implant from someone will dump the items on the
ground rather than inside the mob.
/🆑
* Dump ejected implant contents onto our turf, not inside our mob
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Replaces internal_organs with organs
* Makes all of the necessary internal_organs -> organs in our files to compile
And it seems to work too!
---------
Co-authored-by: Time-Green <timkoster1@hotmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Roundstart Xeno egg deliveries create a Captive Xenomorph team, gives regular xenos a fluff objective so their popup isn't blank. (#73852)
## About The Pull Request
Xenomorphs who are a product of the roundstart xenobio egg delivery will
now spawn as "Captive Xenomorphs", who receive an objective to break
containment. Here's how it works:
When a delivery egg is generated that area will be marked as the
"captivity area". Xenomorphs born within this area now have their own
team, and have their own section in the roundend report that will
greentext them based on if they were able to survive and escape
captivity. Xenomorphs born outside of this area will spawn as normal
Xenomorphs, with no escape objective or special fanfare.
To further encourage people from actually taking the role and
potentially resigning themselves to an hour in Xenobio CBT prison, the
first of the hive gets their own header on the roundend report.
(When I say "team" here, I mean they receive a different antag team
datum. They're still able to collaborate and cooperate with other
Xenomorphs, they just have a different title and extra objective in
addition to the bonus roundend report limelight.)


(This also adds a basic "survive and advance the hive" objective for all
xenomorphs, since their objective popup was otherwise completely blank).
Since the captivity area is entirely dependent on the location of the
egg itself, admins can plop one of these down anywhere, and mappers
don't have to put the egg mapping helper specifically in Xenobio.
For clarification -- To be qualified for the Captive Xenomorph team, **a
delivery egg must be spawned**, and the xeno you inhabit must be born in
the same area the egg was spawned. If the queen breaks captivity and
starts nesting elsewhere on the station, their children will be born as
normal Xenomorphs, not Captive Xenomorphs.
## Why It's Good For The Game
Adds a bit of distinction, and gives bragging rights, to anyone bold
enough to take a roundstart xeno roll and escape with it.
The Xeno egg delivery is already rare enough, I think it deserves a bit
more fanfare (especially considering the dramatic impact it sometimes
has on the direction of a round).
## Changelog
🆑
add: Xenomorphs born in the room the roundstart delivery egg was spawned
in will be part of a special "captive xenomorph" team, tasked with
escaping and tracked in the roundend report.
fix: Regular Xenomorphs no longer receive a blank objectives popup on
spawn.
/🆑
* Roundstart Xeno egg deliveries create a Captive Xenomorph team, gives regular xenos a fluff objective so their popup isn't blank.
---------
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Macro Helper For Re-Used Turf_Decal Patterns (#74171)

oh that's sexy
<!-- 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
Hey there, blast from the past PR format. Can you spot the issue here?

Well, I did while working on #74169, and it pissed me off. This is a
really simple pattern, and the only reason why it's just copypasted (and
prone to such errors) is because no one took the time to do it properly
like this. So, I just decided to do it while I had time today. Very
nice.
I also removed all the names because there was no point in them: in all
contexts you would be operating off the typepath, the name would never
come up. like so:

memory save? it's just un-needed anyways
<!-- 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
Silly error proofing is nice! Way easier to add new colors! No need to
ctrl+c/ctrl+v everything to death anymore! whoopie
<!-- 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. -->
Nothing that players should fret about.
<!-- 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. -->
* Macro Helper For Re-Used Turf_Decal Patterns
---------
Co-authored-by: san7890 <the@san7890.com>
* Access Keys list and destroy proc (#74181)
## About The Pull Request
- Puts recently added access key rings into the janitor devices list
- Access key rings now tracked in Custodial Locator tablet app
- Access key rings unregister their department signal when destroyed
## Why It's Good For The Game
Management of access key rings.
## Changelog
🆑 LT3
code: Access key rings added to list on creation
code: Access keys unregister signal when destroyed
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Access Keys list and destroy proc
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Fix missing meat clown food types (#74146)
🆑 coiax
fix: Fixed missing food types for the meat clown, it is now meat and
fruit.
/🆑
Liked by lizards, toxic to moths, and neutral to humans and felnids in
terms of species biases.
The construction recipe is steak + banana, but the resulting product has
no food types, making it blandly suitable for everyone. This is an
oversight. Not everyone will like a mixture of banana and flesh.
* Fix missing meat clown food types
---------
Co-authored-by: Jack Edge <yellowbounder@gmail.com>
* Fix holo signs being able to be frozen (#74103)
🆑 coiax
fix: Holosigns, like the atmos holofan, can no longer be frozen by low
temperature water vapour.
/🆑
Seen this a couple of times where a holofan's been "frozen" which is
quite silly.
This won't actually _do_ anything until #74102 is merged though, but
let's keep our changes separate.
* Fix holo signs being able to be frozen
---------
Co-authored-by: Jack Edge <yellowbounder@gmail.com>
* Fix inconsistency in FREEZE_PROOF flag (#74102)
Although all objects that _have_ the flag attach it to
`resistance_flags` (which is what the define location implies it's
supposed to be set on), all the code that checked it for the purposes of
applying the freezing element used `obj_flags`.
As far as I can tell, that meant the only things immune to freezing were
things that "blocked z falling from above".
Also, freezing only happens with some obscure weapons and low
temperature water vapour, but hey 🤷.
🆑 coiax
fix: Coffee cups are now correctly immune to becoming frozen by low
temperature water vapour.
/🆑
---
Shout out to RaveRadbury who helped me with debugging this.
* Fix inconsistency in FREEZE_PROOF flag
---------
Co-authored-by: Jack Edge <yellowbounder@gmail.com>
* Bone gel now spawns in stacks of 4 inside Paramedic and Medical ERT belts (#74063)
## About The Pull Request
Bone gel spawned inside player medical belts, for the roles of Paramedic
and Medical ERT, now spawns in a stack of 4. Previously they would spawn
with only a single stack. This new amount matches the stack size
received when purchasing the identical item from a Nanomed, or ordering
it in a Cargo crate.
As such, this change creates consistency around the number of uses in an
fresh, "unopened" bottle of bone gel.
## Why It's Good For The Game
Creating a uniform, default stack size for bone gel keeps interactions
with the item consistent and predictable. In the case of paramedics,
their starting kit also includes 5 stacks of surgical tape, so having a
few stacks of bone gel matches the player expectation that they have
enough supplies to treat a few instances of each type of injury (rather
than only one).
Addressing this discrepancy also Closes#71393.
## Changelog
🆑
balance: Bone gel now spawns in stacks of 4 in Paramedic and Medical ERT
belts
/🆑
* Bone gel now spawns in stacks of 4 inside Paramedic and Medical ERT belts
---------
Co-authored-by: Antonio Tosti <5588048+atosti@users.noreply.github.com>
* Adds the Snatcherprod. It steals stuff from peoples hands and puts it into yours! (#73746)
## About The Pull Request
Adds the Snatcherprod, the telecrystal version of the teleprod. It
yoinks an item out of the victim's hand, and puts it into yours. Or on
the ground, if your hands are full.
You make it like you would a teleprod, but using a telecrystal instead.
## Why It's Good For The Game
It was a funny joke I observed. Also I'm deeply sleep deprived and so my
better judgement eludes me during these capricious moments.
## Changelog
🆑
add: Adds the Snatcherprod. Like a teleprod, but it steals stuff from
peoples hands instead. Made using a telecrystal, rather than a bluespace
crystal.
/🆑
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
* Adds the Snatcherprod. It steals stuff from peoples hands and puts it into yours!
---------
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
* EMP no longer turns off defib safeties (#74018)
## About The Pull Request
EMP can no longer disable safeties on defibs
## Why It's Good For The Game
Rewarding people with a slightly stronger baton that you don't drop when
you get knocked down for literally just mixing a crushed can and like
two common ingredients is a terrible idea.
edit: also ignores shielding and blocks
## Changelog
🆑
balance: You can no longer EMP defibrillators to make them combat-usable
/🆑
* EMP no longer turns off defib safeties
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
* Audits usage of isanimal() vs isanimal_or_basic_mob() (#74029)
## About The Pull Request
There's a couple of open issues which fix places where only simple
animals were considered, but they are doing it piecemeal.
I decided to just go through every instance of `isanimal` or
`subtypesof(mob/living/simple_animal)` I could find, identify which
should also affect basic mobs, and fix them.
I left out the two others which are already in PR, I'm not stealing your
GBP.
Fixes https://github.com/tgstation/tgstation/issues/68881
## Why It's Good For The Game
Consistency, mostly.
As far as I can tell all of these things _should_ have effected basic
mobs, but didn't.
This fixes a fair number of bugs but also they're bugs that nobody
noticed or reported.
There are a couple of places I did not update which will need updating
in future. These are:
- Dextrousness checks, because basic mobs don't have that yet.
- The Charge cooldown action, because frankly I couldn't tell what it
was trying to do.
alright here goes
## Changelog
🆑
fix: Carp will once again be healed from being near carp rifts
fix: Sepia slime cores and the rewind camera now work on Ian
fix: Sapient ridden carp (or cows) can throw off their riders by shoving
them, or by performing the spin emote.
fix: Giant Spider AI will be disabled by the timestop spell
fix: Ian can eat envirochow
fix: Mice, Frogs, and Cockroaches will no longer set off bear traps
fix: You can put a macrobomb implant into Cayenne (or Ian)
fix: Ian will now recognise that being squeezed by a cyborg is a nice
hug
fix: The player panel will tell admins if you're currently a corgi
fix: The staff of storms deals massive damage to Bileworms and Giant
Spiders
fix: Ian will whimper if forced to scream
fix: Slimes can consume space carp
fix: Mice can be captured in xenoballs
fix: You can use pacifying potions on Giant Spiders
fix: Sgt Araneus can be fitted with a xenobiological radio implant
fix: Sapient corgis no longer count as living players for the purpose of
highlander escape objectives
fix: The random sentience event can now target corgis and sergeant
araneus
add: The random sentience event can target a wider array of farm animals
fix: Petsplosion wizard event can target corgis
add: Petsplosion wizard event will now target farm animals and
mothroaches
fix: The colossus possession crystal can now actually possess the
cockroach it spawns, does not kill you instantly upon ending possession
/🆑
* Audits usage of isanimal() vs isanimal_or_basic_mob()
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Gives the chainsaw start/stop/loop SFX, makes the arm-mounted chainsaw a subtype of a regular chainsaw (#73996)
## About The Pull Request
The chainsaw now has an audio loop, as well as SFX for starting and
stopping. I'm pretty confident that I did the attribution stuff
correctly.
https://user-images.githubusercontent.com/28870487/225054900-4bf87ee7-9245-4004-b414-77d0e6e83a7c.mp4
I think this came out well. It may be a bit loud, but I wanted the
volume to be about the same as how the chainsaw slash sound comes out.
Audio stuff isn't really my forte, so let me know if anything sounds
off, or if any adjustments should be made.
To make this work for the mounted chainsaw (more specifically, the
abstract object that enters your hand), it has been made into a chainsaw
subtype. An updatepaths script has been included in the event that
someone has a map where the former path was included (why??).
## Why It's Good For The Game
Makes the chainsaw more menacing. It's one of the most powerful and
beloved pieces of crew weaponry, in addition to being a fucking
chainsaw. If you aren't keen on walking around the hallways with the
chainsaw loop playing like the badass you are, you can always just keep
it off until you get into a fight.
Gives an extra bit of immersion for those special moments where you get
to chainsaw someone to death.
## Changelog
🆑
soundadd: The chainsaw now has SFX for starting, stopping, and idling.
/🆑
* Gives the chainsaw start/stop/loop SFX, makes the arm-mounted chainsaw a subtype of a regular chainsaw
---------
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Makes all CTF windows actually indestructible (#74021)
## About The Pull Request
Adds a spawner for indestructible shuttle windows
Replaces all "hardened windows" (which were actually not unbreakable)
with proper unbreakable windows
## Why It's Good For The Game
Fixes#73297, people shouldn't be breaking into space in CTF
## Changelog
🆑
fix: All CTF windows are now indestructible, fixes breaking into space
during CTF.
/🆑
* Makes all CTF windows actually indestructible
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
* Cleans up `..()` usage in organs' `Insert()` and `Remove()` (#74055)
## About The Pull Request
fumbled around while investigating #74047 and turns out there's other
organs that have the same issue as the reported alien organs in that
issue. went around and replaced parent calls where applicable
(cursed/demonic hearts, flashlight eyes, alien organs, abductor glands)
## Why It's Good For The Game
Fixes#74047
Considerably less ghost internal organs, hopefully less unreported jank
on removing organs
## Changelog
🆑
fix: fixed a few internal organs acting wonky on inserting/removing
(some xenomorph organs, abductor glands, flashlight eyes, demon/cursed
hearts)
/🆑
* Cleans up `..()` usage in organs' `Insert()` and `Remove()`
---------
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
* Fix: DNA Infuser & Unit Tests, Organs Bugfixes (#73003)
>_"I don't remember buying tickets to Mutants on Ice."_
>-Duke Nukem
This PR is (hopefully the final) part of a series of my continuing
refactors of the DNA Infuser. This PR represents a "quality pass" which
should also iron-out the rest of the most impactful bugs.
Granular list of changes:
- This PR adds unit tests for the DNA Infuser organs and
`/datum/status_effect/organ_set_bonus` as recommended by @AnturK
- I noticed that the base `/datum/infuser_entry` was being used in the
machine for the Fly and "rejected" infusions, whereas usually we would
expect it to be a base type used only as a development template. I
corrected this issue and created `/datum/infuser_entry/fly` to be used
for that use-case instead.
- Added `/mob/proc/can_mutate()` and `/mob/living/carbon/can_mutate()`
to replace a few copied lines across several files. The proc is normally
used in the context of mutating a Human via their DNA.
- I fixed a ton of typos in organ-related code, specifically where
"receiver" was typo'd as "reciever". There are far more of those typos,
but I limited the scope of my changes to organs.
- I noticed a bug in `/datum/species/proc/regenerate_organs` wherein a
race condition caused an organ to remove itself before it's done
inserting itself. This happens because the Fly organ set bonus runs
`regenerate_organs` which calls `Remove` on the organ while `Insert` is
still in the call-stack. I added `INVOKE_ASYNC` as a workaround, and
also changed the order the signals are emitted to prevent future bugs.
This bug primarily only impacted the flyperson species transformation,
which was part of the DNA Infuser's flyperson infusion organ set bonus.
- In my last refactor PR #72745 I also introduced a bug in
`/obj/machinery/dna_infuser/proc/infuse_organ` wherein I forgot to add
the usage of `new` when attempting to implant new organs, and this PR
fixes the erroneous code.
- Fxed a bug which causes the organ set bonus to activate when mixing
organs from different sources, which is caused by a developer oversight
wherein all `/datum/status_effect/organ_set_bonus` had identical IDs.
- Added a cleaner `replacetext`-based way of handling pronouns in
`/datum/element/noticable_organ/proc/on_receiver_examine`, using custom
macros `%PRONOUN_S` and `%PRONOUN_ES` as advised by @MrMelbert
- This PR also fixes#72767
With the changes in this PR the machine will finally work as we expect
it to. By adding unit tests we will also be able to ensure that it works
as expected from now on. I feel confident saying that the completeness,
algorithmic correctness, and code health of the DNA Infuser is much
better than it was before.
🆑 A.C.M.O.
fix: Fully fixed the DNA Infuser, which will now infuse organs as
expected.
fix: Fixed flyperson species transformation and organ set bonus, which
was throwing a runtime.
fix: Fixed many typos in organ-related source code.
/🆑
---------
Co-authored-by: Time-Green <timkoster1@hotmail.com>
* *shrug
* Uncommented the line Gandalf wanted uncommented
* Properly fixes CI on this one, hopefully.
---------
Co-authored-by: Dani Glore <fantasticdragons@gmail.com>
Co-authored-by: Time-Green <timkoster1@hotmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* More stuff to construct & destroy (#73942)
## About The Pull Request
**1. Suit Storage Units**
- What about them?
1. You can print "suit storage unit" circuit boards from engineering &
science circuit printer's after research to make more suit storage
units, now since they behave like regular constructable machines you can
deconstruct them via screwdriver & crowbar.
2. You can upgrade its capacitor to get faster charging speeds
- Why its good for the game?
1. You can rebuild these in the event they get destroyed
2. Better tier capacitors = faster charging speeds
3. More storage units = More places to decontaminate your equipment +
Recharge more mod suits made in robotics
4. If you decide to leave the game or your done using a mod suit e.g. a
mining mod suit rather than keeping it to yourself or throwing it away,
just build a suit storage unit and hang it there so other players can
use it i.e., sharing is caring.
**2. Freezer Cabinet**
- What about them?
1. They are now craftable

3. You can deconstruct them with a welding tool.
- Why its good for the game?
1. You can now make more of them if they get stolen/destroyed
2. More places to store food, dead bodies, whatever
**3. Flood Lights**
- What about them?
They can now be fully deconstructed in the exact opposite sequence you
constructed them.
- First use screwdriver to open its panel
- Then use empty hand to remove light
- Then use screwdriver to unscrew the wiring from frame
- Use wire cutter to remove wiring completely
- Finally use wrench to completely deconstruct frame
- Why it's good for the game?
Reclaim used material to build flood light else where . Also much more
clean than what the wiki is suggesting.

## Changelog
🆑
add: suit storage unit circuit boards to engineering & science
department circuit printers.
add: freezer cabinet as a craftable & destructible item.
qol: flood light can now be deconstructed rather than destroyed/thrown
away.
/🆑
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* More stuff to construct & destroy
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Minor grammar fixes (#73994)
## About The Pull Request
Not much to discuss.
Fixed name of box of party poppers and camera tag of tech_storage.
## Why It's Good For The Game
Grammar
## Changelog
🆑
spellcheck: fixed a box of party_poppers and camera tag "tech_storage"
/🆑
* Minor grammar fixes
---------
Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>
* Adds the Smoking Room icebox surface ruin (#73876)
## About The Pull Request
My contribution to the March Into Mapping/Mapness event -- The forlorn
homestead of mister Charles Morlbaro, a high-brow individual with a
taste for cigarettes. This ruin spawns on the surface level of Icebox.

A local of the ice planet, Morlbaro lived a peaceful life at home, until
an _incident_ compromised one of his windows. Fearing the cold and
unable to keep anything larger than a cigarette lit, he sequestered
himself in his private smoking room, and hasn't been seen since.
...
Oh, right, the loot. That's the most important part for some of you
guys.

Where there's smoke, there's fire, and where there's cigarettes, there's
lighters. Mister Morlbaro collected novelty lighters, which have to be
worth something to someone, right? You might be able to find some if you
dig around in his belongings. Just try not to disturb him if you choose
to enter his smoking room.
### Mapping March
<!-- If your pull request is part of Mapping March and you want to earn
an antagonist token for your FIRST mapping pull request submitted this
month, please include your ckey. For more information, read about the
event here: https://hackmd.io/@ EOBGames/BkwuRlxkh -->
Ckey to recieve rewards: theduffelbag
## Why It's Good For The Game
Ruin variety is nice. This one doesn't have any particularly spectacular
loot, but it's a surface ruin.
Bro space ruins are sooooo 2020 bro, it's all about icebox ruins now
bro.
## Changelog
🆑 Rhials
add: Adds the Smoking Room icebox ruin, found on the station level!
/🆑
* Adds the Smoking Room icebox surface ruin
---------
Co-authored-by: Rhials <Datguy33456@gmail.com>
Improved engineering tools patch 2: Bolter Wrench (#72445)
This adds a new wrench that can be printed after Advanced Engineering is
researched or as a rare mail gift for engineers.
The Bolter Wrench is medium sized (fits on toolbelts and bags but not on
boxes) and can grab into the bolting system of airlocks, raising it's
bolts after a 5 second `do_after`, even if the airlock has no power or
the wires are cut, as long as you can access the inner wires. (Won't
work if the panel is closed or has it's wires reinforced.)
Codersprite blatantly inspired by Iconoclast's wrench and looks like
this:


Right now, the only way to fix a powerless bolted down airlock is by
fixing the power first, this becomes an issue if the APC is behind the
airlock.
If that is the case, the only way in is to break through walls/windows
or destroy the airlock if you can, both add more things you need to
repair, making reconstruction times longer and longer...
Or you use an RCD to delete the airlock in 5 seconds, while faster than
the above method still is another thing to the repair list...
Repairing damaged and bolted down airlocks is such a hassle that
doormag'd airlocks bypass the default deconstruction system and just let
you deconstruct them directly without the steps of unbolting and
welding, something that could be removed with this tool but I won't
defend the pros and cons of it now.
Reconstruction is slow and cumbersome without an RCD. (And even with
one...)
I've been trying to make it smoother without using RCDs or a future RAT
on previous PRs and future ones to come, this tool is part of those
plans.
🆑 Guillaume Prata
add: Bolter Wrench as a new tool, it can raise the bolts of airlocks
regardless of it's power status to smoother station repairs. It can be
printed and is unlocked on the same tier as RCD. It can also rarely be a
mail gift for engineers.
/🆑
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>