Skip to content

Fetch enlightenment directly from path#737

Merged
chazzyjazzy merged 11 commits intoDarkPack13:masterfrom
FalloutFalcon:weird-morality-mistake
Mar 22, 2026
Merged

Fetch enlightenment directly from path#737
chazzyjazzy merged 11 commits intoDarkPack13:masterfrom
FalloutFalcon:weird-morality-mistake

Conversation

@FalloutFalcon
Copy link
Copy Markdown
Member

@FalloutFalcon FalloutFalcon commented Feb 27, 2026

About The Pull Request

Creates a helper proc to fetch enlightenment from the stat and removes the enlightenment var on splat.

Why It's Good For The Game

More consistent to just directly check a datum rather then the datum having to set a var on a mob. which could be desyned if something else (like the new for kindred splat) sets it.

Changelog

🆑
code: Fetches enlightenment directly from Path.
/:cl:

@FalloutFalcon FalloutFalcon requested a review from a team as a code owner February 27, 2026 01:24
Comment thread modular_darkpack/modules/storyteller_stats/code/st_stats/base_type/_morality.dm Outdated
Comment thread modular_darkpack/modules/storyteller_stats/code/st_stats/base_type/_morality.dm Outdated
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 6, 2026

This PR has been inactive for long enough to be automatically marked as stale. This means it is at risk of being auto closed in ~7 days. Please address any outstanding review items and ensure your PR is finished - if both are true, and you have auto-staled anyway, you need to actively ask maintainers (by pinging them in the /tg/station Discord) to (re)review or merge your PR. If no maintainer responds to your request, you may wish to close this PR yourself while you seek maintainer comment, as you will later be able to reopen the PR yourself.

@github-actions github-actions bot added the Stale label Mar 6, 2026
@github-actions github-actions bot removed the Stale label Mar 7, 2026
@buffyuwu
Copy link
Copy Markdown
Contributor

tenor

@buffyuwu buffyuwu added the Stale label Mar 11, 2026
Copy link
Copy Markdown
Contributor

@chazzyjazzy chazzyjazzy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good but merge conflicts

@chazzyjazzy chazzyjazzy merged commit 1ce3d0a into DarkPack13:master Mar 22, 2026
34 of 37 checks passed
darkpack13-api bot added a commit that referenced this pull request Mar 22, 2026
github-actions bot added a commit that referenced this pull request Mar 22, 2026
FalloutFalcon pushed a commit that referenced this pull request Mar 22, 2026
Reverts #737 (because it was not squashed)
XeonMations added a commit to The-Final-Nights/The-Final-Nights-Rebase that referenced this pull request Mar 31, 2026
* one type def

* yea

* yea

* yea

* review

