* Implements rgb2num, uses it to replace all our manual rgb reading. Redoes HSV management (#81182)
[Converts all manual extraction of rbg with rgb2num. It's just
better](ae798eabd5)
[Yanks out old HSV management, replaces it with list
stuff](4997e86051)
There's this old lummy era clunky code that passed HSV as text
We can now cleanly replace it with passing hsv as lists from a rgb2hsv
proc
So let's just do that.
Also, cleans up spraytan code (and ethereal lighting)
Code better
* Refactors fire overlays once again to make it not get stuck so often (#81367)
Maybe finally fixes#77701
A big reason why this kept happening is because fire uses standing
overlays. But fire isn't managed by mobs anymore. Meaning in some
situations, fire can cease to exist but the overlay can still be on the
mob. So it gets stuck.
So like, why use standing overlays anymore? We can just hook
`update_overlays` signal.
Isn't that neat.
🆑 Melbert
refactor: Fire effects get added to mobs in a different way now. Maybe
it will get stuck less. Report any oddities.
/🆑
* Fix Flaky Failure From Fire (#81399)
## About The Pull Request
Closes#81396 , Closes#81391 , Closes#81403, Closes#81402
I don't know why but I thought this proc was only called once, when the
mob entered the turf. That was silly.
And going back at it, I'm not entirely sure why I tied
`TRAIT_NO_EXTINGUISH` to the element anyways, rather than the lava like
it originally was.
While going back over this, I cleaned up the proc a bit.
## Changelog
Not necessary
* There we go?
* Bruh moment
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes complex lights not handling moving well, renames lighting defines (#81423)
## About The Pull Request
[Fixes static lights not
moving](ffef43c05a)
Worked fine when the owner moved, but if the owner was inside something
else, it would try and trigger an update on the PARENT's lights, which
are obviously not us.
[Renames MOVABLE_LIGHT and STATIC_LIGHT to better describe what they
do](de73a63bd4)
People keep trying to change the lighting system of lamps and it makes
me mad.
I choose OVERLAY_LIGHT and COMPLEX_LIGHT here, I couldn't figure out a
better name for turf matrix lighting. Suggestions welcome
## Why It's Good For The Game
Closes#80005
Hopefully improves understanding of lighting at a glance
## Changelog
🆑
fix: Fixes fancy lights not updating their source location when picked
up and moved
/🆑
* Oh well
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Venus Human Traps have an orbit menu category, recieve antag datum on spawn (#81411)
## About The Pull Request
Venus Human Traps now have their own category in the orbit menu. It is a
pleasant shade of green, just like vines are.

Venus Human Traps are also now given their antagonist datum upon
spawning from a flower. The datum isn't really anything special but it's
consistent with the other antag spawners.
This also makes the spawner piece of the VHT flower bud invisible. It's
an abstract object meant to handle the logic for spawning, and only the
structure should be visible. This currently manifests as there being
two, identical flower buds on the same tile when a flower bud spawns. I
did not want to get into untangling the two objects in this PR.
## Why It's Good For The Game
Venus human traps being lumped in with the humans in the "Alive" menu is
WEIRD. Now ghosts can give a gigantic vine infestation the attention it
truly deserves.
Fixes a minor visual incongruity found while doing all this.
## Changelog
🆑 Rhials
qol: Venus Human Traps are now visible in the orbit menu. Cool!
fix: Spawning as a Venus Human Trap now properly gives you an antag
datum/objective.
fix: Venus human trap flowers no longer have a second, identical flower
under themselves.
/🆑
* Venus Human Traps have an orbit menu category, recieve antag datum on spawn
---------
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
* Removes the adapted flashlight (#81426)
## About The Pull Request
It doesn't need to exist, I killed see_in_dark so we can always see shit
emissives.
## Why It's Good For The Game
Cleaner code
* Removes the adapted flashlight
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* [NO GBP] Heretic path of moon, post launch patch (no jeature jeeze this time) (#81428)
## About The Pull Request
This pull request does a few things:
First up, the moon smile now does a 2 second knockdown and all its
effects have been granted an increase of a few seconds making it more
powerful.
Second up, the mark now does a bit of sanity damage on detonation. Not a
lot but its helpful before you get the blade knowledge.
Lastly the ascension has been tweaked so that lunatics now get an
antagonist hud and are able to see who is a lunatic and who isnt. The
heretic has received the same treatment and can now see who is and isnt
a lunatic. Being within the heretics line of sight whilst its ascended
now puts an effect on the tile you are on because people were
complaining about it not being clear enough.
## Why It's Good For The Game
Path of moon struggled a LOT in the early game compared to every other
path and I think that made it very weak, this buff should put it more in
line with other paths whilst not over throwing the balance completely.
The ascension changes are purely for qol as the previous system made it
very hard to tell who is and isn't a lunatic and it was consistent
feedback that I received every time a moon heretic ascended.
## Changelog
🆑
balance: Smile of the moon's effects now last for longer and have a
longer minimum active time
balance: Mark of moon detonations now do sanity damage
qol: Ascended moon heretics and lunatics are now able to see who is and
isn't a lunatic.
qol: People inside the ascended moon heretics sanity draining aura now
gain an effect under their tile.
/🆑
* [NO GBP] Heretic path of moon, post launch patch (no jeature jeeze this time)
---------
Co-authored-by: Rex9001 <120136161+Rex9001@users.noreply.github.com>
* New masks (#81217)
## About The Pull Request
Adds 3 new masks:
* Kitsune mask
* Facescarf
* Rebellion mask
All masks (and facescarf) are recolorable. And also thanks to Kovac for
the scarf sprites
## Why It's Good For The Game
Cool masks for make character style more unique. All are recolourable.

## Changelog
🆑
add: 3 new masks for your characters (thanks to Kovac for the scarf
sprites)
/🆑
---------
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
* New masks
---------
Co-authored-by: NeonNik2245 <106491639+NeonNik2245@users.noreply.github.com>
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
* Adds an IS_CHANGELING helper (#81228)
## About The Pull Request
What it says on the tin. I also replaced checks with it everywhere I
found appropriate, hopefully without accidentally breaking anything.
## Why It's Good For The Game
We have a helper for most other antags, and it makes code a lot cleaner
and easier to read. I'm surprised we didn't have this one already.
## Changelog
🆑
code: added an IS_CHANGELING() helper and used it where applicable
/🆑
* Adds an IS_CHANGELING helper
* skyrat stuff
---------
Co-authored-by: A miscellaneous Fern <80640114+FernandoJ8@users.noreply.github.com>
Co-authored-by: jjpark-kb <mccorvey.norman@gmail.com>
* Fixes Statues emitting solid lights (#81398)
## About The Pull Request
Fixes#63653

Custom sculpted statues no longer include the light layers of objects
such as lanterns and PDA lights.
## Why It's Good For The Game
No longer have to worry if sculpting someone with their lights on.
Can safely sculpt a vibebot without covering your screen in a solid
circle.
## Changelog
🆑
fix: Sculpted statues stop including light layers.
/🆑
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Fixes Statues emitting solid lights
---------
Co-authored-by: Ed640 <Ed.640@hotmail.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Client colo(u)r no longer uses Client.color, now coloring the render game plane instead (#81328)
## About The Pull Request
Rather than utilizing `client.color`, client color datums now apply
their colors to the render game plane.
This means
1. The player's HUD is no longer affected by client colors. Being
colorblind (in game) no longer makes all hud elements grey as well, only
the world.
2. Overall, less harsh colors.
## Why It's Good For The Game
1. The player's HUD, being an OOC concept, should remain unaffected by
stuff like glasses and blindness. This is how it worked in the past,
before plane cube (IIRC), but it was lost in the transition.
2. Overall just looks a lot better, IMO.
Here's what meson goggles with glasses colors active looks like:
Before:

After:

## Changelog
🆑 Melbert
qol: Glasses colors should be a lot less harsh, and being blind no
longer also blinds your hud.
/🆑
* Client colo(u)r no longer uses Client.color, now coloring the render game plane instead
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Allows shakers to pour drinks with custom names and descriptions (#81234)
<!-- 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
This adds the ability for shakers to pour drinks with custom names and
descriptions. You can alt-click on a shaker and it will prompt you to
set the name and desc for the drink, and they will be given to
description of whatever drinking glass you pour into.
Washing the glass will remove these customization (it will also now
remove any changes made using a pen).
https://github.com/tgstation/tgstation/assets/42454181/6cf336f0-0621-49f3-baf1-91038f454c24
<!-- 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
While this already kind of exists by using a pen to change the name and
desc, this is pretty annoying to do for every single glass of a beverage
you serve. It also is overwritten whenever the kind of drink in the
glass is changed. This PR will let bartenders serve plenty of their own
special concoctions without having to rename every single glass they
serve.
<!-- 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. -->
🆑
add: Shakers can now pour drinks with custom names and descriptions!
Alt-click the shaker to enable this.
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Allows shakers to pour drinks with custom names and descriptions
---------
Co-authored-by: Nick <42454181+Momo8289@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Freedom implant and Biodegrade works on knotted shoes (#81376)
## About The Pull Request
- Freedom Implant will un-knot knotted shoes.
- Biodegrade will melt knotted shoes.
## Why It's Good For The Game
Just a niche interaction idea I had. Knotted shoes are, obviously,
obstructing your movement so these two tools that aim to un-obstruct
your movement should do something about it, right?
Also it would be funny to see a Ling melt their own shoes. Biodegrade
prioritizes handcuffs over anything else so it shouldn't be of great
concern.
## Changelog
🆑 Melbert
add: Freedom Implants and Biodegrade can you free you of the shackles of
knotted shoes.
/🆑
* Freedom implant and Biodegrade works on knotted shoes
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Adds fire ants as a chem (#81214)
## About The Pull Request
Adds fire ants as a chem. They work pretty much exactly the same as
normal ants, but they deal roughly 2x damage. Also mildly cleans up
whatever ant code I touched
## Why It's Good For The Game
Doesn't really make sense that when you scoop up an anthill of fire
ants, you get a beaker full of normal ants. It's honestly an injustice.
Also, new flavours for the bartender and chef to work with are always
nice.
## Changelog
🆑
add: Fire ants can now be scooped up and used as a chem like normal
space ants
/🆑
---------
Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@ users.noreply.github.com>
* Adds fire ants as a chem
---------
Co-authored-by: Nick <42454181+Momo8289@users.noreply.github.com>
Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@ users.noreply.github.com>
* Mining Bluespace Survival Capsule's "Stand back!" alert now actually has meaning (#81193)
## About The Pull Request
- Standing in range of a Bluespace Survival Capsule being deployed will
now toss you away from the deployed location of the pod, to roughly 2
tiles away.
## Why It's Good For The Game
I always found it weird (and a little misleading) that triggering a
survival capsule alerts people to "Stand back!", but it's actually
harmless to stand on top of it and even smart in some contexts since you
phase into it like nothing happened.
So I added the missing flavor.
This also has some potential shenanigans involving antagging, as you can
time it perfectly so that you toss it just in time to throw people away
from it.
Note: The Luxury Elite pod is so large, that even after being thrown
away, you may still end up inside the pod by the time it deploys, but I
think that's funny. So.
## Changelog
🆑 Melbert
add: Shaft Miner's Bluespace Survival Capsules will now throw people
away from it when it deploys. Be sure to heed the warning to "Stand
back".
/🆑
* Mining Bluespace Survival Capsule's "Stand back!" alert now actually has meaning
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Moves teleblocker/beacon implants to the techweb, new research node. Exile implants can now be printed (#81230)
## About The Pull Request
This adjusts some of the techweb stuff related to security implants. I
meant to do this in the original PR but got LAZY because I wanted to
push it out the door, and then the feature freeze happened.
Teleport Blocker and Beacon implants have been moved from cargo to the
departmental lathe, printable at (where else?) security. **They can no
longer be purchased from cargo.** They are behind a new research node,
which requires Subdermal Implants and Miniature bluespace research. This
node costs 2500 points.
Exile implants can now be printed from the security lathe.
Security Implants now have their own lathe category.
This also slightly adjusts the descriptions for the implant case designs
to reflect their contents.
## Why It's Good For The Game
First and foremost -- I really had meant to do this in the original PR.
Throwing these implants into cargo was intended to gate access to them
until later in the round. In hindsight, cargo doesn't really accomplish
that in the way I'd hoped. It's still available roundstart, and no price
will change that. Having these be handled by science is a much more
sound idea.
(Also security already has enough to be ordering from cargo, and not
nearly enough reasons to be yelling at science!)
Exile implants should be easier to access, especially for how little
impact they actually have. The simple convenience may be the difference
between a peaceful resolution or being beaten to death in the back of
the brig.
Adjustments to the lathe categories, descriptions are for slightly
better UX.
* Moves teleblocker/beacon implants to the techweb, new research node. Exile implants can now be printed
---------
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
* Adds a signal to buying items from the uplink (& fixes TC misinfo) (#81372)
## About The Pull Request
Adds a signal when someone buys an item from the uplink and removes
single-letter vars from the ``spawn_item`` proc, and adds/standardizes
add/removing of telecrystals from uplinks (and admin setting how much TC
they have) to ensure the UI always has the right amount of telecrystals
displayed in it.
## Why It's Good For The Game
There are reasons why someone would want to hook up to a traitor's
uplink and listen to items they purchase to do any special effect
on-purchase, so this adds support to do anything in the future with it.
Also tells players how much TC they actually have without forcing them
to close/reopen the UI every time they insert some TC in it by hand.
## Changelog
🆑
fix: Uplinks now update their UI when you add telecrystals in them, so
you don't need to close and reopen it.
/🆑
* Adds a signal to buying items from the uplink (& fixes TC misinfo)
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Fixes high power consumption for lathes (#81375)
## About The Pull Request
This employs a formula that creates a relationship between total stacks
of material used & the machines active power consumption
- When inserting/ejecting a full stack of materials, lathes use 1% of
the machine active power usage. To put it in player terms if your apc
has a normal high capacity power cell it will use 2% of power when
inserting a full stack(50 sheets) of material or when ejecting a full
stack of materials
- Fixes#81366. When printing multiple items that would require a full
stack of materials (50 sheets or roughly 5000 matter units) It now uses
5% of the machine active power usage. To see the comparision we will see
the same examples used in the issue
**Old Behaviour**
- Printing 10 large beakers for tier 1 lathe would consume 48% of apc
cell
- Printing 1 circular saw for tier 1 lathe would consume 32% of apc cell
**New Behaviour**
- Printing 10 large beakers for tier 1 lathe now consumes just 5% of apc
cell
- Printing 1 circular saw for tier 1 lathe now consumes just 1% of apc
cell
- Higher tier parts will consume more power to compensate for the lower
material costs because the machines active power usage increases with
higher tier parts, assuming your apc has a normal high capacity power
cell
- Printing 10 large beakers for tier 4 lathe now consumes 12% of apc
cell
- Printing 1 circular saw for tier 4 lathe now consumes 5% of apc cell
This formula is experimental and i just made it up so let's see how this
plays out
## Changelog
🆑
fix: lathes now use moderate power for printing operations
/🆑
* Fixes high power consumption for lathes
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* Fixes the typepath of the shove blocker module. (#81374)
## About The Pull Request
The bulwark module had the wrong typepath for most of the descriptive
elements and its complexity. So the shove block was a free module. And
technically not incompatible with itself. Oh my.
Not super relevant for actual play, as there is no access to this module
anywhere currently, but who knows.
## Why It's Good For The Game
Typepaths.
## Changelog
🆑
fix: The shove blocker module parent type now has the correct typepath.
/🆑
* Fixes the typepath of the shove blocker module.
---------
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Space dragon no longer turns the entire roundend report bold (#81370)
## About The Pull Request
Fixes the entire roundend report turning bold if there was a space
dragon with carp.
## Why It's Good For The Game
yet another roundend report issue fixed.
## Changelog
🆑
fix: Space Dragon's carp allies no longer turn the entire roundend
report into bold.
/🆑
* Space dragon no longer turns the entire roundend report bold
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Cucumber Lemonade now has a price (#81368)
## About The Pull Request
One of the bar restaurant bots asks for cucumber lemonade but it has no
price attached to it, so it takes this drink (that requires help from
botany) and gives nothing in exchange, this fixes that.
## Why It's Good For The Game
bug fix
## Changelog
🆑
fix: Bar bots asking for Cucumber Lemonade now gives you money for
completing it.
/🆑
* Cucumber Lemonade now has a price
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Reviving stasis now puts you in stasis (#81339)
## About The Pull Request
In the title, Changeling's "Revival Stasis" ability with the description
"We fall into a stasis", now puts you in stasis
## Why It's Good For The Game
I just found out that this doesn't actually put you in stasis and it's
kinda fucked up, it's in the name it's in the description, why is it not
the actual case?
It would be nice if Changelings can use this ability to actually fake
death from critical condition without risking a death gasp when they die
for real just because you got oxygen damage while in your "stasis", thus
going against the defibrillator explosion ability.
## Changelog
🆑
add: Changeling's reviving stasis ability now puts you in stasis.
/🆑
* Reviving stasis now puts you in stasis
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Fixes screwdriver cocktail not being a screwdriver. (#81030)
## About The Pull Request
Alternative title: The screwdriver cocktail is now the world's worst
screwdriver (for real this time).
As mentioned in my writeup in the related issue (#81017), as far as I
know, it has never actually worked.
Tl;dr: It requires `on_transfer` to be called with the method as
ingestion, but in no way does transferring into a drinking glass ever
use that method, and most ways don't even specify a method and thus
`on_transfer` doesn't even get called in the first place.
Then I went back to the original pr and tried it, and it didn't work.
Then for resolving it, it feels unwieldy to do all this trickery on the
reagent to change a value on the drinking glass when the drinking glass
already has the perfect procs for this: the `on_cup_change` and
`on_cup_reset` callbacks.
Instead of using `on_transfer` and registering a hell of a lot of
signals to re-check the master reagent every time the contents get
changed, we just check whether the style we changed into is that of a
screwdriver cocktail.
This actually works.
Oh, and I also added use sounds because it didn't have them, which I
believe only actually get used when using it as a tool and thus only
when it's a screwdriver.
## Why It's Good For The Game
Fixes#81017.
## Changelog
🆑
fix: As they should've for a while, screwdrivers (cocktail) actually
work as screwdrivers (tool).
sound: The screwdriver cocktail also actually plays the screwdriver
sound when used.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Fixes screwdriver cocktail not being a screwdriver.
---------
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* [NoGBP] Fixes Equipment Slowdown (#81352)
## About The Pull Request
Fixes#81350#81321 wasn't done as tactfully as it should have, resulting in some
oddities like bolas in your pockets giving you slowdown. This PR cleans
up the code and makes it work as intended.
Thanks to Melbert for literally just giving me the code for this. I did
test it and added proc comments so I can guarantee everything works.
## Why It's Good For The Game
You shouldn't be slowed down from a bola in your pocket, and this logic
is much nicer than what we had before.
## Changelog
🆑
fix: Bolas in your pockets no longer slow you down.
/🆑
* [NoGBP] Fixes Equipment Slowdown
---------
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
* Minor update to admin secrets panel (free antags for everyone) (#81292)
## About The Pull Request
Remakes a button in admin secrets panel from everyone is traitor to
everyone is admin chosen antag.
## Why It's Good For The Game
Slightly better buttons for admin to push
## Changelog
🆑
admin: remade everyone is traitor into everyone is antag in secrets
panel
/🆑
* Minor update to admin secrets panel (free antags for everyone)
---------
Co-authored-by: Holoo <38228316+Holoo-1@users.noreply.github.com>
* Health analyzer displays blood alcohol content (#81306)
## About The Pull Request
Health analyzer includes a blood alcohol content if the scanned target
is inebriated.
## Why It's Good For The Game
It's useful to know, sometimes their blood is filtered, stomach pumped,
but this effect will still be in action.
## Changelog
🆑 LT3
qol: Health analyzer will now display blood alcohol content
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Health analyzer displays blood alcohol content
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Fix finger gun chat messages (#81347)
## About The Pull Request
It should not say "[the guy that you're aiming at] fires their gun"
## Changelog
🆑 Melbert
fix: Fixed Finger Guns giving a misleading chat message
/🆑
* Fix finger gun chat messages
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* fixes the crystallizer providing itself as the dangerous recipe made + fixes the max temperature on the HFR interface (#81345)
## About The Pull Request
the crystallizer gave itself as the dangerous recipe created instead of
the created thing
the HFR temp thingie was typed incorrectly
## Why It's Good For The Game
the correct information is shown ingame

yummy yummy temperature
## Changelog
🆑
fix: The HFR now provides the max temperature for recipes
fix: the crystallizer now provides the dangerous object created instead
of itself in admin logging
/🆑
* fixes the crystallizer providing itself as the dangerous recipe made + fixes the max temperature on the HFR interface
---------
Co-authored-by: 1393F <59183821+1393F@users.noreply.github.com>
* General maintenance for Lathes (#81244)
## About The Pull Request
1. **Qol Stuff**
- Screentips & examines for screwdriver, crowbar acts, multiool &
wirecutter Also for Alt click
- Techfabs can now also use the Mouse drag functionality to set drop
target for items
- Lathe printing animation now plays on loop instead of just flicking
once till printing is finished for more visual feedback
2. **Code Improvements**
- Merged `start_making()` with `do_make_item()`. That proc was like only
3 lines long and used only in 1 place so let's just move that code to
`ui_act()`
- Merged `user_print_item_id()` with `ui_act()`. Again was used only in
1 place so let's just move that code in to save some proc overhead
- Sets `processing_flags` for autolathe to `NONE` cause we don't use
`process()`
- Autodocs vars such as `hacked` , `shocked` etc & procs
- `maxmult` is now computed client side saving backend bandwidth,
`construction_time` is removed from lathes which did not use it
- Removed all usages of lathe taxes and their related vars, removed
engineering lathe no tax from ice moon, replaced with normal engineering
lathe
3. **Fixes**
- Lathe sheet insertion animations are now linked & work again for all
material types inserted via remote silo/local storage,
silver/titanium/plastic all play the same animation(that is
`protolathe_shiny` overlay). Other materials have their own respective
overlays
- Fixes#81243. Calling `update_static_data_for_all_viewers()` is too
expensive for the UI. We should instead use `SStgui.update_uis(src)`
which will report the `busy` status to the UI more immediatly
- Fixes#81236. Some problems with the params passed to the timer
callback. It should now print the correct number of requested items
- Fixes#81192. `design.materials` would runtime for custom material
items as they were list of texts not materials. We have to pass our
manually parsed list of materials for an specific item to ensure they
are set & used correctly. Same fixes apply for techfabs as well
## Changelog
🆑
qol: adds screentips & examines for screwdriver & crowbar acts & alt
click.
qol: techfabs can now use the mouse drop functionality to set drop
target.
qol: lathe printing animation plays on loop while printing rather than
flicking once for more visual feedback
fix: lathe sheet insertion animations are now linked & work again for
all material types inserted via remote silo/local storage
fix: printing custom materials items from autolathe works again.
fix: printing multiple items from lathes will actually print that
correct quantity of items requested.
fix: printing items the 2nd time around from lathes won't cause the UI
to reload each time.
code: autodoc for some vars & procs, merges procs.
refactor: Optimized code for autolathe & techfabs in general. Report
bugs on github
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* There we go
* aaaa
* Missed this little thingy
* There we go, should be clean af
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
You can now move and talk through statues and mannequins (#81188)
## About The Pull Request
I recently played a game where I rotated my skeleton model while
rotating my own character at the same time and it being in sync gave me
the realization on how cool it would be if the Coroner was able to
simply control the skeleton body.
I find skeleton displays very funny and I want to see more funny things
happen with them, so I thought this would be a good place to start, with
the benefits that it also works on mannequins and statues too so they
aren't left out.
Basically, while it is unanchored, if you have a statue/mannequin
grabbed, it will change its direction as you do, and speak the same
words you do. Your own messages can only be heard if the person is
directly next to you, revealing that it was you talking through it all
along.
I was originally gonna add this to the simple rotation component but
moved off when I decided to add talking through it, I left in the code
improvements I made to the component though since it is one of the
oldest components and hasn't been touched in a while.
Video demonstration (before I added the person also talking, just ignore
that missing)
https://github.com/tgstation/tgstation/assets/53777086/27242fc3-9649-418d-95cb-b31619319e97
While fixing the Toilet bong's rotation stuff I noticed a lot of it
wasn't up to proper code standards so I went over it and fixed issues I
had with it. It now doesn't give text saying you found something nasty
to species that still likes mice (like flypeople), and fixed its update
appearance to match the codebase standard set by the introduction of
``update_appearance`` many years ago.
## Why It's Good For The Game
It's a funny small idea I had and got inspired to add, it's a niche
mechanic that I think fits the aesthetic I am going for with Coroner and
also give a funny interaction with the human-like inanimate objects.
## Changelog
🆑
fix: Species that can eat mice don't get disgusted from seeing one in
the toilet bong.
add: Grabbing an unwrenched statue/mannequin/skeleton model will now
move its direction as you move yours, and you can talk through it.
/🆑
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Legcuffs on Aliens Work as Intended (#81321)
Currently on live, if you throw a bola at a xenomorph or use a beartrap
on them, the legcuff will successfully attach itself to the xenomorph
but nothing will happen. It will not be present visually nor apply
slowdown to the xenomorph at all, and it also gives the xenomorph no
indication that it is attached to them or option to remove it. This PR
fixes that problem by moving some human-specific code downwards,
allowing xenomorphs to visually have legcuffs applied to them, be slowed
down by them and to take them off by themselves.
Note that as with all cuff-related items, xenomorphs will break the item
immediately upon attempting to resist it at all. Therefore, this PR
doesn't really do anything balance-related, although maybe you can buy
yourself a half-second while the xenomorph you just bola'd realizes they
need to take it off before chasing you down again.
Another thing to note is that queens and praetorians don't look right
with these overlays applied (they float to the left of their sprite),
but that's a bigger issue with a lot of the overlays in general (fire
being a big one), to be fixed in another PR.
This has bothered me for a while now, so its about time I do something
about it. Even if using bolas or beartraps on xenomorphs is practically
useless, if we're gonna let players do it then we're going to let them
do it right.
🆑
fix: Xenomorphs now have legcuffs applied to them properly.
/🆑
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
* Adds head-only target hotkey (#81222)
## About The Pull Request
Adds a new optional hotkey that targets only the head and does not cycle
to eyes or mouth.
Currently the way the numpad hotkeys work on /tg/ is every key targets
one body part... except 8. Numpad 8 Currently cycles through
head-eyes-mouth, despite _**numpad 7 already handling mouth and numpad 9
already handling eyes**_. There's no head-only key.
* Adds head-only target hotkey
---------
Co-authored-by: Swift <jackwars4@gmail.com>
* Fixes surgeries runtiming constantly when having the surgery initator open, fixes some surgeries missing sounds (#81307)
## About The Pull Request
Fixes#79318
- See the issue for more information. I fixed the runtimes as expected,
and then removed `SURGERY_REQUIRE_LIMB` from some surgeries which don't
actually require a limb, such as implant removal, dissection, and living
revival. I could've easily missed some, and as a result some surgeries
are lost to the void and unselectable, but from what I could tell in
testing it seems... fine.
- Adds `SHOULD_CALL_PARENT` to surgery `can_start`. Cleans up some
surgery `can_start` overrides.
- Adds missing sounds to puncture repair surgery.
## Changelog
🆑 Melbert
fix: Fixed Puncture Repair surgery not having surgical sounds
fix: Fixed Surgery Initiator potentially showing invalid surgeries
/🆑
* Fixes surgeries runtiming constantly when having the surgery initator open, fixes some surgeries missing sounds
* Fixeed
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Adds a suicide_act() to the smite spell (#81252)
## About The Pull Request
What it says on the tin
## Why It's Good For The Game
https://youtu.be/cvfLHTyDv9o?t=4
## Changelog
🆑 Wallem
add: Adds a new suicide_act() to the smite spell
/🆑
* Adds a suicide_act() to the smite spell
---------
Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
* Refactors fancy type generation (#81259)
## About The Pull Request
[Refactors fancy type
generation](3f218ac7b7)
Ok so we have this proc that generates concatenated names for types so
admins have a nice list to sort through.
The trouble is this is done by, for each type, iterating all possible
replacements, and seeing which ones apply (with expensive string
operations)
A clean run of this applied to all datums takes about 3.5 seconds on my
pc.
This sucks.
Ok so can we do better. Well, yes, pretty easily.
Rather then, for each potential type, iterating all the options, let's
build a zebra typecache (a lookup list of type -> string to use), and
use that.
Then we can use a list of replacement -> the bit to tear out to figure
out what to remove.
This works quite well. It does mean that we're doing it based off the
type tree and not type paths, so if we didn't have a replacement for
like, mob, it'd look weird, but we don't have cases like that so it's
fine.
Or well we sorta did, didn't have anything for atom movables or areas,
but I fixed that so sall good.
Anyway, we only need to do this work once. It takes about 0.3 seconds on
my machine, so we can cache it.
Just this on its own would technically slow init, since we have a some
code that's running this proc off static, but we can just not, that's
fine (technically saves init time too since we don't have to burn 0.1
seconds on it anymore).
This brings the cost of generating this list for all datums from 3
seconds to 0.16, assuming we have the static pre generated.
We could in theory pre-generate just like, all the strings?
But I don't think the cached cost is high enough for that to be a real
problem. IDK open to other thoughts
Oh also I had to reorder the strings in that list, cause
zebra_typecacheof has reverse priority. s life
[Updates stat tracking macro to work at world
start](1fbfb701a1)
It for some reason doesn't actually get anything this early, but now at
least the logging would in theory function
## Why It's Good For The Game
Better response times for admins, faster code, more better
* Refactors fancy type generation
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Barcode scanners can now be printed. (#81324)
## About The Pull Request
Currently the only way to get a barcode scanner is by spawning as a
Curator, this is lame and prevents people to job change into a
librarian, so now it can be printed like basically all other service
job's tools.
Part of computer tech

## Why It's Good For The Game
You no longer have to spawn as a Curator to be able to work in the
Library, and Curators can now replace their otherwise completely
irreplaceable equipment.
## Changelog
🆑
qol: The barcode scanner is now part of computer tech and can be printed
at the service techfab.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Barcode scanners can now be printed.
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* [MDB IGNORE] Adds a map lint against using dir-var and icon-var edited windoors (#81272)
## About The Pull Request
Title.
Another big updatepaths PR thats been on my radar for awhile.
The dir banned var edit is self explanatory. However, I banned
icon_state from them as well as there are a big handful of windoors that
are either regular, and look like security doors, OR are their mirrored
counter part (a south right door var edited to look like a south left
door).
## Why It's Good For The Game
Avoid mapping sins like this

## Changelog
N/A to players
* [MDB IGNORE] Adds a map lint against using dir-var and icon-var edited windoors
* 1
* bs kilo
* rest
* 3
---------
Co-authored-by: Jolly <70232195+Jolly-66@users.noreply.github.com>
Co-authored-by: Zergspower <Griffinj88@yahoo.com>
* Station Goals are now handled by SSstation instead of a global list (#81177)
## About The Pull Request
You can now get station goals in a slightly better way over using a
`locate() in` call on a global list.
The Meteor Satellite goal no longer stores a giant list of ALL OBJECTS
in view. And now correctly only counts turfs.
## Changelog
🆑
fix: Meteor Satellites no longer erroneously count every piece of paper
as a protected turf.
fix: As a result the station goal is slightly more difficult
/🆑
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Station Goals are now handled by SSstation instead of a global list
* Will it work? I do not know. But it compiles.
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Fix some copy paste UI errors (#81325)
## About The Pull Request
One day we will have opendream lint to catch this. (WYCI I guess)
* Fix some copy paste UI errors
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes Alien Hunter's Pounce Visuals (#81322)
## About The Pull Request
Currently on live, when an alien hunter goes for a pounce, once the
pounce is completed the hunter will rise quite a distance slowly from
the floor as setting body_position_pixel_y_offset now is done with
animation as opposed to being instant. This looked extremely stupid, so
I went and fixed it. Initially, I was going to add some form of trait to
cancel out the smoothing effect from a shifting y offset, until I looked
at the sprite for alien pouncing and realized it was 96x96 for no
reason. For reference, 96x96 is the size of Bubblegum's sprites.
So, I just made the sprites 48x32, got rid of the unused sprites
(sentinel and drone both had pounce sprites but neither ever had that
ability iirc) and adjusted some of the pounce ability's internal offset
stuff to compensate and it looks perfectly fine now. Somehow made the
image file larger by 243 bytes according to Github but I guess it is
what it is.
## Why It's Good For The Game
The alien hunter ascending from 2 tiles below where it actually was
whenever it pounced was incredibly jarring. This fixes the problem.
## Changelog
🆑
fix: Alien Hunter's pounce ability no longer has any weird offset issues
once the pounce is completed.
/🆑
* Fixes Alien Hunter's Pounce Visuals
---------
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
* Restore non-functional ash mark ability (#81320)
## About The Pull Request
Apparently, ash mark is supposed to replenish mansus grasp cooldown by
75% when triggered, but this is neither reflected by the research
description, nor functional ingame. This edit makes it work, and adds
the effect to the description.
Additionally, that same block of code was present in moon mark research
also. I removed that because I assume it is intended to be an ash-only
feature, and moon only had it because of copy-pasting.
And since we're at it, I also reworded the mark description to be more
clear about the mark only transferring to a single heathen at a time.
## Why It's Good For The Game
I don't think we should have code which does not work. The options are
to either remove it, or make it work, and the latter is more fun.
## Changelog
🆑
fix: ash mark now properly lowers the cooldown of mansus grasp when
triggered
/🆑
* Restore non-functional ash mark ability
---------
Co-authored-by: ViktorKoL <44502667+ViktorKoL@users.noreply.github.com>
* Fix bad reference management in object overlay circuit (#81338)
## About The Pull Request
`/obj/item/circuit_component/object_overlay` handled the wrong
references when implementing `Destroy`.
## Changelog
🆑 Melbert
fix: The object overlay circuit component will no longer take things
with it.
/🆑
* Fix bad reference management in object overlay circuit
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* [FIX] Makes Ghetto Surgery Behave In Line With Expectations
* fixes
---------
Co-authored-by: Higgin <cdonny11@yahoo.com>
Co-authored-by: jjpark-kb <mccorvey.norman@gmail.com>
* Regenerative Materia Blobs No Longer Drug Non-Carbons (#81318)
## About The Pull Request
Fixes#79841
This PR fixes the bug where cyborgs could get high from being attacked
by regenerative materia blobs by adding a requirement that the target is
a carbon before applying the drug effect to them.
## Why It's Good For The Game
This isn't believed to be intentional (its marked as a bug) and applying
the drugginess effect to non-carbons has shown in the past to cause some
issues (ex. cyborgs which have the high effect for much much longer than
intended were it applied to a carbon)
## Changelog
🆑
fix: Regenerative Materia blobs can no longer drug non-carbons.
/🆑
* Regenerative Materia Blobs No Longer Drug Non-Carbons
---------
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
* RD and QM coats can hold their telebatons. QM coat can also hold items that a regular jacket can hold (#81301)
## About The Pull Request
RD's and QM's coats can now hold telebatons.
QM's coat can now hold items that any regular jacket can hold, such as
small oxygen tanks.
## Why It's Good For The Game
RD and QM coats were the only head of staff suits that couldn't hold
telebatons (even their winter coats can hold them). Both were added
recently, so I think it's an oversight, but I'm labeling this as a
balance change anyway.
It's also really weird that QM's coat couldn't even hold internals
before.
More consistency for head of staff suits
## Changelog
🆑
balance: RD and QM coats can hold telebatons now
qol: Quartermaster's coat can hold items that a normal jacket can hold,
such as small oxygen tanks
/🆑
* RD and QM coats can hold their telebatons. QM coat can also hold items that a regular jacket can hold
---------
Co-authored-by: cnleth <113535457+cnleth@users.noreply.github.com>
* [FIX] Prevents Buckling Megas, Blobs, Constructs, Slimes, and Dragons (#81287)
## About The Pull Request
fixes#80946
not sure why it borrowed the wrong commit msg
## Why It's Good For The Game
on the one hand it's funny but on the other hand it's dumb to be able to
buckle massive mobs to tiny-sprite objects they might not be able to get
out of without just destroying their own chair - assuming they can,
which in the case of some things you can buckle to, you can't (looking
at roller beds.)
## Changelog
🆑
fix: removed ability to buckle megafauna, constructs, blob minions,
dragons, and slimes.
/🆑
* [FIX] Prevents Buckling Megas, Blobs, Constructs, Slimes, and Dragons
---------
Co-authored-by: Higgin <cdonny11@yahoo.com>