Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* fixes monkey eating subtree (#87562) * Automatic changelog for PR #87562 [ci skip] * You can now place material iron tiles in space (#87602) After #87587 i considered that players (especially newbies) can confuse iron tile and material iron tile. This PR removes barely noticeable difference between iron tile and material iron tile, since they use the same amount of the same material and should therefore act the same. ![image](https://github.com/user-attachments/assets/3236ab63-6086-4c4b-973f-866efeaab9d6) :cl: fix: you can now place material iron tiles in space like regular iron tiles /:cl: --------- Co-authored-by: SyncIt21 <[email protected]> * Automatic changelog for PR #87602 [ci skip] * Melee cooldown on actions is defined as 0, not overriden everywhere (#87599) Actions have null melee cooldown by default. The code checks if so, and gives the action the same melee cd as the action's cd. This means you can't take any melee action for that duration. Since this is dumb as shit, 95% of actions in the game override it. But some don't, which leads to all sorts of 'janky' feeling combat, most noticeably being that of venus man eaters, which literally cannot attack until their tangle action is off cooldown. There's some others like it - legion skull throws for example. This simply makes it so that the cooldown is, by default, zero, and can be overriden to null on types which lets it copy the cooldown, if the coder so chooses. As a necessary byproduct this affects... pretty much every action in the game. I found-and-replaced all usages of melee cd = 0 because that's now redundant, but it's not so easy to check for every action which doesn't override the value - this means this will likely have some side-effects on some abilities that aren't meant to be immediately followed up with a melee attack, but I couldn't find any. i cant believe there were 3 gorillion actions overridding melee cd to zero thats embarrassing. if every subtype overrides a timer variable to the same value then just maybe the value should be default. Fixes ALL action melee jank. Perhaps too well! :cl: refactor: Actions will no longer by default apply a melee cooldown equal to action cooldown. fix: Fixed various abilities causing melee jank, most noticeably venus man eaters /:cl: --------- Co-authored-by: Fikou <[email protected]> * Automatic changelog for PR #87599 [ci skip] * Fixes `Robotize()` and player panel Make AI verb not putting dead player ghosts in the new mob (#87597) observer ghosts with no minds skip over mind transfer and get put in the mobs via key transfer, while a dead player ghost has a copy of their character's mind but with `active = FALSE`, which fails the transfer. it's kinda weird how the player panel uses `AIize` for the AI but uses a completely different mob transform for the borg. hmm fixes #68643 :cl: fix: fixed Make Cyborg admin verb and player panel Make AI not putting the ghosted player in control if they weren't an observer /:cl: * Automatic changelog for PR #87597 [ci skip] * Fix NTNRC muting not working at all. (#87606) When fiddling around with NTNRC, I noticed that muted clients... can still talk. While the input bar is reddened and displays a mute message, it isn't actually disabled- even more so, there's no sanity checks for being muted on the `ui_act(...)`. In this pr we just make it so the input gets disabled, and add a sanity check to avoid people bypassing it. ...good if the app's muting feature like, actually works. :cl: fix: NTNRC muting actually works again. /:cl: * Automatic changelog for PR #87606 [ci skip] * Fixes `set_sanity()` math maybe hopefully oh fuck (#87605) okay so judging by the code comment when sanity dips lower than the minimum aka 0 we're supposed to move up from our current sanity by 0.7 instead. however in code it's instead using the passed `amount` value, which from the looks of it is mostly passed by already modifying sanity with other math operations, like the madness mask https://github.com/tgstation/tgstation/blob/762a52ed83c3d910b14258060d4693d120fe628a/code/modules/antagonists/heretic/items/madness_mask.dm#L59 https://github.com/tgstation/tgstation/blob/762a52ed83c3d910b14258060d4693d120fe628a/code/datums/mood.dm#L530-L532 so instead we're passing an even lower value than the current sanity and are moving up from there instead of current sanity. wack i think it started as far back as https://github.com/tgstation/tgstation/commit/091f221fe615cfa5e741b98f14b6e5c8eeadbe47 but i might be wrong and my math might be wrong and do we need the `clamp()` part of the equation even oh god oh fuck Fixes #69082 :cl: fix: sanity dropping below zero should now properly slowly recover back to zero instead of dropping even further /:cl: * Automatic changelog for PR #87605 [ci skip] * Restores Derelict's vault doors hacking immunity (#87604) Title; it was handled by `attackby()` and became deprecated at some point, something something attack chain Also gave it feedback because might as well Fixes #79926 :cl: fix: the Derelict vault doors are once again unhackable qol: the Derelict vault doors provide chat feedback when you try to hack them so you can stop poking them with your tools /:cl: * Automatic changelog for PR #87604 [ci skip] * Fixed being unable to aghost while corpselocked (#87594) Fixed being unable to aghost while corpselocked, via adding another parameter to ghostize that checks if it's an aghost or not i wana leave my body when testing as ethereal :cl: fix: Fixed being unable to aghost while corpselocked /:cl: * Automatic changelog for PR #87594 [ci skip] * Kills default chemical color 2: 5 years later edition (#87601) [One fateful night](https://github.com/tgstation/tgstation/pull/47535), 5 years ago, I got tired of seeing the same stupid color on every single chemical in the game. I went out of my way to PURGE this stupid color from existence and give everything an unique color. However, the task of pruning color debt is Sisyphean, and it maliciously, slowly, creeps back into the game. I recently uncovered, to my dismay, that one of fermichem's many mistakes, besides its existence, was _reintroducing_ #C8A5DC to two reagents. I won't stand for this. My reagents WILL be colorful, and not an ugly shade of pink. Acetone Oxide is a greyed out blue, because Acetone (in the game, irl everything is colorless because real life sucks) is blue and Oxygen is gray. Ichiyuri is removed because it existed nowhere but its own definition, much like fermichem only exists because of itself. I also finished the purge by making the default color of quantum hair dye and colorful reagent gray instead. Ugly pink is not a creative color. also removes unused poopy content what do i even label this :cl: code: acetone oxide is blue!!! /:cl: * Automatic changelog for PR #87601 [ci skip] * Separate forced injection between latejoin and midround (#87557) Fixes an issue mentioned in https://github.com/tgstation/tgstation/issues/72526, where pressing "Now!" in the game panel for injecting a latejoin, caused midround one to occur as well. This was because the same boolean was used for forcing both, which caused both to happen. * Closes https://github.com/tgstation/tgstation/issues/72526 Improves admin tools by fixing a bug. :cl: admin: doing a latejoin injection no longer causes a midround one as well /:cl: * Automatic changelog for PR #87557 [ci skip] * syndicate (and all) climbing hooks are small-sized (#87577) syndicate (and normal) climbing hooks are small sized. nobody has ever used a syndicate climbing hook because they take up a massive normal slot. why is the upgrade that costs TC worse than the normal emergency hook? probably an oversight. similarly, anyone who buys a climbing rope from the goodie pack will soon notice it's normal sized and toss it on the ground. i don't think there's much of a good reason for these to be normal sized. i'd call this a consistency fix more than anything. its not like extended oxygen tanks are normal sized, sometimes things that take more effort to get are just better. :cl: qol: syndicate (and all) climbing hooks are small-sized /:cl: * Automatic changelog for PR #87577 [ci skip] * Let alert polls function after roundend (#87578) Fixes #86331 Fixes #87060 Admins keep trying to spawn stuff postgame and it doesnt work :cl: fix: alert polls work past roundend /:cl: * Automatic changelog for PR #87578 [ci skip] * fixes cyborg apc frame attachment (#87585) fixes cyborg apc frame attachment fixes #87098 :cl: fix: fixes cyborg apc frame attachment /:cl: * Automatic changelog for PR #87585 [ci skip] * [NO GBP] HPLC can purify inverted chems (#87524) - Fixes #87521 :cl: fix: HPLC can purify inverted chems. /:cl: * Automatic changelog for PR #87524 [ci skip] * Fix light emitters being deleted in pod bay when deleting everything (#87516) When you delete everything with the "delete that shit" button in the pod bay, it also deleted the light emitters, which makes it difficult to see what is happening in the bay. This PR makes it so the light emitters are not deleted. Also removes some one letter variables in that part of the code. * Closes https://github.com/tgstation/tgstation/issues/83219 Helps admins do their work more easily. :cl: code: removed two one letter variables admin: clearing the pod bay will not remove the light emitters. /:cl: * Automatic changelog for PR #87516 [ci skip] * Makes pure inacusiate work (#87603) we have the [good hearing trait](https://github.com/tgstation/tgstation/pull/75931) which works for the purposes of this chemical boost very well, so i made it use that also gave it some feedback messages on gain/lose Fixes #69133 :cl: fix: fixed pure inacusiate not giving you ungarbled whisper hearing at full range qol: pure inacusiate will also provide chat messages when its boost is gained/lost /:cl: * Automatic changelog for PR #87603 [ci skip] * [NO GBP] Fixes pressure-proof clothing not preventing plasmamen self-combustion (#87598) Closes #87515 :cl: fix: Fixed pressure-proof clothing not preventing plasmamen self-combustion /:cl: * Automatic changelog for PR #87598 [ci skip] * Where them peaches at? // a.k.a Service Cyborg botany tools! (#87464) (my dumb ass commited previous pr on master branch so i made new 💀) - Adds "Service Cyborg Botany Upgrade" that cost 13 iron and 2 glass. - Basically, the mostly unused cyborg model has now more functionality. (as we know how many gimmicks can be made through botany) - Botany Omni-tool: ![gorg_newskin](https://github.com/user-attachments/assets/877ea903-1d9d-4b83-af50-7a0e7a080308) - Meet the "Gardener" ![gorg_gardener](https://github.com/user-attachments/assets/3a70c6a2-d6cc-45c3-8584-e730e9f3d694) I was outraged that despite the borg ability to cook - near half of the recipes you could not recreate due to the lack of a botanist (or when theyre doing syndicate operations). The Service borg can now serve well on a lowpop rounds. :cl: add: Added new botany module in mechfabricator designs. Gives service cyborg plant bag and plant analyzer. add: Added cyborg botanical omni-tool. qol: Service apparatus (another existing module) can now hold: seeds, fish, grafts. qol: Secondary beaker storage can now hold any beakers. It used to spawn with one, but when you dropped it - you could no longer pick it back. image: New gardener skin for service cyborg. /:cl: --------- Co-authored-by: Ghom <[email protected]> * Automatic changelog for PR #87464 [ci skip] * Micro-optimize the `DREAMLUAU_CALL` macro (#87617) iirc, BYOND will automatically turn `"byond:" + "whatever"` into `"byond:whatever"` during compile, but `"byond:["whatever"]"` will still be formatted during runtime instead. no reason *not* to do this, it doesn't hurt. Micro-optimization with no downsides. No user-facing changes at all. * Restores kiltborg model select icon, fixes spawned-in kiltborgs runtiming, fixes model select icon not updating for spawned-in model borgs (#87615) We've lost soul for kiltborgs (for some reason in #56601). We're also runtiming when we spawn in a kiltborg and try equipping a module for it, which tries to open the borg's module storage; since we don't initialize a hud for a mob until they are logged in, this didn't work. We also have an issue where a spawned-in borg with any module would not update the model select button to the model's because that is done in `transform_to()` at a point where no mob is logged in and there is no hud once again, in `update_module_innate()`. So this PR remedies allat. Snazzy. Restores soul Fixes #60399 Spawned-in model borgs will show their correct model icon when a player is placed in control :cl: fix: fixed a runtime when spawning in a kiltborg fix: fixed spawned-in borgs with a pre-selected model not having their correct model select icon image: KILTBORGS ONCE AGAIN HAVE THEIR OWN MODEL SELECT ICON!!!!!!! /:cl: * [BIRDSHOT] Signage Update (#87503) Some QOL for Birdshot Clearer Markings to Departments and Escape Pods :cl: map: Additional signage to help spacefolk navigate Birdshot Station /:cl: * [NO GBP] Fixes mass & time calculations for HPLC (#87625) Missed this in #87524 cause i went away for a few days & forgot to draft it :cl: fix: HPLC computes lower & upper mass ranges & ETA for reagents correctly /:cl: * Moved COMSIG_REAGENTS_REM_REAGENT below update_total() on /trans_to() (#87496) at some point, someone changed things up, so that the for loop that holds the signal of reagents being removed happens before the actual total volume variable is changed in update_total(). this puts it below where it probably (?) was beforehand this has a bunch of cascading effects probably. what matters for me is that this means total_volume is not updated by the time the chain reaches update_icon_state(), which had the effect of causing it so that BVAK autoinjectors did not have the 'half-empty' state being activated. i'm very sick so i havent tested this beyond 'it works with the thing im trying to fix', but it's prooobably okay . i mean, presumably we want to know the reduced total volume on the signal being sent anyhow right? :cl: code: Moved the reagent deletion signal below updating the total volume of containers. If any bugs seem related please report them! fix: BVAK injectors have their middleground icon state once more /:cl: * Automatic changelog for PR #87615 [ci skip] * Automatic changelog for PR #87503 [ci skip] * Automatic changelog for PR #87625 [ci skip] * Automatic changelog for PR #87496 [ci skip] * Thermal insulation tags will now format correctly (#87608) closes #87439 jointext() will still join together lists, even if some entries are "null" the PR removes null from the list so that jointext won't run if clothing is either only hot-insulated or only cold-insulated ![fucked-up-looking-dog-spookston](https://github.com/user-attachments/assets/3919fe7c-b439-41a1-bd32-4d9829836699) <details> <summary>Screenshots</summary> ![image](https://github.com/user-attachments/assets/0e29f278-c107-4caf-b36d-16f0cd385aad) </details> :cl: fix: thermal insulation tags are correctly formatted if they're only cold or hot insulated /:cl: * Fix perks not shown in roundend and also perks sprites and hud. (#87296) Fixes that perks not shown in wizard purchases in roundend report. Added perks sprites: they show up when you buy them. ![Снимок экрана 2024-10-18 161649](https://github.com/user-attachments/assets/8ddadf83-1103-4cb3-9634-4862290f686d) Ingame: ![Снимок экрана 2024-10-18 195713](https://github.com/user-attachments/assets/f85ca8bb-d17b-49a3-a29d-861e63ade3a3) Fixes is good. Sprites to understand what perks you bought. :cl: qol: Purchased perks now shown in hud. fix: Perks purchased by a wizard now shown in roundend report. /:cl: --------- Co-authored-by: Ghom <[email protected]> * Automatic changelog for PR #87608 [ci skip] * Automatic changelog for PR #87296 [ci skip] * Fixes NTNRC username sorting, additionally makes subcategories sort alphabetically. (#87616) While looking into getting the NTNRC username list sorted, I found out that it was _already_ supposed to be sorted by status, but just got broken in a pr that removes the program status variable forwarded for this reason. In this pr we simply add a `get_numerical_status()` proc that converts the new logic into a number we can sort by, then make the tgui sort account for this. Additionally, we make it sort alphabetically in its subcategories, for sanity's sake. It now sorts by operator perms first, then online>away(background)>offline, then alphabetically. While I dislike operators being at the top regardless of their status, it seems like that is how it was intended to work, and doing so sanely would requite rethinking how names are coloured entirely. On the other end, I think it's potentially good to have operators be at the top and thus easily pingable at all times. Fixes broken status sorting. Alphabetical sorting makes finding a specific user to mute or ping them less of a pain. :cl: fix: NTNRC channel user list is sorted by status again. It goes operator>online>away>offline. qol: NTNRC channel user list is now alphabetically sorted under its status subcategories. /:cl: * Automatic changelog for PR #87616 [ci skip] * Fixes areas in maintenance above cargo on Wawa (#87626) The tiny maint area above Wawa's cargo bay was flagged as part of the cargo bay, not cargo maints. This was causing the area to not behave like maints, ie "not providing safety from a radiation storm". ![image](https://github.com/user-attachments/assets/30a23c90-9413-4665-b3cb-269511196bff) Fixes #87517. Consistency good. :cl: Vekter fix: Fixed the maintenance area in the upstairs cargo bay of Wawastation not being flagged as maintenance. /:cl: * Automatic changelog for PR #87626 [ci skip] * Shuttle docker console camera eyes now refresh if the offset/range is VV'd. (#87620) If you VV the `x_offset`, `y_offset`, `view_range`, or `see_hidden` vars of a `/obj/machinery/computer/camera_advanced/shuttle_docker`, it will destroy the current eyeobj - if someone is currently viewing said shuttle console, it'll somewhat seemlessly "refresh" with the new range and offset for them. Makes it easier for mappers to get the correct offset and range for shuttle docker consoles. Not really any player-facing changes, this is meant to make it easier to figure out a good offset/view range when designing new shuttles. * removes 0.5 cooldown time from togglable modsuit modules (#87613) why did you say your pr was merge ready when you didnt do the main thing the review said you should carlarc and why did i not look and still merge it redundant not player facing * Prevents Keykeeper's Burden from being used on centcom/away z levels (#87593) Closes #87591 :cl: fix: Fixed Keykeeper's Burden being usable on centcom/away z levels /:cl: * Automatic changelog for PR #87593 [ci skip] * [NO GBP] Adds back and suit storage sprites to the kinetic crusher reskins (#87555) Adds sprites for when the kinetic crusher's reskins are in the player's back slot and suit storage slot. Additionally, ensures those spots update when the kit is applied. ![Retool_Back_And_Storage_Sprites](https://github.com/user-attachments/assets/1c4650a7-bf3a-4783-97a4-978144f44f56) Fixes #87473 (and it really should have had those sprites to begin with, my bad) :cl: fix: Retooled kinetic crushers now have proper sprites for when they're on your back or in your suit storage. /:cl: Quick sidenote: I don't think the update_held_items proc is working in this file and I have no idea why. Anyone able to help? * Automatic changelog for PR #87555 [ci skip] * Radio noise pitch variance (#87530) completes https://github.com/orgs/tgstation/projects/19/views/1?pane=issue&itemId=84495077 https://github.com/user-attachments/assets/41712f7f-db2c-47c6-9165-381753933b0e had to convert the sampling rate of radio noise to our standard so pitch variance worked properly destroys ear fatigue, finally. :cl: grungussuss sound: radio noise will now vary in pitch /:cl: * Automatic changelog for PR #87530 [ci skip] * sound equalization for bikehorn.ogg and maintenance (#87532) gave it a fade out at the end so it doesn't glitch when ending and reduced volume to be more in line with the rest of our sound volumes. https://github.com/user-attachments/assets/734e2dac-d9bf-4ab7-a865-eda75cbd1691 https://github.com/user-attachments/assets/cc567bbd-b6de-4bc4-a100-7a51d121415e ears won't hurt anymore :cl: grungussuss sound: bike horn sound volume has been reduced /:cl: * Automatic changelog for PR #87532 [ci skip] * Reduces pitch variance range for emotes (#87531) closes https://github.com/tgstation/tgstation/issues/87274 vocal chords work differently to instruments and other sfx, a lower range of pitch variance is more natural. :cl: grungussuss sound: emote pitch shifting has been fixed /:cl: * Automatic changelog for PR #87531 [ci skip] * Fixes gas analyser tabletop & storage interactions (#87525) - Fixes #87354 The problem is fixed with tables & storage items. Other interactions I'm not aware of let me know. :cl: fix: gas analyzer won't scan the floor when placing it on a table fix: gas analyzer won't scan storage items when placing it inside them /:cl: * Automatic changelog for PR #87525 [ci skip] * Fix NT Software Hub displaying >100% completion or NaN/Infinite% completion. (#87619) During all that fiddling with NTNRC I noticed that sometimes the download percentage would shoot above 100%. Looking into it, it seems that that's just because it isn't actually capped at the downloaded file size. So we cap it to the file size after adding our next download chunk, but parallel to before don't complete it immediately so that we stay on 100% for another cycle before finishing. For style reasons. Then I noticed files with a size of 0 would sometimes display NaN% or Infinite%, presumably because both of the progress percentage calculations in the ui would be dividing by zero. So to avoid this, we just skip the downloading cycle entirely for 0 size programs, and go to download completion immediately on clicking. This fixes our issues. Fixes some jank. :cl: fix: NT Software Hub no longer displays >100% completion on downloads sometimes. fix: NT Software Hub no longer displays NaN% or Infinite% completion on files with a size of 0 sometimes. /:cl: --------- Co-authored-by: Ghom <[email protected]> Co-authored-by: SmArtKar <[email protected]> * Automatic changelog for PR #87619 [ci skip] * Adds Eyecharts (#87361) Adds Eye charts You can examine them to get a rough estimate of your eye health ![image](https://github.com/user-attachments/assets/1a4d85e4-43de-45a3-a979-5e63967f3422) I mapped them onto Meta, Delta, and Ice It's peak for doctor RP. and more flavor :cl: Melbert add: Eyecharts to Medbay /:cl: * Automatic changelog for PR #87361 [ci skip] * Scanner Gate - species are not hardcoded (#87374) Removes hardcoded checks in the proc to a list, where available to scan species can be added. The available list has NOT been changed, the screenshot only shows var-edited scanner gate. ![image](https://github.com/user-attachments/assets/89cf8920-108d-48b8-88ee-2a0faaa2aa2c) Less hardcoded stuff is good. More support for future species when added. :cl: refactor: Species detection on scanner gate has been updated from hardcoded list to a variable. You can VarEdit using species' id /:cl: * Automatic changelog for PR #87374 [ci skip] * [no gbp] gets rid of manucrafter item problems by just not putting things in it (#87462) https://github.com/user-attachments/assets/25fd12e9-4c84-4ac3-a4c5-0f77cab74ba3 my really poor code kept shitting itself so lets just make it avoid any of the issues by just not doing it :cl: qol: manufacturing assembling machines instead craft using the resources on top of them, they are no longer block movement and have new sprites /:cl: * Automatic changelog for PR #87462 [ci skip] * Adds a new NFC component for circuits (#87286) TODO: - [x] Main circuit code - [x] BCI compatibility - [x] Limiting range in some way(not intended as a private cross map coms system) This adds a new NFC component, its similair to NTNet component with the distinction it will only be received by the shell's circuit you target. Allowing more targeted networking for things like remotes I'd love suggestions for a max range, if any. Because im not really sure. Maby circuit has to be in vision for it to work? gif is too big so here is direct link to discord embedded gif showing it off https://cdn.discordapp.com/attachments/326831214667235328/1296810437295341649/example.gif?ex=6713a455&is=671252d5&hm=f87b282ac71c318eac03b4a53e03ebcfd91e5a0b0a1e9165beb3f87318b96809& <img src="https://cdn.discordapp.com/attachments/326831214667235328/1296810437295341649/example.gif?ex=6713a455&is=671252d5&hm=f87b282ac71c318eac03b4a53e03ebcfd91e5a0b0a1e9165beb3f87318b96809&"> NTNet is powerfull for making networked circuits, but I lack a good way to create a direct "remote" with complex data. I want to make a circuit that makes it easier to controll other circuits in a less strictly coupeld way and this seems like a clean way to make those :cl: add: A new cirucit component allows NFC communications /:cl: --------- Co-authored-by: Ben10Omintrix <[email protected]> * Automatic changelog for PR #87286 [ci skip] * General maintenance for RTD (#87556) **1. Code Improvements** - Removed unused var `delay` from borg RTD - Converted `energy_factor` for borg RTD into a define to save memory - Makes `ranged` var have full control over the RTD instead of having the borg RTD do its own proximity checks - Autodoc for proc `try_tilling` - Don't update the UI if invalid values are passed into `handle_ui_act()` :cl: code: Improved code for RTD /:cl: * Automatic changelog for PR #87556 [ci skip] * Adds more damages, flavors and podpeople to recovered crew (#87491) Adds four new causes of death: - Shot with bullet - Shot with laser - Poisoned with venom (deals a lot of brute and gives histamine) As well as code to simulate any reagent or projectile to damage a body Adds more flavors! Small chance to spawn with a prosthethic limb Adds a 56% chance to roll a double cause of death, and a 24% to lose both limbs and organs (can't both roll) Also removed the chance for having all organs and limbs Adds podperson as a rare spawn (1/18) (they come with a plant analyzer so you can actually scan them) More causes of death means medical can practice/perform different skillsets in fixing bodies! Poisonings and bullet removals especially could not happen, so I'm happy to have those covered now. Prosthethic limb is always fun to see, and gives the reviver the choice to either replace or keep it. A small chance to spawn as a podperson could help sell the illusion of experience and having different stations. Podpersons also offer a different playstyle without being too gamey, probably being the only existing non-roundstart species I am comfortable adding to this. They're also not really seen outside botany (and I'll be honest I don't ever see them anymore), so having them fill different jobs over the station helps make the station flowerful (even if it is somewhat rare) ![image](https://github.com/user-attachments/assets/d4d7e22b-a420-40a9-8d74-aa01dc47996e) :cl: add: Added more causes of death to recovered crew add: Added double death causes to recovered crew, and even meaner space vultures! add: Adds a small chance to roll quirks on recovered crew add: Adds a small chance to spawn as a podperson to recovered crew fix: Fixes a harddel caused by quirks never being cleared on delete /:cl: * Automatic changelog for PR #87491 [ci skip] * Purges active turfs from The Derelict (#87627) ![изображение](https://github.com/user-attachments/assets/e321cb01-912a-4dba-8d50-2de62584abff) haven't tested it in game but i believe i've got them all from the looks of it less air to breathe :cl: fix: fixed active turfs on The Derelict /:cl: i'm not up to the chase whether such a map edit is a fix or a map tag * Automatic changelog for PR #87627 [ci skip] * drones can no longer speak pirate (#87440) closes https://github.com/tgstation/tgstation/issues/87405 :cl: grungussuss fix: drones can no longer speak pirate if they have a pirate hat on /:cl: * Automatic changelog for PR #87440 [ci skip] * makes the ai detector tool display the vague area the AI is looking at (#87457) https://github.com/user-attachments/assets/3c2b2fd4-6c82-4986-bb90-d9954d48e671 https://github.com/user-attachments/assets/3583f6e6-cc53-4162-a611-5870b938d11e the ai detector multitool has been slightly redone and the HUD silently removed by #68301 is back no action button, use inhand to toggle hud RMB to show static fixes #87414 also this feature was silently removed :cl: fix: brings back the AI detector HUD that was silently removed by a PR 3 years ago, use inhand to toggle hud or use RMB to see static temporarily /:cl: * Automatic changelog for PR #87457 [ci skip] * Fixes sec and command comms not working (#87656) The sound runtimed and prevented radio's from working because it treated a string as a sound datum :cl: fix: Fixes sec and command coms not working correctly /:cl: Admins can hotfix this on live by mass editing radio_noise to 0 * Automatic changelog for PR #87656 [ci skip] * Fixes moon heretic ascension not working as intended (#87631) * Automatic changelog for PR #87631 [ci skip] * water turf improvements. (#87636) Atomized from an upcoming PR. The water turfs are now simulated better. It now doesn't wet you if you're floating or flying above it or otherwise not immersed (via immerse element). It also applies a status effect to living mobs that keeps them wet over time even if they don't move around. The watery_tile element is nice but it's quite myopic in the way it's simulated. :cl: fix: You won't get wet while floating or flying on water. Otherwise, water will keep you wet even if you stay still. /:cl: * Automatic changelog for PR #87636 [ci skip] * Fixes some broken borg omnitools (#87643) - Fixes #87641 TODO - [x] Write unit tests for bog omnitool wrench - [x] Write unit tests for bog omnitool screwdriver - [x] Write unit tests for bog omnitool wirecutter - [x] Write unit tests for borg omnitool crowbar - [x] Write unit tests for borg omnitool multiool Tests for engiborg omnitool for now :cl: fix: some broken borg omni tools should work again /:cl: * Automatic changelog for PR #87643 [ci skip] * Fix glass floor crowbar interactions (#87630) Fixes #87569 This allows glass floor tiles (reinforced/plasma/etc.) to be crowbarred. It also removes deprecated code from #66301 that was used as a band aid to handle openspace multi-z interactions with glass floors. Glass floors were permanently preventing people from placing or fixing wires/pipes/etc since the tile could not be crowbarred. :cl: fix: Glass floors can now be crowbarred. code: Removed deprecated crowbar code for tiles /:cl: * Automatic changelog for PR #87630 [ci skip] * Refactor gene combination recipes to not use strings (#87629) Rewrite `/datum/generecipe` to have two variables, `input_one` and `input_two` that hold the type path of the ingredients for the recipe, instead of it being a semicolon-separated string. Better code, will catch invalid type paths in recipes at compile-time. No player-facing changes * UI sounds try 2 (#87523) completes https://github.com/orgs/tgstation/projects/19/views/1?pane=issue&itemId=84390831 https://github.com/user-attachments/assets/da9536df-71af-4222-b0df-0ae5bdee96a8 It sounds cool! :cl: grungussuss sound: The lobby menu now click sounds. /:cl: * Automatic changelog for PR #87523 [ci skip] * material fishing rods and material fish. (#87108) The reason why I refactored material effects code is here. In this PR I add the possibility of printing fishing rods from different materials at your nearest autolathe, though it doesn't stop there. Each material has different values for (so far) fishing difficulty, casting range, experience gained and foremost the chance of catching fish made of the same material as the fishing rod used to catch it. The material the fish is made from can either increase or decrease the weight of the fish. In a many cases, material rods can also have other small effects on fishing, like removing the chances of duds even without a bait, or attracting shiny-loving fish, or passing some other fish trait checks. In a few cases, these fishing rods can have bigger, more impactful effects on fishing. That said, here's a list of more or less the effects (skipping very minor ones and those inherited from being items) and modifiers across materials so far, a few things will be added later: <details> <summary>Huge-ass list (out-fucking-dated now that I've added 5 more variables 😢)</summary> - Iron: +30% fish weight, 8% chance of material fish - Glass: +20% fish weight, +5 difficulty, +20% experience, 8% chance of material fish - Silver: +35% fish weight, -5 difficulty, - 15% experience, 15.5% chance of material fish - Gold: +50% fish weight, -10 difficulty, -25% experience, 20.5% material fish, +1 casting range - Diamond: +40% fish weight, -13 difficulty, -30% experience, 23% material fish, -1 casting range - Uranium: +100% fish weight, 8% material fish - Plasma: +30% fish weight, 8% material fish - Bluespace: +30% fish weight, -5 difficulty, -15% experience, 23% material fish, +5 range - - 33% chance of selecting a reward from (almost) any fishing source instead of the current one. - Bananium +20 difficulty, +60% experience, 38% material fish, +3 casting range - - 20% chance of fishing either a clownfish, lubefish, donkfish, soulfish or skin crab instead - Titanium: +20% fish weight, -5 difficulty, 8% material fish, +1 range - Runite: +50% fish weight, -18 difficulty, +220% experience, 38% material fish, +1 range - Plastic: -20% fish weight -5 difficulty, +20% experience, 8% material fish, +2 range - Wood: -50% fish weight, +8 difficulty, +30% experience, 13% material fish, -1 range - Adamantine: +60% fish weight, -23 difficulty, -40% experience, 33% material fish, +1 range - Mythril: +40% fish weight, -25 difficulty, -50% experience, 43% material fish, +2 range - Hot Ice: -10% fish weight, -10 diffiulty, -10% experience, 18% material fish, +1 range - Metal Hydrogen: -40% weight, -15 difficulty, -20% experience, 23% material, +4 range - Sand: +20% weight, +30 difficulty, -80% experience, 8% material, -2 range - Sandstone: +20% weight, +25 difficulty, -70% experience, 8% material, -2 range - Snow: -20% weight, +25 difficulty, -70% experience, 8% material, -2 range - Runed Metal: +50% weight, -12 diff, -10% experience, 38% material - Bronze, +40% weight, 13% material - Paper: -60% weight, +40 diff, -90% experience, 8% material, -2 range - - Has a 20% chance of fishing up an aggressive stickman - Cardboard: Same as above, but without the stickmen - Bone: +5% weight, +15 diff, -15% experience, 8% material, -2 range - - 20% chance of fishing up either a unmarine bonemass, a unmarine mastodon, a hostile skellie or rarely a single-use spectral instrument that can turn you or someone else into a spooky scary skeleton. - Bamboo: -50% weight, -4 difficulty, +30% experience, 13% material, -1 range - Zeukerite: 20% weight, -16 difficulty, -10% experience, 28% material - Plasteel: +75% weihgt, +5 difficulty, +10% experience, 8% material - Plastitanium: +10% weight, -10 difficulty, -5% experience, 8% material, +1 range - Plasmaglass: +20% weight, +5 difficulty, +30% experience, 8% material - Titanium Glass: +25% weight, -5 difficulty, +25% experience 8% material - Plastitanium Glass: +20% weight, +50% experience, 8% material - Alien Alloy: +140% weight, -25 difficulty, 33% material, -40% experience, +2 range - Hauntium (good luck using it): +40% weight, -30 difficulty, +50% experience, 38% material, +2 range - Meat: +13 difficulty, -20% experience, 28% material, -2 range - Pizza: -10% weight, +13 difficulty, -20% experience, 28% material, -2 range </details> I think it's nice to have two features interact with each other (fishing and materials), and it adds a layer of interesting uses to some materials. :cl: add: Autolathes can now print fishing rods of different materials, which can increase or decrease fishing difficulty, casting range, and experience gained, and can have other interesting effects. /:cl: * Automatic changelog for PR #87108 [ci skip] * Minor fishing nits and tweaks (#87638) * Automatic changelog for PR #87638 [ci skip] * [NO GBP] fixes spurious unit test fail for prosthetic limbs (#87653) Yeah I really don't get why this happens. I went through it on local, and it goes try delete human > delete quirks > delete the nullspaced original limb from proslimb > delete the rest of limbs Still the unit test fails because it's getting qdelled twice? It doesn't qdel twice on local so idfk This is caused by morgue bodies with proslimbs being spawned and deleted, so uh just stop morgue bodies from getting proslimbs. idk man its a bad fix but it'll get our unit tests running again Fixes https://github.com/tgstation/tgstation/issues/87663 Fixes https://github.com/tgstation/tgstation/issues/87669 * Fixes space kidnap being instant (#87654) Yeah apparently the voidwalker kidnap was completely instant https://github.com/tgstation/tgstation/pull/86031 replaced the callback that checked for being incapacitated with the number 1 :cl: fix: Fixes voidwalker having an instant kidnap /:cl: --------- Co-authored-by: MrMelbert <[email protected]> * Automatic changelog for PR #87654 [ci skip] * resprites 9 hair styles (#87644) * Automatic changelog for PR #87644 [ci skip] * Guncode Agony 3: Projectile code cleanup (#87628) Massive cleanup/pseudo-refactor of projectile and projectile-adjacent code. One letter variables, weird logic, some runtimes, all of that. Atomized in a separate PR from the actual refactor so we don't end up with a 5k line PR. Makes the code possible to work with before I nuke pixel_move and kevinz units:tm: * Automatic changelog for PR #87628 [ci skip] * Adds flatboxes, boxes that fit beneath tiles (#87229) This box type has a maximum of 3 slots, and can be hidden beneath floortiles. It can be crafted by *jump emoting ontop of a regular, empty box. https://github.com/user-attachments/assets/d7ab52ec-2b47-4ab4-b2af-05ce00b0ae4b https://github.com/user-attachments/assets/30dd5de3-1f4d-4cb4-8d9c-8625379e76bf Hiding beneath tiles is a fun, yet not broken method of stowing contraband. The toiletbasin or moisturizer trap remains a better option, so I want to open up the space between the floorboards as quick alternative for stowing or making cache drop-offs. Smuggle satchels have a lot more going for them than their ability to be hidden beneath tiles, so I don't feel like this is intruding on their turf. * Automatic changelog for PR #87229 [ci skip] * Removes SiliConnect from borg PDAs, expands their self-status app instead (#87350) - SiliConnect is no longer a default app for cyborgs. - RoboTact, the borg self-status app now has a Network tab, which lists other borgs' status. - The Network tab will only list borgs connected to the same AI as you. If your AI goes down, you lose connection to other borgs' status info. - Your AI is also listed on the Network tab, with their own status in a very binary good/bad form. - Syndicate borgs are able to see other syndicate borgs on the Network list, even though they lack an AI. SiliConnect was recently added to the default borg apps list. But it has a lot of features that borgs can't actually use, and so feels rather messy. It was added with the goal of letting borgs see eachother's status, and so I've ported that functionality into RoboTact. SiliConnect is no longer a default borg app (though it *can* be installed if a borg and human really want it to be). Showing the AI's status is certainly a balance choice. But it's not really that much of a secret when the AI dying already adjusts the monitors across the station to a BSOD image. On the flip side, we get to shut off borg status sharing when the AI goes offline, which is neat. :cl: del: SiliConnect, a tool meant for Roboticists, is no longer included by default on borgs. add: RoboTact, the borg self-status app, now shows the status of other borgs synced to the same AI. Syndicate borgs can likewise see eachother's status, even without an AI. balance: RoboTact also shows their synced AI's very basic status of functional or offline. /:cl: UI Pictures: ![image](https://github.com/user-attachments/assets/1a5b6cbc-daa6-43a7-8ff6-95119d84eb83) Dead AI: ![image](https://github.com/user-attachments/assets/f9f1668c-ae5b-4867-8634-590b573a968c) Syndicate borgs do not see station borg status, but can see eachother's ![image](https://github.com/user-attachments/assets/085a0745-4c18-4a45-bcb4-ef93fa5b799f) ~~Drafting because I need to do edge-case testing, and the AI box isn't quite functioning correctly when the borg has no AI master.~~ * Automatic changelog for PR #87350 [ci skip] * Fix rare runtime if there are no available organs to take (#87671) This PR fixes a rare runtime error, regarding lost crew members, that occurs when there are no organs in the `organs_we_can_take` list, which causes an exception due to an attempt to `pick()` from an empty list. The less exceptions exists, the better. :cl: fix: fixed a rare runtime with lost crew having no organs /:cl: --------- Co-authored-by: SmArtKar <[email protected]> * Automatic changelog for PR #87671 [ci skip] * Fixing transparency for materials. (#87498) * Automatic changelog for PR #87498 [ci skip] * mining resonator clips to belt slot (#87471) mining resonator clips to belt slot. its a belt-like toolcore itempunk. a total oversight it never did. it fits in mining belts!! :cl: qol: mining resonator clips to belt slot /:cl: * Automatic changelog for PR #87471 [ci skip] * Sound mixer attempt 2 (#87529) ![image](https://github.com/user-attachments/assets/131caab0-5495-4f28-b9e0-46ce4ebc7b40) gives players more control over how loud they want certain sounds to be :cl: grungussuss sound: the volume that ship ambience, ambience, radio noise and announcements play at can now be tweaked in preferences, check your preferences! /:cl: * Automatic changelog for PR #87529 [ci skip] * Removes S (#87687) Removes S Removes S :cl: code: Removes S /:cl: * Automatic changelog for PR #87687 [ci skip] * Ah yes, the taste of datum/reagent/copper (#87699) Delicious * Alien operating tables now have a 20% surgery speed bonus (#87665) Alien operating tables (made by making a table frame with alien alloy, then adding silver) now have a 20% surgery speed bonus, as compared to normal operating tables. I also refactored the `get_location_modifier` proc, it now uses a "typecache" rather than a else-if locate tower. Medbaymaxxing with alien tech is nice - and this somewhat cursed code is still better than the else-if locate tower, honestly. :cl: balance: Alien operating tables now have a 20% surgery speed bonus. refactor: Refactored how table/bed surgery speed modifiers are calculated, so it's hopefully more efficient now. /:cl: --------- Co-authored-by: Kapu1178 <[email protected]> * Automatic changelog for PR #87665 [ci skip] * Moves MSO's owned files out to be shared between him/Scriptis and him/me (#87668) He plans on moving away from the codebase so I am taking soft ownership over the MC in order to prevent gigafuckshit. Similar story for config/db/build stuff, the hosts need to be pinged about db/config/build changes and now there's two of them * Moves MSO's owned files out to be shared between him/Scriptis and him/me (#87668) He plans on moving away from the codebase so I am taking soft ownership over the MC in order to prevent gigafuckshit. Similar story for config/db/build stuff, the hosts need to be pinged about db/config/build changes and now there's two of them whoops Moves MSO's owned files out to be shared between him/Scriptis and him/me (#87668) He plans on moving away from the codebase so I am taking soft ownership over the MC in order to prevent gigafuckshit. Similar story for config/db/build stuff, the hosts need to be pinged about db/config/build changes and now there's two of them * Fix broken spin dismount (#87642) Fixes bug introduced by https://github.com/tgstation/tgstation/pull/84306 that broke borg throwing Bugfix. Lets borgs throw again :cl: fix: Fix borg throwing not working /:cl: * Automatic changelog for PR #87642 [ci skip] * Changes remark logging to reflect whether an applied remark is secret or not (#87522) Adds a ternary statement to the logging for adding admin remarks (notes, messages, watchlists) to specify if a note is secret. No change to actual administrative functions, just the logging. Accurately reflects the note added! :cl: admin: When a secret note is applied, it'll now be logged as a secret note (instead of appearing like a regular note). /:cl: * Automatic changelog for PR #87522 [ci skip] * [tgui] Bumps node & yarn versions (#87700) - Node 22 LTS and Yarn 4.5.1 - Removes windows 7 compatibility support - Set to install for you on the next build - CI also bumped to Node LTS Oil change for TGUI. Up to date and fresh! N/A * the mod skin applier actually works now + honkeratives waddle (#87704) * Automatic changelog for PR #87704 [ci skip] * restores corrupt audio files [no gbp] (#87711) 2 sound files got corrupted by optivorbis uncorrupt is good :cl: grungussuss fix: duct tape will now properly make sounds /:cl: * Automatic changelog for PR #87711 [ci skip] * [NO GBP] Post-Material rods fixes and tweaks (#87696) This PR follows the material fishing rod PR, which had a small issue in which I had forgotten to add a return value to a proc and thus fish caught from material fishing rods would never be made of that specific material. I've tweaked some values for materials and fishing rods, I felt some of the "better" rods were a bit too fast, and some downright let you skip the fishing minigame with zero to one level. Also, I felt that, despite making fishing easier kinda, the area of the bait slider still felt a tad too small, so I've introduced a height multiplier for the slider so that it could cover more space, depending on the strength multiplier of the material (for once, not a new niche variable). This doesn't apply to fishing rods with strength multiplier less than 1 because they don't need to be made worse. About fish and cargo, I've added a soft cap (a 0.86 exponent) to fish selling price. It shouldn't affect the wide majority of fish you catch, however it does affect those that sell for over 6k per unit, which are few and rare. However, I've been pinged about some ludicrous money-making done by selling fish alone on a downstream server, likely from growing the big fish to be up twice their initial size and weight (capped to 2.5 the average value for the species), however, new features may push things a little further, so it's better to be safe than sorry. Screenshot below: They said it took them about a hour, however take it with a pinch of salt since it's by no mean easy and fast money by Terry's standards: I've also halved the selling price of jumpercable fish, which, despite requiring an emag or some sort luck, could easily be farmed in due time with little to no maintenance, being self-reproducing and hunger-less, and each of them would sell for 6k. conversely, I've increased the price of the unmarine mastodon a little because of the soft-cap, since it's very rare. * Automatic changelog for PR #87696 [ci skip] * Adds new station map Nebulastation (#84826) Adds a completely brand new multi-z station map "NebulaStation". New areas and few exclusive map shuttles (ferry, mining, arrival, evac, cargo) Few example screenshots ![StrongDMM-2024-07-19 20 53 15](https://github.com/user-attachments/assets/e895bae6-f3e7-4ee4-9779-96266e943db0) ![StrongDMM-2024-07-19 20 51 41](https://github.com/user-attachments/assets/43bb1443-1c2c-4c4e-8f0c-b743866c84fa) ![image](https://github.com/tgstation/tgstation/assets/143291881/4bdfa1d7-ba84-408b-a4ff-9fa0dd3a2783) ![image](https://github.com/tgstation/tgstation/assets/143291881/6caa71cc-92f2-49ff-b05c-76e091b5b05b) ![image](https://github.com/tgstation/tgstation/assets/143291881/c64ac863-9287-4827-9168-ea9a55f66a9e) ![image](https://github.com/tgstation/tgstation/assets/143291881/dff66e71-89a0-4da7-94f5-07774c239047) And more... New maps are always good for the game :cl: Kiko add: Nebulastation, new station map /:cl: * Automatic changelog for PR #84826 [ci skip] * Add's support for population limits on keep_me_secure component (Loneop event balance change) (#87657) This is used to set the nuke disk's safety factor from applying on very low pop player counts, as it's unlikely the disk can be secured. I don't believe this precludes the event from being randomly chosen, but it makes sure it wont be a certainty on very low pop when the disk hasn't been secured from lack of players Just to clarify this applies only at 9 population or lower. On very very low pop, the disk is often unsecured, and.. more importantly, a lone op is likely to have a very high chance of easily succeeding as there is not enough crew to upkeep a watch on the relevant areas. This event is fun on higher populations, and needing to protect the disk makes sense, but on very lowpop, I think it doens't quite work as designed, as instead it just means a lot of low pop rounds will end due to a loneop spawning if there's any ghosts about at all. :cl: oranges balance: Nuclear disk no longer needs to be secured at sub 10 population /:cl: * Automatic changelog for PR #87657 [ci skip] * Fixed sect nullrod bonus component (#87692) Fixed sect nullrod bonus component by adding comsig_sect_change to signals registered. This didn't work if you picked nullrod before sect. Now it does! bug :cl: fix: Fixed sect nullrod bonus component /:cl: * Automatic changelog for PR #87692 [ci skip] * Moves destructive analyser attack chain to base item interact level (#87690) - Fixes #87658 - Fixes #84583 Use combat mode to get the desired item interaction (like planting c4 on the machine) cause all items are accepted now :cl: fix: destructive analyser accepts all items without interacting with them (no planting c4 on the machine or radio jammer jamming the machine). Use combat mode to get these default behaviour's instead /:cl: * Automatic changelog for PR #87690 [ci skip] * You can succumb quietly by right-clicking the UI (#87683) fixes #87662 Right-clicking the succumb alert will let you succumb without a message also fixes a few bugs ![fucked-up-looking-dog-spookston](https://github.com/user-attachments/assets/9715ecfe-977f-41e1-b45b-050a111c6b54) :cl: qol: you can now right-click the succumb action button to succumb silently qol: the succumb inputs have a few more titles to choose from now fix: the succumb text input now shows the actual correct number of characters you can say fix: attempting to cancel a succumb will no longer kill you spellcheck: the text for failing to succumb is now spanned /:cl: * Automatic changelog for PR #87683 [ci skip] * You can repair clothing that has storage with cloth again (#87691) - Fixes #85993 :cl: fix: You can repair clothing that has storage with cloth again /:cl: * Automatic changelog for PR #87691 [ci skip] * Renames characters in dark matter singulo description (#87673) The dark matter singularity and its toy have long quotes in the examine text. This doesn't change the quotes themselves, but changes the name of the characters in the attributions. "Miles O'Brien" is now "Tenshin Nakamura", that surname implies a connection to the ingame faction Nakamura Engineering. "Jadzia Dax" if now "Huey Knorr" because it sounds a bit like 'who knows'. These were changed in #75133 to remove references to player names. I don't disagree with the reasons for changing them, but the replacements were half-assed. Just names of characters from Star Trek. Muh immersion. :cl: spellcheck: Changed names in the description of dark matter singularities and their toy version. /:cl: * Automatic changelog for PR #87673 [ci skip] * Fixes RHD storage interaction (#87679) - Fixes #87568 Not just for RLD but for RCD, RPLD & RTD. They don't touch storage atoms :cl: fix: RLD won't try to put lights on storage objects like bags & such /:cl: * Automatic changelog for PR #87679 [ci skip] * Prevent vape from being emptied if the cap isn't open (#87652) If the cap isn't open, reagents won't be emptied It makes no sense and you constantly empty reagents by accident, this will hopefully prevent this :cl: fix: e-cigarettes can't be emptied if the cap isn't open /:cl: Co-authored-by: Ben10Omintrix <[email protected]> * Automatic changelog for PR #87652 [ci skip] * RD modsuit advanced reagent scanner fix (#87710) Makes the Research Director's modsuit advanced reagent scanner actually detect reagents, also changes descriptions to mention its explosion sensor and research scanner. Currently the research director's modsuit has an unremovable advanced reagent scanner module that does not scan reagents and can't be replaced with a working reagent scanner, this fixes that. It is also good to mention its explosion sensor ability and research scanner as it lets research directors know what the module does. :cl: fix: Made the Research Director's Modsuit's Advanced Reagent Scanner scan reagents. spellcheck: Changes description of the Advanced Reagent Scanner to mention its explosion sensor and research scanner. /:cl: * Automatic changelog for PR #87710 [ci skip] * [no gbp] fixes supposedly really bad sorter exploit (#87728) fixes #87722 go figure * Automatic changelog for PR #87728 [ci skip] * Fixes level 1 singularity eating containment field and being able to move (#87717) Fixes: https://github.com/tgstation/tgstation/issues/87716 Fixes this https://github.com/user-attachments/assets/d31c5f97-1576-404b-8427-a4089446fd5f Its a fix pr :cl: Rengan fix: fixes singularity eating containtment field /:cl: * Automatic changelog for PR #87717 [ci skip] * Chef groceries more clearly say who they are for. (#87732) Chef produces is 35% cheaper to order from the chef console If chef is forced to order from the cargo because botany isn't growing what they need they deserve a discount, also this is inline with mining and bitrunning discounts. :cl:oranges balance: Chef produce orders are cheaper /:cl: --------- Co-authored-by: Fikou <[email protected]> * Automatic changelog for PR #87732 [ci skip] * Fixes for borg attack chain interactions (#87705) - Fixes #87612 by returning the correct define when `COMSIG_ATOM_ATTACK_ROBOT_SECONDARY` blocks the attack - Borg `UnarmedAttack()` now checks for modifiers (i.e. are we left or right clicking) this allows `redirect_attack_hand_from_turf` (which calls `UnarmedAttack()`) component to call either `attack_robot()` or `attack_robot_secondary()` correctly so you can now turn the fire alarm on & off by attacking its mounted wall as a borg - Borg's `attack_robot_secondary()` now checks for `interaction_range` just like `attack_robot()` so you can't do shinanigens like resetting a fire alarm/turning on or off the conveyer switch from an infinite distance like through camera's & such - Removed Borgs `RangedAttack()` proc which called `attack_robot()` because it violates `interaction_range` for the proc :cl: fix: No runtime when clicking on a fire alarm's mounted wall as a borg fix: You can turn the fire alarm on & off (And not just on) as a borg via left & right click on its mounted wall fix: certain secondary interactions of items & borgs now respect the borgs interaction range /:cl: * Automatic changelog for PR #87705 [ci skip] * [NO GBP] You can perform fish scanning experiments again (plus other stuff) (#87721) I've accidentally assigned the FISH_FLAG_UPDATING_SIZE_AND_WEIGHT flag the same value of FISH_FLAG_EXPERIMENT_SCANNABLE, that's why I couldn't perform it while playing the game. Also, this PR fixes the broken interaction of catch'n'release, as well as a typo in the name of material fishing rods. I broke a couple things. * Automatic changelog for PR #87721 [ci skip] * Increase gas mask filter effectiveness. (#87712) This PR increases the effectiveness of gas mask filters against small amounts of gas. It increases the filtering efficiency of filters, makes them remove more gas from inhaled air, and makes their degradation more dependent on if they are in use or not. When a mask filter isnt being used it will degrade much slower and when it is being used it will degrade much faster. Testing: all this changes are some magic numbers used in a single short math equation. If this breaks something, I might as well quit TG anyways. Currently, gas mask filters are nigh redundant, and have no noticable effect on any gasses except for those with incredibly low minimum effect concentrations. For example, against n2o or plasma, a filter will make a room temp air mixture with an extra 2 mol of n2o/plasma added, which would normally inhale as a partial pressure of ~3.83, to a partial pressure of ~3.78. Note that the effect PP thresholds of n2o are 0.05 for giggling, 1 for n2o alert, and 4 for sedation. Increasing the effectiveness of filters will not prevent you from being affected by full-on floods, but they will reduce the impact of small concentrations of dangerous gasses. If a chemist boils off plasma accidentally, the pharmacy can end up poisoning people inside it for 10 minutes or longer, without even triggering air alarms. Making it possible to prepare for and work against minor leaks, spills, and the after-effects of cleaned up gas floods will reduce the frequency of "firelock hell" scenarios. :cl: balance: Gas mask filters are now more effective, and their degradation is more heavily influenced by what gasses they are filtering. /:cl: * Automatic changelog for PR #87712 [ci skip] * Remove `cyborg_tool` & improves omnitool tests (#87709) - Removes `cyborg_tool` test, which partially helps with the below issues as it is superseded by `datum/unit_test/omnitool` - #87708 - #87713 - Removes borg transform animation from omnitool test which causes random runtimes. Also restructures it for future omnitool tests which will come in future PR's :cl: N/A /:cl: * Scared of the Spooky Circus Man? Wear a tinfoil hat! Mental resistance protects from some heretic abilities (mostly Moon effects) (#87702) Several effects that target the mind now are blocked by the presence of MAGIC_RESISTANCE_MIND, which is only found (currently) on tinfoil hats. Affected abilities and items include; Moon Path Powers (like, pretty much every single thing the path gets) Eldritch Paintings Mask of Madness (oh, and normal magic resistance also applies because...it's fucking magic?) Mindswap Terrorize (the nightmare ability) Abyssal Gaze (completely unused, used to be a rune golem spell I think) Tinfoil hats horribly debilitate you and render you pretty terrible at actually validhunting. But it is exceptionally funny for someone to willingly subject themselves to wearing it in fear of being attacked by a Moon heretic. And then get blinded and stunned by their mere presence because they are now scared of heretic's tools, alongside most of the station's various roles. Since this doesn't stop a heretic from A) hitting you with the ol' Mansus Grasp the old fashioned way and B) stabbing the shit out of you after this, I don't anticipate it being TOO effective when it doesn't stop the heretic's bread and butter abilities, as well as causing automatic debuffs just from them being on the screen. If heretics giving out a phobia targeting them specifically wasn't tolerable, then someone willingly subjecting themselves to that same effect to stop a moon heretic is maybe unlikely, or just really funny and sandboxy. Oh, and it makes them scared of, like, security and command and stuff so this is NOT a viable option for those roles at all unless they really want to suffer constantly for it. But maybe that's funnier as a result. :cl: balance: Some mind altering effects of heretics (predominantly Path of the Moon heretic abilities) are nullified using...a tinfoil hat. But awareness of the mind altering psychotropic eldritch brain wizards has spread amongst the conspiracy theorists. They could be anyone! Even YOU. balance: Some additional spells (mindswap, nightmare's terrorize) are also blocked. /:cl: * Automatic changelog for PR #87702 [ci skip] * [tools] Fixes tgui build warning (#87724) <!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> This might very well only happen to me, there were no issues, but running `bin\tgui-build` rather than <kbd>CTRL</kbd><kbd>SHIFT</kbd><kbd>B</kbd> would error. The default windows powershell (5.1 for me) is the culprit. This routes it to an [upgraded powershell](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.4), if you have it installed. ![image](https://github.com/user-attachments/assets/b1ccc00b-d109-4e11-9459-942a765a7d45) <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> I hate red letters in my terminal >:( <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> Dev only * putting [tm only] in your title will now apply the label automatically (#87703) title automation is nice, makes it more visible to players that a pr is tm only nothing player facing * Removes glass from status & newscaster frame's custom materials (#87689) - Fixes #87574 It's custom materials which is used in deconstruction did not match its crafting recipe requirements :cl: fix: status & newscaster frame won't drop extra glass sheets upon deconstruction /:cl: * Automatic changelog for PR #87689 [ci skip] * Fix NTNRC duplicate message jank and new message header, makes program headers actually update when there's none. (#87610) As before, more fiddling with NTNRC, more bugs. This time, the same user sending the same message within the same second would cause this message to spawn a new copy each time the channel was opened, until the UI was closed and re-opened. Looking into it, this seemed to be because we would set the `Box`'s `key` value to the message contents: <https://github.com/tgstation/tgstation/blob/b0d71024c0c10a0d276ea3119894c27ca7adf0d0/tgui/packages/tgui/interfaces/NtosNetChat.jsx#L156> Which isn't actually unique. To fix this, we instead make each channel keep track of an incrementing `id` number to assign to each message, and convert the `messages` list to an associative list using those numerical ids stringified. We don't just use the list index as a key, as we later may want to target specific messages, so a consistent unique key is important. This fixes our primary issue. In the process of making the rest of the code account for this, I noticed that the NTNRC program header that's supposed to show new messages in the active channel when the program is idle didn't actually work. Just at all. So I rewrote the entire thing, and it now tracks the last read message's id rather than the full message, and sets this when you actually background the program. The rest still runs on process tick, where it updates the header if there's a new message with a different id on top. Finally, the header part of the UI wasn't actually updating if there were no headers, so now it forwards a lack of headers change as well. Reduces more NTNRC jank. Good if shit like, actually works. :cl: fix: NTNRC no longer endlessly duplicates messages with duplicate contents upon switching channels. fix: The new message header you get when NTNRC runs in the background actually works. fix: NtOS header actually updates if there are no program headers. /:cl: --------- Co-authored-by: SmArtKar <[email protected]> * Automatic changelog for PR #87610 [ci skip] * Goliath Tendril Hammer is now resistant to acid and fire (#87697) The goliath hammer is now resistant to fire and acid. Being an extension of your body, this should probably not burn off until the entire limb does. Closes #87566. :cl: fix: Goliath Tendril Hammer arm (from the gene brain) is now resistant to being burned off by acid/fire. /:cl: * Automatic changelog for PR #87697 [ci skip] * Moves material contai…
- Loading branch information