Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Fixes the trimline decal (#88995) * Automatic changelog for PR #88995 [ci skip] * Automatic changelog compile [ci skip] * Ethereals: Standardize defines, lower hunger rate, refactor charging methods (#88960) ## About The Pull Request Man. ### Standardizing Ethereal Defines The _single_ biggest issue with all of the recent Ethereal prs has been that, well, none of our Ethereal defines meaningfully tie to each other, and as shown repeatedly it's _incredibly_ easy to the others when changing one of them. To resolve this, we introduce a `STANDARD_ETHEREAL_CHARGE` define that every single other Ethereal define is scaled around, which itself is tied to `STANDARD_CELL_CHARGE`. Now these can be changed without immediately blowing up everything else, and with awareness that they tie back to something. As a side to this, we redefine all reagent-based charge recovery to be relative to `ETHEREAL_DISCHARGE_RATE` rather than an arbitrary power level, so it's easier to compare them to how quickly an ethereal discharges. ### Adjusting Ethereal Defines Previously, we defined `ETHEREAL_DISCHARGE_RATE` as `8e-3 * STANDARD_CELL_CHARGE` per second, while defining `ETHEREAL_CHARGE_FULL` as `2 * STANDARD_CELL_CHARGE`. With some math, we get that we'd `2 / 8e-3 = 250 seconds`, 4 whole minutes, to go from full charge to none at all. It only takes half as much to get hungry, and about 3 minutes to start taking toxin damage from roundstart. So we slash this by eight, to `1e-3 STANDARD_ETHEREAL_CHARGE`, giving us a nice 16-17~ minutes until we're hungry, and another 16-17~ until we are 100% out of charge. This is also closer to the pre-power-rework discharge rate. What made this _worse_ was that the Ethereal APC charge define `ETHEREAL_APC_POWER_GAIN` wasn't updated to match the current charge/discharge levels, still being at `10 * STANDARD_CELL_CHARGE`, which due to how it was coded led to it being impossible for Ethereals to recharge from APCs. We first and foremost change this to `0.1 * STANDARD_ETHEREAL_CHARGE`, which is roughly equal to what it was before the most recent change, and actually falls in line with Ethereal charge levels. ### Refactoring Ethereal Charge Methods APC and Power Store recharging were both performing some awkward checks, which led to our primary issues above, where they would refuse to even attempt to charge if the stomach couldn't handle a full load or the cell didn't have a full load. So we rewrite their entire method to instead check how much can be charged by taking the minimum of the cell charge, stomach used charge, and charge-per-step. We do this instead of just discharging it and taking the return value, as the stomach may not have enough space for the cell's power, and that'd get wasted. This rewrite also allows us to address a small list of bugs. We keep the `to_chat` for power store draining, as it better communicates that this method is imperfect than a balloon alert would. # Testing:<br>I spent an extended period of time looking at Ethereals slowly starve in front of me with a stopwatch in hand. ## Why It's Good For The Game Fixes #88934. Fixes #88977. 16-17~ minutes is a _lot_ more bearable than 2-3~ minutes, and more in line with discharge rates before the power rework. Having Ethereal charging stuff actually work is nice. ## Changelog :cl: balance: Ethereal hunger rate has been adjusted to be 1/8th of its previous rate, now taking roughly 16-17~ minutes to go down from full to normal or normal to none. Ethereal defines have been standardized to help keep this sane. refactor: Ethereal APC and power store draining/charging methods have been refactored. Please report any issues. fix: Ethereal APC and power store draining/charging no longer arbitrarily caps out at slightly below or above the max/min. fix: Ethereal APC draining/charging no longer runtimes when there is no cell or it gets removed mid-charge. fix: Ethereals can no longer continue charging their stomach even if it gets surgically removed from them mid-charge. fix: Ethereal power store draining actually updated the charge level overlay. qol: Ethereal APC and power store draining displays a balloon alert when it can't continue for whatever reason. /:cl: * Automatic changelog for PR #88960 [ci skip] * ProcArgumentGlobal pragma as error from warning (#88992) ## About The Pull Request Makes OD2211 as an error since it fixes a byond bug that nobody should be using ``` New Pragma: OD2211 - ProcArgumentGlobal A new pragma has been added for detecting this BYOND bug: https://www.byond.com/forum/post/2830750 When a proc argument begins with /var/ instead of var/, it creates a global variable instead of an argument. /datum/proc/foo(/var/bar = 5) return /proc/main() world.log << global.bar // This prints 5 in BYOND Since this is obviously nonsense, elevating this pragma to an error is strongly encouraged. I have only found it in one SS13 codebase so far. ``` * Changed job post-equip order to fix station trait issues (#88890) ## About The Pull Request Closes #88692 A bit of a tricky one, this fixes station traits using incorrect names for jobs. Moved name changing to run before the parent proc, and also moved comsig after job traits so that it truely runs after job spawning, not in the middle of the process (in case something removed or changes job-related traits) ## Changelog :cl: fix: Station traits no longer use clown and mime's human names (they're not human) /:cl: * Automatic changelog for PR #88890 [ci skip] * Fixes chameleon cards not updating sechud icons (#88899) ## About The Pull Request Closes #88510 Also fixed incorrect icon positioning on Big Brother's trim (Human AI) and medieval punpun icon flickering ## Changelog :cl: fix: Fixed chameleon cards not updating sechud icons image: Fixed human AI's and medieval punpun's ID trims /:cl: * Automatic changelog for PR #88899 [ci skip] * SaturnX no longer destroys player's retinas (#88906) ## About The Pull Request This PR reduces the strength of SaturnX's radial blur effect, and makes it use sine easing instead of extremely jumpy elastic easing. Before: https://github.com/user-attachments/assets/3f617916-d6d6-4d03-97f8-8a999d568303 After: https://github.com/user-attachments/assets/b7333f24-7663-4fb8-89e3-e0c5f3232e7b ## Why It's Good For The Game Invisibility may be strong, but it also requires you to drop all of your items, including held ones, to truely be invisible. This filter is too much of a downside/visual effect and needs to be tuned down, as its strong enough to make you dizzy just from looking at it. ## Changelog :cl: balance: Significatly tuned down SaturnX's visual filter's strength /:cl: * Automatic changelog for PR #88906 [ci skip] * Allows admins to filter observable mobs by ckey (#88922) ## About The Pull Request Adds ckey sorting akin to how you can look someone up by their name or job in the observer menu, only available for admins. ## Why It's Good For The Game Wine said it would be mad useful, no reason not to - they can already observe people by ckey via the ``Who`` verb, this just adds a cleaner way to do so. ## Changelog :cl: admin: Admins can now filter observable mobs by ckey /:cl: * Automatic changelog for PR #88922 [ci skip] * Improves mindbreaker toxin description (#88990) ## About The Pull Request Improves mindbreaker toxin's reagent description. ## Why It's Good For The Game Grammar is hard. ## Changelog :cl: spellcheck: Improved mindbreaker toxin description /:cl: * Automatic changelog for PR #88990 [ci skip] * [NO GBP] Blinking no longer stacks lizard overlays (#89015) ## About The Pull Request update_body_parts_head_only is broken and doesn't clean overlays, resulting in lizard blinking stacking their frills and snouts infinitely, breaking the overlay cap and turning them into error sprites. This is pretty bad for perf as update_body is somewhat expensive, but this is a hotfix as lizards who emote right now turn "invisible" as they become walking error sprites ## Changelog :cl: fix: Lizards no longer turn into error sprites when blinking /:cl: * Fix calibre define text (#89014) ## About The Pull Request Fixes bug inadvertently reported by forum screenshot. Two defined ammo calibre strings had underscores in them, however this are occasionally printed to users and thus can and should just use spaces. ## Changelog :cl: spellcheck: Foam Force's brand management team require us to remove an erroneous underscore which was in violation of their logo usage terms and conditions. /:cl: * Automatic changelog for PR #89014 [ci skip] * Fixes all luminescent fluid giving unnaturally red eyes on overdose, instead of just the red one (#89009) ## About The Pull Request While reading the code to answer a technical question I noticed that luminescent fluid had its `overdose_start(...)` proc defined twice: https://github.com/tgstation/tgstation/blob/91981e151c75f3e971951612f161e81f9898f5b8/code/modules/reagents/chemistry/reagents/other_reagents.dm#L3227-L3235 https://github.com/tgstation/tgstation/blob/91981e151c75f3e971951612f161e81f9898f5b8/code/modules/reagents/chemistry/reagents/other_reagents.dm#L3237-L3247 ...The latter of which permanently applying the unnaturally red eyes trait. Given the proc is defined twice, and the latter comes immediately after the red subtype that gives the same trait on metabolize, it looks like it was intended to be for the red subtype only. This fixes that. ## Why It's Good For The Game Fixes jank. ## Changelog :cl: fix: Only red glowstick fluid gives permanent unnaturally red eyes on overdose. /:cl: * Automatic changelog for PR #89009 [ci skip] * Fixes custom vendors not displaying custom item names (#88985) ## About The Pull Request Something that's really bugged me for a while, custom vendors don't display custom names on items. Nobody cared enough to fix this but me. Guess you can count on me, eh? Tested this on my own private server, worked fine. The items still technically merge by type, so if you place one item with a custom name first, then another of the same type with no custom name OR with a different custom name, the newly inserted item's listed name will override the other until it's bought. ## Why It's Good For The Game Fixes https://github.com/tgstation/tgstation/issues/84937 / https://github.com/tgstation/tgstation/issues/83151 (technically) ## Changelog :cl: fix: A single enthusiastic chemist hell-bent on selling chemicals to his co-workers single-handedly solved a programming issue with our custom vendors. They'll begin displaying custom names (such as those provided by labels) once more. /:cl: * Automatic changelog for PR #88985 [ci skip] * ink kisses now delete the spawned projectile (#88981) ## About The Pull Request If you ink kissed a obj there would be a floating ink spit as it did not delete the projectile. This is now fixed ## Why It's Good For The Game bugg ## Changelog :cl: fix: ink kisses now delete the spawned projectile /:cl: * Automatic changelog for PR #88981 [ci skip] * Deprioritise phobias in two sources of random trauma (#88958) * Automatic changelog for PR #88958 [ci skip] * Adds an off-by-default config option to optionally disable TTS audio on whispered speech. (#88826) ## About The Pull Request Adds an off-by-default config option to optionally disable TTS audio on whispered speech. ### Ignore the Wallening. It's an old branch and I like to be nostalgic of what could've been. https://github.com/user-attachments/assets/f97aad31-9a83-421f-a3f0-0c0e54256664 ## Why It's Good For The Game We're trying to claw back as much performance as possible from our TTS engine and there's literally no reason to play TTS audio if nobody but the person speaking into the radio is going to hear it. Requested by the host. Config is off by default. ## Changelog :cl: sound: Adds an off-by-default config option to optionally disable TTS audio on whispered speech. /:cl: * Automatic changelog for PR #88826 [ci skip] * Add mousetraps cargo crate to service category (#88983) ## About The Pull Request Low cost cargo crate that is filled with 3 boxes of mousetraps. It's apart of the service category. ## Why It's Good For The Game Threatening the rat king with using all the station budget to stop his army should be achievable. Ordering cats was very disappointing. ## Changelog :cl: add: Rat kings across the station tremble in fear since mousetraps have been added to the cargo crate via service category. /:cl: * Automatic changelog for PR #88983 [ci skip] * Automatic changelog compile [ci skip] * Heretics dream of objects around unused influences (#89003) ## About The Pull Request ![image](https://github.com/user-attachments/assets/5fee2111-289b-46c6-82f8-096fcfadc50f) ![image](https://github.com/user-attachments/assets/1402896d-4d39-4168-a105-7d28bd199999) ![image](https://github.com/user-attachments/assets/20a7a1fd-3f63-4657-9834-0f568f241490) Heretics can now traverse Mansus in their dreams to see into the real world through the perspective of unused essences, if any. They get a mood debuff for five minutes while doing so, and dream regularly until recovered. ## Why It's Good For The Game Essences sometimes spawn in closed locations (like vault, telecomms, toilet room) and stay untapped till the end of the round. This change should promote a more covert way of gaining a roundstart knowledge boost for heretics. They may dream of completely random and useless objects, but it will still help them to know that there is still an unused essence somewhere. ## Changelog :cl: add: Heretics can now get clues about objects around unused influences in their dreams, with a 5 minute cooldown /:cl: * Automatic changelog for PR #89003 [ci skip] * Fixes broken instances of overflowY for 516 (#89022) ## About The Pull Request After updating to 516, I tried messing around with some stuff, and found the Uplink didn't have a scrollbar. Looking into it, I noticed 515 still had it, so I looked at what was giving it the scrollbar in the first place, ``overflowY``, and (with the great help of Aylong) found it was a problem with the individual UIs using it. Therefore, I went through all instances of it to make sure they work, here's all UIs that broke, and what I did. - Oresilo: Replaced with ``scrollable``, also made it a Section instead of a Box. - PersonalCrafting: Uses it twice, first one works as intended, second one doesn't. Updated to work & changed the UI a bit. Video demonstration below - TelecommsMonitor: Replaced with ``scrollable``. - GenericUplink: Replaced with ``scrollable``, no longer uses auto, so it's always 'scrollable' even if it's on compact mode. I changed the Crafting UI so the buttons at the bottom left don't get cropped out anymore, making good use of our scrollable element. Before: https://github.com/user-attachments/assets/de074634-4bb9-4013-ac65-869b05fce2cc After: https://github.com/user-attachments/assets/e20a7377-69d2-41d1-a042-f79194dcc6f7 Though this doesn't really do anything, I did test this on 515 just to be 100% sure nothing breaks. ## Why It's Good For The Game Scrolling works in these few instances on 516 now, few less things to deal with later. I think it's better to use scrollable where ``overflowY`` is not needed because it's what we use more so it's easier to spot when it breaks in the future. ## Changelog :cl: fix: Fixed the ability to scroll for Ore silo's logging, personal crafting's material section, telecomms monitors, and traitor uplinks for clients on 516. /:cl: * Automatic changelog for PR #89022 [ci skip] * Stack crafting images (#89020) ## About The Pull Request - Stack crafting got images, and a redesign, as it now uses the ImageButtons component instead of the usual buttons - Search will no longer stop the character when opening the stack crafting menu - Icon into SearchBar component now centered ## Why It's Good For The Game Images greatly simplify interactions with interfaces, especially those where it is desirable to see what you are doing (crafting) So... better UI/UX :high: ## Demostration ![image](https://github.com/user-attachments/assets/0b2b1aab-06eb-4ed4-91f2-eae3b23aac96) <details><summary> Video with almost all materials </summary> https://github.com/user-attachments/assets/6e0e90b7-064a-48de-afe9-9e097abaa011 </details> ## Changelog :cl: qol: Stack crafting UI got images qol: Search in stack crafting UI will not take control from you, feel free to craft on walk /:cl: --------- Co-authored-by: Jeremiah <[email protected]> * Automatic changelog for PR #89020 [ci skip] * Gives cult's blood barrage unique sprites (#88942) ## About The Pull Request ![image](https://github.com/user-attachments/assets/9b4a2487-2604-4ce0-a2c4-7185c3a68bb4) It now uses blood bolts instead of mini leaper bubbles for projectiles ## Why Is This Good For The Game Leaper bubbles look seriously out of place ## Changelog :cl: image: Cult's blood barrage has received new sprites /:cl: * Automatic changelog for PR #88942 [ci skip] * One Meta Decal Fix (#89005) * Fixes bluespace fishing rod issues. (#89016) * Automatic changelog for PR #89016 [ci skip] * Fixes fake nuclear disks escaping the digital world. (#89001) * Automatic changelog for PR #89001 [ci skip] * Fix emag not working on secure briefcases and safes (#88824) ## About The Pull Request I swear this functionality existed a while back and got lost due to a refactor. Regardless both secure briefcases and safes can now be emagged if either are locked. I also adjusted the secure briefcase sprite to give it the glowing green/red button near the handle to indicate when it's locked. The emag icon is just a few black pixels. Edit - Turns out I was right and not crazy! Git blame shows this feature already existing but it got lost when storage components got refactored. ## Why It's Good For The Game Locks must be broken! ## Changelog :cl: fix: Fix emag not working on secure briefcases and safes image: Tweak secure briefcases sprite to have glowing red/green pixels for lock. Added broken black pixels to signal briefcase/safe are emagged. /:cl: --------- Co-authored-by: Zephyr <[email protected]> * Automatic changelog for PR #88824 [ci skip] * Automatic changelog compile [ci skip] * [s] Records / PAI patching (#89049) ## About The Pull Request I don't think the PAI one is actually a major issue but it might be so I'm just bein safe Anyways sanitizing input is probably a good * Adds a barbot seat projector to Wawa's bar (#88923) ## About The Pull Request ![image](https://github.com/user-attachments/assets/6cdf66c6-eb47-4060-bb81-6670e469b3ce) ## Why It's Good For The Game Map parity, you'd expect to be able to do your job roundstart. ## Changelog :cl: fix: Added a barboat seat projector to Wawa's bar /:cl: * Automatic changelog for PR #88923 [ci skip] * Makes icebox's cargo warehouse on par with other stations (#88900) ## About The Pull Request This makes cargo's warehouse on Icebox overall on par with other stations, by extending its size and increasing its loot ![image](https://github.com/user-attachments/assets/8aaa6709-3211-4a36-aba4-f109acb36db6) Previously it looked like this: ![image](https://github.com/user-attachments/assets/4ac3038d-4210-4244-9e3a-0bed43bd0be8) ## Why It's Good For The Game Gives cargo technicians more of a reason to use it rather than just loot it all roundstart and leave it to rot away It also gives them their Big Bess APLU ripley-thing which carries crates all around the station, this is found on every map except Ice Box until now. ## Changelog :cl: qol: Gives cargo their APLU Big Bess on Ice Box Station map: Extended and revamped cargo's warehouse on Ice Box Station /:cl: * Automatic changelog for PR #88900 [ci skip] * Fixes wawa's xenobio reagent grinders being inaccessible (#88905) ## About The Pull Request They get offset by tables already Closes #88550 Closes #87096 ## Changelog :cl: fix: Fixed wawa's xenobio reagent grinders being inaccessible /:cl: * Automatic changelog for PR #88905 [ci skip] * Charge up Tram's TCOMMS SMES (#88993) ## About The Pull Request Replaces the SMES in Tram's TCOMMS room at (105, 080, 1) for a fully charged variant ## Why It's Good For The Game Currently without touching the station's main SMESes that supply the powernet, the SMES in Tram's TCOMMS room remains powered for about 3 minutes with another 1 minute on the APC before it shuts down equipment power. 4 minutes to attend to the powernet while setting up the SM is Quite Bad(TM). Replacing the 8% charge SMES for a full variant increases the time to depower to over 30 minutes, giving the station plenty of time to communicate and force entry into engineering as the rest of the station runs out of power around them to rig the engine themselves, which would be Quite Good(TM). ## Changelog :cl: fix: NanoTrasen telecomms technicians operating on Tram class stations have been reminded not to charge their power tools directly from their TCOMMS SMES /:cl: * Automatic changelog for PR #88993 [ci skip] * [Icebox] Remaps Tech Storage, Public Mining, and Nearby Maint (#88873) ## About The Pull Request - Tech storage now sits where Public Mining used to be - Public Mining now sits where Tech Storage used to be - The maintenance between Old-tech-storage-now-public-mining and cargo/telecomms has been reworked <Details> <Summary> Pictures Within Click Me Pictures Within Click Me Pictures Within Click Me Pictures Within Click Me </Summary> ![image](https://github.com/user-attachments/assets/70e61176-b50f-4dc8-ba50-ded285897b6b) ![image](https://github.com/user-attachments/assets/8f7f61b8-7b5c-4593-b2e5-e4ae06f1dbe2) </Details> ## Why It's Good For The Game I did this for three primary reasons 1. Public mining on Icebox is weird. It's claustrophobic and weirdly, in a high security area (the core of the station) when all it really has is a ladder 2. Tech Storage has not been touched since it was Box. The floor is still plating for god's ake 3. Secure Tech Storage is extremely extremely unsecure. Back when it was Box it at least had a space gap, but on Icebox anyone can weld a few walls/windows and get access to the AI upload / comms console board. This addresses all of the above. Now, secure tech storage is located on a lower moat, being slightly harder to penetrate by the average joe, but potentially more open up to heists (such as by busting in from the back wall or by attempting to bridge over the moat). Meanwhile Tech Storage itself can still be breached by cutting one of the soft walls on either side of the door. It's slightly less stealthy than before but it already wasn't very stealthy. Public mining now has a bit more room to stretch its legs as well, having a bit more of a landing on the second floor than a one tile wide hallway. This should also help prevent the main hall from being firelock'd randomly. ## Changelog :cl: Melbert add: [Icebox] Reworked Tech Storage add: [Icebox] Reworked Public Mining /:cl: * Automatic changelog for PR #88873 [ci skip] * Fix a few wall mounted issues on icebox (#88980) ## About The Pull Request Remove a few instances of duplicated wall mounted items and moves the light switch in engineering shared storage because it's covered by the APC. ## Why It's Good For The Game Gotta click the light switch ## Changelog :cl: map: fixed the lightswitch in Ice Box shared engineering storage being covered by the APC. /:cl: * Automatic changelog for PR #88980 [ci skip] * Metastation cargo maintenence (#88668) ## About The Pull Request For MetaStation: Removes a wire that went under a wall between Qm's office and maintence. Removes a redundent disconected scrubber in the Cargo office Moves a camera in science lobby so its not eaten by the Experimental Destructive Scanner when someone scans somthing. Lavaland: Connects scrubber in the mini hydroponics to network. ## Why It's Good For The Game Noticed most of these immeditaly after #87968 was merged just normal fixs to redundent wires and pipes. Not sure if AI get messaged when the camera is eaten by machinery but it probbaly shouldnt be. ## Changelog :cl: map: Metastation Science lobby camera moved away form Experimental Destructive Scanner(It was geting eaten on scan) fix: Lavaland base hydroponics scrubber attached to its network with missing pipes map: Redundent disconnected scrubber in cargo office removed on Metastation map : Cable remove from under wall of Qm office on Metastation /:cl: * Automatic changelog for PR #88668 [ci skip] * Updates the Turreted Outpost space ruin (#88957) ## About The Pull Request Updates the Unnamed Turreted Outpost space ruin ![image](https://github.com/user-attachments/assets/1b60c320-437e-45a1-84e3-938c3e6eb6ea) Old version: ![image](https://github.com/user-attachments/assets/58c37c44-106e-409e-92db-6ff43a35e23a) It has received a slight improvement in loot quality (SC/FISHER disruptor in the armory and a couple of syndicate corpses - one with a neat black ID!), but also an increase in difficulty in form of more turrets with heavier armor, and some locked doors! Get those multitools ready! ## Why It's Good For The Game Its a rather outdated and plain-looking ruin, last updated when its' camera bug got replaced with a floppy disk. This should make it look nicer and more alluring to space explorers. ## Changelog :cl: map: Updated the Turreted Outpost space ruin /:cl: * Automatic changelog for PR #88957 [ci skip] * [BIRDSHOT] Turning down the thermostat for a seasonal edge. (#88931) ## About The Pull Request Sometimes I like doing a little bit extra for the station, especially when I find things difficult to figure out (curse you science!). It helps to at least get something done to reduce friction and let new ideas flow. This is one of those cases. ## Why It's Good For The Game Well, it's a small change of scenery that I feel some will get a kick out of. Not really trying to do the whole Holiday thing, just more like, hey, it's January, and I'm freezing my butt off since it finally got cold, and my heater is kaput, lets add some ice to the old gal'. No doubt that this'll get old in no amount of time, but I'll have something else ready to go that'll remove this and do something cooler. So basically you can expect some Snowy decals all around Birdshot until I unfreeze my ass and shuffle some things on the station map. I need to work on command a tad bit so I can free up some space for Science, but that's really not what this PR is about. Enjoy the snow folks! ## Changelog :cl: map: Who turned down Birdshots Thermostat? /:cl: * Automatic changelog for PR #88931 [ci skip] * Fixes camouflage implant missing icon (#88907) ## About The Pull Request Error sprite bad ## Changelog :cl: fix: Fixed camouflage implant missing icon /:cl: * Automatic changelog for PR #88907 [ci skip] * Circuit Wirenet Components + Assembly Shell Tweaks (#88593) ## About The Pull Request Assembly shells now use power from whatever machine/borg/mech/modsuit they are attached to the wires of, instead of their own power cell, when appropriate. As for the meat of this PR, circuit wirenet components function like NTnet and NFC components, but their signals are transmitted across whatever cable network the shell (or in the case of assembly shells, the machine or button it's inserted into) is connected to. These components are available with roundstart tech. ## Why It's Good For The Game Provides a somewhat intuitive way to make circuit networks that aren't dependent on external factors to continue functioning. NTnet components require a functional NTnet relay, which usually means they need telecomms to be working. NFC components have a range limit, and you need to provide a specific reference to the circuit being communicated with. Wirenet components, on the other hand, just need the shell to be anchored (or for assembly circuits, the thing whose wire it is attached to), and for the shell to have a cable under it. Also might indirectly provide a reason to use cable layers other than the default one. ## Changelog :cl: add: Adds circuit wirenet components, allowing data to be transmitted and received over cable networks. qol: When attached to a machine, mech, modsuit, or borg, assembly circuit shells will use power from those instead of the circuit's own cell. /:cl: * Automatic changelog for PR #88593 [ci skip] * makes the plasma visor overlay a lighter color and also actually work for modsuits (#88751) ## About The Pull Request the module doesn't actually show the visor thanks to the fact that the module is not actually active at any point, which the visor attempts to check for also the color of purple was like WAY too dark it was practically black on every modsuit ## Why It's Good For The Game it'd be cool if it actually worked and you could actually see it ## Changelog :cl: fix: fixes plasma stabilizer module not showing a visor on modsuits fix: makes the plasma stabilizer module actually visible fix: makes rave module grey by default as it was meant to be /:cl: * Automatic changelog for PR #88751 [ci skip] * Drastically improves body marking update (and filter performance) by not calling it like 50 times per update call (#89019) * Automatic changelog compile [ci skip] * Nuar glasses for detective (#88902) ## About The Pull Request Adds a pair of nuar glasses in detdrobe premium tab, which makes them see the world in black and white colors. * Fixing a small typo within contractor.dm (#89039) ## About The Pull Request It just fixes a small typo i caught while testing other things on my private server. ## Why It's Good For The Game TYPOS BAD. ENGLISH GOOD. * Automatic changelog for PR #88902 [ci skip] * Automatic changelog for PR #89039 [ci skip] * Fixes a barricade balloon runtime (#89043) ## About The Pull Request balloon_alert is async and thus should not be called on objects that are about to qdelete * Automatic changelog for PR #89043 [ci skip] * Radio examine qol (#89028) ## About The Pull Request Add `span_class` macro to use instead of <span class='class'> (now only used for changes I made to radio examine). Make radio channel tokens info from headset examine more readable by color coding and displaying it in list format. Currently set broadcast frequence is also color coded and bold. ## Why It's Good For The Game It's now easier to understand headset examine info :D <details> <summary> Before </summary> ![image](https://github.com/user-attachments/assets/6b5d7533-6b8e-47b9-9cd2-7c7a92552ca2) ![image](https://github.com/user-attachments/assets/7fcbde2b-0817-4db6-aca8-d15c17d708be) </details> <details> <summary> After </summary> ![image](https://github.com/user-attachments/assets/6e9a7156-9c76-4843-8a45-7fce752a7b27) ![image](https://github.com/user-attachments/assets/50e5fb70-eb18-4fc5-803a-070774c73ccf) </details> ## Changelog :cl: qol: tokens and channel names in radio headset examine are now color coded and display in list format qol: broadcast frequency in examine is also color coded code: add new `span_class` macro /:cl: * Automatic changelog for PR #89028 [ci skip] * Space carp speech includes fish puns (#89033) ## About The Pull Request This PR adds the fish pun speech filter to space carp. This was originally added and implemented for crabs and lobsters but it seems like it should be fine on space fish as well. Space Dragons don't have this because Dragons are more refined than the riff-raff and take classes on proper diction. ## Why It's Good For The Game For some reason space carp can speak common if they are sapient. Most sapient space carp come from space dragon rifts so it's useful for them to be able to speak to each other and coordinate. I think it's kind of weird that they can talk to the crew to be honest, but it's probably more fun that they can. That said, if they are going to be able to communicate with the crew then they should have to talk like a fish. ## Changelog :cl: add: Space Carp now have a more distinctive accent when speaking Common. /:cl: * Automatic changelog for PR #89033 [ci skip] * Prevent gibspawners from randomly causing failures with mapping nearstation tests (#89026) ## About The Pull Request this stops gibs from being streaked from spawners during unit tests, as there's a chance it might just go into space, causing a mapping nearstation test failure. there's already a precedent for the "just disable it during unit tests" solution with https://github.com/tgstation/tgstation/pull/87878 ## Why It's Good For The Game flaky tests bad :3 ## Changelog no player-facing changes * Fixes icon spacing in late join ui (#89041) ## About The Pull Request An alternate to #89040 ![Screenshot 2025-01-12 035024](https://github.com/user-attachments/assets/230e599a-8cae-4dba-8dee-4e9975b7a61e) Refactors the UI Adds scrollbar to section rather than window so that the title doesnt disappear Gives more contrast to the window's main content section Tooltip now shows closer to the mouse. It was far off in some cases Functions! ## Why It's Good For The Game Fixes a ui bug ## Changelog :cl: fix: Fixed icon spacing in the late join menu. /:cl: * Automatic changelog for PR #89041 [ci skip] * Cap perceived food quality, fix examine index out of bounds runtime when perceived food quality is too high (#89011) ## About The Pull Request When going through runtime logs earlier, I noticed the edible component's examine logic would have an index out of bounds runtime whenever a lizard were to observe a piece of stinging flatbread. This seems to be because its `examine(...)` proc would call `get_perceived_food_quality(...)`, getting an `8`, and then use the resulting value as an index for `GLOB.food_quality_description`, while the highest value for such is `FOOD_QUALITY_TOP = 7`. Trying to find similar issues I noticed `checkLiked(...)` would cap it to `min(food_quality, FOOD_QUALITY_TOP)` before running anything that cared about it. So in this pr we just move that `min(food_quality, FOOD_QUALITY_TOP)` call into `get_perceived_food_quality(...)` right before it returns, catching all our potential out of bounds issues. This fixes our issues. ## Why It's Good For The Game Fixes jank. ## Changelog :cl: fix: Examining edible items with too high of a perceived food quality no longer runtimes and actually displays a food quality message. /:cl: * Automatic changelog for PR #89011 [ci skip] * Prevents xenobio autoinjectors from being deepfried (#89008) ## About The Pull Request #82676 Added medipens into deepfryer blacklist as it allowed them to be filled with custom reagents. Xenobio autoinjectors that are made from industrial crossbreeds function very similarly to medipens with few differences. However, they have a different typepath from medipens so they were not included in the original PR. This adds them into the blacklist too. ## Why It's Good For The Game Xenobio autoinjectors are not ment to be filled with custom reagents, this fixes that. ## Changelog :cl: fix: Xenobio autoinjectors, such as mending solution from industrial purple crossbreed, cannot be deepfried and thus filled with custom reagents using saltshaker anymore. /:cl: * Automatic changelog for PR #89008 [ci skip] * Fix an icon smoothing runtime caused by shuttles during recursive map loading (#89024) ## About The Pull Request So, funny thing. The syndie base lazy template loads recursively, as it contains two shuttle docks (infiltrator and steel rain). But stationary shuttle docks will immediately load their `roundstart_template` _asynchronously_ upon Initialize. This can cause issues - such as the shuttle's atoms being initialized before everything else is, in a weird way. The usual side-effect of this would be runtimes resulting from the shuttle's initialized walls trying to smooth with non-initialized turfs on the template that loaded it. I simply moved to stationary docking port's async load to LateInitialize. There's prolly a better long-term solution, but this doesn't hurt, and solves the relevant issue. you know i really hope we don't have _3_ layer map templates anywhere. ## Why It's Good For The Game less runtime good. ## Changelog :cl: fix: Fixed an icon smoothing error caused by shuttles during recursive map loading, i.e the nukie shuttles with their base. /:cl: * Automatic changelog for PR #89024 [ci skip] * Fixes the watcher trophy not working on basic mobs (#88991) ## About The Pull Request currently, the watcher trophy has no effect on 95% of the lavaland mobs since theyve all been refactored to basic mobs, this rectifies that ## Why It's Good For The Game Fixes the watcher trophy not working on basic mobs ## Changelog :cl: fix: Fixes the watcher trophy not working on basic mobs /:cl: --------- Co-authored-by: Jacquerel <[email protected]> * Automatic changelog for PR #88991 [ci skip] * The RCD can print hydroponics airlocks (#89045) ## About The Pull Request I've noticed that the RCD can print every station airlock type besides hydroponics, this seems to be an oversight. It still cannot be used to print science airlocks (not research) as these do not appear on the station by default, if you want to use these you'll need to use the airlock painter. ## Why It's Good For The Game This allows the RCD to print all airlock types that start on the station by default, fufilling its role as a repair tool. ## Changelog :cl: fix: The RCD can print Hydroponics airlocks /:cl: * Automatic changelog for PR #89045 [ci skip] * Aquarium component: fixes admiring, fixes panel context, improves context (#89048) ## About The Pull Request Admiring was broken, and looking into it, it's because it didn't actually pass the user as `user` and instead as `source`, which is supposed to be the aquarium movable. Changing this fixes our issue. Then I noticed admiring was kind of jank for fish tanks (item)- you could right click to admire it, but only if it's not in-hand. At the same time, you could left click admire aquariums when the panel is closed, but you _can't_ left click admire fish tanks even when they're in hand. So in this pr we actually let you admire fish tanks when in your active hand, both left click and right click, left click only working if the panel is closed. Similarly, the tooltips for such would only get displayed when your hand were to be empty, so this makes it also account for the held item being the fish tank. I also noticed the open/close panel tooltip was inverted, so I inverted it to be the right way around. ## Why It's Good For The Game Nice if it works. Nice if it doesn't feel incredibly jank. Nice if the tooltips display more. ## Changelog :cl: fix: Aquarium/fish tank admiring works again. fix: Inverted aquarium/fish tank panel opening tooltip to be the right way. qol: You can actually admire an in-hand fish tank by clicking on it. qol: Aquarium/fish tank admiring tooltips are more consistent. /:cl: * Automatic changelog for PR #89048 [ci skip] * [NO GBP] Fixes division by zero runtimes caused by black eyes (#89042) ## About The Pull Request Fully black eyes caused division by zero in their overlays yeah. ## Changelog :cl: fix: Fixed division by zero runtimes caused by black eyes /:cl: * Automatic changelog for PR #89042 [ci skip] * Sanitizes custom vendor inputs, and fixes a division by zero in their examine code (#89036) ## About The Pull Request Closes #89006 Also fixed a division by zero in very, very weird examine code ## Changelog :cl: fix: Custom vendors now sanitize their inputs fix: Fixed a division by zero in custom vendor code /:cl: * Automatic changelog for PR #89036 [ci skip] * Adds a localhost-only "Start Now" lobby button (#88973) ## About The Pull Request Adds a new extremely high quality lobby button on which we spent all of 2025's coderbus budget. It shows up only for localhost users and starts the round immediately. ![image](https://github.com/user-attachments/assets/fdabe880-465e-4e24-9e50-dd955585311b) ## Why It's Good For The Game Ensures that maintainers don't accidentally commit a funni on live servers. ## Changelog :cl: admin: Added a localhost-only "Start Now" lobby button /:cl: * Automatic changelog for PR #88973 [ci skip] * Corpses with clients in them can no longer perform mech actions (#88959) ## About The Pull Request Turns out most mech actions only cared about the person attempting to use them being inside the mech, without checking for things such as the mob being alive. This fixes that, but required a slight refactoring to the `ui_status` proc of mechs to account for the three fundamentally different types of mobs that can pilot a mech. ## Why It's Good For The Game Fixes #88933 ## Changelog :cl: fix: Corpses at the pilot seat of mechs can no longer toggle the lights, safeties, cabin sealing, strafing, overclocking, or durand shields, nor can they rename the mech or configure its equipment. /:cl: * Automatic changelog for PR #88959 [ci skip] * Updates the same-tile-item ban map lint to clarify it means the same tile and not adjacent tiles (#88949) this lint confused the hell out of me so I fixed it to be more clear * Culture bottles now properly copy their cure from the inserted beaker (#88943) ## About The Pull Request Fixes #46014 by having a newly created culture copy the cures list and cure_text of the inserted beaker. ## Why It's Good For The Game Fixes the (somewhat niche) case where a virologist would intentionally remake a virus until a preferred cure was rolled, only to be surprised that cultures created from this virus would revert to the first cure rolled. ## Changelog :cl: fix: Culture bottles now properly copy their cure from the inserted beaker /:cl: --------- Co-authored-by: SyncIt21 <[email protected]> * Automatic changelog for PR #88943 [ci skip] * machine board naming convention pass (#88888) ## About The Pull Request Adjusts a bunch of machine board names to comply with the general machine board naming patterns I see. First pass just removed a bunch of errant (Machine Board)s that were still on board names despite them being automatically appended on initialization, second pass set some board designs to actually have "Board" on the end to specify that it's a board and not a whole machine. ## Why It's Good For The Game Machine board naming consistency is probably good, actually. ## Changelog :cl: spellcheck: A handful of machine boards should no longer have two (Machine Board)s showing up in their name. spellcheck: Boulder machinery boards are now labeled as boards from autolathes/circuit imprinters. /:cl: --------- Co-authored-by: Hatterhat <[email protected]> * Automatic changelog for PR #88888 [ci skip] * Fix airlock authentication card not getting stored in containers (#88816) ## About The Pull Request Trying to insert an airlock auth card into a bag or container would not work due to a message saying the target must be an airlock. It's now fixed and should insert into a container regardless if on help or harm intent. ## Why It's Good For The Game Consistency. ## Changelog :cl: fix: Fix airlock authentication card not getting stored in containers /:cl: * Automatic changelog for PR #88816 [ci skip] * like 5 tiny deathmatch changes (#88812) ## About The Pull Request you may no longer fish in deathmatch chasms as a result that means doing literally anything with explosives wont send 9000000 lobstrosities onto the map fixed cuban pete loadout macrobomb lobbies will close after 5 minutes of inactivity changing map will now make a more accurate number of observers also removed that useless eye button in the lobby list ## Why It's Good For The Game 6 billion lobstroties because of a firecracker sucks bug bad afk empty lobbies bad ## Changelog :cl: fix: deathmatch - chasms will no longer do anything when blown up, cuban pete loadout macrobomb fixed, AFK lobbies will close after 5 minutes, fixed changing maps incorrectly taking one more observer than it should /:cl: * Automatic changelog for PR #88812 [ci skip] * Improves mind lockbox handling (#89027) ## About The Pull Request Mind lockboxes have received a tooltip about their in-hand use, but also can be unlocked by trying to open them normally (clicking on one while holding it in your offhand). Should reduce the player confusion around these significantly. Closes #88999 ## Why It's Good For The Game More intuitive handling of objects is always nice ## Changelog :cl: qol: Improved mind lockbox handling /:cl: --------- Co-authored-by: Ghom <[email protected]> * Automatic changelog for PR #89027 [ci skip] * Changes mob height from getter -> updater (#88953) ## About The Pull Request `get_mob_height()` is called a lot a lot, and frequently ended up over-timing when it amounted to the same value 98% of the time. Instead we can defer it to only update when we actually change height, or when we pick up a trait or species that changes our height. I also moved the monkey checks out. Made it into a species procs. I know species procs are lame but it seems fine unless we wanna tie to the monkey's chest or limbs or something. * Automatic changelog compile [ci skip] * Improves performance of `convert_reagent()` (#89053) ## About The Pull Request It no longer uses procs like `remove_reagent()` or `has_reagent()`. It does not even use a typecache & is just faster overall. Plus bug fix i.e. it currently does not set `override_base_ph = TRUE` meaning if the converted reagent already exists in the beaker it would not take into account our new averaged ph & instead use the converted reagents default ph causing our computed value to have no effect. That's fixed now It also now computes the averaged ph of all its converted reagents rather than simply using our beakers ph giving more realistic results ## Changelog :cl: fix: converting reagents now yields more accurate ph values code: code for converting reagents now performs better /:cl: * Fixes a runtime in requests console error logging (#89044) ## About The Pull Request Target is null so we cannot work with its area, etc etc. ## Changelog :cl: fix: Fixed a runtime in requests console error logging /:cl: * Automatic changelog for PR #89053 [ci skip] * show admins classified reports (#89035) ## About The Pull Request Lets other admins see what you sent in a classified command report. ![image](https://github.com/user-attachments/assets/0029ed80-5a72-4f79-8374-0f00de3acac0) ## Why It's Good For The Game Admins can see this anyway and I've previously wanted to look this up to see what another admin is doing. ## Changelog :cl: admin: All admins will now see what is in a classified command report :cl: Co-authored-by: Josh Powell <[email protected]> * Automatic changelog for PR #89044 [ci skip] * Automatic changelog for PR #89035 [ci skip] * [no gbp] some wawa fixes (#89055) ## About The Pull Request the west doors of this room can be opened if you have sci access or maint access supposedly xenobiologists kept somehow getting stuck here ![image](https://github.com/user-attachments/assets/9aa805b2-de0f-44ab-bfc7-f2441f0fd035) bci machine is accessible ![image](https://github.com/user-attachments/assets/4dc52513-d458-4845-b853-53ed6985becd) robotics gets the ripley boards and has 150 iron (most maps) instead of 50 ![image](https://github.com/user-attachments/assets/d97ffa58-2030-45e6-848f-b0ade7401111) botany gets 4 more trays ![image](https://github.com/user-attachments/assets/833e64cd-588b-44d5-8d38-55a482493745) ## Why It's Good For The Game getting stuck somehow is bad robotics is now on par with the rest of the stations botany is also now on par kinda ## Changelog :cl: fix: on wawastation, fixed the placement of the BCI machine, the maint room south of sci break room can be opened by scientists, robotics gets the ripley boards and 150 iron instead of 50 iron, botany gets 4 more trays /:cl: * Automatic changelog for PR #89055 [ci skip] * Adds a station_only subtype of Atmospherics/Station Alerts Consoles that only displays station (+mining station) alarms (#88343) ## About The Pull Request A more proper way to be solving the alarm appearing in #88335 (That PR still actually makes the alarm read the inside of the booth so its still important) As it turns out, Canary already does this - when creating a new `/datum/station_alert/` to track the alarms, it passes the optional areas filter included in the datum with a preset of all station areas plus the mining station areas. This PR (after a slight rework) adds a Subtype of the monitoring consoles called `station_only`, which have checks that only display alarms from the station and miningstation. These replace all pre-mapped consoles in stations only. This will mostly be notable on Icebox and other Multi-Z stations, where ruins will stop polluting the alarm boards and alarms on all levels will be displayed - and, on other stations, the fact that alarm boards will now also display the mining station. <details><summary>z-level vs station_only</summary> ![image](https://github.com/user-attachments/assets/625eeb1a-0dcf-4842-b02d-4d4dcf9fed51) ![image](https://github.com/user-attachments/assets/1627b062-11bd-4f1e-ac3d-f8824018460f) </details> Examining the console will display if it's in z-level or station-area mode, and this can be changed by multitooling the circuitboard (for crew rebuilding both damaged station consoles, or space ruins) <details><summary>examines</summary> ![image](https://github.com/user-attachments/assets/3e9d863e-a7f8-4fdf-8545-cf5c2c4b3bf5) ![image](https://github.com/user-attachments/assets/7e06cdc0-8dce-4006-9d75-29f2fb291cab) </details> - [x] TO-DO: Fix Station Alerts Consoles not get set up correctly when rebuilt ~~(the tracking is set up before the circuit can pass on `station_only`)~~ (Done much cleaner now, thank you Lemon/Potato) - [x] TO-DO: Test how this behaves with renamed or newly created areas... (Renamed functions fine, Newly Created is probably better fixed in the creation code so that it applies to other station area checks.) ## Why It's Good For The Game Engineering shouldn't need to worry about ruins or otherwise non-station alarms. Appearing in the station consoles is confusing and annoying to those who like to see the board green all across. Plus, they SHOULD be at least slightly worried about the mining station, or at least able to tell somebody else about alerts there. Also of course they should just be able to see all of icebox/tram/other multi-z stations from alert consoles instead of needing to have one per-zlevel ## Changelog :cl: qol: Atmospherics/Station Alerts Consoles can now be set to only display station (+mining station) areas. Station-mapped ones are set to this by default. Use a multitool on the circuitboard to toggle between z-level or station-area tracking! fix: In turn, Atmospherics Alert Consoles now actually show the whole of multi-z stations instead of ignoring other z-levels /:cl: --------- Co-authored-by: LemonInTheDark <[email protected]> * Automatic changelog for PR #88343 [ci skip] * Apc controller in TS (#89067) ## About The Pull Request 1. Adventurebrowser didn't use its state, so this was removed 2. APC Controller console is refactored into typescript. This fixes some bugs that it had like randomly adding spaces as you changed sorting methods. It also has been given a new logout screen. <details> <summary>photos</summary Basic screen just shifted around slightly, the tabs now slot onto the sorting header ![Screenshot 2025-01-14 035545](https://github.com/user-attachments/assets/14fb5490-b9fe-41ba-8726-02a7e5012dcf) Logout screen updated ![Screenshot 2025-01-14 033848](https://github.com/user-attachments/assets/359ac9fb-58c9-4452-952d-0badde6afd8d) Logs are now colored ![Screenshot 2025-01-14 035550](https://github.com/user-attachments/assets/73114d90-6747-4827-abe9-7517700cd6fc) </details> ## Why It's Good For The Game Removes localstate (deprecated), ui improvements ## Changelog :cl: fix: Slight improvements and bug fixes to the APC controller console /:cl: * Automatic changelog for PR #89067 [ci skip] * You can no longer get stuck in stacked lockers (#89058) ## About The Pull Request Stacking two lockers ontop of eachother and shoving someone into them will result in them getting stuck in an open locker, with no way to get out. ## Changelog :cl: fix: You can no longer get stuck in stacked lockers /:cl: * Automatic changelog for PR #89058 [ci skip] * Change layer manifold and smart pipe volumes to be consistent with other pipes (#88976) ## About The Pull Request Fixes #64109 and Fixes #73127, making the following changes: - Added a define for the volume of a unary pipe and replaced mentions of 35. - Added a check to /pipe/New() to allow pipes to specify their volume. - Changed the specified volume of layer manifolds to 200, consistent with the value stated on the wiki. - Changed the volume of smart pipes from a fixed 140 (since they are always considered quaternary) to be calculated based on the number of connected nodes, same as before smart pipes were introduced. Volume is calculated on creation or when the icon updates, and the associated pipenet volume is updated accordingly. ## Why It's Good For The Game Non-quaternary pipes were larger than intended and manifolds had zero volume due to how volume was calculated based on device_type. These changes improve the consistency of pipe volumes. Also closes #64109 and #73127. ## Changelog :cl: fix: Layer manifold and pipe volumes are now consistent with other pipes /:cl: --------- Co-authored-by: Ghom <[email protected]> * Automatic changelog for PR #88976 [ci skip] * Fix kinetic accelerator cooldown mods becoming permanent (#88883) ## About The Pull Request As described in issue #87019, the recharge time reduction given by proto-kinetic accelerator cooldown modkits can become permanent, resulting in a PKA with reduced cooldown without any mod capacity cost. This PR ensures the recharge time is calculated based on the cooldown kits actually installed, and recalculated whenever one is added or removed. ## Why It's Good For The Game Fixes #87019. ## Changelog :cl: fix: Fixed PKA cooldown mods becoming permanent /:cl: * Automatic changelog for PR #88883 [ci skip] * Fixes runtime & code for anomaly effects (#89054) ## About The Pull Request - Fixes #89046. Even though it set `anomaly_type = null` is still set `drops_core = TRUE` leading to the runtime. - We now remove `drops_core` var all together. If `anomaly_type = null` it means we don't drop a core and that's inferred so we don't need this var to tell us that again ## Changelog :cl: code: removes a redundant var from anomaly effects fix: Fixes runtimes for some anomaly effects /:cl: * Automatic changelog for PR #89054 [ci skip] * Plant Analyzer UI (#88998) ## About The Pull Request <img alt="KvBypdgg5S" src="https://github.com/user-attachments/assets/97fc809d-f8ae-48c3-b095-8909ff9f5222" /> <img alt="XIZEXhftqE" src="https://github.com/user-attachments/assets/c769957e-94f9-41ae-9782-c685f3cf0e71" /> <img alt="mqOQUslfxP" src="https://github.com/user-attachments/assets/66397673-d5c7-447e-b994-71643f8e7fe2" /> Made the plant analyzer output the scan data into UI instead of spamming it into the chat. ## Why It's Good For The Game There is too much data to show it properly in a text chat. Botanists' chat is usually spammed with the scanning results, so it is hard to find anything in the message history unless you filter the scan data into a separate tab. The new UI also has some explanation of plant stats useful for noobs. ## Changelog :cl: qol: Added UI for plant analyzer del: Plant analyzer no longer spams scan data into the chat (except, it still works for pod people as before) /:cl: * Automatic changelog for PR #88998 [ci skip] * Admin pda in typescript (#89064) ## About The Pull Request On a quest to remove uselocalstate while converting files to typescript Admin PDA also had a bug where textarea was waiting on blur rather than on input, therefore you couldnt message someone unless you clicked off the text area, bad UX It looks the same ![image](https://github.com/user-attachments/assets/5cb90a6f-e93f-421b-8afe-bc25785f3f4b) ## Why It's Good For The Game Bug fix, typescript, less custom state ## Changelog :cl: admin: Fixed a bug with the Admin PDA incorrectly displaying that the message text wasn't filled out yet. /:cl: * Automatic changelog for PR #89064 [ci skip] * Herignis heats up reagents inside mobs again (#89070) ## About The Pull Request - Fixes #89065 ## Changelog :cl: fix: herignis heats up reagents inside mobs again /:cl: * Mawed crucible no longer tries to refill when it can't (#89069) ## About The Pull Request It seems like mawed crucible was gaining charges above the allowed maximum, and they were used fully when a potion is made, so it was pointless. This resulted in the crucible spamming the loud eating noise every 30 seconds even when it has 3/3 charges, and if you want it to shut up, you could only break it down. And you couldn't use rusty grasp to do this quickly. ## Why It's Good For The Game Bug fixes are good. ## Changelog :cl: fix: Mawed crucible doesn't try to gain charges when they're at maximum /:cl: * Automatic changelog for PR #89069 [ci skip] * Department orders credit reward and cooldown time now use a logarithmic scale (#88797) ## About The Pull Request This PR makes the reward and cooldown for departmental orders scale with crate cost using a logarithmic scaling, instead of comparing the price to preset thresholds for time, or awarding the same amount as the crate's cost. Previously, to calculate the cooldown time, the code was calculated via the following manner: ``` credits = clamp(credits, min, max) time_y = 10 MINUTES * ((credits - min)/(max - min) + 1) ``` Minimum was 320 credits, max was 3000, thus, all crates slid around between 10 minutes to 20 minutes. The reward for delivering the crates was the same as the crate's value. This meant ordering egregiously expensive crates, far beyond 3000 was way too desirable. This PR changes both to use logarithmic scaling. Cooldown time uses `60* log(price)^2.2`, and reward uses `140 * log(price)^1.4`. **Cooldown analysis** At 320 it's 7.54 minutes, at 1400 it's 12.44 minutes, at 3000 (around gun crates) it's 15.5 minutes, at 8000 (hat crate) 20 minutes, at 9000 (expensive atmos cans) it's 20.58 minutes, and at the 20k crate it's 24.76 minutes. **Crate rewards analysis** At 320 it's 475 credits, at 1400 it's 669 credits, at 3000 (around gun crates) its 778, at 8000 (hat crate) it's 925 credits, at 9000 (expensive atmos cans) it's 943 credits, and at the 20k crate it's 1070 credits. Up to 540 credits, you are actually getting a higher reward than what the crate costs, but this is okay, as its a reward for delivering simpler orders. A little surplus for you. For the console UI, I have made items costing 3000 or more display Moderate, and items costing 8000 or more, Long cooldowns. ## Why It's Good For The Game Ordering really expensive crates should be a luxury, not a way to generate money. The money is supposed to be a bonus, in addition to the free crate to sell. Using a logarithmic scale, the credit bonus is reigned in more evenly, making it more predictable for economy tweaking, and avoids players double dipping credits in their free purchase. Decreasing the rewards also give space for other new ways to generate rewards in relation to departmental orders, such as stamping the manifest with the correct head's stamp being worth more money and such. <details> <summary>Old PR Text, which was using a price cap instead</summary> ## About The Pull Request Departmental orders are a neat feature, but some of the available packs had problems economywise. The cooldown of range from 10 to 20 minutes, with 10 minutes being the base for anything costing less than 320 credits, and 20 minutes at 3000 credits. I have no problem with the lower cap, but the upper cap has issues, as recently, a 20k crate was added to cargo, which means it is possible to dump quite a large amount of funds into cargo every 20 minutes. Departmental orders probably need a bigger overhaul, and this solution is imperfect, but I have talked with @ArcaneMusic about this as an interim stop gap measure. This PR also autodocs a proc, and moves some values to global defines, for ease of balancing. This PR affects the following crates, with the uncapped crate values in brackets. Armoury - Combat Shotguns (3500 credits) - Energy Guns (3600 credits) - NT BR-38 Crate (20,000 credits) Engineering - BSA parts (6000 credits) - DNA Vault Parts (4800 credits) Engine Construction - HFR Crate (4800) - Supermatter Shard Crate (4000) Materials - BZ Crate (9000 credits) - Nitrous Oxide (9000 credits) - Water Vapor Crate (3010 credits) Toys - Collectible Hats Crate (8000 credits) ## Why It's Good For The Game Instantly awarding 20k to cargo every 20 minute, in addition to 27k from the other consoles (if both engineering and science orders BZ, service orders collectible hats, and medical orders something around 1000), is a bit too much. The money gained should be along a much more predictable and expected value. With this chance, the most they can get is 13k every 20 minutes across all departments. </details> ## Changelog :cl: balance: Rewards from departmental orders use a logarithmic scale, resulting in less rewards for high tier crates. The cooldown time is also logarithmic now, which has slightly decreased cooldown values on cheaper crates. /:cl: * Automatic changelog for PR #88797 [ci skip] * Nearsighted severity sources (with unit test) + status_effect/grouped minor rework (#88591) # About The Pull Request ## Nearsighted Sources Nearsighted now associates/tracks severity applied by each source. Previously, nearsighted only used a single variable which had to be shared by every source, which caused problems for things like scarred eyes which needed independent behaviour. This implementation allows sources with different severity levels to coexist without needing workarounds There are now two different severity types for nearsightedness: * Correctable: Can be mitigated with vision correction (like glasses) * Absolute: Cannot be mitigated from any source, used for scarred eyes Which can allow nearsighted sources to not be affected by vision correction. Also, since there is no more technical conflict between the two quirks, I've made it so that nearsighted and scarred eye can be selected together (as a QOL change) There is also a new unit test for this new behaviour (nearsighted_effect) that checks application and removal ## status_effect/grouped minor rework Grouped status effects now have `source_added()` and `source_removed()` procs, which are called whenever a source is added or removed from the effect I did this because the previous implementation was somewhat unwieldy. Inherited status effects would recieve the _currently existing_ effect through merge_with_existing, and require them to modify the existing effect's properties, which is odd and not intuitive to work with (the proc's `src` was not the existing effect) It not being called for every source also made users repeat code in `on_creation()` and `merge_with_existing()` for every source added. This new interface should prevent repetition and be generally more intuitive to work with. # Changelog :cl: refactor: Nearsighted has been reworked to track severity applied from each source, as well as allow "non-correctable" nearsightedness (for things like scarred eyes). qol: The above being possible now means that you can select the Nearsighted and Scarred eye quirks together fix: Any bug that would occur from becoming nearsighted with a scarred eye should be fixed now code: status_effect/grouped merging code has been improved (i hope) /:cl: * Automatic changelog for PR #88591 [ci skip] * Moves and documents AI's definition (+ minor cleanup) (#88928) ## About The Pull Request The AI's definition is big and unorganized, which makes figuring out what does what really annoying, so I took the time to document and organize the file Some vars have been renamed to better communicate what they actually do when reading code Unused vars have been deleted: * var/chnotify * var/waypoint * var/interfaceButton ### Misc changes: The check to see if malf modules could be used was written incorrect…
- Loading branch information