mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-22 14:44:12 +01:00
088409bbe376a7adcd4d1fb747cf4a5e4f257c5b
644 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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 /🆑 |
||
|
|
b9fad92412 |
Adds achievement-unlockables hats for orbies (feat. big rollies from hacked cigarette vending machines) (#86098)
## About The Pull Request So, do you remember orbies, those cutesy virtual PDA pets from that PR that Ben made roughly six months ago before moving on his next project, leaving them to be probably forgotten in a near future/present/past? Yeah, personally I never played around, however I recalled that they do have customizable virtual hats, which can be selected from a dropdown in the UI, and I thought that it would be a perfect target for some achievement-related content, as they're totally cosmetic that provides no gameplay advantage nor affects balance in no way whatsoever. I cannot sit well with cheevos being purely an end to itself, that's the reason this PR exists. The new additions to orbies hats, and their respective required achievements are: - The fishing hat (Legendary Fisher) - A huge-ass rollie (Unhealthy Snacks) (yeah, it isn't exactly a hat but the code in no way assume that the item has to be a hat, beside vars named like that for the sake of convenience) - A tape wizard hat (Archmage) - An energy cakehat (Very Important Piscis) - A bounty hunter cowboy hat (Hot Damn!) - A fancy crown (Outdebted) The huge-ass rollie (called fat dart) in the game, is a new cigarette, rarely found in hacked cigarette vending machines. It's obviously a reference to that Ralsei meme from 3 years ago or so but I personally don't care, I just wanted to give an excessively big cigarette to orbies to symbolize the proposterous accomplishment of eating 500 cigarettes in a single round without dying from nicotine OD less than halfway through, but since orbie hats use actual items are references for their appearance, I found myself obliged to add one to the code. Overall, the fat dart comes from an old PR on Citadel, though I had to resprite it myself. Here's a lazy collage of the hats. For some reason unbeknownst to me, the hats are horizontally squished. I need to ask Ben why he did them this way when Orbies' heads are as wide as a rugby ball.  ## Why It's Good For The Game Simple, extra cosmetic stuff for a simple feature that's as relevant as playing around with plushes. ## Changelog 🆑 add: Added more customizable options to PDA virtual pets, which can be unlocked by completing achievements. add: Added a fat dart that can be rarely found in hacked cigarette vending machines. /🆑 |
||
|
|
a4328ae1f9 |
Audits tgui_input_text() for length issues (#86741)
Fixes #86784
## About The Pull Request
Although some of the issues found were a direct result from #86692
(
|
||
|
|
bbc685b60a |
adds fishing category to games vendor (#86699)
## About The Pull Request this pull request adds a fishing category to the games vendor with items that cost 50 credits more than their goodie alternatives. ## Why It's Good For The Game this allows people to start their fishing goals earlier without waiting 20 minutes for cargo at the caveat of the items costing 50 credits extra than normal ## Changelog 🆑 add: Added new fishing category to games vendor /🆑 |
||
|
|
8d9f1689ba |
Decouples free vending machine behavior from the 'onstation' var (#86548)
## About The Pull Request The `onstation` var was being used for too many things (AI brand intelligence + whether the products are free or not), and was overcomplicating the logic. On top of that it makes things like trying to make a vending machine that is considered offstation for purposes of the brand intelligence event but that still dispenses free goods needlessly difficult. This PR just decouples the two behaviors and gives the 'free' behavior its own var. As a result, the majority of the of `onstation` map varedits are no longer necessary Tested with various edge cases, all seem working as intended: <details><summary>arrivals (onstation, all_free_products = null / FALSE)</summary>  </details> <details><summary>arrivals (onstation, all_free_products = TRUE)</summary>  </details> <details><summary>spacehotel (not onstation, all_free_products = null)</summary>  </details> <details><summary>hauntedruins (not onstation, all_free_products = FALSE)</summary>  </details> <details><summary>silverscale shuttle (not onstation, all_free_products = TRUE)</summary>  </details> <details><summary>labor camp (not onstation, all_free_products = FALSE)</summary>  </details> ## Why It's Good For The Game Less complicated vending machines, less varedits in our maps. Less confusing code. Ability to spawn a vending machine and varedit it to be free without affecting any other systems. ## Changelog N/A |
||
|
|
feb474550f |
Removes vestigial req_access from vending machines + some cleanup (#86550)
## About The Pull Request Once upon a time, vending machines were access locked I guess? It's been so many years since that has been the case that most people don't remember (including myself). This just removes all the old unused req_access lists that reside on the various vending machines. ## Why It's Good For The Game Less chance of cargo culting something that serves no purpose anymore. ## Changelog Nothing player facing I should hope --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
d9951f2bf7 |
Makes Cytology Vendor sell the correct type of bio suits. (#86122)
## About The Pull Request Makes the Cytology Vendor sell science bio suits instead of normal/medical bio suits and the correct type of lab coats. ## Why It's Good For The Game A science vending machine should sell science bio suits instead of blue, medical bio suits. ## Changelog 🆑 fix: Makes the Cytology Vendor sell science bio suits instead of medical bio suits. fix: Makes the Cytology Vendor sell science lab coats instead of normal lab coats. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
d2ab513332 |
Reintroducing my PRs that were lost in the wallening revert. (#86439)
## About The Pull Request This PR reintroduces #85759, #85892 and #85894. #85892 has post-wallening arrows, but it isn't a big deal because they fit the top-down or 3/4 style we've for a lot of things. ## Why It's Good For The Game Reintroducing lost features and improvements. Remember to remove the 'Lost in the wallening revert' label from those PRs when this is merged. ## Changelog N/A |
||
|
|
99424053f6 |
[NO GBP] Re-adds the cytopro to the science areas (#86441)
## About The Pull Request The Cytopro makes a grand return post-revert! Also renames the starting petri dishes to "basic sample petri dish" This noticeably does NOT fix the fact that the machine sells the wrong sort of labcoat, so I strongly recommend merging #86122 immediately following this PR. ## Why It's Good For The Game Puts #85338 and #85996 back ## Changelog 🆑 add: The vendor of cytology equipment, the CytoPro, is once again available in your local science department! /🆑 |
||
|
|
88022e8f58 |
Fix typo in CRUSH_CRIT_PARAPLEGIC (#85975)
## About The Pull Request ```diff - CRUSH_CRIT_PARAPALEGIC + CRUSH_CRIT_PARAPLEGIC ``` ## Why It's Good For The Game While I was fixing another error in the code with paralytics, I accidentally made a typo and found this "new" word. So if you look for a "paraplegic", you won't find one everywhere. ## Changelog 🆑 fix: typo in CRUSH_CRIT_PARAPLEGIC /🆑 |
||
|
|
9a9b428b61 |
Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
|
||
|
|
531486b995 |
Curator LIVE Journalism (#86046)
## About The Pull Request The first Curator now spawns with a **Broadcast Camera**, a normal-sized item that can be wielded to start a live broadcast to all entertainment screens across the Station! It also broadcasts sound through a new Entertainment radio channel that can be spoken into by the Curator. The broadcast name can be changed by right-clicking the camera. <details> https://github.com/user-attachments/assets/cfe2a147-15b3-4a96-85e2-3082376a0e9a </details> Also adds a new clothing set to the Heroic Beacon of the Curator themed around Journalists containing some unique clothing, a microphone, a Press badge used for shoving into people's faces and crafting more clothes (like Press armor and helmet), and also a set of 1 TV and 1 entertainment radio in-case station does not have places to watch Curator's brilliant broadcasts.  ## Why It's Good For The Game The job of Curator has 3 things it can do: - Curate Library (lol) - Explore Space - **Create News!** Although the Curator does have extended access to the Newscaster - that's not enough of content. Inspired by the Combat Correspondent from the Colonial Marines server - Curator now has a **Broadcast Camera**! Using it they can show the station what the most important matters that are going on without lifting the butts of their comfortable chairs. No matter what Curator will report: Security raiding Medbay? Interviews of Cargo Techs complaining about Command? Maybe even shows produced in a studio? Anything really! Also, entertainment screens will get more use, as right now they only _sometimes_ broadcast Bitrunning avatars and nothing else unless admins mess with them. ## Changelog 🆑 DrDiasyl aka DrTuxedo add: Curator has received a new BROADCAST CAMERA which can broadcast the surroundings LIVE on Entertainment Screens/ Alongside with some other Journalism related gear in his Heroic Beacon sound: Entertainment screens now play muffled speech when hearing a message on Entertainment frequency /🆑 |
||
|
|
68a8813bb9 |
[NO GBP] CytoPro Price Adjustment (#85996)
## About The Pull Request Increases the default price of CytoPro items from 30 credits to 50 credits. Also moves the pre-filled petri dish from contraband to the regular tab ## Why It's Good For The Game When I originally made the CytoPro I didn't realize that departmental discounts were a thing that existed. So, I put a 30 credit price tag on the regular items only to find out that they actually only cost 6 credits in practice, a LOT cheaper than I was intending and lower than pretty much all the other departmental vendors. This should increase the price from 6 credits to 10 credits for scientists, which is still quite inexpensive but no longer absurdly so. Also, the petri dishes don't really need to be in contraband since apparently they're the same ones that start in the smartfridge nearby, so there wasn't much point in hiding them. ## Changelog 🆑 balance: The CytoPro has had prices raised to slightly more reasonable levels. /🆑 |
||
|
|
d2c7806047 |
Spelling and Grammar Fixes (#85992)
## About The Pull Request Fixes several errors to spelling, grammar, and punctuation. ## Why It's Good For The Game ## Changelog 🆑 spellcheck: fixed a few typos /🆑 |
||
|
|
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. /🆑 |
||
|
|
ce0a9c932e | Shrunk arrow from pointing at things. Command roles unaffected thanks to id trims (also new skillchip). (#85892) | ||
|
|
23929b39b6 |
Adds a new cytology-focused vending machine to the science area (#85338)
## About The Pull Request Creates a new vending machine in the science area, called the CytoPro and filled with cytology gear (and a few things that might be useful in xenobiology). This vending machine is added to the cytology labs of all maps. Here's how it looks in-game (with the panel screwed open, I was hacking it to test at the time)  The current product list is shown below.   I've put them in the locations shown below. Birdshot:  Delta:  Icebox:  Northstar:  Tram:  Wawa:  **Feedback on more products welcome!** ## Why It's Good For The Game Currently, there aren't a lot of backup sources for cytology gear. Most maps spawn with a single cytology closet containing the necessary gear, and good luck to you if someone makes off with the supplies before you get there. In addition to adding a source of backup cytology equipment, I'm hoping that this new vendor makes cytology quicker and more accessible. Plus, science really needed a new vending machine, and I think the purple-white colour and stylized microscope are neat. Since the cytology lab is usually located very close to the slime pens, the addition of monkey cube boxes, xeno bags, and bio suits also helps support xenobiology projects. If the 14 cubes supplied at round start are insufficient (which they really shouldn't be) then they can supplement their supply with the boxes in the CytoPro. ## Changelog 🆑 add: A new vendor of cytology equipment, the CytoPro, is now available in your local science department! /🆑 |
||
|
|
1b19505cc1 |
Adds a copy of the famous 1995 musical "Space Station 13: The Musical" to contraband of the autodrobe (#85724)
## About The Pull Request Adds a copy of the famous 1995 musical "Space Station 13: The Musical" to contraband of the autodrobe It's a "skillchip" that forces you to sing while implanted and active (these messages were typed normally)    ## Why It's Good For The Game Makes it easier for entertainers to put on their own version of that historic musical ## Changelog 🆑 Melbert add: Adds a copy of the famous 1995 musical "Space Station 13: The Musical" to contraband of the autodrobe /🆑 |
||
|
|
4b4e9dff1d |
Wallening [IDB IGNORE] [MDB IGNORE] (#85491)
## What's going on here Kept you waitin huh! This pr resprites most all walls, windows and other "wall adjacent" things to a 3/4th perspective, technical term is "tall" walls (we are very smart). If you're trying to understand the technical details here, much of the "rendering tech" is built off the idea of split-vis. Basically, split a sprite up and render it on adjacent turfs, to prevent seeing "through" walls/doors, and to support seeing "edges" without actually seeing the atom itself. Most of the rest of it is pipelining done to accommodate how icons are cut. ## Path To Merge Almost* all sprites and code is done at this point. There are some things missing both on and off the bounty list, but that will be the case forever unless we force upstream (you guys) to stop adding new shit that doesn't fit the style. I plan on accepting and integrating prs to the current working repo <https://github.com/wall-nerds/wallening> up until a merge, to make contribution simpler and allow things like bounties to close out more easily This pr is quite bulky, even stripping away map changes it's maybe 7000 LOC (We have a few maps that were modified with UpdatePaths, I am also tentatively pring our test map, for future use.) This may inhibit proper review, although that is part of why I am willing to make it despite my perfectionism. Apologies in advance. Due to the perspective shift, a lot of mapping work is going to need to be done at some point. This comes in varying levels of priority. Many wallmounts are offset by hand, some are stuck in the wall/basically cannot be placed on the east/west/north edges of walls (posters), some just don't look great good in their current position. Tests are currently a minor bit yorked, I thought it was more important to get this up then to clean them fully. ## What does it look like?       ## Credits <details> <summary>Historical Mumbojumbo</summary> I am gonna do my best to document how this project came to be. I am operating off third party info and half remembered details, so if I'm wrong please yell at me. This project started sometime in late 2020, as a product of Rohesie trying to integrate and make easier work from Mojave Sun (A recently defunct fallout server) with /tg/. Mojave Sun (Apparently this was LITERALLY JUST infrared baron, that man is insane) was working with tall walls, IE walls that are 48px tall instead of the normal 32. This was I THINK done based off a technical prototype from aao7 proving A it was possible and B it didn't look like dogwater. This alongside oranges begging the art team for 3/4th walls (he meant TGMC style) lead to Rohesie bringing on contributors from general /tg/, including actionninja who would eventually take over as technical lead and Kryson, who would define /tg/'s version of the artstyle. Much of the formative aspects of this project are their work. The project was coming along pretty well for a few months, but ran into serious technical issues with `SIDE_MAP`, a byond map_format that allows for simpler 3/4th rendering. Due to BULLSHIT I will not detail here, the map format caused issues both at random with flickering and heavily with multiz. Concurrent with this, action stepped down after hacking out the rendering tech and starting work on an icon cutter that would allow for simpler icon generation, leaving ninjanomnom to manage the project. Some time passed, and the project stalled out due to the technical issues. Eventually I built a test case for the issues we had with `SIDE_MAP` and convinced lummox jr (byond's developer) to explain how the fuckin thing actually worked. This understanding made the project theoretically possible, but did not resolve the problems with multi-z. Resolving those required a full rework of how rendering like, worked. I (alongside tattle) took over project development from ninjanomnom at this time, and started work on Plane Cube (#69115), which when finished would finally make the project technically feasible. The time between then and now has been slow, progressive work. Many many artists and technical folks have dumped their time into this (as you can see from the credits). I will get into this more below but I would like to explicitly thank (in no particular order) tattle, draco, arcanemusic, actionninja, imaginos, viro and kylerace for keeping the project alive in this time period. I would have curled up into a ball and died if I had to do this all myself, your help has been indispensable. </details> <details> <summary>Detailed Credits</summary> Deep apologies if I have forgotten someone (I am sure I have, if someone is you please contact me). I've done my best to collate from the git log/my memory. Thanks to (In no particular order): Raccoff: Being funny to bully, creating threshold decals for airlocks aa07: (I think) inspiring the project ActionNinja: Laying the technical rock we build off, supporting me despite byond trying to kill him, building the icon cutter that makes this possible ArcaneMusic: Artistic and technical work spanning from the project's start to literally today, being a constant of motivation and positivity. I can't list all the stuff he's done Armhulen: Key rendering work (he's the reason thindows render right), an upbeat personality and a kick in the ass. Love you arm Azlan: Damn cool sprites, consistently Ben10Omintrix: You know ben showed up just to make basic mobs work, he's just fuckin like that man BigBimmer: A large amount of bounty work, alongside just like, throwing shit around. An absolute joy to work with Capsandi: Plaques, blastdoors, artistic work early on CapybaraExtravagante: Rendering work on wall frames Draco: SO MUCH STUFF. Much of the spritework done over the past two years is his, constantly engaged and will take on anything. I would have given up if not for you Floyd: Early rendering work, so early I don't even know the details. Enjoy freedom brother Imaginos16: A guiding hand through the middle years, handled much of the sprite review and contribution for a good bit there Iamgoofball: A dedication to detail and aesthetic goals, spends a lot of effort dissecting feedback with a focus on making things as good as they can be at the jump Infrared: Part of the impetus for the project, made all the xenomorph stuff in the MS style Jacquerel: A bunch of little upkeep/technical things, has done so much sprite gruntwork (WHY ARE THERE SO MANY PAINTING TYPES) Justice12354: Solved a bunch of error sprites (and worked out how to actually make prs to the project) Thanks bro! Kryson: Built the artstyle of the project, carrying on for years even when it was technically dying, only stopping to casually beat cancer. So much of our style and art is Kryson KylerAce: Handled annoying technical stuff for me, built window frame logic and fully got rid of grilles. LemonInTheDark: Rendering dirtywork, project management and just so much fucking time in dreammaker editing sprites Meyhazah: Table buttons, brass windows and alll the old style doors Mothblocks: Has provided constant support, gave me a deadline and motivation, erased worries about "it not being done", gave just SO much money to fill in the critical holes in sprites. Thanks moth MTandi: Contributed art despite his own blackjack and hookers club opening right down the road, I'm sorry I rolled over some of your sprites man I wish we had finished earlier Ninjanomnomnom: Consulted on gags issues, kept things alive through some truly shit times oranges: This is his fault Rohesie: Organized the effort, did much of the initial like, proof of concept stuff. I hope you're doin well whatever you're up to. san7890: Consulting on mapper UX/design problems, being my pet mapper Senefi: Offsetting items with a focus on detail/the more unused canidates SimplyLogan: Detailed map work and mapper feedback, personally very kind even if we end up talking past each other sometimes. Thank you! SpaceSmithers: Just like, random mapping support out of nowhere, and bein a straight up cool dude Tattle: A bunch of misc project management stuff, organizing the discord, managing the test server, dealing with all the mapping bullshit for me, being my backup in case of bus. I know you think you didn't do much but your presence and work have been a great help Thunder12345: Came out of nowhere and just so much of the random bounties, I'm kind of upset about how much we paid him Time-Green: I hooked him in by fucking with stuff he made and now he's just doin shit, thanks for helping out man! Twaticus: Provided artistic feedback and authority for my poor feeble coder brain, believed in the project for YEARS, was a constant source of ❤️ and affirmation unit0016: I have no god damn idea who she is, popped out of nowhere on the github one day and dealt with a bunch of annoying rendering/refactoring. Godspeed random furry thank you for all your effort and issue reports Viro: A bunch of detailed spriting moving towards 3/4ths, both on and off the wallening fork. If anyone believed this project would be done, it was viro Wallem: Artistic review and consultation, was my go-to guy for a long time when the other two spritetainers were inactive Waltermeldon: Cracked out a bunch of rendering work, he's the reason windows look like not dogwater. Alongside floyd and action spent a TON of time speaking to lummox/unearthing how byond rendering worked trying to make this thing happen ZephyrTFA: Added directional airlock helpers, dealt with a big fuckin bugaboo that was living in my brain like it was nothing. Love you brother And finally: The Mojave Sun development team. They provided a testbed for the idea, committed hundreds and hundreds of hours to the artstyle, and were a large reason we caught issues early enough to meaningfully deal with them. Your work is a testament to what longterm effort and deep detailed care produce. I hope you're doing well whatever you're up to. Go out with a bang! </details> ## Changelog 🆑 Raccoff, aa07, ActionNinja, ArcaneMusic, Armhulen, Azlan, Ben10Omintrix, BigBimmer, Capsandi, CapybaraExtravagante, Draco, Floyd, Iamgoofball, Imaginos16, Infrared, Jacquerel, Justice12354, Kryson, KylerAce, LemonInTheDark, Meyhazah, Mothblocks, MTandi, Ninjanomnom, oranges, Rohesie, Runi-c, san7890, Senefi, SimplyLogan, SomeAngryMiner, SpaceSmithers, Tattle, Thunder12345, Time-Green, Twaticus, unit0016, Viro, Waltermeldon, ZephyrTFA with thanks to the Mojave Sun team! add: Resprites or offsets almost all "tall" objects in the game to match a 3/4ths perspective add: Bunch of rendering mumbo jumbo to make said 3/4ths perspective work /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: san7890 <the@san7890.com> Co-authored-by: = <stewartareid@outlook.com> Co-authored-by: Capsandi <dansullycc@gmail.com> Co-authored-by: ArcaneMusic <hero12290@aol.com> Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> Co-authored-by: SomeAngryMiner <53237389+SomeAngryMiner@users.noreply.github.com> Co-authored-by: KylerAce <kylerlumpkin1@gmail.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com> Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: Runi-c <5150427+Runi-c@users.noreply.github.com> Co-authored-by: Roryl-c <5150427+Roryl-c@users.noreply.github.com> Co-authored-by: tattle <article.disaster@gmail.com> Co-authored-by: Senefi <20830349+Peliex@users.noreply.github.com> Co-authored-by: Justice <42555530+Justice12354@users.noreply.github.com> Co-authored-by: BluBerry016 <50649185+unit0016@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com> Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com> Co-authored-by: Rob Bailey <github@criticalaction.net> Co-authored-by: MMMiracles <lolaccount1@hotmail.com> |
||
|
|
908618beba |
Subtype vendor no longer requries an ID (#85383)
## About The Pull Request Closes #85378 ## Changelog 🆑 admin: Subtype vendor no longer requries an ID /🆑 |
||
|
|
4f18b05e37 |
{NO GBP} Restores some lost items in the autodrobe (#85168)
## About The Pull Request I added extra quantities of items in https://github.com/tgstation/tgstation/pull/85098 but I actually borked the original branch I was working on that pr with, so I just copypasted my changes over and...well, some mistakes were made and this particular category got the wrong items copypasted in. ## Why It's Good For The Game This is an accident on my part and I'm fixing it. ## Changelog 🆑 fix: Restores some of the items accidentally lost in the autodrobe. /🆑 |
||
|
|
b748c455df |
Donk Co Interstellar Trading Post 6016 (#83075)
## About The Pull Request Adds a new space ruin to the pool. It's the haunted trading post. It is a whiteship dock with a large (safe) common area. The back rooms contain loot and danger. Here are a few 'teaser' images. https://i.imgur.com/M1te9Ha.png https://i.imgur.com/SF3bJ62.png https://i.imgur.com/i9xeUFP.png https://i.imgur.com/UBwpJAM.png Notable treasures: Cash, Donk Co merch, Donk Co guns, Donk Co Donk Pockets, Donk Co vendors, Donk Co ID Cards, and the Donk Co Secret Recipe. Oh yeah the secret documents teach you how to make three prototype variants of Donk Pockets. There is no limit to the amount of times it can be read, so if you want to corner the market remember to lock up the documents. Or you can share them with your friends. **Now COMPLETE!**  ## Why It's Good For The Game This ruin is a multi-room dungeon with multiple solutions to each room. It has plenty of action from mobs, traps and hazards. Each room has some form of treasure or unique item in it. There's a boss at the end with great rewards for fighting it, including a cool gun (slightly worse variant of laser carbine). This ruin is also a whiteship dock and space base. The public area is entirely safe: stick to the well lit sector and don't trespass in the employees only areas and you won't be harmed. There is a variety of vendors to resupply at (including a brand new Donk Co snack vendor) but unlike most other space ruins you do have to pay. A whiteship can dock at this ruin if you have one, so you can bring groups of people to party or attack the dungeon together. ## Changelog 🆑 add: Adds the Haunted Trading Post space ruin. add: Adds 10+ unique items for the Haunted Trading Post add: Adds 5 dangerous mobs for the Haunted Trading Post add: Adds 4 new types of hazardous traps for the Haunted Trading Post. /🆑 --------- Co-authored-by: Afevis <ShizCalev@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
9a4386d31d |
deletes wires on atom/destroy() (#85154)
Closes #85132 Fixes #85110 |
||
|
|
cd6ba31a1b |
Adds Yukata's and Kimono's to the ClothesMate + accessory DLC (#84950)
## About The Pull Request Pretty much the title, adds a set of Yukatas and Kimonos to the ClothesMate for more clothing variety along with matching sandals and a hairpin   ## Why It's Good For The Game This PR really has the chefs/bartenders and chaplains in mind who want to do a more traditional vibe to their work spaces and or sushi belts with a bit more theming to it. We have bamboo flooring, furniture and walls so this is the natural evolution. Plus new interesting item helps cultivate the funny sandbox environment. ## Changelog 🆑 Thedragmeme image: Adds a series of traditional yukata's and kimono's image: Adds in black sandals and a traditional hairpin for the back of the hair /🆑 |
||
|
|
cdf238778d | Makes vending use DMIcon where possible, halving the time it takes to make the vending spritesheet (#85085) | ||
|
|
5f80128fa9 |
Corrects 200+ instances of "it's" where it should've been "its" instead (#85169)
## About The Pull Request it's - conjunction of "it" and "is" its - possessive form of "it" grammar is hard, and there were a lot of places where "it's" was used where it shouldn't have been. i went and painstakingly searched the entire repository for these instances, spending a few hours on it. i completely ignored the changelog archive, and i may have missed some outliers. most player-facing ones should be corrected, though ## Why It's Good For The Game proper grammar is good ## Changelog 🆑 spellcheck: Numerous instances of "it's" have been properly replaced with "its" /🆑 |
||
|
|
819eb60c22 |
Increases the quantity of available stocked items in the clothesvend and autodrobe (#85098)
## About The Pull Request Various items, both in the common, contraband and premium sections, in both the clothesvend and autodrobe have been increased in roundstart available stock. ## Why It's Good For The Game One of the best bits of roleplay that I sometimes see is when a group of people choose to wear matching outfits and run around as a gang. It's great, it's fun and it is exactly what the old Families game mode was trying to encourage, but organically rather than a game mode. I really enjoy seeing people make little gangs, but a core issue with this is that some items are just too scarce for a whole group to get access too. By increasing the baseline amount of available items, hopefully this enables more of this interesting social dynamic. (I was paid a copy of bad rats in order to ensure there are more copies of the jabroni outfit.) ## Changelog 🆑 qol: There is a larger stock of roundstart clothing availalbe in the clothing vendors. Now you can get your entire gang in matching outfits! /🆑 |
||
|
|
8a350dae9c | Holosignification (#85062) | ||
|
|
d63c8287c4 |
Adds the Bitrunner & Miner jumpsuits to the Cargodrobe, Organizes the Coroner Drobe (#85071)
## About The Pull Request Title. ## Why It's Good For The Game Easiest first: The Coroner Drobe is a bit of a mess, it starts with a surgery tool, then gloves, then a hat, then shoes. Which is weird. You don't see nut M&Ms next to Skittles then back to M&Ms. Bitrunning, ugly as I think the jumpsuit is, if someone got caught in a fire or body loss, or such and wanted it back, they couldn't. So now they can! Miner is similar. Weird they have the overalls (which should be their default don't @ me) but not their starting uniform. ## Changelog 🆑 add: Bitrunning and (spawn) Miner jumpsuits are now in their drobe. qol: The Coroner Drobe got sorted into less 'shove everything in' and more 'in a sane format'. /🆑 |
||
|
|
129c61b77e |
Experimentor Strange Object Tweaks (#84982)
## About The Pull Request De-costumed highlander skirts Fixed bioscramble function not working for strange objects unless dropped Fixed the disguiser cardboard ID not overlaying propery ## Why It's Good For The Game Guys I think I'm not good at testing (why doesnt range() work like that) Please stop using a COSTUME subtype for NOT COSTUMES. ## Changelog 🆑 fix: Fixed sometimes obtaining the nodrop highlander kilt with relics fix: Fixed bioscramble function not working for strange objects unless dropped fix: Fixed the disguiser cardboard ID not overlaying properly /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
a378fea3e0 |
Split security gloves from black gloves, gave sprites to those and tackling gloves, moves tackling to right-click (#84909)
## About The Pull Request Added security gloves, which have the fast cuff trait. Normal black gloves no longer have them. Adds sprites for security and tackling gloves, moves tackling to right-click! Also added blue security gloves for the blue sec PR. Whoever merges it first will, assumedly, add it then. Sprites here:  Moved tackling to right click. ## Why It's Good For The Game > Added security gloves, which have the fast cuff trait. Normal black gloves no longer have them. Didn't make any sense that normie gloves had these. It was an undocumented feature! Why can jannies fast cuff! > Adds sprites for security and tackling gloves, moves tackling to right-click! Really smells that these don't have sprites so I quickly slapped some up, edited from tackler and CE insuls. > Also added blue security gloves for the blue sec PR. Whoever merges it first will, assumedly, add it then. We can't have blue sec with red gloves!!! > Moved tackling to right click. It's so fuckin annoying to accidentally tackle when you're trying to throw something. It's the biggest thing that prevents me from putting on gloves. Now it'll rarely, if ever, be a problem: Pressing right click while thowing mode is on is unlikely to ever happen accidentally. ## Changelog 🆑 add: Added security gloves, which have the fast cuff trait. Normal black gloves no longer have them. imageadd: Adds sprites for security and tackling gloves, moves tackling to right-click! imageadd: Also added blue security gloves for the blue sec PR. Whoever merges it first will, assumedly, add it then. qol: Moved tackling to right click. /🆑 |
||
|
|
43e62163fe |
Adds a Contraband trait, and implements contraband as a mechanic to security bounties. (#84003)
## About The Pull Request This PR does a few things but centrally it's all centered around mechanically enforcing what items are and are-not considered contraband in-game. ### What does something being contraband MEAN? Contraband items are visually indistinguishable from non-contraband. If an item is Contraband, it can only be detected in two ways: * After being scanned by an N-Spect scanner, which is a standard item security item, assuming it still has a charge to do so. * Via a scanner gate, which can now be upgraded with an N-spect scanner to allow for it to scan a person and all their contents for contraband. ### What items ARE contraband? Contraband items are intended to be determined both logically and through other relevant examine text. However, here's the short list of items that are considered contraband, reserving the right to expand the list. <details> <summary>In hindsight it's kind of a long list.</summary> * Items that have "contraband" or "illegal" in the name or description. * Items that allow for the player to obtain other illegal items, that are NOT particularly stealthy. * This means that a syndicate uplink is NOT considered contraband, as they're typically hidden on your person as something else. * Stealth items under the syndicate uplink, the revolutionary flash, and some mapped in dangerous items that can come from both syndicate and company-aligned resources are not considered dangerous. * Items that are purchased from cargo after emagging or switching to extended cargo range. * Items purchased FROM syndicate uplinks, the wizard knowledge scroll, or other antagonist shops. * Cursed artifacts/tools magically produced by cultists or heretics. * Items purchased from the blackmarket. * Items purchased from the contraband section of vending machines. * Some drugs and overtly dangerous or criminal byproducts. </details> ### How does this interact with the round? Well, primarily, this is an aid for in-game enforcement of space law. Based on the length of the above list, we have a LONG, LONG list of items in-game that are technically considered, in one way or another, illegal to have on the station, and yet without either metaknowledge of what those items are, or how they're used, security officers lack some of the certainty of how to deal with these kinds of encounters. Additionally to the knowledge aspect of this trait, security officers may now receive a new civilian bounty to collect items that are considered contraband, also giving them an incentive to look for and confiscate contraband that's been found across the station while upholding space law. ### Other minor changes that I rolled into this Security has a bounty for 3 different rechargers, and considering access limitations, most security players aren't going to make this exchange, so I've lowered the required amount down to 1. Adjusted the N-spect scanner's description to match it's new functionality. The Civilian bounty TGUI now has an additional 1 point of padding to make it feel less cramped. https://github.com/tgstation/tgstation/assets/41715314/c3cd4752-b03a-4e0b-959e-1252fcc2369d **Updated as of 6/19/2024:** Additionally, some storage items will block the presence of contraband when going through a contraband aligned scanning gate. These items include the infiltrator modsuit core, storage implant, void cloak, the aptly named smuggler's satchel, and the chameleon kit's backpack. **Updated as of 6/23/2024:** N-spect scanner now has contextual screentips. **Updated as of 6/29/2024:** Scanner gates are now available in all lathes that have a feature specific to how scanner gates function. So, includes cargo (contraband), security (weapons), and medbay (diseases). ## Why It's Good For The Game Originally, this started out as a way to be able to provide more in-character and in-flavor bounties for security officers, because they suck! Most security bounties as they exist right now do the worst possible things from all respective bounties: * They detract away from a job's actual responsibilities as opposed to working with them. * They're best completed while sitting next to your lathe and running items back to the bounty pad. * They exist with such esoteric rarity of high quantity of items that it's miserable to fulfil. As a result, I started work on this as a framework to allow security officers to be further incentivized to collect contraband across the station, either as a result of the gamemode or just through routine patrols across the station. Implementing it as a learning tool for security as well just happened to work out as an additional bonus, and having a function in-game allowing newer or less experienced players to know if an item is considered dangerous or conspicuous also works as a particularly good way to provide information where a player may not know what they're up against. If nothing else, this might be interesting to try, and if not, I'll just snip out the QOL changes from it and we'll see how it goes. Going forward, I am a bit hesitant about the contraband scanner gate mode, and as such, will try working with the admin team to determine if that's a good feature to keep around for game health, while hoping to give it a chance in the fullness of time. ## Changelog 🆑 add: Items spawned via traitor uplinks or are known illegal contraband on the station can now be scanned and identified as such by the N-spect scanners in security. These only applies to overt traitor or antagonist items, and "stealth" items will not be seen as such. add: Scanner gates can now be upgraded by using an N-spect scanner on it to unlock "contraband scanning" mode. add: Security officers can now be offered a bounty to turn in pieces of contraband. add: Some stealthy storage items like storage implants, smuggler's satchels, void cloaks, the infiltrator modsuit, and the chameleon backpack will block the presence of contraband on your person when placed inside. qol: N-spect scanner contextual screentips. balance: Recharger security bounties ask for a quantity of 1, down from 3. qol: security, cargo, and medbay have access to scanner gate boards. /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
663f17c44f |
Added the subtype vendor and it and omnitools to runtime station (#84540)
## About The Pull Request Added the subtype vendor which lets admins and coders vend subtypes of a path Added the vendor and both varieties of omnitool to runtime station ## Why It's Good For The Game Better and faster testing environment. Runtimestation is horribly inefficient rn but this will help a bit ## Changelog 🆑 code: Added the subtype vendor which lets admins and coders vend subtypes of a path code: Added the vendor and both varieties of omnitool to runtime station /🆑 |
||
|
|
b6c84135c3 |
Refactors embedding to use datums instead of storing data in bespoke elements (#84599)
## About The Pull Request This refactors embedding elements to make them use singleton datums (similarly to armor) instead being bespoke and creating a new element every time armor values are supposed to be adjusted. Default values have been removed from defines due to now being declared in base class itself. Additionally fixes vending machines and tackling gloves setting generated shards (which they instantly embed into their victim) embed properties to null after running the embedding code, despite said shards having non-null embedding values by default, making them not be able to embed into anyone else, also potentially breaking the pain/jostling code if they somehow get updated. ## Why It's Good For The Game Current embedding system is an unnecessarily complicated mess as bespoke elements are hard to work with, and creating a new element every time you change values is hacky at best. This change should make it easier to read and work with. ## Changelog 🆑 fix: Fixed glass shards generated from falling vending machines or tackling windows not being able to embed into anyone. refactor: Refactored embedding code to use datums instead of bespoke elements and ugly associated lists. /🆑 |
||
|
|
35484728f1 |
Cigarettes and vapes are no longer subtypes of masks. (#82942)
## About The Pull Request Since non-clothing items can also be worn on several slots, there's no need for cigarettes/vapes to be subtypes of masks anymore, since that comes with a few oddities like #82870. ## Why It's Good For The Game This should fix #82870, with about no side-effect aside them no longer being edible by moths 🤢. |
||
|
|
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> |
||
|
|
4ac4375faf |
Adds pen clicking, changes most pen typechecks into writing implement checks (#84186)
## About The Pull Request Fixes #84170 Adds pen clicking and changes some of edagger and pendriver code to use it instead. Also replaces most pen typechecks to writing implement checks where it makes sense, so now you can rename things with everything you can write with (crayons)  Twisting pen caps (for traitor uplinks) has been moved to ctrl + click instead. |
||
|
|
4799324416 |
Mild QOL updates to vending machine-cargo interactions. (#83933)
## About The Pull Request This Pull makes a few minor improvements to the features I added with vendor cargo (#81582). Changes are as follows: * Vending machines, when restocked with a refill pack and while containing a number of credits, will play a cash register sound to alert you that there's a payout associated with the action. * The Vending Restock app now works on all modular computer platforms, as opposed to just laptops and tablets. * This is actually hilarious because I even made a screen icon for modular consoles, and it's just been unused ever since merge. * The "cargochat" cargo modular console now has the vendor refill app pre-installed. * Vending machines, when determining their missing inventory during the associated station trait, now adds from 1-5 credits per missing item, up from 0-1. The original number was far too low to feel like a strong incentive based on feedback I'd received, and while still lower than providing a flat percentage of the missing item specifically (we ran some numbers on this a few months back), it should at least incentivize players to keep the station better stocked during regular rounds. Also, the UI now shows a difference between if all vending machines are stocked or not.  ## Why It's Good For The Game Most of these are just interfacing and ease of use improvements, as having the app pre-installed in a place where players can actually make some use of it's contents should help to improve it's versatility with regards to the restocking app. Audio feedback is always good. In terms of the balance tweak on the stored value on vending machines, basically it's a way to better incentivize it as an option on the station and to better encourage players to do these kinds of minor upkeep tasks for the crew. ## Changelog 🆑 qol: Vending machines now give audio feedback when you restock a vending refill and get a payout. qol: The Restock tracker NTOS app for tracking vending machine contents now works on all consoles, and comes pre-installed on the cargochat cargo computers. balance: Vending machines now offer a bit more credits when missing contents at the start of a round after getting restocked. /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> |
||
|
|
9b0649c752 |
mothroaches in the wardrobe (#83695)
## About The Pull Request there is a very small chance vendrobes will have mothroaches inside. this will become apparent as the clothes you buy will come out slightly damaged and eaten. hitting the vendrobe with a weapon (or throwing the weapon at it) will cause the mothroaches to come out and scatter everywhere. mothroaches will now also seek out clothes to eat them ## Why It's Good For The Game gives more character and depth to mothroach AI ## Changelog 🆑 add: vendrobes may have mothroaches inside them add: mothroaches will now seek out clothes to eat them /🆑 |
||
|
|
e7e998dfc0 |
Removes a single crayon from the mortidrobe (#83808)
## About The Pull Request Removes one (1) white crayon from the coroner vendor. ## Why It's Good For The Game Fixes crayon economy. There's 2 entries of a white crayon in the Mortidrobe and the lower one seems to overwrite the higher one in the list . ## Changelog 🆑 fix: there is now one more crayon in the Mortidrobe. /🆑 |
||
|
|
8c64a298b1 |
buffs other cat2 chems to make them more appealing (+vendor calomel) (#83258)
## About The Pull Request _[even better than I was the last time, baby, ooh, ooh, ooh - I'm good](https://www.youtube.com/watch?v=ftSUchAdVTE)_ #83192 was a nerf to aiuri, libital, and seiver with a whole bunch of nasty side-effects including weaponization and accidental kills. Instead, what if we just made the other cat2 chems not suck as much? That's what this PR proposes to do. Helbital: always heals a minimum of 3 brute. Scales much more heavily with high damage when the person is in soft-crit or crit. You get to play rock-paper-scissors with the reaper ~~very rarely if you use it while conscious/not near death's door~~ *edit: in softcrit now too - which is fun - but should still be rare. *edit because I'm dumb and forgor: ~~also increased the O2 damage a touch. 3 regularly, 2 in softcrit, so it's got a limit on its mischief you can offset with other drugs. keep in mind if you're immediately thinking "budget lexorin" - it doesn't inflict losebreath, so you're constantly healing O2 damage on every breath as well.~~ undid this *edit: helbital now gives you 1-3 omen incidents after it ends metabolizing if you go through 10u or more in your system. Probital: also now heals 3 brute stock. Tradeoff is stamina damage but you can couple it with food for even better brute+burn heals. Lenturi: now heals up to 5 burn per tick pure and 3.75 stock. Stomach damage is negligible. Hercuri: 3 burn/tick on people with more than 50 burn damage, up to 4 pure, otherwise 2.25. Better than aiuri for significant burns. Syriniver: can now trigger its direct tox removal effect when injected on doses above .4u instead of .6. Lets you do a .5u drip which feels better on the eyes than .6. Removes up to 6 toxin damage per tick this way - nice augmentation if you don't mind the liver damage. Also heals 2 tox per tick instead of 1 on its own while metabolizing and making musiver. Still has its low OD. Musiver: the slow and safe byproduct of syriniver removes 1.5 tox per tick instead of 1. Calomel, the toxic chem-purger, is now available in two bottles in the chem vendor. It isn't really good for killing anyone outside of slimes (15u does about 65 damage ingested,) but it is a backup (with a downside) in the absence of pent that you can get a little bit of without having to bother/tide chem. *tirimol now does a base of 4.5 oxy healing, 6 pure. the tradeoff is it makes you randomly eepy, lose stamina, and knocks you out cold after it leaves if you take too much. don't take too much! **tirimol now also uses 1u oxygen as a catalyst, requires below 25% impurity to make Super Melatonin, and has a narrower pH range which starts at 5 pH for purity. ## Why It's Good For The Game one of the problems I wanted to address in the last PR was to do with the way chem stands in balance with other healing methods - finite sutures/meshes, surgery, etc. - and lessen the ability to go for miles off of the base chems with few-to-no drawbacks or necessary windows to use those other methods. the base chems I focused on are the main ones in public vendors and medikits: aiuri and libital; the third was one that just dominates in the tox healing world, seiver. doing this, and doing this through organ damage in particular, has a lot of problems. it slows gameplay and demands more interdependence. it penalizes people who cannot access that interdependence unduly (antags, miners, but really just anyone.) it makes the chems dangerous to use whether you intend to or not. so rather than deal with that problem, but recognizing that people generally don't give a shit to use the other cat2 chems for a reason (why would you?) I decided to instead try to make them more appealing - since they each have drawbacks already - to make the choice between them less about the damage #s and more about the desired mix of drawbacks - all of which you might have to account for in making a god-chem mix that you did not have to when libital/salicylic acid and aiuri/oxandrolone previously existed. hopefully now these other chems are good enough to be worth considering against those. ~~oxy meds basically never get used as-is so i left them alone.~~ edit: i buffed tirimol. convermol + helbital works great though. should give chemists and anyone interacting with our chem options more interesting choices while not penalizing people using what they do now. ## Changelog 🆑 balance: buffed healing values of helbital, probital, lenturi, hercuri, syriniver, musiver, and tirimol for their respective damage types. balance: Tirimol now uses oxygen as a catalyst rather than consuming it over time making it easier to make without babysitting. Tirimol now requires much more careful management of impurity in order to make Super Melatonin. add: medical chem vendors now sell bottles of calomel, a potent full-range chemical purger. /🆑 |
||
|
|
445ed08ce1 |
Adds Crutches to Medbay & Crafting (#83242)
## About The Pull Request Added crutches! Wooden ones can be made with wood. Medical ones can be bought from the medvendor. Crutches will reduce slowdown from missing a leg by 60%, and they will remove the limping from fractured bones. They're also a fairly decent bludgeon. However, they do nothing if both legs are cut off. Canes now also remove broken bone limping as well Changed the 'white cane' name to 'probing cane' to better reflect its function. Shuffled some wound and mob code around, added signals for limbless slowdown and limping. Crutches make you waddle. SPRITES BY XHORIAN!!!!!!!!!!!!!     ## Why It's Good For The Game > Added crutches! Wooden ones can be made with wood. Medical ones can be bought from the medvendor. > Crutches will reduce slowdown from missing a leg by 60%, and they will remove the limping from broken bones. They're also a fairly decent bludgeon. However, they do nothing if both legs are cut off. Currently there's no way to abate slowdown from a missing leg except getting on a vehicle, which I think is pretty lame. What if all the doctors are busy, missing, or dead? What if medbay is a hole? A crutch helps make up for the loss at the cost of a hand slot. > Changed the 'white cane' name to 'probing cane' to better reflect its function. 'White cane' was undescriptive. > Shuffled some wound and mob code around, added signals for limbless slowdown and limping. I dont know where to put the friggin signals ## Changelog 🆑 Carlarc, Xhorian add: Added crutches! Wooden ones can be made with wood. Medical ones can be bought from the medvendor. add: Crutches will reduce slowdown from missing a leg by 60%, and they will remove the limping from fractured bones. (canes do that now too) They're also a fairly decent bludgeon. However, they do nothing if both legs are cut off. /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
20ad30cbff |
Gives the Lawyer a pet goldfish (#83461)
## About The Pull Request The law office now has a pet, a goldfish named McGill. ## Why It's Good For The Game I've wanted to integrate aquariums and fishes in general into more roundstart, since it currently either requires being built and/or ordered, and thought giving it as a pet to the Law Office would be pretty cool since the law office doesn't have one and deserves one, and also just a silly reference. ## Changelog 🆑 add: The Law office now has a pet goldfish. /🆑 |
||
|
|
e9386c4b81 |
Fixes vendors displaying a broken character when dropping cigarette boxes onto the floor. (#83379)
## About The Pull Request Vendors dispensing cigarette boxes onto the floor would cause a broken character to appear at the beginning of the line. Looking into it, this seemed to be due to an attempt at capitalizing the item names, which interacts with the `\improper` text macro to cause this issue. Calling `format_text(...)` beforehand resolves this issue. Look in the linked issue for more details. ## Why It's Good For The Game Fixes #82618. ## Changelog 🆑 spellcheck: When a vendor tells you something dropped onto the floor, the line no longer starts with a broken character in the case of cigarette boxes. /🆑 |
||
|
|
53814a4be3 |
fixes Booze-O-Mat and ShadyCigs Deluxe selling to minors (#83332)
## About The Pull Request now they block the purchase and alert security like they used to  ## Why It's Good For The Game fixes #82653 ## Changelog 🆑 fix: underage drinkers beware: the Booze-O-Mat and ShadyCigs Deluxe check your age again /🆑 |
||
|
|
29cd9ee03b |
Machinery Destroy() side effect clean up (#82659)
## About The Pull Request I have combed over implementations of `Destroy()` for `obj/machinery`, and noticed quite a few was spawning items or playing sounds. **Slot machines**: Moved payout to on_deconstruction() **Windoors**: Break sound moved to on_deconstruction(). I have also slightly cleaned up Destroy(), the windoor calls air_update_turf directly, as that proc already retrieves the turf it is on. **Atmospheric pipe**: Releases air and deconstructs meter objects on_deconstruction(). **Portable atmospheric devices**: Drop hyper noblium crystal on on_destruction(). **Pump, Scrubbers**: Releases air on_deconstruction(). **PACMAN power generator**: Spawns dropped fuel on_deconstruction(). **Runic vendor**: Moved vanishing effects to on_deconstruction(). I did not change Destroy side effects in the following instances: - side effects are critical for the round (e.g. doomsday device, nuke, blackbox recorder dropping the tape, gulag item reclaimer [less critical but still]) - might spawn messages and noises, but moving them to on_deconstruct would put linked items into an unusable state if deleted directly (e.g. express order console, cyborg lockdown console, tram paired sensors) - would potentially delete mobs we don't want deleted (e.g. disposals, slime camera console) Out of 220 Destroy defines, I found only 8 side effects that could not be moved to other procs, so `machinery\Destroy()` has almost always been used properly! I really hope `structure` will be as well made. Other changes: - Stasis beds had a completely empty destroy, removed - Mass drivers had two destroy procs, merged ## Why It's Good For The Game The Destroy() proc should only contain reference clean ups, barring edge cases that would harm playability. ## Changelog Nothing player facing. |
||
|
|
35aa29397a |
Fix a few vendor restocking bugs (#82603)
## About The Pull Request So while working on fixing standard RPEDs working at all, I noticed they weren't displaying parts when used on a vendor. Looking into it, it seemed to be because the vendors just called `display_parts(user)` on its own: https://github.com/tgstation/tgstation/blob/1780fcef62e0413da65375a37f7c8030a0371419/code/modules/vending/_vending.dm#L1151 While other machinery would wrap it in a `to_chat(...)` call. https://github.com/tgstation/tgstation/blob/1780fcef62e0413da65375a37f7c8030a0371419/code/game/machinery/_machinery.dm#L971 So, we do that too! But then, during further testing, I noticed it wasn't actually restocking. Ever. Even though it's calling the `restock(...)` proc with the same inputs as you would do manually- oh. _oh._ https://github.com/tgstation/tgstation/blob/1780fcef62e0413da65375a37f7c8030a0371419/code/modules/vending/_vending.dm#L1152-L1154 It's checking the replacer for whether it's a refill canister, and not the contents of it. Has been doing this for about 8 months, apparently. No wonder it wasn't working. Great! This should work, right? One more round of testing! Aaaaand it doesn't actually pay out any credits when restocking this way. That's because it's *specifically* coded on `attackby(...)`. https://github.com/tgstation/tgstation/blob/1780fcef62e0413da65375a37f7c8030a0371419/code/modules/vending/_vending.dm#L707-L715 Alright, well, we move this to a new `post_restock(...)` proc, and call this whenever we're done doing restocks. ```dm /obj/machinery/vending/proc/post_restock(mob/living/user, restocked) if(!restocked) to_chat(user, span_warning("There's nothing to restock!")) return to_chat(user, span_notice("You loaded [restocked] items in [src][credits_contained > 0 ? ", and are rewarded [credits_contained] credits." : "."]")) var/datum/bank_account/cargo_account = SSeconomy.get_dep_account(ACCOUNT_CAR) cargo_account.adjust_money(round(credits_contained * 0.5), "Vending: Restock") var/obj/item/holochip/payday = new(src, credits_contained) try_put_in_hand(payday, user) ``` This is separate from the `restock(...)`, so we can call it when we're _done_ restocking and need a message, rather than sending one for each canister in our RPED. We can't just break the loop on the first fitting canister, because the items we need might be spread over multiple partially full canisters. Third round of testing anyone? Oh hey infinite money glitch. It seems like we never actually reset the `credits_contained` var after paying out with it. Soooo we just append this to our `post_restock(...)` proc, and be done with it. ```dm /obj/machinery/vending/proc/post_restock(mob/living/user, restocked) (...) try_put_in_hand(payday, user) credits_contained = 0 ``` At this point, I felt it better we also reorganized the vendor `exchange_parts(...)` to only have one `display_parts(...)` call and an early return if we can't exchange parts. Any further issues I could find I felt were outside of the scope, and better off atomized into a separate pr. ## Why It's Good For The Game Fixes RPEDs not working with vendors at all. Fixes RPEDs not displaying vendor parts. Fixes restocking vendors with an RPED not giving credits. Fixes vendors not resetting their contained credits when restocked. ## Changelog 🆑 fix: RPEDs can be used on vendors again. Note that only bluespace RPEDs can carry vendor refills as of writing. fix: RPEDs can display vendor parts again. fix: Restocking vendors gives credits whether done manually or by RPEDs. fix: Vendors reset their contained credits when restocked. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
eb1deb5346 |
Fixes standard RPEDs not working on machines (#82528)
## About The Pull Request Previously, `exchange_parts(...)` would cancel if both the `NO_DECONSTRUCTION` flag was set and you couldn't use your part replacer from a distance. https://github.com/tgstation/tgstation/blob/1583cf0cc968cd9f5da2398035feb8d70d58bcf2/code/game/machinery/_machinery.dm#L958-L959 Our recent removal of `NO_DECONSTRUCTION`, however, has left this to _only_ be the latter. https://github.com/tgstation/tgstation/blob/f0ed4ba4ce6b114509c10ee2f36ab0af6d7c81d2/code/game/machinery/_machinery.dm#L956-L957 Buuuuut this makes it unconditionally cancel for normal RPEDs, instead of only blocking them if `NO_DECONSTRUCTION` was set. As `NO_DECONSTRUCTION` is very much no longer relevant for this purpose, we simply remove the ranged RPED check altogether. This fixes our issue. ## Why It's Good For The Game Fixes #82525. ## Changelog 🆑 fix: Standard RPEDs work on machines again. /🆑 |
||
|
|
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 |
||
|
|
6dc40ca522 |
Standardizes object deconstruction throughout the codebase. (#82280)
## About The Pull Request When it comes to deconstructing an object we have `proc/deconstruct()` & `NO_DECONSTRUCT` Lets talk about the flag first. **Problems with `NO_DECONSTRUCTION`** I know what the comment says on what it should do https://github.com/tgstation/tgstation/blob/b5593bc6930cb60803214869a7b94c84e7baa02c/code/__DEFINES/obj_flags.dm#L18 But everywhere people have decided to give their own meaning/definition to this flag. Here are some examples on how this flag is used **1. Make the object just disappear(not drop anything) when deconstructed** This is by far the largest use case everywhere. If an object is deconstructed(either via tools or smashed apart) then if it has this flag it should not drop any of its contents but just disappear. You have seen this code pattern used everywhere https://github.com/tgstation/tgstation/blob/b5593bc6930cb60803214869a7b94c84e7baa02c/code/game/machinery/constructable_frame.dm#L26-L31 This behaviour is then leveraged by 2 important components. When an object is frozen, if it is deconstructed it should just disappear without leaving any traces behind https://github.com/tgstation/tgstation/blob/b5593bc6930cb60803214869a7b94c84e7baa02c/code/datums/elements/frozen.dm#L66-L67 By hologram objects. Obviously if you destroy an hologram nothing real should drop out https://github.com/tgstation/tgstation/blob/b5593bc6930cb60803214869a7b94c84e7baa02c/code/modules/holodeck/computer.dm#L301-L304 And there are other use cases as well but we won't go into them as they aren't as significant as these. **2. To stop an object from being wrenched ??** Yeah this one is weird. Like why? I understand in some instances (chair, table, rack etc) a wrench can be used to deconstruct a object so using the flag there to stop it from happening makes sense but why can't we even anchor an object just because of this flag? https://github.com/tgstation/tgstation/blob/b5593bc6930cb60803214869a7b94c84e7baa02c/code/game/objects/objs.dm#L368-L369 This is one of those instances where somebody just decided this behaviour for their own convenience just like the above example with no explanation as to why **3. To stop using tools to deconstruct the object** This was the original intent of the flag but it is enforced in few places far & between. One example is when deconstructing the a machine via crowbar. https://github.com/tgstation/tgstation/blob/b5593bc6930cb60803214869a7b94c84e7baa02c/code/game/machinery/_machinery.dm#L811 But machines are a special dual use case for this flag. Because if you look at its deconstruct proc the flag also prevents the machine from spawning a frame. https://github.com/tgstation/tgstation/blob/b5593bc6930cb60803214869a7b94c84e7baa02c/code/game/machinery/_machinery.dm#L820-L822 How can 1 flag serve 2 purposes within the same type? **4. Simply forget to check for this flag altogether** Yup if you find this flag not doing its job for some objects don't be surprised. People & sometimes even maintainers just forget that it even exists https://github.com/tgstation/tgstation/blob/b5593bc6930cb60803214869a7b94c84e7baa02c/code/game/objects/items/piggy_bank.dm#L66-L67 **Solution** These are the main examples i found. As you can see the same flag can perform 2 different functions within the same type and do something else in a different object & in some instances don't even work cause people just forget, etc. In order to bring consistency to this flag we need to move it to the atom level where it means the same thing everywhere. Where in the atom you may ask? .Well, I'll just post what MrMelbert said in https://github.com/tgstation/tgstation/pull/81656#discussion_r1503086862 > ...Ideally the .deconstruct call would handle NO_DECONSTRUCTION handling as it wants, Yup that's the ideal case now. This flag is checked directly in `deconstruct()`. Now like i said we want to give a universal definition to this flag and as you have seen from my examples it is used in 3 cases 1) Make an object disappear(doesn't dropping anything) when deconstructed 2) Stop it from being wrenched 3) Stop it from being deconstructed via tools We can't enforce points 2 & 3 inside `deconstruct()` which leaves us with only case 1) i.e. make the object disappear. And that's what i have done. Therefore after more than a decade or since this flag got introduced `NO_DECONSTRUCT` now has a new definition as of 2024 _"Make an object disappear(don't dropping anything) when deconstructed either via tools or forcefully smashed apart"_ Now i very well understand this will open up bugs in places where cases 2 & 3 are required but its worth it. In fact they could even be qol changes for all we know so who knows it might even benefit us but for now we need to give a universal definition to this flag to bring some consistency & that's what this PR does. **Problem with deconstruct()** This proc actually sends out a signal which is currently used by the material container but could be used by other objects later on. https://github.com/tgstation/tgstation/blob/3e84c3e6dad33c831ac259f52f2f023680e4899b/code/game/objects/obj_defense.dm#L160 So objects that override this proc should call its parent. Sadly that isn't the case in many instances like such https://github.com/tgstation/tgstation/blob/3e84c3e6dad33c831ac259f52f2f023680e4899b/code/game/machinery/deployable.dm#L20-L23 Instead of `return ..()` which would delete the object & send the signal it deletes the object directly thus the signal never gets sent. **Solution** Make this proc non overridable. For objects to add their own custom deconstruction behaviour a new proc has been introduced `atom_deconstruct()` Subtypes should now override this proc to handle object deconstruction. If objects have certain important stuff inside them (like mobs in machines for example) they want to drop by handling `NO_DECONSTRUCT` flag in a more carefully customized way they can do this by overriding `handle_deconstruct()` which by default delegates to `atom_deconstruct()` if the `NO_DECONSTRUCT` flag is absent. This proc will allow you to handle the flag in a more customized way if you ever need to. ## Why It's Good For The Game 1) I'm goanna post the full comment from MrMelbert https://github.com/tgstation/tgstation/pull/81656#discussion_r1503086862 > ...Ideally the .deconstruct call would handle NO_DECONSTRUCTION handling as it wants, but there's a shocking lack of consistency around NO_DECONSTRUCTION, where some objects treat it as "allow deconstruction, but make it drop no parts" and others simply "disallow deconstruction at all" This PR now makes `NO_DECONSTRUCTION` handled by `deconstruct()` & gives this flag the consistency it deserves. Not to mention as shown in case 4 there are objects that simply forgot to check for this flag. Now it applies for those missing instances as well. 2) No more copying pasting the most overused code pattern in this code base history `if(obj_flags & NO_DECONSTRUCTION)`. Just makes code cleaner everywhere 3) All objects now send the `COMSIG_OBJ_DECONSTRUCT` signal on object deconstruction which is now available for use should you need it ## Changelog 🆑 refactor: refactors how objects are deconstructed in relation to the `NO_DECONSTRUCTION` flag. Certain objects & machinery may display different tool interactions & behaviours when destroyed/deconstructed. Report these changes if you feel like they are bugs /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |