* Fixes a runtime when attacking non-carbon mobs with a cuffsnapper (#76190)
## About The Pull Request
The cuffsnapper component now checks to make sure the target is a carbon
before running the rest of the cuffsnapping process on them.
target.handcuffed is checked (handcuffed is defined on carbon), but
nowhere is it actually asserted that the target is a carbon, so a
runtime would occur when attacking non-carbon mobs.
## Why It's Good For The Game
This runtime fix was brought to you by https://runtimes.moth.fans
## Changelog
🆑
fix: attacking non-carbon mobs with a cuffsnapping object will no longer
runtime.
/🆑
* Fixes a runtime when attacking non-carbon mobs with a cuffsnapper
---------
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
* Air Sensor are Craftable, Removed from RPD UI, Have New Linking System (#75869)
## About The Pull Request
**1. Craftable & Removed from RPD UI**
1. Air sensor's are now craftable
2. You can turn them on/off with hand. Even though turning off the
sensor will change it to a diffrent type[from `obj/machinery/air_sensor`
-> `obj/item/air_sensor`] it's I/O port's are sill preserved when
turning them on although you have to assign it a new name again which is
usefull if you want to change the sensor's purpose in game.
3. They can now only be deconstructed by a welding tool and should be
wrenched in place to turn them on.
4. Turned off air sensor's once unwrenched can be picked up like any
regular item
5. Air sensor's are removed from the RPD UI because they don't go with
pipes so it logically doesn't make sense to group them with pipe related
device's
Removed unused code in the process
https://github.com/tgstation/tgstation/assets/110812394/3439a0f3-9c48-43ac-8f4b-98135435ec13
**2. New ID System**
The problem with air sensor's is that each sensor is assigned a unique
ID which is then stored in `GLOB.objects_by_id_tag` list. Each sensor
name it's assigned based on the gas it's trying to sense(for naming only
even though it can detect other gases) So if 2 sensor's having the same
ID are made they will overwrite each other in this list leaving one
sensor orphaned in the world which cannot be referenced because it's
value was overwritten by a new sensor having the same ID in this list.
The Solution? Rather than having all atmos computer's look up sensor's
from this 1 global list make each computer keep track of all sensor's
it's responsible for in it's own local list[which i called
`connected_sensor's`] this way 2 sensor's can have randomly generated
names in the global `GLOB.objects_by_id_tag` list but the computer will
know what sensor to look up in this list based on the stored sensor ID's
in the `connected_sensor's` list
Basically what i am getting at is now you can make as many air sensor's
as you wish but you will know have to connect that sensor to the
computer using a multitool.
Notice in the video how i made 2 sensor's called `Supermatter Chamber
Sensor's`] and every time you try to connect an sensor which has the
same name[`Supermatter Chamber Sensor's` in this case] they will
ovewrite the old sensor in it's list as shown in the video
https://github.com/tgstation/tgstation/assets/110812394/b5283c3b-c8a1-4b94-a6a8-8ba7a0007615
**Why it's good for the game**

I agree. Also air sensor's taking up a full Tab/Section in the RPD UI
wasted a lot of UI space so that's removed now. Also making the air
sensor's wrenchable and pickable item's was also requested in
https://github.com/tgstation/tgstation/pull/72019#issuecomment-1355499873
so you relate them to device's like meter's
Another huge issue was that the number of air sensor's you can make in
the world was limited because each sensor in the world must have a
unique ID but that's finally fixed now so yeah make as many sensor's as
you want.
## Changelog
🆑
add: air sensor's are craftable
refactor: air sensor's can now be turned off by hand and can only be
deconstructed by a welding tool
refactor: removed `Params()` proc
qol: unwrenched air sensors can be picked up & recycled like regular
item's
del: air sensor are removed from the RPD UI
qol: air sensor's are no longer restricted by their unique ID's which
mean you can craft as many air sensors as you want.
/🆑
---------
Co-authored-by: Time-Green <timkoster1@ hotmail.com>
* Air Sensor are Craftable, Removed from RPD UI, Have New Linking System
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Time-Green <timkoster1@ hotmail.com>
* The honorbound trauma now makes use of the relay_attackers element. (#75908)
## About The Pull Request
Whoever made the relay_attackers element, thank you for streamlining the
bucketload of signals that had to be registered for everything that
counted as an attack. It's very much needed.
Beside, I only had to add a few flags to be sent by the
ATOM_WAS_ATTACKED signal, so that stamina and shoving doesn't
automatically make the attacker guilty.
Oh, one more thing I have forgot to mention. Currently medical staff is
immune to "guilt" altogether, while the comments suggest they should be
affected by declaration but not attacking. This PR also covers that
issue.
## Why It's Good For The Game
This will fix#75904.
## Changelog
🆑
fix: Fixed the honourbound trauma not reacting to attacks from basic
mobs
fix: Fixed the "Declare Evil" spell not working against the medical
department.
/🆑
* The honorbound trauma now makes use of the relay_attackers element.
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Makes Godwoken Syndrome VoG commands ignore spam filter (#76146)
## About The Pull Request
they're basically forced speech and should not account for the spam
filter
## Why It's Good For The Game
fixes#55392
## Changelog
🆑
fix: fixed Godwoken Syndrome VoG commands triggering the spam filter
/🆑
* Makes Godwoken Syndrome VoG commands ignore spam filter
---------
Co-authored-by: Sealed101 <cool.bullseye@yandex.ru>
* Autolathe, protolathe, mech fab and comp printer now use defines for matter bins values. Also some production ui do. (#76020)
Changed hardcoded matter bins values to use defined
`SHEET_MATERIAL_AMOUNT` for following stuff: autolathe, protolathe, mech
fabricator and component printer.
`Material Access Bar` and `MaterialIcon` used for protolathes, circuit
printers and etc. now also use defined `SHEET_MATERIAL_AMOUNT`, via
static ui data, to prevent same issues in future.
Also changed some notes in /// parts just because why not.
* Autolathe, protolathe, mech fab and comp printer now use defines for matter bins values. Also some production ui do.
---------
Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>
* Fixes and adds an element for TC reimbursement. (#75816)
## About The Pull Request
Fixed being unable to reimburse syndicate spawners via uplinks. This
includes nukie reinforcements, cyborgs, and holoparasite injectors.
Turned TC reimbursement into a bespoke element.
Tuned demon's blood message when there's no ghosts to pick to be a
little more understandable and sensible.
## Why It's Good For The Game
> Fixed being unable to reimburse syndicate spawners via uplinks. This
includes nukie reinforcements, cyborgs, and holoparasite injectors.
This bug was, to my knowledge, introduced with bubby traitors when
uplinks were turned into components, as the code no longer supported it
due to what I presume to be an oversight, since there's plenty of
references to it ingame still.
> Turned TC reimbursement into a bespoke element.
Seemed like the best way of doing this. Since for some godforsaken
reason attackby() is one-way only (no attackto() ), the uplink component
sends a signal to any item hit with it instead.
## Changelog
🆑
fix: Fixed being unable to reimburse syndicate spawners via uplinks.
This includes nukie reinforcements, cyborgs, and holoparasite injectors.
refactor: Turned TC reimbursement into a bespoke element.
spellcheck: Tuned demon's blood message when there's no ghosts to pick
to be a little more understandable and sensible.
/🆑
* Fixes and adds an element for TC reimbursement.
---------
Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
* Fix cyborg autofire (#76240)
## About The Pull Request
Nothing implies this has to be an `iscarbon` check anywhere
Closes#76211
## Changelog
🆑 Melbert
fix: The Syndicate Assault Cyborg can autofire their LMG
/🆑
* Fix cyborg autofire
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Lighting object oddities (#76009)
## About The Pull Request
Fire stacks status effect no longer uses a weakref for the mob light, I
am pretty sure there was no real reason to use a weakref there.
Deleted weird luminescent glow dummy, now it just uses the standard
moblight obj.
Put all /obj/effect/dummy/lighting_obj together in a single file and
added a comment explaining why they exist.
(I severely dislike the /obj/effect/dummy typepath, but I am very much
unsure if just replacing all of them with /obj/effect/abstract would
break shit)
## Why It's Good For The Game
Code organization good
* Lighting object oddities
* Update kindle.dm
---------
Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Standardize Welder Fuel Usage (#76021)
Remove welder fuel usage from all actions except attacking and leaving
it on
most welder tasks require a minimum of 1u of fuel, some longer tasks
require a minimum of 2 or 3u welders now drain 1u every 5 seconds
they're active
## About The Pull Request
Prior to this PR welder fuel usage was random, a lot of tasks didn't use
any welder fuel and welders were basically near infinite so long as you
didn't use them for combat, it took 26 seconds of activity to drain 1u
of fuel, that means an emergency welder alone could run for 5 minutes
straight before needing a refuel
After this PR all welders will drain 1u every 5 seconds instead of every
26 seconds, but welding objects won't require extra fuel anymore, making
the fuel usage much more consistent.
resolves#55018
## Why It's Good For The Game
Actually makes fuel tanks useful and relevant without making it
obnoxious to do repetitive quick tasks like turn rods into plates,
there's actually a reason to upgrade off the emergency welder now since
it lasts 50 seconds rather than 5 minutes
## Changelog
🆑
qol: Welders now have a more consistent fuel usage
/🆑
* Standardize Welder Fuel Usage
---------
Co-authored-by: Couls <coul422@gmail.com>
* Adds the current server name from the config to the world status (#76014)
## About The Pull Request
Adds the server name from the configuration to the world's status topic.
## Why It's Good For The Game
We don't currently expose the server's short name (e.g. `Sybil`,
`Manuel`) anywhere. This fixes that. This is mostly to support external
tools.
* Adds the current server name from the config to the world status
---------
Co-authored-by: Nick <nick@nfreader.net>
* Fix further/MetaStation (#76158)
## About The Pull Request
Typo fixes. Further and fixes MetaStation's default name to match the
JSON.
## Changelog
🆑 LT3
spellcheck: Fixed a few typos
/🆑
* Fix further/MetaStation
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Burner can be crafted from any open container (#75978)

## About The Pull Request
Expands the options for making burners (makeshift igniters) by requiring
any open container (bottles, cans, cups) instead of beaker subtypes.
## Why It's Good For The Game
Makes ghetto recipe a bit more ghetto-friendly
## Changelog
🆑
qol: Chemical burner can be crafted from any open container, not just
beakers
/🆑
* Burner can be crafted from any open container
* null modular icon
---------
Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Gives Fugitive Hunters credible IDs, access restricts the hunter shuttles, minor hunter shuttle improvements (#75913)
## About The Pull Request
This standardizes fugitive hunter IDs, making all hunter packs use the
same subtype and giving them to hunters who would spawn with no ID at
all.
The badass flaming ID color that the OG Bounty Hunter team got are now
the standard for fugitive hunter IDs. Additionally, these IDs now come
with a radical skull trim.
(Spacepol Officers don't get the badass flaming skull ID, and instead
get a more modest Police Officer ID).
**These IDs come with access, too. Airlocks, bolt buttons, shuttle
controls, and shutters on all of the hunter shuttles now require a
hunter's ID to operate.**
While I was in the area doing mapping stuff to get the accesses in
place, I made a few other very minor changes to the shuttles. These
include:
- The Bounty Hunter shuttle now has an oxygen dispenser. Two walls have
been moved to make space.
- The Russian Hunter shuttle now gets enough oxygen tanks to share with
everyone.
- The Psyker Hunter spawners now have proper spawner menu text. This was
due to duplicate-but-not-really subtypes existing, and me mistakenly
putting the wrong ones there in a previous PR.
- The cut ai wire helpers from the Russian/Psyker shuttles have been
extended to the Bounty/Spacepol shuttles.
- Every hunter shuttle now has a shuttle pinpointer on it somewhere, and
is no longer exclusive to a single Bounty Hunter's loadout.
## Why It's Good For The Game
Some of the hunter IDs would spawn without trims or coloration, and some
hunters wouldn't spawn with IDs at all. Now, everyone gets a credible,
cool-looking ID that lets everyone know what you're here to do at a
glance.
One of these is a crazed larper with an unregistered firearm, the other
is a certified bounty hunter.
As for the hunter access, it's pretty nonsensical that anyone can just
walk into the hunter ship and set up shop. At least the pirates get
turrets! Not to mention, it's hard to balance or give hunters new
equipment in good conscience when their entire domain is public-access
and anything they can't carry is considered forfeit to the crew. Now it
can be used as a base of operations, storage area, etc. more securely.
Locking down the shuttle with accesses isn't going to stop a determined
gamer with a toolset, but it'll at least make it more interesting and an
actual risk. If the fugitives want to try and loot/hijack the shuttle,
it will require the effort of taking down one of their hunters first.
While hunters stand out for the differences/imbalances between each
group, I don't see the shuttle pinpointer as something that contributes
positively to the OG bounty hunter's uniqueness. There's no reason why
the other hunters shouldn't also be able to track their ship.
* Gives Fugitive Hunters credible IDs, access restricts the hunter shuttles, minor hunter shuttle improvements
---------
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Machine's correctly eject signaller's attached to it's wires (#75928)
## About The Pull Request
Fixes#72053
the signaller is made part of the machine's `component_parts` now so it
doesn't get moved out when `dump_inventory_contents()` is called like in
the case of microwave when it has finished cooking
This fix also applies for other machine's that call this proc
Fixes#72132
Clear's out the `holder` & `connected` vars from the signaller when the
wire's get destroyed allowing the signaller to be picked up
## Changelog
🆑
fix: microwave's(after it has finished cooking) & other machine's that
spit out contents don't spit out assemblies/signallers attached to it's
wires.
fix: signallers can be picked up if you attached them to a machine's
wire & later deconstructed that machine without detaching it first.
/🆑
---------
Co-authored-by: Jeremiah <42397676+jlsnow301@ users.noreply.github.com>
* Machine's correctly eject signaller's attached to it's wires
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@ users.noreply.github.com>
* Adds runtime safety into cinematic code to stop everyone locking up (#76025)
## About The Pull Request
Separates these two sections of cinematic code out in their own procs to
add some runtime protection.

This keeps happening and I have really no idea why. There shouldn't be
any `null`s in this list of weakrefs. I asked Lemon a while ago and they
said it was a bug in some other code. So I'm just doing this instead.
Because I don't know where to hunt down that issue and try-catches
aren't real.
Closes#76024
## Why It's Good For The Game
Runtiming in these procs is really bad because it handles setting all
mobs to `notransform`. Which blocks all movement and acting and stuff.
## Changelog
🆑 Melbert
code: Adds some runtime safety to Cinematic code
/🆑
* Adds runtime safety into cinematic code to stop everyone locking up
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Refactors the worst list ever, Stun Absorptions, into status effects + makes status flags more accurate (making certain mobs more vulnerable to incapacitations?) (#76000)
## About The Pull Request
- Refactors the stun absorption list into a status effect
- Does a fair bit of cleanup around stun code
Weird thing involved in this.
Check out this define.
`IS_STUN_IMMUNE(source, ignore_canstun) ((source.status_flags & GODMODE)
|| (!ignore_canstun && (!(source.status_flags & CANKNOCKDOWN) ||
HAS_TRAIT(source, TRAIT_STUNIMMUNE))))`
Notice anything odd about it?
It only checks for `CANKNOCKDOWN`.
What does this mean?
Well, *every single* one of the stun procs used this macro for checking
stun immunity. Which means every method of stun checked the
`CANKNOCKDOWN`.
This means that, say you have a mob which has `CANSTUN` but not
`CANKNOCKDOWN`.
Intuitively this means that the mob cannot be knocked down, but can be
stunned.
But instead, this means the mob can't be stunned either.
This doesn't affect humans, they have all the status flags, but it does
affect some other mobs.
Alien adults (not queens) have `CANUNCONSCIOUS|CANPUSH`. Before, they
didn't have `CANKNOCKDOWN`, so they were fully immune to stuns and
sleeps. But now, they can be knocked unconscious.
However, overall it doesn't change much, as most mobs that flipped off
`CANKNOCKDOWN` flipped off the others too.
For consistency though it makes sense for these flags to work as they
imply.
- `incapacitate` didn't have a signal, now it does
## Why It's Good For The Game
More consistent, better code? I may use this in the future.
## Changelog
🆑 Melbert
refactor: Refactored Stun Absorptions (Bastard Sword, His Grace)
refactor: Refactored Stun Immunity. Note this means that some mobs
which, prior, were immune to all forms of incapacitation are now
vulnerable to some. Notably, adult non-queen xenomorphs are now
vulnerable to falling unconscious.
/🆑
* Refactors the worst list ever, Stun Absorptions, into status effects + makes status flags more accurate (making certain mobs more vulnerable to incapacitations?)
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes stowing suit storage jetpacks when retracting modsuit chestplates (#75844)
## About The Pull Request
This is a bizare bug I discovered while trying to develop another
feature, so let's just get into the reproduction steps:
- Wear a modsuit and extend it's parts
- Put a jetpack in the suit storage slot and turn it on. Currently, the
only jetpack that fits in the storage slot on TG is the captain's
jetpack.
- While the jetpack is activated, deactivate your modsuit using the UI,
which stows the jetpack into your storage module automatically.
- This fails to unregister some signal thing because it can't find the
user.
My fix *could* be shitcode, so any feedback would be appreciated.
Jetpack activation and deactivation signals now pass a user.
`/datum/component/jetpack/proc/activate(datum/source, mob/user)`
`/datum/component/jetpack/proc/deactivate(datum/source, mob/user)`
Some jetpack `pre_move_react` thing now has a check to see if it's
argument is null.
```
if(!trail)
return FALSE
```
## Why It's Good For The Game
Stops a crash/runtime.
## Changelog
🆑 stonetear
fix: jetpack signals now pass a user argument. This fixes an error when
automatically stowing a captain jetpack into your modsuit.
/🆑
* Fixes stowing suit storage jetpacks when retracting modsuit chestplates
---------
Co-authored-by: Stonetear <89315023+Stonetear@users.noreply.github.com>
* Fixes coin values (#76066)
## About The Pull Request
This brings coins values back from being severely undervalued after
#75437. Coins are supposed to be made of and worth 400 units of mats,
but the numbers weren't updated and so they were made of significantly
less than that.
## Why It's Good For The Game
Brings coins back to what they're supposed to be worth.
## Changelog
🆑
fix: After destroying unfathomable quantities of excess coins, their
value is back to what it's supposed to be!
/🆑
* Fixes coin values
---------
Co-authored-by: Nick <42454181+Momo8289@users.noreply.github.com>
* Glass jaw quirk minor oversight fix (#76088)
## About The Pull Request
The knock out message will no longer appear if the quirk holder is
already unconscious
## Why It's Good For The Game
Less confusing combat messages!
## Changelog
🆑
fix: Glass joes will no longer appear to get knocked out, while already
knocked out.
/🆑
* Glass jaw quirk minor oversight fix
---------
Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
* Fixes a sneaky antag tell with RDS / adds policy support (#76071)
## About The Pull Request
Fixes being able to tell you are a special role via RDS
Adds policy support to RDS
## Why It's Good For The Game
Someone informed me that RDS was a 100% accurate antag tell you rolled a
delayed spawn antag (like headrev), and that's... a little bad, you can
usually insinuate you may be a headrev but straight up knowing isn't
ideal - doesn't keep everyone on equal playing field.
And while I was there I was like "y'know people might want to set policy
for this" so yeah
## Changelog
🆑 Melbert
fix: Fixed a cheeky way RDS revealed you were an antag before you
actually got antag. Sorry, you know who you are.
config: RDS now has policy.json support, to allow customization of the
roundstart "anti-grief" message.
/🆑
* Fixes a sneaky antag tell with RDS / adds policy support
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes a possible dupe bug with looming (#76059)
## About The Pull Request
Title.
Adds a second amount check to once the do_after() is done to prevent a
possible epic dupe minecraft pay to win server lag machine server crash
glitch.
## Why It's Good For The Game
Bugs are bad
## Changelog
🆑
fix: You can no longer make extra cloth when looming cotton by spamming
do afters.
/🆑
* Fixes a possible dupe bug with looming
---------
Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
* Stops particle holders from appearing on context menu (#76006)
## About The Pull Request
Basically, due to carbons using KEEP_TOGETHER, particles were appearing
on the context menu which is annoying. I have no idea why it behaves
like this.
Buuut, giving particle holders the KEEP_APART flag does fix this.
closes https://github.com/tgstation/tgstation/issues/75641
## Why It's Good For The Game
Bugfix good
## Changelog
no
* Stops particle holders from appearing on context menu
---------
Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
* The Goods
- Preserves whitespace (linebreaks) when viewing records consoles.
- Ditto for printed rapsheets.
- Removes the requirement of logged crimes for printing rapsheets.
* Update RecordPrint.tsx
* merge conflicts
* Adds some parenthesis to some bitwise operations (#76002)
## About The Pull Request
A set of parenthesis a day keeps weird order of operations away
## Why It's Good For The Game
Might be causing bugs?
## Changelog
🆑 Melbert
fix: Maybe fixes minor bugs in disease cure, revolution, hooded suit
code
/🆑
* Adds some parenthesis to some bitwise operations
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Heretic runes are easier to click through and have a windup for clearing them (#75868)
Heretic runes no longer have every single transparent pixel set to 1
alpha, to make it easier to click on objects.
Clearing heretic runes with mansus grasp takes 0.4 seconds of standing
still, to prevent you from accidentally clearing it in combat.
Added code for effect remover element to use a windup if set.
* Heretic runes are easier to click through and have a windup for clearing them
---------
Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
* Named barrels (#75976)

## About The Pull Request
Barrels are nice stationary reagent containers, but it's hard to use
many of them because they're non-transparent and to see the reagents
with science glasses, you need to open the lid.
Now you can name barrels to not mistake them.
## Why It's Good For The Game
You don't need to open the barrel to figure out what you're going to get
from the tap.
## Changelog
🆑
qol: You can name barrels with a pen now, changing its icon
/🆑
* Named barrels
---------
Co-authored-by: Andrew <mt.forspam@gmail.com>
* The destabilization of your eigenstate can no longer be paused by stripping naked (#75982)
## About The Pull Request
The destabilization of your eigenstate can no longer be paused by
stripping naked.
## Why It's Good For The Game
one of the stages of the eigenstasium od's status effect is causing your
items to teleport off of you
this early returned out if you had no items to teleport off of yourself
and it did this before the line of code that increments the status
effect's progress counter
so if you had no items to teleport, you'd never progress to the later
stages of the status effect
## Changelog
🆑 ATHATH
fix: The destabilization of your eigenstate can no longer be paused by
stripping naked.
/🆑
* The destabilization of your eigenstate can no longer be paused by stripping naked
---------
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Piracy Inc. Space Extension Interdyne and Ghetto Edition: Adds two new pirate gangs Ex-interdyne Pharmacists and The Grey Tide (#75802)
* Piracy Inc. Space Extension Interdyne and Ghetto Edition: Adds two new pirate gangs Ex-interdyne Pharmacists and The Grey Tide
---------
Co-authored-by: Hoolny <84478872+SethLafuente@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* New planetary exclusive random event/unfavorable situation, Chasmic Earthquake (#75864)
## About The Pull Request
https://github.com/tgstation/tgstation/assets/28870487/2451bc69-db1e-420d-9a18-2f899ca65427
This introduces a new unfavorable situation (non-antagonist random
events that dynamic triggers under certain circumstances), restricted to
planetary maps (Icebox). An earthquake occurs, felt by everyone on the
map, forming a fault that tears the a hole somewhere on the station.
The fault zone is indicated by shaking tiles, which gives a chance
(about 30 seconds) for you to move your machinery/property/crewmembers
out of the way. If you're on those tiles when the fault forms, get ready
to take a nasty fall.
Anything caught in the fault zone as it collapses inward will be
destroyed, violently, _before_ being dropped down into the z-level
below.

These can also happen as a random event, however their rarity is on-par
with that of a meteor storm.
This also adds a helper for finding a midpoint turf between two provided
turfs, thanks to ZephyrTFA.
This idea basically possessed me over the course of a few days, and I
found myself unable to work on anything else until I had it complete.
I'm glad its done.
## Why It's Good For The Game
Gives Icebox its own big "environmental disaster" event. I'm hoping it
isn't received as being too destructive, but mind that this is meant to
be an equal to the dreaded meteor storm.
Also makes it so that unfavorable events aren't a coinflip between a
portal storm/rod on planetary maps.
## Changelog
🆑 Rhials
add: Chasmic Earthquake random event, exclusive to Icebox. Tears a huge
chasm in the hull of the station. Watch out for shaking tiles!
sound: Adds sounds for distant rumbling, metal creaking, and rubble
shaking.
imageadd: Achievement icon for getting sucked up in an earthquake chasm.
/🆑
* New planetary exclusive random event/unfavorable situation, Chasmic Earthquake
---------
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Assistants get a liver trait + Officer's sabre banes against them (#75933)
## About The Pull Request
Assistants get a new liver trait, maintenance metabolism. This trait
only lets them process maintenance drugs, grey bull, and pump-up for 20%
more time and gives them a probably-positive 2 minute moodlet when
ingesting these.
The officer's sabre has gained a small amount of bloodthrist for
assistants!
Fixed liver masters being unable to inspect the liver of scientists.
## Why It's Good For The Game
> Assistants get a new liver trait, maintenance metabolism. This trait
only lets them process maintenance drugs, grey bull, and pump-up for 20%
more time and gives them a probably-positive 2 minute moodlet when
ingesting these.
This trait is pretty much entirely here for the actual
liver-identification of assistants the sabre uses, though I didn't want
to just add an empty trait so I gave it the above effects as pretty damn
harmless effects. I'm sure the maints will dislike even this so I'm open
to anything.
> The officer's sabre has gained a small amount of bloodthirst for
assistants! Or at least their livers.
I find the concept of the sabre having a bane against assistants
amusing, and it wouldn't hurt to give them something that may help
against tiders. As a smidgen of fairness, the detection is tied to the
liver - if they want to take less damage they can have it replaced,
though the captain can also help with that by disemboweling organs. The
liver being used for something that isn't reagents processing might be a
bit controversial, but like I said, I'd rather have that than have it
permanently, intrinsically tied to a job.
> Fixed liver masters being unable to inspect the liver of scientists.
Ballmer metabolism quacks like a duck, traits like a duck, and thus
should be able to be duck inspected by the duck master, since there is
no practical difference between it and other 'official' metabolisms.
## Changelog
🆑
add: Assistants get a new liver trait, maintenance metabolism. This
trait only lets them process maintenance drugs, grey bull, and pump-up
for 20% more time and gives them a probably-positive 2 minute moodlet
when ingesting these.
add: The officer's sabre has gained a small amount of bloodthrist for
assistants!
fix: Fixed liver masters being unable to inspect the liver of
scientists.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Assistants get a liver trait + Officer's sabre banes against them
---------
Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Late adjustments to my previous move_loop PR. [NO GBP] (#75778)
## About The Pull Request
Lemon guy was a bit too late in reviewing #75732 because it got already
merged by someone else, and I too hadn't managed to make some adjustment
to that PR in time.
This PR applies suggested changes, turns a simple proc into a macro, and
makes it so that also waddling, squeaky shoes and swivel chair sounds
don't running when moved by conveyor belt.
This doesn't stop squeaking from happening when other
conveyor-belt-moved objects or mobs cross its tile. That'd be hacky and
I'm not here to fight sfx-spamming machines.
## Why It's Good For The Game
These are changes that should have been included in #75732 but couldn't.
See that PR for the general idea.
## Changelog
🆑
fix: waddling, squeaky shoes and swivel chair sound effects no longer
run when moved by conveyor belt.
/🆑
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Late adjustments to my previous move_loop PR. [NO GBP]
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>