* Change spiderwebs to drain stamina when mobs enter (#95197)

## About The Pull Request
This changes spiderwebs to drain stamina from mobs whenever they enter a
turf filled with spiderwebs.

## Why It's Good For The Game
The old movement code was very janky and buggy. Because it used the
`CanAllowThrough` proc, a mob could spam several dozens of movement
attempts per second, resulting in a massive amount of shaking and `stuck
in the web` messages. This had the effect of not really slowing or
stopping movement, since the RNG was being rolled so fast that it was a
minor inconvenience.

I feel like the stamina drain effect makes more sense and feels more
natural.

## Changelog
:cl:
balance: Sticky spider webs now drain stamina when mobs enter the turf
/:cl:

* Automatic changelog for PR #95197 [ci skip]

* Chem scanning removes achievements from maint pills (#95397)

## About The Pull Request

Chem scanning a maint pill now removes the achievement for eating it.

## Why It's Good For The Game

cheater.

You can still scour maints for pills with stuff you'd like, but you lose
the achievement for doing so.

## Changelog

:cl:
fix: Chem scanning a maintenance pill removes the achievement value.
/:cl:

* Automatic changelog for PR #95397 [ci skip]

* Automatic changelog compile [ci skip]

* fixes

* You can no longer runtime selling ghosts (#95396)

* Automatic changelog for PR #95396 [ci skip]

* Spiders can now be tamed and ridden (#95194)

## About The Pull Request
This lets people ride and tame spiders by feeding them mouse, lizard,
moth, fly, and worm meat. You can only do this when a spider is a
spiderling or young; once it's fully grown, it's no longer possible.

This also refactors some tameable code to use `TRAIT_TAMED` instead of
setting variables on mobs individually.

## Why It's Good For The Game
It looks cool.

<img width="1920" height="1080" alt="dreamseeker_97k7fgzdhv"
src="https://github.com/user-attachments/assets/87d53102-468d-4dd7-b0a7-004f9a98df17"
/>


## Changelog
:cl:
add: Spiders can now be tamed and ridden. They eat mouse, lizard, moth,
fly, and worm meat and can only be tamed when they are spiderlings or
young.
code: Refactored tameable code to use TRAIT_TAMED instead of setting
individual variables on each mob.
/:cl:

* Automatic changelog for PR #95194 [ci skip]

* Cannabis and Nictone makes monkeys less angry, Booze makes them more angry (#95342)

## About The Pull Request

Cannabis will slowly calm monkies down, removing enemies from their
enemies list over time and eventually making them docile while it is in
their system

Nicotine does similar, but does not make them docile

Booze on the other hand makes monkeys see enemies as greater enemies
depending on strength of the drink

## Why It's Good For The Game

Adding interactions between reagents that modify "player behavior" and
actual "ai behavior" seems like fun to me,

## Changelog

:cl: Melbert
add: Cannabis will calm down an angry monkey, eventually even turning
them docile (not pacifist!) temporarily
add: Nicotine will also calm down an angry monkey, albiet slower than
Cannabis and will never turn them entirely docile
add: Booze on the other hand will make a monkey even angrier (though
only if they are already upset with someone)
/:cl:

* Automatic changelog for PR #95342 [ci skip]

* Rewrites dispenser bots to use item_interaction (#95375)

## About The Pull Request
Cleans up the code, swing combat will be real one day
## Changelog
:cl:
refactor: Rewrote dispenser bots to use item_interaction
/:cl:

* Automatic changelog for PR #95375 [ci skip]

* Rewrites BCI implanters to use item_interaction (#95377)

## About The Pull Request

One more refactor, one less attackby

## Changelog
:cl:
refactor: Rewrote BCI implanters to use item_interaction
/:cl:

* Automatic changelog for PR #95377 [ci skip]

* Fix Pun Pun's name (#95420)

## About The Pull Request

Moving Pun Pun's name handling in #94463 broke their name assignment as
it used `var/name_to_use = name`

Prior, it would save `var/name_to_use = "Pun Pun"`. But after moving it,
it would use `var/name_to_use = "monkey (842)"`, as name is randomized
in human init.

I will note that I think `use_random_name` var is broken... that may
require future investigation.

## Changelog

:cl: Melbert
fix: Pun Pun is Pun Pun again
/:cl:

* Automatic changelog for PR #95420 [ci skip]

* Rewrites integrated circuits to use item_interaction and screwdriver_act (#95378)

## About The Pull Request

Another attackby() gone

## Changelog
:cl:
refactor: Rewrote integrated circuits to use item_interaction and
screwdriver_act
/:cl:

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>

* Automatic changelog for PR #95378 [ci skip]

* Converts circuit printers/duplicators to item_interaction (#95398)

## About The Pull Request
Another one bites the dust

## Changelog
:cl:
refactor: Converted circuit printers/duplicators to item_interaction
/:cl:

* Automatic changelog for PR #95398 [ci skip]

* Converts bot construction to item_interaction (#95404)

## About The Pull Request

Converts basicmob bot construction to use item_interaction instead of
attackby()

## Changelog
:cl:
refactor: Converted bot construction to item_interaction
/:cl:

* Automatic changelog for PR #95404 [ci skip]

* Refactor revenant abilities / they now indicate if they are unlocked (#95380)

## About The Pull Request

Refactors Revenant abilities into a component 

Revenant abilities now indicate if they are locked

<img width="419" height="185" alt="image"
src="https://github.com/user-attachments/assets/7223f025-d99c-4c09-883b-b53f29947c36"
/>

<img width="337" height="97" alt="image"
src="https://github.com/user-attachments/assets/321bf64f-df57-4da5-9951-a2795637cea3"
/>

They also more accurately update if they are un/usable (ie, if you enter
a wall, they turn red.)

Also, Revenants are no longer affected by gravity. They already weren't
affected by gravity (as far as I could tell) this just prevents them
from getting the no-grav alert.

## Why It's Good For The Game

- Not all future Revenant abilities need to be an AOE spell

- It makes them easier to parse at a glance (what powers you have /
don't have / can use)

## Changelog

:cl: Melbert
qol: Revenant abilities indicate if they are locked, and better indicate
if they are currently usable
qol: Revenants are no longer alerted that they have no gravity (they
always have gravity)
refactor: Refactored Revenant abilities, report any oddities with them.
/:cl:

* Automatic changelog for PR #95380 [ci skip]

* Converts vehicles to use item_interaction/tool_acts (#95399)

## About The Pull Request

More attackby()s gone

## Changelog
:cl:
refactor: Converted vehicles to use item_interaction/tool_acts
/:cl:

* Automatic changelog for PR #95399 [ci skip]

* Automatic changelog compile [ci skip]

* Remove white pixels from ea and firelock animations (#95409)

* Automatic changelog for PR #95409 [ci skip]

* Automatic changelog compile [ci skip]

* Converts tram objects to item_interaction/tool_act (#95400)

## About The Pull Request

Throws more attackby()s out of the window

## Changelog
:cl:
refactor: Converted tram objects to item_interaction/tool_act
/:cl:

* Automatic changelog for PR #95400 [ci skip]

* Converts autosurgeons/robot bodyparts/dissection notes to item_interaction (#95401)

## About The Pull Request

I'm just going by categories and bundling up whichever ones are
relevant, more attackby()s gone

## Changelog
:cl:
refactor: Converted autosurgeons/robot bodyparts/dissection notes to
item_interaction
/:cl:

* Automatic changelog for PR #95401 [ci skip]

* Converts crossbreeds/anomacores/RND machinery to item_interaction (#95402)

## About The Pull Request

Converts anomaly refineries, tank compressors, doppler arrays,
anomacores, slime extracts and crossbreeds from attackby() to
item_interaction.

## Changelog
:cl:
refactor: Converted crossbreeds/anomacores/RND machinery to
item_interaction
/:cl:

* Automatic changelog for PR #95402 [ci skip]

* No more infinite free grenade launchers for nukies (#95419)

## About The Pull Request

for FREE?

## Why It's Good For The Game

for FREE?

## Changelog
:cl:

fix: No more infinite free grenade launchers for nukeops

/:cl:

* Automatic changelog for PR #95419 [ci skip]

* Dock Pay smite logs to audit log and also always notifies card holder (#95388)

## About The Pull Request

1. Dock Pay smite now adds to audit and transaction log 

2. Dock Pay smite now always notifies card holder regardless of bank
alert preference

3. Adds better support for negative money (ie, giving money)

## Why It's Good For The Game

1. Allows for people to trace where money is going, even if it is
vanishing

2. So people can actually know the smite hit them

3. Request

## Changelog

:cl: Melbert
qol: If your pay gets docked by Central Command, it is noted in audit
and transaction log
qol: If your pay gets docked by Central Command, you will always be
notified, regardless of bank alert preference
admin: Dock Pay smite supports negatives better (for an easy way to give
someone money)
/:cl:

* Automatic changelog for PR #95388 [ci skip]

* Automatic changelog compile [ci skip]

* new baseball related sprites (#95413)

* Automatic changelog for PR #95413 [ci skip]

* Automatic changelog compile [ci skip]

* Fixes runtime from buckling basic mobs to surgery tables ( + fixes vitals monitor when doing so) (#95426)

* Automatic changelog for PR #95426 [ci skip]

* Changes the access and contents from the shuttle engine crate, and adds a circuitboard/flatpack for it (#95406)

* Automatic changelog for PR #95406 [ci skip]

* Add an equivalent to balloon_alert_to_viewers, but for hearing (#95376)

* Automatic changelog for PR #95376 [ci skip]

* Build(deps): Bump actions/create-github-app-token from 2 to 3 (#95433)

Bumps
[actions/create-github-app-token](https://github.com/actions/create-github-app-token)
from 2 to 3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/create-github-app-token/releases">actions/create-github-app-token's
releases</a>.</em></p>
<blockquote>
<h2>v3.0.0</h2>
<h1><a
href="https://github.com/actions/create-github-app-token/compare/v2.2.2...v3.0.0">3.0.0</a>
(2026-03-14)</h1>
<ul>
<li>feat!: node 24 support (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/275">#275</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/2e564a0bb8e7cc2b907b2401a2afe177882d4325">2e564a0</a>)</li>
<li>fix!: require <code>NODE_USE_ENV_PROXY</code> for proxy support (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/342">#342</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/4451bcbc139f8124b0bf04f968ea2586b17df458">4451bcb</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>remove custom proxy handling (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/143">#143</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/dce0ab05f36f30b22fd14289fd36655c618e4e8e">dce0ab0</a>)</li>
</ul>
<h3>BREAKING CHANGES</h3>
<ul>
<li>Custom proxy handling has been removed. If you use HTTP_PROXY or
HTTPS_PROXY, you must now also set NODE_USE_ENV_PROXY=1 on the action
step.</li>
<li>Requires <a
href="https://github.com/actions/runner/releases/tag/v2.327.1">Actions
Runner v2.327.1</a> or later if you are using a self-hosted runner.</li>
</ul>
<h2>v3.0.0-beta.6</h2>
<h1><a
href="https://github.com/actions/create-github-app-token/compare/v3.0.0-beta.5...v3.0.0-beta.6">3.0.0-beta.6</a>
(2026-03-13)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>deps:</strong> bump <code>@​actions/core</code> from 1.11.1
to 3.0.0 (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/337">#337</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/b04413352d4644ac2131b9a90c074f5e93ca18a1">b044133</a>)</li>
<li><strong>deps:</strong> bump minimatch from 9.0.5 to 9.0.9 (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/335">#335</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/5cbc65624c9ddc4589492bda7c8b146223e8c3e4">5cbc656</a>)</li>
<li><strong>deps:</strong> bump the production-dependencies group with 4
updates (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/336">#336</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/6bda5bc1410576b9a0879ce6076d53345485bba9">6bda5bc</a>)</li>
<li><strong>deps:</strong> bump undici from 7.16.0 to 7.18.2 (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/323">#323</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/b4f638f48ee0dcdbb0bc646c48e4cb2a2de847fe">b4f638f</a>)</li>
</ul>
<h2>v3.0.0-beta.5</h2>
<h1><a
href="https://github.com/actions/create-github-app-token/compare/v3.0.0-beta.4...v3.0.0-beta.5">3.0.0-beta.5</a>
(2026-03-13)</h1>
<ul>
<li>fix!: require <code>NODE_USE_ENV_PROXY</code> for proxy support (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/342">#342</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/d53a1cdfde844c958786293adcaf739ecb8b5eb9">d53a1cd</a>)</li>
</ul>
<h3>BREAKING CHANGES</h3>
<ul>
<li>Custom proxy handling has been removed. If you use HTTP_PROXY or
HTTPS_PROXY, you must now also set NODE_USE_ENV_PROXY=1 on the action
step.</li>
</ul>
<h2>v3.0.0-beta.4</h2>
<h1><a
href="https://github.com/actions/create-github-app-token/compare/v3.0.0-beta.3...v3.0.0-beta.4">3.0.0-beta.4</a>
(2026-03-13)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>deps:</strong> bump <code>@​octokit/auth-app</code> from
7.2.1 to 8.0.1 (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/257">#257</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/bef1eaf1c0ac2b148ee2a0a74c65fbe6db0631f1">bef1eaf</a>)</li>
<li><strong>deps:</strong> bump <code>@​octokit/request</code> from
9.2.3 to 10.0.2 (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/256">#256</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/5d7307be63501c0070c634b0ae8fec74e8208130">5d7307b</a>)</li>
<li><strong>deps:</strong> bump glob from 10.4.5 to 10.5.0 (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/305">#305</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/5480f4325a18c025ee16d7e081413854624e9edc">5480f43</a>)</li>
<li><strong>deps:</strong> bump p-retry from 6.2.1 to 7.1.0 (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/294">#294</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/dce3be8b284f45e65caed11a610e2bef738d15b4">dce3be8</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/create-github-app-token/commit/f8d387b68d61c58ab83c6c016672934102569859"><code>f8d387b</code></a>
build(release): 3.0.0 [skip ci]</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/d2129bd463d4feb8723edeea9437baa7db58e41e"><code>d2129bd</code></a>
style: remove extra blank line in release workflow</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/77b94efc3e5f99a45abdd163fe04a4ebb95e98d6"><code>77b94ef</code></a>
build: refresh generated artifacts</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/3ab4c6689898955f913a485593b36b197c6dbbdc"><code>3ab4c66</code></a>
chore: move undici to devDependencies</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/739cf66feb937a443e4b6b7626bedd98f9fef6df"><code>739cf66</code></a>
docs: update README action versions</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/db40289976a36527816d4f6f45765fdee71f134b"><code>db40289</code></a>
build(deps): bump actions versions in test.yml</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/496a7ac4eb472eeac44d67818d1ce7f5e9e5fc97"><code>496a7ac</code></a>
test: migrate from AVA to Node.js native test runner (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/346">#346</a>)</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/3870dc3051e3f1fc3a2faa17bcbb00f31fe1dd6c"><code>3870dc3</code></a>
Rename end-to-end proxy job in test workflow</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/4451bcbc139f8124b0bf04f968ea2586b17df458"><code>4451bcb</code></a>
fix!: require <code>NODE_USE_ENV_PROXY</code> for proxy support (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/342">#342</a>)</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/dce0ab05f36f30b22fd14289fd36655c618e4e8e"><code>dce0ab0</code></a>
fix: remove custom proxy handling (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/143">#143</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/create-github-app-token/compare/v2...v3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/create-github-app-token&package-manager=github_actions&previous-version=2&new-version=3)](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 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>

* Fixes git workflow stale discord context (#95415)

## About The Pull Request
Fixes the error shown in
[here](https://github.com/tgstation/tgstation/actions/runs/23100026782).
The node version warning persists

## Changelog
N/A

* Prevents a runtime when something other than a player mob breaks an airlock (#95418)

## About The Pull Request

adds an `isliving()` check in airlock's `shock()`. Wires generally call
`[object].shock(usr, ...)`. The `shocking` argument is `isliving()`ed in
the base `shock()`, but airlocks need it checked before that.
Unfortunate that it must be checked twice in quick succession, but I can
think of no less wasteful way.

## Why It's Good For The Game

closes #95385

## Changelog
:cl:

code: fixed a runtime when something other than a player breaks an
airlock

/:cl:

* Automatic changelog for PR #95418 [ci skip]

* Add `TEST_REPEAT` unit test macro (#95384)

## About The Pull Request

Adds a macro to run a unit test a given number of times in a row, can be
combined with `TEST_FOCUS`.

## Why It's Good For The Game

Trying to debug a flaky unit test failure without the ability to easily
repeat a test over and over until you catch a fail is very annoying

## Changelog
:cl:
code: added a unit test macro for running the same test multiple times
/:cl:

* Automatic changelog for PR #95384 [ci skip]

* Fixes Gas Compressor not being able to perform disk operations. (#95436)

## About The Pull Request

There was a flipped sign on an early return, causing disk operations to
fail. Inverting it returns old functionality.

<img width="685" height="444" alt="image"
src="https://github.com/user-attachments/assets/6c193fe9-ce6e-4c3b-8a48-1b65e5ce0ce6"
/>

## Why It's Good For The Game

Fixes #95435. 🐛 ‼️ 💥 

## Changelog
:cl:
fix: The gas compressor once again can perform disk operations.
/:cl:

* Automatic changelog for PR #95436 [ci skip]

* Automatic changelog compile [ci skip]

* Watcher hatchlings will no longer shoot whatever the parent is buckled to, or anyone buckled to the parent (#95422)

* Automatic changelog for PR #95422 [ci skip]

* Automatic changelog compile [ci skip]

* Fix pda cargo app being unable to order autogenerated supply packs (#95423)

* Fixes flux & gravity core assembly activation not working (#95405)

* Automatic changelog for PR #95423 [ci skip]

* Automatic changelog for PR #95405 [ci skip]

* Automatic changelog compile [ci skip]

* Pun Pun does not randomize name in testing (#95430)

## About The Pull Request

Pun Pun's name shouldn't randomize when we're testing Pun Pun's name
Closes #95424
Closes #95437 
Closes #95438

* Intelligent vendors may deny usage if you are poor (or outright if they are active/moving) (#95311)

## About The Pull Request

When brand intelligence triggers, infected vending machines have a 50%
chance to deny you from using them unless you are moderately wealthy
(>=1000 cr)

When the vending machines activate/start moving, they outright deny
usage from everyone

## Why It's Good For The Game

We have some very good vendor deny icons but they are almost completely
impossible to trigger in game (with the exception of booze vendors and
some very edge cases)

Someone gave me the idea to use them in the brand intelligence event and
it feels pretty appropriate. Also helps you identify infected vendors
(whereas right now you can only tell by the occasional message). Maybe
it'll even incentivize people to actually hunt down the origin rather
than just wait it out.

## Changelog

:cl: Melbert
add: Intelligence vendors (from the event) have a 50% chance to deny
users who are not wealthy. When the vendors awake and start moving, they
instead get a 100% chance to deny anyone.
/:cl:

* Automatic changelog for PR #95311 [ci skip]

* Automatic changelog compile [ci skip]

* Adds screentips for scanning raptors (#95421)

## About The Pull Request

This adds screentips for scanning raptors - both with the PDA RaptorDex
app, and the standalone handheld version.

Also fixed a bug where the "scanned" balloon alert didn't properly
appear for the, bc it'd try to display the balloon alert to the
raptor...

<img width="329" height="419" alt="2026-03-15 (1773602977)"
src="https://github.com/user-attachments/assets/8a16f5c4-f65b-4931-ac0b-7c165f4781de"
/>

<img width="285" height="349" alt="2026-03-15 (1773603014)"
src="https://github.com/user-attachments/assets/827e2e1a-5243-4763-8532-b4fe2246c745"
/>

## Why It's Good For The Game

I initially didn't realize that you had to _right click_ to scan raptors
with the PDA app, so like, I decided to add screentips to make that
clearer.

also bugfix good.

## Changelog
:cl:
qol: Added screentips for scanning raptors with the RaptorDex PDA app
and standalone handheld RaptorDex.
fix: Fixed the handheld RaptorDex not showing the "scanned" balloon
alert when scanning a raptor.
/:cl:

* Automatic changelog for PR #95421 [ci skip]

* Automatic changelog compile [ci skip]

* Sets the worn ceremonial claymore's worn_icon_state (#95452)

## About The Pull Request

No other sprite available, and no reason not to use the basic claymore
one. They use the basic claymore inhand sprite too.

## Why It's Good For The Game

closes #95451

## Changelog
:cl:

image: gave the worn ceremonial claymore the basic claymore's worn icon.

/:cl:

* Fix Webbing Production gene webs (#95425)

## About The Pull Request
#95197 made gene-produced webs drain the stamina of their makers, this
is a fix for that
## Why It's Good For The Game
## Changelog
:cl:
fix: webbing production webs no longer harm their maker
/:cl:

---------

Co-authored-by: l0 <-->

* Automatic changelog for PR #95425 [ci skip]

* Automatic changelog compile [ci skip]

* Lavaland relics from boulders now have more appropriate effects (#95261)

## About The Pull Request

### Main changes

Lavaland relics from boulders have a (mostly) unique suite of random
effects, differentiating them from normal station relics

<Details>

<Summary>Spoiler Effect list</Summary>

- Dimensional shift (same as normal)
- Summon monsters (Summon animals, but Lavaland/Cult creatures, has a
high chance of deleting itself.)
- Explode (same as normal)
- Low potency shield (When holding the relic, you get a shield that
blocks three normal attacks.)
- High potency shield (When holding the relic, you get a shield that
blocks one normal or overpowering attack.)
- Random teleport (same as normal)
- Random AOE teleport (Cult themed version of normal teleport that
affects all nearby objects/mobs. Blocked by antimagic, has a low chance
of deleting itself)
- Recharge (same as normal)
- Rockfall (Places rock turfs over nearby open turfs. These are weak, ie
they can be hand-mined. Stuns anyone caught in it, has a chance of
deleting itself)
- Blood spray (Consumes a chunk of the user's blood and sprays blood
around. Has a chance of swapping to Blood suck)
- Blood suck (Consumes a chuck of all nearby mob's blood and transfers
it to the user. Blocked by antimagic. Has a chance of swapping to Blood
spray)
- Cleaning foam (same as normal)
- Acid cleaning foam (spawn an ez-clean grenade, has a high chance of
deleting itself.)

</Details>

### Other changes

Relics spawned from gifts (ie Christmas) auto-reveal themselves

Blood sprays won't merge with each other

Better documentation, and relics now uses `deconstruct` when terminating
itself

## Why It's Good For The Game

- The flavor behind these cursed and cultish relics doing the same thing
as the cobbled together electronics found in maint is kinda weak. 90% of
the time I see them abandoned in a pile in mining. More flavorful and
potent effects may make people decide to investigate them more.

- The gift thing was just a fun random idea I had. Allows people to play
with their new toy immediately.

## Changelog

:cl: Melbert
add: Relics found from cracking boulders now have a (mostly) unique set
of mining and cultish related effects.
add: Relics found in gift boxes no longer need to be discovered first in
science.
/:cl:

* Automatic changelog for PR #95261 [ci skip]

* Automatic changelog compile [ci skip]

* Reverts "Add prosthetic limb" surgery to involve targeting limbs, rather than targeting chest. (Adds stumps) (#95252)

## About The Pull Request

- The `prosthetic replacement` surgical operation has been reverted to
be closer to how it used to work: The operation is done targeting the
limb that's missing

The change was made out of necessity, as surgical state was tied to
limbs - you had to operate on the chest to re-attach limbs because there
was no limb to operate on.

To circumvent that, I have done the unthinkable of adding stumps when
you are dismembered.

- Missing limbs are now represented as an invisible, un-removable,
un-interactable limb.

Making this change was not as difficult as originally anticipated, and
(at least surface level) seems to have broken very little.

Surprisingly little had to change to make this work. 

Direct accesses to `mob.bodyparts` was changed to `mob.get_bodyparts()`
with an optional `include_stumps` argument.
Similarly, `get_bodypart()` had an optional `include_stumps` added. 

This means we ultimately barely needed to change anything, and in fact,
some loops/checks were able to be streamlined.

## Why It's Good For The Game

- As mentioned, this change was out of necessity and was easily the
least intuitive part of the broader changes. Reverting it back to how it
used to work should make it far easier for people to pick up on, and
means we can cut out a bunch of bespoke instruction sets that I had to
include.

- The addition of stumps also adds a ton of future potential - code wise
it allows for stuff like better damage tracking (we can transfer damage
between limb <-> stump rather than limb <-> chest), and feature we can
do "fun" stuff like have stumps bleed on dismemberment that you can
bandage.

## Changelog

:cl: Melbert
del: "Add prosthetic limb" surgical operation has been reverted to be a
bit closer to how it used to work - you operate on the missing limb /
limb stump, rather than on the chest.
refactor: Missing limbs are now represented as limb stumps. In practice
this should change nothing (for now), as no features were rewritten to
make use of these besides surgery. Please report any oddities with
missing limbs, however.
/:cl:

* Automatic changelog for PR #95252 [ci skip]

* Getting Mad at Parallax (Includes Boomerspace!) (#95382)

## About The Pull Request

I want to do stuff with parallax (like placing stuff in the backdrop and
moving it around), but I'm in my not doing 100 things in one pr arc so
we're doing this piecemeal.

To start, I wanted to try adding oldspace back as a parallax layer. This
is something I was considering when it was first removed but never got
around to, so here we are.

I started by [writing a rust
program](https://github.com/LemonInTheDark/old_space_gen) to fabricate
the required icon state, then realized that all the different parts of
space have their own animation delays. There's no way I could make one
icon state with all them looping, so instead I split them up into
multiple components and then overlayed them together.

This works, but is infeasible (my gpu died) at the scale required for
parallax (17 480x480 sets, 15 unique delays per 1 set) so I used render
targets to render one copy, then mirror it to the rest of the overlays.
This works wonderfully, and gets us down to (on my machine) a gpu cost
comprable with about medium parallax intensity.

I'm open to making these tile bound but I thought making them look "far
away" feels better.

In the process of all this I got very mad at the existing parallax code,
soooooooo

Parallax layers are no longer stored on the client, they are stored on
and managed by the parallax home atom that holds them for display. Said
atom also tracks all the information about how they are selected.

Parallax layers no longer take a hud as input, instead expecting a
client. (we were just swapping them back and forth and I thought it was
dumb).

Parallax no longer tries to support passing in a mob that does not
actually own the hud it is displayed on. This feature wasn't even being
used anymore because it was fully broken, so all it was doing was making
the code worse.

Parallax no longer has to do a full refresh anytime something about WHAT
layers are displayed might have changed. We cache based off the
variables we care about, and use the change in state to determine what
should happen (this is improved by moving "rendering the layers" fully
to the control of the home datum).

Parallax no longer directly modifies the hud's plane masters, instead
relying on trait based signals to manipulate them (this avoids wasted
time in the common event of a needless parallax prefs check).

Parallax no longer has 2 procs that are only called together to
"remove/readd/update" the layers, instead doing both in a new check()
proc.

Cleans up some plane master cruft to do with tracking/managing huds
(might break, tested, think it's fine).

## Why It's Good For The Game


https://github.com/user-attachments/assets/79138a0f-9f6d-447d-843e-0d237db13276

## Changelog
:cl:
add: Added an option for rendering space parallax with old space sprites
(the ones from before we invented parallax), they're animated and I feel
quite pretty.
fix: Space parallax should hopefully behave a little more consistently
now
refactor: Rewrote a lot of how space parallax handled itself, please
yell at me if any bugs make themselves known
/:cl:

* Automatic changelog for PR #95382 [ci skip]

* Begins Improving Sparks/Flares Somewhat, Adds Animatable Light Overlays (#95362)

## About The Pull Request

[Adds a visual tick helper, integrates it into SSmove and
such](https://github.com/tgstation/tgstation/commit/e97035f9f74fad5c67c5bf19d8d5d3bb4bd476b4)

Basically, if we do "stuff" during verb time then the next chance
clients have to actually see it is on the next visual tick (rather then
the normal "this tick"). This is cause clients get their next frame
during maptick, and maptick runs before verbs.

We want to be able to handle this properly because if you say, create an
object and then move it on the same VISUAL tick (NOT game tick), it will
just teleport instead of playing out the move. I don't want this for
stuff like sparks, so we need a way to work around it.

[Moves most users of the _FAST flag to
_INSTANT](https://github.com/tgstation/tgstation/commit/6f96daac00519c69adc7554f52114798a65f3ad5)

These are the kids that don't immediately spawn something and the move
it, and we want to allow them to move actually as soon as possible
(important for stuff like space)

[Improves basic effect systems, makes their products delete when they
stop
moving](https://github.com/tgstation/tgstation/commit/172cb25d80ed34e1ec523172a1677fb524239fba)

Moves some stuff out to getters or vars so children can better decide
how long effects should last/how fast they should move. Uses this to
clean up weird dupe code used by explosions.

Makes all these effects delete on contact with something that stops
them. I'm doing this because an effect just hanging in the air looks
really really odd. Does have consequences for sparks that are already
moving at a wall though, might need a better way to handle that.

Makes all these effects use _FAST loops so they don't just hang in the
air for a second on spawn

Adds a setter proc on sparks for their duration, gonna use this to
improve their effects some

[Refactors overlay lights, adds support for animating their
images](https://github.com/tgstation/tgstation/commit/3ad0083cf2b536df51a6d93dca40eac20c1d62d1)

Implements light_render_source and relevant setters, this allows us to
replace the components of an overlay light with basically whatever we
want

Refactors overlay lighting to handle its images more consistently,
allowing us to hook into an image being modified

Combining the two of these will allow us to consistently copy a light's
image, modify it in some way, and then relay that modification back
down. Allowing us to animate it or do more advanced effects painlessly

Also, fixes ranges of 1 or less not rendering at all on initial set
(thank you kapu)

[In which I get fed up and add a macro helper for UID
generation](https://github.com/tgstation/tgstation/commit/aab48b03d407104d4f9cf9acb034494237def911)

[adds vv hooking for all existing lighting
vars](https://github.com/tgstation/tgstation/commit/b81c6200a0d74c36b440aa3f4c1f22c422090a2d)

[Upgrade effect system's dir picking to avoid duplicates when
possible](https://github.com/tgstation/tgstation/commit/18b622586b509c6be4c4bca4e3e7c175ad75fe91)

[Uses the technique described above to animate spark's lights out as
they
move](https://github.com/tgstation/tgstation/commit/67ba177982213799984a70e89536c5efb3d17e14)

This is a decently nice effect imo, it allows us to bump their power
(read, alpha) since it'll get animated away. I try to sync the animation
to the actual icon state's flow (it's 0.7s long). I also sped them up
somewhat to hopefully have a nicer looking effect? we'll see.

[Abstracts away intercepting overlay lights into a holder
datum](https://github.com/tgstation/tgstation/pull/95362/commits/b3f1fe74f2c3bab1d8912ab8a666bd05677ad032)

This should make it far easier to reuse this pattern!

[Fixes overlay lights flashing to double intensity when picked up off
the
ground](https://github.com/tgstation/tgstation/pull/95362/commits/1d83f2031fa2b33312b2aea4359c0c37c9d04ac7)

We needed to clear out their underlays BEFORE the animation

[Adds a flickering effect to flares and their
children](https://github.com/tgstation/tgstation/pull/95362/commits/b7a858e04a607c58b6c7fbe1476ffe2239e63bde)

I'm still not 100% happy with this, I was trying to avoid it feeling
like a heartbeat with random noise and I.. THINK it worked? it's
honestly quite hard to tell

[Adds the same flickering to lighters, welding tools and life
candles](https://github.com/tgstation/tgstation/pull/95362/commits/3ec44027e17835ae96702cec5f0b12d1f4deb32b)

Also, updated light candles to mirror the appearance of normal candles
and use overlay lighting

EDIT:
I realized while working on flares that I accidentally double applied
color, so if you saw the sparks animations before now it was different
(less vibrant). IDK if I like this better or worse but it is RIGHT and
that's what matters.

## Why It's Good For The Game

I got mad about how bad these looked, and this is a start at improving
them.
Also, adds a framework for more dynamic effects applied to overlay
lights (you could use this to apply a sort of "emergency rotating"
effect, or flicker/buzz for example).

<details>
 <summary>Before</summary>


https://github.com/user-attachments/assets/66437f27-ee3c-4f14-a7ee-4a1c3e68533a


https://github.com/user-attachments/assets/ed14fff8-a7eb-47fe-bab5-9a490ac96629

</details>

<details>
 <summary>After</summary>


https://github.com/user-attachments/assets/fb24ff2e-c745-42a5-8e11-c8a1eeef35a5


https://github.com/user-attachments/assets/fd8c2116-cb92-4fe6-ad3e-786a6538e52a

</details>

## Changelog
:cl:
add: Reworks how sparks render. They're now a bit brighter, will fade
out as they move/if they hit something, will stack with each other less
and also won't start hang in the air on spawn.
add: Added a flickering effect to lighters, welding tools, flares,
torches and candles (since they're flames).
fix: Overlay based lights (think flashlights) will no longer flash to
double intensity while being picked up.
refactor: Reworked how some effects (explosion particles, sparks, some
reagent stuff) function, report any bugs!
/:cl:

* Automatic changelog for PR #95362 [ci skip]

* Automatic changelog compile [ci skip]

* Fixes floor mounts not attaching to plating (#95319)

## About The Pull Request
- Fixes
https://github.com/tgstation/tgstation/pull/94993#issuecomment-3797322473
- Partially addresses #95310. That is deconstructing the floor tile of
the sink won't destroy it. This behaviour was caused by #95062 which
made sinks mount to floors & not walls

## Changelog
:cl:
fix: you can pry out/deconstruct floor tiles/reinforced tiles etc
without destroying any floor lights/sinks mounted on as long as there is
plating underneath that turf
/:cl:

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>

* Automatic changelog for PR #95319 [ci skip]

* Fixes accidential infinite loop in multiz rendering (#95472)

## About The Pull Request

Ok so on the parallax pr I moved a bunch of dumb plane group signal
registration to the set home proc. Unfortunately because set_home is run
BEFORE update_offset, any created relays will then be offset down X from
where they should be.

For the master plate, this means #1's relay to transparent plate #0 will
instead draw to transparent plate #1 (which of course renders into
master plate #1)

To fix this I've moved update_offset to BEFORE set_home, so children can
hook into it and do things in a sane and normal way. Near as I can tell
there's no reason they're ordered as they currently are. I've also added
a failsafe check to prevent relay creation before update_offset is
called, and attached a CRASH() to such.

Interestingly enough this caused crashes on shift right click. That's
fun I think

* Automatic changelog compile [ci skip]

* Makes the Staff of Storms normal-sized (#95391)

## About The Pull Request

Exactly what it says on the tin - the Staff of Storms is now normal
sized instead of bulky, and will fit in a backpack.

## Why It's Good For The Game

The Staff of Lava fits in a backpack, and it arguably has far more
destructive/abuse capability than the Staff of Storms. The main use of
the Staff of Storms is dealing with ash storms, and like, I don't want
to take up my back slot for that.

## Changelog
:cl:
balance: The Staff of Storms is now normal-sized, and fits in a
backpack.
/:cl:

* Automatic changelog for PR #95391 [ci skip]

* Automatic changelog compile [ci skip]

* Fixes DNA vault being constructable half-in a wall. (#95346)

## About The Pull Request

So, the DNA vault is a 3x3 building, which spawns itself around the
machine frame in kind of a awkward pattern.
X represents the machine frame, and O represents the built vault's solid
tiles:

```
~X~
~~~
~~~
```
and upon built
```
OOO
O~O
O~O
```
Right now, building the vault doesn't required specific space, meaning
you can spawn it right into walls, hallways, whatever without
consideration. So, at the very least, this PR tweak it so that
<img width="285" height="349" alt="image"
src="https://github.com/user-attachments/assets/557a1ee1-d9a6-4d7e-8edd-d4381b8b2b3b"
/>
-> 
<img width="318" height="411" alt="image"
src="https://github.com/user-attachments/assets/dc7eaf4a-7c47-4e79-892c-8135f653183e"
/>

In doing so, this adds a new proc to machine construction onto circuit
boards called `completion_requirements` that can be used to check this
before completion.

This also adds a small QOL tweak to the debug BRPD by adding cables to
the parts list, as well as adding the same pointer arrows to the BSA
construction prompt for consistency with this change.

## Why It's Good For The Game

Seems like an oversight for the BSA to factor in space requirements
where the DNA vault, a similar multi-tile machine to not care in the
same way.

* Automatic changelog for PR #95346 [ci skip]

* Automatic changelog compile [ci skip]

* Generic surgical operations now have unique radial icons (#95470)

* Automatic changelog for PR #95470 [ci skip]

* Choice for reporting to an alternative url for issue reports (#789)

## About The Pull Request
<img width="597" height="478" alt="image"
src="https://github.com/user-attachments/assets/6b6740fe-6a3c-45c4-9e59-9c60a8e7ec34"
/>

## Why It's Good For The Game
Really common to tell somone "you should report this upstream" to
prevent us from having to manually upstream. This also makes sure that
when they do this, it still links back to said server for clarity.
Default option is the server your on, as without expertise its best to
still report it downstream first and let someone smarter decide to
upstream it.

## Changelog
:cl:
qol: You can now choose to report a bug upstream when making an issue
report
/:cl:

* Automatic changelog for PR #789 [ci skip]

* Automatic changelog compile [ci skip]

* Fishing supplies in stores (#782)

## About The Pull Request
Addes fishing supplies to the hardware and camping store. Camping store
(pictured on right) has more supplies/worms as you would expect it to be
better stocked then a hardware store.

<img width="906" height="654" alt="image"
src="https://github.com/user-attachments/assets/4a4bb5c8-5c62-46d1-aec6-ca88ff4098bd"
/>

Prices are pretty eyeballed and prob need tweaking
## Why It's Good For The Game
Bait is never much needed for fishing and the other supplies are nice,
specifically the auto-reel if your planning on chit-chatting while your
fishing.
## Changelog
:cl:
add: Fishing supplies can now be found in camping and hardware stores
/:cl:

* Automatic changelog for PR #782 [ci skip]

* Lock to_chat for doors is a notice (#786)

## About The Pull Request
Fix for to_chat + some minor code cleanup
## Why It's Good For The Game
It was missing any type of span, and i abstracted some code into a nice
proc.
## Changelog
:cl:
fix: lock/unlock of doors displays as a notice (blue)
/:cl:

* Automatic changelog for PR #786 [ci skip]

* fix

* Automatic changelog for PR #737 [ci skip]

* Revert "Fetch enlightenment directly from path" (#795)

Reverts DarkPack13/SecondCity#737 (because it was not squashed)

* Balancing clothes selling (#792)

## About The Pull Request

Adjusts the values of clothes' selling component so that one success =
you lose money, two successes = you break even, three successes = you
earn money on a finance roll upon selling that clothing item. this was
balanced around the cheapest item in the clothing store, since before,
during playtests, i was buying 750 $5 latex gloves and selling them for
like $15 per success.

## Why It's Good For The Game

balance


## Changelog

:cl:
balance: finance rolls for selling clothes are now much more fair
/:cl:

* Automatic changelog for PR #792 [ci skip]

* Fetch enlightenment directly from path. Take 2 (#796)

## About The Pull Request
Reverts DarkPack13/SecondCity#795
But we will be squashing it this time


Creates a helper proc to fetch enlightenment from the stat and removes
the enlightenment var on splat.
## Why It's Good For The Game
More consistent to just directly check a datum rather then the datum
having to set a var on a mob. which could be desyned if something else
(like the new for kindred splat) sets it.

* Bloodheal isn't instant, but if it is it rolls. (#790)

## About The Pull Request

Book has a delay for bloodheal but you can skip it and roll instead.
Modeled in this instance simply by doing anything to interrupt the
do_after.
<img width="524" height="412" alt="image"
src="https://github.com/user-attachments/assets/cc8b28dc-3c4a-48bc-abc4-b1ae6bc11ddd"
/>
## Why It's Good For The Game

Healing instantly from near-dead to full-health is unpleasant. This
makes it so you at least have to roll and risk your blood or even more
damage to do so.
## Changelog
:cl
balance: Bloodheal now has a delay, which can be interrupted to instead
roll for an instant bloodheal at risk of losing blood in a failure.
/:cl:

* Vendors in audit log are no longer prefixed with "the" (#95389)

## About The Pull Request

Uses `vendor.name` if possible, so it's referred to as "VendingMachine"
rather than "The VendingMachine"

## Why It's Good For The Game

Reads a bit better with all the entries presented

## Changelog

:cl: Melbert
qol: Audit log formats vendors without "the"
/:cl:

* Automatic changelog for PR #95389 [ci skip]

* Monkey Dust no longer can provide permanent stun immunity (#95464)

## About The Pull Request

Monkey dust now removes its related traits, including anti-stun, on end
metabolize regardless of whether the metabolizing mob is a monkey at the
moment or not. It also removes these traits & the martial art at any
point the metabolizing mob is not a monkey.

It doesn't remove the brain trauma unless the user is a monkey, however.
Otherwise, it would become just an actual medicine for the trauma. It
still kind of is, but with more effort involved. If only traumas held
sources.

## Why It's Good For The Game

fixes #91742
fixes #94403

## Changelog
:cl:

fix: Monkey dust now properly removes anti-stun properties when its
imbiber is no longer a monkey

/:cl:

* Automatic changelog for PR #95464 [ci skip]

* Removes a double space on to_chat for spray can (#95476)

* Automatic changelog for PR #95476 [ci skip]

* Corrects shoving someone into another person sending the "you shoved" message to the person who was shoved into (#95446)

* Automatic changelog for PR #95446 [ci skip]

* Gives subsystem controllers a bitfield def to make vv easier, renames their flags var (#95439)

* Automatic changelog for PR #95439 [ci skip]

* Automatic changelog compile [ci skip]

* Adds a 0 point quirk that turns your body into a recovered crewmember (effectively) on DNRing (#95469)

## About The Pull Request

Adds `Thanatorenasia`, a 0 point neutral quirk

Those with `Thanatorenasia`, upon DNRing, their body will be made into a
"recovered crewmember" - meaning when the body is revived, ghosts will
be polled and allowed to take control over it

The body will retain `Thanatorenasia` after the fact, so the new
controller can DNR as well, continuing the cycle

## Why It's Good For The Game

A random idea I had based on a recent interaction that I thought could
be cool character gimmick. Every time someone dies, they get revived
with a different player, so they act differently, think differently, and
don't remember the rest of the round.

## Changelog

:cl: Melbert
add: Adds Thanatorenasia, a 0 point neutral quirk that turns your body
into a "recovered crewmember" if you choose to DNR - meaning if revived,
any ghost could take control of it
refactor: Refactored "ghostrol on revive" behavior a fair bit, report
any oddities with it / the spawners menu
/:cl:

* Automatic changelog for PR #95469 [ci skip]

* Buffs blue and purple raptors a bit, and fixes chasm immunity bugs (#95414)

## About The Pull Request

Increases blue raptors' HP to 300, and makes purple raptors
automatically initiate flight if you are about to fall into a chasm
while wearing one on your back.

Also fixes 2 exploits involving chasms which would render you immune to
that particular chasm.

## Why It's Good For The Game

I've had some feedback on raptors, and more specifically how blue and
purples are rather underwhelming, former only being a single feature
from old raptors and latter not providing much of a benefit to
non-settlers. This should address both of those, making blues a bit
tankier and purples being able to save you from an instant death.

## Changelog
:cl:
balance: Blue raptors had their HP increased from 220 to 300
balance: Purple raptors now automatically start flying if the owner is
about to fall into a chasm.
fix: Fixed 2 exploits which would render you immune to falling down a
specific chasm.
/:cl:

* Automatic changelog for PR #95414 [ci skip]

* Automatic changelog compile [ci skip]

* Add blood splatter events to a few places (#95457)

## About The Pull Request

Adds `/datum/mood_event/splattered_with_blood` to two places you are
explicitly splattered with blood

## Why It's Good For The Game

Consistency 

## Changelog

:cl: Melbert
qol: More places causes the "splattered with blood" mood event
/:cl:

* Automatic changelog compile [ci skip]

* Tries to make door interactions more TTRPG-accurate (#793)

<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

Lockpick difficulty default changed to 5, as in tabletop.
Several doors raised numbers individually, numbers aren't exactly good
so just tell me what I should adjust.
Bashes are where primary changes are; you can now try them on any
strength (though you probably won't succeed on any door worth its weight
if you haven't invested in strength.)
Botches hurt you specifically, targeting your used arm (because it would
harm your shoulder.)
Reinforced doors are much harder to bash down now.
Bashing is now right clicking on combat mode and knock is left clicking
on combat mode instead of both being left click.

<img width="529" height="379" alt="image"
src="https://github.com/user-attachments/assets/ee08e60c-7778-4f4a-82e3-3cb1ecf67b2e"
/>

<img width="528" height="74" alt="image"
src="https://github.com/user-attachments/assets/21b2eedc-0619-489a-87b6-c8b4df1340fc"
/>

<img width="533" height="698" alt="image"
src="https://github.com/user-attachments/assets/a63f43c7-d83a-4885-bd25-2d57227633f5"
/>

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game

Honestly mainly I just thought that knock being replaced entirely with
bashing at strength 5+ is a bit confusing - I already encountered one
accidental bush as a result on the playtest (not me.)

This adventure lead me to just... make bashing available to everyone
except you need a lot of successes on reinforced doors and can hurt
yourself if you botch specifically.
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and its effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

:cl:
balance: Anyone can now bash doors, but bashing a reinforced door is
extra difficult.
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

* Automatic changelog for PR #793 [ci skip]

* Fixes git stale discord workflow (Again!!) (#95449)

## About The Pull Request
This is suffering. Tries to fix
[This](https://github.com/tgstation/tgstation/actions/runs/23323997716)
which occurs after #95415 was merged.

Apparently the output of the script had some secret information &
invalid variables which it could not store causing the announce workflow
to fail. So i filtered out only the essential components

I wish i had a way to test this workflow locally on my fork repo but i
can't. It's trial and error at this point.

## Changelog
N/A

* Adds a boolean type to circuits (#95487)

## About The Pull Request

A substantial number of number circuit ports, input and output alike,
effectively act as boolean flags. That is, they are either input ports
that only care about whether the value is or is not zero, or they are
output ports that can only output zero or one. This PR adds a boolean
datatype, and converts all these ports to booleans.

Anything can be connected to a boolean input port, effectively setting
the port to the truthiness of the input. Booleans can be connected to
number and signal ports, as they all use numbers as their underlying
values.

## Why It's Good For The Game

Having a proper boolean datatype makes the affected ports a bit more
intuitive to compute with.

## Changelog

:cl:
qol: Many circuit components have had ports that effectively act as
boolean inputs or outputs converted into a new boolean datatype.
/:cl:

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>

* Automatic changelog for PR #95487 [ci skip]

* Boxcutting wrapped packages returns less wrap (#95485)

## About The Pull Request

Currently, when you use boxcutters to cut open wrapped packages, you get
a full stack (25) of wrapping paper back, even though it takes at most 3
wrapping paper to wrap it in the first place, meaning you can make the
paper multiply infinitely. This PR changes that so you only get one
wrapping paper back.
## Why It's Good For The Game
If you use one wrap to wrap something, you should not get twenty five
wrap when unwrapping it
## Changelog
:cl:
fix: Fixed an oversight with package wrapping
/:cl:

* Automatic changelog for PR #95485 [ci skip]

* Gorillas can pick up kittens (#95481)

## About The Pull Request

<img width="293" height="292" alt="image"
src="https://github.com/user-attachments/assets/5803c1aa-1fbe-4c43-ada4-436830d7bacd"
/>

The proc involved with picking up other mobs had an "ishuman" check in
it, barring other mobs with hands from picking up mobs.
I don't know _why_ this was here but I _suspect_ that it's because
drones have hands and it is undesirable for drones to pick up other
drones.

In this PR I have changed it so that any mob with hands can pick up any
other mob that can be picked up, _as long as you are larger than the mob
you are trying to pick up_.
This prevents drones from picking up other drones, while allowing
gorillas to pick up drones (or kittens).

I think this also means that a wizard's dextrous guardian can pick up
Ian and put him inside its special pocket for a perfect spectral
kidnapping.

The size check is only applied to nonhuman mobs, because there aren't
any pickupable mobs by default that are as large or larger than humans
to exclude, and because admins would get mad at me if I removed the
ability for them to make humans able to get picked up by other humans on
a whim.

## Why It's Good For The Game

They can do it in real life
It's unintuitive for picking up other mobs to be exclusive to humans
without explanation

## Changelog

:cl:
add: Nonhuman mobs with hands can now pick up other mobs that are
smaller than them and can usually be picked up
/:cl:

* Automatic changelog for PR #95481 [ci skip]

* Fix soup bowl looping not working (#95494)

## About The Pull Request

`/datum/element/foodlike_drink` was not updated in the reagent
refactors, still called `attack` directly. Rather than patch it I
figured it was better to just integrate it into `/cup`, to make less
jank in general.

## Changelog

:cl: Melbert
fix: Drinking soup will loop until it's empty or you cancel it (as it
used to)
/:cl:

* Automatic changelog for PR #95494 [ci skip]

* Apply height filters to electrocution animation (#95455)

## About The Pull Request

The skeleton from being shocked matches your height.

## Changelog

:cl: Melbert
fix: The skeleton from being shocked matches your height
/:cl:

* Automatic changelog for PR #95455 [ci skip]

* [NO GBP] Corrects two issues with goodies and the ordering console. (#95478)

## About The Pull Request

Whoops.

~~I missed some nuance when I made #94483, namely that while I didn't
want players requesting CRATES like guns, grenades, spare SM shards with
their department budgets, the logic also touches goodies and private
orders meaning that players were unable to place goodie orders for
things that they may not have explicit access to do so, which is part of
the reason why you'd be ordering them privately in the first place. It's
cargo responsibility to determine if the player should/not be receiving
that item.~~
I have meditated on the issue, and I realize, nah, this is probably both
a healthier design decision as well as the reason we have things like
the black market in the first place. The core of the PR below however is
however sound.

ALSO, I made a fairly confusing mistake with the TGUI where the goodies
category just... hasn't been visible! That's on me.

## Why It's Good For The Game

Makes cargo goodies viewable. Makes cargo goodies purchasable.

Fixes #94928

🐛 💥 ‼️

## Changelog

:cl:
fix: Cargo goodies are now visible in the ordering and request consoles.
/:cl:

* Automatic changelog for PR #95478 [ci skip]

* Automatic changelog compile [ci skip]

* Fixes vitals display not respecting power upon being placed (#95427)

## About The Pull Request
Changing from `NO_POWER_USE` to any other power use apparently never
been handled properly. Which cause machinery to fail to knowledge their
new environment. So far only vitals display suffered from this since it
had complicated(ish) power related mechanics.

To handle this, we force update our machinery when we change our
use_power to anything other than `NO_POWER_USE`

## Why It's Good For The Game
Closes https://github.com/tgstation/tgstation/issues/95113

* Automatic changelog for PR #95427 [ci skip]

* Capitilized file extenstions for headshots are allowed (#800)

## About The Pull Request
See title.
## Why It's Good For The Game
Some bum ass software will save them capitalized, current code doesnt
allow those but unless im missing something they still render fine.
## Changelog
:cl:
fix: Capitilized file extenstions for headshots are allowed
/:cl:

* Automatic changelog for PR #800 [ci skip]

* Adds support for gags underclothing / Uses it to make them look less jank on lizards (#95454)

## About The Pull Request

1. Underclothes have all been repathed as
`/datum/sprite_accessory/clothing`

2. Underclothes now have support for GAGS. Currently it ONLY supports
static GAGS colors, ie only preset colors, however prefs support could
easily be added in the future

3. Uses the GAGS support to implement the existing digitigrade
templating system for some undergarmants - lizards will use a generic
template for their underclothings when applicable

Example

<img width="169" height="124" alt="image"
src="https://github.com/user-attachments/assets/30b6689b-13a4-4cf9-811c-0d5d0bd5da59"
/>

## Why It's Good For The Game

Existing undergarmants look really jank on lizards

<img width="170" height="140" alt="image"
src="https://github.com/user-attachments/assets/de0704e0-d403-4bdb-a4c5-432d704b9c99"
/>

<img width="118" height="102" alt="image"
src="https://github.com/user-attachments/assets/7ec47327-c2a9-4a90-aab5-fb57105d5111"
/>

I would like to solve this, and well... the two solutions are "we force
lizards to run around naked" or "we use the cool templating system". The
latter seemed preferable


<img width="165" height="125" alt="image"
src="https://github.com/user-attachments/assets/6a8e4225-10a4-4044-9a12-c220713cd613"
/>

I did yoink the template from the jumpsuit template so it might look too
similar, might need to tweak it

## Changelog

:cl: Melbert
add: Some undergarmants will now use a generic replacement on lizard
body shapes that fit more appropriately
refactor: Refactored how undergarmants generate their icons, report any
oddities with that
/:cl:

* Automatic changelog for PR #95454 [ci skip]

* Automatic changelog compile [ci skip]

* RTG code refresh (#95372)

## About The Pull Request

1. Mappers and admins can now VV RTG power without it breaking

2. Replace attackby usage

3. `base_icon_state` usage

4. Rewriting power in terms of watts

5. Grammar updates

## Why It's Good For The Game

These are mostly meant for events and mappers but they were relatively
difficult to use for events and mappers, requiring you made a subtype.

This just brings the code up to snuff to make them more usable.

## Changelog

:cl: Melbert
code: Cleaned up RTG code. Admins can now VV them easier. If you come
across a ruin on Lavaland or in space that uses them and see any odd
behavior, report it as an issue.
/:cl:

* Automatic changelog for PR #95372 [ci skip]

* Automatic changelog compile [ci skip]

* Gargoyle Statue Form (#705)

## About The Pull Request

Gargoyles can pretend to be statues

they do this when they frenzy as well

they can still be dragged around and hurt while in this form, its mostly
cosmetic

## Why It's Good For The Game

Statue rp is cool and being able to be in a public space with wings and
horns out as a cool gargoyley statue is dope

## Changelog

:cl:
add: readds Gargoyle Statue Form
/:cl:

---------

Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com>

* Automatic changelog for PR #705 [ci skip]

* Recalcuate buffs on stat changes (#794)

## About The Pull Request

Shifts the code around so that it calls the same proc it doesnt in pref
load that updates speed and health mods from stats.

<img width="497" height="343" alt="image"
src="https://github.com/user-attachments/assets/c7d006a8-7cfd-4a1a-8091-cd952edcf582"
/>
<img width="494" height="340" alt="image"
src="https://github.com/user-attachments/assets/32c17e64-8be5-45ef-afb4-bb2744388a43"
/>


I think this is a stealth buff to a few discs like celerity but there
default speed buffs can just be tweaked a little.
## Why It's Good For The Game
Right now stam is functionally useless from shifting crinos form and it
means they dont really get the "soak" they should.
This helps adress that and stuff that buffs dex.
Not my favorite peice of code however as it recalucates a bit wastefully
and should prob be made per stat rather then how it works rn.
## Changelog
:cl:
fix: Garou now properly get a small health boost according to the stam
bonus the forms provide
code: Updating a stat properly updates all modifers for stats
/:cl:

* Automatic changelog for PR #794 [ci skip]

* Vended glasses in the Beach Bar virtual domain count towards domain completion when drank (#95466)

## About The Pull Request

Previously, when one drank out of a glass of booze that the virtual
bartender graciously offered, one would not get any closer to domain
completion, because said bartender got his glasses new out of a vending
machine. These glasses never were registered on domain creation, due to
not existing on domain creation. This pr re…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants