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

Converts the ORM, produce console, and ore container to use DmIcon #4215

Merged
merged 1 commit into from
Nov 14, 2024

Conversation

Absolucy
Copy link
Member

@Absolucy Absolucy commented Nov 12, 2024

About The Pull Request

this changes the ORM, ore container, and produce order consoles to use DmIcon instead of getFlatIcon

Why It's Good For The Game

getflaticon bad, dmicon good

Changelog

Should have no visible difference in-game, this just improves performance.

Ghommie pushed a commit to tgstation/tgstation that referenced this pull request Nov 14, 2024
## About The Pull Request

Upstream port of
Monkestation/Monkestation2.0#4215

This changes some tgui UIs that used icon2base64/getFlatIcon to display
items to instead use DmIcon, just passing the icon/icon_state instead.

To be specific: the ORM, the "ore container", and the order console
(produce, mining, and bitrunning vendors)

<details>
<summary><h3>UI screenshots / proof of testing</h3></summary>

![2024-11-12 (1731458275) ~
dreamseeker](https://github.com/user-attachments/assets/b1c60677-b117-4c23-8076-8b5072130d55)
![2024-11-12 (1731458281) ~
dreamseeker](https://github.com/user-attachments/assets/b64d3c2f-4754-4e5d-991a-2df69d86eb2a)
![2024-11-12 (1731458286) ~
dreamseeker](https://github.com/user-attachments/assets/287d8db1-8acb-4c4c-a2f0-66227a477d19)
![2024-11-12 (1731458388) ~
dreamseeker](https://github.com/user-attachments/assets/f69f5d51-5cdc-442c-971d-a4abedd4a3d2)
![2024-11-12 (1731458391) ~
dreamseeker](https://github.com/user-attachments/assets/53a95e88-ac41-4f97-a409-10b19d130376)


</details>

## Why It's Good For The Game

gfi bad, especially in ui(_static)_data, dmicon good.

## Changelog
:cl:
refactor: The ORM, "ore container", and order console UIs (produce,
mining, bitrunner vendors) now load icons in a more efficient manner.
/:cl:
@Absolucy
Copy link
Member Author

/tg/ approved and merged the upstream version of this, and i haven't seen any related issue reports, so i'm gonna assume this is good to go.

@Absolucy Absolucy merged commit 199b7fb into Monkestation:master Nov 14, 2024
25 checks passed
@Absolucy Absolucy deleted the more-dmicon branch November 14, 2024 20:32
FlufflesTheDog pushed a commit to NovaSector/NovaSector that referenced this pull request Nov 30, 2024
## About The Pull Request

Upstream port of
Monkestation/Monkestation2.0#4215

This changes some tgui UIs that used icon2base64/getFlatIcon to display
items to instead use DmIcon, just passing the icon/icon_state instead.

To be specific: the ORM, the "ore container", and the order console
(produce, mining, and bitrunning vendors)

<details>
<summary><h3>UI screenshots / proof of testing</h3></summary>

![2024-11-12 (1731458275) ~
dreamseeker](https://github.com/user-attachments/assets/b1c60677-b117-4c23-8076-8b5072130d55)
![2024-11-12 (1731458281) ~
dreamseeker](https://github.com/user-attachments/assets/b64d3c2f-4754-4e5d-991a-2df69d86eb2a)
![2024-11-12 (1731458286) ~
dreamseeker](https://github.com/user-attachments/assets/287d8db1-8acb-4c4c-a2f0-66227a477d19)
![2024-11-12 (1731458388) ~
dreamseeker](https://github.com/user-attachments/assets/f69f5d51-5cdc-442c-971d-a4abedd4a3d2)
![2024-11-12 (1731458391) ~
dreamseeker](https://github.com/user-attachments/assets/53a95e88-ac41-4f97-a409-10b19d130376)


</details>

## Why It's Good For The Game

gfi bad, especially in ui(_static)_data, dmicon good.

## Changelog
:cl:
refactor: The ORM, "ore container", and order console UIs (produce,
mining, bitrunner vendors) now load icons in a more efficient manner.
/:cl:
FlufflesTheDog pushed a commit to NovaSector/NovaSector that referenced this pull request Nov 30, 2024
## About The Pull Request

Upstream port of
Monkestation/Monkestation2.0#4215

This changes some tgui UIs that used icon2base64/getFlatIcon to display
items to instead use DmIcon, just passing the icon/icon_state instead.

To be specific: the ORM, the "ore container", and the order console
(produce, mining, and bitrunning vendors)

<details>
<summary><h3>UI screenshots / proof of testing</h3></summary>

![2024-11-12 (1731458275) ~
dreamseeker](https://github.com/user-attachments/assets/b1c60677-b117-4c23-8076-8b5072130d55)
![2024-11-12 (1731458281) ~
dreamseeker](https://github.com/user-attachments/assets/b64d3c2f-4754-4e5d-991a-2df69d86eb2a)
![2024-11-12 (1731458286) ~
dreamseeker](https://github.com/user-attachments/assets/287d8db1-8acb-4c4c-a2f0-66227a477d19)
![2024-11-12 (1731458388) ~
dreamseeker](https://github.com/user-attachments/assets/f69f5d51-5cdc-442c-971d-a4abedd4a3d2)
![2024-11-12 (1731458391) ~
dreamseeker](https://github.com/user-attachments/assets/53a95e88-ac41-4f97-a409-10b19d130376)


</details>

## Why It's Good For The Game

gfi bad, especially in ui(_static)_data, dmicon good.

## Changelog
:cl:
refactor: The ORM, "ore container", and order console UIs (produce,
mining, bitrunner vendors) now load icons in a more efficient manner.
/:cl:
GoldenAlpharex pushed a commit to NovaSector/NovaSector that referenced this pull request Dec 5, 2024
* fixes borgs linking to ais in mechs cards and modsuits (#87737)

* Automatic changelog for PR #87737 [ci skip]

* Living Flesh limbs won't try to grab underfloor objects (#87736)

## About The Pull Request

There were checks in living limbs that were checking the wrong thing, at
least one of which was introduced by a feature change in a PR I merged
but didn't notice.
Notably:
- We were checking if the person with the limb was invisible, not the
thing they were trying to touch.
- We were checking if the person with the limb was anchored, not the
thing they were trying to grab.

Now your arm will no longer reach out and grab wires that are under the
floor.

Additionally to this:
- I made all of the output say "Your left arm" or "Your left leg"
instead of "Your flesh left leg" because it sounded stupid.
- I removed an unused argument from `can_be_pulled` because it was
confusing me when I looked at the proc.
- I reworded some of the user feedback messages because "the thing
pretending to be your left arm feels funny" just isn't very evocative.

The diff is long because I reversed the order of arm/leg operations
because the leg block is much smaller :clueless:

## Why It's Good For The Game

Fixes bug.
I like it more.

## Changelog

:cl:
fix: Living Limbs no longer try to grab things that are under the floor.
spellcheck: Living Limb feedback messages now don't redundantly specify
that they are flesh arms.
/:cl:

---------

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

* Automatic changelog for PR #87736 [ci skip]

* Fix oil slime making vegetable oil instead of corn oil (#87730)

## About The Pull Request
Fixes bug caused by
https://github.com/tgstation/tgstation/commit/b1c5e5e0f6a1edf58b49b238af7d3094da76c69b#diff-aedb81aab354c31e90007bd0ad4e8babf347ac7d6003c3b01da14021ff5a10f4R387

The wiki and code prior both say oil slimes should make corn oil, but
they currently make vegetable oil. Since corn oil is needed for
nitroglycerin and oil slimes are explosive-centric, it makes sense they
should be making corn oil.
## Why It's Good For The Game
Fixes: #81036
## Changelog
:cl:
fix: Fixes oil slimes making vegetable oil instead of corn oil
/:cl:

* Automatic changelog for PR #87730 [ci skip]

* Moved the big slapping parts from the misc section to weapons (#87637)

* fix blade ascension not giving you the ring of blades (#87744)

## About The Pull Request
fix blade ascension not giving you the ring of blades
## Why It's Good For The Game
Bugfix
Closes https://github.com/tgstation/tgstation/issues/87344
Closes https://github.com/tgstation/tgstation/issues/85635
## Changelog
:cl:
fix: fix blade ascension not giving you the ring of blades
/:cl:

* Automatic changelog for PR #87744 [ci skip]

* Fixed fishing rod duping with poly belts and shapeshift spells. (#87706)

## About The Pull Request
It turns out the "shapeshifted from spell" status ejects everything
inside the shapeshifted mob when removed. That's been causing a little
issue with the fishing rod from the profound_fisher component, which a
few mobs have. This PR fixes just that.

## Why It's Good For The Game

![immagine](https://github.com/user-attachments/assets/b664ffa6-567f-4332-b7dc-a5d2badb43d3)

![immagine](https://github.com/user-attachments/assets/4c453f91-2852-40c0-8f54-c5d66f28fdb1)


## Changelog

:cl:
fix: Fixed fishing rod duping with poly belts and shapeshift spells.
spellcheck: Fixed a small typo when examining fishing rods.
/:cl:

* Automatic changelog for PR #87706 [ci skip]

* Chem master validates selected container in UI (#87780)

* Automatic changelog for PR #87780 [ci skip]

* fixes missing icons in abductor console (#87759)

## About The Pull Request
grabs the icon for the item correctly. also typescripts the interface
because blessed type safety would've prevented it being missing in the
first place. and clears some random deprecations

## Why It's Good For The Game
pretty icons 👍 
loading icons 👎 


![image](https://github.com/user-attachments/assets/ec524a52-fff5-4c67-b3fb-88fbfd5988af)


## Changelog
:cl:
fix: the abductor console now correctly loads images of equipment
/:cl:

closes #87565

* Add unit test tag to your PR title (#87757)

## About The Pull Request
You can now add `unit test` anywhere in your PR title to specify if you
are adding/modifying unit tests for your code. It's worth 6 GBP (It
Always has and wasn't changed here)

For when you want some extra GBP for your unit tests that sometimes go
un-noticed by maintainer's when reviewing large changes. It will
encourage people to write unit tests so they can get the extra points

## Changelog
N/A
/:cl:

* Add `TRAIT_EVIL` to admin tooling (#87749)

## About The Pull Request
Let's admins add/remove `TRAIT_EVIL` from mobs.

## Why It's Good For The Game
Useful for debugging.

## Changelog
:cl:
admin: Admins can now add/remove TRAIT_EVIL from mobs.
/:cl:

* Use native BYOND `isnan` and `isinf` for math defines (#87748)

## About The Pull Request

`// Remove these once we have Byond implementation.`

Well guess what we have now?

Altho sadly we still lack a native `isfinite`, so we still use a define
for that.

## Why It's Good For The Game

Native BYOND impls have better performance usually, due to them
compiling down to instructions, avoiding proc overhead.

## Changelog

No user-facing changes.

* [NO GBP] Fixes wings and jetpacks sometimes preventing you from opening doors (#87741)

## About The Pull Request
I hate this timeline. What title says, makes jetpacks and wings allow
you to bump into things you're moving into.

## Why It's Good For The Game
This feels awful and requires you to stop pressing movement keys for a
moment before resuming movement to get out of the "stuck" state

## Changelog
:cl:
fix: Fixed wings and jetpacks sometimes preventing you from opening
doors
/:cl:

* Drinking Glass sprite updates (#87756)

## About The Pull Request
This was meant to be just fixing the missing pixel... then it turned to
redoing all the glasses in all the basic sprites so they'd match... then
redoing sprites that were outdated...
And THEN I realized that drinking glasses can be using the same
auto-sprite system beakers have and oh man it's spiraling.

As for the (hopefully) full list of changes:
- Removes all `glass_[color]` icons. Any drink that fell under these
will now use the fill_icon and their reagent color. As such, a lot of
reagent colors have been tweaked for readability/realism/lemons don't
have red juice what the hell man
(Some colors shown are outdated. It is very annoying to tweak these. I
don't know how to in-game, if I even can. Relaunching several times is
painful.)

![image](https://github.com/user-attachments/assets/7edae6b4-13ec-4d1e-827c-fb7da1b2013a)

- Resprites the base `glass_empty`; now it is very visibly empty. The
overlay being slightly transparent actually works pretty well with this.
(Old / New)

![image](https://github.com/user-attachments/assets/e262c510-93d7-44b0-b4cc-cf498362b05b)

- Full resprite of Curaçao (now it's actually its beautiful blue instead
of gray)

![image](https://github.com/user-attachments/assets/3447c226-8f78-4fa3-bb55-4cb223a7e991)

- Minor resprites Beer/Green Beer/Iced Beer/Ale
(Yes, Beer/Green Beer have little animated bubbles)

![dreamseeker_Z1U2qBxRlx](https://github.com/user-attachments/assets/43903b24-2053-4571-b17b-f3ad80fa4150)

![image](https://github.com/user-attachments/assets/25327706-3207-4d3f-9ea8-ead29d3a0db0)
- Minor resprite of Monkey Energy
(It's animated now too but otherwise about the same sprite)

![dreammaker_lSqopANAXX](https://github.com/user-attachments/assets/7f797080-ae16-42c3-a1f1-e769506e31fd)

- Minor resprites to Pina Olivida, Banana Juice, Lemon Juice, Carrot
Juice - mostly just color tweaks so that they look more believable and
the banana juice is less green
- Fixes small nits in the sodas so that they are all consistent
## Why It's Good For The Game
Sprite maintenance and (hopefully) improvements - we've got a lot of
drinks in the Bars and the base foundation of that whole system deserves
a bit of love as well
## Changelog
:cl:
image: redid most basic drinking glass sprites, and moved several drinks
to use the same color system as beakers. Please bug report any incorrect
colored drinks or juices!
/:cl:

* Update README.md of unit tests folder for VS code support (#87758)

## About The Pull Request
Turns out using dream daemon isn't the only way to run unit tests.

You can do it from VS code itself & can see the output of each test in
the fancy chat window.
![Screenshot
(448)](https://github.com/user-attachments/assets/33aca6b5-3414-4560-9cc4-dd90fe80e2d1)

With the added advantage of using your debugger to step through each
line of code this should be the preferred way so I've updated the read
me file of the unit tests folder to specify that

You can also check the runtimes log in your game to see the output of
each unit test

## Changelog
:cl:
N/A
/:cl:

* Automatic changelog for PR #87759 [ci skip]

* Automatic changelog for PR #87749 [ci skip]

* Automatic changelog for PR #87741 [ci skip]

* Automatic changelog for PR #87756 [ci skip]

* the glove sounds are now only on some gloves [no gbp] (#87489)

## About The Pull Request
mistakes were made
## Why It's Good For The Game
god it's horrible, not only is it happening way too often because it's
every glove, but also it doesn't fit any other glove other than insuls
really, maybe nitriles but gosh just get rid of it for now, maybe later
I will make a better sound for other gloves.
## Changelog
:cl: grungussuss
sound: only insulated,nitrile, enhanced retrieval, latex, boxing,
improvised gripper gloves have an equip sound
/:cl:

* Automatic changelog for PR #87489 [ci skip]

* hunting behaviors no longer share a cooldown (#87670)

## About The Pull Request
all hunting subtrees were sharing a singular cooldown. this makes it so
each subtree has its own cooldown

## Why It's Good For The Game
fixes hunting subtree cooldowns affecting other subtrees. 

## Changelog
:cl:
/:cl:

* [NO GBP] Renames mob/camera to mob/eye and makes everything follow suit (#87684)

Clarity and consistency regarding DM's systems.
Internally, `eye` is used for anything that controls the client's view.

![image](https://github.com/user-attachments/assets/7d1291e1-7a6a-4736-a14b-97834e89846f)
How `eye` is used in DM is consistent with how we use the term, so I
figured this would add clarity.

Being named mob/camera also makes it unclear exactly what it's doing.
The name implies that it would function similar to how mob/camera/ai_eye
does, but most of the time it's only used as... an eye.

My ulterior reason for this PR is that I want to clean up
mob/camera/ai_eye and it's subtypes after this.

:cl:
server: mob/camera has been renamed to mob/eye, which may break
downstreams
/:cl:

---------

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

* Automatic changelog for PR #87684 [ci skip]

* Clarify locations for getting started in README (#87739)

## About The Pull Request
This is a `README.md` update to more efficiently point potential
contributors to the appropriate documentation for configuring their dev
environment.

## Why It's Good For The Game

It is typically best practice to make it easy for developers to quickly
contribute a change to a project by making things as clear as possible.

* [NO-GBP] Fixes a minor fuckup that made cigarettes contain up to double the intended amount of nicotine (#87733)

## About The Pull Request

See name, also fixes them not being injectable

Sorry guys, this is my fault.

## Why It's Good For The Game

Fixes a bug that was brought upon us when I thought 500 cigarettes was
funny

## Changelog

:cl:
fix: Cigarettes can be injected again and have the right amount of
nicotine
/:cl:

---------

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

* Automatic changelog for PR #87733 [ci skip]

* Teleporting while buckled to something will take you with it (#87725)

## About The Pull Request

closes #35872 (this bug is 6+ years old)

`/proc/do_teleport(...)` now has extra checks for atoms with buckled
mobs attempting to pass through it, assuring that they also pass through
with the vehicle

`/atom/movable/proc/is_buckle_possible(...)` will skip density checks if
the bucklable and the target share the same tile, because at that point
it doesn't really matter (it also interfered with density checks when
teleporting)
## Gleeble


![fucked-up-dog-geeble](https://github.com/user-attachments/assets/6ef814c2-d8f2-48fc-82a3-98517bf6a492)

## Changelog

:cl:
fix: Teleporting while buckled to something now works as expected
fix: You can buckle to anything if you share the same tile (cause at
that point it doesn't matter if there's a wall, right?)
/:cl:

* Automatic changelog for PR #87725 [ci skip]

* you can loosen straps of a sec helmet to show hair (#87533)

## About The Pull Request
title
## Why It's Good For The Game
gives more customization options for security players
## Changelog
:cl: grungussuss
qol: security helmet straps can be loosened to show hair
/:cl:

---------

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

* Automatic changelog for PR #87533 [ci skip]

* Fix issues when creating Discord Discussions on PRs with dummy long titles (#87768)

* Blob/Blob minion say logging (#87767)

## About The Pull Request

The `/datum/component/blob_minion` component now properly logs spoken
messages before relaying them.


![image](https://github.com/user-attachments/assets/f89b3e61-379c-4851-a571-fc31bf8a1ddc)

Radical.
## Why It's Good For The Game

Closes #86904.
## Changelog
:cl: Rhials
fix: Blob Overmind/Minion/Blobbernaut speech is now logged. Beware.
/:cl:

* Automatic changelog for PR #87767 [ci skip]

* SM sliver dusts fishing hooks (#87784)

## About The Pull Request
- Fixes #87514

## Changelog
:cl:
fix: Super matter sliver dusts fishing hooks & cannot be picked up by
them
/:cl:

* Automatic changelog for PR #87784 [ci skip]

* Abstract nullrods cannot burn/melt. Monk staff fixes (#87775)

* Automatic changelog for PR #87775 [ci skip]

* Losing malf no longer wipes nonmalf abilities (#87762)

## About The Pull Request

Just a small thing I noticed whilst looking into some other malf related
stuff.

Unrelated, the silicon code is so horrible but I can't be bothered
rewriting it. So have this small fix

## Why It's Good For The Game

Fixes a small nuisance nobody even noticed. Probably

## Changelog

:cl:
fix: Losing malf no longer wipes nonmalf AI abilities
/:cl:

* Automatic changelog for PR #87762 [ci skip]

* Refactors for grinding & juicing (#87735)

## About The Pull Request
- Grinding & juicing are now recursive operations (grind the item & all
its contents) not just for reagent grinder but also for mortar pedestal
& plumbing grinder so you can get all them juices
- Fixes #87719. Plumbing grinder won't destroy slime extracts after
grinding
- Mortar pedestal now grinds & juices more items since it correctly
checks if that object has more reagents to offer
- Reagent grinder, plumbing grinder & mortar pedestal now respect
`blend_requirements()` so you get consistent behaviour across them

## Changelog
:cl:
fix: mortar pedestal now grinds & juices items that previously could not
be processed
fix: plumbing grinder won't destroy slime extracts after grinding
refactor: grinding & juicing code has been refactored overall. Please
report bugs on github
/:cl:

* Automatic changelog for PR #87735 [ci skip]

* Chem dispenser droplets colored (#87576)

## About The Pull Request


![image](https://github.com/user-attachments/assets/35492711-3ba9-4c5e-b013-ef8d39ac633f)

Made the droplets show the reagent color (or PH color if ph display is
enabled)

## Why It's Good For The Game

Better UX when you know your colors.

## Changelog

:cl:
qol: chem dispenser droplets in UI colored as their reagent
/:cl:

* Automatic changelog for PR #87576 [ci skip]

* prevents sending messages to newscaster channels without permission (#87783)

* Automatic changelog for PR #87783 [ci skip]

* Improves code for recycling circuits in component printer (#87787)

* Automatic changelog for PR #87787 [ci skip]

* Fixes the randomizer fishing portal not working as intended. (#87794)

* Automatic changelog for PR #87794 [ci skip]

* Tiny spellcheck (#87801)

* Automatic changelog for PR #87801 [ci skip]

* fixes some rand() loops (#87795)

## About The Pull Request

i in rand(x,y) doesnt work

i in 1 to rand(x,y) does

## Why It's Good For The Game

bugggs

ghommie stole my gbp

## Changelog

:cl:
fix: fixed random dm modifiers & some life-like reagent reactions
/:cl:

* evidence bag sounds (#87790)

## About The Pull Request
completes
https://github.com/orgs/tgstation/projects/19/views/1?pane=issue&itemId=84398285


https://github.com/user-attachments/assets/5f4e92eb-3d65-4da7-ba76-24d30f1eddc3
## Why It's Good For The Game
immershun
## Changelog
:cl: grungussuss
sound: evidence bags have more sounds now
/:cl:

* Automatic changelog for PR #87795 [ci skip]

* Automatic changelog for PR #87790 [ci skip]

* Writing sound (#87772)

## About The Pull Request
completes
https://github.com/orgs/tgstation/projects/19/views/1?pane=issue&itemId=85235611


https://github.com/user-attachments/assets/087c88bd-9ddd-4e57-972d-fe66084d19bc
## Why It's Good For The Game
maybe now someone will notice you wrote something
## Changelog
:cl: grungussuss
sound: writing something now produces sound
/:cl:

* Automatic changelog for PR #87772 [ci skip]

* AI-controlled mobs can now cross open space if they won't fall. (#87821)

* Automatic changelog for PR #87821 [ci skip]

* Lowers the price of the energy sword. (#87738)

## About The Pull Request

E-sword uplink price has been lowered from 8 to 6 TC.

## Why It's Good For The Game

It's no secret that the E-sword has fallen out of flavor over the last
year or so.

Its purchase rate is so low it doesn't even show on the MRP chart.


https://superset.moth.fans/superset/dashboard/4/?native_filters_key=gJDhU4Ug60OlqSjRelTSMUWlVWVPGZRQr16s6OFMNXTqcUaVO8-O0yCX1cjJJK9y

Part of the reason I feel is that on its own the weapon doesn't really
offer much.

It's a decent melee weapon but not as good as the powerfist, which is
less expensive, hits twice as hard, stuns, and is unblockable.

It offers decent protection, but again a shield is so easy to steal
these days you might just save your tc for something better

And when you really think about it, his bigger sister, the desword, is
only 5 TC more expensive and offers way more damage and block chance.

(Also you can get one for free if you space explore for a few minutes,
but that's besides the point).

Now I'm not saying the energy sword is a bad weapon, it being 1handed
opens you up for a few nasty combos.

But for what it represents, i.e a shield with some decent damage
strapped on top , it could probably receive a small discount.

I don't really have any strong attachments to the weapon or anything, so
If you can provide a good reason why this is a bad idea by all means.

## Changelog

:cl:
balance: The Uplink cost of the energy sword has been lowered from 8 to
6 TC.
/:cl:

* Automatic changelog for PR #87738 [ci skip]

* More accessibility options and pref menu (#87549)

## About The Pull Request
- added accessibility tab in prefs menu
- put darkened flashes option into this menu
- added `darken screen shake` pref, for motion sick people, darkens your
screen when experiencing screen shake.

<details>
OUTDATED 


![image_2024-10-29_023038297](https://github.com/user-attachments/assets/db9cfe23-74f7-413a-8d84-496384b3d3bf)

</details>


https://github.com/user-attachments/assets/e3fd43ad-a65c-47dc-add2-6c93048e8b61

## Why It's Good For The Game

makes it easier for people with disabilities to play the game.
## Changelog
:cl: grungussuss
qol: you can now mitigate motion sickness from screen shake by enabling
"darken screen shake" in preferences
/:cl:

---------

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

* Automatic changelog for PR #87549 [ci skip]

* Makes dust animation look less 2006 (#87435)

This was inspired by an effect I saw on Paradise but I sprited my own

https://github.com/user-attachments/assets/2130053c-a6ea-48e6-8b62-4c08563fd154

(Todo, make the skeleton appearing less jank)

1. Looks less 2006.
2. The dust sprite will reflect the mob being dusted, since it's
literally just Your Sprite. Your clothes, species, etc.
3. All species and all mob types now animate being dusted - from corgi
to xenos, from borgs to lizards -, and we can even reuse this effect for
items being dusted if we so desire

:cl: Melbert
image: The animation for being dusted now takes into account your
sprite, rather than being a normal nude spaceman
/:cl:

* Automatic changelog for PR #87435 [ci skip]

* Datumizes heretic paths (#87432)

## About The Pull Request
Replaces the previous system of manually linking each and every heretic
knowledge with eachother with an elegant solution to the problem,
additionally places further restrictions on heretic tree, ensuring that
noone can singlehandledly make it really hard to understand.

There were 2 holes in the heretic knowledge tree, which I removed with
temporary dummy linkings (till someone adds something there, or I may
yet add something there in this PR, so if someone wants to add something
there better do it quickly). The dummy linkings are necessary as the new
system is rigid in this regard in that it does not allow for these
connections to *not* exist, the heretic tree is a directional graph and
while it handles one or mroe connections, it cannot handle having no
connections by design.

* Automatic changelog for PR #87432 [ci skip]

* [NO GBP] Fixed special DNA infusions from squids and pufferfish (#87818)

## About The Pull Request
#87323 actually broke special infusions from fish traits. This PR fixes
that. And also a runtime error.

## Why It's Good For The Game
Fixing what I've broken.

## Changelog

:cl:
fix: Fixed special DNA infusions from squids and pufferfish.
/:cl:

* Automatic changelog for PR #87818 [ci skip]

* Omen component no longer tries to crush you from inside of a vent (#87847)

* Automatic changelog for PR #87847 [ci skip]

* Makes goliath cloak not override digitigrade legs (#87840)

* Automatic changelog for PR #87840 [ci skip]

* Tramstation Barber Disposals Fix (#87835)

* Automatic changelog for PR #87835 [ci skip]

* Xenobio console puts sucked up slimes into stasis (#87832)

## About The Pull Request

Closes #87715
Also fixes potential issues that slimes could cause by atmos processing
while inside

## Changelog
:cl:
fix: Xenobio console puts sucked up slimes into stasis so they no longer
split up inside
/:cl:

* Automatic changelog for PR #87832 [ci skip]

* Gives Runtimestation a bounty pad and event spawnpoints (#87839)

* Automatic changelog for PR #87839 [ci skip]

* Fix auto-reel fishing line item catching logic (#87855)

## About The Pull Request

So while working on a frog tongue concept, I realized the auto-reel
fishing line was... always hitting you with the items you reeled in.
Looking into the code, that seemed weird, because it seemed like it had
an entire segment of code dedicated to avoiding just that: catching
those items with your offhand.
But apparently this code never actually ran, because it registers
`COMSIG_ATOM_PREHITBY` on the reeled in item, which only gets sent to
the atom that gets hit.

So in this pr we just shift it to using `COMSIG_MOVABLE_PRE_IMPACT`
instead, which is the equivalent signal sent to the thrown movable.
This fixes our issues.
## Why It's Good For The Game

Fixes the auto-reel fishing line always smacking you in the face with
whatever you reel in, rather than going through its "catch this" checks.
## Changelog
:cl:
fix: Fixed auto-reel fishing line item catching logic.
/:cl:

* Automatic changelog for PR #87855 [ci skip]

* [NO GBP] Fixes hat stabilizer ignoring clothing worn_y_offset (#87851)

## About The Pull Request

Closes #87487

![image](https://github.com/user-attachments/assets/d7b501e2-b026-4254-bbd5-919a3e18259b)

## Changelog
:cl:
fix: Fixed hat stabilizer ignoring clothing worn_y_offset
/:cl:

* Automatic changelog for PR #87851 [ci skip]

* Fixes four unlinked APCs in DeltaStation maint rooms (#87850)

## About The Pull Request
Fixes unlinked APCs in the `Electronic Marketing Den`, `Abandoned
Garden`, `Security Maintenance`, and `Private Investigator's Office`

Specifically:
<details><summary>Moves the wires for the Den to the current
APC...</summary>


![image](https://github.com/user-attachments/assets/ee754ebe-2f3c-41ea-856b-ec21af079f22)

</details>

<details><summary>Moves the APC for the Garden to the current Wires
(yes, it's the inverse, but it's much nicer beside the air alarm AND
removes it from being hidden by the poster...)</summary>


![image](https://github.com/user-attachments/assets/bc07084b-4599-4b81-bc2a-ec6d8b250627)

</details>

<details><summary>Adds the 1 missing wire to the APC in Sec Maints
(under the table)</summary>


![image](https://github.com/user-attachments/assets/f2a0024c-061d-4db2-9bff-a7d025814ff7)

</details>

<details><summary>Moves the wires to the APC in the PI Office</summary>


![image](https://github.com/user-attachments/assets/3e9513a2-0fc7-45fa-84b2-31c994ff2e0e)

</details>


## Why It's Good For The Game
These are, theoretically, meant to be wired to the station. They all
have single lines of wires in the rooms going to walls. Just not to the
walls with the APCs.
## Changelog
:cl:
fix: (DeltaStation) Fixed unwired APCs in the Electronic Marketing Den,
Abandoned Garden, Security Maintenance, and Private Investigator's
Office
/:cl:

* Automatic changelog for PR #87850 [ci skip]

* Fix holymelon armor not inheriting magic resistance (#87849)

## About The Pull Request
- Fixes #87621

Holymelon armor had a missing antimagic flag that did not stop magic
attacks. The holymelon plant gene has
`MAGIC_RESISTANCE|MAGIC_RESISTANCE_HOLY` but the armor only had
`MAGIC_RESISTANCE_HOLY` so this is just making it consistent.

## Why It's Good For The Game
Consistency.

## Changelog
:cl:
fix: Fix holymelon armor not inheriting magic resistance
/:cl:

* Automatic changelog for PR #87849 [ci skip]

* Add screentips to hat stabilizer component (#87845)

## About The Pull Request
Initially this was added in:

- #87285

And then removed in:

- #87305

Not sure if @SmArtKar was aware that screentips can be added to
components.

## Why It's Good For The Game
Consistency.

## Changelog
:cl:
fix: Fix missing screentips plasmaman helmets and MOD suit hat
stabilizer helmets.
/:cl:

---------

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

* Fix airlock shell for circuit camera component (#87837)

## About The Pull Request
This PR resolves an issue relating to circuit cameras and airlock
shells.

Fixes #84650

## Why It's Good For The Game
This is a bug fix, and makes airlock shells actually usable.

## Changelog
:cl:
fix: Airlock shells are properly assigned circuit cameras modules
/:cl:

* Automatic changelog for PR #87845 [ci skip]

* fixes tgui DraggableControl not focusing on first click (#87834)

closes #86536

## About The Pull Request

we were attempting to focus a hidden element, which appears to just fail
silently. if we wait until it should be rendered in the dom, it'll be
focused correctly

i'm not 100% just throwing a `setTimeout(() => {}, 0)` is appropriate -
this is a scary class component that i can't throw a useEffect at. it
works, though

i'll pr it over to tgui-core ifff this is all good

## Why It's Good For The Game
clicky buttons clicky click working click

## Changelog
:cl:
fix: certain tgui inputs no longer require 2 clicks to open
/:cl:

* Automatic changelog for PR #87837 [ci skip]

* Labeller now tells you how many labels are left. (#87836)

## About The Pull Request

New `examine` proc for hand labellers so you can tell how many labels
are left on examine.

## Why It's Good For The Game

It's vital to know how many more times I can ~~spam labels~~ organize my
paperwork.

## Changelog
:cl: Goat
qol: You can now examine labelers to tell how many more labels it has.
/:cl:

* Automatic changelog for PR #87834 [ci skip]

* Automatic changelog for PR #87836 [ci skip]

* Examine fixes and documentation touchup (#87838)

## About The Pull Request
Fixes and stuff I noticed from when I was porting examine stuff from
here to TGMC.
- Uses regex so that if you include `and ` in the tooltip of an examine
tag but not main text, `examine()` will not think you said `and ` in the
main text
- The morbid tooltip doesn't try to use HTML for the tooltip now
- Updates documentation for `examine_tags`

Here's my cat.


![image](https://github.com/user-attachments/assets/080235e2-2c73-4875-a22e-acb808496541)
## Changelog
:cl:
fix: examine tags now use regex for checking if a tag has "and" in it
spellcheck: the tooltip for the morbid examine tag doesn't try to use
html anymore
/:cl:

* Automatic changelog for PR #87838 [ci skip]

* Makes curator inventory update when buttons are pressed. (#87841)

## About The Pull Request
Adds two calls for `update_static_data_for_all_viewers()` so the UI will
update when a player switches pages or removes an item in the inventory
screen.
## Why It's Good For The Game
Responsive UI good. When I click button UI should respond accordingly. 
fix #82733 
## Changelog
:cl: Goat
qol: Curator console's inventory screen will now update when you change
pages or remove items.
/:cl:

* Automatic changelog for PR #87841 [ci skip]

* Deletes misleading infinite define, adds defines for clearer status effect durations (#87842)

1. Deletes `INFINTIE`, it is misleading and not at all a big number and
causes bugs
2. Adds `STATUS_EFFECT_PERMANENT` and `STATUS_EFFECT_NO_TICK` to make it
clearer what infinite status effects are

* Make roundstart book publishing on bird possible. (#87843)

## About The Pull Request
Adds a book binder to the birdshot library in the spot the book scanner
used to be and moves the scanner right next to the library computer on
the desk.

## Why It's Good For The Game
Curator shouldn't have to wait for research to be able to put books into
the archive.
## Changelog
:cl: Goat
map: The library's scanner on Birdshot is now close enough to connect to
the computer and was also given a book binder.
/:cl:

* Automatic changelog for PR #87843 [ci skip]

* Fixes basic mob performance impact created by the factorio PR (#87852)

## About The Pull Request

#86063 was a mistake, some of the code there is really bad this being
the peak change. This was done to exclusively snowflake chasms but in
reality *did not do anything whatsoever* because chasms override
CanAllowThrough to always return TRUE anyways. Yesh.

is_blocked_turf is relatively hot in basic mob AI so this was really
bad.

## Changelog
:cl:
fix: Fixed basic mob performance impact created by the factorio PR
/:cl:

* Fix broken link to issue manager guide (#87846)

## About The Pull Request
There was a malformed markdown link in the contributor guide.

## Why It's Good For The Game
Nothing player facing.

## Changelog
:cl:
fix: Fix broken link to issue manager guide in Github contributor guide
/:cl:

* Automatic changelog for PR #87852 [ci skip]

* Automatic changelog for PR #87846 [ci skip]

* Fixing a small, crucial, fish reproduction issue. (#87825)

## About The Pull Request
This PR should fix fishes not being able to reproduce with others of the
same type, simply because the list of **types** to check was
instantiated with the first key being src instead of src.type.

I should really make a second fish reproduction unit test that doesn't
involve crossbreeding, self-reproducing and sterile fishes, all of which
are edges cases that are actually working unlike the main thing.

## Why It's Good For The Game
Yeah, sorry if this took so long to get to this. I hadn't really notice
it until now. I have indeed played with the aquarium a few times but
with other goals in mind, and when I had seen that fish could indeed
reproduce with different yet compatible fish (e.g. clownfish and
lubefish, goldfish and three-eyed goldfish) I thought the feature was
working as intended. I was simply wrong.

* Automatic changelog for PR #87825 [ci skip]

* [NO GBP] Fixes some item interactions (#87856)

## About The Pull Request
- Fixes #87854


## Changelog
:cl:
fix: flatpacker accepts circuitboards with left click
fix: rcd can deconstruct tables
fix: you can open panels of destructive analyzers with screwdriver right
click. Use right click or combat mode with items for default
interactions
fix: flatpacker & machines with local storage can be RPED'd again
/:cl:

* Automatic changelog for PR #87856 [ci skip]

* [NO GBP] Fixed fish still being hungry when fed if in aquarium with the 'growth and reproduction' option disabled (#87827)

## About The Pull Request
See title.

## Why It's Good For The Game
That's a bug.

* Automatic changelog for PR #87827 [ci skip]

* [NO GBP] Fixed bombing non-turfs fishing spots not spawning loot correctly. (#87819)

## About The Pull Request
Found another small issue with fishing, this one pertaining explosive
fishing spawning the loot inside objects.
Also bottled messages should no longer spawn from explosions. They're
one-time events and shouldn't be spent by explosive fishing, which can
quickly empty the pool of stored messages and photos.

## Why It's Good For The Game
Fixing issues with the feature.

* Automatic changelog for PR #87819 [ci skip]

* Fixes borg to ai connection (#87773)

## About The Pull Request
fixes #87651 which was caused by #87597
## Why It's Good For The Game
it is
## Changelog
:cl:

fix: fixed roundstart borgs not being synced to ai

/:cl:

* Automatic changelog for PR #87773 [ci skip]

* fix clicking other ghosts' screen alerts (#87830)

closes #87572

## About The Pull Request

usr does not necessarily mean owner for screen alerts, thanks Observe

## Why It's Good For The Game

shouldn't be teleporting other ghosts around

* Automatic changelog for PR #87830 [ci skip]

* Holosign creators interact with storage correctly (#87824)

## About The Pull Request
- Fixes #87539
 
Racks, bags & basically anything that stores stuff will interact with
all holosign creator's correctly

## Changelog
:cl:
fix: holosign creators interact with storage items correctly
/:cl:

* Automatic changelog for PR #87824 [ci skip]

* small slime ai tweaks (#87871)

* party popper doesn't make sloshing sounds (#87872)

closes https://github.com/tgstation/tgstation/issues/87330
:cl: grungussuss
sound: party popper no longer makes reagent sloshing sounds
/:cl:

* Automatic changelog for PR #87872 [ci skip]

* Fix infinite metal holodeck exploit (#87806)

## About The Pull Request
This stops people from using chairs to create free metal. It was
possible to pick up a chair or place it down and it would lose it's
hologram status since a new object is created.

Now anyone that attempts to place down or pick up a chair will have it
vanish.

## Why It's Good For The Game
No more free metal.

## Changelog
:cl:
fix: Fix using chairs in holodeck to create infinite metal 
/:cl:

* Automatic changelog for PR #87806 [ci skip]

* Rewrites the code in beserk.dm (#87820)

## About The Pull Request
Does as the title says, cleans up the code a bit and modernizes it, as
well as making it call its parent.
## Why It's Good For The Game
It's more readable this way, plus it properly calls its parent proc now.

* Automatic changelog for PR #87820 [ci skip]

* Fixes stingbangs using wrong sprites (#87812)

## About The Pull Request

Stingbangs (and much rarer rotfrags) used their disassembled sprite
until primed this entire time. Yeah.

## Why It's Good For The Game

Handle appearing out of nowhere looks very jarring

* Fixes detective action palette being invisible (#87814)

## About The Pull Request

Closes #87809

* Automatic changelog for PR #87812 [ci skip]

* Automatic changelog for PR #87814 [ci skip]

* Reduces required crayons for crayon bounty (#87848)

## About The Pull Request

This reduces the bounty size of the crayon civilian pack.

Instead of 24 crayons, it only needs 8. Same payout, less quantity.
## Why It's Good For The Game

Crayons are not easily produced or scavenged. Even if a map contains 2
full crayon packs in the Library, it still isn't enough to fulfill a
single bounty for crayons.

This new deal will get you a full payout with a full pack plus one
_mystery crayon._ Go rob the clown or detective or something if you need
the last one. Get that money!

* Automatic changelog for PR #87848 [ci skip]

* Include the map vote config file (#87867)

## About The Pull Request

Includes the map_vote.txt config file created in
https://github.com/tgstation/tgstation/pull/86788 so that it gets read
when the server starts.

## Why It's Good For The Game

Reads whatever value is set in the config file.

* Automatic changelog for PR #87867 [ci skip]

* meatlovers flatbread no longer tastes raw (#87853)

## About The Pull Request

fixes #87844

* Automatic changelog for PR #87853 [ci skip]

* fixes meteor heart AI runtimes (#87813)

## About The Pull Request
fixes a few runtimes with the meteor heart's sleep behavior, mostly
because it was trying to add an element to a blackboard key list,
eventhough said key wasnt a list.

## Why It's Good For The Game
fixes meteor heart AI runtimes

* [no gbp] fixes manulathe and manucrafter interaction (#87880)

## About The Pull Request

fixes #87874
also fixes an unintentional sprite change

## Changelog
:cl:
fix: the manucrafter now properly receives resources, also fixed
unintentional manulathe sprite change
/:cl:

* Disable hauntium teleporting during unit tests (#87878)

## About The Pull Request

Disable the idle teleporting behavior in
`/datum/idle_behavior/idle_ghost_item` during unit testing.

## Why It's Good For The Game

I've seen two instances now of the mapping nearstation tests failing
because something made of hauntium spawned near the edge of the station
and then teleported outside into space. This will fix that flaky
behavior.

## Changelog

No player-facing changes.

* Chem Dispenser icon shadow [NO GBP] (#87868)

## About The Pull Request


![image](https://github.com/user-attachments/assets/5220c8ce-5f75-4a4a-944b-66ac5f458c53)

Didn't manage to processs the last suggestion under
https://github.com/tgstation/tgstation/pull/87576 by @Iamgoofball
Even though it was so obvious and brilliant idea.

Now no need to have a separate highlight color for buttons on PH color
mode.

## Why It's Good For The Game

Nice UI

## Changelog

:cl:
qol: Chem dispenser UI droplets now have a shadow to not blend with the
background
/:cl:

* increases volume of shoes pickup sound (#87875)

## About The Pull Request
closes https://github.com/tgstation/tgstation/issues/87538
## Changelog
:cl: grungussuss
sound: shoes pickup volume is louder now
/:cl:

* Automatic changelog for PR #87868 [ci skip]

* Automatic changelog for PR #87875 [ci skip]

* Improves code for remote materials (#87870)

## About The Pull Request
- Moves remote materials attack chain to item interaction level. Another
step in moving away from `attackby()`
- Fixes #40070. Though the timer subsystem maybe affected by FPS, round
start trigger is always done after everything is set up which is now
used by remote materials

## Changelog
:cl:
fix: silo connection on some machines won't time out when changing FPS
settings
code: improved attack chain code for silo connection
/:cl:

* Automatic changelog for PR #87870 [ci skip]

* spellecheck: existence not existance (#87862)

## About The Pull Request

existance doesnt exist so i changed it to existence

## Why It's Good For The Game

existance dosent exist

## Changelog

:cl:
spellcheck: spellecheck: existence not existance
/:cl:

* Automatic changelog for PR #87862 [ci skip]

* Fixes scanner gates saying both bypass and detection lines when malfunctioning (#87816)

## About The Pull Request
Closes #87542
## Changelog
:cl:
fix: Fixed scanner gates saying both bypass and detection lines when
malfunctioning
/:cl:

* Automatic changelog for PR #87816 [ci skip]

* [no gbp] fixes seedling ai getting stuck (#87885)

## About The Pull Request
fixes seedling AI's getting stuck when trying to refill water from water
tanks that have been emptied!

## Why It's Good For The Game
fixes seedling ai getting stuck

## Changelog
:cl:
fix: fixes seedling ai getting stuck when trying to refill water from
emptied water tanks
/:cl:

* Automatic changelog for PR #87885 [ci skip]

* fixes parriable projectiles runtimes (#87899)

* Admin deleting a mob now ghostizes it beforehand, preventing a runtime (#87887)

* Automatic changelog for PR #87887 [ci skip]

* Refactors some more UIs to use DmIcon (#87886)

## About The Pull Request

Upstream port of
https://github.com/Monkestation/Monkestation2.0/pull/4215

This changes some tgui UIs that used icon2base64/getFlatIcon to display
items to instead use DmIcon, just passing the icon/icon_state instead.

To be specific: the ORM, the "ore container", and the order console
(produce, mining, and bitrunning vendors)

<details>
<summary><h3>UI screenshots / proof of testing</h3></summary>

![2024-11-12 (1731458275) ~
dreamseeker](https://github.com/user-attachments/assets/b1c60677-b117-4c23-8076-8b5072130d55)
![2024-11-12 (1731458281) ~
dreamseeker](https://github.com/user-attachments/assets/b64d3c2f-4754-4e5d-991a-2df69d86eb2a)
![2024-11-12 (1731458286) ~
dreamseeker](https://github.com/user-attachments/assets/287d8db1-8acb-4c4c-a2f0-66227a477d19)
![2024-11-12 (1731458388) ~
dreamseeker](https://github.com/user-attachments/assets/f69f5d51-5cdc-442c-971d-a4abedd4a3d2)
![2024-11-12 (1731458391) ~
dreamseeker](https://github.com/user-attachments/assets/53a95e88-ac41-4f97-a409-10b19d130376)


</details>

## Why It's Good For The Game

gfi bad, especially in ui(_static)_data, dmicon good.

## Changelog
:cl:
refactor: The ORM, "ore container", and order console UIs (produce,
mining, bitrunner vendors) now load icons in a more efficient manner.
/:cl:

* Tenacious element no longer prints a wear off message when added outside of soft crit and properly removes its effects when detached (#87901)

## About The Pull Request

Wear off message is only printed if the user actually had the effect
active before, and speed modifier is removed alongside the element.

## Changelog
:cl:
fix: Fixed tenacity effect printing its messages when it shouldn't be,
and not removing its' effects when it should've.
/:cl:

* Fixes Mech Spin Sounds (#87900)

## About The Pull Request
Mechs were playing spin sound effects (_on top_ of normal step sounds)
every time they'd take a step while strafing. Additionally, they would
not play the spin sound effect when actually turning. This fixes both.
## Why It's Good For The Game
Bugfix. Also, cleaner sounding mechs.
## Changelog
:cl:
Fix: Fixed the triggering of mech turn sound effects
/:cl:

* sandstone blocks have the correct sound now (#87896)

## About The Pull Request
closes https://github.com/tgstation/tgstation/issues/87611
## Why It's Good For The Game
it makes sense
## Changelog
:cl: grungussuss
sound: sandstone blocks have the correct sound now
/:cl:

* Lower singularity beacon cost and time  (#87891)

## About The Pull Request
This lowers the cost of the singularity beacon to 4 crystals. Right now
this item never gets used due to the high cost and niche requirements.
According to the statistics it is not even on the list:


https://superset.moth.fans/superset/dashboard/4/?native_filters_key=Gd84-_rrITStPTkyo7BlqnE5aYcHmofhLU2GjWEiWdqY-ZaK2WVxrq1eG6qS0bNa

Before we had the SM, the singularity engine was often sabotaged with
this beacon since all you needed to do was disable an emitter or cut a
wire and the singularity would break loose. It was a relatively easy
process.

The criteria to achieve a singularity now is very difficult. You either
have to overload the SM and fight off anyone who tries to fix it OR
purchase one from cargo and make a pipe setup to feed it a ton of gas.
All the crew has to do to prevent it, is leak the gas by opening an
airlock, breach the floor, or a window. If there is an AI or cyborgs,
your job is now ten times harder.

Then you have another problem. The beacon requires powered wires and if
the SMESs gets destroyed by the singularity it's useless. This is
guaranteed to happen if using the SM from engineering since it's so
close to the SMESs. So now you have to either rely on solars or a
generator to power the device.

The hassle of spending 10 crystals on this item is not worth it. Too
many things can go wrong and it would be a waste of points.

## Why It's Good For The Game
This item never gets picked due to it's high cost and difficulty. By
lowering the cost, it would make it a more reasonable choice.

## Changelog
:cl:
balance: Lower the telecrystal price of the singularity beacon from 10
to 4 and reduce the timer to 20 minutes before it can be purchased.
/:cl:

* Speeds up part of the dust animation by a frame or so, makes remains/dust spawn aligned lower on the tile (#87858)

## About The Pull Request

- Speeds up the torso part of the dust animation by a few frames, as was
requested but I didn't do before merge
- Makes remains/dust spawn from being dusted towards the bottom of the
tile

Videos (take before the remains/dust change)


https://github.com/user-attachments/assets/7e9fe699-a44b-49d5-a4d0-2304e09283d5


https://github.com/user-attachments/assets/7b426340-5d3d-49fa-91f1-52b2fc3a560c


## Why It's Good For The Game

Should help sell the effect a bit more

## Changelog

:cl: Melbert
image: Speeds up some frames of the dust animation slightly
image: Dust/remains spawned after being dusted are now aligned towards
the bottom of the tile
image: Bigger mobs now produce bigger piles of ash
image: Plasmamen now dust into plasma bones
/:cl:

* Fixes cigarettes not fitting in gas masks (#87817)

## About The Pull Request
You couldn't put cigarettes in gas masks due to a check for if the masks
mouth is covered
## Why It's Good For The Game
You can now filter the air through your cigarettes as was intended.
## Changelog
:cl:
fix: removes the gas mask check for if the gas mask mouth is covered.
Now it only checks for filters and other cigs
/:cl:

* Automatic changelog for PR #87886 [ci skip]

* Automatic changelog for PR #87901 [ci skip]

* Automatic changelog for PR #87896 [ci skip]

* Automatic changelog for PR #87891 [ci skip]

* Automatic changelog for PR #87858 [ci skip]

* Automatic changelog for PR #87817 [ci skip]

* Fixes SSWardrobe stealing a camera from the camera app when on a dummy, causing a harddel (#87903)

## About The Pull Request

See name, if a dummy somehow gets hold of a PDA with the camera app
installed (This just so happens to be a default PDA program in the case
on Nova, Skyrat, and Bubber), and the delete_equipment proc is called,
the camera inside the PDA gets sent to the wardrobe because of
`/datum/outfit/job/assistant/gimmick/hall_monitor` having one, and then
qdelled with the PDA, leaving a hanging ref

This causes a harddel during tests that has caused me great pains to
locate. Turns out a single example holodisk with the clown holds a
magical key to trigger all this: a single PDA

## Why It's Good For The Game

Fixes a harddel. There might be other similar ones hiding in the dark
like cameras in other objects.

## Changelog

:cl:
fix: Fixes SSWardrobe stealing a camera from the camera app when on a
dummy, causing a harddel
/:cl:

* Automatic changelog for PR #87903 [ci skip]

* Rebuild plane masters after client login if switching between 515 and 516 (#87889)

## About The Pull Request

This makes `/datum/player_details` properly track BYOND version and
build separately, as opposed to just the full version string.

Whenever a client logs in, and their BYOND version is 516, while their
previous version was 515, or vice versa, it'll set a newly added client
var, `rebuild_plane_masters`, to TRUE.

During the `COMSIG_MOB_LOGIN` signal handler of a mob's HUD
(`/datum/hud/proc/client_refresh`), it will check to see if
`rebuild_plane_masters` is TRUE - if so, it will set the appropriate
`relay_loc` of (based on client BYOND version) of its plane master
groups, and rebuild their plane masters.

## Why It's Good For The Game

Makes testing stuff across 515 and 516 easier, as your screen won't
break when switching between the two.

## Changelog

516 is _still_ in private alpha, so no user-facing changes.

* a few tiny birdshot tweaks and fixes (#87785)

## About The Pull Request

1st SM filter is now set to N2 by default
A random hallway apc that started unwired is now wired
Chef gets a dehydrator
Surgery theatre now has a surgery tray instead and surplus prosthetic
limbs to fill in the empty space
Greater central maintenance owns all of its walls
The chemical closet in pharmacy now has multiver, formaldehyde,
epinephrine, basic buffer and the other kind of buffer to compensate for
not having a chemstorage room
atmos distro air mixer now mixes correctly

## Why It's Good For The Game

closes #87729
also maintenance is supposed to own all of its walls

## Changelog
:cl:
fix: Added dehydrator to birdshot kitchen. Surgery theatre now has a
surgery tray and surplus prosthetics. An unwired hallway APC is now
wired. 1st SM filter is now set to Nitrogen. Chemistry closet in
pharmacy now contains extra chemicals to compensate for not having a
chemical storage. Atmos air for distro mixer now mixes correctly
/:cl:

* floor lights have the same light range during nightshift (#87786)

## About The Pull Request

floor lights have the same light range during nightshifts

## Why It's Good For The Game

theyre horrendously bad at lighting up stuff in nightshift and birdshots
bar looks horrendous as a result

## Changelog
:cl:
fix: floor lights have the same light range during nightshift, so you
can actually see the bar during a night shift on birdshot
/:cl:

* Fixes storage & evidence bag pre attack (#87793)

## About The Pull Request
- Fixes #87788

Usually when you force move an item anywhere `obj/item/doMove()` is
responsible for removing the item from the players hand & updating the
visuals. When you move that item from say your pocket to your hand we
call `attempt_pickup()` which also updates visuals.

The one case where these 2 procs don't help is when that item is
equipped from anywhere else but the hand(pockets for e.g) into a storage
medium that is held in hand. For this edge case we have to drop the item
to ground to update the visuals of whatever inventory slot it was
attached to

Now evidence bag uses the storage pre attack mode rather than
implementing its own item interaction thus fixing the visual glitch not
just for it but for all items that have `allow_quick_gather = TRUE`

## Changelog
:cl:
fix: Fixed visual glitches when inserting items from an slot other than
the hands into evidence bags & other storages that have quick gather
mode enabled
/:cl:

* Fixes nooartrium having no downsides (#87798)

Having a non-organic heart ignored the heart damage, so you could just
be immortal forever

:cl:
fix: Nooartrium heart damage can no longer be bypassed with non-organic
hearts
/:cl:

Balance maybe? I don't feel this was ever intended and an oversight in
not setting the correct flag

---------

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

* cuffsnapping is on right click (#87634)

## About The Pull Request

title

## Why It's Good For The Game


OOC: Blard of Jard: I was trying to cut a cargo tech's leg off for a spy
bounty, but instead of just cutting his leg with it targetted on harm
intent, it immediately cut his ties and he mag dumped me with his laz
gun.

## Changelog

:cl:
fix: you now snip cuffs with right click to prevent accidental cuts
/:cl:

---------

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

* Guncode Agony 4.1: Portal Intermission (#87803)

## About The Pull Request

Closes #75447 by allowing projectiles to pass through portals. This does
not allow for infinite loops for sanity (including host's) reasons.

Can safely be merged before #87740

## Changelog
:cl:
fix: Many years later, projectiles finally can pass through portals -
this time without crashing the server.
/:cl:

* Automatic changelog for PR #87785 [ci skip]

* Automatic changelog for PR #87798 [ci skip]

* Automatic changelog for PR #87793 [ci skip]

* Automatic changelog for PR #87634 [ci skip]

* Automatic changelog for PR #87803 [ci skip]

* Buffs the Anomalock modules (#87743)

Significantly buffed the anomalock modules.

Anomalock modules can be used with eachother.

Antigravity module costs 2 complexity.

Teleporter module is thrice as fast at teleporting with a slightly
reduced cooldown, but has a much larger power cost.

Changed how teleporter tracks maximum range to be less painful to the
end user.

Kinesis module's default range has been extended to 8.

Kinesis module can drag around people in critical condition or worse.

These modules have historically been, well, kind of a complete joke.
They seem to have been crippled out of fear of them being overpowering
with the end result of being unusable.

Anomaly items are allowed and meant to be fun, strong, and wild, so I
really don't see why these need to be so weak. The amount of times I'd
rather make a teleporter that takes 3 seconds to get you anywhere
instead of an instant portal gun or a bag of holding is roughly zero.

People hate modsuits, and in part that hate is because of modules which
do very, very little due to severe undertuning. Let's fix that with the
anomaly ones here.

> Anomalock modules can be used with eachother.

Let people get a buncha anomaly modulse together if they want to. An
antigravity user with teleporting and kinesis could be something to
fear, but not so much as to strike it from existence altogether without
even letting people mess around with it first.

> Antigravity module costs 2 complexity.

Antigravity module is glorified wittel -> gravitum, but it takes a core
and 3 complexity. At least let it be somewhat cheap.

> Teleporter module is thrice as fast at teleporting with a slightly
reduced cooldown, but has a much larger power cost.

Teleporter module is a big damn joke ATM, as stated above being
effectively overshadowed in every way by the portal gun. This now gives
it a fun niche instead, of being able to teleport around everywhere at
the cost of a massive power draw.

> Changed how teleporter tracks maximum range to be less painful to the
end user.

view() was working weirdly when I was using it. It was failing to
register tiles somewhat near the end of the screen, so I just ditched it
for a get_dist check that I threw 9 in as a somewhat arbitrary value
for.

> Kinesis module's default range has been extended to 8.

There's this bug on live where when you kinesis someone it flies all the
way to the SW corner of the screen for seemingly no reason. I don't know
why it happens but it drives me mad.

Even without that bug, 5 tiles is extremely frustrating to handle - it's
super, super annoying to find a middleground between 'not slapping you
in the face', 'not losing your grip'. 8 tiles is a lot more forgiving
and makes the module actually fun to use.

> Kinesis module can drag around people in critical condition or worse.

This one might be a bit nuts, but I really want to see this ingame, it's
kind of the best part of the module yet is unobtainable. Maybe some
stuff would need to be tuned for it, like making human throws flimsy.
:cl:

balance: Significantly buffed the anomalock modules.
balance: Anomalock modules can be used with eachother.
balance: Antigravity module costs 2 complexity.
balance: Teleporter module is thrice as fast at teleporting with a
slightly reduced cooldown, but has a much larger power cost.
code: Changed how teleporter tracks maximum range to be less painful to
the end user.
refactor: Refactored LoS checks to be a proc on atom, los_check
balance: Kinesis module's default range has been extended to 8.
balance: Kinesis module can drag around people in critical condition or
worse.
/:cl:

* Automatic changelog for PR #87743 [ci skip]

* gives mulebot wires some messages when cut (#87895)

## About The Pull Request
closes https://github.com/tgstation/tgstation/issues/87640
## Why It's Good For The Game
feedback is cool
## Changelog
:cl: grungussuss
qol: added feedback for cutting mulebot wires
/:cl:

* Automatic changelog for PR #87895 [ci skip]

* Hello I would like to order one unit test please

* Hi can I get a replacement unit test this one broke

* we don't need these anymore

---------

Co-authored-by: Fikou <[email protected]>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: Jacquerel <[email protected]>
Co-authored-by: Ghom <[email protected]>
Co-authored-by: thegrb93 <[email protected]>
Co-authored-by: Xander3359 <[email protected]>
Co-authored-by: SyncIt21 <[email protected]>
Co-authored-by: harryob <[email protected]>
Co-authored-by: Tim <[email protected]>
Co-authored-by: Lucy <[email protected]>
Co-authored-by: SmArtKar <[email protected]>
Co-authored-by: OrionTheFox <[email protected]>
Co-authored-by: grungussuss <[email protected]>
Co-authored-by: Ben10Omintrix <[email protected]>
Co-authored-by: tonty <[email protected]>
Co-authored-by: elricsfate <[email protected]>
Co-authored-by: Waterpig <[email protected]>
Co-authored-by: Jordan Dominion <[email protected]>
Co-authored-by: Rhials <[email protected]>
Co-authored-by: necromanceranne <[email protected]>
Co-authored-by: Andrew <[email protected]>
Co-authored-by: Dawnseer <[email protected]>
Co-authored-by: carlarctg <[email protected]>
Co-authored-by: EnterTheJake <[email protected]>
Co-authored-by: MrMelbert <[email protected]>
Co-authored-by: Djiq <[email protected]>
Co-authored-by: Alice Garfieldfan <[email protected]>
Co-authored-by: sqn <[email protected]>
Co-authored-by: _0Steven <[email protected]>
Co-authored-by: tmyqlfpir <[email protected]>
Co-authored-by: Goat <[email protected]>
Co-authored-by: Neocloudy <[email protected]>
Co-authored-by: Holoo <[email protected]>
Co-authored-by: Alexis <[email protected]>
Co-authored-by: LT3 <[email protected]>
Co-authored-by: jimmyl <[email protected]>
Co-authored-by: Roxy <[email protected]>
Co-authored-by: zxaber <[email protected]>
Co-authored-by: Time-Green <[email protected]>
Iajret pushed a commit to Fluffy-Frontier/FluffySTG that referenced this pull request Dec 6, 2024
* fixes borgs linking to ais in mechs cards and modsuits (#87737)

* Automatic changelog for PR #87737 [ci skip]

* Living Flesh limbs won't try to grab underfloor objects (#87736)

There were checks in living limbs that were checking the wrong thing, at
least one of which was introduced by a feature change in a PR I merged
but didn't notice.
Notably:
- We were checking if the person with the limb was invisible, not the
thing they were trying to touch.
- We were checking if the person with the limb was anchored, not the
thing they were trying to grab.

Now your arm will no longer reach out and grab wires that are under the
floor.

Additionally to this:
- I made all of the output say "Your left arm" or "Your left leg"
instead of "Your flesh left leg" because it sounded stupid.
- I removed an unused argument from `can_be_pulled` because it was
confusing me when I looked at the proc.
- I reworded some of the user feedback messages because "the thing
pretending to be your left arm feels funny" just isn't very evocative.

The diff is long because I reversed the order of arm/leg operations
because the leg block is much smaller :clueless:

Fixes bug.
I like it more.

:cl:
fix: Living Limbs no longer try to grab things that are under the floor.
spellcheck: Living Limb feedback messages now don't redundantly specify
that they are flesh arms.
/:cl:

---------

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

* Automatic changelog for PR #87736 [ci skip]

* Fix oil slime making vegetable oil instead of corn oil (#87730)

Fixes bug caused by
https://github.com/tgstation/tgstation/commit/b1c5e5e0f6a1edf58b49b238af7d3094da76c69b#diff-aedb81aab354c31e90007bd0ad4e8babf347ac7d6003c3b01da14021ff5a10f4R387

The wiki and code prior both say oil slimes should make corn oil, but
they currently make vegetable oil. Since corn oil is needed for
nitroglycerin and oil slimes are explosive-centric, it makes sense they
should be making corn oil.
Fixes: #81036
:cl:
fix: Fixes oil slimes making vegetable oil instead of corn oil
/:cl:

* Automatic changelog for PR #87730 [ci skip]

* Moved the big slapping parts from the misc section to weapons (#87637)

* fix blade ascension not giving you the ring of blades (#87744)

fix blade ascension not giving you the ring of blades
Bugfix
Closes https://github.com/tgstation/tgstation/issues/87344
Closes https://github.com/tgstation/tgstation/issues/85635
:cl:
fix: fix blade ascension not giving you the ring of blades
/:cl:

* Automatic changelog for PR #87744 [ci skip]

* Fixed fishing rod duping with poly belts and shapeshift spells. (#87706)

It turns out the "shapeshifted from spell" status ejects everything
inside the shapeshifted mob when removed. That's been causing a little
issue with the fishing rod from the profound_fisher component, which a
few mobs have. This PR fixes just that.

![immagine](https://github.com/user-attachments/assets/b664ffa6-567f-4332-b7dc-a5d2badb43d3)

![immagine](https://github.com/user-attachments/assets/4c453f91-2852-40c0-8f54-c5d66f28fdb1)

:cl:
fix: Fixed fishing rod duping with poly belts and shapeshift spells.
spellcheck: Fixed a small typo when examining fishing rods.
/:cl:

* Automatic changelog for PR #87706 [ci skip]

* Chem master validates selected container in UI (#87780)

* Automatic changelog for PR #87780 [ci skip]

* fixes missing icons in abductor console (#87759)

grabs the icon for the item correctly. also typescripts the interface
because blessed type safety would've prevented it being missing in the
first place. and clears some random deprecations

pretty icons 👍
loading icons 👎

![image](https://github.com/user-attachments/assets/ec524a52-fff5-4c67-b3fb-88fbfd5988af)

:cl:
fix: the abductor console now correctly loads images of equipment
/:cl:

closes #87565

* Add unit test tag to your PR title (#87757)

You can now add `unit test` anywhere in your PR title to specify if you
are adding/modifying unit tests for your code. It's worth 6 GBP (It
Always has and wasn't changed here)

For when you want some extra GBP for your unit tests that sometimes go
un-noticed by maintainer's when reviewing large changes. It will
encourage people to write unit tests so they can get the extra points

N/A
/:cl:

* Add `TRAIT_EVIL` to admin tooling (#87749)

Let's admins add/remove `TRAIT_EVIL` from mobs.

Useful for debugging.

:cl:
admin: Admins can now add/remove TRAIT_EVIL from mobs.
/:cl:

* Use native BYOND `isnan` and `isinf` for math defines (#87748)

`// Remove these once we have Byond implementation.`

Well guess what we have now?

Altho sadly we still lack a native `isfinite`, so we still use a define
for that.

Native BYOND impls have better performance usually, due to them
compiling down to instructions, avoiding proc overhead.

No user-facing changes.

* [NO GBP] Fixes wings and jetpacks sometimes preventing you from opening doors (#87741)

I hate this timeline. What title says, makes jetpacks and wings allow
you to bump into things you're moving into.

This feels awful and requires you to stop pressing movement keys for a
moment before resuming movement to get out of the "stuck" state

:cl:
fix: Fixed wings and jetpacks sometimes preventing you from opening
doors
/:cl:

* Drinking Glass sprite updates (#87756)

This was meant to be just fixing the missing pixel... then it turned to
redoing all the glasses in all the basic sprites so they'd match... then
redoing sprites that were outdated...
And THEN I realized that drinking glasses can be using the same
auto-sprite system beakers have and oh man it's spiraling.

As for the (hopefully) full list of changes:
- Removes all `glass_[color]` icons. Any drink that fell under these
will now use the fill_icon and their reagent color. As such, a lot of
reagent colors have been tweaked for readability/realism/lemons don't
have red juice what the hell man
(Some colors shown are outdated. It is very annoying to tweak these. I
don't know how to in-game, if I even can. Relaunching several times is
painful.)

![image](https://github.com/user-attachments/assets/7edae6b4-13ec-4d1e-827c-fb7da1b2013a)

- Resprites the base `glass_empty`; now it is very visibly empty. The
overlay being slightly transparent actually works pretty well with this.
(Old / New)

![image](https://github.com/user-attachments/assets/e262c510-93d7-44b0-b4cc-cf498362b05b)

- Full resprite of Curaçao (now it's actually its beautiful blue instead
of gray)

![image](https://github.com/user-attachments/assets/3447c226-8f78-4fa3-bb55-4cb223a7e991)

- Minor resprites Beer/Green Beer/Iced Beer/Ale
(Yes, Beer/Green Beer have little animated bubbles)

![dreamseeker_Z1U2qBxRlx](https://github.com/user-attachments/assets/43903b24-2053-4571-b17b-f3ad80fa4150)

![image](https://github.com/user-attachments/assets/25327706-3207-4d3f-9ea8-ead29d3a0db0)
- Minor resprite of Monkey Energy
(It's animated now too but otherwise about the same sprite)

![dreammaker_lSqopANAXX](https://github.com/user-attachments/assets/7f797080-ae16-42c3-a1f1-e769506e31fd)

- Minor resprites to Pina Olivida, Banana Juice, Lemon Juice, Carrot
Juice - mostly just color tweaks so that they look more believable and
the banana juice is less green
- Fixes small nits in the sodas so that they are all consistent
Sprite maintenance and (hopefully) improvements - we've got a lot of
drinks in the Bars and the base foundation of that whole system deserves
a bit of love as well
:cl:
image: redid most basic drinking glass sprites, and moved several drinks
to use the same color system as beakers. Please bug report any incorrect
colored drinks or juices!
/:cl:

* Update README.md of unit tests folder for VS code support (#87758)

Turns out using dream daemon isn't the only way to run unit tests.

You can do it from VS code itself & can see the output of each test in
the fancy chat window.
![Screenshot
(448)](https://github.com/user-attachments/assets/33aca6b5-3414-4560-9cc4-dd90fe80e2d1)

With the added advantage of using your debugger to step through each
line of code this should be the preferred way so I've updated the read
me file of the unit tests folder to specify that

You can also check the runtimes log in your game to see the output of
each unit test

:cl:
N/A
/:cl:

* Automatic changelog for PR #87759 [ci skip]

* Automatic changelog for PR #87749 [ci skip]

* Automatic changelog for PR #87741 [ci skip]

* Automatic changelog for PR #87756 [ci skip]

* the glove sounds are now only on some gloves [no gbp] (#87489)

mistakes were made
god it's horrible, not only is it happening way too often because it's
every glove, but also it doesn't fit any other glove other than insuls
really, maybe nitriles but gosh just get rid of it for now, maybe later
I will make a better sound for other gloves.
:cl: grungussuss
sound: only insulated,nitrile, enhanced retrieval, latex, boxing,
improvised gripper gloves have an equip sound
/:cl:

* Automatic changelog for PR #87489 [ci skip]

* hunting behaviors no longer share a cooldown (#87670)

all hunting subtrees were sharing a singular cooldown. this makes it so
each subtree has its own cooldown

fixes hunting subtree cooldowns affecting other subtrees.

:cl:
/:cl:

* [NO GBP] Renames mob/camera to mob/eye and makes everything follow suit (#87684)

Clarity and consistency regarding DM's systems.
Internally, `eye` is used for anything that controls the client's view.

![image](https://github.com/user-attachments/assets/7d1291e1-7a6a-4736-a14b-97834e89846f)
How `eye` is used in DM is consistent with how we use the term, so I
figured this would add clarity.

Being named mob/camera also makes it unclear exactly what it's doing.
The name implies that it would function similar to how mob/camera/ai_eye
does, but most of the time it's only used as... an eye.

My ulterior reason for this PR is that I want to clean up
mob/camera/ai_eye and it's subtypes after this.

:cl:
server: mob/camera has been renamed to mob/eye, which may break
downstreams
/:cl:

---------

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

* Automatic changelog for PR #87684 [ci skip]

* Clarify locations for getting started in README (#87739)

This is a `README.md` update to more efficiently point potential
contributors to the appropriate documentation for configuring their dev
environment.

It is typically best practice to make it easy for developers to quickly
contribute a change to a project by making things as clear as possible.

* [NO-GBP] Fixes a minor fuckup that made cigarettes contain up to double the intended amount of nicotine (#87733)

See name, also fixes them not being injectable

Sorry guys, this is my fault.

Fixes a bug that was brought upon us when I thought 500 cigarettes was
funny

:cl:
fix: Cigarettes can be injected again and have the right amount of
nicotine
/:cl:

---------

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

* Automatic changelog for PR #87733 [ci skip]

* Teleporting while buckled to something will take you with it (#87725)

closes #35872 (this bug is 6+ years old)

`/proc/do_teleport(...)` now has extra checks for atoms with buckled
mobs attempting to pass through it, assuring that they also pass through
with the vehicle

`/atom/movable/proc/is_buckle_possible(...)` will skip density checks if
the bucklable and the target share the same tile, because at that point
it doesn't really matter (it also interfered with density checks when
teleporting)

![fucked-up-dog-geeble](https://github.com/user-attachments/assets/6ef814c2-d8f2-48fc-82a3-98517bf6a492)

:cl:
fix: Teleporting while buckled to something now works as expected
fix: You can buckle to anything if you share the same tile (cause at
that point it doesn't matter if there's a wall, right?)
/:cl:

* Automatic changelog for PR #87725 [ci skip]

* you can loosen straps of a sec helmet to show hair (#87533)

title
gives more customization options for security players
:cl: grungussuss
qol: security helmet straps can be loosened to show hair
/:cl:

---------

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

* Automatic changelog for PR #87533 [ci skip]

* Fix issues when creating Discord Discussions on PRs with dummy long titles (#87768)

* Blob/Blob minion say logging (#87767)

The `/datum/component/blob_minion` component now properly logs spoken
messages before relaying them.

![image](https://github.com/user-attachments/assets/f89b3e61-379c-4851-a571-fc31bf8a1ddc)

Radical.

Closes #86904.
:cl: Rhials
fix: Blob Overmind/Minion/Blobbernaut speech is now logged. Beware.
/:cl:

* Automatic changelog for PR #87767 [ci skip]

* SM sliver dusts fishing hooks (#87784)

- Fixes #87514

:cl:
fix: Super matter sliver dusts fishing hooks & cannot be picked up by
them
/:cl:

* Automatic changelog for PR #87784 [ci skip]

* Abstract nullrods cannot burn/melt. Monk staff fixes (#87775)

* Automatic changelog for PR #87775 [ci skip]

* Losing malf no longer wipes nonmalf abilities (#87762)

Just a small thing I noticed whilst looking into some other malf related
stuff.

Unrelated, the silicon code is so horrible but I can't be bothered
rewriting it. So have this small fix

Fixes a small nuisance nobody even noticed. Probably

:cl:
fix: Losing malf no longer wipes nonmalf AI abilities
/:cl:

* Automatic changelog for PR #87762 [ci skip]

* Refactors for grinding & juicing (#87735)

- Grinding & juicing are now recursive operations (grind the item & all
its contents) not just for reagent grinder but also for mortar pedestal
& plumbing grinder so you can get all them juices
- Fixes #87719. Plumbing grinder won't destroy slime extracts after
grinding
- Mortar pedestal now grinds & juices more items since it correctly
checks if that object has more reagents to offer
- Reagent grinder, plumbing grinder & mortar pedestal now respect
`blend_requirements()` so you get consistent behaviour across them

:cl:
fix: mortar pedestal now grinds & juices items that previously could not
be processed
fix: plumbing grinder won't destroy slime extracts after grinding
refactor: grinding & juicing code has been refactored overall. Please
report bugs on github
/:cl:

* Automatic changelog for PR #87735 [ci skip]

* Chem dispenser droplets colored (#87576)

![image](https://github.com/user-attachments/assets/35492711-3ba9-4c5e-b013-ef8d39ac633f)

Made the droplets show the reagent color (or PH color if ph display is
enabled)

Better UX when you know your colors.

:cl:
qol: chem dispenser droplets in UI colored as their reagent
/:cl:

* Automatic changelog for PR #87576 [ci skip]

* prevents sending messages to newscaster channels without permission (#87783)

* Automatic changelog for PR #87783 [ci skip]

* Improves code for recycling circuits in component printer (#87787)

* Automatic changelog for PR #87787 [ci skip]

* Fixes the randomizer fishing portal not working as intended. (#87794)

* Automatic changelog for PR #87794 [ci skip]

* Tiny spellcheck (#87801)

* Automatic changelog for PR #87801 [ci skip]

* fixes some rand() loops (#87795)

i in rand(x,y) doesnt work

i in 1 to rand(x,y) does

bugggs

ghommie stole my gbp

:cl:
fix: fixed random dm modifiers & some life-like reagent reactions
/:cl:

* evidence bag sounds (#87790)

completes
https://github.com/orgs/tgstation/projects/19/views/1?pane=issue&itemId=84398285

https://github.com/user-attachments/assets/5f4e92eb-3d65-4da7-ba76-24d30f1eddc3
immershun
:cl: grungussuss
sound: evidence bags have more sounds now
/:cl:

* Automatic changelog for PR #87795 [ci skip]

* Automatic changelog for PR #87790 [ci skip]

* Writing sound (#87772)

completes
https://github.com/orgs/tgstation/projects/19/views/1?pane=issue&itemId=85235611

https://github.com/user-attachments/assets/087c88bd-9ddd-4e57-972d-fe66084d19bc
maybe now someone will notice you wrote something
:cl: grungussuss
sound: writing something now produces sound
/:cl:

* Automatic changelog for PR #87772 [ci skip]

* AI-controlled mobs can now cross open space if they won't fall. (#87821)

* Automatic changelog for PR #87821 [ci skip]

* Lowers the price of the energy sword. (#87738)

E-sword uplink price has been lowered from 8 to 6 TC.

It's no secret that the E-sword has fallen out of flavor over the last
year or so.

Its purchase rate is so low it doesn't even show on the MRP chart.

https://superset.moth.fans/superset/dashboard/4/?native_filters_key=gJDhU4Ug60OlqSjRelTSMUWlVWVPGZRQr16s6OFMNXTqcUaVO8-O0yCX1cjJJK9y

Part of the reason I feel is that on its own the weapon doesn't really
offer much.

It's a decent melee weapon but not as good as the powerfist, which is
less expensive, hits twice as hard, stuns, and is unblockable.

It offers decent protection, but again a shield is so easy to steal
these days you might just save your tc for something better

And when you really think about it, his bigger sister, the desword, is
only 5 TC more expensive and offers way more damage and block chance.

(Also you can get one for free if you space explore for a few minutes,
but that's besides the point).

Now I'm not saying the energy sword is a bad weapon, it being 1handed
opens you up for a few nasty combos.

But for what it represents, i.e a shield with some decent damage
strapped on top , it could probably receive a small discount.

I don't really have any strong attachments to the weapon or anything, so
If you can provide a good reason why this is a bad idea by all means.

:cl:
balance: The Uplink cost of the energy sword has been lowered from 8 to
6 TC.
/:cl:

* Automatic changelog for PR #87738 [ci skip]

* More accessibility options and pref menu (#87549)

- added accessibility tab in prefs menu
- put darkened flashes option into this menu
- added `darken screen shake` pref, for motion sick people, darkens your
screen when experiencing screen shake.

<details>
OUTDATED

![image_2024-10-29_023038297](https://github.com/user-attachments/assets/db9cfe23-74f7-413a-8d84-496384b3d3bf)

</details>

https://github.com/user-attachments/assets/e3fd43ad-a65c-47dc-add2-6c93048e8b61

makes it easier for people with disabilities to play the game.
:cl: grungussuss
qol: you can now mitigate motion sickness from screen shake by enabling
"darken screen shake" in preferences
/:cl:

---------

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

* Automatic changelog for PR #87549 [ci skip]

* Makes dust animation look less 2006 (#87435)

This was inspired by an effect I saw on Paradise but I sprited my own

https://github.com/user-attachments/assets/2130053c-a6ea-48e6-8b62-4c08563fd154

(Todo, make the skeleton appearing less jank)

1. Looks less 2006.
2. The dust sprite will reflect the mob being dusted, since it's
literally just Your Sprite. Your clothes, species, etc.
3. All species and all mob types now animate being dusted - from corgi
to xenos, from borgs to lizards -, and we can even reuse this effect for
items being dusted if we so desire

:cl: Melbert
image: The animation for being dusted now takes into account your
sprite, rather than being a normal nude spaceman
/:cl:

* Automatic changelog for PR #87435 [ci skip]

* Datumizes heretic paths (#87432)

Replaces the previous system of manually linking each and every heretic
knowledge with eachother with an elegant solution to the problem,
additionally places further restrictions on heretic tree, ensuring that
noone can singlehandledly make it really hard to understand.

There were 2 holes in the heretic knowledge tree, which I removed with
temporary dummy linkings (till someone adds something there, or I may
yet add something there in this PR, so if someone wants to add something
there better do it quickly). The dummy linkings are necessary as the new
system is rigid in this regard in that it does not allow for these
connections to *not* exist, the heretic tree is a directional graph and
while it handles one or mroe connections, it cannot handle having no
connections by design.

* Automatic changelog for PR #87432 [ci skip]

* [NO GBP] Fixed special DNA infusions from squids and pufferfish (#87818)

that. And also a runtime error.

Fixing what I've broken.

:cl:
fix: Fixed special DNA infusions from squids and pufferfish.
/:cl:

* Automatic changelog for PR #87818 [ci skip]

* Omen component no longer tries to crush you from inside of a vent (#87847)

* Automatic changelog for PR #87847 [ci skip]

* Makes goliath cloak not override digitigrade legs (#87840)

* Automatic changelog for PR #87840 [ci skip]

* Tramstation Barber Disposals Fix (#87835)

* Automatic changelog for PR #87835 [ci skip]

* Xenobio console puts sucked up slimes into stasis (#87832)

Closes #87715
Also fixes potential issues that slimes could cause by atmos processing
while inside

:cl:
fix: Xenobio console puts sucked up slimes into stasis so they no longer
split up inside
/:cl:

* Automatic changelog for PR #87832 [ci skip]

* Gives Runtimestation a bounty pad and event spawnpoints (#87839)

* Automatic changelog for PR #87839 [ci skip]

* Fix auto-reel fishing line item catching logic (#87855)

So while working on a frog tongue concept, I realized the auto-reel
fishing line was... always hitting you with the items you reeled in.
Looking into the code, that seemed weird, because it seemed like it had
an entire segment of code dedicated to avoiding just that: catching
those items with your offhand.
But apparently this code never actually ran, because it registers
`COMSIG_ATOM_PREHITBY` on the reeled in item, which only gets sent to
the atom that gets hit.

So in this pr we just shift it to using `COMSIG_MOVABLE_PRE_IMPACT`
instead, which is the equivalent signal sent to the thrown movable.
This fixes our issues.

Fixes the auto-reel fishing line always smacking you in the face with
whatever you reel in, rather than going through its "catch this" checks.
:cl:
fix: Fixed auto-reel fishing line item catching logic.
/:cl:

* Automatic changelog for PR #87855 [ci skip]

* [NO GBP] Fixes hat stabilizer ignoring clothing worn_y_offset (#87851)

Closes #87487

![image](https://github.com/user-attachments/assets/d7b501e2-b026-4254-bbd5-919a3e18259b)

:cl:
fix: Fixed hat stabilizer ignoring clothing worn_y_offset
/:cl:

* Automatic changelog for PR #87851 [ci skip]

* Fixes four unlinked APCs in DeltaStation maint rooms (#87850)

Fixes unlinked APCs in the `Electronic Marketing Den`, `Abandoned
Garden`, `Security Maintenance`, and `Private Investigator's Office`

Specifically:
<details><summary>Moves the wires for the Den to the current
APC...</summary>

![image](https://github.com/user-attachments/assets/ee754ebe-2f3c-41ea-856b-ec21af079f22)

</details>

<details><summary>Moves the APC for the Garden to the current Wires
(yes, it's the inverse, but it's much nicer beside the air alarm AND
removes it from being hidden by the poster...)</summary>

![image](https://github.com/user-attachments/assets/bc07084b-4599-4b81-bc2a-ec6d8b250627)

</details>

<details><summary>Adds the 1 missing wire to the APC in Sec Maints
(under the table)</summary>

![image](https://github.com/user-attachments/assets/f2a0024c-061d-4db2-9bff-a7d025814ff7)

</details>

<details><summary>Moves the wires to the APC in the PI Office</summary>

![image](https://github.com/user-attachments/assets/3e9513a2-0fc7-45fa-84b2-31c994ff2e0e)

</details>

These are, theoretically, meant to be wired to the station. They all
have single lines of wires in the rooms going to walls. Just not to the
walls with the APCs.
:cl:
fix: (DeltaStation) Fixed unwired APCs in the Electronic Marketing Den,
Abandoned Garden, Security Maintenance, and Private Investigator's
Office
/:cl:

* Automatic changelog for PR #87850 [ci skip]

* Fix holymelon armor not inheriting magic resistance (#87849)

- Fixes #87621

Holymelon armor had a missing antimagic flag that did not stop magic
attacks. The holymelon plant gene has
`MAGIC_RESISTANCE|MAGIC_RESISTANCE_HOLY` but the armor only had
`MAGIC_RESISTANCE_HOLY` so this is just making it consistent.

Consistency.

:cl:
fix: Fix holymelon armor not inheriting magic resistance
/:cl:

* Automatic changelog for PR #87849 [ci skip]

* Add screentips to hat stabilizer component (#87845)

Initially this was added in:

- #87285

And then removed in:

- #87305

Not sure if @SmArtKar was aware that screentips can be added to
components.

Consistency.

:cl:
fix: Fix missing screentips plasmaman helmets and MOD suit hat
stabilizer helmets.
/:cl:

---------

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

* Fix airlock shell for circuit camera component (#87837)

This PR resolves an issue relating to circuit cameras and airlock
shells.

Fixes #84650

This is a bug fix, and makes airlock shells actually usable.

:cl:
fix: Airlock shells are properly assigned circuit cameras modules
/:cl:

* Automatic changelog for PR #87845 [ci skip]

* fixes tgui DraggableControl not focusing on first click (#87834)

closes #86536

we were attempting to focus a hidden element, which appears to just fail
silently. if we wait until it should be rendered in the dom, it'll be
focused correctly

i'm not 100% just throwing a `setTimeout(() => {}, 0)` is appropriate -
this is a scary class component that i can't throw a useEffect at. it
works, though

i'll pr it over to tgui-core ifff this is all good

clicky buttons clicky click working click

:cl:
fix: certain tgui inputs no longer require 2 clicks to open
/:cl:

* Automatic changelog for PR #87837 [ci skip]

* Labeller now tells you how many labels are left. (#87836)

New `examine` proc for hand labellers so you can tell how many labels
are left on examine.

It's vital to know how many more times I can ~~spam labels~~ organize my
paperwork.

:cl: Goat
qol: You can now examine labelers to tell how many more labels it has.
/:cl:

* Automatic changelog for PR #87834 [ci skip]

* Automatic changelog for PR #87836 [ci skip]

* Examine fixes and documentation touchup (#87838)

Fixes and stuff I noticed from when I was porting examine stuff from
here to TGMC.
- Uses regex so that if you include `and ` in the tooltip of an examine
tag but not main text, `examine()` will not think you said `and ` in the
main text
- The morbid tooltip doesn't try to use HTML for the tooltip now
- Updates documentation for `examine_tags`

Here's my cat.

![image](https://github.com/user-attachments/assets/080235e2-2c73-4875-a22e-acb808496541)
:cl:
fix: examine tags now use regex for checking if a tag has "and" in it
spellcheck: the tooltip for the morbid examine tag doesn't try to use
html anymore
/:cl:

* Automatic changelog for PR #87838 [ci skip]

* Makes curator inventory update when buttons are pressed. (#87841)

Adds two calls for `update_static_data_for_all_viewers()` so the UI will
update when a player switches pages or removes an item in the inventory
screen.
Responsive UI good. When I click button UI should respond accordingly.
fix #82733
:cl: Goat
qol: Curator console's inventory screen will now update when you change
pages or remove items.
/:cl:

* Automatic changelog for PR #87841 [ci skip]

* Deletes misleading infinite define, adds defines for clearer status effect durations (#87842)

1. Deletes `INFINTIE`, it is misleading and not at all a big number and
causes bugs
2. Adds `STATUS_EFFECT_PERMANENT` and `STATUS_EFFECT_NO_TICK` to make it
clearer what infinite status effects are

* Make roundstart book publishing on bird possible. (#87843)

Adds a book binder to the birdshot library in the spot the book scanner
used to be and moves the scanner right next to the library computer on
the desk.

Curator shouldn't have to wait for research to be able to put books into
the archive.
:cl: Goat
map: The library's scanner on Birdshot is now close enough to connect to
the computer and was also given a book binder.
/:cl:

* Automatic changelog for PR #87843 [ci skip]

* Fixes basic mob performance impact created by the factorio PR (#87852)

the peak change. This was done to exclusively snowflake chasms but in
reality *did not do anything whatsoever* because chasms override
CanAllowThrough to always return TRUE anyways. Yesh.

is_blocked_turf is relatively hot in basic mob AI so this was really
bad.

:cl:
fix: Fixed basic mob performance impact created by the factorio PR
/:cl:

* Fix broken link to issue manager guide (#87846)

There was a malformed markdown link in the contributor guide.

Nothing player facing.

:cl:
fix: Fix broken link to issue manager guide in Github contributor guide
/:cl:

* Automatic changelog for PR #87852 [ci skip]

* Automatic changelog for PR #87846 [ci skip]

* Fixing a small, crucial, fish reproduction issue. (#87825)

This PR should fix fishes not being able to reproduce with others of the
same type, simply because the list of **types** to check was
instantiated with the first key being src instead of src.type.

I should really make a second fish reproduction unit test that doesn't
involve crossbreeding, self-reproducing and sterile fishes, all of which
are edges cases that are actually working unlike the main thing.

Yeah, sorry if this took so long to get to this. I hadn't really notice
it until now. I have indeed played with the aquarium a few times but
with other goals in mind, and when I had seen that fish could indeed
reproduce with different yet compatible fish (e.g. clownfish and
lubefish, goldfish and three-eyed goldfish) I thought the feature was
working as intended. I was simply wrong.

* Automatic changelog for PR #87825 [ci skip]

* [NO GBP] Fixes some item interactions (#87856)

- Fixes #87854

:cl:
fix: flatpacker accepts circuitboards with left click
fix: rcd can deconstruct tables
fix: you can open panels of destructive analyzers with screwdriver right
click. Use right click or combat mode with items for default
interactions
fix: flatpacker & machines with local storage can be RPED'd again
/:cl:

* Automatic changelog for PR #87856 [ci skip]

* [NO GBP] Fixed fish still being hungry when fed if in aquarium with the 'growth and reproduction' option disabled (#87827)

See title.

That's a bug.

* Automatic changelog for PR #87827 [ci skip]

* [NO GBP] Fixed bombing non-turfs fishing spots not spawning loot correctly. (#87819)

Found another small issue with fishing, this one pertaining explosive
fishing spawning the loot inside objects.
Also bottled messages should no longer spawn from explosions. They're
one-time events and shouldn't be spent by explosive fishing, which can
quickly empty the pool of stored messages and photos.

Fixing issues with the feature.

* Automatic changelog for PR #87819 [ci skip]

* Fixes borg to ai connection (#87773)

fixes #87651 which was caused by #87597
it is
:cl:

fix: fixed roundstart borgs not being synced to ai

/:cl:

* Automatic changelog for PR #87773 [ci skip]

* fix clicking other ghosts' screen alerts (#87830)

closes #87572

usr does not necessarily mean owner for screen alerts, thanks Observe

shouldn't be teleporting other ghosts around

* Automatic changelog for PR #87830 [ci skip]

* Holosign creators interact with storage correctly (#87824)

- Fixes #87539

Racks, bags & basically anything that stores stuff will interact with
all holosign creator's correctly

:cl:
fix: holosign creators interact with storage items correctly
/:cl:

* Automatic changelog for PR #87824 [ci skip]

* small slime ai tweaks (#87871)

* party popper doesn't make sloshing sounds (#87872)

closes https://github.com/tgstation/tgstation/issues/87330
:cl: grungussuss
sound: party popper no longer makes reagent sloshing sounds
/:cl:

* Automatic changelog for PR #87872 [ci skip]

* Fix infinite metal holodeck exploit (#87806)

This stops people from using chairs to create free metal. It was
possible to pick up a chair or place it down and it would lose it's
hologram status since a new object is created.

Now anyone that attempts to place down or pick up a chair will have it
vanish.

No more free metal.

:cl:
fix: Fix using chairs in holodeck to create infinite metal
/:cl:

* Automatic changelog for PR #87806 [ci skip]

* Rewrites the code in beserk.dm (#87820)

Does as the title says, cleans up the code a bit and modernizes it, as
well as making it call its parent.
It's more readable this way, plus it properly calls its parent proc now.

* Automatic changelog for PR #87820 [ci skip]

* Fixes stingbangs using wrong sprites (#87812)

Stingbangs (and much rarer rotfrags) used their disassembled sprite
until primed this entire time. Yeah.

Handle appearing out of nowhere looks very jarring

* Fixes detective action palette being invisible (#87814)

Closes #87809

* Automatic changelog for PR #87812 [ci skip]

* Automatic changelog for PR #87814 [ci skip]

* Reduces required crayons for crayon bounty (#87848)

This reduces the bounty size of the crayon civilian pack.

Instead of 24 crayons, it only needs 8. Same payout, less quantity.

Crayons are not easily produced or scavenged. Even if a map contains 2
full crayon packs in the Library, it still isn't enough to fulfill a
single bounty for crayons.

This new deal will get you a full payout with a full pack plus one
_mystery crayon._ Go rob the clown or detective or something if you need
the last one. Get that money!

* Automatic changelog for PR #87848 [ci skip]

* Include the map vote config file (#87867)

Includes the map_vote.txt config file created in
https://github.com/tgstation/tgstation/pull/86788 so that it gets read
when the server starts.

Reads whatever value is set in the config file.

* Automatic changelog for PR #87867 [ci skip]

* meatlovers flatbread no longer tastes raw (#87853)

fixes #87844

* Automatic changelog for PR #87853 [ci skip]

* fixes meteor heart AI runtimes (#87813)

fixes a few runtimes with the meteor heart's sleep behavior, mostly
because it was trying to add an element to a blackboard key list,
eventhough said key wasnt a list.

fixes meteor heart AI runtimes

* [no gbp] fixes manulathe and manucrafter interaction (#87880)

fixes #87874
also fixes an unintentional sprite change

:cl:
fix: the manucrafter now properly receives resources, also fixed
unintentional manulathe sprite change
/:cl:

* Disable hauntium teleporting during unit tests (#87878)

Disable the idle teleporting behavior in
`/datum/idle_behavior/idle_ghost_item` during unit testing.

I've seen two instances now of the mapping nearstation tests failing
because something made of hauntium spawned near the edge of the station
and then teleported outside into space. This will fix that flaky
behavior.

No player-facing changes.

* Chem Dispenser icon shadow [NO GBP] (#87868)

![image](https://github.com/user-attachments/assets/5220c8ce-5f75-4a4a-944b-66ac5f458c53)

Didn't manage to processs the last suggestion under
https://github.com/tgstation/tgstation/pull/87576 by @Iamgoofball
Even though it was so obvious and brilliant idea.

Now no need to have a separate highlight color for buttons on PH color
mode.

Nice UI

:cl:
qol: Chem dispenser UI droplets now have a shadow to not blend with the
background
/:cl:

* increases volume of shoes pickup sound (#87875)

closes https://github.com/tgstation/tgstation/issues/87538
:cl: grungussuss
sound: shoes pickup volume is louder now
/:cl:

* Automatic changelog for PR #87868 [ci skip]

* Automatic changelog for PR #87875 [ci skip]

* Improves code for remote materials (#87870)

- Moves remote materials attack chain to item interaction level. Another
step in moving away from `attackby()`
- Fixes #40070. Though the timer subsystem maybe affected by FPS, round
start trigger is always done after everything is set up which is now
used by remote materials

:cl:
fix: silo connection on some machines won't time out when changing FPS
settings
code: improved attack chain code for silo connection
/:cl:

* Automatic changelog for PR #87870 [ci skip]

* spellecheck: existence not existance (#87862)

existance doesnt exist so i changed it to existence

existance dosent exist

:cl:
spellcheck: spellecheck: existence not existance
/:cl:

* Automatic changelog for PR #87862 [ci skip]

* Fixes scanner gates saying both bypass and detection lines when malfunctioning (#87816)

Closes #87542
:cl:
fix: Fixed scanner gates saying both bypass and detection lines when
malfunctioning
/:cl:

* Automatic changelog for PR #87816 [ci skip]

* [no gbp] fixes seedling ai getting stuck (#87885)

fixes seedling AI's getting stuck when trying to refill water from water
tanks that have been emptied!

fixes seedling ai getting stuck

:cl:
fix: fixes seedling ai getting stuck when trying to refill water from
emptied water tanks
/:cl:

* Automatic changelog for PR #87885 [ci skip]

* fixes parriable projectiles runtimes (#87899)

* Admin deleting a mob now ghostizes it beforehand, preventing a runtime (#87887)

* Automatic changelog for PR #87887 [ci skip]

* Refactors some more UIs to use DmIcon (#87886)

Upstream port of
https://github.com/Monkestation/Monkestation2.0/pull/4215

This changes some tgui UIs that used icon2base64/getFlatIcon to display
items to instead use DmIcon, just passing the icon/icon_state instead.

To be specific: the ORM, the "ore container", and the order console
(produce, mining, and bitrunning vendors)

<details>
<summary><h3>UI screenshots / proof of testing</h3></summary>

![2024-11-12 (1731458275) ~
dreamseeker](https://github.com/user-attachments/assets/b1c60677-b117-4c23-8076-8b5072130d55)
![2024-11-12 (1731458281) ~
dreamseeker](https://github.com/user-attachments/assets/b64d3c2f-4754-4e5d-991a-2df69d86eb2a)
![2024-11-12 (1731458286) ~
dreamseeker](https://github.com/user-attachments/assets/287d8db1-8acb-4c4c-a2f0-66227a477d19)
![2024-11-12 (1731458388) ~
dreamseeker](https://github.com/user-attachments/assets/f69f5d51-5cdc-442c-971d-a4abedd4a3d2)
![2024-11-12 (1731458391) ~
dreamseeker](https://github.com/user-attachments/assets/53a95e88-ac41-4f97-a409-10b19d130376)

</details>

gfi bad, especially in ui(_static)_data, dmicon good.

:cl:
refactor: The ORM, "ore container", and order console UIs (produce,
mining, bitrunner vendors) now load icons in a more efficient manner.
/:cl:

* Tenacious element no longer prints a wear off message when added outside of soft crit and properly removes its effects when detached (#87901)

Wear off message is only printed if the user actually had the effect
active before, and speed modifier is removed alongside the element.

:cl:
fix: Fixed tenacity effect printing its messages when it shouldn't be,
and not removing its' effects when it should've.
/:cl:

* Fixes Mech Spin Sounds (#87900)

Mechs were playing spin sound effects (_on top_ of normal step sounds)
every time they'd take a step while strafing. Additionally, they would
not play the spin sound effect when actually turning. This fixes both.
Bugfix. Also, cleaner sounding mechs.
:cl:
Fix: Fixed the triggering of mech turn sound effects
/:cl:

* sandstone blocks have the correct sound now (#87896)

closes https://github.com/tgstation/tgstation/issues/87611
it makes sense
:cl: grungussuss
sound: sandstone blocks have the correct sound now
/:cl:

* Lower singularity beacon cost and time  (#87891)

This lowers the cost of the singularity beacon to 4 crystals. Right now
this item never gets used due to the high cost and niche requirements.
According to the statistics it is not even on the list:

https://superset.moth.fans/superset/dashboard/4/?native_filters_key=Gd84-_rrITStPTkyo7BlqnE5aYcHmofhLU2GjWEiWdqY-ZaK2WVxrq1eG6qS0bNa

Before we had the SM, the singularity engine was often sabotaged with
this beacon since all you needed to do was disable an emitter or cut a
wire and the singularity would break loose. It was a relatively easy
process.

The criteria to achieve a singularity now is very difficult. You either
have to overload the SM and fight off anyone who tries to fix it OR
purchase one from cargo and make a pipe setup to feed it a ton of gas.
All the crew has to do to prevent it, is leak the gas by opening an
airlock, breach the floor, or a window. If there is an AI or cyborgs,
your job is now ten times harder.

Then you have another problem. The beacon requires powered wires and if
the SMESs gets destroyed by the singularity it's useless. This is
guaranteed to happen if using the SM from engineering since it's so
close to the SMESs. So now you have to either rely on solars or a
generator to power the device.

The hassle of spending 10 crystals on this item is not worth it. Too
many things can go wrong and it would be a waste of points.

This item never gets picked due to it's high cost and difficulty. By
lowering the cost, it would make it a more reasonable choice.

:cl:
balance: Lower the telecrystal price of the singularity beacon from 10
to 4 and reduce the timer to 20 minutes before it can be purchased.
/:cl:

* Speeds up part of the dust animation by a frame or so, makes remains/dust spawn aligned lower on the tile (#87858)

- Speeds up the torso part of the dust animation by a few frames, as was
requested but I didn't do before merge
- Makes remains/dust spawn from being dusted towards the bottom of the
tile

Videos (take before the remains/dust change)

https://github.com/user-attachments/assets/7e9fe699-a44b-49d5-a4d0-2304e09283d5

https://github.com/user-attachments/assets/7b426340-5d3d-49fa-91f1-52b2fc3a560c

Should help sell the effect a bit more

:cl: Melbert
image: Speeds up some frames of the dust animation slightly
image: Dust/remains spawned after being dusted are now aligned towards
the bottom of the tile
image: Bigger mobs now produce bigger piles of ash
image: Plasmamen now dust into plasma bones
/:cl:

* Fixes cigarettes not fitting in gas masks (#87817)

You couldn't put cigarettes in gas masks due to a check for if the masks
mouth is covered
You can now filter the air through your cigarettes as was intended.
:cl:
fix: removes the gas mask check for if the gas mask mouth is covered.
Now it only checks for filters and other cigs
/:cl:

* Automatic changelog for PR #87886 [ci skip]

* Automatic changelog for PR #87901 [ci skip]

* Automatic changelog for PR #87896 [ci skip]

* Automatic changelog for PR #87891 [ci skip]

* Automatic changelog for PR #87858 [ci skip]

* Automatic changelog for PR #87817 [ci skip]

* Fixes SSWardrobe stealing a camera from the camera app when on a dummy, causing a harddel (#87903)

See name, if a dummy somehow gets hold of a PDA with the camera app
installed (This just so happens to be a default PDA program in the case
on Nova, Skyrat, and Bubber), and the delete_equipment proc is called,
the camera inside the PDA gets sent to the wardrobe because of
`/datum/outfit/job/assistant/gimmick/hall_monitor` having one, and then
qdelled with the PDA, leaving a hanging ref

This causes a harddel during tests that has caused me great pains to
locate. Turns out a single example holodisk with the clown holds a
magical key to trigger all this: a single PDA

Fixes a harddel. There might be other similar ones hiding in the dark
like cameras in other objects.

:cl:
fix: Fixes SSWardrobe stealing a camera from the camera app when on a
dummy, causing a harddel
/:cl:

* Automatic changelog for PR #87903 [ci skip]

* Rebuild plane masters after client login if switching between 515 and 516 (#87889)

This makes `/datum/player_details` properly track BYOND version and
build separately, as opposed to just the full version string.

Whenever a client logs in, and their BYOND version is 516, while their
previous version was 515, or vice versa, it'll set a newly added client
var, `rebuild_plane_masters`, to TRUE.

During the `COMSIG_MOB_LOGIN` signal handler of a mob's HUD
(`/datum/hud/proc/client_refresh`), it will check to see if
`rebuild_plane_masters` is TRUE - if so, it will set the appropriate
`relay_loc` of (based on client BYOND version) of its plane master
groups, and rebuild their plane masters.

Makes testing stuff across 515 and 516 easier, as your screen won't
break when switching between the two.

516 is _still_ in private alpha, so no user-facing changes.

* a few tiny birdshot tweaks and fixes (#87785)

1st SM filter is now set to N2 by default
A random hallway apc that started unwired is now wired
Chef gets a dehydrator
Surgery theatre now has a surgery tray instead and surplus prosthetic
limbs to fill in the empty space
Greater central maintenance owns all of its walls
The chemical closet in pharmacy now has multiver, formaldehyde,
epinephrine, basic buffer and the other kind of buffer to compensate for
not having a chemstorage room
atmos distro air mixer now mixes correctly

closes #87729
also maintenance is supposed to own all of its walls

:cl:
fix: Added dehydrator to birdshot kitchen. Surgery theatre now has a
surgery tray and surplus prosthetics. An unwired hallway APC is now
wired. 1st SM filter is now set to Nitrogen. Chemistry closet in
pharmacy now contains extra chemicals to compensate for not having a
chemical storage. Atmos air for distro mixer now mixes correctly
/:cl:

* floor lights have the same light range during nightshift (#87786)

floor lights have the same light range during nightshifts

theyre horrendously bad at lighting up stuff in nightshift and birdshots
bar looks horrendous as a result

:cl:
fix: floor lights have the same light range during nightshift, so you
can actually see the bar during a night shift on birdshot
/:cl:

* Fixes storage & evidence bag pre attack (#87793)

- Fixes #87788

Usually when you force move an item anywhere `obj/item/doMove()` is
responsible for removing the item from the players hand & updating the
visuals. When you move that item from say your pocket to your hand we
call `attempt_pickup()` which also updates visuals.

The one case where these 2 procs don't help is when that item is
equipped from anywhere else but the hand(pockets for e.g) into a storage
medium that is held in hand. For this edge case we have to drop the item
to ground to update the visuals of whatever inventory slot it was
attached to

Now evidence bag uses the storage pre attack mode rather than
implementing its own item interaction thus fixing the visual glitch not
just for it but for all items that have `allow_quick_gather = TRUE`

:cl:
fix: Fixed visual glitches when inserting items from an slot other than
the hands into evidence bags & other storages that have quick gather
mode enabled
/:cl:

* Fixes nooartrium having no downsides (#87798)

Having a non-organic heart ignored the heart damage, so you could just
be immortal forever

:cl:
fix: Nooartrium heart damage can no longer be bypassed with non-organic
hearts
/:cl:

Balance maybe? I don't feel this was ever intended and an oversight in
not setting the correct flag

---------

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

* cuffsnapping is on right click (#87634)

title

OOC: Blard of Jard: I was trying to cut a cargo tech's leg off for a spy
bounty, but instead of just cutting his leg with it targetted on harm
intent, it immediately cut his ties and he mag dumped me with his laz
gun.

:cl:
fix: you now snip cuffs with right click to prevent accidental cuts
/:cl:

---------

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

* Guncode Agony 4.1: Portal Intermission (#87803)

Closes #75447 by allowing projectiles to pass through portals. This does
not allow for infinite loops for sanity (including host's) reasons.

Can safely be merged before #87740

:cl:
fix: Many years later, projectiles finally can pass through portals -
this time without crashing the server.
/:cl:

* Automatic changelog for PR #87785 [ci skip]

* Automatic changelog for PR #87798 [ci skip]

* Automatic changelog for PR #87793 [ci skip]

* Automatic changelog for PR #87634 [ci skip]

* Automatic changelog for PR #87803 [ci skip]

* Buffs the Anomalock modules (#87743)

Significantly buffed the anomalock modules.

Anomalock modules can be used with eachother.

Antigravity module costs 2 complexity.

Teleporter module is thrice as fast at teleporting with a slightly
reduced cooldown, but has a much larger power cost.

Changed how teleporter tracks maximum range to be less painful to the
end user.

Kinesis module's default range has been extended to 8.

Kinesis module can drag around people in critical condition or worse.

These modules have historically been, well, kind of a complete joke.
They seem to have been crippled out of fear of them being overpowering
with the end result of being unusable.

Anomaly items are allowed and meant to be fun, strong, and wild, so I
really don't see why these need to be so weak. The amount of times I'd
rather make a teleporter that takes 3 seconds to get you anywhere
instead of an instant portal gun or a bag of holding is roughly zero.

People hate modsuits, and in part that hate is because of modules which
do very, very little due to severe undertuning. Let's fix that with the
anomaly ones here.

> Anomalock modules can be used with eachother.

Let people get a buncha anomaly modulse together if they want to. An
antigravity user with teleporting and kinesis could be something to
fear, but not so much as to strike it from existence altogether without
even letting people mess around with it first.

> Antigravity module costs 2 complexity.

Antigravity module is glorified wittel -> gravitum, but it takes a core
and 3 complexity. At least let it be somewhat cheap.

> Teleporter module is thrice as fast at teleporting with a slightly
reduced cooldown, but has a much larger power cost.

Teleporter module is a big damn joke ATM, as stated above being
effectively overshadowed in every way by the portal gun. This now gives
it a fun niche instead, of being able to teleport around everywhere at
the cost of a massive power draw.

> Changed how teleporter tracks maximum range to be less painful to the
end user.

view() was working weirdly when I was using it. It was failing to
register tiles somewhat near the end of the screen, so I just ditched it
for a get_dist check that I threw 9 in as a somewhat arbitrary value
for.

> Kinesis module's default range has been extended to 8.

There's this bug on live where when you kinesis someone it flies all the
way to the SW corner of the screen for seemingly no reason. I don't know
why it happens but it drives me mad.

Even without that bug, 5 tiles is extremely frustrating to handle - it's
super, super annoying to find a middleground between 'not slapping you
in the face', 'not losing your grip'. 8 tiles is a lot more forgiving
and makes the module actually fun to use.

> Kinesis module can drag around people in critical condition or worse.

This one might be a bit nuts, but I really want to see this ingame, it's
kind of the best part of the module yet is unobtainable. Maybe some
stuff would need to be tuned for it, like making human throws flimsy.
:cl:

balance: Significantly buffed the anomalock modules.
balance: Anomalock modules can be used with eachother.
balance: Antigravity module costs 2 complexity.
balance: Teleporter module is thrice as fast at teleporting with a
slightly reduced cooldown, but has a much larger power cost.
code: Changed how teleporter tracks maximum range to be less painful to
the end user.
refactor: Refactored LoS checks to be a proc on atom, los_check
balance: Kinesis module's default range has been extended to 8.
balance: Kinesis module can drag around people in critical condition or
worse.
/:cl:

* Automatic changelog for PR #87743 [ci skip]

* gives mulebot wires some messages when cut (#87895)

closes https://github.com/tgstation/tgstation/issues/87640
feedback is cool
:cl: grungussuss
qol: added feedback for cutting mulebot wires
/:cl:

* Automatic changelog for PR #87895 [ci skip]

* Hello I would like to order one unit test please

* Hi can I get a replacement unit test this one broke

* we don't need these anymore

---------

Co-authored-by: Fikou <[email protected]>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: Jacquerel <[email protected]>
Co-authored-by: Ghom <[email protected]>
Co-authored-by: thegrb93 <[email protected]>
Co-authored-by: Xander3359 <[email protected]>
Co-authored-by: SyncIt21 <[email protected]>
Co-authored-by: harryob <[email protected]>
Co-authored-by: Tim <[email protected]>
Co-authored-by: Lucy <[email protected]>
Co-authored-by: SmArtKar <[email protected]>
Co-authored-by: OrionTheFox <[email protected]>
Co-authored-by: grungussuss <[email protected]>
Co-authored-by: Ben10Omintrix <[email protected]>
Co-authored-by: tonty <[email protected]>
Co-authored-by: elricsfate <[email protected]>
Co-authored-by: Waterpig <[email protected]>
Co-authored-by: Jordan Dominion <[email protected]>
Co-authored-by: Rhials <[email protected]>
Co-authored-by: necromanceranne <[email protected]>
Co-authored-by: Andrew <[email protected]>
Co-authored-by: Dawnseer <[email protected]>
Co-authored-by: carlarctg <[email protected]>
Co-authored-by: EnterTheJake <[email protected]>
Co-authored-by: MrMelbert <[email protected]>
Co-authored-by: Djiq <[email protected]>
Co-authored-by: Alice Garfieldfan <[email protected]>
Co-authored-by: sqn <[email protected]>
Co-authored-by: _0Steven <[email protected]>
Co-authored-by: tmyqlfpir <[email protected]>
Co-authored-by: Goat <[email protected]>
Co-authored-by: Neocloudy <[email protected]>
Co-authored-by: Holoo <[email protected]>
Co-authored-by: Alexis <[email protected]>
Co-authored-by: LT3 <[email protected]>
Co-authored-by: jimmyl <[email protected]>
Co-authored-by: Roxy <[email protected]>
Co-authored-by: zxaber <[email protected]>
Co-authored-by: Time-Green <[email protected]>
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.

1 participant