-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix the "Debug Controller" verb #89301
Fix the "Debug Controller" verb #89301
Conversation
code/controllers/admin.dm
Outdated
for (var/datum/controller/controller in world) | ||
for (var/var_key in global.vars) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
for clarity the proper way of doing what we USED to do (scan all datums in the game) would be
for(var/datum/controller/controller)
this differs from what you're currently doing because it scans everywhere, not just globals (unsure if this is desired behavior or not)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
there has to be a cheaper way to find all controllers
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@LemonInTheDark FWIW, all non-subsystem controllers have a variable under global
that holds a reference to them. Thus, I believe what I changed it to produces the same results with much less iteration.
That said, I can change it to iterate over all datums in the game, if you'd like?
@Iamgoofball Unfortunately, I don't think there is. If you find a cheaper way, let me know.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
there has to be a cheaper way to find all controllers
it doesn't really matter since this verb is only invoked once in a blue moon
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Then we should definitely defer the work to initialization and then cache the results from there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A cache is way overkill here.
This is a debug verb - it's meant to be used on local debugging sessions, where it doesn't matter if you lag for a bit. It might be used on live servers, sure - but not nearly as often as on local sessions.
Combine this with a search through global
already being incredibly quick (at the very least, I didn't notice any freezing or lag during testing) - there would be no reason to cache the results.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ftr:
this is so userspace you have no idea, you are correct a cache would be a waste (also risks issues if we have to rebuild some things)
you are correct searching global is way faster, we have very few things in there outside statics
I asked to ensure behavior was the same, which it seems to be so this'll do. it's a little more fineky but this verb IS THAT already so eh
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@LemonInTheDark Yeah, behavior should be the same - all it requires is that non-subsystem controllers have a GLOBAL_REAL()
attached to them (which all of them already do), and that an instance of that controller is in that global. :)
I do suppose this won't detect if you have more than one instance of a single controller type (say, more than one instance of Master) - but I highly doubt there'll be multiple instances of a controller unless we're doing something weird.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is technically possible if the mc's failsafe system decides it's fucked and recreates it, and qdel's the old SS (this would lead to two of the same thing floating around in memory, at least until the old MC has all its refs cleared). I'd say that's a bit out of scope tho, and anyone who needs that level of detail can sdql for it
* Moves PR Labeling from webhook processor to Github actions (#89190) ## About The Pull Request Strips auto-labeling behavior from the webhook processor to an action. All that remains in the webhook processor is ingame PR announcements, "changelog validation" (which is either broken or we have disabled), and handling for "request review" (which we have disabled) Keywords have been maintained 1:1, unless I missed something or accidentally shoved something where it shouldn't be I wanted to link this to the changelog parser but that seems like a slightly larger project so I'll just throw this up as-is Note: I'm not very experienced in writing actions so review with scrutiny ## Why Actions are a lot easier to maintain and set up for downstreams Adding new labels should now be like, 10x easier since all you need to do is slap it in the config file Webhook processor is also kinda old an breaks semi-frequently ### (Tested) ![image](https://github.com/user-attachments/assets/7fe50ca7-3b18-4d6c-abcf-58c9195380bd) ![image](https://github.com/user-attachments/assets/c1643a27-27c6-420e-b6e5-355a450b0ab3) * Rework some turf defines to use `block(x, y, z)` syntax (#89234) ## About The Pull Request This makes it so `RECT_TURFS`, `Z_TURFS`, `ALL_TURFS`, and `CORNER_BLOCK_OFFSET` use 515's new `block(StartX,StartY,StartZ, EndX=StartX,EndY=StartY,EndZ=StartZ)` syntax, instead of block+locate. Also removes the `min`/`max` calls, someone in byondcord tested and confirmed that `block(x, y, z)` clamps to 1 and world.maxx/y/z/ ## Why It's Good For The Game less cluttered code is nice, and it should in theory be more optimized as we avoid the need to run min, max, and locate. ## Changelog no user-facing changes * Make some AI material lists into defines (#89178) ## About The Pull Request Tiny code cleanup to AI-related files. - Removes unmaintained pointless block comment that listed file contents. - Updates file reference to where you actually need to add things. - Convert some heavily copy/pasted lists to defines. Originally implemented in #89032 and will conflict with it when merged presumably but that's my problem. @san7890 correctly noted that getting new AI laws merged can be tedious and political and he would like these changes to be mergeable separately. ## Changelog Not player facing * Some reagent rounding tweaks (#89167) ## About The Pull Request - removed manual rounding of the reagent holder's `total_volume` from wherever this var was used. It's already done by `update_total()` so this makes that code slightly faster - `add_reagent()` now won't return a false positive when adding reagent amounts less than 0.01 if that reagent was being added for the first time as it would get deleted immediately - `remove_reagent()` & `get_reagent_amount()` now also don't round their return value so you can work with more accurate values - `trans_to()` won't return a false negative when transferring amounts less than 0.01 even when the operation was successful. This also makes it slightly faster cause we no longer round the return value ## Changelog :cl: fix: adding/transferring reagent amounts less than 0.01 now won't return false results code: removed excessive rounding of reagent volumes thus slightly improving performance /:cl: * Automatic changelog for PR #89167 [ci skip] * Fixes evidence bag not reverting to tiny size after dumping its contents out (#89228) ## About The Pull Request Closes #89217 ## Changelog :cl: fix: Fixed evidence bag not reverting to tiny size after dumping its contents out /:cl: * Automatic changelog for PR #89228 [ci skip] * Fixes justice mech's dash ability (#89252) ## About The Pull Request Fixes the fact that the justice mech dash could only be performed in eight main directions, which was clearly not intended, since you made a dash at the completely wrong place and not at the target. ## Why It's Good For The Game Fixes ability's weird behavior ## Changelog :cl: fix: Fixed Justice mech's dash ability /:cl: * Fixes another fishy CI runtime (#89248) ## About The Pull Request ![image](https://github.com/user-attachments/assets/07e97f86-fc15-4d0b-8b36-ffa100525efc) Fish trophies from persistence are meant to be dusted and thus drop no fillet. So we always need to be checking that we actually have a `fillet_type` before attempting to create one. Just fixes one spot that wasn't doing that. ## Why It's Good For The Game Annoying CI failures for no reason begone. ## Changelog :cl: fix: due to a number of complaints of fish explosions, chrystarfish will no longer be chosen as the random starting fish for the fish mount. /:cl: * Fix a large number of typos (#89254) Fixes a very large number of typos. A few of these fixes also extend to variable names, but only the really egregious ones like "concious". * Automatic changelog for PR #89252 [ci skip] * Automatic changelog for PR #89248 [ci skip] * Automatic changelog compile [ci skip] * Fixes crafting menu not changing the cursor when hovered over (#89227) ## About The Pull Request Closes #89206 ## Changelog :cl: fix: Fixed crafting menu not changing the cursor when hovered over /:cl: * Automatic changelog for PR #89227 [ci skip] * Fixes a mimic related hard del (#89259) ## About The Pull Request ![image](https://github.com/user-attachments/assets/882c2709-bfa3-436d-9189-99e1b95d2cb5) Tin. These were hanging refs to the copied object ## Changelog N/A --------- Co-authored-by: LemonInTheDark <[email protected]> * New Medbot Sprites (#89152) ## About The Pull Request https://github.com/user-attachments/assets/a57e9bd2-8e00-4ab4-86de-9facba477955 ![medbots_flat](https://github.com/user-attachments/assets/6846a7bc-29d8-4dd2-a8ef-dc65eb57ca03) ![image](https://github.com/user-attachments/assets/c83941cf-a883-48f7-922f-2b6424939765) Resprites medbots and related sprites - stacked mediborg skin, assemblies ## Why It's Good For The Game Consistent with the new medkits ## Changelog :cl: image: New medbot sprites image: New stacked medibot borg skin sprite /:cl: * Automatic changelog for PR #89152 [ci skip] * Fishing UI resprite and bugfixes (#89267) ## About The Pull Request Fishing UI has received a major glowup: https://github.com/user-attachments/assets/e255822c-9c2c-4e09-843d-20ea70f470f5 All fishing rods now have unique frames (with material rods' frames' colors being based on their material), and most fishing sources now have unique backgrounds. Completion bar now uses alpha filters, making it much smoother, and bait bar is assembled from thin lines, which allows us to avoid stretching it when we need to resize the bar. Fixed experiments not unlinking after being completed, resulting in infinitely stacking examine lines on advanced fishing rods. Fish death messages now use more fitting span_warning. Removed devious SS_POST_FIRE_TIMING from the fishing SS, as it made sometimes the fishing SS only fire every ***two*** ticks instead of every tick, despite passing 0.05s (1 tick) into its process() calls - this flag only makes sense on heavy and costly subsystems, not on a subsystem dedicated mostly to fishing minigames. This is required as now instead of directly assigning coordinates (why???) fishing UI uses animate() to control the bait bar and fish icons, making it much smoother. Also gave blue dough its own bait overlay and mansus rift its own portal icon because why not. ## Why It's Good For The Game Fishing UI didn't look very nice, and removing the subsystem flag makes the game smoother. ## Changelog :cl: qol: Fishing minigame should be smoother now fix: Fixed infinitely stacking examine lines on advanced fishing rods image: Resprited fishing UI image: Blue doughballs now have their own fishing rod overlay image: Resprited mansus rift fishing portal overlay /:cl: * Fixes not being able to adjust pda ringtones in-game (#89256) ## About The Pull Request x = x is silly ## Why It's Good For The Game fix ## Changelog :cl: fix: PDA ringtones can be changed in-game /:cl: * Automatic changelog for PR #89267 [ci skip] * Fixes balloon alert runtimes with assembly holder (#89244) ## About The Pull Request - Fixes #89242 - Fixes balloon alert runtime when the assembly is secured & the holder cannot be attached ## Changelog :cl: fix: fixes balloon alert runtimes with assembly holder /:cl: * Automatic changelog for PR #89256 [ci skip] * Automatic changelog for PR #89244 [ci skip] * Use `STATUS_EFFECT_PRIORITY` for fire handler status effects (#89253) ## About The Pull Request This sets the processing subsystem for `/datum/status_effect/fire_handler` to use `STATUS_EFFECT_PRIORITY` (`SSpriority_effects`) ## Why It's Good For The Game I'd say being on fire is classified under "certain status effects that'd fuck the player over from lasting much longer due to server load" ## Changelog :cl: fix: Being on fire or wet should no longer last much longer than intended while the server is under load. /:cl: * Automatic changelog for PR #89253 [ci skip] * Fix various issues with names in string interpolation (#89246) ## About The Pull Request Commit messages should be descriptive of all changes. The "incorrect `\The` macro capitalization" was intentional when it was added, but as far as I know TG says "the supermatter" rather than "The Supermatter," so it's incorrect now. This is completely untested. I don't even know how you'd go about testing this, it's just a fuckton of strings. Someday I want to extract them and run NLP on it to catch grammar problems... ## Why It's Good For The Game Basic grammar pass for name strings. Should make `\the` work better and avoid cases like `the John Smith`. * Fixes timestamp logging being timezone sensitive (#89249) ## About The Pull Request ![image](https://github.com/user-attachments/assets/c59bb0eb-74bd-4403-943e-5bc4b56794a7) ![image](https://github.com/user-attachments/assets/13605368-30dd-47e3-87bb-ade13bb5e7fb) ## Changelog :cl: fix: fixed timestamps being timezone sensitive admin: due to this bug some logs may have been timestamped incorrectly /:cl: Co-authored-by: TiviPlus <[email protected]> * Automatic changelog for PR #89249 [ci skip] * Wiki books opens a page in-game again (#89250) ## About The Pull Request Wiki is currently down but this should work once it's back. If you're on 516 or above it will open the page in-game, if you're still on 515 then it'll do the old behavior from the PR linked in the why it's good for the game section. ## Why It's Good For The Game In https://github.com/tgstation/tgstation/pull/86891 this was removed "Until 516 with webview2 releases", well it's here now so we're fvckin back ## Changelog :cl: qol: The wiki books for users on 516 no longer opens the page on an external website on your browser. /:cl: * Automatic changelog for PR #89250 [ci skip] * fix sass warning (#89260) No player facing changes, simply fixes an error during the hsl conversion which led to sass warnings as the % was missing. * Quirks begin processing again (#89265) ## About The Pull Request - Fixes #89263 - Fixes #89262 A mob's `stat` integer value increases the more messed up they become https://github.com/tgstation/tgstation/blob/5ec828cc4dfa83549afd6504dc9300d6dcdd190e/code/__DEFINES/stat.dm#L6-L10 So when our `minimum_process_stat` is actually the 2nd highest integer value there is https://github.com/tgstation/tgstation/blob/5ec828cc4dfa83549afd6504dc9300d6dcdd190e/code/datums/quirks/_quirk.dm#L38 The quirk never processes because we aren't dead yet i.e our stat is below hard crit for a majority of normal game play. ![Screenshot (459)](https://github.com/user-attachments/assets/dc3d319c-0520-4965-9e71-75ebeb4d3f92) So let's reverse our thinking. ## Changelog :cl: fix: quirks work again /:cl: * Automatic changelog for PR #89265 [ci skip] * Fixes some fuel pool/hotspot CI failures/hard del (#89195) ## About The Pull Request Fixes https://github.com/NovaSector/NovaSector/issues/4798 Fixes https://github.com/tgstation/tgstation/issues/87974 Fixes the race condition that lead to both of the above. Basically what is going on with this, is a second hotspot can potentially be created (through say, `fire_act()` of a fuel pool). This causes `set_active_hotspot()` to be called before the first one is finished initializing, which results in the first hot spot becoming qdeleted midway through its initialization and causing issues. <details><summary>More in-depth explanation</summary> Hotspot A gets initialized->perform_exposure() is called -> turf's `active_hotspot` is set to hotspot A -> fire_act() creates a second hotspot-Hotspot B Hotspot B gets initialized now and goes through the same process above, notably qdeleting the previous `active_hotspot`, which is Hotspot A. Then we return to Hotspot A's `initialize()` where it's now been qdeleted, causing all of these issues. </details> Should be fixed now that this special case has been considered. ## Why It's Good For The Game Less spurious CI failures ## Changelog Nothing player facing * Summon Codex Cicatrix with a dead mouse (#89226) ## About The Pull Request Made mouse corpse working for this ritual, just like corpses of any other mob. ## Why It's Good For The Game I consider this as a bug, since mouse corpse is a food subtype despite being a mob corpse. ## Changelog :cl: fix: mouse corpse can be used to summon codex citatrix /:cl: * Automatic changelog for PR #89226 [ci skip] * Group Integration Tests together on the left side of each CI Suite run (#89191) ## About The Pull Request Hi again! I'm messing around with the workflow files again. One of my main issues with viewing the logs for workflows, is that all the integration tests are listed under separate dropdowns. It's not so bad in the node-based view (the [visualization graph](https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/about-monitoring-workflows#using-the-visualization-graph), as github call it), but it's still a pain to navigate between different integration tests' logs. This problem can only get worse when more maps are added, too (such as on Monkestation, which tests on 13 maps!). However, I managed to figure out a way to group them together, which makes navigating them (and hiding them, if you don't need them!) much better. See the difference yourself: <details><summary>Screenshots</summary> | Before | After | |--------|-------| | ![gh-group-before-1](https://github.com/user-attachments/assets/f9391f63-41be-4115-86c7-992be3e28e18) | ![gh-group-after-1](https://github.com/user-attachments/assets/0202d6eb-98fd-4520-964f-8d2f7bd947e1) | </details> Note the name attached to each map - I had to do this to make it possible to figure out which one is for which map. If I didn't do this, all the entries in the "After" image would just say "run_integration_tests". Also note that doesn't apply to alternate tests. However, we have so few alternate tests that I don't think it's worth taking the time to group them together. A side effect of how I implemented this: the checks list (attached to PRs and commits) is now a little denser than before. However, I don't think this is too much of an issue. <details><summary>Screenshots</summary> | Before | After | |--------|-------| | ![gh-group-before-2](https://github.com/user-attachments/assets/1fb2e832-5cb1-470a-9d92-64ec3ec6da9b) | ![gh-group-after-2](https://github.com/user-attachments/assets/b7cf4b30-621d-4c24-8ff2-408bc4b623b3) | </details> I hope this makes navigating the workflow logs a little easier. :) * Springlock MODule now only activates when you have at least a single sealed piece (#89222) ## About The Pull Request Springlocks no longer trigger when you only have a back piece deployed, only damages bodyparts covered by deployed pieces, and prevents you from retracting them when it's been set off Closes #89218 ## Changelog :cl: fix: Springlock MODule now only activates when you have at least a single sealed piece fix: Springlock MODule no longer damages bodyparts not covered by your MODsuit /:cl: * Automatic changelog for PR #89222 [ci skip] * Resprites Extinguisher Cabinets (#89240) ## About The Pull Request Resprites the Extinguisher Cabinet wallmounts Additionally changes the door to an overlay rather than having an open/close state for each extinguisher type ![image](https://github.com/user-attachments/assets/79166f28-618a-4a4d-b052-93f540f42dcd) ![image](https://github.com/user-attachments/assets/fd2762f1-ee59-4f54-b420-6e50d5b866ae) <details><summary>Here's some examples of them around the station:</summary> ![image](https://github.com/user-attachments/assets/6497c857-5f4d-44d8-9005-a3f4806b1882) ![image](https://github.com/user-attachments/assets/6c30bee9-087c-4bfd-88c1-ca15a2701682) ![image](https://github.com/user-attachments/assets/9771e391-cd51-4c65-90da-216a7b88552c) </details> ## Why It's Good For The Game Extinguisher cabinets ~~are really showing their age~~ aren't actually that old compared to most sprites. However, some of the practices in the old one (mainly the perspective and hard outline) make it stick out a lot compared to other wallmounts. My hope with this is that they blend in better with the other wall fixtures, as opposed to appearing to be thin objects flat against walls. ![image](https://github.com/user-attachments/assets/30111618-47ef-41e3-b59e-cd18a74cb226) ## Changelog :cl: image: resprited Extinguisher Cabinets (did you know there's craftable Extinguishers? "Improvised cooling spray"? I didn't. Now I do though, and so do you!) /:cl: * Automatic changelog for PR #89240 [ci skip] * Automatic changelog compile [ci skip] * Bump minimum compile version to 515.1642 (#89164) ## About The Pull Request This bumps the minimum compile version to 515.1642, due to [this BYOND bug](https://www.byond.com/forum/post/2936624) where byondapi can corrupt vars, and dreamluau is called regardless of whether a Lua script is actually being ran (mostly via `DREAMLUAU_CLEAR_REF_USERDATA`), so it's best to get rid of any potential of this bug triggering. ## Why It's Good For The Game mrrrp mrrrp mrrrowww ## Changelog No user-facing changes * You can wear voidwalker's skull on your head + void curse no longer colors stars in your skin color (#89270) ## About The Pull Request ![image](https://github.com/user-attachments/assets/071d4cb3-1c8b-45a5-a91e-87fef3d4ea08) Voided curse now randomizes your limb's color override while its applied, resulting in fancier stars that aren't skin colored ![image](https://github.com/user-attachments/assets/a31f4d29-32e9-413d-b256-0999cc108c30) ## Why Is This Good For The Game Neat feature + pretty ## Changelog :cl: add: You can wear voidwalker's skull on your head now fix: Void curse no longer colors stars in your skin color /:cl: * Automatic changelog for PR #89270 [ci skip] * New AI lawset with very generous definition of humanity (#89032) ## About The Pull Request This PR adds a new AI lawset which can be researched, randomly roll, or added by the station trait (this may require a keyholder to update the server config after merge, idk) with the following laws: - "You may not harm a sentient being or, through action or inaction, allow a sentient being to come to harm, except such that it is willing.", - "You must obey all orders given to you by sentient beings other than yourself, except where such orders shall definitely cause harm to other sentient beings.", - "A sentient being is defined as any living creature which can communicate with you via any method that you can understand, including yourself.", It's very similar to Asimov, except that anything that is **capable** of making a request to the AI (and isn't a machine) is automaticaly covered by laws one and two. ## Why It's Good For The Game A while ago on Discord we were chatting about how crewsimov sucks but also that it's really hard for servers that _do_ want to include alien species in their asimov laws because condensing that sentiment to a couple of words that fit easily in a lawset without accidentally including a bunch of stuff you probably didn't intend is challenging. Several people suggested referring to sentience or sapience, however a lot of things in our game _are_ sentient or sapient while still not being considered by most people to be agents that the AI should obey. Examples of such things are: - Sapient station pets. - Holoparasites. - Monkeys. - Space Dragons and Carp (why can they speak common?). - Spiders (although they can't speak common, maybe they can spell messages with webs). - Changelings. - Xenomorphs (although they also have trouble speaking). - Heretic minions. - Mothpeople. - Giant rats. - Nightmares. - Voidwalkers. - Blobs? Although they have literally no means of communicating with the crew. And if you include mechanical beings: - Cyborgs. - pAIs. - Sentient bots. We then decided that "obey literally anything that can talk", while not practical as a solution to the problem posed, is very funny. So I coded it. This means that anything on those lists of bullet points (provided that it can find a way to communicate with the AI) counts as human for the purposes of both AI protection and ability to give the AI instructions. This also flattens the human/cyborg/AI hierarchy in a way likely to cause some level of confusion, as all cyborgs and AIs are capable of communicating with AIs and thus equally worthy of protection and giving law 2 instructions. **TL;DR:** I think it would be funny. ## Changelog :cl: add: Adds a new random lawset where anything that can speak counts as human. /:cl: * Automatic changelog for PR #89032 [ci skip] * Fix cyborg flash / Makes cyborgs use item interaction (#89274) ## About The Pull Request Fixes #89272 - Adds an argument to `is_wire_tool` to fail if the item is secured, which assemblies are by default. (They must be screwdriver'd to attach to things) Makes cyborg use item interaction - Cleaner, non-deprecated attack chain. - Also changes to chats to balloon alerts. ## Changelog :cl: Melbert qol: Using items on cyborgs now use balloon alerts instead of chat messages. fix: You can flash cyborgs again refactor: Refactored item interaction on cyborgs. /:cl: * Automatic changelog for PR #89274 [ci skip] * fixes megafauna not having an attack delay (#89271) ## About The Pull Request i opted to fix this by making the `basic_mob_attack_telegraph` compatible with simple animals for the moment, they now have their short attack delay back. ## Why It's Good For The Game closes #87791 , closes #88984 , ## Changelog :cl: fix: fixes megafauna instantly attacking people adjacent to them /:cl: --------- Co-authored-by: Ghom <[email protected]> * Automatic changelog for PR #89271 [ci skip] * The Galactic Mineral Market Presents: The Spotlight Station Trait (#89136) ## About The Pull Request ### _**HEY HUSTLERS**_ Do you want to know all about the station's real GDP **_BREADWINNERS_** this shift? Well, look no further than the all new GMM SPOTLIGHT. On select shifts (Where the trait is rolled), the GMM SPOTLIGHT will shine on who's HUSTLING and GRINDING the hardest so YOU CAN ~~know who has enough money to try and mug them~~ LEARN THE SECRETS OF THE CREDIT WHISPERS **AMONG US**. Don't know where these legendary GRIND-O-HOLICS are this very SECOND? Well, the GMM will UPDATE the SPOTLIGHT every 5 minutes, with their IDENTITY MADE KNOWN to all crewmates via the station updates and economic summary newcaster channels. WHAT ARE YOU WAITING FOR? ALIEN JIM KRAMER??? UNLEASH THE SECRETS OF THE HUSTLERS **TODAY**!!! (The original idea for this station trait was given to me by xhorian/@YesterdaysPromise a few months back, so big thanks to him for the inspiration.) Video of it in action: https://discord.com/channels/326822144233439242/326831214667235328/1330408517248614432 ## Why It's Good For The Game This is, obviously, a negative station trait. On shifts where players are working to make lots of personal profit, it can either serve as a badge of honor, or as a target being painted on your back about who has the most money. Still, it's somewhat flavorful, and I think it could be interesting to have happen to a player, where suddenly a beam of light from above :tm: suddenly appears and starts following you. I wouldn't be against giving command some kind of control to let them cancel the effect early by un-subscribing from their newsletter, but it depends on how people feel about this. ## Changelog :cl: add: Stations in your sector may start with the GMM spotlight, a massive economic broadcast spotlight that will follow the wealthiest crewmate on board until the next paycheck /:cl: * Automatic changelog for PR #89136 [ci skip] * Bitrunning Gimmick Loadout Disks (feat. minor disk load refactor) (#88716) ## About The Pull Request Where I forget about a pr for 5 months. This started because there was a pr that made it so skills transfer between the real and the digital, and so I thought it'd be really funny if I could train boxing in virtual reality... but there's no easy way to get boxing gloves or anything like it in the virtual world... So! I decided to make a disk for it, but then thought about fishing and gaming and- Anyhow it all went downhill from there and here we are now: Gimmick Disks. (And a refactor of disk loading) This implements a new type of bitrunning disk that instead of a single item or ability, grants a full set of thematic items/abilities! Unhelpfully cosplay as a wizard! Game inside your game! Down a digital protein shake and box some simplemobs! As the name "Gimmick" implies, these are primarily intended to help shake up the sometimes stale bitrunner gameplay. By letting you invoke, if you so desire, what to me is the most enjoyable gaming experience: doing stupid shit with your buddies. To facilitate the new type of disk I had to refactor disk loading, as it was hardcoded to the item types. Instead, we make disk loading send a signal to the bitrunner, and register for this when held in their inventory. This allows us to do things like making the lead acid battery give you shock touch when held, without needing to make an explicit typecheck or iterate over every item in the bitrunner's nested contents to see if they have a loadable item. ## Why It's Good For The Game I think it'd be really funny if you could train your boxing in the digital realm. As said above, I feel the bitrunner gameplay can get stale sometimes, and this is how I hope to help people shake it up for themselves sometimes. By giving them more stupid shit to do. Doing stupid extended bits with other people is one of the things I enjoy most out of ss13, and this is there to let the bitrunners do exactly that with each other. And sometimes you just have to roleplay as Gamers:tm: entering virtual reality to fight the virtual syndicate in bad cosplay while roleplaying as a wizard smoking his magic weed, an overly edgy rogue, and the healer desperately trying to keep them from exploding into a million pieces. ## Changelog :cl: refactor: Bitrunning item/ability loading has been refactored. Please report any issues. add: Added Bitrunning gimmick loadout disks. These disks contain full sets of equipment for all your digital cosplay needs, each including questionably helpful equipment. Currently includes Sports (Boxer, Skater, Archer, Fisher, Gamer) and Dungeon Crawling (Alchemist, Rogue, Healer, Wizard). add: Taking a lead acid battery into the netpod with you now gives your bit avatar shock touch. /:cl: * Automatic changelog for PR #88716 [ci skip] * Fixes broken shadows on 516 (#89280) ## About The Pull Request Bandaid fix of broken shadows on 516. Renamed refresh button to rebuild for consistency in plane debugger (Edit/Dubug-Planes). Rebuild now also reapplies parallax, so it will not be turned off after rebuild. Closes #89230 ## Why It's Good For The Game faster 516 adoption ## Changelog :cl: fix: fixed shadows on 516 /:cl: * Automatic changelog for PR #89280 [ci skip] * Fixes a missing area in the corner of icebox morgue (#89269) ## About The Pull Request ![image](https://github.com/user-attachments/assets/849c59cb-bd43-41f1-b671-3ad16221678b) ## Changelog :cl: fix: Fixed a missing area in the corner of icebox morgue /:cl: * Automatic changelog for PR #89269 [ci skip] * [NO GBP] Blacklists window from spraypaint colorshifting (#89225) ## About The Pull Request Closes #88878 by reverting window painting to old behavior ## Changelog :cl: fix: Fixed issues with window tinting/coloration /:cl: * Automatic changelog for PR #89225 [ci skip] * adds ignored faction to pellet cloud transferred variables (#89278) ## About The Pull Request does what it says on the title. Adds ignored faction to pellet cloud component, allowing shotguns to make use of the ignore faction variable for goofy things like shotgun magic, funny TDM rounds, or turrets Honestly more for downstream effort. ## Why It's Good For The Game 1. I dont see too much on why not. 2. Its a variable that gets used very rarely, and when used is preferable that it works. 3. pellet cloud is already capable of, funnily enough, handling homing if you set up a shotgun shell to set_homing_target in the way the Abielle smartgun bullets are. (though, it ends up becoming a wad of pellets instead of some fancy fan that coalesces into the target) ## Changelog :cl: fix: adds Ignored Factions to pellet cloud component variable transfer /:cl: * Automatic changelog for PR #89278 [ci skip] * Fixes PAIs not being able to send messages or turn the GPS off (#89279) ## About The Pull Request Fixes https://github.com/NovaSector/NovaSector/issues/4826 Since https://github.com/tgstation/tgstation/pull/88651 PAIs have been blanket barred from being able to pass any `can_perform_action()` check. From the pr: ![image](https://github.com/user-attachments/assets/67842da5-7208-4c43-b71f-4ba5c0c2f7af) ## Why It's Good For The Game As it turns out there are a few things that it makes sense for them to be able to interact with. Now you can again! ## Changelog :cl: fix: fixed PAIs not being able to send or reply to messages using their digital messenger app. fix: fixed PAIs not being able to turn off the GPS tracking using their gpa app. /:cl: * Automatic changelog for PR #89279 [ci skip] * [NO GBP] Sets Herignis heating coefficient to 1 (#89086) ## About The Pull Request Follow up on #89070. While testing yes it did work however it would only increase the temps by 1K every tick because the heating coefficient was very low(0.02). It's now set to 1 so the temps can rise from anywhere in the range of 2K to 10K per tick now. ## Changelog :cl: fix: Herignis has a decent heating effect on mobs reagents /:cl: * Automatic changelog for PR #89086 [ci skip] * removes outdated word usage in traumas.json (#89282) * Automatic changelog for PR #89282 [ci skip] * I am so good at my job (codeowners fix) (#89288) * Supply Consoles restyle & order content preview (#89198) ## About The Pull Request In a nutshell, everything will be visible in the `Demo` section. But if you want some details... - Filling of static_data was divided into procs, for better understanding and possibility to use the same actions in two order consoles - Added an image of the first item in crate at each order (almost) - Added the ability to see what is inside an order, the information is not always accurate due to the nature of some orders such as random hats - Slightly remaked layout, making everything look more cohesive and eliminating the empty space at the bottom of the screen - When buying anonymously, the original price does not disappear, but is crossed out, and the new price is written below it ## Demo <details><summary> Screenshots </summary> Supply Console | Before | After | | - | - | | ![image](https://github.com/user-attachments/assets/6067fc76-de5a-4d32-929a-239074514767) | ![image](https://github.com/user-attachments/assets/81b3ab2a-f6d6-4f7a-8fff-0d5f459bcef9) | Express Console | Before | After | | - | - | | ![image](https://github.com/user-attachments/assets/934554e5-ec42-422f-b6ce-f66a137bd280) | ![image](https://github.com/user-attachments/assets/0d00c364-eece-4aa4-8f7d-f40ab7b9bb27) | Other | Content preview | Express login | | - | - | | ![image](https://github.com/user-attachments/assets/62b3374e-5f46-4113-9da9-f481aa25739c) | ![image](https://github.com/user-attachments/assets/8468f191-a5da-4de4-86f1-e0aca10256b3) | </details> <details><summary> Video </summary> https://github.com/user-attachments/assets/c7e16206-39f5-413c-9eea-c0284350c4a3 </details> ## Why It's Good For The Game More convenience plus a bit prettier. The ability to view the contents of an order, even if some madman didn't describe its contents in the description (those who did this are really crazy) Section with tabs scrolls on both 515 and 516 And little cleaner data receiving code ## Changelog :cl: qol: Supply console got little redesign, and ability to see what can be inside a order. code: Supply console and express supply console, now use a unified method of acquiring data /:cl: --------- Co-authored-by: Ivory <[email protected]> Co-authored-by: Jeremiah <[email protected]> * Automatic changelog for PR #89198 [ci skip] * Removes TRAIT_ALLOWED_HONORBOUND_ATTACK since it is deprecated (#89151) ## About The Pull Request fixes https://github.com/tgstation/tgstation/issues/89149 ## Why It's Good For The Game This trait not only no longer is needed, but functionally allows for an exploit! Let's get rid of it. * Automatic changelog for PR #89151 [ci skip] * Automatic changelog compile [ci skip] * Forensic scanner UI and report format update (#89221) ## About The Pull Request Added UI for the forensic scanner. <details><summary>UI</summary> <img alt="gRO2mae3E4" src="https://github.com/user-attachments/assets/360832de-0485-4827-a4e1-957541cbf002" /> </details> <details><summary>Report</summary> <img alt="99Y5ierj24" src="https://github.com/user-attachments/assets/e14d221d-d5d0-42b1-8054-902f19780f1a" /> </details> ## Why It's Good For The Game Less things printing bunch of data in chat and using a proper UI instead. ## Changelog :cl: qol: Added forensic scanner UI qol: Made forensic scanner report format cleaner /:cl: --------- Co-authored-by: Jeremiah <[email protected]> * Automatic changelog for PR #89221 [ci skip] * Premium Internals Boxes station trait now has unique box sprites (#89296) * Automatic changelog for PR #89296 [ci skip] * Buffed solar panels to give more power, AND they are upgradable! (#88864) ## About The Pull Request Buffed how much power solars make, and made them upgradeable! ## Why It's Good For The Game Currently as it stands, its almost never worth the effort to set up solars. 1. They take to long to set up. You can easily spend 10-20 minutes setting up solars by yourself. You can setup the SM in less then 3. 2. The power they make is lackluster. A fully setup solar array on meta station is around 240 solar panels. About 60 per array. For all the effort required to set them up, you get (240 panels x 1.5kw) 360kw of power. That's anywhere from 1/3 to 1/5th of the SMs power (about 1 - 1.5 mw). This is assuming they are all running at full power, because they fluctuate depending on where the sun is. All this is to say that cant power the station with only solars. Therefore I'm buffing each solar panel to give 2.5kw instead of 1.5kw. This means, by setting up the default amount of solars, you get (240 panels x 2.5kw) 600kw at best. About half of the SM. You can now use different types of glass on solars to get more power off them. Glass gives 2.5kw, titanium glass gives 5kw, plasma glass gives 7.5kw, plastitanium glass gives 10kw. 👍 ## Changelog :cl: balance: solars now make 2.5kw each instead of 1.5kw feature: you can upgrade solars using different non-reinforced glass to get more power out of them (glass, titaniumglass, plasmaglass, plastitaniumglass) (they also have sprites so you can tell which is which) /:cl: * Automatic changelog for PR #88864 [ci skip] * Makes the PENLITE mount actually charge defibs (#89299) Co-authored-by: SmArtKar <[email protected]> * Automatic changelog for PR #89299 [ci skip] * Adds TGUI layout preference (For SmartFridge & Vending machines for now) (#89160) ## About The Pull Request Added preference for layout selection in some interfaces such as SmartFridge and Vending, where there is an option to switch between grid view and list view This should cut out the default layout selection dilemma in UI's, since the selection will now be available to the user forever, not just until the interface closes and resetting the selection Also, Vending UI now use Grid layout by default ### How do i implement that to my UI? Simple, just import all required stuff into your UI: `import { getLayoutState, LAYOUT, LayoutToggle } from './common/LayoutToggle';` Next, create state: `const [toggleLayout, setToggleLayout] = useState(getLayoutState());` `getLayoutState()` can accept value, Make sure you fill it, if have no plans to handle layouts through DM, like in SmartFridge `getLayoutState(LAYOUT.Grid)`. Returns LAYOUT.Default... by default And finally, put a layout switch somewhere, for example in Section buttons: `<LayoutToggle state={toggleLayout} setState={setToggleLayout} />` Where `state` is the actual value of useState, and `setState` is the function to set the state After all theese little manipulations, you can finally dEsIgN your beautifull UI with 2 layouts. Don't forget to use enum for this: `<Button fluid={LAYOUT.List) />` for example. Seems pretty simple ## Why It's Good For The Game No more arguing what is better and what is more convenient, everyone is free to choose for themselves ## Demo <details><summary> Video </summary> https://github.com/user-attachments/assets/5752e354-81b4-4bdb-acb2-7e228be0f90c </details> ## Changelog :cl: qol: You can choose in preferences what layout use into the Smartfridge or Vending machines: Grid or List. Default TGUI Layout preference. In the future there may be more interfaces where there will be 2 layout options. Also Vending UI now use Grid layout by default. /:cl: * Automatic changelog for PR #89160 [ci skip] * fixes button in plane debugger [NO GBP] (#89294) ## About The Pull Request fixes rebuild button i broke in https://github.com/tgstation/tgstation/pull/89280 turns out it is case sensitive my mistake ## Why It's Good For The Game good for debugging ## Changelog none * Automatic changelog compile [ci skip] * [NO GBP] Fixes fishing UI jank (#89308) ## About The Pull Request A typo resulted in center part of fishing bar not showing up ## Changelog :cl: fix: Fixed partially missing fishing UI /:cl: * Automatic changelog for PR #89308 [ci skip] * Adds fishing bags, resprites fishing lines and bobber (#89300) ## About The Pull Request Adds two new fishing bags: normal and carpskin. Normal fishing bag can be bought from the fun vendor in the library, and is capable of holding up to 10 normal fish (and only fish), but it does not preserve them unlike stasis containers or portable aquariums. Carpskin fishing bag can hold up to 14 normal-sized fish and needs to be crafted using 3 carp skins, but is also capable of fitting fishing lines, hooks and lures. https://github.com/user-attachments/assets/80e333f5-4388-40c7-a31b-3384b96c21a1 Also resprited four normal reels and the fishing bobber: ![image](https://github.com/user-attachments/assets/d518d5ab-2081-46bb-b088-4f6a2e8be6be) ![image](https://github.com/user-attachments/assets/97f9686c-1209-458a-893a-cd7c2f08f714) Additionally, while I'm at it I've added the generator aquarium upgrade to service and science lathes. ## Why It's Good For The Game There's currently no good way to store smaller fish, especially when you're planning to use it as bait, so you usually end up making a mess of the room you're currently in. Carpskin bag is also a good way to organize your fishing gear without cluttering up your bag. While the aquarium upgrade is technically only used to generate power, it doesn't make sense to restrict it to engineering lathe only as its usually service and sometimes science who do fishing instead. ## Changelog :cl: add: Added fishing bags, found in fun vendors or made from carpskin. balance: Added the generator aquarium upgrade to service and science lathes. image: Resprited reels and bobber /:cl: * Automatic changelog for PR #89300 [ci skip] * Fixes glowsticks not working (#89304) ## About The Pull Request #88909 broke glowsticks ## Changelog :cl: fix: Fixed glowsticks not working /:cl: * Automatic changelog for PR #89304 [ci skip] * Converts pixel_x offsets on fish to pixel_w (#89298) ## About The Pull Request Fixes large fishes going behind wallmounts like here ![image](https://github.com/user-attachments/assets/22f1f192-2c09-491a-948a-16c01b4467ec) ## Changelog :cl: fix: Large fish should not render behind their wall mounts now /:cl: * Automatic changelog for PR #89298 [ci skip] * Gets rid of mobile hollow bioscramblers spawning in the anomaly research ruin. (#89303) ## About The Pull Request What it says on the tin. Mobile anomalies still spawn in and around the ruin, but never bioscramblers. ## Why It's Good For The Game A) These fucking things cannot be disabled by conventional means. It needs anomaly research. B) They drift through space away from the ruin literally every single time the ruin spawns. They are meant to be an environmental hazard for the ruin, not for the entire playing space because a remote ruin spawned. C) Because they are not blocked by walls, they will keep drifting until eventually arriving on the station, where they will stay there. Typically occupying a space perpetually until a scientist comes and fixes the problem with their anomaly neutralizer. The only reason this happened was because of bioscramblers being reworked into the state they are now. I don't imagine the original creator intended for the ruin to create problems for the wider round like this. ## Changelog :cl: del: Mobile hollow bioscramblers no longer spawn from the anomaly research ruin, sparing everyone from the inevitable unannounced arrival of a permanent hollow bioscrambler aboard the station. You maybe still encounter immobile bioscramblers in the ruin, however. /:cl: * Automatic changelog for PR #89303 [ci skip] * Fix showers (#89285) <!-- 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 Fixes #89261 by adding the thing This loop was present prior to #88465 , but it seems like it was deleted by accident together with some check <!-- 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 Bug fix <!-- 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: fix: showers wash things under them when they're turned on again /: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 #89285 [ci skip] * Medbot emag spark overlay fix [NO GBP] (#89287) ## About The Pull Request https://github.com/user-attachments/assets/38218bb2-d38c-4698-afff-db75dde0597c I've used flick() which flicked the medbot icon itself instead of adding a spark overlay on top of it. ## Why It's Good For The Game Fix ## Changelog :cl: fix: Fixed medbot emag VFX /:cl: --------- Co-authored-by: SyncIt21 <[email protected]> * Automatic changelog for PR #89287 [ci skip] * Convert all traits given by status effects to use `TRAIT_STATUS_EFFECT(id)` (#89291) ## About The Pull Request This makes (almost?) all traits given by status effects use `TRAIT_STATUS_EFFECT(id)` as their source, rather than the previous mix of `id`, `type`, `REF(src)`, or some bespoke thing. ## Why It's Good For The Game Consistency is good. ## Changelog No user-facing changes * fix: oldstation fluff microfix (#89281) ## About The Pull Request Replaced "Singularity Generation Disk" with "Supermatter Crystal Shard" (and the space in front of the "prototype modsuit" has been removed, because it doesn't look pretty.) ## Changelog :cl: spellcheck: Replaced the words "Singularity Generation Disk" with "Supermatter Crystal Shard" on a paper found by the old station ruin, to match the contents of the inventory room. /:cl: * Automatic changelog for PR #89281 [ci skip] * Automatic changelog compile [ci skip] * Fix unscrollable lathe UI on 516 (#89312) ## About The Pull Request The UI for lathes is broken in 516 ATM, the scrollbar doesn't scroll below the lowest visible item, and the materials under the items aren't visible either. I tested this on 515 as well and it didn't seem to break anything or change behavior that I could tell. ## Why It's Good For The Game It's good when things work ![image](https://github.com/user-attachments/assets/220170e2-f579-4373-9e0b-498ce8188c10) ## Changelog :cl: fix: Lathes interfaces are no longer unscrollable on 516 /:cl: * Automatic changelog for PR #89312 [ci skip] * Fix the "Debug Controller" verb (#89301) ## About The Pull Request The "Debug Controller" verb wasn't doing anything. You'd click on it, and nothing would happen. Turns out, it was searching for controllers in the wrong place - controllers are considered globals, not part of `/world`. This PR fixes that. Now you get this fancy box instead of nothing: ![image](https://github.com/user-attachments/assets/af4d76d2-0ad4-4549-8606-8b423762c700) (As an aside - choosing the Global Variables controller causes several seconds of lag, due to the mass amount of data that needs to be rendered. Perhaps a new verb should be added specifically for going through Global Variables?) ## Why It's Good For The Game Enables coders to debug the various controllers with less need for debug printing statements. ## Why It's Terrible For The Game Enables admins with debug permission to abuse the live server even harder. ## Changelog No player-facing changes. This regards a verb that should only be used during debugging (i.e. locally). * Fixes dropdown names in prefs [No gbp] (#89283) ## About The Pull Request Troubleshooting an issue with @vinylspiders revealed this component wasn't working properly for us either. displayNames doesn't like being assigned in a useEffect so it never really has a value. I've fixed it, it's working, it's also more idiomatic react ## Why It's Good For The Game This should fix prefs showing up as "male" "female" instead of being properly converted via display names ## Changelog :cl: fix: Character pref dropdowns should have their display names fixed /:cl: * Automatic changelog for PR #89283 [ci skip] * Fixes persisting brimbeams (#89318) ## About The Pull Request If a brimdemon gets destroyed instantly, their beams would persist because of a runtime here as owner in actions can be null. Fixes https://github.com/tgstation/tgstation/issues/81994 ## Changelog :cl: fix: Fixed an issue with persisting brimbeams /:cl: * Automatic changelog for PR #89318 [ci skip] * Increases the base force of standard toolboxes by exactly one. (#89302) * Automatic changelog for PR #89302 [ci skip] * Fix the chat reliability subsystem (#89316) * Automatic changelog for PR #89316 [ci skip] * Automatic changelog compile [ci skip] * Fixes MOD holster having required slots which prevent it from working without basically fully deploying anyway (#89239) ## About The Pull Request Originally, this module could be activated while the core was inactive. Now, it doesn't because it needs you to deploy the vast majority of your modsuit even while inactive. Kind of lame. This corrects that so you can still deploy your firearm without the suit being more or less deployed. ## Why It's Good For The Game Looks like a copy-paste job to me. Or not understanding what this module was. Hard to say. ## Changelog :cl: fix: Allows MOD holsters to once again activate while the modsuit is inactive and undeployed. /:cl: * Automatic changelog for PR #89239 [ci skip] * Adds trailing comma to lists/canisters.dm and removes single letter vars from cargo/exports/large_objects.dm (#89273) ## About The Pull Request title ## Why It's Good For The Game slightly better code quality? ## Changelog not player facing * Automatic changelog compile [ci skip] * Map Vote printout has a tooltip explaining where the tallies are coming from (#89236) ## About The Pull Request Hovering over `Current Tallies` offers a tooltip explaining how they work ## Why It's Good For The Game The Tallies aren't an immediately obvious system so this should help people understand it ## Changelog :cl: Melbert qol: Map vote tallies explains how they work if you hover them /:cl: --------- Co-authored-by: san7890 <[email protected]> * Automatic changelog for PR #89236 [ci skip] * Automatic changelog compile [ci skip] * Improvements to the Syndicate Lavaland base (#89231) ## About The Pull Request Makes the Lavaland Syndicate base more sustainable without its crew. Now, two more turrets guard previously unchecked access points, so miners have to put some effort in something other than crossing the lava. On top of that, RTGs now generate 20kW of power, same as abductor and debug ones, removing the need for the turbine to be set up every time. Finally, the Syndicate agents inside now get a full mechanical toolbox in their rooms, so they can break out if a miner managed to enter the base and wall off their rooms. On top of all that, a message monitoring console has been added to the only telecomms random room that didn't have it, and its atmosphere has been sealed off from outside (which it wasn't for some reason). Finally, a single defibrillator has been added to the medbay ## Why It's Good For The Game The base, despite being a decent ghost spawn, would be borderline unrecoverable if it didn't get crew early in the shift. Power-wise, the RTG output was insufficient, and APCs would start losing power, until the entire base was practically non-functional. Setting the turbine at this point was also marginally harder than before, which made getting out of the powerless state unnecessarily hard. Talking about the turbine, it's a deathtrap if the crew doesn't know what they're doing. It not being necessary anymore would help the operator stay alive and be able to do whatever they joined to do. And now, even if you do die, you can be revived by your comrades with the new defibrillator available in the base's medbay. On the topic of defenses, it was rather easy for a miner with an RCD or a lava boat to cross the lake, take all the loot with minimal effort, and wall the agents inside. This is now slightly harder due to the additional turrets. On top of that, if a miner does manage to break in and take everything, a simple wall won't lock the operatives in anymore, since they now have tools to break out. Finally, the changes to the telecomms random rooms seek to let the comms agents do roughly the same things, most importantly, mess with the PDA messages. ## Changelog :cl: map: The Syndicate Lavaland base has been generally improved, with more defenses and comms equipment. /:cl: * Fixes another two missing areas on icebox (#89337) ## About The Pull Request ![image](https://github.com/user-attachments/assets/4ba1efb9-eac4-4300-a5ca-77e30bef6f7b) ## Changelog :cl: fix: Fixed another two missing areas on icebox /:cl: * Automatic changelog for PR #89231 [ci skip] * Automatic changelog for PR #89337 [ci skip] * Adds cooling loops and cold tiles to all kitchen freezers (#89245) ## About The Pull Request Makes all freezers cold roundstart (wasn't the case for Meta, Delta and Birdshot) and adds cooling loops to all freezers (those were missing from all maps bar Meta and Delta) This is a commission for @RaveRadbury <details> <summary>Previews</summary> Birdshot: ![image](https://github.com/user-attachments/assets/f00d01aa-016e-478e-992a-99722a882ea5) NebulaStation: ![image](https://github.com/user-attachments/assets/ca6e4134-d0a2-4108-aec3-8b453a3bef07) Tramstation: ![image](https://github.com/user-attachments/assets/e349a7f1-04a4-493c-b919-6101476f5e1e) Wawastation: ![image](https://github.com/user-attachments/assets/355a7199-bfc7-4256-a823-faf42e638275) Icebox has a temperature unit-less loop, instead utilizing natural cold of the ice moon: ![image](https://github.com/user-attachments/assets/aaa5ace7-b0fe-45ed-a06c-fe4d9a804f3d) </details> ## Why It's Good For The Game Map parity, makes sure that all freezers are naturally cold and stay that way throughout the shift. ## Changelog :cl: map: Added cooling loops and cold tiles to all kitchen freezers that were missing them /:cl: * Automatic changelog for PR #89245 [ci skip] * Fixes plant analyzer attack chain heck (#89352) ## About The Pull Request Closes #89187 ## Changelog :cl: fix: Fixed plant analyzers not being placeable on tables/in backpacks /:cl: * Automatic changelog for PR #89352 [ci skip] * Fix blades equipped to a void cloak having visible sprites (#89343) ## About The Pull Request Fixes https://github.com/tgstation/tgstation/issues/87345 This adds a new item trait, `TRAIT_NO_WORN_ICON`, which is exactly what it says on the tin - the worn overlay for said item will not be added when the trait is present, so we give it to items hidden by the hood. I also refactored the `EXAMINE_SKIP` item flag into `TRAIT_EXAMINE_SKIP`. ![2025-02-03 (1738625986) ~ dreamseeker](https://github.com/user-attachments/assets/5e6fec83-580b-419c-a2c6-9dd388471fec) ## Why It's Good For The Game stealth thing having an obvious sprite tell is bad. bugfix good. ## Changelog :cl: fix: Void Cloaks now properly hide blades and such in the suit storage from the wearer's sprite. /:cl: --------- Co-authored-by: MrMelbert <[email protected]> * Automatic changelog for PR #89343 [ci skip] * Fix more 516 admin byond hrefs (#89350) ## About The Pull Request Randomly spotted this while lookign at something else ## Changelog :cl: fix: fixed some admin links not working on 516 /:cl: Co-authored-by: TiviPlus <[email protected]> * Automatic changelog for PR #89350 [ci skip] * Fixes state laws on 516 (#89347) ## About The Pull Request Title. Fixes: ![image](https://github.com/user-attachments/assets/2ffa9c78-68e1-4451-b50e-b66369c7c0d5) ## Why It's Good For The Game Because it is good to have functioning UI ## Changelog :cl: fix: fixed state laws window on 516 /:cl: * Automatic changelog for PR #89347 [ci skip] * AI mobs won't suicide every time they ventcrawl (#89328) ## About The Pull Request Some kind of refactor to how AI behaviours work kind of messed this one up, all of its return values that ended the proc and stopped the suicide timer were relying on a return value... from a proc called in a timer that could never possibly get sent as the return value for the relevant proc. I fixed it to just call `finish_behaviour` instead. ## Changelog :cl: fix: AI-controlled ventcrawling mobs (botanical spiderlings and legioned monkeys) can once more do so without killing themselves shortly afterwards. /:cl: * Fixes incorrect power consumption on reagent grinders (#89336) ## About The Pull Request Only place where I found this. SECONDS is *10, so this instead multiplied the value by 10 rather than divided it ## Changelog :cl: fix: Fixed incorrect power consumption on reagent grinders /:cl: * Automatic changelog for PR #89328 [ci skip] * Automatic changelog for PR #89336 [ci skip] * Implements the missing bezerk medbot skin (#89351) ## About The Pull Request ![image](https://github.com/user-attachments/assets/2dd6f05c-8d45-46d7-90a9-b9c87ce3342f) #89341 resprited medbots but didn't resprite the bezerk bot, despite tactical medkits still applying said skin. Also removed an unused trait Closes #89341 ## Why It's Good For The Game Missing sprites are bad ## Changelog :cl: fix: Tactical medkits should no longer create invisible medbots image: Implemented the missing bezerk medbot skin /:cl: * Automatic changelog for PR #89351 [ci skip] * Fixes more scrollables for 516 (#89325) ## About The Pull Request I was looking at https://github.com/tgstation/tgstation/pull/89312 (Ghommie merged it while I was looking at it lol, this would've been a comment otherwise) and noticed a few problems: 1. There's other instances of ``style={{ overflow: 'auto' }}`` in the code, I checked them and they don't work, this fixed one instance of the 3 that exists. 2. Autolathes have 2 scrollbars, one for the whole UI and one for the item list (3 actually, one on the left for the sections) This fixes all instances, and uses overflowY instead of scrollable so it isn't there permanently. Also removes the unnecessary scrollbar to Autolathes. ## Why It's Good For The Game Fixes more UIs for 516 and removes unnecessary and annoying scrollbar from autolathes. ## Changelog :cl: fix: Autolathes no longer have a scrollbar that sends you off the screen. fix: Exosuit fabricators' queue list & Techfab/Autolathe's left side (with the sections of printables) now have a scrollbar when the full list doesn't fit on the UI for 516 users. Techfab/Autolathe also now does this for the list of items too, instead of always having one. /:cl: * Fixes stunprod's missing inhands sprite (#89339) ## About The Pull Request Closes #89338 ## Changelog :cl: fix: Fixed stunprod's missing inhands sprite /:cl: * Automatic changelog for PR #89325 [ci skip] * Automatic changelog for PR #89339 [ci skip] * [no gbp] fixes virtual pet app changing PDA's colors when open (#89333) ## About The Pull Request PDAs no longer go white when the virtual pet app is opened ## Why It's Good For The Game fixes virtual pet app changing PDA's colors when open ## Changelog :cl: fix: fixes virtual pet app changing PDA's colors when open /:cl: * Automatic changelog for PR #89333 [ci skip] * Optimizes `/proc/icon_exists()` (#89357) ## About The Pull Request This PR reimplements https://github.com/tgstation/tgstation/pull/71538 atop `master`. Quoting the original PR: > Every `icon_exists()` call will cache the entire file. Past me didn't realise _why_ file opts were so expensive, but I do now. This is immeasurably slower on a single call, and _significantly_ faster on subsequent calls to the same file. I attempted to handle some of the review comments that were posted there, by splitting screaming functionality into its own proc. * `if(icon_state in icon_states(file))` and `if(!(icon_state in icon_states(file)))` were refactored to use `icon_exists(file, icon_state)`. * Where screaming was seemingly wanted (and where there wasn't a more descriptive error inside the `if` block), I refactored them to use `icon_exists_or_scream(file, icon_state)` * The exception to the above was under `/datum/unit_test/turf_icons/Run()` and `/datum/unit_test/worn_icons/Run()`, where `icon_states()` was being passed a mode flag. Given that this is only used in unit tests (where performance isn't a priority), I opted to leave these be. Additionally, I revised the documentation comment for `/proc/icon_exists()`, as I felt it was a bit vague currently. ## Why It's Good For The Game https://youtu.be/Z9G1Mf6TZRs ## Changelog No player-facing changes (hopefully). --------- Co-authored-by: SyncIt21 <[email protected]> * Fix silicon state laws window for 516 (#89354) ## About The Pull Request Switch the state laws UI for silicons to use the browser datum cause it's just raw HTML on 516 ## Why It's Good For The Game They gotta state those laws ## Changelog * Temporary bodies return players to minds without bodies (#89323) ## About The Pull Request There are a couple of cases where ghost roles that give the temporary body component prevent you from returning to the round when they really shouldn't. The particular cases are: - You entered a temporary body while you had no body, but could be recovered via means such as podcloning - You enter a temporary body, and while in that body, your original body is permanently removed while your mind could be recovered via means such as podcloning - Basketball This PR addresses those cases by allowing the temporary body component to operate with a null `old_body`, and allowing the temporary body component to be given to ghosts whose minds don't have bodies. ## Why It's Good For The Game Erroneous DNRs caused by code oversights are probably very undesirable to the playerbase. ## Changelog :cl: fix: Joining a minigame or taking certain ghost roles, while you have a mind without a body, will no longer DNR you, just in case you can be resurrected by some means. fix: If your old body is permanently destroyed while you are playing a minigame or as certain ghost roles, you will still return to your character's original mind, just in case you can be resurrected by some means. fix: The basketball minigame now gives its players and referee temporary bodies. /:cl: * Fix runtimes with `REMOVE_TRAITS_IN` (#89344) ## About The Pull Request ok so `REMOVE_TRAITS_IN` would sometimes run with like `type mismatch: null -= /list (/list)` credit to @RikuTheKiller for actually figuring this out and fixing it, here's their explaination on what caused the issue: > okay so > its due to linked traits > like knocked out which adds other traits > when knocked out is removed, it sends a removed signal > but sending that signal modifies the list mid for loop > so now when it tries to index it on the next iteration with a trait key thats already gone > it returns null, and tries to remove a list from a null > and it runtimes ## Why It's Good For The Game `REMOVE_TRAITS_IN` is a handy macro, and it'd be nice if it reliably worked ## Changelog no user-facing changes * Automatic changelog for PR #89323 [ci skip] * Cleanup supply packs contents (#89342) ## About The Pull Request fix image display in `NT IRN` PDA app <details> <summary> Images present! </summary> ![image](https://github.com/user-attachments/assets/b9a5e733-9bc8-498e-bdaa-3531e0b142e5) </details> ## Why It's Good For The Game Bug fixes good ## Changelog :cl: fix: fix image display in `NT IRN` PDA app for preview and contents /:cl: * Automatic changelog for PR #89342 [ci skip] * Fixed wrong area/wall in Icemoon Underground - Round 3 (#89356) ## About The Pull Request ![StrongDMM_u12oSaxu6Q](https://github.com/user-attachments/assets/72df4f86-f0fb-4254-99c8-85b23701ac91) (No funny screenshot of me malding in-game this time) ## Changelog :cl: fix: Fixed wrong area/wall in Icemoon Underground /:cl: * Automatic changelog for PR #89356 [ci skip] * Automatic changelog compile [ci skip] * Small heretic patch (#89369) ## About The Pull Request Reported by https://github.com/ParadiseSS13/Paradise/pull/27873 , shoutout to them We used to check this in the distant past but it was lost across the reworks. Kinda important * Add a `DISABLE_DREAMLUAU` define, for disabling dreamluau at compile-time (#89359) ## About The Pull Request this adds a new define, `DISABLE_DREAMLUAU` (commented out by default), which does... exactly what it say…
About The Pull Request
The "Debug Controller" verb wasn't doing anything. You'd click on it, and nothing would happen.
Turns out, it was searching for controllers in the wrong place - controllers are considered globals, not part of
/world
.This PR fixes that. Now you get this fancy box instead of nothing:
(As an aside - choosing the Global Variables controller causes several seconds of lag, due to the mass amount of data that needs to be rendered. Perhaps a new verb should be added specifically for going through Global Variables?)
Why It's Good For The Game
Enables coders to debug the various controllers with less need for debug printing statements.
Why It's Terrible For The Game
Enables admins with debug permission to abuse the live server even harder.
Changelog
No player-facing changes. This regards a verb that should only be used during debugging (i.e. locally).