Fetch enlightenment directly from path#737
Merged
chazzyjazzy merged 11 commits intoDarkPack13:masterfrom Mar 22, 2026
Merged
Conversation
chazzyjazzy
requested changes
Feb 27, 2026
Contributor
|
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. |
…o weird-morality-mistake
Contributor
XeonMations
approved these changes
Mar 16, 2026
…o weird-morality-mistake
chazzyjazzy
approved these changes
Mar 21, 2026
Contributor
chazzyjazzy
left a comment
There was a problem hiding this comment.
looks good but merge conflicts
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 /> [](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…
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

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: