-
Notifications
You must be signed in to change notification settings - Fork 106
Add support for timing out HTTP calls #210
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
Conversation
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.
I assume you want this to go out in 3.x and not 4.x, correct?
Yeah it should be backwards compatible, assuming serde doesn't error on missing JSON fields |
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 really should be documented in http.dm but nothing is currently and this is somewhat urgent
…s. Adds timeouts to TTS HTTPS requests (rust-g version bump required). (#90182) 🆑 config: Added `TTS_HTTP_TIMEOUT_SECONDS` for setting the maximum duration TTS HTTP requests can run for before being aborted. /🆑 DNM because we need the rust-g PR to get released: tgstation/rust-g#210 Crit prio because rounds will not restart if there are hung TTS requests and the TTS server is absolute dogshit and doesn't prevent them.
…s. Adds timeouts to TTS HTTPS requests (rust-g version bump required). (#90182) 🆑 config: Added `TTS_HTTP_TIMEOUT_SECONDS` for setting the maximum duration TTS HTTP requests can run for before being aborted. /🆑 DNM because we need the rust-g PR to get released: tgstation/rust-g#210 Crit prio because rounds will not restart if there are hung TTS requests and the TTS server is absolute dogshit and doesn't prevent them.
…s. Adds timeouts to TTS HTTPS requests (rust-g version bump required). (tgstation#90182) 🆑 config: Added `TTS_HTTP_TIMEOUT_SECONDS` for setting the maximum duration TTS HTTP requests can run for before being aborted. /🆑 DNM because we need the rust-g PR to get released: tgstation/rust-g#210 Crit prio because rounds will not restart if there are hung TTS requests and the TTS server is absolute dogshit and doesn't prevent them.
…s. Adds timeouts to TTS HTTPS requests (rust-g version bump required). (#90182) 🆑 config: Added `TTS_HTTP_TIMEOUT_SECONDS` for setting the maximum duration TTS HTTP requests can run for before being aborted. /🆑 DNM because we need the rust-g PR to get released: tgstation/rust-g#210 Crit prio because rounds will not restart if there are hung TTS requests and the TTS server is absolute dogshit and doesn't prevent them.
…s. Adds timeouts to TTS HTTPS requests (rust-g version bump required). (#90182) 🆑 config: Added `TTS_HTTP_TIMEOUT_SECONDS` for setting the maximum duration TTS HTTP requests can run for before being aborted. /🆑 DNM because we need the rust-g PR to get released: tgstation/rust-g#210 Crit prio because rounds will not restart if there are hung TTS requests and the TTS server is absolute dogshit and doesn't prevent them.
* Automatic changelog for PR #89865 [ci skip] * Autolathes now accept alloys without disassembling them into their components (#90086) ## About The Pull Request Custom material designs cannot be printed with plasteel and other alloys because of this small issue. This should fix it. ## Why It's Good For The Game See above. ## Changelog :cl: fix: Custom material toolboxes and fishing rods can now be printed with alloys such a plasteel and plasmaglass. /:cl: * Automatic changelog for PR #90086 [ci skip] * Fix try inject message (#90148) ## About The Pull Request Lack of `parse_zone` moment ## Changelog :cl: Melbert fix: Failing to inject no longer prints a strange message /:cl: * Automatic changelog for PR #90148 [ci skip] * Refactors air alarm + minor tweaks (#89969) ## About The Pull Request Air alarm had a uselocalstate that i wanted to remove. I can't keep my grubby hands off refactoring this >500 line UI so it's now broken down into files and you get some qol out of it. check the pics <details> <summary>photos</summary> faults had the wrong text color (it's good not green) so they now match  the back button is now disabled when there's no where to return (oh no!), like at the home screen  instead of plaintext "nothing to show" you get a nicer noticebox  i removed the scrollbar from the entire window content, now only the section scrolls, this is particularly noticeable at thresholds by default. they're also candystriped now  the dialog window for changing a threshold now covers the entire screen rather than that section  </details> ## Why It's Good For The Game Removed more uselocalstate + minor UI bug fixes + refactor ## Changelog :cl: fix: The air alarm has been refactored and had some slight UI improvements. Please report any issues to the github! /:cl: * Automatic changelog for PR #89969 [ci skip] * Adds GAGS fedoras, updates all other fedora sprites to match the Detective's (+ other related tweaks) (#90132) ## About The Pull Request First just to get it out of the way, yippee, greyscale fedoras. Available in the Clothesmate. Now you can make a hat to match those custom buttondowns+suitjackets we already have.  However, because so many of the fedoras pair with other sprites, I couldn't just make all of them greyscale. Then they wouldn't quite match! So I've updated them all - most of the on-mobs are just slight tweaks to shading so they (as mentioned) match the detective fedora. The obj sprites were also changed - most are the newer sprite (again, detective's) but I opted to keep the Reporter and Curator fedoras as slightly updated old ones because those in particular feel cooler to have the wide-brims and the angle.  **Additional changes you might notice in the screenshot:** - Beige Suit had its contrast just _barely_ tweaked to match the fedora. - Carpskin hat has like 3px changed because they were stray/inconsistent - Curator's `treasure hunter jacket` had its color changed to pair with the hat. As it was, the hat being the same color would have been near identical to the detective's, and this actually matches up with the intended reference better too. (Plus it inadvertently matches the boots) - All the hats are down 1px to match the detective. With hair masks, it looks a **lot** better over hair now... <details><summary>However, for spritetainer's curiosity, this is the comparison of how it'd look if they were all up 1px</summary>  </details> <details><summary>I also had to slightly alter the mask because it originally cut off 1px too much. No visual change on the only other hat that uses it (the sec helmet) </summary>  </details> ## Why It's Good For The Game **Greyscale Fedoras** We #love customization. Players can already make their own suits, why not their own hats to match? **All the resprites** Having all of the fedoras looking similar is nice, especially with the onmob sprites' shading and obj sprites' shapes. Helps players associate the items with each other better. Plus, the curator's was _really_ soulful. As for the curator's jacket, I feel having it not be as similar to the detective's palette will make it stand out more as the unique item it is. It's a treasure hunter. Give them the admiration they deserve. **Height/Hairmask** The height is consistency - one fedora being lower than the other is confusing and almost looks like a bug. The hairmask solves the issue that lowering them previously caused - no more severe clipping with hair. ## Changelog :cl: add: Added greyscale Fedoras, available in the Clothesmate! image: Resprited most of the Fedoras - now they'll all be much more consistent with the detective's updated and sleek ones. They also all have a hairmask now, so hair will no longer clip with them! image: To pair with this, the Beige suit has been just slightly tweaked and the Curator's "Treasure Hunter Jacket" entirely recolored to better match their fedoras. /:cl: # Conflicts: # code/modules/unit_tests/screenshots/screenshot_antag_icons_spy.png * Automatic changelog for PR #90132 [ci skip] * Adds new sprites for the civilian bounty pad and pirate bounty pad. (#89957) ## About The Pull Request As it says on the tin, this PR is a new set of sprites predominantly for the civilian bounty pad.  ## Why It's Good For The Game The original bounty pads were old work of mine and haven't aged the most gracefully, this should hopefully make them look a lot nicer, with a better contrasting palette. ## Changelog :cl: image: The civilian bounty teleporter pad and pirate bounty pads now have new sprites. /:cl: * Automatic changelog for PR #89957 [ci skip] * Makes fishing rods with higher (or lower) bait speed a smidge easier to control in the minigame (#90011) ## About The Pull Request While the bait overlaps the fish during the minigame, the change in velocity will be further cut down or amplified for fishing rods that have higher or lower speed multiplier than the identity (1). ## Why It's Good For The Game Fishing rods that are supposed to be better are also made slighly more annoying or finnicky by their speed multiplier. ## Changelog :cl: balance: Makes fishing rods with higher (or lower) bait speed a smidge easier to control during the minigame /:cl: * Simplifies fish traits inheritability a little (#90014) ## About The Pull Request I'm thinking of removing some of the redundant or unnecessary bad design from fishing, especially aquariums, which are definitely a bit fringe and difficult to attend to on top of other stuff. However I don't have all time of the world so I'd rather start small, even if it isn't the main obstacle (which is keeping fish alive and getting them to reproduce in the first place). Thinking about it, the fact that some traits have a chance not to be passed down to the offspring even if both parents have them is plain bad and it's led situations where I couldn' tell if it was a bug or a feature. The solution? Forgo the probability check for traits shared by both parents. ## Why It's Good For The Game Clearly that was bad design. ## Changelog :cl: balance: Made fish traits inheritability easier. They're now guaranteed to be passed down to offsprings if both parents have them. /:cl: * Automatic changelog for PR #90011 [ci skip] * Automatic changelog for PR #90014 [ci skip] * Repair Bots now respect NODROP sheets (#90175) ## About The Pull Request Repair bots, when receiving sheets, now use `transferItemToLoc()` rather than `forceMove()`, which means they now respect things like NODROP. Thus, borgs can no longer lose their glass sheet tool into the bot. ## Why It's Good For The Game Fixes #89737 ## Changelog :cl: fix: Sheets of materials with NODROP can no longer be given to repair bots. /:cl: * Do_after cogs inherit mob alpha (#90174) ## About The Pull Request While testing #90173 I noticed that the cogs created by the progress bar in the voidwalker's "space dive" ability are completely visible even while the mob is invisible, meaning you see a very clear pair of gears floating in space which is quite silly. Initially I just set this progress bar to hidden, but then I thought "well what if you're not invisible while doing it?" as technically voidwalkers can become visible even while in space if engaged in a fight. Instead I elected to make the visible effect inherit the alpha that the mob had when it started acting. I haven't _quite_ thought through every case where this would come up, but I'm assuming that if a mob is hard to see then the things it is doing... should probably also generally be hard to see? This is a bit of a buff to various forms of invisibility which also let you act, but do_afters also weren't visible when most of those were added, so I don't know how much of a balance concern it actually is. But I'm thinking... it's probably fine! If this isn't liked then I can do something else specific to my one use case instead I guess. ## Why It's Good For The Game If you can't see the mob how can you see what it is doing? ## Changelog :cl: balance: The action animation indicating someone is performing an action with a progress bar now inherits how visible they are. You won't easily see a pair of gears floating in space if a Voidwalker starts diving under the station. /:cl: * Fixes PDA / Bag actions (#90172) ## About The Pull Request These have multiple slots you'd use them from ## Changelog :cl: Melbert fix: PDA flashlight action button is given in any slot fix: Bag action button is given in any slot /:cl: * fix inverted autolathe check (#90170) ## About The Pull Request Inserting disks into the autolathe would only work if you interrupted the do_after, because the check was inverted. Now it isn't. ## Changelog :cl: fix: Disks will now be inserted into the autolathe if you successfully insert them, rather than if you do not succeed in inserting them. /:cl: * "S"pellcheck for massses (#90161) ## About The Pull Request  massses ## Why It's Good For The Game ~~1 free gpb~~ spellcheck ## Changelog :cl: spellcheck: fixed a typo in actor role conditions /:cl: * If you are upside down, you ignore elevation (#90147) ## About The Pull Request If you have the `UPSIDE_DOWN` movetype, you ignore elevation changes. Cuz yknow, you're on the roof. ## Changelog :cl: Melbert fix: Being atrocinated ignores elevation from tables and such /:cl: * Fix an edge-case that could result in heretic mark effects not being removed (#90140) ## About The Pull Request So, last night, I discovered an interesting edge-case after being attacked by two heretics: if you have a mark applied, then a heretic on a different path also applies a mark, the second mark will replace the first _without the effects from said mark being cleaned up_. This could lead to, for example, permanent pacifism if the first mark was the moon path mark. This makes it so heretic mark status effects are _properly_ removed before being replaced. ## Why It's Good For The Game bugged permanent pacifism sucks ## Changelog :cl: fix: Fixed an edge-case where, if two heretics of different paths applied a mark to the same person, the effects from the first mark (i.e moon path's pacifism) would likely be permanent. /:cl: * Automatic changelog for PR #90175 [ci skip] * Automatic changelog for PR #90170 [ci skip] * Automatic changelog for PR #90174 [ci skip] * Automatic changelog for PR #90161 [ci skip] * Automatic changelog for PR #90147 [ci skip] * Automatic changelog for PR #90140 [ci skip] * Fixes sanity hallucinations not working after 3 years (#90179) ## About The Pull Request So #70311 never actually did anything because it used SANITY_CRAZY and not SANITY_LEVEL_CRAZY, and sanity_level only goes up to 6 (SANITY_CRAZY is 25). Yeeeah. ## Why It's Good For The Game Its supposed to be a rare cool low sanity effect but because of an oversight it never worked, so see original PR's justification? ## Changelog :cl: fix: Being at low sanity will actually give your hallucinations as intended. /:cl: * Cleans up crafting code, fixes multiple bugs (#90157) ## About The Pull Request Cleaned up an unnecessary proc on base crafting datum, fixed balloon sutra-exclusive items being craftable by anyone, air sensors being only craftable via search, crafters adding a second comma when failing to craft something and missing capitalization in slapcrafting errors. ## Changelog :cl: fix: You can no longer craft balloon armor and weapons without knowing Balloon Sutra fix: Air sensors now show up in atmospherics category spellcheck: Fixed grammar/capitalization in crafter/slapcrafting error messages code: Cleaned up some crafting code /:cl: * Robotact is now at the top of Borg PDA screens (#90171) ## About The Pull Request Robotact is now at the top of borg PDAs' main screen. Same as Messenger for crew PDAs.  ## Why It's Good For The Game Robotact is just as important to borgs as Messenger is to carbons, so we should make it easier to find at a glance. ## Changelog :cl: qol: Cyborg PDAs' home screens now have Robotact at the top of the screen. /:cl: * Makes your current position clearer while jaunting (#90173) ## About The Pull Request I was fucking around testing the Voidwalker earlier for a different issue and didn't like that I couldn't see myself while in space. This PR makes it so that Voidwalkers and also any variant of Ethereal Jaunt place an icon visible only to you at your current position (it's like your _soul_) so that you can see where you are going. Nobody else can see it.   There are almost certainly some other sources of being invisible which could use this so let me know if you are aware of one. Although if you do that I may need to make my code more generic. ## Why It's Good For The Game It's nice to be able to see where you are precisely rather than just it being the centre of the screen ## Changelog :cl: qol: It is now easier to see where you currently are while jaunting /:cl: * Automatic changelog for PR #90179 [ci skip] * Automatic changelog for PR #90157 [ci skip] * Automatic changelog for PR #90171 [ci skip] * Automatic changelog for PR #90173 [ci skip] * Reworks the Big Manipulators UI (#90139) ## About The Pull Request Reworks the Big Manipulator UI, because it looked kinda... wonky, not gonna lie. <img src="https://github.com/user-attachments/assets/883e26f2-9bdb-46c0-aff4-6888b9ff4bba" width="30%"></img> <img src="https://github.com/user-attachments/assets/7ffbb14e-5852-470a-a5cc-c77995db3162" width="30%"></img> <img src="https://github.com/user-attachments/assets/3da74a71-0f4b-436b-9267-60bdb6842c85" width="30%"></img> ## Why It's Good For The Game Cleaner UI is always much more pleasant to use or even look at ## Changelog :cl: refactor: Reworked the Big Manipulators UI /:cl: * Automatic changelog for PR #89543 [ci skip] * Automatic changelog for PR #90139 [ci skip] * Fixes jittering resetting the wrong pair of visual offsets (#90189) ## About The Pull Request Jittering has been transitioned to pixel_w/z, so we should use that instead. ## Changelog :cl: fix: Fixed jittering resetting the wrong pair of visual offsets /:cl: * Smartfridge/Vending machine layouts auto-update rather than be a setting (#90159) ## About The Pull Request Sorry for my incompetence with TGUI. This comes from a comment I made here https://github.com/tgstation/tgstation/pull/89137#issuecomment-2601185587 & https://github.com/tgstation/tgstation/pull/89160#pullrequestreview-2566047191 Instead of having to go to your game settings, find the option of layout style you want your vending/fridge machines to be, and change it without having a UI to show you the difference, now the preference is tied to the in-game UI; Clicking to swap to the other layout mode will automatically update your prefs and stay until you change it again. I also separated smartfridges and vending machines as 2 separate prefs so players can have grid on one and list on the other. I couldn't figure out a way to implement this without adding a new var on base ``/datum``, if you got other possible solutions I'd be happy to try. I thought of making 'layouts' limited to smartfridge/vending machines, taking it out of backend for all UIs, but thought I should avoid that if possible in case future UIs want to make use of it. If it's better than a var on datum I'm fine taking that path instead. https://github.com/user-attachments/assets/921586fa-1ec1-49c0-87ca-ec4bbb6aaa98 ## Why It's Good For The Game The settings list having these small options that you can't even see the effects of until you find the machine in-game is a little lame, now players don't even have to think about it, they simply set it to the mode they want as they use the machine and it'll update itself for the player. Currently using the button to swap to list/grid mode instantly reverts itself as soon as you close the UI, which is a little lame. ## Changelog :cl: qol: Smartfridges and Vending machines no longer have a setting to change the list/grid mode, it instead updates automatically as you swap the mode in-game. /:cl: * Mappers can disable bookshelf randomization, Non-adult shelves can no longer random into adult books (#90165) ## About The Pull Request 1. Mappers can disable bookshelf randomization 2. Bookshelves which are not explicitly marked as "adult bookshelves" can no longer randomly load "adult" books 3. Random books can no longer random into "adult" books ## Why It's Good For The Game 1. If a mapper is placing a bookshelf with the express attention only x type books will be in that bookshelf, they can guarantee that by changing `category_prob`. 2. If the intention behind bookshelves are that "you have to go out of your way to find the adult category to read an adult book", we probably shouldn't add flat 25% chance for all bookshelves to be unmarked adult bookshelves? 3. Similar logic - if you get a random book in the mail and crack it open and it's an adult book, you can't really say you were "asking" for it ## Changelog :cl: Melbert qol: Mappers can now disable bookshelf randomization qol: Random books found via mail or in maint will no longer random into books from the "adult" section qol: Bookshelf randomization will now exclude adult books unless marked as adult /:cl: * Automatic changelog for PR #90189 [ci skip] * Small autoreel (and cloaked?) fishing line(s) buff (#90032) ## About The Pull Request The autoreel fishing line now nudges the bait up/down lightly towards the fish position at 20% of the reeling velocity when idle, which is most likely not enough to defeat gravity but enough to help with control unless for maybe a couple of ultra-light material for fishing rods like snow. May or may not trivialize the minigame a bit when tied with a gyroscopic hook. We'll see if that's even a problem. The cloaked fishing line is actually way more transparent now, and a smidge better at catching fish with the anxiety trait (only the zappy fish so far...) and not only those with the wary trait. ## Why It's Good For The Game I feel disappointment knowing I had it called "autoreel" yet it doesn't do that muh during the actual minigame, only affecting the portion before it. Also cloaked lines aren't that hard to notice rn smh. ## Changelog :cl: balance: Autoreel fishing lines do what their name implies and nudges the bait towards the fish a little during the minigame when you're not pressing the mouse button. Also cloaked lines are more transparent, and better at catching a certain fish... /:cl: --------- Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> * Automatic changelog for PR #90159 [ci skip] * Automatic changelog for PR #90165 [ci skip] * Automatic changelog for PR #90032 [ci skip] * [s] Tape recorders cannot record other tape recorders. (#90206) ## About The Pull Request This has been used to cause some issues on Manuel, an exploit to harm the server. This also bumps the minimum delay between played messages to 1 second, to reduce spam a bit when there are a lot of messages in a short amount of time. Also, a very modest improvement for the hearing sensitive trait, which is only needed when recording. ## Why It's Good For The Game Ngl, I'm sure that, with enough patience, someone could still use them to cause some problems via other means of recording and playing messages en masse, but I'd rather not go nuclear on the tape recorders and I overkill them. It's also getting late and I don't have the time for anything more robust than this. Also the code seems overall pretty old and due for a refactor. ## Changelog No, thank you. * Modifies Space Crawl Criteria (#90167) ## About The Pull Request Closes #90163 Space Crawl previously decided if you were in space by identifying your location as either a space turf or a "misc" turf, an arbitrary typepath that coincidentally is often but not exclusively used for turfs that are outside. This is only coincidentally accurate and fails, for instance, in the tram underpass specifically if you are stood on the sandy asteroid tiles but _not_ if you are stood on the grass tiles, which is a pretty weird inconsistency. It really shouldn't work there at all. Additionally, there are often _non_-misc turfs outside too, meaning that you can space crawl on exterior asteroid tiles but not exterior plating tiles for some reason. _Now_ it will function under the following criteria: - You're on a space tile. - You're in an outdoor area with low pressure, This preserves the existing behaviour where this ability functions on icebox and lavaland, but closes the weird outliers both in and outside. Unfortunately as the tram underpass is classified as outside for some reason (it shares the area as exterior asteroid) then venting it will let you spacecrawl there... but then again, if it's vented then arguably it is in fact in space? This would be easier if this ability was just dogshit on Icebox so I could also check if there is gravity but unfortunately players probably wouldn't like that. ## Why It's Good For The Game Hopefully makes the ability work in a more consistently understandable way. ## Changelog :cl: balance: Space Crawl now functions if you are on a space tile, or if you are in an outdoor area with low air pressure. /:cl: * Automatic changelog for PR #90167 [ci skip] * Slightly refactors the Cortex Imprint bioware (#90154) ## About The Pull Request I slightly refactored the Cortex Imprint bioware - instead of ticking every 2 seconds, it now just registers `COMSIG_CARBON_GAIN_TRAUMA`, and blocks any basic resilience trauma from even being added - in addition to curing all basic resilience traumas upon being gained. I also added a `COMSIG_CARBON_BLOCK_TRAUMA` value, which is exactly what it says on the tin, and also pass the resilience arg to `COMSIG_CARBON_GAIN_TRAUMA`. ## Why It's Good For The Game this doesn't need to tick i dont think, so, like, why not just use a signal? ## Changelog :cl: code: Slightly improved the code for the Cortex Imprint bioware. /:cl: * Automatic changelog for PR #90154 [ci skip] * Correct some documentation referencing TGS4 (#90205) * Fix icon_exists erroring on runtime icons (#90126 ) ## About The Pull Request The logic here is incorrect, /icon attempting to stringify an icon produces results in a string with "/icon" rather than the assumed empty string. Instead, we'll just check if the file arg is already text. ## Changelog N/A * Fixes the detective office shutters on icebox (#90184) ## About The Pull Request Fixes the det's shutters on icebox ## Why It's Good For The Game broken = bad ## Changelog :cl: fix: Fixes the det's shutters on icebox /:cl: * Fixes tool_act returns on reflectors (#90185) ## About The Pull Request These two should be ITEM_INTERACT_BLOCKING to prevent accidentally bashing them when failing to use the tool for whatever reason ## Changelog :cl: fix: Fixed failed wrench/welder interaction attempts resulting in you attacking reflectors /:cl: * Fixes darkness adaptation not refreshing eye status correctly (#90180) ## About The Pull Request Was registered to an incorrect proc, so it didn't refresh eyes when moving around nor was it starting the cooldown, so ticks double dipped and unnecessarily refreshed invis. ## Changelog :cl: fix: Fixed darkness adaptation not refreshing eye status correctly /:cl: * Fixes incorrect offsets on wide items' attack animations (#90187) ## About The Pull Request Looks jank if you hit something with like, a Sakhno, not sure what else to add. ## Changelog :cl: fix: Fixed incorrect offsets on wide items' attack animations /:cl: * Automatic changelog for PR #90184 [ci skip] * Cleans up mood and mood-related code (#90162) ## About The Pull Request One of my upcoming PRs affects a significant chunk of the codebase so I'm cleaning up messes that I've found along the way. This PR adds wrappers for adjusting sanity/checking if a mob already has a certain moodlet, fixes an oversight where attempting to set sanity over passed maximum would abort the change outright (instead of actually capping it out), moved jolly and depression processing into quirks themselves (instead of having dedicated traits for them used solely by said quirks and nothing else that are constantly checked for by mood datums), and rewrote how blessings return their results to move omen's deletion on blessing effect from constantly checking mood for a blessing moodlet to a comsig. ## Why It's Good For The Game Less jank handling of certain mechanics, we ***really*** shouldn't be checking for blessings every time mood of all things is updated. ## Changelog :cl: fix: Adjusting sanity over the allowed maximum will no longer completely halt the change, and instead actually cap it at the maximum value. code: Cleaned up mood and mood-adjacent code. /:cl: # Conflicts: # code/__DEFINES/mobs.dm * Automatic changelog for PR #90185 [ci skip] * Automatic changelog for PR #90180 [ci skip] * Automatic changelog for PR #90187 [ci skip] * Automatic changelog for PR #90200 [ci skip] * Automatic changelog for PR #90162 [ci skip] * fixes a spelling error and a grammar error (#90197) ## Why It's Good For The Game I like grammar :cl: spellcheck: fixed a typo and a grammar error /:cl: * Fixes a typo for the chemical separator (#90194) ## About The Pull Request Hi! I saw a typo and I'm trying to figure out how to set up git so please hit me with a big hammer if I did this wrong ## Why It's Good For The Game I don't like it when my reagents cool fater ## Changelog :cl: spellcheck: Fixed a typo for the Chemical Separator /:cl: * Automatic changelog for PR #90197 [ci skip] * Automatic changelog for PR #90194 [ci skip] * Fix ship ambience volume slider acting like an on/off switch (#90153) ## About The Pull Request The code that uses the ship ambience volume slider uses the value in the wrong SEND_SOUND call (one of the ones to stop the current playing ambience) meaning the slider actually does nothing but toggle between ship ambience being off and it being full volume. This fixes that ## Why It's Good For The Game Volume make sound louder or quieter ## Changelog :cl: fix: fixed the ship ambience volume slider not working properly /:cl: * Automatic changelog for PR #90153 [ci skip] * Allows for AI shells to get the tracking message that AIs get for comms (#90145) ## About The Pull Request Moves the Track href for AIs from the ai topic proc to the silicon topic proc and allows for AI shells to get the track href in their chat for radio as well. This will, of course, boot the AI out of their shell and back to their core when they click it. ## Why It's Good For The Game QoL for AIs so if someone wants them to track them, or they want to track someone speaking on comms they don't need to leave their shell then also search for the person in the camera list (if they were in a shell at the time) ## Changelog :cl: qol: AI shells can track people now too /:cl: --------- Co-authored-by: Odairu <39929315+Odairu@users.noreply.github.com> * Automatic changelog for PR #90145 [ci skip] * bloodless species now take damage from bone chiller (chilling green) (#90137) ## About The Pull Request Bloodless species now take brute damage from using the bone chiller (chilling green) ## Why It's Good For The Game they don't have blood, which makes the weapon infinite use for them (unintended afaik) fixes #90118 ## Changelog :cl: fix: bloodless species no longer have a free bonechiller /:cl: --------- Co-authored-by: Odairu <39929315+Odairu@users.noreply.github.com> * Automatic changelog for PR #90137 [ci skip] * Moves material item insertion to right click for material containers (#90188) ## About The Pull Request Inserting material (i.e. made from a material, but not a material sheet/stack) items into material containers/remotes (ore silos, autolathes, protolathes, etc) now uses right click instead of left click. You still insert sheets using left click. ## Why It's Good For The Game Its super easy to end up having your guns (which are made out of iron) or armor (also made out of armor) or disks (also made out of iron) eaten by an autolathe as you try to click a table next to it. This should resolve players' frustrations while keeping material item insertion an option via right clicking. ## Changelog :cl: qol: Moved material item insertion to right click for material containers /:cl: --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> * Automatic changelog for PR #90188 [ci skip] * Color Code Audition: Human rendering hates me (#89702) This trainwreck of a PR is (hopefully) a final solution to all rendering jank stemming from the new filter-based coloring system. I went over every single instance of RESET_COLOR, either adding KEEP_APART or rewriting them entirely so they render properly. I've also fixed blood rendering issues by utilizing alpha filters and adding an abstract "holder" appearance for worn items, which holds blood overlays on worn clothing as to avoid coloring it. I've also fixed horrible inconsistencies with atmos pipe coloring as a result (of getting sucked down that rabbit hole) and converted all uses of COLOR_VERY_LIGHT_GRAY in atmos code to ATMOS_COLOR_OMNI to avoid confusion. MODsuit modules still get colored into MOD unit's color, need to refactor their rendering for this. Closes #88989 Closes #87526 Closes #89837 :cl: refactor: Audited all remaining coloring code - among noticeable changes, blood should no longer get colored or "leak out" of item bounds, atmos pipes no longer color weirdly and repairbots are white again. /:cl: * Automatic changelog for PR #89702 [ci skip] * Removes "jaunt_out_time" from ethereal jaunt (#90169) ## About The Pull Request This PR removes the temporary immobilisation applied to users of Phase Shift and Ashen Passage upon casting it. Having to wait 0.6 (or 1.6 for phase shift) seconds before moving is basically just sort of annoying and doesn't provide any particular benefit that I can see, as it does not really add any additional time where anyone can do anything about you jaunting away. This does not effect the visuals, which still play, or buff the duration of the spell, as the timer would only start once the immobilisation had ended. This also doesn't effect the immobilisation when you _exit_, which still exists unchanged and _is_ necessary for the animation to look good. ## Why It's Good For The Game This delay made the spells more annoying to use than necessary and I personally don't think it added anything visually to have this synchronised with an animation which will continue to play at the space you left, _especially_ in the case of Ashen Passage. ## Changelog :cl: qol: Users of Ashen Passage and Phase Shift will be able to move instantly upon cast rather than after a delay /:cl: * Automatic changelog for PR #90169 [ci skip] * Removes 516 warning from the statpanel (#90215) ## About The Pull Request Removed the 516 warning from the statpanel, and updated incorrect compiler warning note about 517 experiments. ## Why It's Good For The Game Our servers now nag you to update to 516, makes no sense to have a warning saying that you should downgrade. ## Changelog :cl: code: Removed the 516 beta warning entirely /:cl: * Automatic changelog for PR #90215 [ci skip] * Fixes fake feedback link if db calls fail (#90209) ## About The Pull Request We were nullchecking this instead of falsey checking it (TAKE THAT ISNULL POSTERS) so it'd see FALSE, go "oh that's not null", and then try and link clients to 0. Dumb * Fixes flickering on Access Button/Access Controller (#90208) ## About The Pull Request Simple enough. The actual frame's outline was flickering to be darker. Also sorted the .dmi a bit because why were 2 intercoms at the bottom instead of with every other intercom ## Why It's Good For The Game Sprite bug fix ## Changelog :cl: fix: fixed some tiny sprite flickering on two atmos wallmounts /:cl: * Fixes constant runtimes caused by large internals boxes station trait (#90213) ## About The Pull Request Not sure if any outfits except admin-ones runtimed? Happened because box size was increased after init and not after creating storage but before populating it. The combat-ready box constantly runtimed due to The Wardrobe trying to create it for an outfit and repeatedly failing, which got annoying in testing real fast. ## Changelog :cl: fix: Large internals station trait no longer prevents admin-specific internals boxes from spawning /:cl: * Fixes vendor machine glass shards being permanently stuck in people (#90210) ## About The Pull Request Closes #90204 ## Changelog :cl: fix: Fixed vendor machine glass shards being permanently stuck in people /:cl: * Prosopagnosia now uses ID card names (if present) instead of always Unknown (#90198) ## About The Pull Request This changes Prosopagnosia a bit - instead of people _always_ appearing as Unknown, if they have an ID, they'll appear as the name's ID, albeit with a question mark next to it, i.e "Captain?" or "John Doe?"   Also, this lets you see your _own_ name when self-examining / hovering over yourself, 'cuz it's not like you can see your own face anyways, you kinda just know you are you. ## Why It's Good For The Game you can see the ID card while examining anyways - nothing says you can't recognize IDs, just faces. ## Changelog :cl: qol: Players with the Prosopagnosia quirk will now see the ID name (if there is one) examining someone, instead of ALWAYS Unknown, altho it'll have a question mark, i.e "John Doe?" qol: Prosopagnosia no longer makes you see yourself as Unknown. /:cl: * Automatic changelog for PR #90208 [ci skip] * Automatic changelog for PR #90213 [ci skip] * Automatic changelog for PR #90210 [ci skip] * Automatic changelog for PR #90198 [ci skip] * Expands on the functionality of !do_after and allows you to make custom cog icons (#90225) ## About The Pull Request This PR makes the cog icon an argument inside the ``do_after()`` proc which allows you to override it for custom cogs. ## Why It's Good For The Game Wouldn't it be cool to have little custom progross icons displayed to other people? I don't have any sprites now to do this but I would like this to be a thing. ## Changelog :cl: code: do_after() can now hold custom cog icons. Add some today! /:cl: * Patch applications now log their contents when applied (#90211) ## About The Pull Request Fixes #90143 * Automatic changelog for PR #90225 [ci skip] * Fix the `ispath` SDQL2/Lua wrapper (and add a `is_type_in_typecache` wrapper) (#90207) ## About The Pull Request This fixes the `_ispath` SDQL2 / Lua wrapper: it always passed two arguments, meaning it couldn't be used to just simply check if something was a path _at all_. In addition, I just added wrapper around `is_type_in_typecache` (as it's a define), as that's the whole reason I was using `_ispath` anyways, so it can't hurt. ## Why It's Good For The Game things working properly is nice ## Changelog :cl: fix: The _ispath SDQL2/Lua wrapper can now be used to actually check if something is a path. code: Added the _is_type_in_typecache wrapper, for SDQL2 / Lua scripts. /:cl: --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> * Automatic changelog for PR #90207 [ci skip] * Updates door remote accesses + descriptions, implements logic for area-specific remote operation, moves remote definitions to the top of control_wand file (#90079) This updates door remote accesses to match the accesses of their owner -- research remote = RD access, and so on. However, the Captain's door remote does not inherit this increased access, and is still relegated to command areas like the bridge, AI upload, etc. As well, it implements a logic for a given "domain" per remote holder, based on high-security areas that are iconic of the given role. As such, even though they may have access to the Vault, no other Head besides the Captain can open the Vault with their remote, the head remotes (beside security) can't open the brig (Captain didn't have access anyway), and so on. The restricted areas and the remote with authority to open that area are as follows: **Captain** - The whole station - Note: Still restricted by the remote access, which is: Bridge, Vault, AI Upload, Teleporter, Gateway, Captain's Office, EVA Head of Personnel - Gets no special "domain" for their remote, but otherwise receives HoP's round-start access Head of Security - Security Chief Engineer - Gets no special domain, because no other Head roundstart trims receive access to the CE's high-security areas of Engine or Atmospherics (besides Captain, who has a neutered remote already) Research Director - AI Upload, AI Core Chief Medical Officer - No special domain for the same reason as Chief Engineer; no other heads have unmitigated medical access Also updated remote descriptions with allusions to stereotypes/jokes for a given head (Captain's authority is dubious, QM is not a Real Head, Security remote was stolen from HoS by resentful Warden, HoP disappears more than Carmen Sandiego, CMO shouldn't have a medical license, RD is absolutely jacked) Finally, moved the remote definitions to be above the sheer cliff of the ranged interaction proc in the control_wand file. Makes remote access have parity with the access of their respective head of staff, while at the same time allowing other Heads of Staff to retain their own control over doors in their department areas. :cl: Bisar balance: Door remotes now match the access of their owner (except for the Captain, whose remote access is unchanged). Door remotes, however, respect the high security area control of other remotes; as such, even if a Head can enter an area like the brig, only the Security remote works to open the entrance. /:cl: * Automatic changelog for PR #90079 [ci skip] * Fixes techweb scrolling cutting off the last node (#90239) ## About The Pull Request Biome seems to have butchered the file, but I've just swapped the nodes into a scrollable section instead of relying on scrolling through 100%d flexes (where two top elements moved the techweb down) Closes #90220 ## Changelog :cl: fix: Fixed techweb scrolling cutting off the last node /:cl: * Automatic changelog for PR #90239 [ci skip] * Some minor Big Manipulator refactors (#90240) ## About The Pull Request guh I accidentally broke the manipulator while refactoring the UI because ALL OF A SUDDEN, one of three options is actually two options that are not in any way connected although they should be. And also there are three variables for storing action delays (???). I believe it's not about GBP in the first place, it's about taking responsibility for your own fuck-ups, so here I am. Removed some reused value variables, better autodoc readability, renamed some procs and variables, made more things into constants. ## Why It's Good For The Game  ## Changelog :cl: refactor: Minor Big Manipulator code refactoring /:cl: --------- Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> * Automatic changelog for PR #90240 [ci skip] * Use volcanic tiles (#90214) ## About The Pull Request Tiles on lavaland should use the volcanic turf type so they spawn with atmos and don't crush miners with low pressure when they mine them out ## Why It's Good For The Game I like not being crushed ## Changelog :cl: Goat fix: Clown biodome on lavaland uses lavaland turf now for the bananium ore. /:cl: * Fixes ai multicam room being pitch dark on multiz maps (#90242) ## About The Pull Request Title. ## Why It's Good For The Game Actually working multicam room ## Changelog :cl: fix: fixed AI multicam room on multiz maps not showing anything /:cl: * Automatic changelog for PR #90214 [ci skip] * Automatic changelog for PR #90242 [ci skip] * Refactors MODsuit slowdown calculations (#90116) MODsuits now calculate their slowdown by querying modules by sending a signal on themselves instead of having modules try and keep up with control unit's speed updates (which broke in a fabulous fashion after MODsuits were allowed to deploy by piece) Also added a separate trait to prevent objects from being speed potion-ed to combat stabilized red crossbreed issues, and removed a duplicate list helper (40 lines down in the same file lol) Closes #89979 Closes #90036 :cl: fix: MODsuits should now be affected by stabilized red crossbreeds fix: MODsuit slowdowns should no longer behave weirdly with ash accretion/magboots/armor booster modules. refactor: Refactored MODsuit slowdown calculations to be query-based instead of modules directly modifying part speed values. /:cl: * Automatic changelog for PR #90116 [ci skip] * corrects a wiring issue with wawa's port bow solars (#90223) ## About The Pull Request Fixes #90218 The tiles with solar panels now have cables underneath, and some intermediate cables have been removed. See mdb. The array is now repairable without prying up floor tiles. ## Why It's Good For The Game It's easier to set the array up, even if marginally. You come to expect there being a cable under each panel, since that's how it is everywhere else. ## Changelog :cl: fix: Wawastation's port bow solar array now has a cable under all panels by default. /:cl: * Automatic changelog for PR #90223 [ci skip] * Adds some heretic influence examine lines (#90236) ## About The Pull Request Examining an influence gives you a sp00ky message rather than an empty box ## Why It's Good For The Game Worldbuilding? ## Changelog :cl: Melbert qol: Examining a heretic influence gives you a sp00ky message rather than an empty box /:cl: * Automatic changelog for PR #90236 [ci skip] * Move `/world/Genesis` to the top of the dme (#90255) ## About The Pull Request okay so genesis actually needs to be first. i did a bit of an experiment to see exactly what's called first. `/world/proc/genesis_test` was just a `world.log << "[x]"` wrapper in this test top of the dme: ```dm /world/proc/_a2() var/static/_ = world.genesis_test("a2") /world/proc/_z2() var/static/_ = world.genesis_test("z2") ``` bottom of the dme: ```dm /world/proc/_a1() var/static/_ = world.genesis_test("a1") /world/proc/_z1() var/static/_ = world.genesis_test("z1") ``` here's the output: ``` Welcome BYOND! (5.0 Public Version 516.1659) genesis testa2 genesis testz2 genesis testa1 genesis testz1 World loaded at 01:38:36! ``` so yeah, seems being included FIRST is correct. to avoid any sort of potential accidental sorting/moving/priority shenanigans, genesis itself is now in a `.dme` file, that is included just below the header of the dme, before `// BEGIN_INTERNALS` ## Changelog No user-facing changes. Or even noticeable by most coders. * Automatic changelog for PR #90251 [ci skip] * Hotfix for IRV votes not submitting on 516 (#90285) ## About The Pull Request Fixes #90273 we relied on the post request sending the form data over the url, apparently this was the default behavior in ie11 but edge changed the form data to be sent in the http body, because browser standards i guess this is bad for us though because it breaks voting since the form data does not appear in the topic anymore. this PR changes the form submission method to get, which correctly submits form data again. proof of testing on localhost:  (the long line on the bottom of the log is me suibmitting my result to the form, also note how the "Vote successful." message shows up in the chat) ## Changelog :cl: fix: Players on 516 can submit votes for IRV again. /:cl: * Automatic changelog for PR #90285 [ci skip] * Fixes some shoe procs being verbs (#90250) ## About The Pull Request Closes #90229 * Automatic changelog for PR #90250 [ci skip] * Fixes a hypothetical respawn exploit (#90259) ## About The Pull Request Fixes a hypothetical respawn exploit that I figured out yesterday. Credits to MrMelbert for suggesting it!  ## Why It's Good For The Game fixes THIS https://github.com/user-attachments/assets/b412fc58-4dcb-4810-aa4f-9128d86073dc ## Changelog :cl: fix: fixed an extremely hypothetical, yet possible respawn exploit /:cl: * Automatic changelog for PR #90259 [ci skip] * Terror Unification: Converts all "fear" quirks and traumas (except item phobias) to use a unified handler (#90217 ) ## About The Pull Request This PR adds the fearful component which acts as a unified handler for terror effects. This currently includes nyctophobia and claustrophobia quirks, terrified status effect from nightmare's spell, and the monophobia brain trauma. The component processes terror handler datums which act both as terror sources and effects - jittering, stuttering, vomiting, panic attacks, etc. This means that nyctophobia and claustrophobia now act more like terrified status/monophobia - causing jitters, stuttering, periodic panic attacks, etc, and their effects stack (i.e. being in a closet in the dark will increase your fear much quicker). Closes #37492 Closes #57121 Closes #69684 ## Why It's Good For The Game Terrified status is very immersive and its effects perfectly fit nycto/claustrophobia quirks, enough to be impactful to owner's gameplay, but not roleplaying for them, which is what we want quirks to be. It also makes them share their stress, which is how you'd expect them to act. (I would also love to see monophobia moved from a brain trauma to a quirk, as it perfectly fits latter instead of former, and acts as a great incentive to interact with other people instead of doing autism projects by yourself.) I haven't moved phobias to this system yet, but it could be done in the future without too many issues - should make phobias less painful to deal with, and maybe make people actually interested in playing around them instead of rushing a lobotomy because of how debilitating they are (currently only interaction is getting hugged by someone you're afraid of, which will increase your terror) ## Changelog :cl: add: Nyctophobia and Claustrophobia quirks now have proper terror effects instead of making you walk/suffocate. Immersion! refactor: All sources of "terror"/"fear" now use a common component, meaning they share their counters. /:cl: * Automatic changelog for PR #90217 [ci skip] * [NO GBP] Fixes blue space on lower Z levels (#90251) ## About The Pull Request Closes #90191 ## Changelog :cl: fix: Fixed blue space on lower Z levels /:cl: * bulldog iconstate rename fix thing (#90200) ## About The Pull Request removes errant _mag from icon state name ## Why It's Good For The Game fix <!-- 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: live donk Fréchette rounds and m12gsl bulldog magazine sprites look less like ERRORs. /:cl: * Remove weird passive aggressive historical wording in CONTRIBUTING (#90292) It's really clunky to read and doesn't get to the point. Nobody cares about whatever drama happened before Github told me to request copilot's suggestion so I hope it says something funny * Pathfinding Visualization, JPS fixes, Misc Improvement (#90233) ## About The Pull Request [cleans up poor namespacing on light debugging tools](https://github.com/tgstation/tgstation/commit/93cc9070d56ee4dbeb600ebd4616b047adf9d648) [Implements a pathfinding visualization tool](https://github.com/tgstation/tgstation/commit/ed91f69ac42a92329c10ccdbba308d213fc8c759) It holds a set of inputs from the client, and uses them to generate and display paths from source/target. Left click sets the source, right click sets the target. Pathmap support too, if no target is set we display the paths from every turf in the map to the source, if one is set we build a path TO it from the source. I had to add COMSIG_MOB_CLICKON to observers to make this work (tho idk why it didn't exist already), I also removed the everpresent colorblind datum from admin datums, only needs to exist if they're using it. [Adds a mutable_appearance helper that dirlocks them, wallening port which I thought might be useful here, and will likely be useful elsewhere in future](https://github.com/tgstation/tgstation/commit/87f752e7c361ff47d62452f2f1ea805458f71b66) [Fixes an infinite loop in pathmaps if we tried to pull a cached path to an unreachable target, && not || 4head](https://github.com/tgstation/tgstation/commit/10086a655df817c9f4494f9aac879c85a6059719) [Fixes JPS not dealing with border objects properly. They violate some of the assumptions JPS makes, so we need to backfill them with checks. These basically read as (if the thing that should normally take this path can't reach this turf, can we?)](https://github.com/tgstation/tgstation/commit/f56cc4dd434cecee89879aea500bd1c9d2f38ce6) ## Why It's Good For The Game Maybe deals with #80619? Adds more robust testing tools for pathfinding, should allow people to better understand/debug these systems. I added this with the idea of adding multiz support but I don't have the time for that rn. JPS will work around thindows better, that's nice. https://file.house/IrBiR0bGxoKw1jJJoxgMRQ==.mp4 ## Changelog :cl: fix: Fixed our pathfinding logic getting deeply confused by border objects admin: Added clientside displayed pathfinding debug tools, give em a go /:cl: * Automatic changelog for PR #90233 [ci skip] * Fix ByondUI small map preview (#90277) This PR should fix the problem of small previews in TGUI once and for all (I hope). What was causing it? Because TGUI takes a long time to open, that's why previews were generated broken (small). On Byond 515 this problem was not so noticeable as the interfaces opened faster, but with the release of 516 it became much worse. Previews were generated inside a window that was not yet open, so the scale was broken, sometimes the window would open before the preview was done and sent, usually with small interfaces, or when reopening. I'm not very good at working with signals, and to tell the truth this is my second experience with them, so I hope I did it right. No more small map previews <details> <summary> Video </summary> https://github.com/user-attachments/assets/834f3820-cc6a-4f65-90e5-d6bb2a118bcf </details> :cl: fix: Fixed small character preview, color matrix preview, mech preview, and other previews with uses ByondUI map /:cl: Co-Authored-By: Gaxeer <44334376+Gaxeer@users.noreply.github.com> * Automatic changelog for PR #90277 [ci skip] * The big fix for pixel_x and pixel_y use cases. (#90124) 516 requires float layered overlays to be using pixel_w and pixel_z instead of pixel_x and pixel_y respectively, unless we want visual/layering errors. This makes sense, as w,z are for visual effects only. Sadly seems we were not entirely consistent in this, and many things seem to have been using x,y incorrectly. This hopefully fixes that, and thus also fixes layering issues. Complete 1:1 compatibility not guaranteed. I did the lazy way suggested to me by SmArtKar to speed it up (Runtiming inside apply_overlays), and this is still included in the PR to flash out possible issues in a TM (Plus I will need someone to grep the runtimes for me after the TM period to make sure nothing was missed). After this is done I'll remove all these extra checks. Lints will probably be failing for a bit, got to wait for [this update](https://github.com/SpaceManiac/SpacemanDMM/commit/4b77cd487d0a7b6a069df20356b701af5b20489d) to them to make it into release. Or just unlint the lines, though that's probably gonna produce code debt Fixes this massive 516 mess, hopefully. closes #90281 :cl: refactor: Changed many of our use cases for pixel_x and pixel_y correctly into pixel_w and pixel_z, fixing layering issues in the process. /:cl: Co-Authored-By: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-Authored-By: SmArtKar <master.of.bagets@gmail.com> * Automatic changelog for PR #90124 [ci skip] * tgui: Lazy load icon ref map (#90270) ## About The Pull Request This restructures how tgui initially renders, making it more react-like as it loads in an App component. I can now lazy load the icon ref map using react.suspense, which should shave off some time from that initial render of tgui considerably, as it no longer waits for the asset to fetch before displaying the window. Later, I'd like to use this as the springboard to replace how we handle backend data by making it context/state based. + made some code stylistic changes that i can revert if this is too much ## Why It's Good For The Game The code is more legible to people that are modern react brained And (no guarantees) tgui's initial page load should be faster ## Changelog N/A * Fixes broken overlays on dismembered bodyparts (#90283) ## About The Pull Request For some reason we forcefully assigned south direction for overlays on dismembered bodyparts, despite them being fully capable of rotating. Fixes this  Credits to Mal/Vinylspiders for finding this ## Changelog :cl: fix: Fixed weird overlay positioning on dismembered bodyparts /:cl: * Automatic changelog for PR #90283 [ci skip] * Fixes incorrect indentation in blob victory code (#90282) ## About The Pull Request We ***really*** shouldn't be iterating over all areas for every single mob. No wonder this lags like hell. ## Changelog :cl: fix: Fixes incorrect indentation in blob victory code which could cause immense lag as a result /:cl: * Automatic changelog for PR #90282 [ci skip] * Fix vendor stock bug, make vendor dispensing behaviours apply more (#90266) ## About The Pull Request So #90246 was caused purely because vendors don't actually reduce the stock when dispensing returned items: https://github.com/tgstation/tgstation/blob/c0204da3da7388d9a0b28523a66b83bcc7a29f23/code/modules/vending/_vending.dm#L1464-L1467 While this could've been a single line fix by just decrementing the stock like how returned items are handled elsewhere, instead we collapse all these cases into being handled by `dispense(...)` so it's harder for this to happen again. We make this a parameter because different dispensing methods have different priorities. As a side, we make it so `on_dispense(...)` forwards whether or not it's a returned item, because logically mothroach infestations would still snack on your clothes even if they're just returned. I felt it best to make them deal less damage to returned clothes in that case. ## Why It's Good For The Game Fixes #90246. Fixes #89104. Good if the special vendor stuff gets applied when items are thrown too Being able to cycle items through the mothroach clothing gnawing machine is funny ## Changelog :cl: fix: Dispensing a returned item from a vendor actually reduces the amount of stock for that item. fix: Special vendor dispensing behaviours get applied to thrown items. fix: Special vendor dispensing behaviours actually get applied to returned items where applicable. /:cl: * Automatic changelog for PR #90266 [ci skip] * Fix potential CORS issues with webroot transport on BYOND 516 (#90256) ## About The Pull Request css also needs `node.crossOrigin = 'anonymous';`, at least in my case. credit to @hry-gh for pointing this out to me ## Why It's Good For The Game bluescreen = bad working = good ## Changelog :cl: Absolucy, hry-gh fix: Fixed a potential bluescreen error relating to stylesheets on BYOND 516. /:cl: * Automatic changelog for PR #90256 [ci skip] * Fixes singleletter vars in mobs.dm and blood.dm (#90284) Just found this whilst working on something else downstream, why not fix it Something something readable bleeding. :cl: code: The mobs subsystem and blood.dm file for living mobs no longer use single letter vars /:cl: * Automatic changelog for PR #90284 [ci skip] * mystery_box_item is now a type of /obj/effect/abstract (#90258) ## About The Pull Request Retypes the object, attaches it to the crate as a vis_overlay, and gives it the correct vis_flag to share the plane. This also means it now layers correctly on multiz, when previously it would show up on the lowest level. ## Why It's Good For The Game /obj/ is not meant to be bloated with stuff that can easily be an effect. Also fixes a bug ## Changelog :cl: fix: Mystery box items no longer layer on the lowest z_level when in multiz code: mystery_box_item is now a type of /obj/effect/abstract /:cl: * Automatic changelog for PR #90258 [ci skip] * Logs fuel pools being ignited deliberately. (#90232) ## About The Pull Request Fuel pools now log their igniter. ## Why It's Good For The Game We log when motor oil spills and similar ignitable items are burned. This is no different. ## Changelog :cl: admin: Added logging to fuel pools being ignited by someone deliberately. /:cl: * Automatic changelog for PR #90232 [ci skip] * Lets drones use silicon emotes (#90276) ## About The Pull Request That's about it, gives drones the right to beep boop and buzz. ## Why It's Good For The Game They're tiny little robots, they should be able to make robot noises. Fun way to attempt very basic communication should someone start chasing you with a newspaper ## Changelog :cl: qol: Drones can use silicon emotes /:cl: * Automatic changelog for PR #90276 [ci skip] * Fix some instances of trying to directly qdel lists (#90227) this fixes a bunch of code incorrectly calling qdel directly on a list, and adds a stack trace to qdel if someone does pass a list to it because I'm pretty sure qdel ends up calling fucking `del()` as `/list` is not a `/datum` No user-facing changes. * Change hardcoded ice/snow temperatures values to use `ICEBOX_MIN_TEMPERATURE` define (#90228) ## About The Pull Request Several variables in the code had hardcoded temperature vars set to 180 when it should just use the `ICEBOX_MIN_TEMPERATURE` define that is used to indicate a 180 temp. ## Why It's Good For The Game No hardcoded values. ## Changelog :cl: code: Change some hardcoded ice/snow temperature variables that were set to 180 to use `ICEBOX_MIN_TEMPERATURE` instead. /:cl: * Automatic changelog for PR #90228 [ci skip] * You can pick up desk bells (#90186) ## About The Pull Request 2 years and 9 months ago it was suggested that the UX for attaching a bell to a wheelchair was unintuitive.  Today I am finally implementing that feature request. This PR lets you pick up desk bells by dragging them onto yourself. After picking up a desk bell you can ring it by using it in your hand, hit someone with it (which also rings the bell), attach it to a wheelchair, or throw it at someone (which also rings the bell). _Also_ now if you fold up your wheelchair the bell falls off, instead of being deleted forever. ## Why It's Good For The Game If ringing the bell repeatedly doesn't get someone's attention you can now physically hurl the desk bell at their head, which should be more effective. Also people were saying on my other PR that they had no idea that you even could attach desk bells to wheelchairs, this will hopefully make it more intuitive. ## Changelog :cl: add: You can pick up desk bells by dragging them onto yourself. This is now how you attach them to wheelchairs, instead of dragging it onto the wheelchair. fix: Folding a wheelchair with attached bell will drop the bell to the ground instead of deleting it forever. /:cl: * Automatic changelog for PR #90186 [ci skip] * Experiscanner tsx (#90278) ## About The Pull Request Just made it a typescript ui in the process of fixing the scroll wheel Fixes #90308 (dupe) Fixes #90272 (dupe) Fixes #90265 Removed flex (deprecated) ## Why It's Good For The Game it scrolle  ## Changelog :cl: fix: Fixed scrolling the experiscanner UI /:cl: * Automatic changelog for PR #90278 [ci skip] * [No GBP] World Topic tweaks. Scrutinize this heavily (#90244) ## About The Pull Request - In ``/datum/world_topic`` sets the variable ``require_comms_key = TRUE`` so any new world_topics handlers will need to be deliberately set otherwise. - Added some documentation to help educate any future contributors (especially on downstreams) the sensitivity of bad world.topic() code. - Sets the default config to log topic calls. (This should really be split into its own log file later) ## Why It's Good For The Game Lingering security education is a good thing to have. ## Changelog Not player facing * Reword the Pushover quirk's description to be more accurate (#90289) ## About The Pull Request Exactly what it says on the tin. `TRAIT_GRABWEAKNESS` doesn't care if you're resisting via the verb/button, or by trying to move while grabbed, it acts the same regardless. "Resisting out of grabs will take conscious effort" can easily be interpreted as "you have to use the resist verb/button to escape like normal", when this is not the case. I've reworded that part to "Resisting out of grabs is noticeably more difficult.", to make it clear that resisting out of grabs _in general_ is more difficult. ## Why It's Good For The Game makes things clearer for players ## Changelog :cl: qol: Reword the Pushover quirk's description to be more accurate to how it actually works. /:cl: * Automatic changelog for PR #90289 [ci skip] * Prevent admins from using restart option which can leak DB connections. Adds timeouts to TTS HTTPS requests (rust-g version bump required). (#90182) :cl: config: Added `TTS_HTTP_TIMEOUT_SECONDS` for setting the maximum duration TTS HTTP requests can run for before being aborted. /:cl: DNM because we need the rust-g PR to get released: https://github.com/tgstation/rust-g/pull/210 Crit prio because rounds will not restart if there are hung TTS requests and the TTS server is absolute dogshit and doesn't prevent them. * Automatic changelog for PR #90182 [ci skip] * modular fix removed * …
* Routine Update PR (tgstation#167) * Standardize redis_reliablequeue connect/disconnect output (tgstation#150) * More routine updates (tgstation#169) * IconForge - Building spritesheets at the speed of light (tgstation#160) * iconforge beta * Start blending * Huge cleanup * Finish optimizing the thing * Finish the thing!! * Clean up a bit * Re-add 32-bit thing * Fix TOML sorting * Add dmsrc * Fix clippy suggestions * Clippy.. stop being mean * Cargo fmt + doc comments * Code cleanup * More cleanup, remove most unsafe unwrap()s, use Match syntax. * Remove unneccesarily verbose casting * Fix overlay blending * Cleanup with new DMI version * Cargo fmt * Leaf test, DynamicImage->RgbaImage, better Error handling, DashMap, and cleanup command * Fix * Further tree optimizations, hashing optimization, cache icostrings more effectively. * Optimize unique_icons insertion a little * Fix macro * Little more cleanup * Add to README * Update dmi, add caching logic. * Address reviews * Cleanup panic unwind * Fix lint failure * Fix bounds expansion crops, and properly index crops from 1,1 * Don't multiply by alpha if the base alpha is 0 * Fix subtract blending * Don't hash the same DMI 500 times * Address reviews * Clippy fix * v3.2.0 (tgstation#170) * Adds `sanitize_html`, a whitelist based HTML sanitizer. (tgstation#171) * Adds batchnoise to the default features set (tgstation#174) * Typical Routine Updates (tgstation#175) * Add task for building on windows (tgstation#176) * v3.3.0 (tgstation#177) * Fast poisson sampling (tgstation#178) Co-authored-by: ZeWaka <zewakagamer@gmail.com> * Add format argument to git revdate ffi (tgstation#179) * Add method of parsing revdate for HEAD directly from logs (tgstation#180) * use lines not split (tgstation#181) * Windows 7 (tgstation#183) * Allow compiling non-32bit under feature flag (tgstation#184) Co-authored-by: ZeWaka <zewakagamer@gmail.com> * 32bit readme (tgstation#186) * v3.4.0 (tgstation#187) * Fix a panic in `byond::parse_args` with debug assertions (tgstation#189) * chore: routine updates (tgstation#190) * more assorted package updates because bored (tgstation#191) * last-minute updates (tgstation#193) * v3.5.0 (tgstation#194) * iconforge: Use height() for y axis to support non-square icons (tgstation#197) * Add building of x64 libs to CI (tgstation#200) * Add hash and iconforge as default features (tgstation#196) * IconForge: GAGS (tgstation#188) * 64 bit lib detection (tgstation#202) * update mysql crate, trims a lot of deps (tgstation#203) * Reset to correct versions * IconForge: Sort GAGS output states (tgstation#206) * IconForge: Improve GAGS frame/dir difference handling (tgstation#207) * gamer release workflow * v3.7.0 (tgstation#208) * Fix release upload paths * fully correct and rename files in CI/CD * Massively optimizes `dmi_icon_states` (tgstation#209) * Add support for timing out HTTP calls (tgstation#210) * v3.8.0 (tgstation#211) * fix default release name while i remember * Feature: rustg_sound_length() (tgstation#192) * update `rand` to `0.9`, `cargo update` (tgstation#204) * Adjust CI to match our workflow * Fix outdated upload-artifact version --------- Co-authored-by: ZeWaka <zewakagamer@gmail.com> Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com> Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com> Co-authored-by: Lucy <lucy@absolucy.moe> Co-authored-by: tigercat2000 <nick.pilant2@gmail.com> Co-authored-by: Amy <3855802+amylizzle@users.noreply.github.com> Co-authored-by: Jordan Dominion <Cyberboss@users.noreply.github.com>
…s. Adds timeouts to TTS HTTPS requests (rust-g version bump required). (#90182) 🆑 config: Added `TTS_HTTP_TIMEOUT_SECONDS` for setting the maximum duration TTS HTTP requests can run for before being aborted. /🆑 DNM because we need the rust-g PR to get released: tgstation/rust-g#210 Crit prio because rounds will not restart if there are hung TTS requests and the TTS server is absolute dogshit and doesn't prevent them.
…s. Adds timeouts to TTS HTTPS requests (rust-g version bump required). (tgstation#90182) 🆑 config: Added `TTS_HTTP_TIMEOUT_SECONDS` for setting the maximum duration TTS HTTP requests can run for before being aborted. /🆑 DNM because we need the rust-g PR to get released: tgstation/rust-g#210 Crit prio because rounds will not restart if there are hung TTS requests and the TTS server is absolute dogshit and doesn't prevent them.
/tg/ TTS is fucked and hanging requests which is blocking shutdown.
Add support for optional timeouts