Darkpack Pull 8/7/2026 - #137
Merged
FalloutFalcon merged 449 commits intoAug 8, 2026
Merged
Conversation
## About The Pull Request This duplicated the cost for reacting to this in overlay light for.... no reason. ## Why It's Good For The Game People have been saying this
## About The Pull Request - Delete the `smash` override on `/obj/item/reagent_containers/cup/glass/bottle/juice/smallcarton` because I have no idea why it exists, cartons of juice shouldn't be smashing into glass - Remove the mob type check in `/obj/item/reagent_containers/cup/glass/throw_impact` because `smash` takes `atom` now - Refactor `smash` to take `atom/thrower` and add an `ismob` check where needed - Break the two args passed to `splash_reagents` into separate vars because the call was getting really long with the ternaries - Add a `post_smash` proc called at the end of `smash` but before the `qdel` - Change `/obj/item/reagent_containers/cup/glass/bottle` to use `post_smash` so it doesn't have to duplicate a bunch of code from `smash` ## Why It's Good For The Game Glasses only smashing if a mob threw them (because of the type check in `throw_impact`) is stupid. Closes #97080 ## Changelog :cl: add: Glasses will always smash when thrown around, not just if thrown by a mob /:cl:
Co-authored-by: CabinetOnFire <CBF>
## About The Pull Request Retypes all human inventory variables to just ``/obj/item`` and adds typechecks in places that assumed their type. CASTING_CLOTHING is now a trait and not a clothing flag, and MODsuit themes can now apply traits to their parts. Glasses now use signals to update wearer's vision flags rather than being snowflaked in update_sight() code ## Why It's Good For The Game One step closer to datumized inventories. ## Changelog :cl: refactor: Brought down all inventory slots on humans to /obj/item /:cl: --------- Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com>
## About The Pull Request Moves the Loader MOD outside of the QM's office in Delta Station, and replaces the vacant space with a plant. <img alt="image" src="https://github.com/user-attachments/assets/edc75c16-d318-4016-a0f8-aced05f84505" /><img alt="image" src="https://github.com/user-attachments/assets/a6e49088-ec0d-42de-ab26-f468f9c1677d" /> ## Why It's Good For The Game Makes Delta consistent with every other map, such as Meta, where the Loader MOD is accessible to ordinary Cargo Techs <img alt="image" src="https://github.com/user-attachments/assets/cbcd6a80-c0d6-4429-9723-e67eda83e7e3" /> ## Changelog :cl: map: Moved Loader MODsuit outside of QM's office in DeltaStation /:cl:
…magazine. (#96856) ## About The Pull Request Crafted pipe guns and pistols no longer come with additional junk shells out of the blue. The junk shells have their own recipe, which requires different components than those guns! As for the regal condor, I've reduced the amount of items and time needed to craft the it. This PR also introduces code to make it possible to transfer magazines and ammo over to the new crafted gun if one or more of the components used in the recipe are is a gun with compatible magazine/ammo. This means that any junk shell in the pipegun used to craft the regal variant will be transfered over to the new, better pipegun instead. As for the makarov used to make the regal condor, its magazine and chambered casing will be ejected on the floor in the process. ## Why It's Good For The Game Consistency, however it's also required by #96833 (which is why I'm making the change to regal condors at all! It's the easiest solution!). I've made this into a separate PR because it's a bit of a balance change, especially for pipeguns. ## Changelog :cl: balance: Crafted pipe guns and pistols no longer come preloaded with junk shells out of the blue when crafted. As for the regal pipegun, it will instead inherit the junk shells present in the pipegun used to craft it. balance: The regal condor no longer has a magazine when crafted. I've reduced the amount of items and time needed to craft it to make up for it. /:cl:
## About The Pull Request I noticed legion infested corpses ate up a lot of ms trying to spawn corpses. I noticed they were setting species 3 times because they were: 1. setting it when spawning the human 2. Setting it in the mob spawner object 3. Setting it in the outfit All of these would replace body parts which is expensive ## Why It's Good For The Game less overtime when killing legions (and spawning corpses) ## Changelog :cl: code: Improved performance of corpse spawners /:cl: --------- Co-authored-by: CabinetOnFire <CBF>
## About The Pull Request `setGrabState` relies on `pulling` to be set to work ## Changelog :cl: Melbert fix: Fix perma stun from grabs /:cl:
## About The Pull Request Modified version of [this PR](NovaSector/NovaSector#7699) that I figured I might as well try pushing to tg even if it's unlikely to get merged. Basically, spacers can choose their height. Unlike the nova version, there is no "random" option and you can't pick any height option in between taller and tallest (tallest is the current spacer height, taller was the height when they were originally added).
## About The Pull Request This PR cuts down on the unpredictability of diseases by requiring diseases to advance twice to advance once, and standardizing the range of advanced disease symptoms. All diseases, including simple ones, had their chance of advancing in stage doubled but only actually move up a stage every other advance. This means that virology is now weighted more heavily towards the middle "bell curve" in terms of effectiveness. The worst and best luck are equally less likely. Secondly, advanced diseases also have had their symptom delays standardized from a min value and a max value into a single average value and another that determines the range. Most symptoms had a range of around +33% to -33%, with some going as far as +75% to -75% delay. After this change, viruses have a range of +25% to -25%, with some exceptions (the super variable symptoms had their delays set to 35% and 40%, for example). This will made dying from a disease more of a straight line instead of a roller coaster. ## Why It's Good For The Game RNG is very important to bad diseases, but it's at the point where the same disease can cause wildly different results because of the massive amount of interacting randomized effects. Viruses have a chance to advance forwards each tick, a chance to advance backwards each tick, and each symptom has a randomize delay between activations in order to deal a randomized amount of damage to the host. This makes them a headache to test and I can't imagine they're much fairer in an actual round.
## About The Pull Request Infections from a disease similar to one you already recovered from have slower symptom activations and a stronger natural recovery. Specifically, each symptom you're immune to will have a 1.75x longer delay between activations and add 1.2 to recovery_prob before the sleeping multiplier. This does NOT replace the current immunity system and does not affect simple diseases. If a symptom is neutered you will not gain nor benefit from immunity to it. Eternal Youth, Necrotic adaptation, and Inorganic adaptation are exempt from this system. Viral evolution and Viral adaptation are now ALWAYS neutered, which effectively makes them exempt as well. It also helps communicate to the player that they're basically already neutered. ## Why It's Good For The Game I think this change would be a good step towards eventually buffing virology (or not, if that isn't wanted) because one of the valid arguments holding it back is that virologists (referring to any medical doctor that is working on virology, not the actual job) can churn out 5 nearly identical copies of a disease and make curing them a headache. Curing the same disease 5 times in a row is boring, but curing 2 or 3 completely different diseases (because they take longer to make) with different effects and cures is more fun. It also better communicates to the victims of a pandemic what exactly is going on. If you catch a similar virus to one you previously had, you might get confused and think you never got immunity, but now that won't happen. Yes, you can infect yourself intentionally to build resistances. I don't think that should be possible but it's definitely not practical even for one person let alone an entire crew considering you'd have to basically be constantly spreading non neutered harmful diseases.
…(#96555) ## About The Pull Request Continuation of #92228 TL;DR of that pr - AI Upload is now home to a "Module Rack". This concept is inspired by the Goonstation "Law Rack", but heavily modified, with concepts like "core law module" / "core module slots", and portable law racks. - The module rack holds law modules, determining the lawsets of all silicons linked to the rack - The module rack also holds upgrade modules, applying upgrades to all linked relevant silicons (such as combat upgrades) - To subvert AIs, you can construct a portable law rack and remotely connect it to the core rack What changed since then - The portable module racks were split in two. There are now "base module racks" (standard, core, small), which can have silicons connected to them, and "broadcaster module racks" (just small) which can connect to base racks. Base racks cannot connect to other base racks and broadcast racks cannot have silicons linked to them. - Broadcaster module racks are still susceptible to ion storms. - Base module racks will not update their lawsets at all while depowered. If they lose power, the lawset will be "frozen" on whatever was in the rack the last time it was powered. - Broadcaster module racks will not broadcast their modules while depowered. If they lose power, its laws will be removed from the parent (so long as the parent is not also depowered). - If a base module racks change z-level to a "distant z-level", it'll disconnect linked silicons. If a silicon changes z-level, however, they will not be unlinked. - Base module racks can no longer remotely unlink portable (now broadcaster) module racks, you have to follow the GPS to the rack and neutralize it or install a counter law. - Base module racks no longer list out what racks are connected (broadcasting) to it, but instead list out how many modules are being supplied by broadcast. - Upload access is no longer needed to unlink silicons from base law racks. <img width="396" height="575" alt="image" src="https://github.com/user-attachments/assets/b53db1f5-b9f6-4656-90a0-564ac091ce5b" /> <img width="406" height="273" alt="image" src="https://github.com/user-attachments/assets/ef5b7470-2748-4d75-b8a6-d0cf47a10c01" /> ## Why It's Good For The Game See original PR for more details A big hang up I had with the original implementation was I didn't like the way portable racks worked, I thought it was clunky having a rack that could both connect to another rack and to silicons So I sat on it a bit, until ultimately I decided just to split them up. Broadcaster module racks are now designed explicitly for remove law adjustments. They can't link to AIs or silicons at all. Small module racks are designed for making one-off lawsets for cyborgs or suit AIs. Standard module racks are designed for off-station or secondary station AIs. Core module racks are for the main station AI. Newly constructed station AIs will auto-link to the first core rack found if you don't use a multitool to point them at a specific rack. ## Changelog :cl: Melbert add: The AI and Cyborg upload computers have been replaced with module racks, a physical manifestation of AI laws. add: To subvert an AI, you can print a "broadcaster law rack" to remotely link to the station's "core law rack". Modules in the portable law rack will be applied on top of the core law rack's laws. Don't worry, hacked laws are still applied with priority. add: Upgrades for the AI, like combat upgrades, are now applied via a module rack instead of hitting the AI core. add: Ion storms will now damage law modules housed in module racks, requiring manual maintenance (a multitool). del: You can no longer upload a AI laws directly to AI cores, active or mid construction. You can use a multitool to pre-link AIs to racks, otherwise they will automatically connect to the station's core rack (or nothing, if offstation). del: Removed "law priority" from freeform laws add: TGUI "state laws" window refactor: Refactored silicon laws in its entirely, report any oddities /:cl:
so tgstation/tgstation#97014 got rid of the `symptom_delay_min` and `symptom_delay_max` vars tgstation/tgstation#96968 has code that used those vars these were both merged in succession. master is now broken :( ``` code/datums/diseases/advance/symptoms/symptoms.dm:64:error: symptom_delay_min: undefined var code/datums/diseases/advance/symptoms/symptoms.dm:65:error: symptom_delay_max: undefined var ``` this fixes it, simple enough.
## About The Pull Request Lockers lazyload their contents so any album in a locker didn't load persistence ## Why It's Good For The Game Fix a bug that's been in the game for years now ## Changelog :cl: PapaMichael fix: Departmental photo albums now properly save their photos between rounds /:cl:
… options experience in VS code and makes some of our build flags more granular (#96809) ## About The Pull Request Adds support for this new extension https://github.com/CabinetOnFire/tgbuildflags (Which should be moved under the tg repo probably? (and probably publish since I figured theres a repo account for this?) Basically, this extension allows us to define all the defines and presets we have for compile_options in a new build_flags.json, which the extension then reads and uses to populate a bunch of checkboxes to control the compile params we usually either manually set by uncommenting defines or by running a preset (which are annoying because it means we're limited to the specific pre-made permutations) <img width="728" height="813" alt="image" src="https://github.com/user-attachments/assets/ec04355f-7d43-4eb7-a153-95f6f66f8538" /> I left the existing tasks as is, in theory they could be removed, but I figured not everyone uses extensions so I shouldn't nuke them. Let me know if there's an issue with this. I also removed low memory mode and absolute minimum, instead turning them into more granular flags (while still making sure the presets correctly set those flags), since theres situations where you want to test specifically space zlevels or lavaland, but nothing else. then you can still select that as an option Low Memory Mode is now: "-DSKIP_LAVALAND", "-DSKIP_SPACE_LEVELS", "-DFORCE_MAP=\"runtimestation\"" and absolute minimum is: "-DSKIP_LAVALAND", "-DSKIP_SPACE_LEVELS", "-DAUTOSTART_GAME", "-DMINIMAL_CENTCOM", "-DFORCE_MAP=\"runtimestation_minimal\"" ## Why It's Good For The Game This means you dont have to dig through compile_options to find out what define you need to uncomment, and you dotn accidentally submit said changes to your branch (woops) ## Changelog :cl: code: Adds debug flags that can be selected when building in VS code /:cl: --------- Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request Nossie wont get ripped out of deathmatches and other spawns. <img width="941" height="987" alt="image" src="https://github.com/user-attachments/assets/571e8efe-1a5a-431d-845f-7d6751f449d9" /> I can also set my own loadout items and if they protect you, your shit wont get replaced. <img width="958" height="1014" alt="image" src="https://github.com/user-attachments/assets/6d66a2bb-df3f-4032-85fd-5b4d6b0d1f5c" /> ## Why It's Good For The Game Fixes DarkPack13#848 Fixes The-Final-Nights/The-Final-Nights-Rebase#388 ## Changelog :cl: fix: Masquerade breaches no longer get smuggled out of deathmatch arena and other spawns not meant to send them to the sewers fix: Loadout items wont get replaced by robes and masks assuming they cover your breaches /:cl: --------- Co-authored-by: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com>
## About The Pull Request Adds the detective UI as a possible option. Its color scheme and theme reasonably fits the codebase I think. I added the dice icon as well dont worry. <img width="1757" height="1384" alt="image" src="https://github.com/user-attachments/assets/95e73342-ba98-4fbb-afa6-f1f8de9918f1" /> <img width="367" height="222" alt="image" src="https://github.com/user-attachments/assets/b8103990-e836-412d-8bc6-26bb352a1521" /> ## Why It's Good For The Game Waiter waiter! I'd like another UI choice please! ## Changelog :cl: add: Detective UI is now a possible UI to choose from in preferences. /:cl:
## About The Pull Request Pulls the latest TGStation commits to keep us up-to-date Please dont squash this one!!! Another complete fuckin rework to ai to be a awesome ass tree. Corvids get expanded behavoir due to this. html the escape menu ## Why It's Good For The Game MODERN CODE ## Changelog :cl: Beautiful TG coders code: TG Pull. Thank you TG. /:cl:
## About The Pull Request This pull request fixes the missing in-hand icon state for the door shield item. The issue was caused by the door shield defining `icon_state = "door"` but not defining `inhand_icon_state`, preventing the correct sprite from being displayed when the item is held. This change adds the missing ```dm inhand_icon_state = "door" ``` assignment to the door shield item definition in `modular_darkpack/modules/doors/code/door_item.dm`. No sprite assets or gameplay behavior were modified. ## Why It's Good For The Game This change restores the intended in-hand appearance of the door shield by ensuring the correct sprite is displayed when the item is held. The fix is minimal, reuses the existing sprite assets, and does not affect gameplay or unrelated systems. ## Changelog :cl: fix: Fixed the door shield not displaying its correct in-hand sprite when held. code: Added the missing `inhand_icon_state` assignment for the door shield item. /:cl:
…code) (DarkPack13#1344) ## About The Pull Request made it so you can see a phone's number by examining it (albeit you have to be holding it) also did a lot of shitcode cleanup. it's still kinda shitcode but it's slightly a tiny bit better now. also deleting endpost forums only checked for admin client-side lmao ## Why It's Good For The Game kinda stupid you have to call someone else / get someone else to look at ur published number to see ur own phone number too lazy to make it a memory so this is better for now i guess also shitcode cleanup good ## Changelog :cl: qol: You can now see your phone number by examining your phone. code: Cleaned up a lot of phone shitcode. /:cl:
…arkPack13#1346) ## About The Pull Request this simply disables the NPC spawning pool stuff during unit tests. because spawning random NPCs and respawning them if they die is _asking_ for flaky failures. also properly remove npcs from from `SShumannpcpool.currentrun` when they're destroyed and slightly cleans up `SShumannpcpool.fire()` ## Why It's Good For The Game less overhead and issues for unit tests ## Changelog no player-facing changes at all, only affects unit tests
…o apoc-pull-8-7-26
FalloutFalcon
enabled auto-merge
August 8, 2026 13:32
FalloutFalcon
disabled auto-merge
August 8, 2026 13:32
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.
No description provided.