Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

09-10 merge #108

Merged
merged 78 commits into from
Oct 9, 2023
Merged

09-10 merge #108

merged 78 commits into from
Oct 9, 2023

Conversation

Iajret
Copy link
Collaborator

@Iajret Iajret commented Oct 9, 2023

49e1bad

SkyratBot and others added 30 commits October 9, 2023 21:27
…[MDB IGNORE] (#24135)

* Fake moustaches are now poorly slapped on top of what you're wearing (#78776)

Another "+1 line changed" banger

![moustache](https://github.com/tgstation/tgstation/assets/68878861/8f0cc5ee-97a5-4a64-8ac5-ae3b387760e6)

## About The Pull Request
Bumps up the worn layer of fake moustache and it's italian subtype to 4.
Note that NOMASK inv flag will still prevent them from appearing.
## Why It's Good For The Game
- Paper-thin disguises amuse me
- Chef fashion
- Groucho maxxing
- A victory for good taste

![obraz](https://github.com/tgstation/tgstation/assets/68878861/5f792a8e-5bd0-40ab-a49d-095502fe9812)
## Changelog
:cl:
add: Fake moustaches are now poorly slapped on top of what you're
wearing
/:cl:

* Fake moustaches are now poorly slapped on top of what you're wearing

---------

Co-authored-by: Likteer <[email protected]>
…DB IGNORE] (#24136)

* Bleeding has been subtly broken for 3+ years, let's fix that yeah? (#78783)

## About The Pull Request
the `drip` argument was being passed an inverted value.
Broke in tgstation/tgstation#56056
## Changelog

:cl:
fix: Blood once again appears as small drops instead of splatters during
minor bleeding.
/:cl:

* Bleeding has been subtly broken for 3+ years, let's fix that yeah?

---------

Co-authored-by: Kapu1178 <[email protected]>
…nges (#23733)

* [TEST-MERGE FIRST] Wound refactor number two: Full synthetic support

* Wound refactor two compatability (#23618)

* Delam emergency procedure moth (#23483)

* safety moff

* delta/whitespace/examine

* icebox

* moff poster

* moff poster

* Update DelamProcedure.tsx

* Update scram.dm

* sound plays during warning

* remove nightshift, theres already a global proc

* scrubber hint

* missed that define

* Apply suggestions from code review

Co-authored-by: Bloop <[email protected]>

* covered by ui_interact

* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm

Co-authored-by: Bloop <[email protected]>

* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm

---------

Co-authored-by: Bloop <[email protected]>
Co-authored-by: GoldenAlpharex <[email protected]>

* Automatic changelog for PR #23483 [ci skip]

* Automatic changelog compile [ci skip]

* [non modular] disables TG "hold up" for the foreseeable future (#23607)

Update gun.dm

* Automatic changelog for PR #23607 [ci skip]

* [MIRROR] Desouls Hivelord [MDB IGNORE] (#23609)

* Desouls Hivelord (#78213)

## About The Pull Request

![dreammaker_RJz4brjobM](https://github.com/tgstation/tgstation/assets/7483112/e5e4a3e9-ea6b-47f9-887c-3339d24d3fa8)

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

:cl:
image: Hivelords have a new sprite.
image: Hivelord and Legion brood have a death animation.
/:cl:

* Desouls Hivelord

---------

Co-authored-by: Jacquerel <[email protected]>

* Automatic changelog for PR #23609 [ci skip]

* [MIRROR] Updates chem factory tank sprites [MDB IGNORE] (#23608)

* Updates chem factory tank sprites (#78209)

Updates chem factory tank sprites.

* Updates chem factory tank sprites

---------

Co-authored-by: Wallem <[email protected]>

* [MIRROR] Rice Dough can be made in a beaker [MDB IGNORE] (#23611)

* Rice Dough can be made in a beaker (#78062)

## About The Pull Request

Rice dough can be made in a beaker using 20u of Rice Flour and 10u of
Water. 10u of Rice Flour is made from 5u of Rice and 5u of Flour. Rice
dough can still be crafted manually using the crafting menu and the
original recipe.
## Why It's Good For The Game

Cooks can sometimes get swamped with work, especially on a high-pop
shift or when there are no botanists. By making rice dough more
convenient to make, cooks don't need to spend as much time in the
crafting menu.
Rice Flour is made from mixing equal parts Rice and Flour. Since no
recipe other than Rice dough uses both Rice and Flour in it's Recipe, it
should be fine to turn those regents into the intermediate reagent "Rice
Flour".
Fixes #77966
## Changelog
:cl:
qol: Rice Dough may be made in beaker instead of being crafted, but the
rice and flour must be added first
/:cl:

* Rice Dough can be made in a beaker

---------

Co-authored-by: blueDev2 <[email protected]>

* Automatic changelog for PR #23608 [ci skip]

* Automatic changelog for PR #23611 [ci skip]

* f

* awda

* unused type!!!

* Apply suggestions from code review

Co-authored-by: GoldenAlpharex <[email protected]>

* oh hey unused defines! bye

---------

Co-authored-by: lessthanthree <[email protected]>
Co-authored-by: Bloop <[email protected]>
Co-authored-by: GoldenAlpharex <[email protected]>
Co-authored-by: SkyratBot <[email protected]>
Co-authored-by: Changelogs <[email protected]>
Co-authored-by: RatFromTheJungle <[email protected]>
Co-authored-by: Jacquerel <[email protected]>
Co-authored-by: Wallem <[email protected]>
Co-authored-by: blueDev2 <[email protected]>

* aa

* fsegf

* im confused

* ASSwdadzxd

* a

* break to fix shuytyyhdg

* aaaasdfggh

* a

* ack

* a little more

* AA

* a readme

* a lil colder

* another touchup

* ack

* msucle

* a

* one

* tada

* ack

* a

* fuck!

* some packs and medicine

* a

* more

* it only makes sense

* readme update

* woo

* and now, we map it in

* me when

* Apply suggestions from code review

Co-authored-by: Bloop <[email protected]>

* j

* fix ci

* Apply suggestions from code review

Co-authored-by: Zephyr <[email protected]>

* o;l

* SPACE

* AAAAAAAAAAAAAAAAAAAAAH

* Apply suggestions from code review

Co-authored-by: Bloop <[email protected]>

* j

* Apply suggestions from code review

Co-authored-by: Bloop <[email protected]>

* Apply suggestions from code review

Co-authored-by: Bloop <[email protected]>

* y

* a

* dwadwa

* Just fixing this typo you missed

* And found another instance of this same block of code

* change the way burns work

* thick clothing now blocks reagents

* cock

* uyjujy

* a

* yjhf

* awdawdawd

* remove stacking buffs + make electrical damage worse

* whoops

* FUCK

* adwdad

* AAAA

* oh the misery

* this'd be cool

* warn

* a

* i think it needs a lil buff

* Apply suggestions from code review

Co-authored-by: GoldenAlpharex <[email protected]>

* asd

* I LOVE COMPILING AND NOT HAVING ERROSR

---------

Co-authored-by: lessthanthree <[email protected]>
Co-authored-by: Bloop <[email protected]>
Co-authored-by: GoldenAlpharex <[email protected]>
Co-authored-by: SkyratBot <[email protected]>
Co-authored-by: Changelogs <[email protected]>
Co-authored-by: RatFromTheJungle <[email protected]>
Co-authored-by: Jacquerel <[email protected]>
Co-authored-by: Wallem <[email protected]>
Co-authored-by: blueDev2 <[email protected]>
Co-authored-by: Zephyr <[email protected]>
…] (#24137)

* Fixes an issue with COMSIG_MOB_ABILITY_STARTED for spells (#78775)

## About The Pull Request

The signal `COMSIG_MOB_ABILITY_STARTED` is used by both cooldown actions
and spells, which are a subtype of cooldown actions. However, cooldown
actions pass two values, `src` and the action's target. Spells only
passed `src`, even though its the exact same signal. This caused issues
with the ability telegraph component, as it has to interrupt the casting
of spells and actions to add a delay, and most if not all spells won't
work without the target being passed with the signal. Closes #78715.
## Why It's Good For The Game

It caused bugs and is just bad design in general.
## Changelog
:cl:
fix: Ice whelps can now use spells given to them by admins, and people
who have polymorphed into ice whelps can now polymorph back to normal.
/:cl:

* Fixes an issue with COMSIG_MOB_ABILITY_STARTED for spells

---------

Co-authored-by: GPeckman <[email protected]>
… IGNORE] (#24138)

* Moves silicon camera (photos, not mob cameras) out of click code (#78774)

## About The Pull Request

Atomized from the swing branch.

Moves silicon camera (taking photos, not mob camera stuff) out of their
core click code. It now uses click intercepts.

(There's an argument to be made to use signals rather than click
intercept as it's rather antiquated but w/e.)

- [x] I tested this PR

## Why It's Good For The Game

Makes it easier to unifiy click a bit more in the future. Reduces
surface area of a feature.

## Changelog

:cl: Melbert
qol: AI, cyborg, and PAI camera (photo taking) behavior now uses balloon
alerts and has sound effects associated
refactor: Refactored AI, cyborg, and PAI camera (photo taking) code
fix: fixed being unable to print photos as a cyborg when below 50%
toner, even though photos only take 5%
/:cl:

* Moves silicon camera (photos, not mob cameras) out of click code

---------

Co-authored-by: MrMelbert <[email protected]>
* Fixes the HEAL_NEGATIVE_MUTATIONS revive flag (#78768)

## About The Pull Request

There is a flag for the revive proc called `HEAL_NEGATIVE_MUTATIONS`. It
is supposed to make the revive heal negative and minor negative (e.g.
chav, medieval) mutations, but not positive mutations. However, it was
bugged and wouldn't heal any mutations. This PR just fixes it. Closes
#43547.
## Why It's Good For The Game

Its a bugfix.
## Changelog
:cl:
fix: Adminheal will now properly clear negative mutations as intended.
/:cl:

* Fixes the HEAL_NEGATIVE_MUTATIONS revive flag

---------

Co-authored-by: GPeckman <[email protected]>
* Basic Mob Flesh Worm (#78744)

## About The Pull Request

Fixes #68614

Converts the Flesh Worm (Armsy) into a Basic Mob.
Most of its behaviour has been moved into a component which we can use
to make arbitrary mobs into linked lists of mobs.
To accomplish this I added a signal which is sent when you call any
`adjustXLoss` proc, let me know if my implementation is "calling the
same signal from several places" by a backdoor, I wanted to avoid
registering to 6 signals but I'll change it if I must.

While I was here I killed the unused "lesser" variant because we stopped
using it. Resultingly, Ascended Armsy doesn't need to distinguish itself
by inflating the sprite, so it doesn't. This means that now flesh worms
are using their sprites as intended to be displayed, but if people
really miss all of its segments being poorly scaled by the byond engine
then I guess I can restore it.

## Why It's Good For The Game

![dreamseeker_p8vOpZGXII](https://github.com/tgstation/tgstation/assets/7483112/3389d3a9-16cd-4e1e-938e-dfa18d0da0af)

## Changelog

:cl:
refactor: Flesh Worms are now basic mobs. Please report any unexpected
behaviour.
sprite: Flesh Worms are a little bit slimmer.
/:cl:

* Basic Mob Flesh Worm

---------

Co-authored-by: Jacquerel <[email protected]>
* Adds sanity checking to the tippable component (#78771)

## About The Pull Request

The tippable component doesn't actually have any sanity checking for if
the tippable thing has already been tipped. This means that if two
people try to tip something over at the same time, it will appear
untipped but be immobilized as though it were tipped. The sprite will
also stay permanently flipped until the bug is preformed again. Now that
doesn't happen. Closes #64232.
## Why It's Good For The Game

As funny as it is to see upside-down borgs running around, its still a
bug.
## Changelog
:cl:
fix: Borgs will no longer become permanently upside-down if tipped over
by multiple people at the same time.
/:cl:

* Adds sanity checking to the tippable component

---------

Co-authored-by: GPeckman <[email protected]>
* The AI can no longer turn off shapeshifted robots (#78766)

## About The Pull Request

If you shapeshifted into a robot (beepsky, ED-209, etc.) using the
shapechange spell or other means, silicons could just turn you off. Now
all shapeshifted robots are considered to be emagged, meaning that
silicons can't interact with them. Closes #44505.
## Why It's Good For The Game

Bugfixes good
## Changelog
:cl:
fix: The AI can no longer turn you off if you shapeshift into a robot.
/:cl:

* The AI can no longer turn off shapeshifted robots

---------

Co-authored-by: GPeckman <[email protected]>
* QoL improvements to the mob damage unit tests (#78748)

## About The Pull Request

This is something that I meant to do because it was a minor annoyance as
I was creating the tests but I never got around to it.

Because many of the failures occurred in procs it could be difficult to
pinpoint the exact line of the test where they were failing. It would
just be the line within the proc, and not the line where the proc was
called. So you'd have to sort of infer which one it was from the values
of `x` and `y` in `Expected x to be equal to y`.

Now each test failure will have a brief description and a line number
where `apply_damage()` / `verify_damage()` actually got called to make
it clearer. Like shown below.

![Code_r6N3XSAb3m](https://github.com/tgstation/tgstation/assets/13398309/92ac5a91-3c3f-4b3b-90de-09fe0d9891f1)

## Why It's Good For The Game

Just a small QoL update for coders. Some typos fixed, too.

## Changelog

Nothing player facing though.

* QoL improvements to the mob damage unit tests

---------

Co-authored-by: Bloop <[email protected]>
* Bad food has bad food reagent again (#78747)

still on break so i didn't think too hard about this one

## About The Pull Request

Prevents food interactions from clearing the resulting food's reagents
if the result is a bad recipe.

Blackbox logging is also iffy here, some of them log it even if the
resulting food is a burned mess, some don't. It's weird!

## Why It's Good For The Game

Fixes #78400
<details><summary>Makes one car moth happy</summary>

![no habla
espanol](https://github.com/tgstation/tgstation/assets/75863639/a3f26acb-3a7c-44a6-a4de-2b67e4d56230)

</details>
Did you know the appendix has bad_food reagent in it?

https://github.com/tgstation/tgstation/blob/699d09ca33e807f9100689c3ab5fbec3916186ee/code/modules/surgery/organs/internal/appendix/_appendix.dm#L5-L15

## Changelog

:cl:
fix: fixed bad food not having bad food reagents
/:cl:

* Bad food has bad food reagent again

---------

Co-authored-by: Sealed101 <[email protected]>
… [MDB IGNORE] (#24146)

* fish analyzers can also be used to perform fish scanning experiments. (#78745)

## About The Pull Request
I recently read of someone being confused that they couldn't use them to
perform fish-related experiments, so I thought it would be a good idea
to add that. Also, I've converted the related misc supply pack to a
goodie one, like other fishing supplies.

## Why It's Good For The Game
It makes sense, and a fair amount of players doesn't even know
experiments exists until they play the scientist role a couple times.

## Changelog

:cl:
add: Fish analyzers can now be used to perform fish scanning
experiments.
balance: They can now be singularly bought as a goodie pack for 125 cr
each, instead of a crate of three for 500 cr.
/:cl:

* fish analyzers can also be used to perform fish scanning experiments.

---------

Co-authored-by: Ghom <[email protected]>
…) [MDB IGNORE] (#24147)

* [NO GBP] Fixes silent catwalks over otherwise silent turfs (open space, chasms) (#78742)

## About The Pull Request
Exactly what it reads on the tin.

## Why It's Good For The Game
Fixes #78646.

## Changelog

:cl:
fix: Fixed silent catwalks.
/:cl:

* [NO GBP] Fixes silent catwalks over otherwise silent turfs (open space, chasms)

---------

Co-authored-by: Ghom <[email protected]>
* Organ harvester file cleanup (#78728)

## About The Pull Request
Replaces every single/double letter variable I could find in
`code\game\machinery\harvester.dm` with a more descriptive variable
name. I hope, anyway.

Also replaces a typecheck section with just writing a better loop.
## Why It's Good For The Game
Uuuuuuh. Code.... readability.... and maintainability? I think?
## Changelog
Not player-facing.

* Organ harvester file cleanup

---------

Co-authored-by: Vladin Heir <[email protected]>
…high caliber hand cannon by making it HITSCAN [MDB IGNORE] (#24149)

* Makes the Regal Condor realistically simulate being shot dead with a high caliber hand cannon by making it HITSCAN (#78674)

## About The Pull Request

The Regal Condor come with a magazine and ammo already inside.

The recipe for the magazine now no longer needs TC, but does need donk
pockets (sponsored murder gear, you see) and a hell of a lot more
materials per magazine (you're looking at like 40 sheets of various
materials all up). It also needs you to make the Condor first. But it
comes preloaded with ammo.

The Condor is 1 whole TC more expensive. Also needs some metal. The old
recipe is there in spirit.

The Regal Condor and the magazines come with 10mm Reaper bullets.
They're high damage. They're high AP. They are also hitscan.

## Why It's Good For The Game

Apparently people don't like the Condor. Too much effort for not enough
reward. After all, revolvers exist. 'It must be a joke' they say! 'It's
joke content! I went to all that effort to make it for nothing! That
slut Anne tricked us!'

**Wrong, bitch.**

If you want the Condor to make you shit yourself the moment someone with
it appears on the screen, then fine!

### **You get what you fucking deserve.**

## Changelog
:cl:
balance: Despite earlier reports suggesting that the famous lethality of
the Regal Condor was largely a myth, there has been rumors that the gun
has once again started to display its true killing potential on any
station that it 'manifests'.
/:cl:

* Makes the Regal Condor realistically simulate being shot dead with a high caliber hand cannon by making it HITSCAN

---------

Co-authored-by: necromanceranne <[email protected]>
* Jungle-Generator Usability Fixes, Geode Patchups (#78669)

## About The Pull Request
Firstly; Patches some remaining chasm baseturfs on the Geode Pirate
Shuttle by implementing a new subtype of jungle rocks and dark dirt
that's safe for use in space.

Secondly; makes the (unused here, but I'm making use of it elsewhere and
I've been told someone else is, too) jungle generator have a lot less
(possibly no) recursive atmosdiffs. Jungle mineral turfs now produce an
open turf with the correct atmos composition, and jungle chasms are
brought in-line as well.

Thirdly; the redundant layer of grilles have been removed from the
Geode, as they were being spawned already by the window spawner.
Additionally rotates the geode's blast doors because they rotate now and
it'd look weirder half the time otherwise.

~~On a related note: I really don't like the direction of the docking
port being off of standard for everything that isn't an arrivals
shuttle, but uhh. Catch me when I'm willing to deal with shuttlecode
again, lmao.~~
## Why It's Good For The Game
Significantly lessens recursive atmospheric overhead if either the geode
spawns *or* the jungle generator ever gets used here.
## Changelog
:cl:
fix: It is no longer possible to chasm yourself on the geode. Again.
/:cl:

* Jungle-Generator Usability Fixes, Geode Patchups

---------

Co-authored-by: BluBerry016 <[email protected]>
… IGNORE] (#24151)

* The laser carbine, a full-auto sidegrade to the normal laser gun (#78685)

## About The Pull Request

This PR adds the laser carbine, a new fully-automatic laser weapon that
can be ordered from cargo. A crate of 3 can be ordered from cargo for
1800 credits, locked behind armory access. Here is a video
demonstration:

https://github.com/tgstation/tgstation/assets/21979502/6f7fecec-ccb6-4a65-8027-21ab887fb91d

Now, I'm sure people are very concerned about the balance implications
of this new weapon. Let me give you some hard numbers:

The gun deals 10 damage per shot, and has a capacity of 40 shots with a
fully charged cell. This means that it has, at most, 400 damage per
charge, which is exactly the same as a normal laser gun.

In terms of DPS, it can put an unarmored human in crit roughly as fast a
laser gun. It is meant to be a sidegrade, not an upgrade to the normal
laser gun.

It also has considerably lower wound bonus. During testing, when all 40
shots were fired into an unarmored human, it dealt tier 1 burn wounds
with the occasional tier 2. I never observed a single tier 3 burn wound
during any of my tests.

Here's a picture of the different sprites (The last one is animated just
like the normal laser gun):

![laser_carbines](https://github.com/tgstation/tgstation/assets/21979502/75c88c8a-aa8a-481d-994d-86850fcdbb9b)

## Why It's Good For The Game

For a long time, there has been a strong push to make crew-available
weapons almost entirely energy based. This trend has been contentious,
to say the least. Many people prefer ballistic weapons over energy
weapons. After spending some time on a different codebase, one where
autorifles are still completely available to order from cargo, no emag
needed, I think I might know why (or at least part of the reason). Part
of what I find satisfying about some ballistics is the fact that they
fire quickly and automatically. Energy weapons might be more enjoyable
to use if automatic energy weapons are also an option.

## Changelog

:cl:
add: The laser carbine, a weak but fully automatic sidegrade to the
normal laser gun, can now be ordered from cargo.
/:cl:

---------

Co-authored-by: Jacquerel <hnevard@ gmail.com>

* The laser carbine, a full-auto sidegrade to the normal laser gun

---------

Co-authored-by: GPeckman <[email protected]>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
…[MDB IGNORE] (#24157)

* allows janitor keys to be stored in janitor wintercoats and janibets (#78724)

## About The Pull Request
the janitor access key could not be stored on their belt, or their
wintercoat slot, which felt off to me. so i added it to both of them,
and added the janicart key to the coat slot as well. i figure if one can
fit, the other probably can too.
## Why It's Good For The Game
convenient, less cumbersome storage for items that you want to keep both
close to your person, and accessible for easy use.
## Changelog
:cl:
qol: allows janitor keys to be stored in janitor wintercoats and
janibets
/:cl:

* allows janitor keys to be stored in janitor wintercoats and janibets

---------

Co-authored-by: Lamb <[email protected]>
* Fix ID card examine runtime (#78785)

## About The Pull Request

This always expects to return a list, even if empty.

But this early returned before the parent call, meaning it didn't return
the empty list (from parent) as expected.

## Changelog

:cl: Melbert
fix: Fixed an error from reading an ID card closely when you can't read
/:cl:

* Fix ID card examine runtime

---------

Co-authored-by: MrMelbert <[email protected]>
* Dogs now flee from mobs with tongs (#78797)

AI dogs with the dog controller behaviour will flee from a target with
tongs in hand.

Untested because I literally cannot play byond.

## Why It's Good For The Game
https://www.youtube.com/watch?v=cXIAZtwvgz0

## Changelog
:cl: oranges
add: Dogs now react to centrist grillers more realistically
/:cl:

* Dogs now flee from mobs with tongs

---------

Co-authored-by: oranges <[email protected]>
* offical to official (#78762)

## About The Pull Request
Fixes "offical" to "official" in several locations - admin fax panel,
admin newscaster, art patron text, a photocopier template, and a corgi
tail pin item description. Adds this common misspelling to the
check_grep.sh ci tool.
## Why It's Good For The Game
I have corrected the typo manually every single time I have sent a fax
from Central Command.
## Changelog
:cl:
spellcheck: "offical" has been officially corrected to "official" in
several official locations.
/:cl:

* offical to official

---------

Co-authored-by: Isratosh <[email protected]>
* fixed wierd TGUI crash (#78778)

## About The Pull Request
There is a weird bug, that happens if you're writing your first PDA
message to someone, and his PDA gets destroyed (abus/cryo/blows up),
your messenger app will recieve unfixable TGUI error, due to being
unable to recieve recipient name. So i added another check on TGUI side
of app ¯\_(ツ)_/¯
## Why It's Good For The Game
Your PDA's wont stuck in TGUI blue screen of death, if someone went to
cryo during you writing a message to him.
## Changelog
:cl:
fix: fixed a PDA's messenger TGUI issue with handling of destroyed
recipients.
/:cl:

* fixed wierd TGUI crash

---------

Co-authored-by: ReezeBL <[email protected]>
* Adjust ID card assignment line (#78801)

## About The Pull Request

Adjusts and realigns the assignment overlay to match the new ID cards,
centering it with the new logo placement.

Before:

![id_cards_before](https://github.com/tgstation/tgstation/assets/83487515/6f134710-f438-4c81-8b93-8e0dbf67b47f)

After:

![id_cards_fixed](https://github.com/tgstation/tgstation/assets/83487515/243a3df0-a169-4fd1-b29d-7736c314008a)

## Changelog

:cl: LT3
image: Text alignment on ID cards slightly adjusted
/:cl:

* Adjust ID card assignment line

* skyrat edits

* Update clothing_facility.dmm

---------

Co-authored-by: lessthanthree <[email protected]>
* Renames prison intercoms (#78781)

## About The Pull Request

This renames prison intercoms to "receive-only intercom"

## Why It's Good For The Game

It's rare a day goes by that I don't see someone confused about why
these intercoms "aren't working.", and if it comes up in conversation,
most sec players don't seem to be aware either. There's already a note
about the intercoms being receive-only in the examine text, but
apparently it largely goes unnoticed.

This change should make it very clear, at a glance, that players should
not expect to be able to transmit using these intercoms.

It'd probably also be a good to grey out or hide the transmit button but
this is what I can do and makes it obvious to everyone.

## Changelog

:cl:
qol: "prison" intercoms have been renamed to "receive-only" intercoms to
make it clearer they cannot transmit.
/:cl:

* Renames prison intercoms

---------

Co-authored-by: YehnBeep <[email protected]>
* Added slapcrafting to tech shells (#78746)

## About The Pull Request

Added slapcrafting to tech shells. Untested!

## Why It's Good For The Game

Easier to make 'em

## Changelog

:cl:
qol: Added slapcrafting to unloaded tech shells, click on them with
ingredients to quickly craft your shell.
/:cl:

* Added slapcrafting to tech shells

---------

Co-authored-by: carlarctg <[email protected]>
…cabinets [MDB IGNORE] (#24158)

* adds directional helpers for empty fire axe and mech removal crowbar cabinets (#78722)

## About The Pull Request
title. it's mostly so they can be used conveniently in areas you don't
want to put fireaxes, but do want an empty cabinet for reasons.
## Why It's Good For The Game
more flexible options for mappers, more convenient than making
directional variants yourself. it's what the helper is for
## Changelog
:cl:
qol: gives empty fireaxe and mech removal crowbars cabinets directional
helpers
/:cl:

* adds directional helpers for empty fire axe and mech removal crowbar cabinets

---------

Co-authored-by: Lamb <[email protected]>
* Frosty's factions are now defines (#78792)

## About The Pull Request

Saw that Frosty the Snowman's factions were strings instead of defines,
so I have made them use defines.

## Why It's Good For The Game

Defines are much safer and cleaner than using strings.

## Changelog

Nothing player facing

* Frosty's factions are now defines

---------

Co-authored-by: Profakos <[email protected]>
… updates its GPS tag [MDB IGNORE] (#24169)

* Tendril Tagging - scanning necropolis tendrils with a mining analyzer updates its GPS tag (#78738)

## About The Pull Request
Makes it so that if you wave a mining analyzer over a necropolis tendril
(kinda like a geyser), its GPS tag is updated with a code for what it
spawns and a numerical designation. Unlike geyser scanning, this awards
no points, and is solely for figuring out what tendril spawns what
fauna.
<details>
<summary>Screenshots in the dropdown:</summary>

![image](https://github.com/tgstation/tgstation/assets/31829017/888f19f9-2291-4349-995a-2821e99da375)

![image](https://github.com/tgstation/tgstation/assets/31829017/d847e88e-a8ae-4a18-ae57-aed248343457)

![image](https://github.com/tgstation/tgstation/assets/31829017/d9646dad-70b6-4e92-8b5d-ce5eed873869)

Updated: now on the `structure/spawner` level, allowing it to cover
icemoon spawners.

![image](https://github.com/tgstation/tgstation/assets/31829017/73cc2972-1c34-485d-8b70-a04f44a92bcd)

Updated again: now it has an associated examine thing.

![image](https://github.com/tgstation/tgstation/assets/31829017/44027082-3672-4033-b603-de1a0c3d2af2)
</details>

Also removes the redundant `gps` variable because it got
componentalized.
## Why It's Good For The Game

I think being able to know what one of fifteen eerie signals is spawning
without having to memorize which one is spawning which thing at what
coordinate, or just vaguely going "oh so that's where the legion tendril
was today".

## Changelog

:cl:
qol: Miners can now tag monster spawners (necropolis tendrils, animal
dens, demonic portals, and netherworld links) by using their mining
scanner on it, which updates their GPS tag (and/or gives them one) to
give it a numerical designation and a short identifier for what it's
spawning.
/:cl:

---------

Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>

* Tendril Tagging - scanning necropolis tendrils with a mining analyzer updates its GPS tag

---------

Co-authored-by: Hatterhat <[email protected]>
Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>
* pdas now use their cells more (#78580)

## About The Pull Request

So one aspect of PDAs that I quite liked previously was managing and
upgrading your power.
This was lost when all cell parts got removed, mostly, and now I'd like
to re-add it.
PDAs and Tablets now use more power each second it's on
Programs being active/idle now take charge too.
And all this now takes ``seconds_per_tick`` into account.

Screenshots of APC use before and after having 6 programs open at once

![image](https://github.com/tgstation/tgstation/assets/53777086/14699ae7-19a7-4eb6-a211-5944cc1867d0)

![image](https://github.com/tgstation/tgstation/assets/53777086/804fedde-0d5a-43a9-9e61-34139257a16f)

PDA default power cells have a max charge of 1000, each cell use is
around ``1.00970340315`` power, which is ``1.01013789399`` w/ 2 programs
in idle and 1 active program (which is what PDAs are capable of). This
means it takes about 990 ticks to fully drain your power, or about 50
minutes, at max use.

This is completely blasted away the moment you put anything beyond a t1
cell inside of it, which is unfortunate but what can you do about tiered
parts being so poor.

The problem of no public PDA chargers are alleviated by
tgstation/tgstation#78600

### Update

The PDA flashlight being on now also drains the battery 25% times
faster. PDA running out of charge now also turns the flashlight off.

## Why It's Good For The Game

You may or may not have to actually charge your PDA once in a round now,
maybe. I liked this part of tablets and would like to see it brought
back, managing your power to use your apps is important to ensure you're
not just using all apps 24/7

Because this also adds the functionality to add/remove power cells
again, it opens up to some minor little pranks/messing with people that
isn't completely destroying their tools, as well as some minor
upgradeability.

## Changelog

:cl:
balance: You can now remove and replace power cells from PDAs (with
screwdriver).
balance: PDAs now drain their power cells harder, and also take into
account active programs & their flashlight being on.
balance: PDAs running out of charge now turn their flashlights off.
/:cl:

* pdas now use their cells more

* reduce power usage

* Update computer.dm

---------

Co-authored-by: John Willard <[email protected]>
Co-authored-by: lessthanthree <[email protected]>
SkyratBot and others added 28 commits October 9, 2023 21:27
…ignal [MDB IGNORE] (#24222)

* changes COMSIG_GLOB_LIGHT_MECHANISM_COMPLETED into a more versatile signal (#78832)

## About The Pull Request

COMSIG_GLOB_LIGHT_MECHANISM_COMPLETED is now
COMSIG_GLOB_PUZZLE_COMPLETED
the light puzzle thingamajig now uses that
puzzle doors on init register this signal, which means if the signal is
sent all doors with the ID passed with the signal would open

## Why It's Good For The Game

this means we can use the signal for more pieces such as cool buttons or
pressure plates that open doors or whatever else that registers the
signal
or you could like make a component that does puzzle stuff like making a
mob send it on death

and mappers can change puzzle_id to link stuff together

## Changelog
:cl:
code: COMSIG_GLOB_LIGHT_MECHANISM_COMPLETED is now
COMSIG_GLOB_PUZZLE_COMPLETED
/:cl:

* changes COMSIG_GLOB_LIGHT_MECHANISM_COMPLETED into a more versatile signal

---------

Co-authored-by: jimmyl <[email protected]>
…out of uses [MDB IGNORE] (#24221)

* Prevent a runtime in malf AI's overload machine ability when it runs out of uses (#78829)

shifts the uses adjustment after unsetting the ability from the AI's
click to prevent a runtime

here `owner` would be `null` and scream cats because the ability would
delete itself when running out of uses, thus deleting the owner and
whatnot. i mean i guess we could just replace `owner` with `on_who`
maybe but eh

https://github.com/tgstation/tgstation/blob/5e21011aabd978dccf2f98dc7f0638e4c8831f38/code/datums/actions/innate_action.dm#L69-L76

runtime
```
[2023-04-01 08:10:00.141] runtime error: Cannot read null.client
 - proc name: unset ranged ability (/datum/action/innate/proc/unset_ranged_ability)
 -   source file: innate_action.dm,72
 -   usr: W.A.R.D.E.N. (/mob/living/silicon/ai)
 -   src: Overload Machine (/datum/action/innate/ai/ranged/overload_machine)
 -   usr.loc: the floor (33,138,2) (/turf/open/floor/circuit/green)
 -   call stack:
 - Overload Machine (/datum/action/innate/ai/ranged/overload_machine): unset ranged ability(W.A.R.D.E.N. (/mob/living/silicon/ai), "<span class=\'danger\'>Overcha...")
 - Overload Machine (/datum/action/innate/ai/ranged/overload_machine): do ability(W.A.R.D.E.N. (/mob/living/silicon/ai), the chem dispenser (/obj/machinery/chem_dispenser))
 - Overload Machine (/datum/action/innate/ai/ranged/overload_machine): InterceptClickOn(W.A.R.D.E.N. (/mob/living/silicon/ai), "icon-x=17;icon-y=19;left=1;but...", the chem dispenser (/obj/machinery/chem_dispenser))
 - W.A.R.D.E.N. (/mob/living/silicon/ai): check click intercept("icon-x=17;icon-y=19;left=1;but...", the chem dispenser (/obj/machinery/chem_dispenser))
 - W.A.R.D.E.N. (/mob/living/silicon/ai): ClickOn(the chem dispenser (/obj/machinery/chem_dispenser), "icon-x=17;icon-y=19;left=1;but...")
 - the chem dispenser (/obj/machinery/chem_dispenser): Click(the shuttle floor (155,97,2) (/turf/open/floor/mineral/plastitanium), "mapwindow.map", "icon-x=17;icon-y=19;left=1;but...")
 - the chem dispenser (/obj/machinery/chem_dispenser):  Click(the shuttle floor (155,97,2) (/turf/open/floor/mineral/plastitanium), "mapwindow.map", "icon-x=17;icon-y=19;left=1;but...")
 - /datum/callback/verb_callback (/datum/callback/verb_callback): Invoke()
 - world: push usr(W.A.R.D.E.N. (/mob/living/silicon/ai), /datum/callback/verb_callback (/datum/callback/verb_callback))
 - /datum/callback/verb_callback (/datum/callback/verb_callback): InvokeAsync()
 - Input (/datum/controller/subsystem/verb_manager/input): run verb queue()
 - Input (/datum/controller/subsystem/verb_manager/input): fire(0)
 - Input (/datum/controller/subsystem/verb_manager/input): fire(0)
 - Input (/datum/controller/subsystem/verb_manager/input): fire(0)
 - Input (/datum/controller/subsystem/verb_manager/input): ignite(0)
 - Master (/datum/controller/master): RunQueue()
 - Master (/datum/controller/master): Loop(2)
 - Master (/datum/controller/master): StartProcessing(0)
```

* Prevent a runtime in malf AI's overload machine ability when it runs out of uses

---------

Co-authored-by: Sealed101 <[email protected]>
* [NO GBP] you can hit tendrils in melee again (#78856)

## About The Pull Request
adds an `else . = ..()` to spawner's attackby check so you can just
break them with your crusher in case you need to be rid of it

## Why It's Good For The Game

sometimes you just need to melee a spawner

## Changelog

:cl:
fix: Necropolis tendrils and other mining mob spawners can be hit in
melee again.
/:cl:

---------

Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>

* [NO GBP] you can hit tendrils in melee again

---------

Co-authored-by: Hatterhat <[email protected]>
Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>
…kipped over [MDB IGNORE] (#24218)

* Gives gibbing from too much blood an infinite range so it can't get skipped over (#78813)

## About The Pull Request

Makes the range where gibbing from too much blood extend to infinity
Also adds a message for swelling so there's more warning before you gib
## Why It's Good For The Game

Fixes #78786
It also fixes a wizard exploit apparently.

## Changelog
:cl:
fix: fixed gibbing from having too much blood not working in some cases
/:cl:

* Gives gibbing from too much blood an infinite range so it can't get skipped over

---------

Co-authored-by: BlueMemesauce <[email protected]>
…24217)

* Fix bitrunning drinking glass using the wrong subtype (#78845)

## About The Pull Request

This drinking glass subtype was runtiming like crazy because it didn't
have `base_container_type` set, meaning it ~failed the vibe check~
couldn't properly update its sprite according to the glass styles.

![image](https://github.com/tgstation/tgstation/assets/51863163/b9410fa4-e8ec-417f-ac41-e8986c754c34)

Swapped it out for a subtype of `filled`. Because it's a glass that
starts filled.

## Changelog

:cl: Melbert
fix: Virtual Drink Glasses now look correct.
/:cl:

* Fix bitrunning drinking glass using the wrong subtype

---------

Co-authored-by: MrMelbert <[email protected]>
* Fix TTS runtime from wearing bread (#78850)

## About The Pull Request

Surprise, this just assumed a mob's mask is, well, a mask. But you can
wear many non-mask things in your mask, such as bread or roses.

## Changelog

:cl: Melber
fix: Wearing bread (or roses, or other non-mask things) no longer
prevents you from TTS speaking.
/:cl:

* Fix TTS runtime from wearing bread

---------

Co-authored-by: MrMelbert <[email protected]>
* Fixes runtime on initalizing science programs (#78842)

Datums don't have location, so there's no z level to search here.

* Fixes runtime on initalizing science programs

---------

Co-authored-by: AnturK <[email protected]>
* Fixes camera ref cleanup in alarms processing (#78839)

Not every alarm area has cameras.

* Fixes camera ref cleanup in alarms processing

---------

Co-authored-by: AnturK <[email protected]>
* General code maintenance for Reagents (#78637)

## About The Pull Request
1. Moved global procs inside of
`code/modules/reagents/chemistry/holder.dm` that are not tied to
`datum/reagent` to it's own dedicated global list file
`code/_globalvars/lists/reagents.dm` these procs initialized global
lists so it makes sense to move them here and also reduces the size of
this file a.k.a code organization
2. Moved global lists inside `code/_globalvars/lists/objects.dm` that
are related to reagents also to `code/_globalvars/lists/reagents.dm`.
Now all global reagent lists are located in this 1 file a.k.a code
organization
3. Other code improvements for reagent code & its holder include
   - removed a ton of unused procs
   - removed unused vars and local defines
   - replaces `!` with `QDELETED()` in place of some target objects
- throws stack trace if you pass an invalid reagent path to some procs
   - Heavy auto doc for a lot of procs
4. Adds a lot of sanity checks on numbers related to reagents i.e.
whenever a reagent is added/removed/transferred etc 3 sanity checks are
done on those numbers
- We first check is the number valid via the `ISFINITE()` macro. This
macro wasn't used as much as it needs to be so it is added in some
missing places. If not a stack trace is thrown
- The number if it relates to reagents volumes must be greater than
`CHEMICAL_QUANTISATION_LEVEL` define so we don't deal with 0 or very
small/negative numbers
- The number is then quantized i.e. we do `round(amount,
CHEMICAL_QUANTISATION_LEVEL)` so we don't deal with numbers having 10
decimal places or something like that
- Replaced `CHEMICAL_VOLUME_MINIMUM` with `CHEMICAL_QUANTISATION_LEVEL`
so we can use the same constant everywhere
5. Addresses one of the issues presented in #31206. One way this
occurred was when multiple reagents was put in a beaker and then a
dropper was used to transfer them. Because multiple reagents were to be
equally divided by their volumes when sucked up by the dropper some
rounding was done causing fractional errors. That has been improved
although not completely fixed cause there is a chance for it to occur
when for example an odd number of reagents are transferred between the
beaker and dropper. Another instance where it can occur is when very
small volumes are being transferred. When this happens `update_total()`
removes these reagents before they can be transferred causing missing
amounts.

6. Numbers were being rounded in inconsistent ways for e.g. in some
places it was rounded with the correct quantization constant

https://github.com/tgstation/tgstation/blob/30782f817db5aef2d388af335f4c70b88c74b93b/code/modules/reagents/chemistry/holder.dm#L264
But in other places it gets rounded with a different constant

https://github.com/tgstation/tgstation/blob/30782f817db5aef2d388af335f4c70b88c74b93b/code/modules/reagents/chemistry/holder.dm#L653
We should be using the 1 constant `CHEMICAL_QUANTISATION_LEVEL` for all
these places so we don't get different values. so the rounding was added
in multiple places but we use `FLOOR()` instead so we don't get values
greater than the volume of reagent available.

## Changelog
:cl:
code: moved some global procs and vars related to reagents to its own
dedicated file. removed some unused procs and macros
code: heavy auto docs for a lot of procs
refactor: adds reagent sanity and bound check code
refactor: multiple reagents are more uniformly distributed when
transferring them between beakers or dropper & in every other reagent
dependent operation
/:cl:

---------

Co-authored-by: Jacquerel <hnevard@ gmail.com>

* General code maintenance for Reagents

---------

Co-authored-by: SyncIt21 <[email protected]>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Dels a bad stack trace from stoned effect (#78843)

## About The Pull Request

This is a bad stack trace, the reagent application makes no effort in
ensuring non-carbons get the effect applied.

https://github.com/tgstation/tgstation/blob/ce51db06ef9dd10ac4fc68907a5a0319ad22e51e/code/modules/reagents/chemistry/reagents/drug_reagents.dm#L48-L50

So rather than crashing, we'll just `return FALSE` to tell the status
effect not to apply.

* Dels a bad stack trace from stoned effect

---------

Co-authored-by: MrMelbert <[email protected]>
…d objects [MDB IGNORE] (#24206)

* Adds supermatter attackby_hit typecache to deal with similarly-handled objects (#78779)

## About The Pull Request

Adds a typecache for objects that are similarly handled in the
attackby_hit proc

I decided to omit cigarette from the list since it has so much custom
code. I could just check to see if the item is a cigarette, but I don't
think that is very readable.

## Why It's Good For The Game

Makes interaction more efficient, also because a maintainer said so

## Changelog

:cl:
code: made an eensy teensie weensie change to some supermatter
boilerplate
/:cl:

---------

Co-authored-by: FinancialGoose <92416224+TheBoondock@ users.noreply.github.com>
Co-authored-by: carlarctg <53100513+carlarctg@ users.noreply.github.com>
Co-authored-by: orange man <61334995+comfyorange@ users.noreply.github.com>
Co-authored-by: Cruix <ianjturk@ gmail.com>
Co-authored-by: Cruix <discoveryian2@ gmail.com>
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@ users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@ users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Tim <timothymtorres@ gmail.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: Emmett Gaines <ninjanomnom@ gmail.com>
Co-authored-by: nikothedude <59709059+nikothedude@ users.noreply.github.com>
Co-authored-by: BluBerry016 <50649185+unit0016@ users.noreply.github.com>
Co-authored-by: flopp / Daniel Ast <75865592+RunKittenzRComing@ users.noreply.github.com>
Co-authored-by: Wallem <66052067+Wallemations@ users.noreply.github.com>
Co-authored-by: Changelogs <action@ github.com>

* Adds supermatter attackby_hit typecache to deal with similarly-handled objects

---------

Co-authored-by: admeeer <[email protected]>
Co-authored-by: FinancialGoose <92416224+TheBoondock@ users.noreply.github.com>
Co-authored-by: carlarctg <53100513+carlarctg@ users.noreply.github.com>
Co-authored-by: orange man <61334995+comfyorange@ users.noreply.github.com>
Co-authored-by: Cruix <ianjturk@ gmail.com>
Co-authored-by: Cruix <discoveryian2@ gmail.com>
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@ users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@ users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Tim <timothymtorres@ gmail.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: Emmett Gaines <ninjanomnom@ gmail.com>
Co-authored-by: nikothedude <59709059+nikothedude@ users.noreply.github.com>
Co-authored-by: BluBerry016 <50649185+unit0016@ users.noreply.github.com>
Co-authored-by: flopp / Daniel Ast <75865592+RunKittenzRComing@ users.noreply.github.com>
Co-authored-by: Wallem <66052067+Wallemations@ users.noreply.github.com>
Co-authored-by: Changelogs <action@ github.com>
…GNORE] (#24213)

* Fixes void cloak not making suit store slot items unstrippable (#78841)

Signal handlers have a fixed first argument.

* Fixes void cloak not making suit store slot items unstrippable

---------

Co-authored-by: AnturK <[email protected]>
…osed mobs [MDB IGNORE] (#24212)

* Fixes salt, flour, corn starch, and saltwater not sanity checking exposed mobs (#78846)

## About The Pull Request

These procs cast the exposed mob to carbon so they could affect wounds,
but non-carbon mobs can be exposed to reagents.

* Fixes salt, flour, corn starch, and saltwater not sanity checking exposed mobs

---------

Co-authored-by: MrMelbert <[email protected]>
…24211)

* Fixes images getting displayed as an appearance in vv (#78861)

I forgot to include this in the check >.>

:cl:
fix: Images are once more displayed as images in vv instead of as an
appearance
/:cl:

* Fixes images getting displayed as an appearance in vv

---------

Co-authored-by: Emmett Gaines <[email protected]>
* Improves many areas of CentCom (#78687)

## About The Pull Request

Centcom is better

## Why It's Good For The Game

It's because because, as we all know, the better something is, the
better it is.

## Changelog
:cl: Fazzie
qol: NT's logo on Centcom's landing pad looks better
qol: Centcom's Cargo and other rooms had their items rearanged to look
marginally better. Like you're every gonna see them!
fix: The Thunderdome on Centcom now has up-to-date cooking machinery
/:cl:

* Improves many areas of CentCom

---------

Co-authored-by: Fazzie <[email protected]>
* Fixes setting prebuilt shutter ids with multiool (#78838)

Most mapped in ids are text not numbers, which would runtime here.

* Fixes setting prebuilt shutter ids with multiool

---------

Co-authored-by: AnturK <[email protected]>
Co-authored-by: Pinta <[email protected]>
* Fixed Meta disposals. (#78819)

## About The Pull Request

Fixes #78811

The sorting helper for disposals on Meta was missing, causing garbage to
infinitely loop around the station instead of being thrown into
disposals. This has been rectified.
## Why It's Good For The Game

Infinite disposals loops are bad unless they're on purpose.
## Changelog
:cl:
fix: Metastation disposals will no longer infinitely loop garbage around
the station.
/:cl:

* Fixed Meta disposals.

---------

Co-authored-by: lizardqueenlexi <[email protected]>
* Fixes the Syndicate insurgent bundle

* fixes another case of an equipment option being the wrong subtype
* separation of lmb and rmb is absolute

* buh

---------

Co-authored-by: Hatterhat <[email protected]>
* Warm donk-pockets once again have omnizine in them

* Modular

* Fixes modular paths

---------

Co-authored-by: GPeckman <[email protected]>
Co-authored-by: Giz <[email protected]>
* Pipe gas visuals (#78217)

## About The Pull Request

Primarily this pr is all about getting pipes to have a visual display
for the gas within them. A couple other things of note have been done to
make that easier though:

- A sprite generator that outputs to a dmi has been made for all pipe
variants and the layers. This is because I didn't want to work with
hundreds of pipe sprites just to do minor changes. In the future I would
like to generate things like this during a github action but for the
moment this is just a helper you can use for generating the pipe dmi
files.
- Some minor reorganization of the code in the pipe dm file.
- Some doc comments on things that bothered me

## Why It's Good For The Game

Gives a bit of visual feedback when working with pipes that should
hopefully make people more comfortable around them if they can easily
see if the pipes are empty or are filled with an unknown gas mixture.
Can also serve as a warning to those keeping an eye out for things like
plasma floods.

:cl: ninjanomnom
add: Pipes now have a colored visual display that shows their contents
at a glance.
/:cl:

~~The colors for gases could stand to be better, if anyone wants to
suggest alternatives to what I've used please do as I put only a bare
minimum of thought into each choice.~~ I've switched to using the gas
colors defined in tgui constants.

![dreamseeker_2023-09-26_07-32-56](https://github.com/tgstation/tgstation/assets/1234602/0a3a5636-c9b9-4046-83b9-0d116f8232d1)

* Pipe gas visuals

---------

Co-authored-by: Emmett Gaines <[email protected]>
* Bitrunning hotfix 3

* Update netpod.dm

* Fixes modular paths

* Fixes modular paths

* Moves the food a bit

---------

Co-authored-by: Jeremiah <[email protected]>
Co-authored-by: Bloop <[email protected]>
fixes bitrunners not being part of cargo on sensors
@Iajret Iajret merged commit cd28bdf into Fluffy-Frontier:master Oct 9, 2023
28 checks passed
@Iajret Iajret deleted the 0910 branch October 11, 2023 11:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants