Commit Graph

120021 Commits

Author SHA1 Message Date
dependabot[bot]
a408116e22 Build(deps): bump actions/download-artifact from 4 to 5 (#92456)
Bumps
[actions/download-artifact](https://github.com/actions/download-artifact)
from 4 to 5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/download-artifact/releases">actions/download-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/407">actions/download-artifact#407</a></li>
<li>BREAKING fix: inconsistent path behavior for single artifact
downloads by ID by <a
href="https://github.com/GrantBirki"><code>@​GrantBirki</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/416">actions/download-artifact#416</a></li>
</ul>
<h2>v5.0.0</h2>
<h3>🚨 Breaking Change</h3>
<p>This release fixes an inconsistency in path behavior for single
artifact downloads by ID. <strong>If you're downloading single artifacts
by ID, the output path may change.</strong></p>
<h4>What Changed</h4>
<p>Previously, <strong>single artifact downloads</strong> behaved
differently depending on how you specified the artifact:</p>
<ul>
<li><strong>By name</strong>: <code>name: my-artifact</code> → extracted
to <code>path/</code> (direct)</li>
<li><strong>By ID</strong>: <code>artifact-ids: 12345</code> → extracted
to <code>path/my-artifact/</code> (nested)</li>
</ul>
<p>Now both methods are consistent:</p>
<ul>
<li><strong>By name</strong>: <code>name: my-artifact</code> → extracted
to <code>path/</code> (unchanged)</li>
<li><strong>By ID</strong>: <code>artifact-ids: 12345</code> → extracted
to <code>path/</code> (fixed - now direct)</li>
</ul>
<h4>Migration Guide</h4>
<h5> No Action Needed If:</h5>
<ul>
<li>You download artifacts by <strong>name</strong></li>
<li>You download <strong>multiple</strong> artifacts by ID</li>
<li>You already use <code>merge-multiple: true</code> as a
workaround</li>
</ul>
<h5>⚠️ Action Required If:</h5>
<p>You download <strong>single artifacts by ID</strong> and your
workflows expect the nested directory structure.</p>
<p><strong>Before v5 (nested structure):</strong></p>
<pre lang="yaml"><code>- uses: actions/download-artifact@v4
  with:
    artifact-ids: 12345
    path: dist
# Files were in: dist/my-artifact/
</code></pre>
<blockquote>
<p>Where <code>my-artifact</code> is the name of the artifact you
previously uploaded</p>
</blockquote>
<p><strong>To maintain old behavior (if needed):</strong></p>
<pre lang="yaml"><code>&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="634f93cb29"><code>634f93c</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/416">#416</a>
from actions/single-artifact-id-download-path</li>
<li><a
href="b19ff43027"><code>b19ff43</code></a>
refactor: resolve download path correctly in artifact download tests
(mainly ...</li>
<li><a
href="e262cbee4a"><code>e262cbe</code></a>
bundle dist</li>
<li><a
href="bff23f9308"><code>bff23f9</code></a>
update docs</li>
<li><a
href="fff8c148a8"><code>fff8c14</code></a>
fix download path logic when downloading a single artifact by id</li>
<li><a
href="448e3f862a"><code>448e3f8</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/407">#407</a>
from actions/nebuk89-patch-1</li>
<li><a
href="47225c44b3"><code>47225c4</code></a>
Update README.md</li>
<li>See full diff in <a
href="https://github.com/actions/download-artifact/compare/v4...v5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/download-artifact&package-manager=github_actions&previous-version=4&new-version=5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-15 16:49:52 -06:00
tgstation-ci[bot]
52bf2447f7 Automatic changelog for PR #92488 [ci skip] 2025-08-15 22:00:08 +00:00
StaringGasMask
b74b4c776f The death ripley walks again (#92488)
## About The Pull Request

I found out this admin only mech couldn't move because the 0 it had as
step power consumption ended up as infinity somewhere.
I removed it since there's no real reason why it shouldn't use power for
movement.

## Why It's Good For The Game

Mechs have legs for a reason.
2025-08-15 21:59:48 +00:00
tgstation-ci[bot]
4a65d99fcf Automatic changelog for PR #92546 [ci skip] 2025-08-15 13:00:04 +00:00
John Willard
b8cce3c620 Jukebox minor QOL (#92546)
## About The Pull Request

Jukebox now has context tips & has a new RMB that allows you to quick
toggle music playing on/off. Also replaces messages to chat with balloon
alerts.

## Why It's Good For The Game

To be honest I'm just clicking random files and making things use
balloon alerts & context tips, I think the more consistent we are w/ it
the better it will be for players.

## Changelog

🆑
qol: Jukebox now has context tips, balloon alerts over messages to chat,
and can now RMB to quick toggle music from playing.
/🆑
2025-08-15 14:59:47 +02:00
Bloop
dd37687c59 Fixes a couple more mob-related hard dels + fixes a balloon alert race condition from brimdemon fang (#92498)
## About The Pull Request

Tin, some more hard dels that were found. Additionally there was a
balloon alert meant to display phrases like "Kapow!" "Bam!" etc but it
is runtiming before it can do so because the mob gets deleted before the
balloon alert gets displayed. (solution for these sorts of issues is to
display the balloon alert on the `loc` instead.

## Why It's Good For The Game

Less chug, and a bugfix.

## Changelog

Probably nothing worth mentioning
2025-08-15 14:58:11 +02:00
Kashargul
0bd054538a follow up fix for #92508 (#92571)
## About The Pull Request
This is a follow up patch for #92508, otherwise than said in coderbus,
calling the cleanup too early can lead to bad assets. We'll now keep
track of the count of assets in generation and only clean up after they
all have passed the generation.
<img width="3067" height="455" alt="grafik"
src="https://github.com/user-attachments/assets/0b65acf3-464f-436c-8a60-84c9472be6cd"
/>
## Why It's Good For The Game
## Changelog
There should be nothing player facing here as the asset job fails
straight up if the cache was cleared too early.
2025-08-15 14:51:58 +02:00
tgstation-ci[bot]
f17100c886 Automatic changelog for PR #91920 [ci skip] 2025-08-15 06:59:19 +00:00
Time-Green
a47835a04f 1X3 ICEBOX | Wilderness Expansion (Now not extremely slow!) (#91920)
## About The Pull Request
Turns the surface z-level of icebox into a 1x3 area, effectively adding
2 wilderness new z-levels surrounding the station

Because it's not always clear to other people what I'm talking about,
this is what I mean with making the surface level a 3x3 z-level

The wilderness z-levels are gridlinked, instead of crosslinked, which
just means the connections are consistent and not randomized. If you
keep going right, you will always end up where you started again,
eventually. This also removes the black border around the surface icebox
z-level (cause you can just go there now)

**Wilderness levels**
I've added some Z-level templates that can be generated. They're
incredibly basic, but all can spawn runes on them as well.
- Snow planes (5x)
- Ice planes (1x)
- Forest planes (1x)
- Mountain planes (1x)

I've also tweaked surface generation quite a bit. It being completely
covered in bones always felt weird, and the intersparsed rocks and
chasms never sat right with me. The default overworldgen is now more
like the Forested trait, but with more sparse trees.

All of this is modular btw. You can increase the amount of z-levels,
make any space z-level be unrandomized gridlinked or add your own
wilderness z-levels (either to your own map or icebox)

## Why It's Good For The Game
Icebox exploration is kind of depressing. We have this unique setting,
but we can't really go anywhere? You can go down and find that one pool,
which is about the peak of exploration of icebox.

Now you can literally explore the entire round and get incredibly lost!
It's also a great opportunity for mappers! (Especially since the
templates I made were made rather quickly as I wasn't sure if this had
merit).

2 extra z-levels isn't a lot, but it'll let us further develop planetary
wilderness z-levels further without impacting load times that much.
Maybe 3x3 icebox can be real in the future, but for now 1x3 icebox will
have to do
2025-08-15 01:58:58 -05:00
tgstation-ci[bot]
ecfaf740b5 Automatic changelog for PR #92550 [ci skip] 2025-08-15 02:26:22 +00:00
panvxv
6fc0618f10 Reduction cost of Pyre rituals - perfect burning sacrifice! (#92550)
## About The Pull Request
This change reduces the cost of Unmelting Protection by 300 favor points
and Blazing Star by 500 favor points.
Unmelting Protection: 1000 -> 700
Blazing Star: 2000 -> 1500

Why such a change? Simple, 1000 and 2000 are round numbers without a
deeper thought about favor economy.

By making the Unmelting Protection cost 700 now a Chaplain can try
getting a one PERFECT Burning Sacrifice to cover the cost.
It would require him to get a body with all limbs attached and without a
scratch as any brute dmg means it can't get the most burn damage. (600
burn damage = 600 favor points + 100 extra points)

As for Blazing Star, it would require 2 perfect rituals and few candles
(3).

## Why It's Good For The Game
Favor points balance economy - not simple round number. Chaplain player
can try to achieve better results by preparing bodies before sacrificing
them. For example tend their brute wounds and attach limbs.
Quality over quantity!
## Changelog
🆑
balance: Reduced cost of Unmelting Protection and Blazing Star
/🆑
2025-08-15 04:26:04 +02:00
tgstation-ci[bot]
a1aed7326c Automatic changelog for PR #92564 [ci skip] 2025-08-15 02:24:36 +00:00
MrMelbert
844ad39d65 Attackedby differentiates failed attacks from 0 damage attacks (#92564)
## About The Pull Request

Fixes #92558

Currently `attacked_by` does not differentiate an attack that did 0
damage with an attack that failed (due to blocking or whatnot)

See also: This hack I left in

ce958c77c0/code/_onclick/item_attack.dm (L346-L347)

This causes problems because successful attacks can deal 0 damage. See
linked issue.

This PR addresses the issue by having `attacked_by` return `-1`
(`ATTACK_FAILED`) for attacks which entirely do not connect.
-1 was used so consumers can easily check if an attack did 0 damage OR
failed (via checking `<= 0`)

This isn't the preferred fix - I'd prefer if all block checking and zone
targeting was moved to `/item/proc/attack`, but that requires attack
itself be reigned in a bit (cuz it's still a bit of a mess).

## Changelog

🆑 Melbert
fix: Item on-attack effects will trigger as expected when hitting a limb
at damage cap
/🆑
2025-08-15 04:24:18 +02:00
tgstation-ci[bot]
1a5dcdadc2 Automatic changelog for PR #92523 [ci skip] 2025-08-15 02:23:04 +00:00
MrMelbert
a4f54f5b43 Verify mecha equipment is detachable and toggleable before deatching or toggling it (#92523)
## About The Pull Request

Don't let un-detachable or un-toggleable equipment be detached or
toggled.

## Changelog

🆑 Melbert
fix: Fixes some potential exploits in mecha ui code
/🆑
2025-08-15 04:22:43 +02:00
tgstation-ci[bot]
711dbb4bd1 Automatic changelog for PR #92539 [ci skip] 2025-08-15 02:22:25 +00:00
tonyhawq
48fc67f7bb Fixes an issue where called shuttles would say "1 minutes" instead of "1 minute" (#92539)
## About The Pull Request
<img width="397" height="190" alt="image"
src="https://github.com/user-attachments/assets/41e915bc-6d8c-4180-83f1-12380c76554c"
/>

<img width="220" height="112" alt="image"
src="https://github.com/user-attachments/assets/ef3aa542-e6e3-4983-8917-66009d4f843e"
/>

## Why It's Good For The Game
It. is good 👍 

## Changelog

🆑
spellcheck: shuttles will now say "arriving in 1 minute" instead of "1
minutes"
/🆑
2025-08-15 04:22:08 +02:00
tgstation-ci[bot]
7ccd6742a1 Automatic changelog for PR #92541 [ci skip] 2025-08-15 02:21:47 +00:00
J
45e7203fff Fix spraycan-painted clothing not showing on short-height characters (Settler) (#92541)
## About The Pull Request


https://github.com/user-attachments/assets/858081ed-114a-4f34-a925-e6b0250c29e2


Fixes spraycan-painted clothing not appearing painted when worn by
short-height characters (e.g., with the Settler quirk). The item color
filter was being effectively dropped when height displacement filters
were applied to worn overlays.

Implementation: update color_atom_overlay() to apply the atom’s color as
a named filter on the overlay (and recursively on child
overlays/underlays), preserving coloration even when additional filters
(like height) are later added.
## Why It's Good For The Game
Fixes #92536
Fixes a visible inconsistency: painted clothes now look painted on-mob
for short-height characters.
Improves clarity and player feedback; reduces confusion when using spray
cans.
The approach is robust and benefits other cases where overlays receive
filters after coloration.
## Changelog
🆑
fix: Spraycan-painted clothing now displays correctly when worn by
short-height characters (e.g., Settler); paint no longer disappears on
the mob sprite.
code: Worn overlay coloration now uses named filters and recurses to
child overlays, making it resilient to later filter changes (like height
displacement).
/🆑
2025-08-15 04:21:27 +02:00
tgstation-ci[bot]
f68f328e4d Automatic changelog compile [ci skip] 2025-08-15 00:32:10 +00:00
tgstation-ci[bot]
ab6811e21f Automatic changelog for PR #92473 [ci skip] 2025-08-15 00:10:19 +00:00
Thunder12345
d1b8145ad2 Icebox ruin: RoroCo glove factory (#92473)
## About The Pull Request

Adds a new surface ruin to icebox, the RoroCo factory. Contains a couple
of puzzles, and a small amount of loot in the form of ~~3 total pairs of
insulated gloves~~ a pair of insulated gloves, two adorable roros and a
cool unique labcoat. Just don't ask where the gloves come from...

Puzzles can of course be avoided/brute-forced by breaking down the walls
but that's for chumps.

<img width="1152" height="1024" alt="Space Station 13 2025-08-06 221903"
src="https://github.com/user-attachments/assets/21050aa6-9b27-494d-a949-7496aeda18cf"
/>

## Why It's Good For The Game

The upcoming 1x3 icebox surface calls for more ruin content to help fill
that space.

## Changelog
🆑
add: A new insulated glove factory has popped up on the ice moon.
add: Freezer floor tiles now come in the full range of shapes.
/🆑
2025-08-15 00:10:01 +00:00
tgstation-ci[bot]
5fe090cd3e Automatic changelog for PR #92501 [ci skip] 2025-08-14 22:59:59 +00:00
panvxv
15c639ac7b New messages system for visors and welding equipment (#92501)
## About The Pull Request
Riot helmets and welding helmets will give message about their visor
being moved and not whole helmet.
## Changelog
🆑
qol: Swat and welding helmets give proper messages when adjusting
visors.
/🆑
2025-08-15 00:59:36 +02:00
tgstation-ci[bot]
9bae1c90c9 Automatic changelog for PR #92556 [ci skip] 2025-08-14 22:37:40 +00:00
SmArtKar
d8120d30e4 Renames "Tick Overrun" in MC overview to "Subsystem Overtime" (#92556)
## About The Pull Request

Because we suck at naming things, and this is SS overtime and not tick
overrun

## Changelog
🆑
admin: Renamed "Tick Overrun" in MC overview to "Subsystem Overtime" to
be true as to what it actually displays
/🆑
2025-08-15 00:37:23 +02:00
tgstation-ci[bot]
a3c3acd294 Automatic changelog for PR #92561 [ci skip] 2025-08-14 22:36:43 +00:00
Wallem
53e475cfcd Downscales BSPRED icon to 32x32(I am a spriter edition) (#92561)
## About The Pull Request

Rearranges the icon without resizing the pixels themselves to fit the
whole thing in without making it seem thinner than it used to be.


![big](https://github.com/user-attachments/assets/dd746ae6-142e-4446-888e-99681b3aaf41)

Thank you #92521 for getting me off my ass on this one.
## Why It's Good For The Game

Fixes the fact that it was too big for inventory/computer UIs
## Changelog
🆑 Wallem
image: Readjusts the Bluespace RPED sprite to fit into a 32x32 space to
fix multiple oversights.
/🆑
2025-08-15 00:36:10 +02:00
tgstation-ci[bot]
c33df45560 Automatic changelog for PR #92535 [ci skip] 2025-08-14 22:30:22 +00:00
moocowswag
c40e1d3127 Has knife-cleanbots steal identificiation from ids rather than mind (#92535)
## About The Pull Request
Fixes https://github.com/tgstation/tgstation/issues/92533 by having
knife cleanbots read your worn id rather than reading your mind.
<img width="1920" height="1080" alt="image"
src="https://github.com/user-attachments/assets/3a40c315-de4c-4e86-9b76-d4401eb06998"
/>

edit: Incidentally makes a harder achievement much easier because its
based on id rather than magic mind reading
## Why It's Good For The Game

exploit to find out someone's identity bad
## Changelog
🆑

fix: knifed up cleanbots will now read your id card rather than your
mind when stealing valor

/🆑
2025-08-15 00:30:03 +02:00
tgstation-ci[bot]
c9b395dcd9 Automatic changelog for PR #92563 [ci skip] 2025-08-14 22:26:49 +00:00
Thunder12345
c76efcfba4 Makes megacell colours consistent with regular cells (#92563)
## About The Pull Request

Changes the colouring of the super and hyper tier megacells to match the
style of the corresponding regular cells.

## Why It's Good For The Game

Visual consistency

## Changelog
🆑
image: Super and hyper-tier megacells now match the appearance of their
smaller cousins.
/🆑
2025-08-15 00:26:28 +02:00
tgstation-ci[bot]
6347966af5 Automatic changelog for PR #92334 [ci skip] 2025-08-14 22:17:25 +00:00
zxaber
f8b42f77f8 Mobs with binary channel access now recieve a "New Host" message when a new AI is brought online. (#92334)
## About The Pull Request
Mobs with binary channel access will get a message (and sound alert)
when a new AI is created. The message includes the new AI's name, but no
location or any other information.

AIs spawned by the Syndicate Intellicard item will not send a message.
This also only affects AIs, so Cyborgs and Binary Key users likewise do
not create an alert.

New AIs spawning on Centcom for Admin nonsense also will not send an
alert.
## Why It's Good For The Game
Binary is normally a reasonably safe place for AIs to discuss things
with their borgs, and while it can be tapped into by various other
users, sudden new AIs are the most likely to be detrimental if the older
AI is on a harmful lawset. So now existing AIs get an alert that a new
host is online and, more importantly, listening in.

Syndicate AIs, of course, need to be secret and get a pass on making
alerts.
## Changelog
🆑
add: AIs now get an alert when a new (non-syndicate) AI is brought
online.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-08-15 00:17:04 +02:00
tgstation-ci[bot]
e9987525f8 Automatic changelog for PR #92519 [ci skip] 2025-08-14 19:40:45 +00:00
Nick
a9f9675e6b Replaces all public botany trays with Soil again, and removes sinks from botany/public garden (#92519)
## About The Pull Request

This PR replaces all Garden trays with Soil.
This PR removes all sinks from botany/garden area

<img width="837" height="806" alt="image"
src="https://github.com/user-attachments/assets/23325df3-4542-4d6e-9886-ff4463e3bbfd"
/>

<img width="1104" height="727" alt="image"
src="https://github.com/user-attachments/assets/d0e6fd97-9688-4e27-bf9b-f92b77a799fb"
/>

<img width="787" height="658" alt="image"
src="https://github.com/user-attachments/assets/11595356-ad6f-47ba-a3ca-9a0f0c90306e"
/>

<img width="809" height="464" alt="image"
src="https://github.com/user-attachments/assets/f0c66277-7ab9-40a7-b5a7-8df4e8c452d6"
/>

<img width="658" height="686" alt="image"
src="https://github.com/user-attachments/assets/1bddf9c2-dccd-4971-bf31-32a5673f258e"
/>

<img width="588" height="729" alt="image"
src="https://github.com/user-attachments/assets/13534fd0-6bd1-48ab-bad4-15117cb95b31"
/>


## Why It's Good For The Game

Public garden always had soil as a baseline because it like a more
garden feel, where hydrononics have a more industrialized feel with the
trays, this is why i put soil back in all public gardens. i also removed
the sinks from botany and public gardens because its a lame infinite
water source why bother putting water tanks down if you put like 2-3
sinks in the same area

🆑 Ezel
balance: Removes Sinks from botany/garden
balance: Replaces all Garden trays with soil
/🆑
2025-08-14 12:40:27 -07:00
tgstation-ci[bot]
87d1901fce Automatic changelog for PR #92482 [ci skip] 2025-08-14 14:22:41 +00:00
OnlineGirlfriend
39ed5e01bc Updates basic book sprites (#92482) 2025-08-14 10:22:16 -04:00
tgstation-ci[bot]
6a8c61d515 Automatic changelog for PR #92547 [ci skip] 2025-08-14 14:11:41 +00:00
EnterTheJake
fae1ec49c7 Lowers the TC price of the Suppressor (#92547)
## About The Pull Request

TC price on the suppressor has been lowered from 3 to 1 TC.

## Why It's Good For The Game

The suppressor is an incredibly niche utility item that's dependant on
another purchase to see any use, the Makarov.

While the Makarov is a pretty solid choice for a sidearm, I don't think
its only attachment should cost more than some of our grenade bundles.

## Changelog

🆑
balance: Uplink price on the suppressor has been lowered from 3 to 1 TC.
/🆑
2025-08-15 00:11:23 +10:00
tgstation-ci[bot]
46d1e40a20 Automatic changelog for PR #92425 [ci skip] 2025-08-14 12:52:25 +00:00
necromanceranne
ae3b29018a Declutters settlers a bit. (#92425) 2025-08-14 12:52:05 +00:00
tgstation-ci[bot]
2a32194816 Automatic changelog for PR #92294 [ci skip] 2025-08-14 12:33:28 +00:00
necromanceranne
77375b66eb The effects of flashbangs become less severe the further away you are from the flashbang when it detonates. (#92294)
## About The Pull Request

<img width="691" height="207" alt="flashbang agony zone"
src="https://github.com/user-attachments/assets/a4cc5fdb-19dc-4849-8c4a-2db1ac0fe212"
/>

In this handy chart, you can now see the impact of the flashbang based
on location.

**Dead Center:** While our Powergaming RD for Testing Pruposes is immune
to this, being on this tile when the flashbang goes off still hard stuns
you for a really long time even if you have ear protection. The bang
doesn't do anything in a vacuum.

**Pointblank:** This works as it does live, going through protections.
Though the bang doesn't work in a vacuum.

**Sweetspot:** This works as it does live, stunning and knocking you
down, but not if you're protected from the flash and the bang. This is
currently set to 3 tiles.

**Stagger Zone:** If you're vulnerable to the bang, you are staggered
and drop your items, rather than stunned and knocked down. If you're
vulnerable to the flash, you are dizzied and drop your items, rather
than stunned and knocked down.

**Safe Zone:** Basically this is outside of the flashbang's effective
range. The effective range is the same as live (7 tiles).

## Why It's Good For The Game

Flashbangs are a pretty easy room wide attack that acts as a one of our
more extreme gear checks. You either are entirely safe from this, or you
probably are going to eat shit to something just tossed into your line
of sight. Either you need to be able to disappear from the room
immediately, or the flashbang gets you.

Without nullifying the room attacking effect too severely, as well as
the mass disarming capabilities of the flashbang, this at least helps
provide some ways to counteract flashbangs without absolutely needing to
have the protections. You can play around the stagger and dizziness more
easily than you can the stuns.

The vacuum stuff is mostly because being hit by a flashbang's bang in a
vacuum is a bit absurd. The flash still works, however.

## Changelog
🆑
balance: The effects of flashbangs become less severe the further away
you are from the flashbang.
balance: The bang effect of flashbangs cannot affect you in a vacuum.
The flash still functions in a vacuum.
/🆑

---------

Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com>
2025-08-14 14:33:08 +02:00
tgstation-ci[bot]
a27d91c5b9 Automatic changelog for PR #92465 [ci skip] 2025-08-14 01:09:17 +00:00
SmArtKar
8c7fb5720a Gives constable helmet a hair mask and its armor back, fixes some hair masks not working (#92465)
## About The Pull Request

Also, all middle hair masks were broken because they had an incorrectly
set icon_state
Closes #92450

## Why It's Good For The Game

Its supposed to be a replacement for the security helmet, and while it
makes sense that it doesn't act as a full helmet (as it doesn't fully
cover your head), it still probably should have armor as per original
design (and also to not be useless for sec, who are the intended users
of this item)

## Changelog
🆑
fix: Fixed constable helmet not having any armor
fix: Fixed some hair masks not working
/🆑
2025-08-14 03:08:52 +02:00
tgstation-ci[bot]
a421dc2de4 Automatic changelog for PR #92413 [ci skip] 2025-08-14 01:05:00 +00:00
MrMelbert
76934c9f28 Instruments can be synced by setting an ID in their UI (#92413)
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-08-14 03:04:43 +02:00
tgstation-ci[bot]
889092bff6 Automatic changelog compile [ci skip] 2025-08-14 00:31:11 +00:00
MrMelbert
f1234ac5d0 Fix master skew (#92568)
Yippee
2025-08-14 11:03:33 +12:00