mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-18 03:26:31 +01:00
masterfixes
63 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
21b4095dfd |
[MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)
Upstream 04/17/2026 fixes https://github.com/Bubberstation/Bubberstation/issues/5549 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com> Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com> Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com> Co-authored-by: loganuk <fakeemail123@aol.com> Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com> Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> Co-authored-by: Lucy <lucy@absolucy.moe> Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com> Co-authored-by: Isratosh <Isratosh@hotmail.com> Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com> Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com> Co-authored-by: Alexander V. <volas@ya.ru> Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com> Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: Tim <timothymtorres@gmail.com> Co-authored-by: Iamgoofball <iamgoofball@gmail.com> Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com> Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com> Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com> Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com> Co-authored-by: Josh <josh.adam.powell@gmail.com> Co-authored-by: Josh Powell <josh.powell@softwire.com> Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com> Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com> Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com> Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com> |
||
|
|
ac41c111f6 |
Mech equipment buttons DLC (#93664)
## About The Pull Request Adds equipment action buttons for cargo module and fire extinguisher YOU can access YOUR mech cargo module without using mech UI screen simply press left click to unload first item OR right click to select item to unload(comes in dat radial menu thing) <img width="300" height="259" alt="riplaey" src="https://github.com/user-attachments/assets/4469bfb9-ec64-4e71-b774-4b5e8aa964ce" /> also works for fatty if ANYONE cares about him <img width="272" height="234" alt="fatty" src="https://github.com/user-attachments/assets/ff6cf41a-ab7a-48fa-b490-8ce98448b647" /> My baby boy fire extinguisher mech module was untouched by original mech action buttons PR so i had to do him right left click to spluff, right click to refill Also made so fire extinguisher now goes on all mechs because its more usefull in combat scenario than for firefighting (3x3 slips??? yes please!!!) ## Why It's Good For The Game more action buttons bloat on screen less use of clanky UI ## Changelog 🆑 add: Added UI buttons for mech cargo module, left click to dispose first item in the list and right click to select an item to drop. add: Added UI button for mech fire extinguisher, left click to splash and right click to refill. balance: Mech fire extinguisher module now goes on any mech, combat slips with a press of a button! /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
a0464ce370 |
Fixes blood drunk miner's dash and some mecha actions not working (#92772)
## About The Pull Request #92354 missed a few uses of Trigger, so blood drunk was missing the clicker arg and some mecha actions didn't account for the change. ## Changelog 🆑 fix: Fixed blood drunk miner's dash and some mecha actions not working /🆑 |
||
|
|
0bc42d6940 |
Fixes the issue of usr pointing to admins by making Trigger pass down clicker (#92354)
## About The Pull Request Fixes the issue of usr pointing to admins by making Trigger pass down clicker, as usr is fucky and can be passed down by other unrelated procs. Fun. Added the clicker arg to all usages of Trigger as well Also changes isobserver check in antagonist ui_act code that prevents observers from clicking UI's instead to check if the ui.user is owner.current ## Why It's Good For The Game Fixes admins giving heretic to people opening the heretic UI for the admin instead |
||
|
|
92cf3871a8 | Makes mech removal crowbar remove mech sleeper patients (#92281) | ||
|
|
7ba7629968 |
Literally just slows the Paddy down by 2.5x (#91463)
## About The Pull Request Paddy slow_pressure_step_in from 2 -> 5 Paddy fast_pressure_step_in from 1.5 -> 3 This makes them decently slower than a human, unless they can tag them with disabler shots first. ## Why It's Good For The Game I think It's deeply, deeply unhealthy that we give security a tool at round start that's faster and more oppressive than a security officer. Antagonists essentially have to plan their entire round around the fact that they will be run down the moment they pop their head out. It's incredibly punishing to antags that try to focus on stealth, because you generally won't have the tools to combat it, and running is not an option. If your plan falls through, it's over It's incredibly punishing to antags that don't have access to an EMP, because it outpaces you if you fight, and it outpaces you if you flight. If you get tagged, it's over It's even punishing to antags that DO have an emp or a mech counter - a traitor has to dedicate 5% of their TC on buying an EMP implant, a wizard will have to dedicate 20% of their spell points to disable tech, a heretic isn't allowed to pick anything but rust And if you don't want to buy an EMP, well, we made EMPs harder to make a few years back in #73081 TL;DR this thing's speed makes it too oppressive as a roundstart tool, forcing all antags to play around it, and it's not very fun. Slowing it down aims to refocus it from "a tool which is capable of running down literally every antag, including Dragons and Xenos" to "a tool security can use to lock down an area, such as during a riot" (Yes other mechas are faster, but they're not available roundstart and robotics is useless half the time, so they're considerably less problematic) ## Changelog 🆑 Melbert balance: Paddy is 2.5x slower /🆑 |
||
|
|
5a3d6881ec |
Completely strips silicon control options out of open cage mechs (except mech domination). Adds flags to handle granular control restrictions and beacon limitations. (#91118)
## About The Pull Request Open cabin mechs cannot be piloted by silicon pilots. MMI's, uploaded AI's, positronics or AI control beacons. The mechs can still be tracker beaconed. It can also be dominated via the malfunctioning AI power. Adds some flags to help flag which mechs can or cannot be beaconed, or which are silicon compatible. ## Why It's Good For The Game I'm not going to lie. I do feel a bit pressured on this change in particular. This is somewhat meant to be an intended feature. But I think the cats out of the bag on open cabin mechs and the ways to circumvent their downsides. And the more I think about it, the more I come to realize that I frankly haven't had many, if any, good interactions with a posibrain/MMI mech army. So making that more efficient is...a problem. Using a silicon-based pilot can help you evade the potential consequences of being a flesh and bone pilot inside of a steel mesh cabin and being shot repeatedly. So you may as well, in those instances, treat it as a sealed cabin mech. And these mechs are surprisingly pretty strong statistically. Especially the Paddy with its ability to equip actual lethal weaponry. They're cheap, can be mass produced, come out early, and durable. The only limitation is pilots, and if you're printing positronics and get ghosts for those positronics, you can usually just keep producing more. From a purely objective standpoint, there isn't much reason to not push out posi-paddys over any other mech. Rather than settle for a perfect answer, let's at least require some human pilots in these mechs so that their supposed downside is more of an Achilles heel. ## Changelog 🆑 balance: Caged mechs cannot accept silicon pilots. AI uploaded pilots, AI control beacons, MMIs or positronics. Malfunctioning AIs can still dominate these mechs. code: Allows for a higher degree of granularity for what mechs can and cannot accept by including additoinal mecha flags to block beacon type installations, pilot uploads and so on. /🆑 |
||
|
|
541c352a74 | Mecha cargo holds no longer shove themselves inside themselves when being deleted (#90626) | ||
|
|
fbbddbb012 |
Revises and adds several new bounties for assistants, roboticists, and medical doctors. (#89772)
## About The Pull Request This pull request makes several balance adjustments to older bounties, primarily for the roboticist and assistant. Additionally, this adds a new type of medical doctor bounty as well. ### Bounty Modifications: **Assistant**: Toolbox bounty The toolbox bounty now requests 1 toolbox instead of 6. However, the toolbox bounty now requires a fully packed mechanical toolbox worth of contents. That means any toolbox, containing a screwdriver, wrench, welding tool, crowbar, analyzer, and wire cutters. When shipped, non-toolbox contents are dropped. Why It's Good For The Game (**WIGFTG**): This bounty follows bad design principles, being a bounty that can be solved entirely from a lathe. For any of these cases, we want to either replace them or recontexualize them into an activity that forces players to either learn more about the mechanics in and around that area as a form of played tutorial, give them a toe-dip into the mechanics required to complete the activity, or perform an activity that makes the station better for having completed it. For the toolbox bounty, this goes all in on teaching players about the full set of toolbox equipment, instead of just needing one printable item, it takes them through the full autolathe menu and gives them plausible deniability for getting a full set of tools. **Assistant:** Potted Plants. The potted plant bounty now requires 3 potted plants as opposed to 8. Most stations are going to be completely devoid of potted plants after collecting 8 of these, where lowering the quantity to 3 allows for a larger amount of competition for this type of bounty. This also disallows using plastic potted plants from being used in the bounty as a trade off, as real potted plants are available through other means. **WIGFTG**: Removes a lathe-solved bounty, and adjusts the quantity to compensate for the fact that previously you would loot the entire station of all of it's potted plants in order to complete this bounty one time. **Assistant:** Action Figures -> Toys Action figures and their general availability widely varies by maps. At best, you can snag one per office on (I think) delta, and at worse you'll need to fish them out of arcade machines across the station. Considering how often new toys are added to the vending machine, this can be a very raw deal where you might be spending 10s of minutes just for maybe one or two action figures. Instead, it feels like a wider and better solution is to just make this touch the whole toys category. WIGFTG: For the toys bounty, it's far too scarce to complete regularly, but instead now it gives makes players interact with the arcade machine wholistically, which in turn requires players to have to play an arcade machine just enough that they're likely to gains a level in the gamer skill, and serve as a primer to interact with how skills interact with the round at large. Granted, it's the gamer skill, so it's not the end of the world if players are getting skill increases here as opposed to other skills that may have more of an effect on the round at large. **Assistant:** Pens. Fuck this bounty. I have removed it. **WIGFTG**: Allow me to elaborate. So the pens bounty requires 10 pens. However, it requires specifically `/obj/item/pen`, no subtypes. `/obj/item/pen` is not printable. It is not found at quantities that make it easy to specifically complete. You cannot use red pens. Or fountain pens. Or blue pens. Or Crayons. Just standard black pens that spawn in your PDA and on paper bins. And you need 10. There is **A** printable pen, however, `/obj/item/pen/red/security`, which is however printable from autolathes, leading many players and myself to think that this is another easy printable bounty. But EVEN THEN, even if those pens WERE ACCEPTABLE, having to manually carry 10 tiny objects to complete a bounty worth not even 200 credits to the bounty holder? This just sucks. It's Bleem. Get it outta here. **Robotics**: All current mech bounties (MK 2 Ripley, Clarke, Odysseus, Gygax, and Durand) Robotics bounties have been reworked. Now, mecha bounties require that a new mecha of that type be built, and that a holodiagnostic scan be completed of the mech. This can be done once-per mech, which will print out a holodiagnostic sheet onto the floor. This sheet is what is turned in for the bounty. As a result, the value of these bounties have been roughly halved. For those looking to collect the rest of the previous value, all 5 of these mechs can now be sold on the cargo shuttle for the remaining value of the old bounties. **WIGFTG**: The biggest hurdle for roboticists when it comes to economy is twofold: Roboticist need resources far more than most other jobs in the game. No metal means no cyborgs, or mechs, or cool equipment for robotics. But, if a roboticist needs credits, they have to trade away a new mech in exchange for some of the largest credit pool bounties in the game. If they can't spend those credits, or can't receive anything using those credits, that's effort wasted. There's a tremendous amount of uncertainty when it comes to robotics being able to meaningfully interact with the credit economy as it currently stands, or being able to leverage the credit economy to solve any of their issues. If the player really does just want to sell their mech for credits, this also provides them with a method of doing so that will still reward them even further if they feel they truly do not need it. Side note, the cargo loader mech "old bess" has the trait provided by generating a diagnostic already, preventing them from just scanning that for an easy minute 1 bounty. Ultimately, having to sell a mech for credits as opposed to getting to use it is not *fun*. Getting to get paid for doing your job, and getting the benefits of something you'll have spend a reasonable amount of time and the station's resources on is *fun*. It's a better pay off. It's why we're here.  **Medical:** Crew Scan Bounties. Medical staff are now given the chance to perform routine medical scan bounties. These require a medical doctor to scan another crew member who is above 90% health, and then print the reports to submit. Some stipulations: * The report cannot be of the bounty holder. * A scanned crewmate must be scanned above 90% heath. * When the report is printed, the target is given a trait for 5 minutes, `TRAIT_RECENTLY_TREATED`, which disqualifies them being the target of a submitted medical report. This is to encourage the doctor to check up on several members of the crew when submitting this bounty. **WIGFTG**: Medical bounties are in an awkward place, honestly. They are possible to become purely printable bounties using either advanced organs, or through the organ grower. However, both of these outcomes are research locked, and will require a more through look down the line, don't get me wrong. In the meantime, this falls squarely under that area of "getting medical doctor bounties to be more closely aligned with doing what they're already supposed to be doing". I also floated the idea of making medical bounties pick a random crewmate for a check-up as opposed to a few different members of the crew from anyone. I might follow up on that at a later date, but this PR was already getting a bit overloaded.  ### Some other things tacked on here: I swear I'll be fast. The `/obj/item/paper/medical_report` created is a new subtype of paper as opposed to the old type that was used by health analyzers, which holds the last scanned mob as a weakref as opposed to just creating a snowflaked paper as we were doing before. The bounty pad, when it generates it's list of bounties, now works slightly differently so that there's no chance of getting a list of three "random" bounties that are all exactly the same thing, called in a new proc, `generate_bounty_list()`. I've added a new debug item, called the `/obj/item/bounty_voucher`. This item allows you to use it in-hand and it gives the activating player a new bounty from a list of all possible bounties. This makes my life, just specifically just me and nobody else, easier when testing bounties. As mentioned above, the mecha UI required adding a new button to it in order to create holoscans. It's fairly innocuous if I do say so myself, but I can make further tweaks if it's an issue. ## Why It's Good For The Game I've sprinkled a good bit of this in above, but in general, bounties needed some more TLC to make sure they align with their place as a tertiary source of making money in the game. I've talked about this before in some now-ancient design documents, but in summary, there's three forms of credit sources in the game: * Primary sources: This is regular payroll, earned by playing the game when the economy SS fires. In theory, this is how much money you can spend without needing to think about making a purchase most of the time. * Secondary sources: This is from sources like tourist bots. Ignore the design decisions they inhabit, they're gameplay loops that allow you to make additional credits while still performing the functions of your job for the station, which in tourist bot's case, is making food and drinks and serving people, making up for any costs incurred by their presence. * Tertiary sources: This is bounties. These are activities that exist as a fallback from the secondary sources, where you may not be performing the duties of your job in order to get credits, should they be more critical as a resource than the service you provide to the station as a result. ...Everyone has been fairly clear that doing bounties is not very good. If you're playing medical doctor and want a shiny medical doctor thing, you would hope that the majority of your time is spent still playing medical doctor, or scientist, or whatever. However, of all the jobs that have fairly sub-par bounties, the one job that I've heard time and again that I actually got *right* was surprisingly, security officer. Their sets of bounties, (Which aren't just looting the locker room mind you...) between the contraband bounty and the n-spect scanner bounties, actually encourages players to basically do tasks that are already part of their job obligations, without needing to run to the nearest lathe or to _steal 8 boar tusks that drop from the barrens_. The bounties are basically, "Go on patrol to this area", "look for suspicious items on the station", etc. In effect, those are *secondary credit sources*. Which is fantastic! It gave me the idea to revisit a few of these job bounties to try and make them a bit less exhausting to have to deal with, and as usual I got a bit distracted and the scope got a bit too big and now it's march. God damnit. But yeah if this goes well, I'd love to see about adjust a few of the bounty methodologies to be in-line with the changes I've implemented here. More bounties that encourage players to be doing what they're already doing, bounties that encourage players to learn more about the game when it comes to assistant bounties or that encourage them to get a toe-dip report on mechanics that they may not be introduced to yet, and get rid of some of the CBT bounties that nobody in their god damn mind wants to do. ## Changelog 🆑 add: New Medical bounty! Scan crewmates who have been healed or currently have a clean bill of health, and ship the medical report to prove that you're not accidently letting them die on your watch. Most of the time. balance: Assistant bounties for toolboxes now only require 1, but the toolbox must be fully stocked like standard mechanical toolboxes. balance: Potted plant bounties no longer accept plastic plants. They only require 3 plants now, however. balance: The action figure bounty now only requires toys instead. del: Removed the pens bounty. balance: The robotics mech bounty now requires a diagnostic scan of a newly completed mech as opposed to sending the whole mech itself. Diagnostic scans can now be generated by riding in a mech and completing the action from the UI menu. Mech bounties are worth about half as much. add: Mechs can be sold on the cargo shuttle for the remaining half of the value from previous mech bounties. fix: You can now no longer roll duplicates of the same bounties when generating a new bounty from the civilian bounty console. /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
4f2ff57090 | The Big Bess ripley now uses the correct sprite while piloted by an AI. (#89148) | ||
|
|
7fe8f29fdb |
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 🆑 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. /🆑 |
||
|
|
0d1ccc2273 |
Fixes a potential harddel in Ripley code (#88101)
## About The Pull Request Ejector didn't clean its ref in parent ripley before deleting itself which could cause harddels if it didn't delete fast enough (as seen during round 243009) ## Changelog 🆑 fix: Fixed a potential harddel in Ripley code /🆑 |
||
|
|
15247f28f1 |
Arcmines The Clarke Exosuit + Tech node changes. (#87936)
## About The Pull Request The Clarke Exosuit has received several adjustments to make it worth using in the Arcmining era. - Clarke no longer requires gold bars to be built. - HP bumped from 200 to 250, melee armor bumped from 20 to 40. - Clarke Ore storage module can now collect boulders and smelt them internally. - Exo mining scanners can now be used in proximity to a vent to start the wave defense event. - Mech Pkas now do more damage and have the AOE upgrade preinstalled. - Mech drills are now a utility module rather than a weapon. - New Internal module unique to the Clarke, It's a rusty sleeper that can be used to recover dead miners, but lacks the ability to inject chems - Fixed Mech sleepers not granting life support. - Plasma cutters and Bluespace satchels tech nodes are no longer locked behind experiments, but they are now discounted by them. ## Why It's Good For The Game Ever since the inception of Arcmining, the Clarke Exosuit has fallen from being niche to straight up irrelevant. The Clarke sits in this weird spot, where, while not being roundstart available, it is an effectively worse fit than your regular Shaft Miner in all aspects of the job. This PR aims to address this by making The Clarke able to be built even if the miners are absent or haven't secured a haul, while making it actually capable of interacting with the new elements introduced by Arcmining. **Arcmining Clarke and Improved Combat functionality** The Mech mining scanner can now be used to trigger the vent wave defense, The internal storage module can now collect boulders and internally smelt them within the Clarke. Video Demonstration: https://www.youtube.com/watch?v=gtsNK5JbI3o The Clarke is now a more capable fighter on Lavaland, being a bit beefier overall. The mech Pka was also in dire need of some love. It being unable to be upgraded made it frankly underwhelming at dealing with Vent defences. I was considering just having PkA upgrades applicable to the mech itself but ultimately decided against it in fear of having it become a problem on the station. Instead, I just went for a flat damage increase and have the AOE upgrade come preinstalled to better deal with legion swarms. Lastly The drill modules have been reworked to be utility modules instead of weapons. Frankly these shouldn't be weapons, they are nowhere near as valuable as the cutter or the PKA and can't be used at all on moving targets due to the long cost time. **New Clarke Exclusive Internal Module: Mining Sleeper**  Just a bit of extra functionality to aid miners that have tragically fallen, this sleeper is effectively a worse version of the Odysseus, it can stabilize patients but cannot inject chems, I also fixed an issue where Mech sleepers were not putting patients on life support like regular sleepers do. **Tech Node Changes** This is not something super related to the Clarke in and on itself, but I figured I might push my luck and try these anyway. There is just no good reason as to why satchels and cutters should be hard locked behind gas shells. These experiments are fairly trivial, but have a huge impact on lowpop as they usually force people to break into ordinance or the teleporter room just so miners could get their basic tools. The shells still exist but now grant a discount instead of hardlocking tech, so there's still an incentive to do them. ROCK AND STONE! ## Changelog 🆑 add: New internal sleeper module for the Clarke. balance: Clarke Integrity has been bumped from 200 to 250 HP, melee armor bumped from 20 to 40. balance: Exo mining module can now be used to scan vents and begin the wave defense event. balance: The Clarke Ore Storage Module can now collect boulders and internally smelt them. balance: Mech Pka is now bundled within the Clarke tech node, it now does more damage and comes with the AOE upgrade preinstalled. balance: Exo mining drills are now a utility module rather than a weapon. balance: Applied Bluespace Research and Controlled Plasma tech nodes are no longer hardlocked behind surveys, they instead favor from a discount if they are completed. fix: Fixes Exo Mech modules not granting life support to housed patients. /🆑 --------- Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
58501dce77 |
Reorganizes the sound folder (#86726)
## About The Pull Request <details> - renamed ai folder to announcer -- announcer -- - moved vox_fem to announcer - moved approachingTG to announcer - separated the ambience folder into ambience and instrumental -- ambience -- - created holy folder moved all related sounds there - created engineering folder and moved all related sounds there - created security folder and moved ambidet there - created general folder and moved ambigen there - created icemoon folder and moved all icebox-related ambience there - created medical folder and moved all medbay-related ambi there - created ruin folder and moves all ruins ambi there - created beach folder and moved seag and shore there - created lavaland folder and moved related ambi there - created aurora_caelus folder and placed its ambi there - created misc folder and moved the rest of the files that don't have a specific category into it -- instrumental -- - moved traitor folder here - created lobby_music folder and placed our songs there (title0 not used anywhere? - server-side modification?) -- items -- - moved secdeath to hailer - moved surgery to handling -- effects -- - moved chemistry into effects - moved hallucinations into effects - moved health into effects - moved magic into effects -- vehicles -- - moved mecha into vehicles created mobs folder -- mobs -- - moved creatures folder into mobs - moved voice into mobs renamed creatures to non-humanoids renamed voice to humanoids -- non-humanoids-- created cyborg folder created hiss folder moved harmalarm.ogg to cyborg -- humanoids -- -- misc -- moved ghostwhisper to misc moved insane_low_laugh to misc I give up trying to document this. </details> - [X] ambience - [x] announcer - [x] effects - [X] instrumental - [x] items - [x] machines - [x] misc - [X] mobs - [X] runtime - [X] vehicles - [ ] attributions ## Why It's Good For The Game This folder is so disorganized that it's vomit inducing, will make it easier to find and add new sounds, providng a minor structure to the sound folder. ## Changelog 🆑 grungussuss refactor: the sound folder in the source code has been reorganized, please report any oddities with sounds playing or not playing server: lobby music has been repathed to sound/music/lobby_music /🆑 |
||
|
|
83e1a58529 |
[NO GBP] Fixing Clarke's ore box the proper way (#85954)
## About The Pull Request #85924 did it in a bad way, but I was too hasty and merged it anyway, so it's on my shoulders to rectify that. ## Why It's Good For The Game Code guidelines compliance. ## Changelog N/A |
||
|
|
1880003270 |
Reworks silicon/ai access checking & fixes some ui_act's (#84964)
## About The Pull Request Currently to check for Silicon access, we do: ``if is silicon or is admin ghost or has unlimited silicon privileges or has machine remote in hand`` What has unlimited silicon privileges? Bots, Drones, and admin ghosts. To check for AI access, it just checks for AI instead of silicon, and doesnt check for unlimited silicon privileges. This was kinda silly, so I thought I should make this a little easier to understand. Now all silicon/ai traits come from ``AI_ACCESS_TRAIT`` or ``SILICON_ACCESS_TRAIT``. I made a single exception to keep Admin ghost, since now instead of being a var on the client, we moved it to using the same trait but giving it to the client instead, but since we have to keep parity with previous functionality (admins can spawn in and not have this on, it only works while as a ghost), I kept previous checks as well. No more type checks, removes a silly var on the mob level and another on the client. Now while I was doing this, I found a lot of tgui's ``ui_act`` still uses ``usr`` and the wrong args, so I fixed those wherever I saw them, and used a mass replace for the args. Other changes: - machinery's ``ui_act`` from https://github.com/tgstation/tgstation/pull/81250 had ``isAI`` replaced with ``HAS_AI_ACCESS``, this has been reverted. Machine wands and admin ghosts no longer get kicked off things not on cameras. This was my fault, I overlooked this when adding Human AI. - Human AI's wand gives AI control as long as it's in your hand, you can swap to your offhand. I hope this doesn't end up going horribly, otherwise I'll revert this part. It should let human AIs not have their UI closed on them when swapping to eat food or use their door wand or whatnot. - Bots previously had special checks to scan reagents and be unobservant, I replaced this with giving them the trait. I also fixed an instance of unobservant not being used, so now statues don't affect the basic creature, whatever that is. ## Why It's Good For The Game This is an easier to understand way of handling silicon access and makes these mobs more consistent between eachother. Other than what I've mentioned above, this should have no impact on gameplay itself. ## Changelog 🆑 fix: Statues don't count as eyes to creatures. fix: Human AIs and Admin ghosts no longer get kicked off of machines that aren't on cameranets. /🆑 |
||
|
|
886d1aecbb |
Fixes Clarke ore box breaking upon collecting boulders (#85924)
## About The Pull Request Ever since Clarkes could pick up boulders they've been broken if you ever collected one. The UI would break and all your precious minerals would be trapped inside the Clarke, only being obtainable if you broke the Clarke itself. This also updates the Clarke Storage to differentiate by ore name rather than icon, as otherwise the lower quality boulders would be mixed with normal boulders with no way to differentiate them in the UI. ## Why It's Good For The Game Fixes https://github.com/tgstation/tgstation/issues/84364 Before: <details> <summary>Before</summary> https://github.com/user-attachments/assets/f90daf35-733a-42bd-8af5-7e6712f09fba </details> <details> <summary>After</summary> https://github.com/user-attachments/assets/4510803c-6dee-403e-a051-966a8a66c17c </details> ## Changelog 🆑 TwistedSilicon fix: Clarkes will no longer become unable to dump ores upon picking a boulder up. Mine away. /🆑 |
||
|
|
0db2a23faf |
Adds a new power storage type: The Megacell. Drastically reduces power cell consumption/storage. [MDB Ignore] (#84079)
## About The Pull Request As the title says. A standard power cell now only stores 10 KJ and drains power similar to how it did before the refactor to all power appliances. The new standard megacell stock part stores 1 MJ (what cells store right now). APCs and SMESs have had their power cells replaced with these megacell stock parts instead. Megacells can only be used in APCs and SMESs. It shouldn't be possible to use megacells in any typical appliance. This shouldn't change anything about how much 'use' you can get out of a power cell in regular practice. Most should operate the same and you should still get the same amount of shots out of a laser gun, and we can look at expanding what can be switched over to megacells, e.g. if we want mechs to require significantly more power than a typical appliance. Thanks to Meyhazah for the megacell icon sprites. ## Why It's Good For The Game Power cell consumption is way too high ever since the power appliance refactor that converted most things to be in joules. It's a bit ridiculous for most of our machinery to drain the station's power supply this early on. The reason it's like this is because regular appliances (laser guns, borgs, lights) all have a cell type that is identical to the APC/SMES cell type. And it means that if we want to provide an easy way to charge these appliances without making it easy to charge APCs/SMESs through a power bug exploit, we need to introduce a new cell type to differentiate between what supplies power and regular appliances that use power. This is primarily what the megacell stock part does. This moves us back to what it was originally like before the power refactor, where recharging power cells wouldn't drain an exorbitant amount of energy. However, it maintains the goal of the original refactor which was to prevent people from cheesing power generation to produce an infinite amount of power, as the power that APCs and SMESs operate at is drastically different from the power that a regular appliance uses. ## Changelog 🆑 Watermelon, Mayhazah balance: Drastically reduces the power consumption and max charge of power cells balance: Added a new stock part called the battery, used primarily in the construction of APCs and SMESs. add: Suiciding with a cell/battery will shock you and potentially dust you/shock the people around you if the charge is great enough. /🆑 --------- Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com> Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com> |
||
|
|
0850748efa |
Large monsters break out of the Paddy very quickly (#83406)
## About The Pull Request Fixes #83292 by making mobs larger than Humans break out of the mech jail cell 10x faster than humans. Also I made the error output into balloon alerts. ## Why It's Good For The Game This is a security mech designed for interacting with crew; it doesn't _need_ the ability to arrest alien queens or space dragons and we didn't really design any of these antagonists with the idea that you can stuff them inside a mech that looks smaller than they are. Resultingly; now they don't stay stuck in it for very long if you are not paying attention. ## Changelog 🆑 balance: Mobs significantly larger than humans, such as Space Dragons and Xenomorph Queens, breakout of being arrested by a mech significantly faster. /🆑 |
||
|
|
22f5ab3cc8 |
Cargo ripley starts at full charge. (#83287)
## About The Pull Request Cargo ripley starts at 100% charge instead of 25% charge. ## Why It's Good For The Game Because charging a cell actually requires a significant amount of energy now, the roundstart ripley starting almost uncharged causes quite a significant roundstart load since it's next to the recharger. This makes it start fully charged so the roundstart power rush is less extreme. ## Changelog 🆑 balance: Cargo ripley's cell starts fully charged. /🆑 |
||
|
|
1443ef79d3 |
Replaces a number of deciseconds into SECONDS (#82436)
## About The Pull Request Using these search regexes: Number ending in 0: `do_after\((\w+), (\d+)0,` Replace: `do_after($1, $2 SECONDS,` Single digit number: `do_after\((\w+), [1-9],` replace: `do_after($1, 0.$2 SECONDS,` Double: `do_after\((\w+), (\d)([1-9]),` Replace: `do_after($1, $2.$3 SECONDS,` ## Why It's Good For The Game Code readability |
||
|
|
46eb5bb38a |
Fixes open-air mechs (Ripley, Paddy) not pushing projectile damage to the pilot (#80844)
## About The Pull Request Moves parent call for mech bullet_act() to after the enclosed and occupant check, so that the rest of the proc has a chance to send the damage to the pilot ## Why It's Good For The Game Bugfix. ## Changelog 🆑 fix: Ripley MK-Is and Paddys now correctly make incoming projectiles hit the pilot again. /🆑 |
||
|
|
999a3aa5dc |
Slight overclock nerf [NO GBP] (#79625)
## About The Pull Request Thanks to @moocowswag 's gimmick I learned that overclock can be set to cycle without overheating when you use an assembly with timer. So essentially it's a free movespeed buff with no downsides. Now the mech gains additional heat depending on it's movedelay, the faster - the shorter the overclock duration. And the gain is no longer equal the cooling speed, so you can't set it to cycle and forget. ## Why It's Good For The Game It was an oversight, Ripley and Clarke too strong, while being low tier mechs. ## Changelog 🆑 balance: Mech overclock coefficient is down to 1.25 from the default 1.5 for Ripley and Clarke. balance: Mech overclock heating now scales with movespeed, higher speed - faster overheat. /🆑 |
||
|
|
91af16bcbf |
Adds Paddy, the Security Mech (#79376)
## About The Pull Request - Adds a new combat mech, Paddy. Paddy is a modified Ripley MK-I, intended for use by the station's security force. Like the MK-I, the Paddy features an open-air cockpit design (and thus does not protect from ranged weapons), but maintains the speed of the base unit. Constructing a Paddy is similar to constructing a MK-II, though the kit requires combat-mech level research. Sprites by [DrDiasyl](https://github.com/DrDiasyl) -- The paddy has an internal cargo bay capable of holding up to four individuals (loaded with a hydraulic claw). If the pilot exits the Paddy, any loaded individuals are likewise ejected. Individuals can attempt to resist their way out of the mech, but it requires the mech to be stationary for 45 seconds. If they do this, all individuals in the holding cell are ejected. - Adds a new mech equipment piece, the hydraulic claw. Similar to a clamp, this Paddy-exclusive item can load mobs into the Paddy's cargo bay. Humanoid mobs are handcuffed upon loading. The hydraulic claw is unlocked on the same tech node as the Paddy. - Adds a round-start Paddy, carrying one peacekeeper disabler and one hydraulic claw, to each security area on all maps. Round-start Paddys are also pre-locked with security access. Security now has access to a mech charger, and a small bay for it all. Map edits were done by [Maurukas](https://github.com/Maurukas). - Also did some minor cleanup of various mech-related code. Ripley mech cargo is no longer stored in the mech, but within the "ejector" object. This doesn't have any player-facing changes, but it is easier to organize behind the scenes. additionally, if Ripleys are destroyed now, they drop their stored objects rather than deleting them. ## Why It's Good For The Game Playing lone security is probably one of the least fun aspects of the game. Arresting any assistant is inevitably setting yourself up against the tide as a whole; You try to stun any one person and they crawl out of the woodworks to get in your way, drag off the arrestee, and probably try to steal your gear. The Paddy is set up to be functional against low-threat targets, but not particularly good against anything with purpose. The round-start Paddy carries the disabler equipment, as well as the law claw, to detain individuals in a *somewhat* safe manner. Being that you're inside an exosuit, you're immune to shovespam that plagues the halls, and you don't risk dropping important gear quite as easily. However, The open canopy gives you no protection at all from ranged attacks, nor from atmos hazards. Being that you're in an exosuit, you cannot use other items or equipment. The AI will have trouble finding you to open a door, due to your name not jumping their camera to your location. ## Changelog 🆑 Zxaber, DrDiasyl, Maurukas add: A new security-focused combat mech, the Paddy, has been added, intended to be particularly helpful for lone sec officers. You will find one in the Security main office, and a replacement can be built with late-game mech research. fix: Ripley MK-I and MK-II mechs no longer qdel their stored items when destroyed. /🆑  --------- Co-authored-by: Vire <66576896+Maurukas@users.noreply.github.com> |
||
|
|
7e1f5e609e |
Overclock safety setting for Gygax (#79101)
 ## About The Pull Request Since people started using OC on all mechs by attaching a signaller to the wire, I figured that Gygax should have at least something special, except the 2x overclock modifier for dark gygax and the UI button for overclock. Now Gygax type mechs have an option to automatically disable overclock when the mech is overheated. As Gygax was designed to use overclock, other mechs lack this component and there is no wire for this. ## Why It's Good For The Game Special overclock behavior for Gygax. ## Changelog 🆑 add: Gygax type mechs now have an option to disable overclock when overheated. fix: Fixed overclocking having no effect on Ripley. /🆑 |
||
|
|
2d34c7433a |
New Mech UI and equipment refactor (#77221)
 ## About The Pull Request Made a new UI and refactored some mech code in the process. Fixes #66048 Fixes #77051 Fixes #65958 ??? if it was broken Fixes #73051 - see details below Fixes other undocumented things, see changelog. ## Why It's Good For The Game The UI was too bulky and Mechs were too complex for no reason. Now they follow some general rules shared between other SS13 machinery, and there is less magic happening under the hood. ## Detailed Changes ### New Mech UI, Air Tank and Radio as separate modules Previous UI for comparison: <img alt="9SScrXAOjy" src="https://github.com/tgstation/tgstation/assets/3625094/904e3d07-e7d7-4d3a-a062-93e0e35b4b66"> Previously mechs came with radio pre-installed and air canisters magically pre-filled with air even when you build one in fab. Radio and Air Tanks are now both utility modules that are optional to install. Gas RCS thrusters still require Air Tank module to operate. This made the Mechs more barebones when built, giving you only the basic functionality. <img alt="5SDMlXTJxv" src="https://github.com/tgstation/tgstation/assets/3625094/b9364230-49ac-416b-aa70-e851fbf2050e"> To compensate this change, all mechs got two extra utility module slots. All other modules got new UI. And ore box now shows the list of ores inside. <img alt="SRX5FjvsHA" src="https://github.com/tgstation/tgstation/assets/3625094/cbe2e98d-1cd4-4667-8dae-2f9227b4b265"> ### Mounted Radio Works as a normal radio, but with subspace transmission. Available from the basic mech research node and can be printed in fab. ### Cabin Sealing To compensate for the lack of air tank by default, mechs with enclosed cabin (e.g. all except Ripley) got an ability to toggle cabin exposure to the outside air. Exiting the mech makes cabin air automatically exposed. When you seal the cabin, it traps some of the outside air inside the cabin and you can breathe with this air to perform a short space trips. But the oxygen will run out quickly and CO2 will build up. Sealing the cabin in space will make the cabin filled with vacuum, and it will stay there until you return to air environment and unseal the cabin, letting the breathable air to enter. There are temperature and pressure sensors that turn yellow/red when the corresponding warning thresholds are reached. You could also use personal internals in combination with cabin sealing for long space travels, so Air Tank is completely optional now and mostly needed when you need RCS thruster. ### RCS thrusters They are now available earlier in tech tree and consume reasonable amount of air (5 times more than human jetpacks), and they don't work without Mounted Air Tank, unless it's an Ion thruster variant. ### Mounted Air Tank Available from the basic mech research node and can be printed in fab. Built model comes empty, and syndicate mechs come with one full of oxygen. <img alt="GrFDrH5Hwe" src="https://github.com/tgstation/tgstation/assets/3625094/b677b705-bda0-4c8c-96c7-d32bf7bf9f28"> Can be switched to pressurize or not pressurize the cabin. Releases gas only when the cabin is sealed shut. Starts releasing automatically, but can be toggled to not release if you want to use it just as a portable canister. Cabin pressure can now be configured in the module UI instead of Maintenance UI. Can be attached to a pipe network when the mech is parked above a connection port. Comes with a pump that works similarly to the portable pump. It lets you vent the air tank contents outside, or suck air from the room to fill the air tank. Intended to provide an ability to fill the air tank without the need to bother with pipes. Also has gas sensors that display gas mix data of the tank and the cabin (when sealed). ### Stock part changes All mechs now require a servo motor and they reduce mech movement power consumption instead of scanning module. Scanning modules are optional for mech operation (still required to build) and the lack of one disables the following UI elements: - Display of mech integrity (you can still see the alerts or examine the mech to get rough idea) - Display of mech status on internal damage (and you can't repair what you can't diagnose) The rating of scanning module doesn't have any effect as of now. Cargo mech comes without it roundstart. <img alt="2vDtt99oqb" src="https://github.com/tgstation/tgstation/assets/3625094/147144ca-824e-4501-acf5-6ee104f309e7"> Capacitors now also reduce light power usage and raise the overclocking temperature thresholds (see below). ### Maintenance Maintenance UI removed, and its logic migrated to other places. Access modification now managed inside the mech, and anyone who can control the mech, can adjust the access in the same way as they can set DNA key. To open the maintenance panel you just need a screwdriver. It is instant when the mech is empty and it has a 5 second delay when there is an occupant to avoid in-combat hacking and part removal. It will alert the occupant that someone is trying to tinker with their mech.  Once the panel is open, you can see the part ratings:  With open panel you can hack the mech wires (roboticists can now see them): <img alt="mj205G2qDa" src="https://github.com/tgstation/tgstation/assets/3625094/44cea0d1-44b4-4b50-b1d3-a97c0056bab3"> There are wires for: - Enabling/Disabling ID and DNA locks - Toggling mech lights - Toggling mech circuits malfunction (battery drain, sparks) - Toggling mech equipment malfunction (to repair after EMP or cause EMP-like effect, disarming mech) - 3 dud wires that do nothing The hacker may be shocked if the mech power cell allows. When the panel is open and the user has access to the mech, they can remove parts with a crowbar: <img alt="jR40gyTWtJ" src="https://github.com/tgstation/tgstation/assets/3625094/b573f5b9-b8ea-412e-b3e0-c872e01e0c23"> Hitting the mech with an ID from outside now toggles the ID Lock on/off if the ID has sufficient access. ### Power consumption and overclocking Rebalanced mech power consumption. T4 parts were not working in Syndicate Mechs, as their effect was not calculated until you manipulate parts manually. Constructed mechs with t1 parts even had their energy drain reduced with upgrade to t1. Now all mechs apply their base step power usage correctly don't ignore the stock parts. Servo tier now reduces base power consumption by 0% at t1, 50% at t2, 33% at t3 and 25% at t4 Capacitor tier now reduces base power consumption of mele attacks, phasing and light by the same amounts. Gygax leg actuators overload replaced with mech overclocking. Any mech can be overclocked by hacking wires, but only Gygax has a button for toggling it from the Cabin. Now there is an overclock coefficient. 1.5 for Gygax and other mechs, 2 for Dark Gygax. When overclocked, mechs moves N times faster, but consumes N times more power.  While overclocked, mech heats up every second, regardless of movement, and starts receiving internal and integrity damage after a certain temperature threshold. The chance is 0% at the threshold, and 100% at thresholds * 2. The roll happens every tick. Capacitor upgrades this threshold, letting you overclock safely for longer periods.  When you stop overclock, the temperature goes back down. ### Other changes and fixes Concealed weapon bay now doesn't show up when you examine the mech, so it's actually concealed now. New radio module can properly change its frequency, as it didn't work for previous radio. Launcher type weapons were ignoring cooldowns and power usage, so you could spam explosive banana peals, while they should have a 2 second cooldown: <img alt="q5GjUsHwGr" src="https://github.com/tgstation/tgstation/assets/3625094/d102725d-e9e1-4588-9d6c-b9e38b7a6535"> Now this is fixed and all launcher type weapons properly use power and have their cooldowns working. And now they have the kickback effect working (when it pushes you in the opposite direction in zero gravity on throw). Thermoregulator now heats/cools considering heat capacity instead of adding/reducing flat 10 degrees. So you can heat up cabin air quicker if the pressure is low. There were some other sloppy mistakes in mech code, like some functions returning too early, blocking other functionality unintentionally. Fixed these and made some other minor changes and improvements. ## Changelog 🆑 refactor: Refactored Mech UI refactor: Refactored mech radio into a utility module, adding extra slot to all mechs refactor: Refactored mech air tank into a utility module with an air pump, adding extra slot to all mechs refactor: Refactored mech cabin air - there is now a button to seal or unseal cabin to make it airtight or exchanging gases with the environment refactor: Removed mech maintenance UI Access is set in mech UI, and parts are ejected with a crowbar add: Mech now has wires and can be hacked qol: Roboticists now can see MOD suit and mech wires add: Mechs now require servo motor stock part and it affects movement power usage instead of scanning module add: Scanning module absence doesnt block mech movement and hides some UI data instead. Big Bess starts without one. qol: Hitting mech with ID card now toggles ID lock on/off if the card has required access fix: Fixed concealed weapon bay not being concealed on mech examine fix: Fixed mech radio not changing frequency fix: Fixed mech launcher type weapons ignoring specified cooldown fix: Fixed mech launcher type weapons not using specified power amount fix: Fixed mech temperature regulator ignoring gas heat capacity fix: Fixed mech stopping processing other things while not heating internal air fix: Fixed mech being able to leave transit tube in transit fix: Fixed mech internal damage flags working incorrectly fix: Fixed Gygax leg overloading being useless fix: Fixed mechs ignoring their stock parts on creation. Syndicate mechs now stronger against lasers and consume less energy on move. Upgrading from tier 1 to tier 2 doesn't make mech consume MORE energy than before the upgrade. balance: Rebalanced mech energy drain with part upgrades. Base energy drain reduced by 50%, 33%, 25% with upgrades and applies to movement (Servo rating), phasing, punching, light (Capacitor rating). balance: Hydraulic clamp now can force open airlocks balance: Made mech RCS pack consume reasonable amount of gas code: Fixed some other minor bugs and made some minor changes in the mech code /🆑 --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: Sealed101 <cool.bullseye@yandex.ru> Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
a18872b6ee |
Restores some mechs being able to pivot step (move and turn in the same keypress) and diagonal movement (#77345)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request Most mechs couldn't move diagonally. This restores that for all but the Clarke (which is a vehicle on treads) The Clarke and Odysseus once again have pivot step, lost during the refactor for unknown reasons. It was literally just right there, it was an easy fix. Clarkes once again move like a tank! ## Why It's Good For The Game So the way that mech movement works, by blocking diagonal movement, what instead happens is that the mech eats the move command and goes on movement cooldown. By pressing two buttons rather than one, you come to a full stop and no longer can move. I cannot think of a more hostile player-facing feature than this. It utterly gutted the usability of mechs for no real apparent benefit. As such, I'm just removing it on all but the most relevant mech, the Clarke. This should make it much more approachable to pilot mechs and not feel like the game is malfunctioning half the time. Clarkes and Odysseus mechs had a really cool feature. They turned and moved in the same button press. This made them very nimble mechs and fun to utilize. They lost this feature in the refactor for, once again, not much apparent reason since this was literally a line change to restore. ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 fix: Restores a lost feature, Clarkes and Odysseus mechs once again can pivot on a dime and step in the same button press. qol: Mechs universally have diagonal movement as to avoid unresponsive movement, as block diagonal movement was having unintended side effects and was actually intended for pivot step mechs. /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> |
||
|
|
9940fb62e6 |
Destroys /obj/vehicle/sealed/mecha/working with a W80 nuclear warhead (#76296)
## About The Pull Request Title. Also, fixes https://github.com/tgstation/tgstation/issues/75568 at the request of @TheVekter ## Why It's Good For The Game This subtype only exists to append ore box behavior and is clearly a relic of pre-2020 mechcode. Keeping it around will only make it harder in the future to add new mechs with ore box support. ## Changelog 🆑 fix: Clarke ore box now has a less confusing dump contents button. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
2933888136 |
Mech safety toggle has an action button now (#73779)
## About The Pull Request Adds and action button for toggling mech equipment safeties. Also clarifies the message about safeties that the AIs get when possessing a mech to account for the new button. ## Why It's Good For The Game Closes #38178 - the only way to toggle safeties without middle-click right now is through the mech stats UI, which is quite cumbersome. Adding an action button seems to be an alright solution, as it's always available and much easier to access. ## Changelog 🆑 qol: mechs have an action button on the HUD for toggling equipment safeties /🆑 |
||
|
|
6a0c884410 |
[no gbp] removes all duplicate armor datums (#72354)
## About The Pull Request closes #72348 Title ## Why It's Good For The Game My bad ## Changelog Heres the script I used this time if you want to ```cs var baseDir = Environment.CurrentDirectory; var allFiles = Directory.EnumerateFiles($@"{baseDir}\code", "*.dm", SearchOption.AllDirectories).ToList(); var known = new Dictionary<string, List<KeyValuePair<string, int>>>(); foreach (var file in allFiles) { var fileLines = File.ReadAllLines(file); for (var i = 0; i < fileLines.Length; i++) { var line = fileLines[i]; if (line.StartsWith("/datum/armor/")) { var armorName = line.Replace("/datum/armor/", "").Trim(); if (!known.ContainsKey(armorName)) known[armorName] = new List<KeyValuePair<string, int>>(); var knownList = known[armorName]; knownList.Add(new KeyValuePair<string, int>(file, i)); } } } Console.WriteLine($"There are {known.Sum(d => d.Value.Count)} duplicate armor datums."); var duplicates = new Dictionary<string, List<int>>(); foreach (var (_, entries) in known) { var actuals = entries.Skip(1).ToList(); foreach (var actual in actuals) { if (!duplicates.ContainsKey(actual.Key)) duplicates[actual.Key] = new List<int>(); duplicates[actual.Key].Add(actual.Value); } } Console.WriteLine($"There are {duplicates.Count} files to update."); foreach (var (file, idxes) in duplicates) { var fileContents = File.ReadAllLines(file).ToList(); foreach (var idx in idxes.OrderByDescending(i => i)) { string line; do { line = fileContents[idx]; fileContents.RemoveAt(idx); } while (!String.IsNullOrWhiteSpace(line)); } File.WriteAllLines(file, fileContents); } ``` |
||
|
|
72add64520 |
Refactors armor into dedicated subtypes (#71986)
## About The Pull Request See title. ## Why It's Good For The Game Code is cleaner, and more readable/intuitive Technically closes https://github.com/tgstation/dev-cycles-initiative/issues/8 ## Changelog 🆑 refactor: armor, from the ground up basically /🆑 Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
329921639a |
Rewrites how action buttons icons are generated, makes them layer nicer. Allows observers to see a mob's action buttons. (#71339)
## About The Pull Request
- Rewrites how action button icons are generated.
- Prior, generated an action button icon was fairly simplistic and
didn't allow for many changes. Someone recently added the option for
overlays to be generated over action buttons, but the framework was very
weak.
- Now, action button icon generation is split across multiple procs,
like atom icon updates.
- The background of action buttons are underlays
- The actual icon of the action button is the icon and icon state of the
action button movable
- The rim / border of the button is an overlay, layered overtop the
button.
- Allows observers to see what action buttons a mob has. They even
update in real time! And no, the observers cannot click on them.
## Why It's Good For The Game
- Runechat text of action buttons are no longer hidden behind the actual
icon. This was very ugly with cooldown actions, as the cooldown text was
hidden behind a lot of spell icons.
- Cuts down on a lot of icon duplication.
- Gives much finer control over action button icons
- Saves a bit of processing from generating full action button icons
when not necessary. Not implemented in many places, but is in some.


## Changelog
🆑 Melbert
add: Observers can now see what action buttons an observed mob has. No,
you can't click them. And no it doesn't show EVERY action.
refactor: Refactored how action button icons are generated. Some actions
will now use a colored border when active instead of just turning green.
Cooldown text will also appear on the top layer of actions too. If you
see any funky lookin' icons (namely their borders), let me know.
refactor: Bluespace Golem's teleport action is now a cooldown action.
fix: Construct actions go to the middle of the screen like expected.
/🆑
|
||
|
|
84f69359a0 |
More horrible 515 proc compatibility. (#71333)
So i left over some basic `/whatever/proc/format` uses in the original PR this fixes it. Notable exceptions to the rule: - Paths in add_verb/remove_verb, we need full path instead of a name there to access verb metadata so we can't use proc ref macros there. - regex.Replace, found out that it does not accept call by name. Instead i added new REGEX_REPLACE_HANDLER so we can at least try to mark these. There's still leftover global procs that do not use GLOBAL_PROC_REF but they functionally equivalent so that's for later. I don't see any reasonable way to grep for this. But if you got any ideas please share. |
||
|
|
9dab26371c |
Throws a bunch of parenthesis around to ensure dear Aunt Sally is always properly excused. (#71281)
Similar vein to #37116 This is supposed to be standard, yet here we are. SHOULDN'T change anything, but there's likely something out there that's bound to behave different because of it. These were done manually, regex to find things that MIGHT need to be corrected; `^#define.+\+((?!\)).)*$` `^#define.+-((?!\)).)*$` `^#define.+\*((?!\)).)*$` `^#define.+\/((?!\)).)*$` (yeah that's a lot of stuff.) `^#define.+%((?!\)).)*$` `^#define.+SECONDS((?!\)).)*$` `^#define.+MINUTES((?!\)).)*$` |
||
|
|
4d6a8bc537 |
515 Compatibility (#71161)
Makes the code compatible with 515.1594+
Few simple changes and one very painful one.
Let's start with the easy:
* puts call behind `LIBCALL` define, so call_ext is properly used in 515
* Adds `NAMEOF_STATIC(_,X)` macro for nameof in static definitions since
src is now invalid there.
* Fixes tgui and devserver. From 515 onward the tmp3333{procid} cache
directory is not appened to base path in browser controls so we don't
check for it in base js and put the dev server dummy window file in
actual directory not the byond root.
* Renames the few things that had /final/ in typepath to ultimate since
final is a new keyword
And the very painful change:
`.proc/whatever` format is no longer valid, so we're replacing it with
new nameof() function. All this wrapped in three new macros.
`PROC_REF(X)`,`TYPE_PROC_REF(TYPE,X)`,`GLOBAL_PROC_REF(X)`. Global is
not actually necessary but if we get nameof that does not allow globals
it would be nice validation.
This is pretty unwieldy but there's no real alternative.
If you notice anything weird in the commits let me know because majority
was done with regex replace.
@tgstation/commit-access Since the .proc/stuff is pretty big change.
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
|
||
|
|
b7eace2fad |
Adds Cargorilla (#67003)
* Adds cargorilla * working cargorilla * Tweaks to control + jobs and stuff * Sleep * Probably don't leave in debug * el sanity * el change them to use globals, el refactor * Does this fix it? * Ah, okay * el copypaste * el mapload vars * ready to ship |
||
|
|
1512ea7759 |
Mechs now use equipment flags to check if they can attach (#65813)
* Mechs now use equipment flags to check if they can attach * Apply suggestions from code review Co-authored-by: Tim <timothymtorres@gmail.com> * Fixes suggestion code Co-authored-by: TiviPlus <572233640+TiviPlus@users.noreply.com> Co-authored-by: Tim <timothymtorres@gmail.com> |
||
|
|
722d8c646d | Remove selectable var on mech equipment, again (#65969) | ||
|
|
50689f89a4 |
Action button refactor/rework: Enhanced Dragging (#65180)
About The Pull Request
I noticed a lot of strange and un-intuitive behavior in action buttons, and got stung by the bloat bug. Damn it hug #58027
I'll do my best to explain what I've changed and why, might get a bit long.
If you want a better idea, read the commits. Most of em are pretty solid, if long.
Whelp. Here we go.
How do action buttons currently work
All action buttons are draggable, to any place on the screen. They're held in an actions list on the player's mob.
Their location in this list determines their position on the top of the screen. If one is dragged away from the top, its position in the list is "saved". This looks really bad.
If two buttons are dragged over each other, their positions swap. (inside the actions list too)
If a button is shift clicked, it is brought back to the position it started at.
If the action collapse button that you likely just mentally edit out is alt clicked, it resets the position of all action buttons on the screen.
If an action is ctrl clicked, it is "locked". This prevents any future position changes, and also enables a saving feature. With this saving feature, locked button positions persist between rounds. So your first o2 canister will always start where you saved it, etc.
Actions and buttons are a one to one link. While there is functionality to share action buttons between two players, this means showing the same object to both. So one player can move a button on another's screen. Horrendous.
This also makes code that modifies properties of the screen object itself very clunky.
Why is this bad
A: None knew pretty much any of this information. It is actually documented, just in a horribly formatted screen tip on the collapse button, you know the one we all mentally delete from the hud.
B: None of this is intuitive. Dragging buttons makes the hud look much worse, and you get no feedback that you even can drag them. Depressing
C: We use actions to make new options clear to the player. This means players can have a lot of action buttons on the hud. This gets cluttery
D: The collapse button is useless. It lets you clear your screen if someone like me fucks up and gives you 2000 actions, but outside of that it just hides all information from you. You never want to see none of your action buttons, just a filtered list of them.
E: On a technical level, they're quite messy, and not fully functionally complete. This is depressing.
What I've done
Assuming the above to be true, how do we fix them?
Well first I'm going to go over everything I changed, including links to major commits. I'll then describe the finished product, and why I made the decisions I did.
Oh and I've moved some of the more niche or technical discussion to dropdowns. Hopefully this makes finding the major functional changes easier
Adds helper procs for turning screen_loc strings into more manageable arrays. This doesn't fully support all of the screen_loc spec, but it's enough for what I'm doing. (f54865f)
Uses these helper procs to improve existing code (6273b93)
Fixes an issue with tooltip code itself. If you tried to hold down a mouse button while dragging onto a tooltip enabled object, it would silently fail. The js made assumptions about the order args came in, which broke when buttons were held down (
|
||
|
|
10395a8074 |
Reworks & TGUIs mecha equipment (#65375)
TLDR Mech UI now TGUI: https://streamable.com/ahjydy Mechs now use "slots" for equipment They can only mount 2 guns(left and right arm, left and right click to use) Tesla & Concealed bay is removed Removed mech damage deflection Full list of changes Note: weapons in this section refer to all click-using equipment such as guns/hydraulic clamp/etc Hackmd: https://hackmd.io/lgr-LetfSKyHzPP0zQUXPA Tesla has been removed (Tesla gives you effectively infinite power on station and off station(where the design direction for mechs is intended) they are useless) Concealed mech bay has been removed (Concealed mecha bay relied on selection for visibility so it doent make sense to exist when all equips are "selected", the code was bad (instead of flag or something you just used locate() everywhere) Honker no longer has snowflake UI (I'm sorry but if I have to make a third UI for this im going to go insane) Mechs now mount 2 arm weapons, and certain amount of "utility", "armor" and "power" module types The two arm weapons do not share a cooldown anymore UNLESS they are identical weapons left click to shoot left weapon right click for right weapon, this will shoot the weapon unless you click next to you with a ranged weapon it will then try to melee (This also applies to attaching the weapon to the mech) It is no longer possible to deflect or have multipliers for damage from innate or armor sources, armor will now just apply a direct armor change Since plasma generator needed to be selected to use you now need to click on the power generator with a stack of plasma to refill it Internal damage: The mech no longer needs to be low health to take internal damage Internal damage now no longer has several convoluted ways to fix each different type and is now a timed action performed in the UI Weapons no longer have an RNG chance to be damaged or immediately deleted by damage Weapons will now take damage aimed at the right and left arms respectively, this can be repaired using the new UI. NOTE: this is intended to be implemented as weapon/module disabling but I left it out of this PR to try resemble some shortness Both internal and equipment damage have minimum thresholds of damage required in a hit before they attempt to check whether the mech should take internal or equipment damage, teh threshold is lower for equipment damage You can no longer reload weapons using energy Demo Video https://streamable.com/ahjydy |
||
|
|
fbe88da912 |
mech equipment fix/cleanup (#64921)
mech equipment topic calls parent autodoc equip_ready renamed to activated as it is more fitting removed salvagable as it was with one exception just doing what detachable did anyway removed some stuff like src.vars |
||
|
|
7ee5ed97de | Move most mecha actions to their respective mech files (#64918) | ||
|
|
f169aa5f7d |
Buffs the Clarke Mech (#63809)
* buffs the clarke mech * better cooldown * FUCK * weed smoke |
||
|
|
0f3c4e51f7 |
Modernizing Radiation -- TL;DR: Radiation is now a status effect healed by tox healing, and contamination is removed (#62265)
Implements the Modernizing radiation design document ( https://hackmd.io/@tgstation/rJNIyeBHt ) and replaces the current radiation sources with the new system, as well as replacing/removing a bunch of old consumers of radiation that either had no reason to exist, or could be replaced by something else. Diverges from the doc in that items radiation don't go up like explained. I was going to, but items get irradiated so easily that it just feels pretty lame. Items still get irradiated, but it's mostly just so that radiation sources look cooler (wow, lots of stuff around going green), and for things like the geiger counter. Instead of the complicated radiation_wave system, radiation now just checks everything between the radiation source and the potential target, losing power along the way based on the radiation insulation of whats in between. If this reaches too low a point (specified by radiation_pulse consumers), then the radiation will not pass. Otherwise, will roll a chance to irradiate. Uranium structures allow a delay before irradiating, so stay away! |
||
|
|
e663308b0d | Adds SHOULD_NOT_SLEEP to Destroy. Why didn't we do this before. (#61943) | ||
|
|
6c01cc2c01 |
every case of initialize that should have mapload, does (#61623)
## About The Pull Request stop forgetting to include mapload, if you don't include it then every single subtype past it by default doesn't include it for example, `obj/item` didn't include mapload so every single item by default didn't fill in mapload  ## Regex used: procs without args, not even regex `/Initialize()` procs with args `\/Initialize\((?!mapload)((.)*\w)?` cleanup of things i didn't want to mapload: `\/datum\/(.)*\/Initialize\(mapload` |
||
|
|
a8d7b45d2a |
Ban posibrains and mmis from savannah ivanov (#59772)
Savannah Ivanov cannot have mmis or posibrains in them. Now I know that sounds BAD... but I originally intended to do this as it removes a huge trust element and bypasses recruiting people for cooperation. I simply uuuh genuinely forgot to include this, so sorry for the DRAMA. I was considering blocking the AI too, but AIs are actually more likely to be turned against you than fellow crewmembers Co-authored-by: coiax <yellowbounder@gmail.com> |
||
|
|
e03cd1aada |
Refactors move procs to support multitle objects (#59658)
Enter(), Entered(), Exit() and Exited() all passed the old loc forward, but everything except a single a case cared about the direction of the movement more than about the specific source. Since moving multi-tile objects will have multiple sources of movement but a single direction, this change makes it easier to track their movement. Cleaned up a lot of code around and made proc inputs compatible. I'll add opacity support for multi-tile objects in a different PR after this is merged, as this has grown large enough and I don't want to compromise the reviewability. Tested this locally and as expected it didn't impair movement nor produced any runtimes. |
||
|
|
375a20e49b |
Refactors most spans into span procs (#59645)
Converts most spans into span procs. Mostly used regex for this and sorted out any compile time errors afterwards so there could be some bugs. Was initially going to do defines, but ninja said to make it into a proc, and if there's any overhead, they can easily be changed to defines. Makes it easier to control the formatting and prevents typos when creating spans as it'll runtime if you misspell instead of silently failing. Reduces the code you need to write when writing spans, as you don't need to close the span as that's automatically handled by the proc. (Note from Lemon: This should be converted to defines once we update the minimum version to 514. Didn't do it now because byond pain and such) |
||
|
|
43c5dc8bfa |
Makes obj_integrity only updated through procs (#59474)
Having things updating integrity directly is just going to cause more problems down the line as more elements and components depend on being notified of integrity changes. It's an easy mistake to make so making it private should deal with the problem. get_integrity() might be useful in the future but is mainly a side effect of making obj_integrity private as that also disallows reads. |