Open
Conversation
8d146f3 to
5c70efa
Compare
a55feac to
188b3db
Compare
aa2e784 to
8869fbb
Compare
Jedi-Toothpaste
pushed a commit
that referenced
this pull request
Mar 19, 2025
…h a callback (#89752) ## About The Pull Request The title pretty much says it all. I'm told that this was done because, previously, the station would be exploded by the nuclear device - but when that was removed, all that remained was `qdel(bomb)`. That said, there's some bizarre stuff behind what pushed me to make this PR. See below if you want to know. <details><summary>Bizarre stuff</summary> For some reason, while trying to port <tgstation/tgstation#77868> over to Monkestation, I started getting hard-deletes for the nuclear bomb used in the `nuke_cinematic` unit test. ``` ## REF SEARCH Beginning search for references to a /obj/machinery/nuclearbomb/syndicate. ## REF SEARCH Refcount for /obj/machinery/nuclearbomb/syndicate: 7 ## REF SEARCH Finished searching globals ## REF SEARCH Finished searching native globals ## REF SEARCH Finished searching atoms ## REF SEARCH Found /obj/machinery/nuclearbomb/syndicate [0x201f850] in list Datums -> /datum/controller/subsystem/garbage [0x2100001c] -> queues (list) -> /list (list) -> /list (list). ## REF SEARCH Found /obj/machinery/nuclearbomb/syndicate [0x201f850] in list Datums -> /datum/callback [0x21057da8] (obj: Ticker proc: station_explosion_detonation args: ["the nuclear fission explosive"] user: null) -> arguments (list). ## REF SEARCH Finished searching datums ## REF SEARCH Finished searching clients ## REF SEARCH Completed search for references to a /obj/machinery/nuclearbomb/syndicate. ## TESTING: GC: -- [0x201f850] | /obj/machinery/nuclearbomb/syndicate was unable to be GC'd -- (ref count of 3) Error: /obj/machinery/nuclearbomb/syndicate hard deleted 1 times out of a total del count of 3 FAILURE #1: /obj/machinery/nuclearbomb/syndicate hard deleted 1 times out of a total del count of 3 at code/modules/unit_tests/create_and_destroy.dm:99 Error: FAIL /datum/unit_test/create_and_destroy 308.1s ``` This hard-del would happen on every integration test, no matter the map and no matter the byond version. I was even able to have it happen locally. Thing is, Monkestation only seems to have two differences in our code for actually exploding a nuke: 1. We mark some z-levels as safe from the nuclear bomb (so you can go to the lowest reaches of icebox and be safe from the bomb). This only modifies the list of z-levels to call the "gib everyone on z" code for. 2. We don't have tgstation/tgstation#75967 ported over - but making a new branch and cherry-picking both 77868 and 75967 didn't seem to fix the issue either. So something with how the callback is handled by the `play_cutscene` global proc is preventing this from being qdel'd properly - resulting in a hard-delete over five minutes after the nuke cinematic plays. I tried several things to understand why the callback was causing a hard-del, but only one gave me any tangible info - changing the reference to the bomb, into a weakref reference, which stopped the hard-del. However, I eventually realized the callback was entirely pointless - right now, all it does is qdel the bomb. So I just moved it from a callback to part of the `really_actually_explode()` proc. </details> ## Why It's Good For The Game I'd say it fixes a hard-delete, but that hard-delete was only happening on Monkestation. So I guess it removes a bit of unnecessary indirection? ## Changelog :cl:MichiRecRoom fix: Nukes will now always be deleted upon exploding, no matter if they have a valid cutscene to play. /:cl:
Jedi-Toothpaste
pushed a commit
that referenced
this pull request
Mar 19, 2025
…nced AI Upgrades (NovaSector#4936) * patch + design * minor spelling mistake * buff recipe cost a little bit * additional check if AI is inside * Apply suggestions from code review Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> * Modular + check 4 organics * Apply suggestions from code review Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> * Check deadstate + give languages + give synth emotes * Squashed commit of the following: commit b8e6ed2cb96e4cd1c43ca1203a8881eb67176431 Author: novasector-ci[bot] <181600888+novasector-ci[bot]@users.noreply.github.com> Date: Sun Mar 9 00:58:33 2025 +0000 Automatic changelog for PR #4988 [ci skip] commit 35f3a6fc9c654e30c8b1b08241c54277f4347a52 Author: RatFromTheJungle <62520989+RatFromTheJungle@users.noreply.github.com> Date: Sat Mar 8 19:58:09 2025 -0500 a 1 line change giving the blueshield's beret its armor values (#4988) 1 line commit b7e38d7b434b148dc3a47d662edacfd57421d853 Author: novasector-ci[bot] <181600888+novasector-ci[bot]@users.noreply.github.com> Date: Sat Mar 8 13:42:14 2025 +0000 Automatic changelog compile [ci skip] commit b7c4eb26b4b79e1924583be048461f7045188b90 Merge: d1eb3409478 d217cf32eff Author: Bloop <13398309+vinylspiders@users.noreply.github.com> Date: Sat Mar 8 06:45:06 2025 -0500 Batch of TG PRs 3/5 (#4985) ## About The Pull Request Currently includes up to and including `1b404098fd0` Closes #4872 ## Changelog AutoCL Included commit d217cf32effb0162d151d7617b5556ba8aec796f Author: Fluffles <piecopresident@gmail.com> Date: Thu Mar 6 15:57:55 2025 -0700 Modular changes for batch commit d1eb34094786cce4fbed6cfa35a2e8c2f4a80bd6 Author: novasector-ci[bot] <181600888+novasector-ci[bot]@users.noreply.github.com> Date: Fri Mar 7 19:58:00 2025 +0000 Automatic changelog compile [ci skip] commit 2ae4c0410dbb750e7c91c563c8ec7c3cc5dc0ce4 Author: novasector-ci[bot] <181600888+novasector-ci[bot]@users.noreply.github.com> Date: Fri Mar 7 17:53:10 2025 +0000 Automatic changelog for PR #4986 [ci skip] commit fff325650a8c5b12e4e4329a558db11979fa35f5 Author: thetaro <21stbrighthorizon@gmail.com> Date: Fri Mar 7 09:52:39 2025 -0800 makes strongarm not restricted to medical (#4986) * does the thing * curse of hardcoding?? idk this doesnt work * Update modular_nova/master_files/code/modules/cargo/packs/medical.dm Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> * it works im krilling someone --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> commit 490c743ec019c26c969e0acc3521e61c7128498b Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri Mar 7 10:33:34 2025 -0500 Bump robinraju/release-downloader from 1.11 to 1.12 (#4987) Bumps [robinraju/release-downloader](https://github.com/robinraju/release-downloader) from 1.11 to 1.12. - [Release notes](https://github.com/robinraju/release-downloader/releases) - [Commits](https://github.com/robinraju/release-downloader/compare/v1.11...v1.12) --- updated-dependencies: - dependency-name: robinraju/release-downloader dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> commit 26e4ddc0ff272bcfe326fe5b1d37ac765e2911a1 Author: novasector-ci[bot] <181600888+novasector-ci[bot]@users.noreply.github.com> Date: Fri Mar 7 14:55:07 2025 +0000 Automatic changelog for PR #4967 [ci skip] commit 7f761262c0149012a62c9aeefff3ee475de5b1be Author: thetaro <21stbrighthorizon@gmail.com> Date: Fri Mar 7 06:54:40 2025 -0800 changes the miecz firing sound to something more fitting (#4967) * gunsounds i did it * oops fixd lanca * rename and unused files removed * i forgot to save this before pushing woops * i think this works * new sound and attributions * Update attributions.txt --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> commit a68ccdf50d1a261f5738ba5e423a96d5db72f253 Author: novasector-ci[bot] <181600888+novasector-ci[bot]@users.noreply.github.com> Date: Fri Mar 7 01:09:29 2025 +0000 Automatic changelog compile [ci skip] commit 1369d6b8e0dac6740e70fa74fff3af226a71540f Author: novasector-ci[bot] <181600888+novasector-ci[bot]@users.noreply.github.com> Date: Fri Mar 7 01:00:52 2025 +0000 Automatic changelog for PR #4976 [ci skip] commit e2030154b6ed56915e1a46c7f4b25b432d5770ab Author: Yobrocharlie <Charliemiller5617@gmail.com> Date: Thu Mar 6 15:00:29 2025 -1000 Opens up the gateways (#4976) weh enables gateways commit 5ec757b2f12b6939dfeaf06ee6e7396c833b8c61 Author: novasector-ci[bot] <181600888+novasector-ci[bot]@users.noreply.github.com> Date: Fri Mar 7 00:49:55 2025 +0000 Automatic changelog compile [ci skip] commit 605a2df763c0c8ce1841dcc325f49a6f7f803364 Author: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Date: Wed Mar 5 22:46:46 2025 -0600 Fix some new sound runtimes (#89822) ## About The Pull Request - This sound was lower than the min  - Mechanical surgery seemed to cause a `null` preop sound runtime. This fix might be silencing a runtime, I'll have to look closer. - And `rustle_sound` could be `null`. I think this is actually a mistake, and the correct way to mute rustling is `do_rustle = FALSE`, but I feel like we could just delete that var and let people dictate it by setting it to `null` or not? For a follow up PR nevertheless ## Changelog :cl: Melbert fix: You can hear looping computer sounds again /:cl: commit 9e8a46be5b27badcf97946b4f5d073fc0131505d Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Thu Mar 6 04:47:06 2025 +0000 Automatic changelog for PR #89822 [ci skip] commit 0d61c3d28136119021999cc8e7e6531272f195fa Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Thu Mar 6 04:22:51 2025 +0000 Automatic changelog for PR #89855 [ci skip] commit 45221a0a6e7f060b047cf68c08ca1d1aa3b77015 Author: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com> Date: Wed Mar 5 23:17:46 2025 -0500 Fixes research hanging the MC (#89855) ## About The Pull Request So design disks and the techweb have this neat little thing called ```copy_research_to``` which chains three **highly expensive** procs together which only sleep during CHECK_TICK. So it piles all the bodies up in the corner and the Master Controller explodes trying to process a fuck load of procs and the speed of my autoclicker The entire research chain probally needs to be refactored to be less expensive, but for now a 5 second cooldown will hopefully give it plenty of time. You only need to click these buttons once. So the cooldown can easily be increased without much gameplay effect.  I didn't lag out on my local server using the debug disk so I think this is a fix. fixes: #89827 ## Why It's Good For The Game I'm sorry mr admin i crashed the server ## 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: fix: Design disks now have a cooldown when uploading to no longer crash the server. /:cl: --------- Co-authored-by: Lucy <lucy@absolucy.moe> commit 3edbca2a7b3937d65b073a249f055cea261b35f4 Author: itsmeow <itsmeow@itsmeow.dev> Date: Wed Mar 5 19:59:55 2025 -0600 Bumps rust-g to `3.7.0` (#89830) ## About The Pull Request Fixes for the not-yet-implemented GAGS and better 64bit detection Also I moved the SQL methods because they're in the wrong spot when you copy from the dmsrc output https://github.com/tgstation/rust-g/releases/tag/3.7.0 ## Why It's Good For The Game Routine update commit 9dc927fc49dae533947e1cf2d481a3fee561a4b6 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Thu Mar 6 01:25:27 2025 +0000 Automatic changelog for PR #89620 [ci skip] commit 77b284c26cc066c8c672d73f1f248152b14f8ea6 Author: necromanceranne <40847847+necromanceranne@users.noreply.github.com> Date: Thu Mar 6 12:25:06 2025 +1100 Last Resort is no longer innate power for changelings (#89620) ## About The Pull Request https://github.com/tgstation/tgstation/pull/86605 included a change to make last resort an innate ability for all lings. This PR reverts that specific change. ## Why It's Good For The Game In what is unfortunately the  of ling changes, this change in particular is fine on the surface until you consider that lings actually have a very, very particular interaction with one another. Killing and absorbing one another in order to improve their own power. If every single ling, upon death, can just explode immediately, there is no possible way for a ling to be absorbed by another ling under most any circumstance that isn't highly specific and that the majority of lings are not reliable affected by. Sleepy chems and stuff don't really stick to lings. Lings have the few remaining adrenals left in the game. And killing whatsoever and trying to absorb them will just result in you getting blown up. So, this interaction may as well be near impossible, and was already VERY difficult. This being as hard as it is means that lings kind of lose their antagonistic nature towards their own kind. The only good that can come from killing another ling is the removal of a ling from the round and to no benefit to you. That ling also cannot reasonably do the same to you, as you will also just explode and leave them with nothing for their efforts. This means that there is a much greater encouragement towards these lings working together instead. The game is more interesting if there is the potential for betrayal. So removing that aspect really cheapens the potential outcomes of inter-antagonist conflict. ## Changelog :cl: balance: Last resort is no longer an innate changeling ability. Changeling on changeling violence is back on the menu. (literally) /:cl: commit 3c18f9b8a59b5fbbcb4d3dfd71bcddcd06d4a4ac Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Wed Mar 5 22:17:13 2025 +0000 Automatic changelog for PR #89811 [ci skip] commit 820de1a2a2438a7677dd364b9845a49e6c863892 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Wed Mar 5 22:17:09 2025 +0000 Automatic changelog for PR #89777 [ci skip] commit 4cf94e1d1b4ac47ab1960aa2a3374fa25f2fe730 Author: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Wed Mar 5 23:14:23 2025 +0100 tg chat settings export and import (#89811) In rare cases, we could lose the telemetry or ready message. We'll now have a check to re-request once if we did not receive any telemetry. Also the chat was able to init before the setting were loaded, even though a rare condition, this could lead to the setting wiped. Recommending to TM, as our chat differs heavily from the original and I only gave it a short test. ## About The Pull Request ## Why It's Good For The Game ## Changelog :cl: fix: TG chat can no longer initialize before the settings loading was called qol: chat settings can be exported and imported /:cl: commit db4c4a9ed199499e052ecc4cc86b57432de10228 Author: harry <me@harryob.live> Date: Wed Mar 5 22:13:54 2025 +0000 fixes the chat audio player, typescripts it (#89777) ## About The Pull Request 516 broke the funny way we were playing audio before which was built for ie8 compatibility. this version works for both ie11 and wv2 ## Why It's Good For The Game for some reason we decided admins playing music was a good idea ## Changelog :cl: fix: the admin music player works again on 516 /:cl: fixes https://github.com/tgstation/tgstation/issues/88968 from (https://github.com/cmss13-devs/cmss13/pull/8606, but i know the guy so it's fine) --------- Co-authored-by: harryob <55142896+harryob@users.noreply.github.com> commit 27b659252103e4249849aa2ff7e2c79e56957f7e Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Wed Mar 5 13:25:51 2025 +0000 Automatic changelog for PR #89685 [ci skip] commit c7e78d69797faf3b52f916886de9f070f808cbc1 Author: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Wed Mar 5 14:25:33 2025 +0100 Follower hoodies can now be crafted (#89685) ## About The Pull Request Little band-aid atomized from my WIP refactor. As you can see from the code comments, it's not a definitive solution, but I can't handle it properly right now because I have so muh beef on the plate. ## Why It's Good For The Game Fixing stuff that no one cares about, yay... ## Changelog :cl: fix: Follower hoodies can now be crafted. /:cl: commit 2028ec27a2af2de911374bfde6c2b03dfb2c2566 Author: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Wed Mar 5 14:25:08 2025 +0100 Makes atmo pipes crafting recipes less copypasta-y (#89684) ## About The Pull Request It's both surprising and slightly infuriating that no one thought of this before. ## Why It's Good For The Game Code improvement. Atomized from my refactor. ## Changelog N/A commit b671e1e67c20e7ad3202b3edb82b734f4e0194a7 Author: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Wed Mar 5 14:24:35 2025 +0100 unblacklists botany fruits and vegetables from unit tests. (#89683) subtypes of `/obj/item/food/grown` have no reason to not be spawned by the `create_and_destroy` unit test, which prevents us from knowing if a type fruit or veggie doesn't have a set seed in the tests. The only path that needs to be blacklisted is the common `/obj/item/food/grown` path itself, since its seed variable needs to remain null so that we can be warned about any subtype that hasn't overriden that value. This PR also removes the `/obj/item/food/grown/shell` path which serves no purpose anymore. Backend improvements. Atomizing changes from my refactor. N/A commit 78a447280f2d119a198e2ed882a9101a0dd57157 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Wed Mar 5 13:04:09 2025 +0000 Automatic changelog for PR #89812 [ci skip] commit 22433e878c02ea17ea33b76fde57a010e6562113 Author: Singul0 <127663818+Singul0@users.noreply.github.com> Date: Wed Mar 5 20:03:49 2025 +0700 Buffs Borg Factory Spawned Cyborg Cells (#89812) ## About The Pull Request Atomization of #89810 incase it doesn't go through/while I work on rebalancing it. Buffs the cells cyborgs spawns with to T2 cells (the same level as rounstart cyborgs) instead of their potato battery they currently have ## Why It's Good For The Game Hopefully this makes the very cool borg factory module be more used, It used to be that this endgame module was onpar with doomsday, but people just stopped using it I guess. my wish is that, by increasing the cell charge the borgs spawns with it would incentivize AIs to actually do something else than just doomsdaying for once ## Changelog :cl: balance: Buffs the energy cells borg factory-spawned cyborgs spawn with (They are now T2 cells) /:cl: commit f1b91094f36f98e7e25d6d14e00ef3615de26154 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Wed Mar 5 01:51:37 2025 +0000 Automatic changelog for PR #89418 [ci skip] commit 6b77b31542c2b51900334247627bbabde1aad2f5 Author: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Date: Tue Mar 4 17:51:14 2025 -0800 Relative Config $imports (#89418) <!-- 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 When you import a config file inside a subdirectory, the config loader will now look IN that subdirectory, instead of exiting out to the parent folder. As a consequence, adds support for ".." to our deduplication system to avoid infinite loops due to headmin brain. ## Why It's Good For The Game jannies are on some shit wanna make their lives a bit nicer Note: I am testing on windows and also have only a loose grasp of how linux works, might fuck up in that environment idk ## 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: config: the config loader now supports relatively pathed imports (importing a file inside a subfolder now acts as if you were IN that subfolder) /: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. --> commit 498d5d1b0b15383977d46eacefb801544306e4ee Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Wed Mar 5 01:23:45 2025 +0000 Automatic changelog for PR #89786 [ci skip] commit ec646130c55ac0339831804469de67a37e792df4 Author: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com> Date: Tue Mar 4 17:23:24 2025 -0800 fixes chameleon IDs not actually making you untrackable by the AI (#89786) ## About The Pull Request No idea how long this has been broken for. ## Why It's Good For The Game its supposed to do this and it doesnt which is called a bug ## Changelog :cl: fix: chameleon IDs actually prevent AI tracking now /:cl: --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> commit 69f9d8a7d4c450635a70b16f083f1a087a68d7ea Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Wed Mar 5 01:16:07 2025 +0000 Automatic changelog for PR #89794 [ci skip] commit a474a0f60adab523e67fcf4580352bbf12608f62 Author: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Date: Tue Mar 4 19:15:46 2025 -0600 Fix Agender Random Names (#89794) ## About The Pull Request Fixes #89789 Any non-male genders got random'd. ## Changelog :cl: Melbert fix: Fixed random names always giving male names /:cl: commit 0c24bfb5e33c66d3d70c9c873cc9279538994008 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Wed Mar 5 00:27:25 2025 +0000 Automatic changelog for PR #89678 [ci skip] commit 59f139d9b0c268673bd37edabc70488696779241 Author: Lucy <lucy@absolucy.moe> Date: Wed Mar 5 00:27:06 2025 +0000 Various telepathic/remote messages are now labeled as "radio" chat messages (#89678) ## About The Pull Request This explicitly specifies `type = MESSAGE_TYPE_RADIO` in `to_chat` for various methods of communication (blood cult communion, abductor telepathy, xeno hivemind, golem resonator, blob telepathy, changeling hivemind, and binary chat), so that they will always be considered under the "Radio" category by tgchat. Also added `avoid_highlighting` to some, so they won't highlight your own messages. ## Why It's Good For The Game Makes going thru older messages find things that I accidentally missed much easier. ## Changelog :cl: qol: Messages from blood cult communion, abductor telepathy, xeno hivemind, golem resonator, blob telepathy, changeling hivemind, and binary chat are now considered "radio" messages by the chat, so they can properly be sorted via chat tabs. qol: Your own messages in blood cult communion, abductor/xenomorph/changeling hivemind, or golem telepathy will no longer be highlighted in chat (to prevent highlight spam whenever you talk if you highlight your own name, mainly) /:cl: commit cb4f171847072dfece5aee2db4c6b4ac17f85fc1 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue Mar 4 06:55:48 2025 +0000 Automatic changelog for PR #89715 [ci skip] commit fc42f9f7138e69b0f1db88d2e12a0596223d31c1 Author: Jacquerel <hnevard@gmail.com> Date: Tue Mar 4 06:55:26 2025 +0000 Adds missing apple interactions with jobs (#89715) ## About The Pull Request If you throw an apple at a doctor they will take 2 damage, successfully repelling them for another day. If you throw an apple at a scientist and hit them in the head, there is a small chance that they will suddenly have an impressive scientific insight. This chance is significantly higher if it falls on them from a higher z level, because that's going to happen in about 3 rounds ever. ## Why It's Good For The Game It's how apples work in real life and thus adds to our deep and complex simulation. ## Changelog :cl: add: Apples now react appropriately if they impact doctors or scientists under the expected circumstances. /:cl: commit 76da98cf274a37f52481070a1fb64258c46c7071 Author: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Tue Mar 4 07:53:22 2025 +0100 Fix config FPS/ Ticklag auto handling (#89792) FPS / Ticklag should be independent configs, but due to the use of `trim()` at https://github.com/tgstation/tgstation/blob/49f8d1e81dacfc75c635b13bf182edf1ce59df79/code/controllers/configuration/config_entry.dm#L116 the number we hand over will simply be turned into an empty string... https://github.com/tgstation/tgstation/blob/49f8d1e81dacfc75c635b13bf182edf1ce59df79/code/controllers/configuration/entries/general.dm#L223 https://github.com/tgstation/tgstation/blob/49f8d1e81dacfc75c635b13bf182edf1ce59df79/code/controllers/configuration/entries/general.dm#L241 No player facing changes ## About The Pull Request ## Why It's Good For The Game Timers can get fucked up when someone only sets one or the other currently... ## Changelog commit 55c10d5d9eea06432feeac1fb53f7866c0eba30d Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue Mar 4 01:52:16 2025 +0000 Automatic changelog for PR #89791 [ci skip] commit 0092d3b77b6b3b7b58b575581061888f14f15d97 Author: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com> Date: Mon Mar 3 17:51:49 2025 -0800 [No GBP] Fixes the battle of the titans (megafauna attacking eachother) (#89791) ## About The Pull Request Fixes megafauna attacking eachother fixes: #89788 ## Why It's Good For The Game haha funny logic fuck up ## Changelog :cl: fix: Megafauna should no longer attack eachother. /:cl: commit 37fa2bdc0587a68a2e5e8d3c002fadac4eed8709 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue Mar 4 00:36:36 2025 +0000 Automatic changelog for PR #89793 [ci skip] commit f23c4a2835bc5bfe8a163bf2292a841a539def04 Author: TJatPBnJ <69724863+TJatPBnJ@users.noreply.github.com> Date: Mon Mar 3 18:36:09 2025 -0600 buffs floor fries (#89793) ## About The Pull Request Fries dont rot on the floor ## Why It's Good For The Game cover the floor in french fries ## Changelog :cl: balance: French fries are now immune to the effects of the floor. I miss floor fries /:cl: commit 46127a5a9bbb6bb31492cbfc053059661486f7c5 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue Mar 4 00:10:57 2025 +0000 Automatic changelog for PR #89692 [ci skip] commit 69bd94a0f97540197e128d31634f1c08d506eab3 Author: MichiRecRoom <1008889+LikeLakers2@users.noreply.github.com> Date: Mon Mar 3 19:10:37 2025 -0500 `/datum/ai_behavior/execute_clean/finish_action` will no longer return early if the emagged phrases list is empty (#89692) ## About The Pull Request For some reason, `/datum/ai_behavior/execute_clean/finish_action` was coded such that it returns early if the list of cleanbot emagged phrases was empty (or null). This shouldn't be a problem with regular cleanbots - they come with emagged phrases already set. However, it makes this ai behavior unsuitable for use with non-cleanbot controllers (such as Monkestation's cleaner slimes - cute little slimes that will dissolve trash and blood!), as the statement to clear the `target_key` blackboard value was after this. This PR handles this by changing around the `if` statements - where we previously ended early if the emagged phrase list was empty, we now only perform an emagged phrase if the list has any length. (and if you're wondering - `length(null) == 0`) ## Why It's Good For The Game Avoids potentially buggy behavior on admin-made mobs (or those made by downstreams). Also has the benefit of makes the code shorter and easier to understand! ## Changelog :cl:MichiRecRoom fix: The cleaning AI behavior (generally used by cleanbots) will no longer return early if the list of emagged phrases is empty. /:cl: commit e7afb979cf18c202a008dfb28e51802c7493376a Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue Mar 4 00:09:55 2025 +0000 Automatic changelog for PR #89785 [ci skip] commit 89f810639fbe5a2a4ff927b851ab87bfeb1a3f50 Author: Rhials <28870487+Rhials@users.noreply.github.com> Date: Mon Mar 3 16:09:36 2025 -0800 Fixes 2 Small Typos in Autosurgeon Messages (#89785) ## About The Pull Request The first typo I saw in-game, the second one while I was fixing the first one. Bonus! :) ## Why It's Good For The Game Speaks words more good. ## Changelog :cl: Rhials spellcheck: Fixes grammar in autosurgeon use message. /:cl: commit 51cfd5dbce142935589ce0adbb3d801871595ce9 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Mon Mar 3 21:51:34 2025 +0000 Automatic changelog for PR #89723 [ci skip] commit 246642c1b51e733f59e454efbfa03931540a7555 Author: Lucy <lucy@absolucy.moe> Date: Mon Mar 3 21:47:25 2025 +0000 Allow more complex regex for chat highlights (#89723) ## About The Pull Request So, turns out, you couldn't actually do more complex regex in chat highlights, specifically because highlights got filtered by this regex: ```js const allowedRegex = /^[a-zа-яё0-9_\-$/^[\s\]\\]+$/gi; ``` I discovered this while trying to use negative lookaheads in regex (to avoid matching different last names, as an example), and that regex filtered it out due to the use of parentheses. I made it so the `allowedRegex.test(str)` isn't needed if the line is a regex (starts and ends with a `/`) ## Comparison **Regex**: ``` /Shio(?=n)/ ``` **Before fix**:  **After fix**:  ## Why It's Good For The Game i am a masochist who writes complex regex and want to use that in spess ## Changelog :cl: fix: Fixed more advanced regex-based chat highlights not working. /:cl: commit 0d479df2c14721a9264a9ccfcdf0fb60628e948f Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Mon Mar 3 15:03:46 2025 +0000 Automatic changelog for PR #89730 [ci skip] commit c6e5407b07220f3ba52ffa6a5580e7179e4245ea Author: Holoo <38228316+Holoo-1@users.noreply.github.com> Date: Mon Mar 3 17:03:25 2025 +0200 Adjusts default spell position for cult (#89730) ## About The Pull Request Cult spells don't overlap with second row of inventory Before:  After:  ## Why It's Good For The Game Better ui ## Changelog :cl: qol: cult spells no longer overlap with second row of inventory /:cl: commit 4f3f9589af37a28cc0a5c56c647169f060c976a1 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Mon Mar 3 15:03:07 2025 +0000 Automatic changelog for PR #89734 [ci skip] commit ff85aa9259b498e7d0571946b896e5c04d62d63e Author: Tim <timothymtorres@gmail.com> Date: Mon Mar 3 09:02:48 2025 -0600 Fix hauntinum reagent to work when exposed to item objects (#89734) ## About The Pull Request Hauntium would cause a bunch of runtimes if it was exposed to objects on a tile that weren't items. (structures, machinery, etc.) This was due to the element rejecting non-item objects and forcing a crash message. It also had used the wrong reagent volume settings to determine when it should remove the effect. This caused it to instantly remove the haunted effect as soon as it was applied. Although I would have loved to adjust the length of time per reagent to not be stupidly OP (20 secs per 1u) I feel like that's touching balance. ## Why It's Good For The Game Code that breaks is bad. ## Changelog :cl: fix: Fix hauntinum reagent to work when it is exposed to item objects. /:cl: commit c63b0dc5af8786290cf023073ed64a2cbec54db1 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Mon Mar 3 15:02:25 2025 +0000 Automatic changelog for PR #89704 [ci skip] commit 99ef833407a5e4ff2b18e8eaac3cc3fa649dd7da Author: jimmyl <70376633+mc-oofert@users.noreply.github.com> Date: Mon Mar 3 16:02:03 2025 +0100 some fixes for the heretic eldritch id (#89704) ## About The Pull Request first and primarily the ritual preserves the ID card used the id itself may not consume (and cant use in the ritual) non-advanced (advanced IDs are mainly the crew and whoever IDs) IDs because it wasnt intentional and it kinda breaks a few things and its such a super edge case to find a not advanced id and use it with the id closes #89697 ## Why It's Good For The Game makes the ritual not screw people over ## Changelog :cl: fix: the eldritch id (Lock path) now preserves the ID used. /:cl: commit f75c91fb7f804f657ab004a1eda538d952b4deb3 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Mon Mar 3 15:01:09 2025 +0000 Automatic changelog for PR #89711 [ci skip] commit 3d5369b1ede1cad12982578df898e66be955763b Author: jimmyl <70376633+mc-oofert@users.noreply.github.com> Date: Mon Mar 3 16:00:43 2025 +0100 prevents stripping in caretakers last refuge (#89711) ## About The Pull Request prevents stripping in caretakers last refuge ## Why It's Good For The Game fixes #89710 ## Changelog :cl: fix: prevents stripping in caretakers last refuge /:cl: commit adedad5450739913d968a87f089b12c75fcb1776 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Mon Mar 3 14:57:22 2025 +0000 Automatic changelog for PR #89752 [ci skip] commit 42bd391ae9d2ae41513b8a015aa70468c896f398 Author: MichiRecRoom <1008889+LikeLakers2@users.noreply.github.com> Date: Mon Mar 3 09:57:01 2025 -0500 Nukes now delete themselves, rather than having SSticker do it through a callback (#89752) ## About The Pull Request The title pretty much says it all. I'm told that this was done because, previously, the station would be exploded by the nuclear device - but when that was removed, all that remained was `qdel(bomb)`. That said, there's some bizarre stuff behind what pushed me to make this PR. See below if you want to know. <details><summary>Bizarre stuff</summary> For some reason, while trying to port <https://github.com/tgstation/tgstation/pull/77868> over to Monkestation, I started getting hard-deletes for the nuclear bomb used in the `nuke_cinematic` unit test. ``` ## REF SEARCH Beginning search for references to a /obj/machinery/nuclearbomb/syndicate. ## REF SEARCH Refcount for /obj/machinery/nuclearbomb/syndicate: 7 ## REF SEARCH Finished searching globals ## REF SEARCH Finished searching native globals ## REF SEARCH Finished searching atoms ## REF SEARCH Found /obj/machinery/nuclearbomb/syndicate [0x201f850] in list Datums -> /datum/controller/subsystem/garbage [0x2100001c] -> queues (list) -> /list (list) -> /list (list). ## REF SEARCH Found /obj/machinery/nuclearbomb/syndicate [0x201f850] in list Datums -> /datum/callback [0x21057da8] (obj: Ticker proc: station_explosion_detonation args: ["the nuclear fission explosive"] user: null) -> arguments (list). ## REF SEARCH Finished searching datums ## REF SEARCH Finished searching clients ## REF SEARCH Completed search for references to a /obj/machinery/nuclearbomb/syndicate. ## TESTING: GC: -- [0x201f850] | /obj/machinery/nuclearbomb/syndicate was unable to be GC'd -- (ref count of 3) Error: /obj/machinery/nuclearbomb/syndicate hard deleted 1 times out of a total del count of 3 FAILURE #1: /obj/machinery/nuclearbomb/syndicate hard deleted 1 times out of a total del count of 3 at code/modules/unit_tests/create_and_destroy.dm:99 Error: FAIL /datum/unit_test/create_and_destroy 308.1s ``` This hard-del would happen on every integration test, no matter the map and no matter the byond version. I was even able to have it happen locally. Thing is, Monkestation only seems to have two differences in our code for actually exploding a nuke: 1. We mark some z-levels as safe from the nuclear bomb (so you can go to the lowest reaches of icebox and be safe from the bomb). This only modifies the list of z-levels to call the "gib everyone on z" code for. 2. We don't have tgstation/tgstation#75967 ported over - but making a new branch and cherry-picking both 77868 and 75967 didn't seem to fix the issue either. So something with how the callback is handled by the `play_cutscene` global proc is preventing this from being qdel'd properly - resulting in a hard-delete over five minutes after the nuke cinematic plays. I tried several things to understand why the callback was causing a hard-del, but only one gave me any tangible info - changing the reference to the bomb, into a weakref reference, which stopped the hard-del. However, I eventually realized the callback was entirely pointless - right now, all it does is qdel the bomb. So I just moved it from a callback to part of the `really_actually_explode()` proc. </details> ## Why It's Good For The Game I'd say it fixes a hard-delete, but that hard-delete was only happening on Monkestation. So I guess it removes a bit of unnecessary indirection? ## Changelog :cl:MichiRecRoom fix: Nukes will now always be deleted upon exploding, no matter if they have a valid cutscene to play. /:cl: commit 33fdcdb30d1e6b11032b5b6a7fc48e522c61f683 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Mon Mar 3 14:15:27 2025 +0000 Automatic changelog for PR #89766 [ci skip] commit 0a8a6b7de9f9d4db66eada1818ea7949d98b5e3d Author: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon Mar 3 15:15:07 2025 +0100 some more 516 compat fixes (#89766) Ports the helpers from https://github.com/BeeStation/BeeStation-Hornet/pull/12240 This should fix some more of the 516 issues that I've seen while giving a quick check through the code The remaining browse should work now. Also fixing another sass warning while being on it. ## About The Pull Request ## Why It's Good For The Game ## Changelog :cl: fix: tgui say 516 will no longer change channels when the button is used to drag it fix: tgui say 516 will no longer leak radio messages into the wrong channel fix: runechat flickering when faded up messages fade out /:cl: commit 6a1c9a3e448d3734f858752564c47a9df9728021 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Mon Mar 3 14:00:59 2025 +0000 Automatic changelog for PR #89763 [ci skip] commit 7867404954c45a8f9a0182cac11beed2ce438a0f Author: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Mon Mar 3 15:00:36 2025 +0100 [NO GBP] Fixes external organs not being colored by colorful reagent (#89763) ## About The Pull Request Closes #89209 Also fixed clothing being colored on ingestion, and removed a nonfunctional check which I didn't notice because, well, it was nonfunctional (otherwise only splashing would color you, which isn't what I was aiming with the original PR) ## Changelog :cl: fix: Fixed external organs not being colored by colorful reagent /:cl: commit a1c575f7286286dc1f8e9cda59e1b46f38766a87 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Mon Mar 3 13:58:49 2025 +0000 Automatic changelog for PR #89478 [ci skip] commit e33fc5945d3536ee6f2b8b22fe4fd663d13353e0 Author: itsmeow <itsmeow@itsmeow.dev> Date: Mon Mar 3 07:58:27 2025 -0600 IconForge: rust-g Spritesheet Generation (#89478) Replaces the asset subsystem's spritesheet generator with a rust-based implementation (https://github.com/tgstation/rust-g/pull/160). This is a rough port of https://github.com/BeeStation/BeeStation-Hornet/pull/10404, but it includes fixes for some cases I didn't catch that apply on TG. (FWIW we've been using this system on prod for over a year and encountered no major issues.)  `/datum/asset/spritesheet_batched`: A version of the spritesheet system that collects a list of `/datum/universal_icon`s and sends them off to rustg asynchronously, and the generation also runs on another thread, so the game doesn't block during realize_spritesheet. The rust generation is about 10x faster when it comes to actual icon generation, but the biggest perk of the batched spritesheets is the caching system. This PR notably does not convert a few things to the new spritesheet generator. - Species and antagonist icons in the preferences view because they use getFlatIcon ~~which can't be converted to universal icons~~. - Yes, this is still a *massive* cost to init, unfortunately. On Bee, I actually enabled the 'legacy' cache on prod and development, which you can see in my PR. That's why I added the 'clear cache' verb and the `unregister()` procs, because it can force a regeneration at runtime. I decided not to port this, since I think it would be detrimental to the large amount of contributors here. - It is *technically* possible to port parts of this to the uni_icon system by making a uni_icon version of getFlatIcon. However, some overlays use runtime-generated icons which are ~~completely unparseable to IconForge, since they're stored in the RSC and don't exist as files anywhere~~. This is most noticeable with things like hair (which blend additively with the hair mask on the server, thus making them invisible to `get_flat_uni_icon`). It also doesn't help that species and antag icons will still need to generate a bunch of dummies and delete them to even verify cache validity. - It is actually possible to write the RSC icons to the filesystem (using fcopy) and reference them in IconForge. However, I'm going to wait on doing this until I port my GAGS implementation because it requires GAGS to exist on the filesystem as well. IconForge generates a cache based on the set of icons used, all transform operations applied, and the source DMIs of each icon used within the spritesheet. It can compare the hashes and invalidate the cache automatically if any of these change. This means we can enable caching on development, and have absolutely no downsides, because if anything changes, the cache invalidates itself. The caching has a mean cost of ~5ms and saves a lot of time compared to generating the spritesheet, even with rust's faster generation. The main downside is that the cache still requires building the list of icons and their transforms, then json encoding it to send to rustg. Here's an abbreviated example of a cache JSON. All of these need to match for the cache to be valid. `input_hash` contains the transform definitions for all the sprites in the spritesheet, so if the input to iconforge changes, that hash catches it. The `sizes` and `sprites` are loaded into DM. ```json { "input_hash": "99f1bc67d590e000", "dmi_hashes": { "icons/ui/achievements/achievements.dmi": "771200c75da11c62" }, "sizes": [ "76x76" ], "sprites": { "achievement-rustascend": { "size_id": "76x76", "position": 1 } }, "rustg_version": "3.6.0", "dm_version": 1 } ``` Universal icons are just a collection of DMI, Icon State, and any icon transformation procs you apply (blends, crops, scales). They can be convered to DM icons via `to_icon()`. I've included an implementation of GAGS that produces universal icons, allowing GAGS items to be converted into them. IconForge can read universal icons and add them to spritesheets. It's basically just a wrapper that reimplements BYOND icon procs. Converts some uses of md5asfile within legacy spritesheets to use rustg_hash_file instead, improving the performance of their generation. Fixes lizard body markings not showing in previews, and re-adds eyes to the ethereal color preview. This is a side effect of IconForge having *much* better error handling than DM icon procs. Invalid stuff that gets passed around will error instead of silently doing nothing. Changes the CSS used in legacy spritesheet generation to split `background: url(...) no-repeat` into separate props. This is necessary for WebView2, as IE treats these properties differently - adding `background-color` to an icon object (as seen in the R&D console) won't work if you don't split these out. Deletes unused spritesheets and their associated icons (condiments spritesheet, old PDA spritesheet) If you press "Character Setup", the 10-13sec of lag is now approximately 0.5-2 seconds. Tracy profile showing the time spent on get_asset_datum. I pressed the preferences button during init on both branches. Do note that this was ran with a smart cache HIT, so no generation occurred.  Much lower worst-case for /datum/asset/New (which includes `create_spritesheets()` and `register()`)  Here's a look at the internal costs from rustg - as you can see `generate_spritesheet()` is very fast:  **Before**  **After**  :cl: fix: Fixed lizard body markings and ethereal feature previews in the preference menu missing some overlays. refactor: Optimized spritesheet asset generation greatly using rustg IconForge, greatly reducing post-initialization lag as well as reducing init times and saving server computation. config: Added 'smart' asset caching, for batched rustg IconForge spritesheets. It is persistent and suitable for use on local, with automatic invalidation. add: Added admin verbs - Debug -> Clear Smart/Legacy Asset Cache for spritesheets. fix: Fixed R&D console icons breaking on WebView2/516 /:cl: commit f9059ed737f9ab53b8b650dc9d89ebbbbd865dad Author: novasector-ci[bot] <181600888+novasector-ci[bot]@users.noreply.github.com> Date: Thu Mar 6 11:24:57 2025 +0000 Automatic changelog for PR #4958 [ci skip] commit f1dcdcbc7995aed593aa561f943b0357052d18e6 Author: Winter Frost <98187980+RealWinterFrost@users.noreply.github.com> Date: Thu Mar 6 03:24:31 2025 -0800 Adds GAGs Support for Port Tarkon Uniform (#4958) * Turns tarkon uniforms to GAGS Support * General fixes for the uniform * Apply suggestions from code review Thank you vinyl! Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> * Apply suggestions from code review --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> commit 3609cfdf593e48fc090de486f52b103ee15a31d3 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Mon Mar 3 12:49:14 2025 +0000 Automatic changelog for PR #89755 [ci skip] commit 02e6b2d1fd1584c66432b40183dc78dbf8db924d Author: _0Steven <42909981+00-Steven@users.noreply.github.com> Date: Mon Mar 3 13:48:46 2025 +0100 Add screentips to big manipulators, move wire interactions to is_wire_tool(...) usage (#89755) ## About The Pull Request While working on another pr I noticed big manipulators didn't have screentips yet, so here we add those. In the process of doing _that_, I noticed we do some awkward usage of `wirecutter/multitool_act(...)` for interacting with wires, which doesn't actually cover the assembly use case of interacting with wires. So to solve this, we move it to checking for `is_wire_tool(...)` on `item_interaction(...)` instead, which actually runs for all of our wire-interacting items. ## Why It's Good For The Game screentips make everything less obtuse being able to actually open the menu with all the items we're supposed to be able to open the menu with is good, and the code is slightly less cluttered from having the wire tool logic in one spot than y'know several procs ## Changelog :cl: qol: Added screentips to the big manipulator. fix: You can actually open the big manipulator's wires UI while holding an assembly. /:cl: commit d4d7646cb3f71dac60ab8c52796a282bbf33cc76 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Mon Mar 3 09:35:40 2025 +0000 Automatic changelog for PR #89759 [ci skip] commit 807130d5f107f922a1163c287fc194587de2194e Author: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Mon Mar 3 10:26:52 2025 +0100 Fixes an old simplemob damage bug (#89759) ## About The Pull Request Literally every single bit of our code assumes that adjustXLoss returns the total health delta (old_damage - new_damage), so negative values when damage was taken and positive when it was healed, ***except*** simplemobs had this inverted for (supposedly) two years. Yeah. This broke crushers, mending touch and slime feeding - not sure if anything else was screwed due to this. Closes #87550 ## Why It's Good For The Game  ## Changelog :cl: fix: Fixed inconsistent crusher trophy droprates /:cl: commit 283658f42041525041d004ddc791c25f81ed95f7 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Mon Mar 3 05:04:43 2025 +0000 Automatic changelog for PR #89762 [ci skip] commit 63f39695170c087aa242edb9a7f08c48a74bf35a Author: MichiRecRoom <1008889+LikeLakers2@users.noreply.github.com> Date: Mon Mar 3 00:04:23 2025 -0500 Fix the component printer not showing item icons in its UI (#89762) ## About The Pull Request Whilst testing a PR for Monkestation, I found out the component printer wasn't showing icons for the items in its UI. This PR fixes that. In fairness, the icons don't really do much here - most of the component printer designs are the same icon (screenshot taken from monkestation):  But they're already in the asset datum, and it makes this UI look a little nicer, so why not use them? ## Why It's Good For The Game Makes this UI more consistent with other UIs that look like it (i.e. the protolathe). ## Changelog :cl:MichiRecRoom fix: The component printer now shows icons for the items in its UI. /:cl: commit 65b5bda77baec20beeebd77e4b28a9431c87eaa7 Author: MichiRecRoom <1008889+LikeLakers2@users.noreply.github.com> Date: Mon Mar 3 00:02:50 2025 -0500 Fix chem smoke runtiming when it tries to cancel its spread (#89750) ## About The Pull Request Chem smoke asks the smoke subsystem to cancel its spread, if it's qdel'd or otherwise reaches the end of its lifetime before it finishes spreading. However, an error in how chem smoke was coded causes it to queue spreading with the *foam* subsystem, rather than the *smoke* subsystem. This causes a runtime in SSsmoke, as it attempts to index into the spread carousel at a bucket index that was returned from SSfoam. This runtime actually happens spuriously during CI over on Monkestation. However, I only started noticing it because it kept appearing in failed runs on my fork - where I have the "Rerun flaky tests" workflow disabled. I was able to replicate the runtime locally, whilst debugging it on the Monkestation fork: 1. Tag any turf as the place to spawn the smoke at (I chose one right next to a door) 2. Use Debug -> Advanced ProcCall to spawn in chem smoke with a high range (`/proc/do_chem_smoke`, `range` = 10, `location` = the tagged turf) (Technically speaking, the high range isn't needed, but it makes it easier to trigger the runtime.) 3. Wait some time (I found that around 12 seconds worked on my machine, when using `range = 10`) 4. Do something to make the chem smoke start spreading (opening a door works) 5. Wait - if the chem smoke is still spreading when its lifetime is up, it will cancel its spread - and in turn, trigger the runtime. Following these same steps after the change in this PR seems to show that this fixes the runtime. ## Why It's Good For The Game Less runtimes = More gooder ## Changelog No player-facing changes. commit 958bf44b9e60ec24c548e263455e7562df947045 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Mon Mar 3 04:58:41 2025 +0000 Automatic changelog for PR #89749 [ci skip] commit a415c8d9edb4d7c21d6643bcb0370279f28c289c Author: Aylong <69762909+AyIong@users.noreply.github.com> Date: Mon Mar 3 06:58:21 2025 +0200 Fix random TGchat BSOD on 516 (#89749) ## About The Pull Request Fixing random chat BSOD on 516 Proof of BSOD  And also adds min image width, so icons will not make text "flexing" ## Why It's Good For The Game No BSOD on 516 ## Changelog :cl: fix: Fixed random chat BSOD on Byond 516 /:cl: commit 3c9fdaf2246080f877a36989dcd00c1052ba5836 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Mon Mar 3 04:58:07 2025 +0000 Automatic changelog for PR #89773 [ci skip] commit 04ca4d0fb29a3c49c6625498657b7996221cf136 Author: adamsong <adamsong@users.noreply.github.com> Date: Sun Mar 2 23:57:44 2025 -0500 Fixes borgs not being able to navigate through access restricted doors (#89773) ## About The Pull Request Currently if a borg attempts to use nav to access a waypoint in a restricted area of the station (brig for example) it will fail with "no valid path with current access" because get_access on a borg return nothing because they don't have an ID. get_access for silicons will now return all station accesses. ## Why It's Good For The Game Borgs need to find things, and not being able to nav into any restricted areas is annoying. ## Changelog :cl: add: Added the ability for borgs to pathfind into and through restricted areas. /:cl: commit 27a278a3bd0534a4c95d2dd75e752c098f1418ce Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Sun Mar 2 15:48:09 2025 +0000 Automatic changelog for PR #89709 [ci skip] commit a6fa723228c7b7b60c9dd2ac2e8f01c656e05ff1 Author: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com> Date: Sun Mar 2 07:47:46 2025 -0800 removes wildcard limit from agent IDs (#89709) ## About The Pull Request With the trim system added years ago, agent IDs have become essentially worthless. This is because they can only hold SIX COMMON ACCESSES, TWO COMMAND ACCESSES, AND ONE CAPTAIN LEVEL ACCESS. This leads to the current situation, where agent IDs are essentially legacy content included in certain bundles like Contractor, but ultimately go entirely unused, with players instead opting to simply steal ID cards off of people and juggle them around. This PR makes them act more like they used to, where scanning an ID with one will let you take all of the access codes on the ID card, and add them to your agent ID. ## Why It's Good For The Game Having your ID card stolen is extremely frustrating. It's also very frustrating for traitors to need to carry literally a box of stolen ID cards to have access to various parts of the station, and it also hinders stealthy gameplay, since the stealthy ID card doesn't actually hold access. ## Changelog :cl: balance: wildcard limits have been removed from Agent ID cards balance: the specops crate gets a variation of the agent ID card which can only hold limited access (same as it is now) /:cl: # Conflicts: # code/game/objects/items/cards_ids.dm commit 4391c8c1dba6fe0ee1476dde9fa6608b8881681e Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Sun Mar 2 14:17:25 2025 +0000 Automatic changelog for PR #89757 [ci skip] commit f853b706f5874c78861180cc07f029e6475c0e72 Author: subject217 <38303698+subject217@users.noreply.github.com> Date: Sun Mar 2 08:17:03 2025 -0600 Contractor Kit out of lowpop (#89757) ## About The Pull Request Contractor Kit is only available on a population greater than the config defined lowpop number. ## Why It's Good For The Game Antags on lowpop are impossible to balance, since there's usually few or no security or headstaff. Contractor Kit allows access to extremely strong tools that give a huge advantage in one-on-one combat, meaning that it's very easy and common for them to basically run unopposed in lowpop. This is happening more now, because of the removal of progtot has made the contractor kit a more popular option, being the remaining progression based choice for traitors. Lowpop murderboning is against the rules now on all servers, for good reason. And the reason why I think Contractor Kit doesn't belong on lowpop either is for very similar reasons. In higher pop where there is adequate security, it's good enough to have antags that create conflict and incentive to capture or kill them, and they don't really need to be creative about how they antag. In lowpop though, the lack of meaningful opponents for an antag makes it functionally an auto-win. The problem with Contractor Kit in particular, is that for everyone else on the station, it's a misery-generating machine. It makes Cargo impossible to play as you will constantly have 0 credits, and everyone on the station is regularly getting their 5 minute timeouts to the punishment zone. The fun of antags for the station as a whole is in the struggle for who will win, not an antag winning on minute 1 and subjecting everyone else to your shit until they call the shuttle. Even an antag who has won can theoretically be interesting with a gimmick, but much like how ProgTot incentivized traitors to play in a boring manner, Contractor Kit mechanically incentivizes people who take it into playing in a boring way. Some people think that the kit is too powerful, but I think a good start right now is simply to get it out of lowpop. ## Changelog :cl: balance: Contractor Kit is no longer available in lowpop. /:cl: commit e6910c1b15971d4f658aef94f899dc6f9025f101 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Sun Mar 2 12:27:23 2025 +0000 Automatic changelog for PR #89751 [ci skip] commit e7dc83defd9c6d442ae9d4f3d3240e77b93ce4ee Author: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Sun Mar 2 13:26:47 2025 +0100 Breaks up mining loot into multiple files, refactors the hierophant club (#89751) Splits up tendril_loot.dm and megafauna_loot.dm (both over a thousand lines long) into group/item specific files, and megafauna-specific files respectively. Also pulls a few loot items scattered around the codebase into those files as well. Additionally while doing so I've cleaned up the code for some of them, and rewrote the hierophant club's code because it was abominable and a potential source of harddels. Its absolutely unnavigateable. :cl: code: Split and cleaned up mining loot's code refactor: Refactored the hierophant club. fix: Hierophant club's beacon no longer can go missing (until you try using it) /:cl: commit cd37c1cf81969172af6db0ccaedfc7dbdc666b9c Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Sun Mar 2 12:15:26 2025 +0000 Automatic changelog for PR #89687 [ci skip] commit 960d937fc25bbbfbe11815bce6ed8da24fe5c93f Author: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Sun Mar 2 13:15:08 2025 +0100 The edible component now uses DUPE_SOURCE mode (#89687) ## About The Pull Request The edible component now uses DUPE_SOURCE mode, which is needed to avoid conflicts between sources. This includes some other tidbits from my refactor like renaming dcs/flags.dm to ds/declarations.dm (in virtue of the fact it doesn't only contain flags anymore even before this PR), meat materials giving protein and fat reagents to affected atoms instead of generic nutriment and oil, and the pizza material no longer containing meat, because margherita pizza, which the material is extracted from, doesn't contain meat either. The pepperonis were magically conjured space bs. ## Why It's Good For The Game There are multiple sources of the edible component and we don't want issues with that. Also atomizing stuff from my refactor. ## Changelog :cl: balance: objects made out of meat are no longer classified as gross food on top of being raw and meaty, and actually contain protein and fat instead of standard nutriment and oil. balance: the pizza material stacks, crafted with margherita pizza and rollig pin mind you, no longer magically contain pepperoni. /:cl: commit 7d9adc9427c742aff7a5f68e74678da157c20797 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Sun Mar 2 11:42:10 2025 +0000 Automatic changelog for PR #89746 [ci skip] commit 4a3957e31ca7f5597b777ffba6a67f458ba02351 Author: TiviPlus <57223640+TiviPlus@users.noreply.github.com> Date: Sun Mar 2 12:41:32 2025 +0100 Make too low vols and no soundin scream for playsound instead of failing silently (#89746) …ing silently ## About The Pull Request While reviewing the recent sound optimization PR I noticed that a bunch of checks here really make no sense to just fail silently when nobody should be doing this in the first place Immediately started screaming on run so thats a good sign ## Changelog :cl: code: previously silent failures due to empty sounds or too low volumes will now create a runtime in the runtime log fix: some footstep sounds like robotic or slimes are no longer silent /:cl: --------- Co-authored-by: TiviPlus <572233640+TiviPlus@users.noreply.com> commit 73451ab44ef22bd5b7e3c629ab0671cbc2c47d18 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Sun Mar 2 11:40:35 2025 +0000 Automatic changelog for PR #89743 [ci skip] commit 41b5fdaae43d74ff2b3fe38d5afb2f397e5e0cc3 Author: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Date: Sun Mar 2 05:40:16 2025 -0600 Replaces the holofirelocks in Icebox Botany with walkable plastic flaps (#89743) ## About The Pull Request As before. ## Why It's Good For The Game Bit less magical than the holofirelocks (well, depending on who you ask) ## Changelog :cl: Melbert qol: [Icebox] Botany's Holofirelocks are now walkable plastic flaps /:cl: commit 6fba259164d049ca4b01bd39e5abb0067581c2b2 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Sun Mar 2 05:09:49 2025 +0000 Automatic changelog for PR #89753 [ci skip] commit 961767f2f6e41d7c5bc5d8207e49f77bb193806b Author: _0Steven <42909981+00-Steven@users.noreply.github.com> Date: Sun Mar 2 05:44:38 2025 +0100 Harvesting botany plants now uses `drop_location()` instead of `loc` (#89753) ## About The Pull Request So previously harvesting botany plants would use `user.loc` if you were adjacent. This, however, caused the issue where a monkey hardworker on a ~~bug~~ big manipulator harvesting plants would send them directly into the contents of the big manipulator they're riding. Here we just make it use `drop_location()`, so it actually drops in a valid location. ## Why It's Good For The Game Fix jank :+1: ## Changelog :cl: fix: Harvesting botany plants actually uses the right drop location. Botany plants harvested by monkey hardworkers on big manipulators harvesting using a full plant bag no longer puts the resulting items inside of the big manipulator. /:cl: commit 97cf397b38a5042a8ef094ab988980ebd6e5f6e8 Author: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Sun Mar 2 03:34:59 2025 +0000 Automatic changelog for PR #89748 [ci skip] commit 238575bdd0e9a1f76…
25706b4 to
39523c0
Compare
354d20e to
ab9cc9f
Compare
a7e95ab to
95defb7
Compare
7aacaad to
9cbdb28
Compare
a2f46a9 to
d92ff4b
Compare
d92ff4b to
b6ce8c5
Compare
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.
This pull request updates the TGS DMAPI to the latest version. Please note any changes that may be breaking or unimplemented in your codebase by checking what changes are in the definitions file: code/__DEFINES/tgs.dm before merging.
Full changelog can be found here.
redefined_proclint. ([MIRROR] Fixes the RnD console by adding a removed import NovaSector/NovaSector#2058 Cyberboss)#tgs-dmapi-release