mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-13 00:55:20 +01:00
docker-container
2197 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
f601a6ddaf | Merge remote-tracking branch 'tgstation/master' into upstream-6-2-2026 | ||
|
|
0991484c87 |
Patrol bounties pay money (#96251)
## About The Pull Request Because patrols do not send anything material via the pad, they never register `contribution` naturally, and thus runtime when their cube is created. Makes patrol bounties register ID `contribution` when they begin tracking an ID's movements. ## Why It's Good For The Game I did thousands of credits of unpaid labor before i realized these weren't working ## Changelog 🆑 fix: Patrol bounties properly pay those who complete them /🆑 |
||
|
|
58c08b8700 | Autolathegoodie (#96242) | ||
|
|
64f76f52a9 |
Interface Science | The Mariana Trench of Feature Content (#95857)
## Interface Science You know what the problem is with our features? They're all too easy, too optimized to use. Look at Genetics; we went from a confusing UI that a 14 year old hardcoded with html into byond to a polished UI using tgui, optimized for player comfort, and gameplay has suffered. Too long we have coddled players with fun and easy content, no more I say!!! To fix ss13, I have added a feature with the most awful, unusable UI ever. It's just wires with random sequences that may or may not do something. And yet, you will use it till your fingers bleed and your eyes go white, and you will be grateful. "Thank you coder daddy", you say as you sacrifice yourself to a display of unending, procedurally generated dogshit. <img width="563" height="294" alt="image" src="https://github.com/user-attachments/assets/e56c947f-a40c-4df9-beed-672812357576" /> Or maybe you're a sick little deviant, and you don't respect me. Instead of using my awful UI, you start optimizing. You've forced the secret pulse code, and you're not going to pulse them again and again. You make your own interface by connecting it with signallers, or integrated circuits. Ahhh, you beat me! Damn it, and you're gonna get away with it too. ## About the Pull Request Adds new job content to science. Science spawns with a few "gizmo" devices and can order more through cargo. These gizmo's have random functionalities, like the strange objects you can find in maintenance. These functionalities come with different settings to change how they operate. However, there are no buttons, just wires or a voice interface. You need to solve, for example, a wire puzzle. You just pulse the wires, and if you hear ping the sequence is good, if you hear buzz its bad. Just keep going till you hear a creak sound. If you do a sequence correctly, there are a bunch of randomly generated ways this interacts with the functionality, mimicking real life settings and interactions. Imagine a TV remote with randomized buttons, and you have to map them out again. Once you've mapped the sequences, you can make an interface. For simple ones, you can just make some signaller assemblies. For the best control, you could connect it with a bunch of integrated circuit signallers, and program sequences into an integrated circuit machine. Below is a short video of how the puzzle solving works. (I can't be arsed to figure out how to record tgui, here's a video I made with my phone. Also I had the sequences written down, which I STRONGLY recommend you do.) https://github.com/user-attachments/assets/93f79f0f-df14-4ff9-8096-f079ebae7e91 <details> <summary>Actual details</summary> I have hidden the details to make exploring the feature itself more fun. The whole thing was written to be convoluted, but intuitive. You should be able to hit it with a multitool, and figure out everything from there. It will take a bit to get the gist of it. Nonetheless, for review purposes I have written down the details here. If you're reading this for non-review purposes, you should know I have embedded an internet curse that will at some point in 2026 teleport you 2 meters in a random direction. Continue reading at your own discretion. The gizmo objects is usually generated with 1 or 2 'gizmodes'. 'Gizmodes' contains the fun-ctionality, and holds different operating modes (so dubbed 'gizpulse'). You can't directly select a gizpulse, but instead it generates a bunch of mode selections. For example, a function that toggles lights has two gizpulses: toggle_on and toggle_off. There are four different mode selects: Cycle mode: Adds signal to cycle to the next gizpulse, and to activate the current gizpulse Select mode: Adds a signal for selecting every gizpulse, and a signal to activate whatever the activate gizpulse is Direct activate mode: Adds a signal for selecting every gizpulse, and also immediately activates that gizpulse Cycle-active mode: Cycles to the next mode, and activates it (inconvenient but only has 1 signal to worry about) So a light gizmode with the randomly selected 'select mode' has three signals: select toggle_on, select toggle_off and trigger the currently selected gizpulse. Currently implemented gizmodes: - Lights: toggle on, toggle off - Move: start moving, stop moving - Food printer (its filled with the spongebob grey goop thing): print food (donut or burger) - Mood pulser (AOE): happy pulse, sad pulse, radiation pulse - Mopper: select different reagent, dump onto tile (1/2/3 range), make smoke cloud - Teleporter (5 to 15 tiles, random dir): Teleport self, teleport mobs in range 1, do both - Electric: charge from nearest cell (looks into objects and stuff), magically gain some charge, make lightning, make emp, charge nearby object, defibrillate in an area - Copier (makes fake copies of mobs and objects, visual copy only): scan objects, print objects, erase all copies - Sputter: dump oil and shake, throw self - Bad: explode, explode, explode harder, explode with fire, stab you, warning, make robot spider, breaks your bones, throws a grenade at you, radiation pulses - Some behind the scenes gizmodes (language toggle for voice interface, for example) The voice interface starts with wires, with signals to toggle the language or dump the code words. After that, you can talk to it using the code words similarly to the wire sequence to solve the rest of the gizmodes. </details> I've added two to every map, somewhere in or near the experimentor room. They may ocassionally spawn from a maintenance crate spawner <img width="611" height="331" alt="image" src="https://github.com/user-attachments/assets/3782700f-57d3-4591-9282-e0de590056e1" /> ## Why It's Good For The Game It's really difficult to have "experimentation" type features in the game. It all has to fit into 1h rounds, and people get used to it real quick. The experimentor and strange objects kinda try, but it's just one button and praying a bear doesnt spawn you explodes you. I don't claim to have solved this perfectly, but I think this is fun. You truly have to start experimenting, be systematic and write things down. If you figure out how something works, you can go to the next stage of making it more convenient to use. I think it's really fun to mess around with integrated circuits and USB's, and make, for example, a BCI controlled bluespace launchpad. So I lean into it! There's different settings to account for, and its up to you to make it usable! If you like integrated circuits, you'll love this (maybe). The gizmo functions are aimed at benefiting the station as a whole in some ways, to motivate people to make some fun systems for these to get maximum benefit! A mood pulser near a busy area will make everyone happier! (I do need to add more like these, I got distracted doing stupid shit.) |
||
|
|
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> |
||
|
|
f3cc933465 |
You can purchase (lower quality) broadcast cameras as a cargo goodie (#95914)
## About The Pull Request You can order a broadcast camera (the thing the curator can get which lets them livestream to entertainment screens) in cargo for 800 credits The cargo version has a smaller view range (4 tiles instead of 7 tiles) and slows you down slightly ## Why It's Good For The Game There's a lot of opportunities for gimmicks in being able to broadcast to the station Like if you're an antag and want to prove you have a hostage, or you want to make rival news broadcasts, or you're a clown who livestreams breaking into security, etc Access to the ability to broadcast is very very limited (to a single curator kit). If you wanna do any of the above you have to either play curator and dedicate your entire round to it, ask the curator for *their* gimmick item, or if there's no curator and you didn't roll it you just can't do it at all. (And god forbid if someone steals the camera or you lose it) I think it's kinda sad so I wanted to add another way to obtain the ability to broadcast and I figure cargo is a good place. It's lower quality because I'm very wary of people robbing the curator of their gimmick - The curator's camera is top of the line and that's what differentiates it from the pleb's stuff. ## Changelog 🆑 Melbert add: You can purchase (lower quality) broadcast cameras in cargo for 800cr /🆑 |
||
|
|
d67ca75e37 |
kills cargo imports (#5491)
## About The Pull Request kills cargo imports with no mercy, moves it into goodies with newly-added subcategories also adds a persi only agent ID single pack per request also also tarkon and persi can buy private packs via id money ## Why It's Good For The Game ugly UI that doesn't work for other factions and needs hacks to work with cargo ui is not great ## Proof Of Testing <summary>Screenshots/Videos</summary> <img width="1268" height="1124" alt="image" src="https://github.com/user-attachments/assets/fd3d9a58-ea0b-4242-88d2-b6123a214c72" /> ## Changelog 🆑 add: cargo imports moved into it's own category with a brand subcategory system, and orderable without a private account (god why did i do this) add: persistence only agent ID single pack add: persistence and tarkon can now buy stuff via ids directly add: captain access can always unlock departmental orders fix: persistence and persistence cargo consoles sending cargo pods to the station if cargo bay is selected del: entire cargo company imports system /🆑 |
||
|
|
fb7920cd23 |
Lets the GMM sell materials again (#5553)
## About The Pull Request Title. You can once again get material money cubes. Money is back on the menu. ## Why It's Good For The Game People can already sell materials to the cargo budget as is by wrapping them up in a locker and shipping it off. If people want to cheese the system for Big Money, they might as well have access to the machine intended for this. There's a bazillion other ways of getting obscene amounts of credits (fish gen + powerator lol), it's a fun feature, and I don't see a reason for it to remain disabled entirely. ## Proof Of Testing Removed the comment which disabled it so if it compiles it works. <details> <summary>Screenshots/Videos</summary> </details> ## Changelog 🆑 add: The GMM can sell materials once more. /🆑 |
||
|
|
283fdd5290 |
Adds the E-2 Earthcracker, a traitor tool for premeditated sabotage. (#95731)
## About The Pull Request Adds a new traitor item, the E-2 Earthcracker. The Earthcracker is a handheld sabotage device that you can deploy onto the ground in order to deliberately create a weakpoint on that location. As a recap, weakpoints can be exploited with a sufficiently large enough explosive in order to create a chain of cracked turfs from it's location, randomly breaking floors and walls, as well as attempting to create new weakpoints that will allow for more of the hull to break down. Weakpoints, if discovered, can be welded to taped up to repair them using sticky tape. The earthcracker creates a longer, and larger weakpoint than the kind that spawn naturally. However, to use this subtly, you'll need to hide the weakpoint created, as well as clear away the spent earthcracker by using a wrench. Practical use is: Get the earthcracker, use in hand to arm/anchor onto a turf (Can be unwrenched at this point), activate with an empty hand to begin the cracking process, then wrench away, and you have a well hidden, high power sabotage device. Two variants are available in-game: The E-2 Earthcracker which can be obtained from the traitor uplink at 2TC each, and the E-1 Earthcracker which can be purchased on the black market. The E-1 variant spawns normal run-of-the-mill weakpoints as opposed to the E-2, with a 30% availability from the back market, at a cost of 200-600 credits.  ## Why It's Good For The Game I'll be frank, I don't think we necessarily need *more* tools to cause havoc, but I wanted to expand the weakpoint framework a bit and this idea came to mind. The Earthcracker fits in the same category as C4, but without a signifigant amount of the control that comes from C4 and absolutely from X4. This stands to cause more damage across the hull, with the ability to keep expanding the crack. For that reason, I think I may have underpriced this in terms of TC, but I'm up for discussion on if it needs to go up to a 3-5 range. In an ideal world, this could be used for making booby traps, such as planting an earthcracker in an area like escape or a larger department, and then triggering the weakpoint when the right people are around, even through something like a detomatrix or a trigger on a grenade. As an added reminder, weakpoints have a dedicated method to repair them if discovered, that being welding them or hitting them with sticky tape to repair them quickly, offering some counterplay. I also added a lighter variant onto the black market as a fun, dubious thing to have on the black market. ## Changelog 🆑 add: Adds the E-2 Earthcracker device as a purchasable traitor item for 2 TC. Use it to create potentially devastating weakpoints onto the station! /🆑 |
||
|
|
24a9759859 | Cargo manifest stamp payment consistency (#95832) | ||
|
|
6904a2b68b |
Adds a more fitting Cybersun reinforcement outfit. And ABSOLUTELY NO ITEMS TO THE BLACK MARKET. (#95918)
## About The Pull Request Adds an orange and black business outfit for Cybersun employees/reinforcements. <img width="86" height="102" alt="Screenshot 2026-04-29 204615" src="https://github.com/user-attachments/assets/c8afb1c6-6172-4250-9077-67e418eb48f7" /> <img width="123" height="126" alt="Screenshot 2026-04-29 204650" src="https://github.com/user-attachments/assets/8823d05c-0301-4bc7-af4d-d3d5337830e2" /> Definitely doesn't add an item to the black market. Nope. No changes at all there. Don't look at the code. ## Why It's Good For The Game Cybersun will slowly begin receiving some updates both visually and narratively in the future. Here is but a small taste. ## Changelog 🆑 add: Gives the Cybersun reinforcement a new outfit. add: No new items were added to the black market. None. Honest. /🆑 |
||
|
|
aa4dc56835 |
Removes Station-time (more time changes) (#95744)
## About The Pull Request Removes Station-Time entirely Server Time is now NST (Nanotrasen Standard Time). SS13 takes place exactly 540 years in the future of the current day, so every second is 1 second in-game. Round Time is now PT (Pay-Time), how Nanotrasen keeps track of how long the current rotation of Employees has been working for. Telecomms uses NST due to its importance of being the communication to the blackbox. Autopsy report, clocks, scientific reports and requisitions use both timestamps due to them being more official documents that NT may need to know beyond just the current round (just for flavortext). Pretty much everything else (Det scanner, PDA, IC logs, Time-of-Death, AI law changes, Cyborg file downloading) uses PT PT <img width="305" height="217" alt="image" src="https://github.com/user-attachments/assets/cef73025-6292-4f9c-8565-197397bda2ca" /> <img width="168" height="59" alt="image" src="https://github.com/user-attachments/assets/a99db568-045d-45fc-8206-0d9a7b13c7d2" /> <img width="308" height="122" alt="image" src="https://github.com/user-attachments/assets/37ca6f17-8916-4af2-9c91-0f0707038ca5" /> https://github.com/user-attachments/assets/29445051-c98b-4af3-a657-812083aab91a Clock (Literate) <img width="748" height="292" alt="image" src="https://github.com/user-attachments/assets/c824e812-91b5-4737-858d-768336e9a7c4" /> Clock (Illiterate) <img width="446" height="94" alt="image" src="https://github.com/user-attachments/assets/90d5ea0d-eaff-4ced-aa31-ffdf0b4832a5" /> New paperwork time working properly <img width="311" height="190" alt="image" src="https://github.com/user-attachments/assets/6d048926-db61-4c91-893b-ce93e1ea7775" /> NST <img width="800" height="115" alt="image" src="https://github.com/user-attachments/assets/35ffde49-13c1-4ce7-ab24-858e48b608bd" /> <img width="1288" height="142" alt="image" src="https://github.com/user-attachments/assets/40c30d16-e0de-4efc-b460-9486eeb901d6" /> # Other changes 1. Circuit time checker will now get the value of the given input (Hour, Minute, Second) rather than the full dedisecond time converted into hour/minutes/seconds <img width="270" height="67" alt="image" src="https://github.com/user-attachments/assets/097440cc-1c45-447f-9976-18de7f9c722c" /> 2. Turns nightshift into a round event that'll last approximately 22 minutes 3. 12-hour pref (doesn't apply to the stat panel because it's global info) & removal of "TCT" time <img width="569" height="440" alt="image" src="https://github.com/user-attachments/assets/d39083b1-d248-41c0-9a1c-b2398ca203a7" /> 4. The chocolate pudding negative moodlet is now based on the server's IRL time. 5. Admins can now use ``class``, ``style`` and ``background`` (they were already given perms to use ``img`` so hiding background, which was removed to prevent image embedding, is pointless) 6. Also fixes ``year`` being off on localhost. ## Why It's Good For The Game Server Time is approximately 1s = 12s converted, not including it desyncing from lag (I believe?). This makes it pretty much impossible for people to actually use this as a unit of measurement for in-game actions. Different things also uses different timestamps which is a bit more confusing. The main change here is for accessibility and, hopefully, using time as a source of immersion. "20 minutes ago" is no longer OOC, they're just speaking in PT. There's no timezones in space, Nanotrasen Standard Time is the closest there is, but Pay Time is how NT considers when you get your paychecks, so it's what is more commonly used. It also fixes major inconsistencies between "IC time" and "Station time", things like breakfast moodlet was the first 15mins of the round despite the round starting like 7 hours in? Nukies with an L6 SAW firing down the halls was shooting like 1 bullet every 3 seconds (assuming 4 bullets per second), overall there was just a disconnect between how long time actually is in the universe. The secondary reason for this change (though it is what pushed me to actually get around to making this change) is the greater stat-panel removal. This hopes to lessen the dependence on the stat panel for station-time by making it easier to understand, and the end-goal I have is for this information to be limited to Admins & the AI (AI will get the IC version with the accurate year), so until that happens I would like to improve the use of station-time by making it consistent (for example, you should only care for PT for IC, which is also what your PDA displays), so that when it gets removed it won't leave players timeless. If you haven't already, and is interested in helping remove the stat panel, every entry that needs to be removed can be found here - https://hackmd.io/443_dE5lRWeEAp9bjGcKYw?view Closes https://github.com/tgstation/tgstation/issues/94988 ## Changelog 🆑 del: Removed Station Time, now we use NST (Nanotrasen Standard Time), which is IRL server time +540 years, and PT (Pay Time), the amount of time since the round has started. del: Station nightshift is now a Station event rather than being based on Server time. balance: Time circuit's Unit of Measure now tells the amount of time in hour/minute/seconds rather than giving the whole time translated to hours/minutes/seconds. qol: Added a 12-hour clock pref for people who prefer it. qol: Hovering over NST timestamps on official documents will now translate how much it is in PT/Shift Time. admin: Admins can now use style/class/background in their papercode. /🆑 --------- Co-authored-by: Isratosh <Isratosh@hotmail.com> |
||
|
|
5110eef308 |
Express consoles have crab rockets once again... (#95817)
## About The Pull Request Alternative to https://github.com/tgstation/tgstation/pull/95658 that involves fewer lines rather than more. ## Why It's Good For The Game Makes it possible to order crab rockets on the express console without copypasta. I'm not sure if express consoles are supposed to be usable for special/emag orders (there was a check against that in the code for some reason), but because they've had the exact same options of a standard cargo delivery console for such a long time and because I haven't found any explicit reason for that to not be the case (in lieu of that, I found a bit of a reference to homoerotic material in the code comments), I guess it's fine and nothing bad will happen. ## Changelog 🆑 fix: Packs exclusive to the express console (crab rockets for example) can now be ordered from express consoles. /🆑 |
||
|
|
7b8efd3daa |
Stock Market UI Tweaks and improvements (#95564)
## About The Pull Request This PR pulls forward some UI tweaks that I made in #93183, but cleaned up and with some additional adjustments. This adjusts a bit of the GMM Ui, cutting out the horizontal quantity measurement and rolling that into the supply/order information in the middle. <img width="984" height="613" alt="image" src="https://github.com/user-attachments/assets/40661624-c88d-4899-a624-7f3b391edf27" /> Adds a hit of color as well to show what materials are currently being ordered. Adds a bit of tooltip text in order to showcase the range of prices that a mineral can be bought and sold at, in order to showcase why lower value minerals like glass/iron can be bought and sold from. In addition to this, also tweaks the logic on the disabling of buttons to better reflect these thresholds, so you can buy and sell when sitting on those thresholds. ## Why It's Good For The Game The market UI needs to exist in a sort of "spreadsheet" format, in order to see all the values, all the costs, and make decisions about what you what to buy and how many. That said, it's clunky, and there's a lot of complexity related to buying and selling materials already that I would love to cut down on. This helps trim the UI, makes it a bit smaller, but adds in some missing information that even I don't have memorized for the purposes of regular gameplay. ## Changelog 🆑 qol: The GMM Ui can now tell you the minimum and maximum price ranges that a material will sell for. qol: You can now sell materials on the edge of their buying and selling thresholds. (This really only effects iron and glass, practically) /🆑 |
||
|
|
a614047147 |
Fixes materials market delivery crate (#95813)
## About The Pull Request Fixes materials orders being delivered in a box instead of a crate. The crate is billed as part of the order, subtracted from the order value, and boxes aren't eligible for the 200cr return credit. This results in a loss of 400 credits if there is an error in the order and the manifest is correctly stamped denied. ## Why It's Good For The Game Fixes materials orders correctly stamped 'Denied' resulting in a loss of 400 credits. ## Changelog 🆑 LT3 fix: Fixed loss of credits for correctly denied minerals market cargo manifest fix: Cargo budget materials market orders arrive in crates as expected /🆑 |
||
|
|
4eadf5caf7 |
The big tooltype_act de-cargo-cult-ing (#95408)
## About The Pull Request Removes a lot of cargo cult copypasta with `default_deconstruction_screwdriver`, `default_deconstruction_crowbar`, and to a lesser extent `default_pry_open` and `default_change_direction_wrench` ALL you gotta do now if you want your machine to have an openable panel or be deconstructible with a crowbar is this ```dm /obj/machinery/dish_drive/screwdriver_act(mob/living/user, obj/item/tool) return default_deconstruction_screwdriver(user, tool) /obj/machinery/dish_drive/crowbar_act(mob/living/user, obj/item/tool) return default_deconstruction_crowbar(user, tool) ``` `default_deconstruction_screwdriver` no longer directly sets `icon_state`, requiring the user pass in the open and closed icon states. Now, it just calls `update_appearance`, and everything that once passed the icon state now uses `base_icon_state` and `update_icon_state`. ## Why It's Good For The Game Many of these procs were terribly overcomplicated and difficult to work with for what should be a relatively simple action Streamlining it makes it easier for coders to understand and work with ## Changelog 🆑 Melbert refactor: A majority of machines had their screwdriver/crowbar/wrench interactions rewritten, report any oddities like being unable to open a machine's panel or deconstruct a machine /🆑 |
||
|
|
3503e9c565 |
Re-Implements the Bounty List for cargo, and various bounty improvements. (#95412)
## About The Pull Request This PR readds a previously removed feature from cargo, that being a global list of bounties that the whole station has access to, with some tweaks and adjustments from the original system. <img width="578" height="377" alt="image" src="https://github.com/user-attachments/assets/c8e1cb8d-dda6-4983-8588-93dffffc2b4e" /> _Seen above: The new Global Bounty Interface._ The civilian bounty pad has a second tab added to it, which contains a list of all the bounties that are available globally for all crew. You can select one in order to view the contents of the bounty, as well as have the option to send items on the pad to contribute to that global bounty. You may also, as you could several years ago, print a sheet of paper from the console that consists of all the global bounties on the station, their their reward values. In addition to those bounties, some bounties may be labeled has "High Priority", which means that they're worth more to complete for both you and for cargo, and are denoted with the different coloring and the star icon on the bounty list. When a bounty is completed, it will create a bounty cube, the same as personal bounties. However, for global bounties, multiple people may contribute to their completion, and when the bounty cube is made and sold, you will each get a cut of the profits proportional to your individual contribution. So, if a bounty cube is sold worth 1000 credits, and Person A and Person B contribute 4 items and 6 items respectively, the total "cut" of the profits crew would receive is 30% of the total value, so 300 credits. Of those 300 credits, Person A would receive 120 credits and 180 credits. (In a real round, the value of the cube's 1000 credits may also increase if the speedy delivery bonus is met by the cargo department.) In addition, when a bounty goes from on the list to completed and cubed up, the global bounty list will likewise automatically update, and create a new bounty. The number of bounties available for the crew to complete starts at 5 (Scaled to add one more for every 8 living players, up to a maximum of 10 to begin with), and for every _3_ completed bounties, that bounty maximum will go up by an additional 1 bounty. The new bounty is random from all possible job categories. This may need to be tweaked so that it pulls 1 bounty from each major department category, but for now this is how it stands. Most of the changes in this project fall under tweaks to the pricetag component, UI work, and then a lot of file-cleanup and tweaking based on testing. ## Why It's Good For The Game There is something that was lost in the original shift from global bounties to personal bounties. Cargo would reach out to crew in order to get their assistance on projects that let them do their jobs better, made forced them to have to work with the rest of the crew as opposed to merely beating them to death when they break in to print their round start multitools. One of the reasons that we justified that choice was that bounties were very lopsided. You could be a a superstar helper and complete a dozen bounties for cargo in a shift, but not only would you run out of bounties to complete, but you would also receive nothing in return. Switching to personal bounties did in fact let players generate their own wealth, but now suddenly the impetus to complete bounties was that cargo was more of a hang-up to the process than it actually being part of their job responsibilities. By re-implementing global bounties, we're giving crew the chance to not only have that kind of soft community goal, but also we're incentivizing people to contribute as much as they can to it's completion without really requiring them to make it their whole shift as tends to be the case with personal bounties. There is more that could be done to this system, including using a unique bounty pool, or at least unique "big" bounties that could be rolled into the pool that would allow the crew to work on more varied stuff, but for now this is at least a servable way to re-implement this from both a longevity and nostalgia standpoint. I also really, really like printing out sheets of paper and pinning them to doors. Big mistake on my part by losing that. |
||
|
|
bd01f0f2b6 |
[NO GBP] Corrects two issues with goodies and the ordering console. (#95478)
## About The Pull Request Whoops. ~~I missed some nuance when I made #94483, namely that while I didn't want players requesting CRATES like guns, grenades, spare SM shards with their department budgets, the logic also touches goodies and private orders meaning that players were unable to place goodie orders for things that they may not have explicit access to do so, which is part of the reason why you'd be ordering them privately in the first place. It's cargo responsibility to determine if the player should/not be receiving that item.~~ I have meditated on the issue, and I realize, nah, this is probably both a healthier design decision as well as the reason we have things like the black market in the first place. The core of the PR below however is however sound. ALSO, I made a fairly confusing mistake with the TGUI where the goodies category just... hasn't been visible! That's on me. ## Why It's Good For The Game Makes cargo goodies viewable. Makes cargo goodies purchasable. Fixes #94928 🐛 💥 ‼️ ## Changelog 🆑 fix: Cargo goodies are now visible in the ordering and request consoles. /🆑 |
||
|
|
8a6649c8a9 |
Adds a cargo shuttle upgrade for plastic flaps and air refills. (#95393)
## About The Pull Request
We've all been there before. You send the cargo shuttle, you return it
only to find the blast doors were wide open, and air is now venting out
into space, and with the airlock cycling you are now trapped in a
freezing death trap of your own unwitting design.
This is funny and I want us to keep doing this.
But in an effort to continue to offer interesting things for cargo to
buy in a given shift, this PR offers the ability for cargo to buy an
upgrade to the cargo shuttle itself, that being 2 ~~tiny fans~~ Plastic
Flaps that are installed into the shuttle, as denoted by landmarks
mapped into the cargo shuttle.
Upon being picked up, also includes a certificate of installation. to go
onto the shuttle. Honestly, this is mostly so that I can be lazy and not
just spawn an empty crate but Ideally I open this up for future
categories of "cargo upgrades" that just spawn onto the station.
The other feature here is in shuttles having their air refilled on the
way to/from the station, as part of their subscription to air ™️
It's currently offered for the fairly steep price of 8,000 credits.
## Why It's Good For The Game
This is admittedly a luxury purchase, but, for players who are doing
well enough on credits, either through stocks, bounties, shuttle loans,
cargo events, whatever, this is something that players may want to
purchase for peace of mind, while being entirely optional in-game. The
cargo shuttle can be finicky in many ways and can tend towards easy
mistakes causing lots of pressure-related injuries in a round.
Again, this is intentionally offered at a high price point to avoid this
being an automatic purchase early into the round, but also something
that feels like an earned luxury if you have it, allowing you to focus
on your loop of buying and selling items, hustling if you will, without
caring if Larry over there is going to vent the shuttle for the
umpteenth time.
Like other tiny fans, these are not deconstruct-able and intentionally
should be locked to the cargo shuttle in practice.
|
||
|
|
4ceac8f297 |
Classic Cocktails 2: The liqueurening (#95392)
## About The Pull Request TL;DR: "What do you mean we didn't have a negroni in the game before?" This adds three new very commonly used liqueurs to the game: A bitter red aperitivo, an herbal liqueur, and maraschino liqueur. Additionally, it adds 15 new classic cocktails that use these new liqueurs. Mechanically relevant drinks include: - The Poet's Dream, which can grant non-heretics the ability to dream like them - The Garibaldi, which grants revolutionaries the determination to shrug off their wounds - The Jungle Bird, which soothes the supermatter when ingested by those around it - The Thermonuclear Daiquiri, which causes you to glow (and very rarely emit high-energy nuclear particles) - and more! Full list here: https://hackmd.io/@0lHAWBNkSXixU4v6xxYS_w/SkYjyDofbg  On the non-player facing side of things, this also refactors the heretic dream code a bit and adds a trait that enables non-heretics to have heretic dreams, which could easily be used by other things (ie if anyone wanted to make a perk or something that does this) Also, special thanks to MrMelbert and ChipPotato for helping me out with coding stuff in the discord! ## Why It's Good For The Game This is good for the game for more or less the same reasons as my first classic cocktail PR #92955 is good for the game: More variety gives bartenders more to do and a greater range of drinks to base gimmicks off of, and adding more cocktails to the game which are commonly served in IRL bars decreases awkward, RP breaking moments where someone orders a cocktail that's a staple you can find just about anywhere but which isn't in the game. Additionally, the new liqueurs are commonly used in many other classic and modern cocktails, which people can use to make cocktails in future projects. ## Changelog 🆑 add: Added three new liqueurs, with bottles available in the booze-o-mat. add: Added 15 new cocktails that use the aforementioned liqueurs. /🆑 |
||
|
|
42839c4fc9 |
The random supply drop event can now contain goodies and will not runtime. (#95416)
## About The Pull Request This PR tweaks how supply_packs' `generate` and `fill` procs function, so that they do not default to needing to be spawned with a crate specifically in order to properly spawn. What this allows is for the random supply drop event to be able to spawn in with a non-crate container, such as an empty briefcase. ## Why It's Good For The Game Ran into the random runtime while I was testing something non-cargo related, and was considering having a non-crate supply crate for #95393, but decided against it. Took this as a sign that I should implement it anyway. Plus, this will add even more variety to the random supply drop event's results. |
||
|
|
7740768362 |
[NO GBP] Corrects two issues with goodies and the ordering console. (#95478)
## About The Pull Request Whoops. ~~I missed some nuance when I made #94483, namely that while I didn't want players requesting CRATES like guns, grenades, spare SM shards with their department budgets, the logic also touches goodies and private orders meaning that players were unable to place goodie orders for things that they may not have explicit access to do so, which is part of the reason why you'd be ordering them privately in the first place. It's cargo responsibility to determine if the player should/not be receiving that item.~~ I have meditated on the issue, and I realize, nah, this is probably both a healthier design decision as well as the reason we have things like the black market in the first place. The core of the PR below however is however sound. ALSO, I made a fairly confusing mistake with the TGUI where the goodies category just... hasn't been visible! That's on me. ## Why It's Good For The Game Makes cargo goodies viewable. Makes cargo goodies purchasable. Fixes #94928 🐛 💥 ‼️ ## Changelog 🆑 fix: Cargo goodies are now visible in the ordering and request consoles. /🆑 |
||
|
|
da64374423 |
Reverts "Add prosthetic limb" surgery to involve targeting limbs, rather than targeting chest. (Adds stumps) (#95252)
## About The Pull Request - The `prosthetic replacement` surgical operation has been reverted to be closer to how it used to work: The operation is done targeting the limb that's missing The change was made out of necessity, as surgical state was tied to limbs - you had to operate on the chest to re-attach limbs because there was no limb to operate on. To circumvent that, I have done the unthinkable of adding stumps when you are dismembered. - Missing limbs are now represented as an invisible, un-removable, un-interactable limb. Making this change was not as difficult as originally anticipated, and (at least surface level) seems to have broken very little. Surprisingly little had to change to make this work. Direct accesses to `mob.bodyparts` was changed to `mob.get_bodyparts()` with an optional `include_stumps` argument. Similarly, `get_bodypart()` had an optional `include_stumps` added. This means we ultimately barely needed to change anything, and in fact, some loops/checks were able to be streamlined. ## Why It's Good For The Game - As mentioned, this change was out of necessity and was easily the least intuitive part of the broader changes. Reverting it back to how it used to work should make it far easier for people to pick up on, and means we can cut out a bunch of bespoke instruction sets that I had to include. - The addition of stumps also adds a ton of future potential - code wise it allows for stuff like better damage tracking (we can transfer damage between limb <-> stump rather than limb <-> chest), and feature we can do "fun" stuff like have stumps bleed on dismemberment that you can bandage. ## Changelog 🆑 Melbert del: "Add prosthetic limb" surgical operation has been reverted to be a bit closer to how it used to work - you operate on the missing limb / limb stump, rather than on the chest. refactor: Missing limbs are now represented as limb stumps. In practice this should change nothing (for now), as no features were rewritten to make use of these besides surgery. Please report any oddities with missing limbs, however. /🆑 |
||
|
|
4910e38c5f | Changes the access and contents from the shuttle engine crate, and adds a circuitboard/flatpack for it (#95406) | ||
|
|
3a47370861 |
Adds 1/500 chance for a pizza crate to contain a Romerol pizza (#95368)
## About The Pull Request There's a 1/500 chance that 1 pizza in a pizza crate will have 6u Romerol (1u per slice). It otherwise looks like a normal pizza and comes in a normal box. ## Why It's Good For The Game Ok to start this probably isn't a good idea. This will only cause problems. But between the Nanomachine Pizza, the Bomb Pizza, the Anomalous Pizza, and the Arnold pizza I have this funny idea in my head of pizza orders just constantly go wrong in universe. And the thought is, right, if you eat Romerol... nothing happens....... immediately. So the crew orders pizza for a pizza party and goes off on their day, then 30 minutes later it turns out the entire cargo team has risen from the dead after being killed in a welder bomb accident. In the post-mortem they're looking through the leftover slices and they find trace Romerol. Maybe that's kinda funny? ## Changelog 🆑 Melbert add: Adds a 1/500 chance that the grain used to create a pizza in a pizza crate was cursed by an evil lich. /🆑 |
||
|
|
cb99136578 |
Fixes the game trying to give you a bounty for a chemical reaction instead of a drink (#95336)
## About The Pull Request - Changes 2 chemical reaction datums in the public bounty alcohol list to the actual drinks ## Why It's Good For The Game > Changes 2 chemical reaction datums in the public bounty alcohol list to the actual drinks - No runtimes trying to read the name of a nameless datum anymore, that and the bounty working i quess. ## Changelog 🆑 fix: fixed the game trying to make you sell chemical reactions for a public bounty /🆑 |
||
|
|
fb58e99934 |
Admins can add new custom blackmarket listings, and tweaks the "Launch" shipping option. (#95191)
## About The Pull Request Two main items: 1: Admins can now use the new "Create new Blackmarket Item" verb, which prompts them about the item, price, quantity, name and description of the item they'd like to list. If successful, the item will be listed to the black market, available to purchase by the crew. Prices can be set very, very high, though I've limited the available quantity to 100 per listing as a nice middle-ground value. The verb can be used any number of times, allowing for admins to use the black market to run events, as such. Of note, this verb will spawn a fresh typepath of the object listed, so it cannot be used to list var-edited objects as-is, but it's still quite useful for offering unique or rare items to the crew based on the needs of the round. 2: This PR does a few tweaks to the "launch" shipping option on the black market. The text displayed when having an object launched to the station has been adjusted to reduce some ambiguity on if the item is potentially deleted when launched. The launch behavior has not been modified in this way, as the object is still launched at the station using similar logic as before. **However**, the item is now launched to the station in a faux-energy bubble, which destroys itself and empties it's contents when it makes thrown impact or is opened by hand. In practice, this is only noticeable if you were outside when the order is launched at the station, or if the crate makes impact with you. This allows for black market objects that create spawners to arrive at the station harmlessly, which also potentially reducing some of the randomness of an object being thrown at the station, and then leaving the z-level immediately based on the extra collision involved. Additionally, I've lowered the **shipping cost to 0** of launched items. Misc: Did some code cleanup by adding defines for each of the categories of black market items, and a list-define for every category together. ## Why It's Good For The Game I've wanted to have the option for admins to be able to list things for the crew to buy for quite awhile now, without requiring them to barter by hand or through a reliable means that can't be bypassed by 3 assistants with baseball bats. This offers that option, while also having some flavor of being offered on the black market, if that's desirable. Otherwise, it's no impact on the average round as it's admin-only. Regarding the launch options, this started as a grammar tweak as I was talking with Arm on discord and the lack of clarity raised the whole shipping option to our attention. After confirming that launching things to the station was NOT, in fact a literal noob trap, just an awful choice, I started work on the shield-bubble idea in an attempt to see if I could try and reduce some of the randomness involved with that shipping option. It already sucks due to the risk of going out into space, there's no need to make it suck worse by potentially losing any of the cooler items available on the black market at the same time. So, price down and a mild consistency up. I also ran into #95183 while I was testing all of this, so this should fix #95183. Lastly, code cleanup. Made a few things look 3% nicer. |
||
|
|
f1ed88ab46 |
Autogenerate anomaly core cargo orders (#95242)
## About The Pull Request Anomaly core cargo orders are auto-generated from subtypes of raw anomaly core. This makes it marginally easier to add new anomaly core types. ## Changelog 🆑 Melbert fix: Weather anomaly cores are orderable from cargo refactor: Anomaly core cargo orders are auto-generated - report any oddities with them. /🆑 |
||
|
|
87ef004695 |
Add handheld crew monitors to cargo (#95109)
## About The Pull Request Adds a crate of 2 handheld crew monitors to cargo. at 1.125X their station vending machine value. This currently works out to 675cr per crate. ## Why It's Good For The Game I joined medical late and the 2 initial vending machine crew monitors were gone and I was sad. Game not making players sad = good :) ## Changelog 🆑 Dominion add: Added a 3x handheld crew monitor medical crate to cargo. add: Added a goodie crate with a handheld crew monitor to cargo. /🆑 --------- Co-authored-by: Jordan Dominion <Cyberboss@users.noreply.github.com> |
||
|
|
a3498fdcd7 | Material Science 1: A bunch of math (#95090) | ||
|
|
2ff55b02cd |
Fixes exporting stock blocks using its own elasticity value separate from the materials exports causing inexplicable stock block sell and elasticity values (#95139)
## About The Pull Request Tin. Or, less unhelpfully, this was two issues causes by the same thing: 1. Selling GMM stock blocks was resulting in inexplicably lower results despite it reporting the material being at 100% elasticity. 2. The GMM was inexplicably showing elasticity resetting or cratering whenever you sold a stock block for a different material. Both of these were essentially caused by us using a separate export datum for stock blocks, which had its own elasticity value independent of the actual materials it was representing: https://github.com/tgstation/tgstation/blob/3248f9b4e8bbdeef02ad9482ea80f628f730f10d/code/modules/cargo/exports/materials.dm#L195-L218 But then, how did it reset or especially crater other materials' elasticity values? Trick question! It didn't: https://github.com/tgstation/tgstation/blob/3248f9b4e8bbdeef02ad9482ea80f628f730f10d/code/modules/cargo/exports/materials.dm#L215-L218 https://github.com/tgstation/tgstation/blob/d0e7d3c858d6926f6a4a387b74e140e8ce9f645b/code/modules/cargo/materials_market.dm#L176-L179 In reality, it was setting the material ID for the stock block export at every sale, causing the GMM to pull its elasticity value for whatever material was last sold and use *that* because the stock block export datum is later in the list. So in this pr we fix it by... merging stock block exports with the materials exports again. Honestly, much easier than I expected, because the base materials export already *has* handling for getting the sheet amount from an item's custom materials. So really most of this was making it adjust for the value tracked on the block, and the rest is... cleanup. The static list used confused me upon first reading the code, so I added some more comments. We now also have a cached list per `abstract_type` under it rather than just the one, because we need a separate one for market materials but it's still shared between several datums. We intentionally add `/obj/item/stock_block` when generating the typecache rather than as a part of the base `export_types`, just so none of the subtypes need to manually include it (and easily forget it). We now use `use_shared_exports` instead of requiring all the subtypes that don't use the cache to re-implement `init_export_types` the exact same way. ## Why It's Good For The Game Fixes jank 👍 Fixes #93090. ## Changelog 🆑 fix: Exporting stock blocks no longer uses its own elasticity value separate from the materials exports, and no longer erroneously shows the stock block elasticity instead of the material elasticity in the GMM for the material of the most recently sold stock block. /🆑 |
||
|
|
ef28e00690 |
[MDB Ignore] Refactors gauze, adds Tourniquets (#95041)
## About The Pull Request 1. Refactors gauze Removes gauze var from `/stack`, adds a shared parent between tape and gauze. Behavior of "sticking thing on limb" is now a bit more generic, with there being a component to facilitate it and a framework on `/bodypart` Closes #92990 2. Adds Tourniquets A first aid item, when attached to a limb it reduces blood loss from that limb by 90%. However while attached you walk slower (if on a leg), interact slower (if on a arm), and yes, you rapidly die if you put it on your head Paramedic belts have their starting equipment changed again for the 500th time. Surgical tape -> Tourniquet Bone gel -> Bonesetter <img width="604" height="224" alt="image" src="https://github.com/user-attachments/assets/443dd5c0-44a3-4ccb-9f6a-c561bbf2fba9" /> ## Why It's Good For The Game Adds some more variety for field treatment of bleeding wounds, and in the future we can add things like "improvised tourniquets" or "improvised splints" with wooden planks. ## Changelog 🆑 Melbert add: Adds Tourniquets. While attached to a limb, reduces blood loss from that limb by 90%, but makes you walk / interact slower. (Or if you put it on your head, you die.) add: You can purchase Tourniquets from the premium section of the medical vendor add: Paramedic belt setup has changed yet again: Surgical tape replaced with Tourniquet, Bone gel replaced with Bonesetter. add: You can use all forms of tape as splint - like Gauze. Will secure a fracture but won't stop your blood from exiting. refactor: Refactored gauze entirely, report any strangeness with it (or tape, or tourniquets) /🆑 |
||
|
|
00ccf0c6b5 |
Merge remote-tracking branch 'tgstation/master' into upstream-feb12-2026
# Conflicts: # .github/CODEOWNERS # .github/workflows/compile_changelogs.yml # .github/workflows/stale.yml # SQL/database_changelog.md # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # code/__DEFINES/atom_hud.dm # code/__DEFINES/inventory.dm # code/__DEFINES/mobs.dm # code/__DEFINES/species_clothing_paths.dm # code/__DEFINES/subsystems.dm # code/__DEFINES/surgery.dm # code/__HELPERS/global_lists.dm # code/_globalvars/lists/maintenance_loot.dm # code/_globalvars/traits/_traits.dm # code/controllers/subsystem/minor_mapping.dm # code/controllers/subsystem/processing/quirks.dm # code/controllers/subsystem/shuttle.dm # code/datums/components/palette.dm # code/datums/components/surgery_initiator.dm # code/datums/diseases/advance/advance.dm # code/datums/hud.dm # code/datums/mood.dm # code/datums/mutations/chameleon.dm # code/datums/quirks/negative_quirks/nyctophobia.dm # code/datums/status_effects/debuffs/debuffs.dm # code/datums/status_effects/debuffs/drunk.dm # code/datums/status_effects/debuffs/slime/slime_leech.dm # code/datums/weather/weather.dm # code/game/data_huds.dm # code/game/objects/items.dm # code/game/objects/items/devices/scanners/health_analyzer.dm # code/game/objects/items/frog_statue.dm # code/game/objects/items/rcd/RLD.dm # code/game/objects/items/robot/items/hypo.dm # code/game/objects/items/stacks/medical.dm # code/game/objects/items/stacks/wrap.dm # code/game/objects/items/storage/garment.dm # code/game/objects/items/tools/medical/defib.dm # code/game/objects/items/weaponry.dm # code/game/objects/items/weaponry/melee/misc.dm # code/game/objects/structures/crates_lockers/closets/secure/security.dm # code/game/objects/structures/curtains.dm # code/game/objects/structures/dresser.dm # code/game/objects/structures/girders.dm # code/game/objects/structures/maintenance.dm # code/game/objects/structures/mirror.dm # code/modules/admin/greyscale_modify_menu.dm # code/modules/admin/verbs/light_debug.dm # code/modules/antagonists/ashwalker/ashwalker.dm # code/modules/antagonists/heretic/knowledge/starting_lore.dm # code/modules/antagonists/ninja/ninjaDrainAct.dm # code/modules/art/paintings.dm # code/modules/client/preferences.dm # code/modules/client/verbs/ooc.dm # code/modules/clothing/head/wig.dm # code/modules/events/disease_outbreak.dm # code/modules/holodeck/holo_effect.dm # code/modules/jobs/job_types/head_of_security.dm # code/modules/jobs/job_types/security_officer.dm # code/modules/library/skill_learning/generic_skillchips/point.dm # code/modules/mining/lavaland/ash_flora.dm # code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm # code/modules/mob/dead/new_player/new_player.dm # code/modules/mob/living/basic/guardian/guardian.dm # code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm # code/modules/mob/living/carbon/carbon.dm # code/modules/mob/living/carbon/human/human.dm # code/modules/mob/living/carbon/human/human_defines.dm # code/modules/mob/living/carbon/life.dm # code/modules/mob/living/living.dm # code/modules/mob/living/living_defines.dm # code/modules/mob/mob.dm # code/modules/mob_spawn/ghost_roles/mining_roles.dm # code/modules/mod/mod_control.dm # code/modules/mod/modules/modules_general.dm # code/modules/modular_computers/computers/item/computer_ui.dm # code/modules/paperwork/paper.dm # code/modules/paperwork/paperbin.dm # code/modules/power/lighting/light.dm # code/modules/projectiles/guns/energy/kinetic_accelerator.dm # code/modules/projectiles/projectile.dm # code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm # code/modules/reagents/chemistry/reagents/food_reagents.dm # code/modules/reagents/chemistry/reagents/other_reagents.dm # code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm # code/modules/research/xenobiology/crossbreeding/_clothing.dm # code/modules/research/xenobiology/crossbreeding/prismatic.dm # code/modules/surgery/advanced/brainwashing.dm # code/modules/surgery/advanced/lobotomy.dm # code/modules/surgery/amputation.dm # code/modules/surgery/blood_filter.dm # code/modules/surgery/bodyparts/_bodyparts.dm # code/modules/surgery/brain_surgery.dm # code/modules/surgery/cavity_implant.dm # code/modules/surgery/coronary_bypass.dm # code/modules/surgery/gastrectomy.dm # code/modules/surgery/healing.dm # code/modules/surgery/limb_augmentation.dm # code/modules/surgery/organ_manipulation.dm # code/modules/surgery/revival.dm # code/modules/surgery/sleeper_protocol.dm # code/modules/surgery/surgery_helpers.dm # code/modules/surgery/surgery_step.dm # code/modules/unit_tests/_unit_tests.dm # code/modules/unit_tests/designs.dm # code/modules/unit_tests/icon_state_worn.dm # code/modules/unit_tests/screenshots/screenshot_antag_icons_cultist.png # code/modules/unit_tests/screenshots/screenshot_antag_icons_headrevolutionary.png # code/modules/unit_tests/screenshots/screenshot_antag_icons_provocateur.png # code/modules/unit_tests/screenshots/screenshot_husk_body.png # code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png # icons/map_icons/clothing/head/_head.dmi # icons/map_icons/clothing/shoes.dmi # icons/map_icons/items/_item.dmi # icons/mob/huds/hud.dmi # icons/mob/inhands/64x64_lefthand.dmi # icons/mob/inhands/64x64_righthand.dmi # icons/obj/machines/computer.dmi # tgui/packages/tgui/interfaces/OperatingComputer.jsx # tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx # tgui/packages/tgui/interfaces/PreferencesMenu/types.ts # tgui/packages/tgui/interfaces/SurgeryInitiator.tsx # tools/icon_cutter/check.py |
||
|
|
f58b8511f0 |
Refactors effect_system (#94999)
## About The Pull Request This PR refactors ``effect_system``s to be a bit easier to use by getting rid of ``set_up``, allowing ``attach()`` to be chained into ``start()`` and refactoring most direct system usages in our code to use helper procs. ``set_up`` was unnecessary and only existed to allow ``New``'s behavior to be fully overriden, which is not required if we split sparks/lightning/steam into a new ``/datum/effect_system/basic`` subtype which houses the effect spreading behavior. This allows us to roll all logic from ``set_up`` into ``New`` and cut down on code complexity. Chaining setup as ``system.attach(src).start()`` also helps a bit in case no helper method exists I've added ``do_chem_smoke`` and ``do_foam`` helpers, which respectively allow chemical smoke or foam to be spawned easily without having to manually create effect datums and reagent holders. Also turns out we've had some nonfunctional effect systems which either never set themselves up, or never started, so I fixed those while I was at it (mostly by moving them to aforementioned helper procs) ## Why It's Good For The Game Cleaner code, makes it significantly easier for users to work with. Also most of our effect system usage was copypasta which was passing booleans as numbers, while perfectly fine helper procs existed in our code. ## Changelog 🆑 refactor: Refactored sparks, foam, smoke, and other miscellaneous effect systems. refactor: Vapes now have consistent rigging with cigs using the new system. fix: Fixed some effects never working. /🆑 |
||
|
|
673c5abe73 |
Fixes reagent & pill & virus bounties never working (#95034)
## About The Pull Request `..()` is `FALSE`. ## Why It's Good For The Game fixes #95031 & viruses & pills ## Changelog 🆑 fix: bounties where you must submit reagents or pills or viruses now work /🆑 |
||
|
|
6c5fa75ecd |
One-Way Materials Market (#5137)
## About The Pull Request Re-enables purchase of the GMM, however the GMM can only be used to purchase materials not sell them. ## Why It's Good For The Game Let the station buy materials if they're desperate/lowpop. If people were selling insane amounts of material inflating the budget, just remove the ability to sell. Don't remove the entire machine. ## Changelog 🆑 LT3 add: Galactic materials market can be used by cargo for purchasing materials only /🆑 |
||
|
|
68153c2333 | Refactors faction lists to use getters and setters and be cached (#94490) | ||
|
|
97f2842684 |
Cargo can't buy goodies /w the express console & crew can't request weapons bypassing access. (#94483)
## About The Pull Request These are both bugs and/or oversights with cargo ordering, but I imagine that fixing them is going to be equally unpopular so I decided to implement both fixes in the same PR as they're both items that I've called out before as being unintentional. I can atomized these out if requested but I don't feel the need to at this second. * This PR Fixes a longstanding issue where the express cargo console can be used to purchase goodies via the cargo budget. Part of the balance of items that are currently sold as goodies are that they must be purchased privately, as opposed to using the cargo budget. That's why they're also typically a bit more expensive per-item than their contemporaries like the single energy gun and the single insulated gloves. Being able that bypass that mechanic will make it harmful to longterm balance on items added as cargo goodies as well. This fix was implemented both through a check on the express console logic for adding items to an order, as well as by hiding the goodies tab from the express console. For the record, the express console has code explicitly attempting to prevent you from ordering items privately, and in the base cargo console, goodie items can ONLY be purchased privately. * This PR fixes an oversight in the implementation of departmental order requests. Namely, if you were to request something with access restrictions like energy guns, and then request them using your non-cargo department's funds, it would bypass the crate's regular access restrictions in order to let you open the crate. Interestingly enough, the locks would open for the initial delivery, and if locked and attempted to re-open, it would lock the guns behind their original intended access. This has been fixed by adding an early return an alert preventing you from ordering guns if your ID card does not have access to actually open the crate. This also means that you can still order guns using departmental funds assuming you have proper access already. Crew may still request guns ignoring any kind of access restrictions when requesting directly from cargo, though cargo will need to find a way to open them, as per usual. * Agent IDs can bypass ID requirements with the request console and Emagging the express console bypasses the goodie lock respectively. ## Why It's Good For The Game Re: Goodies, goodies were intended to be purchased by players specifically, and being able to bypass that restriction through the express console has always struck me as a longstanding oversight that nobody's been bothered to fix for several years. Fixes #94265. Re: Departmental crates bypass, We don't want crew using departmental budget funds to buy heaps of guns without access and without oversight. This moves the right of refusal back onto cargo UNLESS the crew member in question has explicit access to guns and the armory in the first place. As previously stated, behavior is unchanged when requesting guns from the cargo budget, as is tradition. Fixes #94266. ## Changelog 🆑 fix: The Express Cargo Console can no longer buy goodie items. add: The Express Cargo console can bypass the goodie purchasing protection if Emagged. fix: Departmental Order requests may no longer bypass access restrictions, and require access to place the order. add: Departmental Order may explicitly bypass access restrictions if placed using an agent ID. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
c7e4e90004 |
Adds a new antag, the Blood Worm (#93787)
## LTS Document Check this document before making any significant future changes to blood worms, please. https://hackmd.io/@RikuTheKiller/H1AHQSKNZx ## About The Pull Request THIS PR SHOULD ABSOLUTELY BE TM'D FIRST Blood worms are a new progression antag. When the event runs, 2 candidates are picked from ghosts and spawned in as blood worm hatchlings, which then have to grow up, do a couple objectives and take over the station. Hatchlings are weak outside of a host, while juveniles can stand their own reasonably well. Adults have high offensive power and can only be dealt with using the right gear or a lot of luck and robustness. They're meant to be a moment of glory for achieving maximum progression and they can bootstrap the next hatchlings by gathering corpses before cocooning. Each growth stage requires 30 seconds in a cocoon, which can only be created after consuming a lot of blood. There's a falloff curve on a per-blood-type basis, meaning you can't drain the same person over and over again to reach adulthood. The medbay freezer is a priority target for the blood worms and can get one of them to the juvenile stage if fully ransacked. It takes 500 blood to mature from hatchling to juvenile, and 1500 blood to mature from juvenile to adult. You can only get up to 1000 blood from synthetic sources like monkeys, and consuming synthetic blood is 30% less efficient. Blood worms can also examine living targets to see how much blood a target has, and how much growth the blood worm would gain for consuming that blood. Blood worms spawn in vents and have night vision for maneuvering in maintenance. Hatchlings can ventcrawl, while juveniles can move around by breaking things. Optionally, you can take over a host with a lot of access like the Captain to go basically anywhere, especially if nobody knows you killed the captain. Behind the scenes, host-taking kicks the host's original mind to a backseat mob. This needs the most testing in practice, but it's confirmed that it returns the host's mind back to their body, at least in testing. All mob, ability and action sprites are made by INFRARED_BARON. Legal rights were transferred to me after I paid for the commission. Note, I've been working on this massive PR for quite a while, so documenting every small change is really hard! Apologies for anything I've missed. There's a lot. Final note, admins can spawn these by either: A. Trigger the midround event via the dynamic-panel verb, under the Rulesets tab. B. Giving someone the Blood Worm antag datum via the Traitor Panel in the Player Panel for the target player. This will transform their mob into a valid Blood Worm, with all of the associated objectives and such. ### Active Abilities 1. Leech Blood (No Host) - Lets the blood worm drain blood from living targets and reagent containers. Uses an aggressive grab to restrain living targets until leeching is over, which takes around a second to initiate. Causes oxyloss during the leeching. NPC monkeys can't escape from this and it floors targets as well. 2. Spit Blood (Both) - Multi-function ability, lets the blood worm fire ranged corrosive blood spit at targets, melt restraints on their hosts by right-clicking, and as an adult, shoot a burst of blood spit at a target by right-clicking. Note of the right-click abilities, shooting bursts can't be done while in a host. (to avoid unfair stealth kills) Shooting a burst has a much longer cooldown than shooting normally. All spit types cost blood to use. 3. Invade Corpse (No Host) - Lets the blood worm take a host for themselves, consuming all of the host's blood and in essence, "becoming" the host. Any bloodloss inflicted on the host is taken as damage to the blood worm, and the blood worm retains its weakness to fire even in this state. Burn damage itself no longer has any extra damage, though. 4. Leave Host (Host) - Title, literally just leaves the host after a delay. Notably works even while the host is moving, dead, incapacitated or otherwise fucked up in any way, shape or form. 5. Inject Blood (Host) - Lets the blood worm heal its host. The potency of this increases as the worm grows up, but so does the cooldown and blood consumption. This works on organ damage, injuries, etc. 6. Mature (No Host) - Makes the blood worm enter a cocoon for 30 seconds, emerging as the next growth stage. Requires an increasing amount of consumed blood / growth as the blood worm uses it. 7. Reproduce (No Host, Adult Only) - Makes the blood worm enter a cocoon for 30 seconds, with 4 hatchlings emerging out of it, including the original blood worm, now reverted back into a hatchling as well. 8. Revive Host (Host) - If the host is in a viable state to be revived, revives them after an animation sequence plays out. ### Passive Abilities 1. Space Immunity - Blood worms are immune to the cold, low pressures and a lack of oxygen. Only the immunity to a lack of oxygen carries on to hosts from this. 2. Organ Insertion - Blood worms can insert organs into their hosts by right-clicking on them with the organ in-hand. This mainly exists to deal with hosts that lack organs, and avoids the gotcha where an adult blood worm ends up gutting their host by hitting them too hard, as they can simply fix it on the spot. 3. Life Support - Blood worm hosts don't need a heart, lungs or a liver to survive. Lungs are useful for speaking, and a liver is necessary to process reagents. 4. Regeneration - Blood worms slowly heal over time. This is nowhere near enough to overcome bleeding or heat damage, since it's 0.3 hp/s for a hatchling, 0.4 hp/s for a juvenile and 0.5 hp/s for an adult. 5. Night Vision - Blood worms can see in the dark. This doesn't extend to hosts. 6. Ventcrawling - Hatchling blood worms can ventcrawl. 7. Doorcrawling - Hatchling and juvenile blood worms can slide under doors. Doing so takes 3 seconds for a hatchling and 5 seconds for a juvenile. 8. HUD - Blood worms can tell how much blood targets have at a glance, via a blood HUD bar exclusive to them. They can also tell apart other blood worm hosts from normal people via an antag HUD. There's also an examine message they can use on living targets for even more info. ### Weaknesses 1. Heat and Fire - Blood worms quickly die to heat, their bodies are flammable and their blood will burn up if their host's core temperature is too high. The main counter to this is getting a host with flame-resistant gear. 2. Bleeding - While in a host, bleeding wounds will directly damage the blood worm itself. How much a host needs to bleed before the worm dies depends on their growth stage. Blood worm hosts keep bleeding even while dead, so just keep hitting them and they'll die. Blood worms automatically leave their hosts when they hit 10% health or lower, and their hosts bleed 50% faster than normal people. 3. Stuns - Blood worms have no way of dealing with a stunned host other than getting out. They can deal with any restraints by melting them, though. 4. Testing - Security can order a blood worm testing crate from cargo, either for a 20 minute cooldown via the security cargo interface console, or for 10000 credits via the supply console. It contains 4 single-use testers that hurt a bit when applied, but are instant to use and 100% accurate. The stopgap is that they're really fucking expensive and only work once per item. ### Screenshot <img width="280" height="132" alt="image" src="https://github.com/user-attachments/assets/00d22361-997e-4347-a0bf-aa240de40727" /> ## Why It's Good For The Game Antagonist variety, mainly. This is basically Cortical Borers 2: Electric Boogaloo. Currently, we lack any antagonists with mind control abilities. That really sucks! I've also gotten a lot of positive feedback about the antagonist while working on it. This antagonist also has great potential for roleplay, as they can take over hosts, surprise attack people by getting out of a dead corpse, talk to each other using Wormspeak, etc. I think we're also itching for variety on "pest" antagonists. Right now we just have spiders and xenos. Everybody knows these two, so why not mix it up a bit? And as for balance? Blood worms are relatively easy to dispatch when you know their weaknesses, which are extremely clear. Bleeding for hosts, fire for either one, lasers for the worms themselves. As long as you get the host in crit and keep hitting, you've pretty much won, and they can't keep spamming Inject Blood forever since they'll quickly run out of blood to use. ## Changelog 🆑 add: Added a new heavy roundstart/midround antagonist, the Blood Worm. Credit to INFRARED_BARON for the sprites! fix: Removing traits based on a source no longer causes issues with trait signals. fix: High-priority effects no longer double-trigger due to subsystem issues. fix: Weighted averaging in reagent merging code has been band-aid fixed. It's not the best, but it works. /🆑 |
||
|
|
71a232f03b |
Makes lizard skin and lizardskin items inherit their "donor's" skin color (#94751)
## About The Pull Request As title says, skin butchered from humans (currently only applies to lizardskin) now inherits their owner's skin color, and so do items (lizardskin boots and hats) made from it. Also this PR gagsifies lizardskin hats and boots for this very reason. ## Why It's Good For The Game Consistency, when you butcher a purple lizard you should get purple lizard boots. ## Changelog 🆑 add: Made lizard skin and lizardskin items inherit their "donor's" skin color /🆑 |
||
|
|
ed78409958 |
Adds a trailing comma to some lists, cleans up cargo cult static vars (#94770)
## About The Pull Request Tin, some global lists being kept in memory for no reason when all they are used for is initially picking a random reagent from a list. ## Changelog Nothing player-facing, just code janitoring. |
||
|
|
b804e1df79 |
Revamps security bounties (#94545)
## About The Pull Request <img width="565" height="201" alt="image" src="https://github.com/user-attachments/assets/f747992c-82d7-4cd2-9d5c-b94b7de37cdd" /> <img width="618" height="108" alt="image" src="https://github.com/user-attachments/assets/8d5c4e25-87ea-4e53-b9e6-e95e26b3e69f" /> - N-spect scanners can no longer print reports - Clown N-spect scanners have been removed as printing reports was their primary function - Security no longer get bounties to loot the brig's equipment. The contraband bounty is still available. - Patrol bounties have been reworked. - A patrol bounty will give you an area and a number of steps that you must take in an area. - To complete the bounty, you must walk to the area and take that many steps. It's that simple. - Your ID card will update you as you progress the bounty. - You are rewarded more for larger areas, and less for teeny tiny areas. - Walking back and forth the same two tiles will not count towards progress. - When done, all you need to do is go back to the civ console and press "send". You don't need to add any items to the pad. - All security officers can get general patrol bounties (service + maint + hallways). Departmental officers can get patrol bounties for their department. - And yes, it tracks if your *id card* moves. This means you can strap your ID card to a drone and it'll count. Get creative if you're lazy. - ID trims how handle bounty generation. This changes very little, besides allowing certain trims for certain jobs to add specific bounties. - There's now setters for bounties and bank accounts. - Fix Bountious Bounty trait by having a `get_reward` ## Why It's Good For The Game Sec bounties to loot a bunch of miscellaneous things from the brig is... odd. All it does is deprive your team of equipment should you need it. On the other hand, patrol bounties are really flavorful, but a bit cumbersome thanks to needing a hand scanner. By integrating the process of patrolling *into* the officer's ID card, it means you can just grab a bounty and go about your business. The idea is that this'll streamline the process of patrolling a bit and make it more natural and fun (well, as fun as "walking around" can be. Which is fun to me...) ## Changelog 🆑 Melbert del: N-spect scanners can no longer print reports. All it does now is scan for contraband. del: Clown N-spect scanners have been removed. del: Security no longer get bounties to loot the brig's equipment. Though the contraband bounty is still available. add: Security's patrol bounties have been reworked. Now, they just require you to walk around an area for a bit. No scanning necessary. refactor: Adds setters for bounties and bank accounts. Report any situations where your bank account is not set correctly. refactor: ID trims now handle bounty generation. Report any situations where you get a weird pool of bounties. fix: Bountious Bounties station trait works again /🆑 |
||
|
|
d5102b2030 |
Void stamp integration - the stampening (#94359)
## About The Pull Request Void stamp added to bureaucracy loot spawners, a new box that contains a granted, denied, and void stamp found in the lawdrobe, hop locker, bureaucracy crate, mod stamper module, and the paperwork implant gets a stamp that can cycle between 3 different ones like the mod stamp. ## Why It's Good For The Game Finally the void stamp is obtainable ## Changelog 🆑 add: The void stamp is now obtainable add: The lawdrobe now sells a box of stamps add: The head of personnel's locker now contains a box of stamps fix: The mod stamper module is now visible /🆑 --------- Co-authored-by: Fghj240 <fakeemail@notrealemail.com> |
||
|
|
83cd43da91 |
Extends atom_reskin to be more modular/adds support for greyscale reskins in the loadout menu (#94466)
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> |
||
|
|
4d7b9be4a2 |
Fix a variety of grammar errors (#94707)
* Fix uncapitalized sentences, lack of "the", and singular/plural mixup when inserting items into lathes * Conform some job descriptions to the pattern used by the majority: bitrunner, chemist, coroner, janitor, RD, shaft miner * Remove extra colon from "Open Special Role Information" action buttons * Uncapitalize "no alerts" / "systems nominal" messages in atmos and station alert consoles * Fix incorrect feedback when wrenching down a freezer/heater with its panel open * Fix "Thank you for restocking the station!" appearing in the wrong place in the cargo export summary * Fix "pizza boxs" on cargo manifests * Fix mid-sentence capital "The" when: * Examining walls with mounted items * Inserting parts into machine frames * Fix "Pete's the udder" * Fix double-"the" and stringified datum typepath when scooping reagents * Fix missing spaces in door remote descriptions * Fix uncapitalized "Nanotrasen" in emergency respone drone ghost role poll * Fix double-space in canister opening admin log * Fix missing "the" when casting bear-form spell * Fix "auxiliry" in NebulaStation airlocks * Add `check_grep.sh` rules against "maintainance", "maintainence", and "maintenence" * Fix "maintainance" in NebulaStation airlocks, TCG cards, and in examines of netpod, byteforge, quantum server * Fix "maintainence" in examines of autolathe, flatpacker, cryo cell, ore silo, floodlight, power storage unit, turbine, chromatography machine, ChemMaster, all-in-one grinder, smoke machine, R&D machines, vending machines * Fix "maintenence" in Sulaco ruin terminal * Add missing periods to: * "That's X." examine block header * steal objective explanation text * atmospheric shield generator examine * autolathe examine * telescreen examine * accidentally stepping on a mousetrap * netpod examine * byteforge examine * hat/mask visor toggling * bizza box stack examine * ChemMaster 3000 examine * floodlight examine * power storage unit examine * ChemMaster interact messages * disposal bin animal eject message * techfab examine * vending machine examine * flatpacker examine * Fix name capitalization/propriety of: * big manipulator * DeForest first aid station * Christmas tree * Thunderdome plaque * commission plaque * chalkboard coffee menu * experimental destructive scanner * scanner array * prison cube * RaptorDex * atmospheric shield generator * high-performance liquid chromatography machine * all-in-one grinder * keycard authentication device * Fix plurality of: * fake stairs * HUDs * restaurant and bar seating * Fix misc grammar/typos in: * recharging station description * worm description * surgery tray description * access failure message of restaurant portal * mysterious pillar description * Pennywise painting description * floodlight examine * power storage unit examine * flatpacker examine * Remove extra newline from "Debug Z-Levels" verb |
||
|
|
3799968eb3 |
feat: new floppy disk sprites; most disks are now under the /item/disk type; adds disk stacking, uqinue styling and wrapping (#94112)
## About The Pull Request Floppy disks received a sprite upgrade, as well as unique wraps: <img width="364" height="150" alt="image" src="https://github.com/user-attachments/assets/0ac433e3-7432-4c06-bec2-aeae00b6852f" /> <img width="786" height="527" alt="image" src="https://github.com/user-attachments/assets/0f36bd0d-0362-4431-8131-49060a2fe348" /> You can now stack floppy disks! They also scatter around when thrown. The video also showcases new styling options with a selection of stickers! You can also write something on the disk instead of selecting an icon: https://github.com/user-attachments/assets/ff0a8542-9d79-4108-ae46-672ca5d620a2 MOST disks now inherit the `/item/disk` type to properly stack and do... stuff. An updatepaths script included. ## Why It's Good For The Game Old school is cool. Stacking disks makes them feel more authentic, while styling allows for more crearivity! ## Changelog 🆑 add: New unique wraps for floppy disks qol: Floppy disks can now be stacked image: New sprites and stickers for floppy disks map: Added and ran an updatepaths script refactor: Most disks are now under the base disk item type /🆑 --------- Co-authored-by: The-Tyrant <tyrantofgaming@gmail.com> |
||
|
|
53ed83bb9d |
Makes some more lists lazy (#94388)
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
6e9f2ccfc0 |
Merge remote-tracking branch 'tgstation/master' into upstream-12-15
# Conflicts: # .github/workflows/compile_all_maps.yml # .github/workflows/run_integration_tests.yml # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # code/_onclick/hud/credits.dm # code/controllers/subsystem/networks/id_access.dm # code/datums/diseases/advance/advance.dm # code/datums/diseases/advance/symptoms/heal.dm # code/game/machinery/doors/door.dm # code/game/objects/structures/crates_lockers/closets/secure/medical.dm # code/game/objects/structures/crates_lockers/closets/secure/security.dm # code/modules/antagonists/malf_ai/malf_ai_modules.dm # code/modules/jobs/job_types/_job.dm # code/modules/loadout/categories/accessories.dm # code/modules/loadout/loadout_helpers.dm # code/modules/loadout/loadout_items.dm # code/modules/loadout/loadout_preference.dm # code/modules/mob/living/silicon/robot/robot_defense.dm # code/modules/mod/mod_theme.dm # code/modules/projectiles/ammunition/energy/laser.dm # code/modules/reagents/reagent_containers/cups/drinks.dm # code/modules/shuttle/mobile_port/variants/supply.dm # code/modules/surgery/organs/internal/eyes/_eyes.dm # code/modules/unit_tests/screenshots/screenshot_antag_icons_heretic.png # icons/hud/screen_full.dmi |
||
|
|
d25c6201f4 |
Standerdizing currency symbols Part 2 (#94259)
## About The Pull Request Converts almost all non-constant, non-tgui usages of all variantions of "credit" and "cr" Everything seems in order, tested most the currencies. <img width="905" height="119" alt="image" src="https://github.com/user-attachments/assets/3fa005a7-a114-426c-9646-b81f68bc2dec" /> <img width="255" height="128" alt="image" src="https://github.com/user-attachments/assets/14c83b54-4fd9-4bee-838f-5b1c03939d9a" /> ## Why It's Good For The Game Same justification as https://github.com/tgstation/tgstation/pull/94128 Just easier to mantain/adjust the grammer/names of our money ## Changelog 🆑 spellcheck: minor cleanup on some usecases of "credits" /🆑 |
||
|
|
3fd1a2008f |
Laser Gun Update: Second Pass to Fix Lore and Tweak Grammar (#94438)
## About The Pull Request Touches up laser guns' lore a bit and makes them actually add an examine_lore component for every non-base laser gun, because the component wasn't being added due to a return for every non-basic laser type. Adjusts the laser guns so they're all Type [number]/[variant], so the previous `Type 5C laser pistol` is now the `Type 5/C laser pistol`, the `Type 5R laser carbine` is now the `Type 5/R laser carbine`, the `Type 5A laser assault rifle` is now the `Type 5/A laser assault rifle`, as to denote a more obvious separation between the base iteration/version and the variant appending. ## Why It's Good For The Game The lore wasn't being added because of the component add being beyond the slapcrafting component check. The clear slash between base version and variant looks a little nicer to me. Lore grammar tweaks feel like they read a little better to me? The latter two are subjective. ## Changelog 🆑 fix: Non-base laser guns now attach their lore properly. spellcheck: Adjusted the names on the laser guns to have a slash between the numeric type/version and the variant... abbreviation? Letter? One of the two. spellcheck: Fixed some typos and adjusted the now-visible lore on the laser guns to read a little nicer, theoretically. Whether the grammar tweaks improved anything or not is subjective. /🆑 --------- Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com> |