mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-16 04:34:21 +00:00
8b965c912765bd42b51bc845d54673f578bcbbdd
86 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
fa573fa539 |
Adds the self-surgery skillchip as a fairly rare black market item (#91606)
## About The Pull Request This PR adds a skillchip that allows the user to perform normal surgeries on themselves, albeit with a 1.5x speed penalty and a flat 33% increase to the probability of screwing up each step. You can find this skillchip occasionally on the black market. It is also contraband, and can be detected by n-spect scanners. ## Why It's Good For The Game Provides a risky alternate means of obtaining surgical intervention, such as if you either can't trust anybody else to do surgery on you or can't be trusted to have certain surgeries done on you. ## Changelog 🆑 add: The Centcom Department of Import Control has become aware of the use of highly-illegal and medically dubious self-surgery skillchips aboard company stations. We suspect they are being sold to the station through the black market. /🆑 |
||
|
|
aef17e5378 |
Mild acrobatics skillchip buff. Added item descriptions to other chips (#91439)
## About The Pull Request There is no way to repair the acrobatics skillchip, and the allowed usages only prevent it from taking damage, not the user. This PR ups that amount to 5 and makes it repair 1% of its integrity every 2 seconds. Also assigns a `desc` to other chips that were using the generic one, which is really not in the slightest helpful, especially if you're buying the skillchip from a vending machine. ## Why It's Good For The Game Better acrobatics skillchip (It's just flipping and spinning, there's little mechanical advantage to that), and more descriptive chips. ## Changelog 🆑 balance: Buffed the acrobatics skillchip (the one that disables spinning and flipping cooldowns). Gave new item descriptions to skillchips that were missing one. /🆑 |
||
|
|
5261efb67f |
Re-refactors batons / Refactors attack chain force modifiers (#90809)
## About The Pull Request Melee attack chain now has a list passed along with it, `attack_modifiers`, which you can stick force modifiers to change the resulting attack This is basically a soft implementation of damage packets until a more definitive pr, but one that only applies to item attack chain, and not unarmed attacks. This change was done to facilitate a baton refactor - batons no longer hack together their own attack chain, and are now integrated straight into the real attack chain. This refactor itself was done because batons don't send any attack signals, which has been annoying in the past (for swing combat). ## Changelog 🆑 Melbert refactor: Batons have been refactored again. Baton stuns now properly count as an attack, when before it was a nothing. Report any oddities, particularly in regards to harmbatonning vs normal batonning. refactor: The method of adjusting item damage mid-attack has been refactored - some affected items include the Nullblade and knives. Report any strange happenings with damage numbers. refactor: A few objects have been moved to the new interaction chain - records consoles, mawed crucible, alien weeds and space vines, hedges, restaurant portals, and some mobs - to name a few. fix: Spears only deal bonus damage against secure lockers, not all closet types (including crates) /🆑 |
||
|
|
339616ae78 |
You can now interact with held mobs beside wearing them (feat: "minor" melee attack chain cleanup) (#90080)
## About The Pull Request People can now pet held mothroaches and pugs if they want to, or use items on them, hopefully without causing many issues. After all, it only took about a couple dozen lines of code to make... ...Oh, did the 527 files changed or the 850~ lines added/removed perhaps catch your eye? Made you wonder if I accidentally pushed the wrong branch? or skewed something up big time? Well, nuh uh. I just happen to be fed up with the melee attack chain still using stringized params instead of an array/list. It was frankly revolting to see how I'd have had to otherwise call `list2params` for what I'm trying to accomplish here, and make this PR another tessera to the immense stupidity of our attack chain procs calling `params2list` over and over and over instead of just using that one call instance from `ClickOn` as an argument. It's 2025, honey, wake up! I also tried to replace some of those single letter vars/args but there are just way too many of them. ## Why It's Good For The Game Improving old code. And I want to be able to pet mobroaches while holding them too. ## Changelog 🆑 qol: You can now interact with held mobs in more ways beside wearing them. /🆑 |
||
|
|
52678d41b5 |
Everyone is kung fu fighting: Refactors martial arts / You can have multiple martial arts and swap between them (#89840)
## About The Pull Request Refactors martial arts off the mind. Don't worry the martial arts you learn still transfer with mindswap Instead, they are just tracked on a list on the mob, and they also independently track the datum that created them This fixes a lot of jank with martial arts, like say, having your krav maga gloves transfer across slime clones or something... But it also opens an opportunity: As we track all martial arts available, I added a verb (ic tab) that lets you swap between the ones you know  (Some don't let you swap like that one brain trauma) ## Why It's Good For The Game Aforementioned fixes a lot of jank Recently martial arts have just been up and disappearing and this was entirely spurred on by that bug Probably fixes #84710 (haven't checked) Probably fixes #89247 Probably fixes #89948 Probably fixes #90067 ## Changelog 🆑 Melbert refactor: Refactored martial arts, if you notice any oddities like managing to know two martial arts at once or having your powers disappear, report it! add: If you know multiple martial arts, such as krav maga from gloves and cqc from a book, you can now swap between them at will via a button in the IC tab! /🆑 --------- Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
4c2a76ede3 |
Fix a large number of typos (#89254)
Fixes a very large number of typos. A few of these fixes also extend to variable names, but only the really egregious ones like "concious". |
||
|
|
8196190aa1 |
Removes a a at at be be of of and and have have (#89155)
## About The Pull Request I just had to one-up https://github.com/tgstation/tgstation/pull/89127. ## Why It's Good For The Game Removes a a at at be be of of and and have have ## Changelog N/A |
||
|
|
ee96509686 |
fixing runtime errors when removing a brain with skillchips. (#88178)
## About The Pull Request The organs code changes bundled with the organ fishing PR have broken a few things, while unveiling a bunch of other problems that flew under the radar. This concern the first category actually. Anyway, I've also included a unit test to ensure this won't be an inssue in the future. ## Why It's Good For The Game Fixing some errors. |
||
|
|
13705da08d |
fixes a few issues with the chipped quirk (#87764)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> the text displayed when this quirk's gained would include the skillchip's typepath rather than its name. this fixes that. also fixes an issue with how the callback timer was being handled, which would lead to a runtime whenever the quirk was removed (since addtimer returns the id and not the callback itself). also fixes the scratch effect never actually working because an organ slot was being provided to `get_organ_by_type` rather than the type. also fixes the itchy effect not going away after the skillchip is removed (it gets added again if the skillchip is reimplanted). ## Why It's Good For The Game <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> fixes a few issues with the chipped quirk ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and its effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 fix: fixes the chipped quirk displaying the skill chip's typepath rather than its name fix: fixes chipped quirk's itchy effect not working fix: the chipped quirk's itchy effect now goes away when the skillchip is removed /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
778ed9f1ab |
The death or internal/external organ pathing (ft. fixed fox ears and recoloring bodypart overlays with dye sprays) (#87434)
## About The Pull Request This PR kills the abstract internal and external typepaths for organs, now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds. This PR also fixes fox ears (from #87162, no tail is added) and mushpeople's caps (they should be red, the screenshot is a tad outdated). And yes, you can now use a hair dye spray to recolor body parts like most tails, podpeople hair, mushpeople caps and cat ears. The process can be reversed by using the spray again. ## Why It's Good For The Game Time-Green put some effort during the last few months to untie functions and mechanics from external/internal organ pathing. Now, all that this pathing is good for are a few typechecks, easily replaceable with bitflags. Also podpeople and mushpeople need a way to recolor their "hair". This kind of applies to fish tails from the fish infusion, which colors can't be selected right now. The rest is just there if you ever want to recolor your lizard tail for some reason. Proof of testing btw (screenshot taken before mushpeople cap fix, right side has dyed body parts, moth can't be dyed, they're already fabolous):  ## Changelog 🆑 code: Removed internal/external pathing from organs in favor of a bit flag. Hopefully this shouldn't break anything about organs. fix: Fixed invisible fox ears. fix: Fixed mushpeople caps not being colored red by default. add: You can now dye most tails, podpeople hair, mushpeople caps etc. with a hair dye spray. /🆑 |
||
|
|
2b0485d0c8 |
Adds a flipping skillchip, the Chipped quirk, a chip connector implant, and a quirk to spawn with it. (#87082)
## About The Pull Request Added the FOSBURY skillchip, found in hacked toy vendors. This skillchip allows you to bypass the emote cooldown when flipping or spinning. However, if used too often, it will lower the chip's integrity. At first, this is harmless, emitting sparks only, but at a certain point, your head starts smoking, your brain begins short-circuiting, and once the chip has lost all integrity your head will explode in a shower of gore, giving you a cranial fissure! Added the Chipped quirk. It allows you to spawn with one skillchip. Of note here is that the only chips you can spawn with are the 'default' skillchips found in the toy vendor, you can NOT spawn in with the fosbury chip or with the musical one. Added the Chip Connector quirk. It contains a new implant, the chip connector, which allows you to install and take out skillchips at any time. Being EMPed will cause it to drop one random skillchip, and if you try using it while it's malfunctioning you'll take out a bit of your brain instead. It can also be made at the exosuit fabricator after basic research. Renamed the organ slots for brain implants and made the connector implant take the CNS slot. ## Why It's Good For The Game > Added the FOSBURY skillchip, found in hacked toy vendors. This skillchip allows you to bypass the emote cooldown when flipping or spinning. However, if used too often, it will lower the chip's integrity. At first, this is harmless, emitting sparks only, but at a certain point, your head starts smoking, your brain begins short-circuiting, and once the chip has lost all integrity your head will explode in a shower of gore, giving you a cranial fissure! During the time flipping was bugged to have no cooldown or delay, it was really funny seeing people flip at increasingly higher speeds. Many people miss it, and to be honest, so do I. But everything needs limits or it stops being funny and ends up being overdone. To this end this skillchip lets people relive those days of glory, until they go out in a beautiful explosion. The chip will last a very long while if well taken care of, and there are plenty of warning signs before it gets too risky to use, but we know what players are actually gonna do, and I am looking forward to it. > Added the Chipped quirk. It allows you to spawn with one skillchip. Of note here is that the only chips you can spawn with are the 'default' skillchips found in the toy vendor, you can NOT spawn in with the fosbury chip or with the musical one. Chips can be kind of neat sometimes, and I think always having one as part of your character can make for some fun things as the consistency of it makes it more likely to stick in your mind to do stuff with. > 'but can't you just go to the vendor at the start of every shift?' Sure. But we have loadouts. We have tagger, musician, and many other things that are 'roundstart bloat', and while that by itself is not an excuse, it's part of the design of character setup: Minimizing the time spent running around the station for things your character is supposed to have for their personality/roleplay/gimmick. They're paying the cost of quirk points for it, anyways. > Added the Chip Connector quirk. It contains a new implant, the chip connector, which allows you to install and take out skillchips at any time. Being EMPed will cause it to drop one random skillchip, and if you try using it while it's malfunctioning you'll take out a bit of your brain instead. It can also be made at the exosuit fabricator after basic research. I like the idea of having a gross usb drive on the back of your brain that you shove chips into and out of, especially if it drops pieces of your brain when malfunctioning. It also adds a little bit of extra relevance to skillchips now that you don't need to spend 15 (!!!) seconds inside a skillstation to add one. The cost is, as stated, quite literally losing your brain on EMP's and the moderately expensive sum of 4 points. > Renamed the organ slots for brain implants and made the connector implant take the CNS slot. It annoys me that there were organ slots for 'anti drop implant'. Now they're just slots for anything meant to connect to the cerebellum/central nervous system, making it less brute forcey and also adding the start of some fun exclusivity between brain implants. ## Changelog 🆑 add: Added the FOSBURY skillchip, found in hacked toy vendors. This skillchip allows you to bypass the emote cooldown when flipping or spinning. However, if used too often, it will lower the chip's integrity and cause malfunctions. add: Added the Chipped quirk. It allows you to spawn with one base skillchip. (not the one above) add: Added the Chip Connector quirk. It contains a new implant, the chip connector, which allows you to install and take out skillchips at any time. code: Renamed the organ slots for brain implants and made the connector implant take the CNS slot. --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
d29630b6a8 |
The fishing skillchip now grants an action that dispenses fishing tips. (#87075)
## About The Pull Request I've added an action granted by the fishing skillchip that dispenses a fishign tip from the fishing tips text file when activated, allowing players who have it to receive fishing-related tips and info on demand. Also backend stuff: this PR adds action types support to skillchips and moves all the simple generic skillchips still lingering in the skillchip.dm file into the generic_skillchips folder. Maybe it classifies as a small code improvement. ## Why It's Good For The Game I think the skillchip should both aid mobs without fishing skill (IC), and players with little experience with the feature (OOC) ## Changelog 🆑 add: The fishing skillchip now grants an action that dispenses fishing tips. /🆑 |
||
|
|
d4ac95a0e1 |
Nobody expects the span inquisition: replaces most <span>s with macros (#86798)
## About The Pull Request 123 changed files and multiple crashes after writing broken regex, I replaced most remains of direct spans with macros. This cleans up the code and makes it easier to work with in general, see justification for the original PR. I also fixed a bunch of broken and/or unclosed spans here too. I intentionally avoided replacing spans with multiple classes (in most cases) and spans in the middle of strings as it would impact readability (in my opinion at least) and could be done later if required. ## Why It's Good For The Game Cleaner code, actually using our macros, fixes borked HTML in some places. See original PR. ## Changelog Nothing player-facing |
||
|
|
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 |
||
|
|
9a9b428b61 |
Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
|
||
|
|
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. /🆑 |
||
|
|
b6d3e114da |
Adds taunting as a replacement for spin/flip in style meter and parrying (#85605)
## About The Pull Request Replaces spin/flip's uses in mining's style meter and bitrunner's projectile parrying and instead uses a new emote, taunt. It also does not play a sound effect for emoting, only when you successfully block a projectile. The parrying time from the flip was 1.4 seconds, with taunting it is now 0.9 seconds. Taunting also has a cooldown of 1.5 seconds between uses. https://www.youtube.com/watch?v=cJGuEqNhqUs https://github.com/user-attachments/assets/1c6bf8b2-6a0d-4ae2-9b5b-9c6e619e76d6 ## Why It's Good For The Game Spin and flip are emotes that get a little boring and repetitive, which makes its complete overuse quite annoying to see. Compared to spin, taunting is a quick turn, which stacked with the cooldown, makes it a shorter and un-overusable emote. It also has a cooldown of 1.5s between hits, so players now actually have a limit to how much they can parry/style. Currently if you have some way to regenerate stamina damage, you're pretty set to spam parry all projectiles at essentially no cost, since emotes cost nothing to use, removing the limit of having to actually time it. I wouldnt say falling over is necessarily a downside since anyone who uses these items for a while can quickly figure out exactly hwo to maximize parrying time. ## Changelog 🆑 add: Added Taunting, a faster and cooldowned version of the Spin emote. balance: Wizards blocking projectiles with Transparence and the bitrunner matrix skillchip now have a visible effect of deflecting the projectile. balance: The bitrunner skillchip now uses taunt instead of flip. balance: The style meter now uses taunting instead of flips and spins. /🆑 |
||
|
|
ce0a9c932e | Shrunk arrow from pointing at things. Command roles unaffected thanks to id trims (also new skillchip). (#85892) | ||
|
|
ff3b73dc82 |
Refactored the fish case and examining fish. New bluespace fish case to fit large fish inside a backpack. (#85271)
## About The Pull Request I've refactored the FISH_SAFE_STORAGE trait into an element, mainly because there were a few problems with how it worked: It wasn't stopping hunger from raising, ditto with the breeding wait, and it offered no healing whatsoever, which I find kind of a bummer. The new element will keep the fish from getting any hungrier or ready to reproduce and will heal them up to 65% of their base health. Also, I've added a new bluespace fish case as a techweb design, found along with other stuff in the advanced fishing node, though if you want I can move it to a bluespace node. This should make it possible to reasonably store and carry around larger fish. Examining a fish will no longer give out readings on weight and size if you haven't at least attempted fishing once (you can get to novice level in less than a minute). While examining a fish with apprentice level or higher will also give readings on the general conditions of the fish (is it starving? drowning? has it lost a considerable chunk of health?). The fishing skillchip also gives you these traits. I've also converted two fish variables into traits, because fish have waaaay too many variables. and gave some topdown shading to the pre-existing fishbox sprite. ## Why It's Good For The Game ## Changelog 🆑 add: Added a bluespace fish case to the advanced fishing node. balance: Fish cases will keep a fish from getting hungrier or ready to reproduce, while also healing it up to 65% health. balance: Examining a fish with zero fishing skill whatsoever won't give a reading on its size and weight. Conversely, examining one with the skill leveled two times will give general information on if it's starving, sick, hungry, or dead. /🆑 |
||
|
|
0b68257da1 |
Drunken Brawlening: Intoxication alters your unarmed effectiveness, bartenders are stronger fighters while drunk, deterministic stagger combo is back (your average assistant doesn't get knockdowns) (#85449)
## About The Pull Request ### Intoxication and Punching Being drunk juuuust enough allows you to land stronger punches and take punches a little more easily. However, being TOO drunk makes you WORSE at these things, and makes your unarmed accuracy an unarmed PENALTY. Don't get drunk if you can't hold your liquor. However, fighting drunk makes you really sick, so be careful as to not suddenly start vomiting everywhere. ### Drunken Brawler Bartenders are now drunken brawlers. They gain additional punching prowess if they're ever intoxicated, it does not matter how much nor do they ever suffer a penalty as a result of being TOO drunk. The more damage the bartender has taken, the stronger they hit back. (added by recommendation from WalterTruck) I have to mess the scaling on this more. ### Stagger Combo/Unarmed Combos The stagger combo is back, but significantly less stun heavy except on the extreme ends of unarmed upgrading. When your opponent has been sufficiently damaged enough, staggered and doesn't have any riot protection gear on, you can inflict additional status effects when you punch an opponent. The necessary value for this effect is: Half the target's Brute and Burn damage combined exceeds a value of: Limb accuracy + armor block (min. 40. max 200) While the thresholds are more deterministic, the effects are random. The better you are at punching, the better the effect, but the higher your targets armor, the weaker the effect. All effects are positive for the attacker and negative for the target. The dice roll is such; (a roll between -20 to 20) + limb accuracy - armor block | Stage/Value | Effect | | ------------- | ------------- | | Stage 1 (-Infinity to 0 | Staggered for 1 second | | Stage 2 (1 to 10) | Eye Blur for 5 seconds | | Stage 3 (11 to 30) | Eye Blur, Dizzying, Confusion for 5 seconds | | Stage 4 (31 to 40) | Blindness, Dizzying, Confusion for 5 seconds | | Stage 5 (41 to 45) | Knockdown for 4 seconds | | Stage 6 (46 to Infinity) | Knockdown for 4 seconds, 5 Brute with huge wound chance | Stages 5 and 6 are not possible to reach for roundstart humans who aren't intoxicated. It is almost impossible to get high effects against someone who is in full security gear as a roundstart human ### Minor Changes Any unarmed related thresholds or values that would use Stamina damage now use half of the total of Burn and Brute damage on the relevant individual. This affects punch accuracy, the threshold for getting a stagger combo, and the threshold for someone being more vulnerable to grabs. ## Why It's Good For The Game I just really wanted to add some drunken brawling/drunk fist style martial art stuff because I thought it would be fun, and bar brawls are where most people start fist fights. It's thematically entertaining. The bartender, by extension, should be pretty proficient at this kind of brawling. It also works out great when working with chefs to beat people up with their fists in their own, more unrefined style. The situation with the unarmed knockdown/stamina pr was kind of a mess, since at the time I was already going to take it out after discussing things with Walter and we were working out some alternatives together. But uh...well, it wasn't to be. Particularly, there was a lot of stuff in unarmed fighting that used Stamina damage that didn't actually get removed at all. So this cleans that up. I said I'd find a good alternative down the line to fill that gap, and this is it. For your run-of-the-mill fistfights, there are no random knockdowns. It's only when you are actually trying to brawl with a cybernetically enhanced human that this kind of thing starts to crop up. Or your opponent is a golem. Or you are both really drunk (and thus everyone starts vomiting because they're getting beaten up) The average assistant beating up another assistant is at best going to inflict some eye blurring and dizziness, assuming the fight even lasts that long. But this should be sufficient to create space to escape, or even meaningfully disable someone who might simply be invading your department. It is much less helpful against a more sufficiently geared opponent. The main reason for focusing on this is to give the average joe some kind of way for a heel turn in the event they're having to scuffle with departmental invaders or escape some determined opponent. It does not, however, allow them to manhandle a nuclear operative in an elite suit while our would-be hero is entirely butt-naked and drunk. Not that they shouldn't try, that's funny as hell. Thus, the effects chosen are more useful for escaping and befuddlement than necessarily stopping the fight outright. If you have improved arms, your arms are weapons and start to act like them, so you start seeing more significant results. It is also a nice thematic tie to unarmed's zany cousin; tackling, since the randomized effects are borrowing the logic form there, and it is cool to have those tied a bit closer. ## Changelog 🆑 add: Drunken fist fighting now has bonuses and penalties based on how intoxicated you are. Controlled liquor intake could make you a better brawler. Though you might vomit if you go too hard. add: Bartenders are now Drunken Brawlers. If they're drunk at all (no matter how drunk), they're stronger at fist fighting. add: Reintroduces the deterministic stagger combo. The effects of the combo are more varied, and based on attacker unarmed effectiveness and the defender's armor. Read the PR for more details. It's complicated. qol: Unarmed effects that would utilize stamina values now use a split of half brute, half burn to determine outcomes or for meeting thresholds. This affects; punch accuracy, stagger combo thresholds and grab vulnerability thresholds. /🆑 |
||
|
|
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> |
||
|
|
aba588abb5 |
Buffs the Matrix Flip skillchip (#84658)
## About The Pull Request Amps up the duration of the flip and the bullet dodging to 1.4 seconds (from 0.8). EDIT: I've added a check to prevent matrix-flipping into stamcrit (unless the emote wasn't intentional) and lowered the stam cost very slightly to allow for a fifth flip. ## Why It's Good For The Game I've tested the thing, with and without stun immunity (which prevents stamcrit from overusing it), hulk, rapid gloves, against the colossus and turrets at the tdome. It's pretty meh overrall, having to keep spamming the flip hotkey to keep it going, and the duration isn't all that useful since you can't easily foresee when something or someone's going to fire at you, or react in time. This is likely going to stay a gimmick, albeit a less crappier one. ## Changelog 🆑 balance: Buffed the matrix flip skillchip duration. Lowered the stamina cost very, very slightly. qol: You can now longer matrix-flip yourself into exhaustion, unless the emote is unintentional. /🆑 |
||
|
|
c46e3209a1 |
Adds the DET.ekt Skillchip, upgrading the detective's sense of taste. (#84469)
## About The Pull Request Gives the Detective a roundstart skillchip which allows them to unlock the hidden potential of their tastebuds. With this, they can identify chemicals by taste, and even identify bloodtypes in the same way. ## Why It's Good For The Game  I've been watching a lot of detective stuff and I think it's really funny how often they stick their fingers into random goo/blood and taste/smell it. The idea of a detective chugging a glass of unidentified liquid to identify that there's a lethal chem mix in there is equally funny to me. Imagine you're recovering from a mugging in the medbay and the detective comes in, takes a blood sample from you, and downs it in one go. ## Changelog 🆑 Wallem add: The detective now starts with the DET.ekt Skillchip, which allows them to identify chemicals and bloodtypes by taste. /🆑 |
||
|
|
b830ba11b7 |
Research Directors are now strong (the Athletics trait, that is). Suplexing a rod is an incredible workout. (#83269)
## About The Pull Request Grants the Research Director TRAIT_STRENGTH via their skill chip. This trait is only relevant to athletics-related activities. They still need to actually do the workout before they see any results. Fitness bros will overestimate the RD's power level due to their ability to suplex an immovable rod. Suplexing a rod grants an incredible amount of athletics skill, increased by how many people the rod has taken out. The frequency of this happening is bound to be pretty small, but it's a nice in-round reward for accomplishing the task (and maybe blowing up a department as a result), and also potentially a large number of casualties on top of that. ## Why It's Good For The Game The athletics changes didn't acknowledge that there is already someone on the station that is, for some reason, unnaturally stronger than everyone else. The Research Director. So now, fitness bros think they're naturally swole. Mind over matter, I guess? I just think it'd be funny if by suplexing the rod once, you gain incredible physical power and then need to take a nap because boy that sure was an explosive amount of strength you had to apply. Since this only happens with looping rods, I don't imagine it will disrupt fitness as a skill too much. ## Changelog 🆑 add: The Research Director is now actually strong. add: Fitness bros will determine the Research Director to be stronger than they actually are, without even working out. How does he do it? balance: Suplexing a rod grants a large burst of athletics experience. add: The more sentient casualties of the rod, the more experience suplexing that rod grants. Absorb the souls of the weak and feeble. /🆑 |
||
|
|
494f306fcc |
RD get robo knowledges (#82642)
## About The Pull Request Setting RD suplex skillchip as common chip. Adding Roboticist's skillchip into RD. Skillchip's categories are global defines now ## Why It's Good For The Game RD is literally the most skilled scientist and roboticist. CEO of all Silicons. Why he doesn't have robo wires trait? |
||
|
|
e64331f678 |
Clowns can now make balloon... toys. And also mallets and hats. (#82288)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request Clowns will now start with a box of 24 random long balloons and a skillchip in their noggin allowing them to create balloon animals by combining two of them of different colour together. Owners of the skillchip also gain access to crafting recepies of balloon mallets, vests, helmets and tophats, all created from long balloons. A crate of long balloons, with a box of balloons inside, can be bought at cargo, in case the clown runs out. I might edit this once I wake up, its 3 in the morning right now. Oh also, resprited how balloons look in inventory.  ## Why It's Good For The Game Balloon animals funny. Silly features are my favourite kind of features, and this one's open-ended too. Someone on the coder chat recommended someone would do it that one time, here it goes. ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 add: Added long balloon box to the clown's starting inventory, and a skill-chip of long lost honk-motherian knowledge to their brain. add: Added long balloons. Consequently, added balloon animals to make from such balloons. Also, balloon top hat, vest, helmet, and a mallet. Don't ask about the mallet. add: A long balloons box harvested fresh from the farms on the clown planet will be able to be shipped in a crate to the cargo department near you! add: As per requests; water balloons can now be printed at service lathe, and entertainment modsuit can now blow long balloons! image: Balloons will now have an unique sprite when in the inventory, compared when to on the ground. /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> --------- Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: san7890 <the@san7890.com> Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
55267e1334 |
minebot buff (#82001)
## About The Pull Request this pr buffs non-sentient minebots a bit to make them more helpful with the new arcmining changes. Minebots now have a better overall AI, they will maintain distance from enemies and shoot while running. they will also plant landmines while theyre running away from enemies. these landmines are carefully programmed by the bot not to trigger when any of its miner friends step on it. u no longer need to feed minebots an ore to get them to listen to you, as they now automatically listen to any miners around. minebots can now repair damaged node drones  they also have a new autodefend feature, which makes them automatically attack any mob that attacks its miner friends or the drone. They also have some new upgrades! First is the regenerative shield, this shield allows minebots to tank a limited amount of hits before breaking. minebots will then need to wait sometime before the shield re-activates. Second is the rocket launcher remote control, this allows players to direct minebots to fire anti-fauna missiles at their target https://github.com/tgstation/tgstation/assets/138636438/3ec3605e-8e11-4a31-acaa-1382bed98294 Also minebots are now highly customizable, you can rename them, change their colors, or program their AI through their new user interface  ## Why It's Good For The Game Improves minebot AI a bit, and makes it a more viable option for mining solo players ## Changelog 🆑 balance: minebots have been buffed and have recieved new upgrades /🆑 |
||
|
|
76fa5bcdad |
Skillchips are now copied to bitrunning avatars, plus a new chip to dodge bullets while flipping. (#81980)
## About The Pull Request Active skillchips are now copied on bitrunning avatars. To celebrate this, I've made a skillchip, which can be ordered through the bitrunning vendor, that lets you dodge projectiles for the duration of your flips plus 1/10 of a second (so 8/10 of a sec), at the cost of stamina (if you think 20 is a bit too low, tell me). I've also renamed the files containing the orderable bepis disks and bitrunning tech because they inconsistent with the names of their sections shown in the UI. ## Why It's Good For The Game I think (active) skillchips being copied to bitrunning avatars makes sense as after all they're both tech-y, brainy stuff. It's a bit of a shame that no one thought of doing that. ## Changelog 🆑 add: Active skillchips are now copied on bitrunning avatars. add: To celebrate it, a skillchip is now available from the bitrunning order console, which lets you dodge projectiles for the duration of your flips, at the cost of stamina. /🆑 |
||
|
|
84f4740fb9 |
Fishes love kronkaine + Examining fishing spots. (#81519)
## About The Pull Request Food items with kronkaine in it now count as great baits (this is the case of the "all-natural" bait from that overpriced cargo pack I'm converting into a less expensive goodie in another PR) Sufficiently high fishing skill (and the relative skillchip) allows you to list fishes in a fishing spot by examining it twice. ## Why It's Good For The Game Little fishing things off the top of my head before I move on bigger stuff. ## Changelog 🆑 add: Fishes love kronkaine. qol: Examining a fishing spot twice with sufficiently high fishing skill (or the skillchip) will get you a list of fishes that can be caught. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
aace5f46f4 |
You can do more things while floored (#81641)
## About The Pull Request While on the floor, you can: - Use the UIs of Atmos machinery (except thermomachine and bluespace gas vendor), Holopads, Crayons (spray cans too), radios, and Disposal bins - Close extinguisher cabinets with Right-Click - Click and drag yourself onto a photocopier to climb onto it. I also changed all instances of ``ui_status`` to have all the args it's being passed, I was messing with it a bit but it's gonna be for a later PR. ## Why It's Good For The Game It's an extra layer of harmless realism, also nice QoL for people who do not have functional legs and do not have a wheelchair. ## Changelog 🆑 qol: You can use atmos machines, holopads, crayons, spray cans, and disposal bins while floored. fix: You can close extinguisher cabinets while floored. fix: You can climb onto a photocopier from the floor. /🆑 |
||
|
|
e21dc5fec7 |
Kicks Martial Arts out of the attack chain (yippee), makes it use signals, plus a large clean up of existing martial arts (#81097)
## About The Pull Request - Kicks Martial Arts out of the attack chain. - All Martial Arts attacks are now handled via unarmed attack or grab signals - This means all martial arts are now technically on the living level, allowing any mob that can unarmed attack to martial arts. Sort of. YMMV. - All martial arts block checking is now handled by the arts themselves, meaning you can selectively decide for a martial arts strike to not be blocked. Maybe good for the future. - A comprehensive cleanup of all existing martial arts. Improving var names, code, adding some missing animation calls, etc. Fixes #74829 ## Why It's Good For The Game Untangles the mess that is martial arts, making it a lot easier to work with the attack chain and making it overall a ton more consistent. ## Changelog 🆑 Melbert refactor: Big martial arts refactor, they should now overall act a ton more consistent. Also technically any mob can do martial arts. Let me know if something is funky. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
54ab1e3936 |
Organ movement refactor *Un-nullspaces your organs* (#79687)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> closes #53931, #70916, #53931 ## About The Pull Request Organs were previously stored in nullspace. Now they are stored in their prospective bodyparts. Bodyparts are now stored in the mob. I've also had to refactor a lot of code concerning organ movement. Previously, organs were only moved into bodyparts once the bodyparts were removed. To accomodate this change, two major distinctions have been made: **Bodypart removal/insertion** Called only when an organ is taken out of a bodypart. Bodypart overlays, damage modifiers or other changes that should affect a bodypart itself goes here. **Mob insertion/removal** Called when an organ is removed from a mob. This can either be directly, by taking the organ out of a mob, or by removing the bodypart that contains the organ. This lets you add and remove organ effects safely without having to worry about the bodypart. Now that we controle the movement of bodyparts and organs, we can fuck around with them more. Summoning someones head or chest or heart will actually kill them now (and quite violently I must say (chest summoning gibs lol)). https://github.com/tgstation/tgstation/assets/7501474/5efc9dd3-cfd5-4ce4-b70f-d0d74894626e I´ve also added a unit test that violently tears apart and reconstructs a person in different ways to see if they get put toghether the right way This will definitely need a testmerge. I've done a lot of testing to make sure interactions work, but more niche stuff or my own incompetence can always slip through. ## Why It's Good For The Game <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> A lot of organ work is quite restricted. You can't C4 someones heart, you cant summon their organs and a lot of exceptions have to be made to keep organs in nullspace. This lets organs (and bodyparts) play more nicely with the rest of the game. This also makes it a lot easier to move away from extorgans since a lot of their unique movement code has been removed and or generalized. I don't like making PRs of this size (I'm so sorry reviewers), but I was in a unique position to replace the entire system in a way I couldn't have done conveniently in multiple PRs ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 refactor: Your organs are now inside your body. Please report any issues with bodypart and organ movement, including exotic organ, on github and scream at me fix: Cases of unexpected organ movement, such as teleporting bodyparts and organs with spells, now invokes a proper reaction (usually violent death) runtime: Fixes HARS runtiming on activation/deactivation fix: Fixes lag when species swapping /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> |
||
|
|
71a1fee2f1 |
Explodes device.dmi (#80025)
## About The Pull Request I woke up today and thought 'what would be easy thing to do today so I can say I've done something?'. Then I remembered I saw several gangtool usages the time I split radio up, and I could remedy those. 7 hours later, device.dmi is split in a folder of its own, and I've also given unique sprites to door remotes and landing desginators. ## Why It's Good For The Game The device.dmi was kind of a mess. ## Changelog 🆑 /🆑 |
||
|
|
af67bd7490 |
basic cleanbots refactor and new janitor skillchip (#80128)
## About The Pull Request this pr refacotrs cleanbots into basic bots. also adds a new skillchip for janitrs. this skillchip will allow janitors to communicate with cleanbots and order them around, like pointing at something and telling them to clean it. also now the cleanbot has an inbuilt mop which it will use to smack mice and cockroaches ## Why It's Good For The Game refactors cleanbots into basic bots and fixes them getting stuck sometimes while patrolling. also janitors being able to order them around can make them a bit more useful as tools for the janitor ## Changelog 🆑 refactor: cleanbots are refactored into basic bots. please report all bugs fix: fixes cleanbots getting stuck sometimes while patrolling add: janitors get a new skillchip which allow them to communicate with cleanbots /🆑 |
||
|
|
ab5b06fadc |
Adds INTJ skillchip (#79902)
## About The Pull Request Adds a new skillchip, it lets you taste food by examining it.  This has all of the effects of tasting food (various moodlets based on quality and food type) and can also trigger food allergies if you have them, however it does not consume the food nor give you any nutritional benefit. You can buy it from a vendor or sometimes it spawns in maintenance. ## Why It's Good For The Game The players are constantly clamouring for more additions to our most loved and useful feature, skill chips. <details>  </details> ## Changelog 🆑 add: A new skill chip can be found in maintenance or purchased from the vendor, allowing you to experience food in new and exciting ways. add: Abductors also have access to this incredible power, simply using their genius level brains. /🆑 |
||
|
|
ab8d86dc1d |
Paraplegics can use the skillchip machine. (#79860)
## About The Pull Request Fixes #64387. Gives the Skillsoft station `INTERACT_ATOM_IGNORE_MOBILITY`, making it possible to use while lying down. This means that it can actually be used by paraplegics, or anyone else without functional legs. ## Why It's Good For The Game As this particular machine can only be used from inside, and you cannot bring a wheelchair in, it is currently impossible for paraplegic characters to use skillchips at all. There is no good reason _why_ paraplegics or people without legs should be barred from this system, and it doesn't make much sense that this machine would need legs to function - so it no longer requires them. ## Changelog 🆑 fix: Skillsoft's skillchip stations are now ADA-compliant (Astronauts with Disabilities Act). Paraplegic characters can now implant themselves with skillchips, the same as anyone else. /🆑 |
||
|
|
f4535255c0 |
Nukes radio.dmi, adds inhands for somewhat relevant items. (#79792)
## About The Pull Request Third /icon/ cleansing splinter 1. Comments on commits say all it does pretty much.  ## Why It's Good For The Game Inhand for walkietalkie was requested in the project, gets rid of some usecases of old 'gangtool', headset splitoff requested by Fazzie. Inhands reflecting the items they are supposed to represent is nice. ## Changelog 🆑 image: Following now have unique item sprites: syndicate war declaration radio, curator and chief beacon's, chaplain beacon. image: Following now have unique inhand sprites: radio, export scanner, walkie-talkie, syndicate war declaration radio, curator and chief beacon's, chaplain beacon. /🆑 |
||
|
|
db8eca7bf3 |
The fishing portal generator expansion (plus skill-chip) (#78203)
## About The Pull Request This is a PR I worked on last month, but had to put on hold while dealing with some pressing issues with fishing feature, minigame and other stuff, and because I had to atomize out some of the stuff previously present here. I've expanded on the fishing portal generator to do something other than dispense guppies and goldfishes. It now has multiple settings, unlockable by performing scanning experiments for fish types, available from the get go, which also reward a meager amount of techweb points upon completion. The generator can now be built too. No longer it has to be ordered from cargo. It can also be emagged for the syndicate setting, tho right now it only dispenses donkfish and emulsijack, both otherwise impossible to get outside of... exodrone adventures. The advanced fishing rod now comes with an experiment handler component, specific to the fish scanning experiment, that automatically scans fished content. The node to get it now requires 2000 points and the first fish scanning exp to be unock. A new skillchip has been added, which adds a trait that changes the icon of the fish shown in the minigame UI, giving some clues on what the reward will be. The same trait is also gained by reaching the master (penultimate) level of the fishing skill. A new fish type has been added, with its own quirks. One of these quirks included temporarily switching movement direction of the bait. Currently, it can only be fished in the hyperspace and randomizer setting of the fishing portal. Screenshots:   ## Why It's Good For The Game The fishing portal generator is but a stale and underdeveloped prototype of the fishing feature right now, so much I was thinking of removing it at first. However, we also have a lot of fishes which are pretty much unfishable, so I came up with the idea of adding new portal settings that allow people to actually get them. As for the skillchip and trait, it's but an extra to both the vending machine in the library and the fishing skill itself, which has an overall humble impact on the minigame. ## Changelog 🆑 add: Expanded the fishing portal generator. It now comes with several portal options that can be unlocked by performing fish scanning experiments, which also award a modest amount of techweb points. balance: The fishing portal generator is now buildable and no longer orderable. The board can be printed from cargo, service and science lathes. balance: Advanced fishing tech is no longer a BEPIS design. It now requires the base fish scanning experiment and 2000 points to be unlocked. add: The advanced fishing rod now comes with an incorporated experiscanner specific for fish scanning. add: Added a new skillchip that may change the icon of the "fish" shown in the minigame UI to less generic ones. Reaching master level in fishing also does that. qol: The experiment handler UI no longer shows unselectable experiments. /🆑 |
||
|
|
2d34c7433a |
New Mech UI and equipment refactor (#77221)
 ## About The Pull Request Made a new UI and refactored some mech code in the process. Fixes #66048 Fixes #77051 Fixes #65958 ??? if it was broken Fixes #73051 - see details below Fixes other undocumented things, see changelog. ## Why It's Good For The Game The UI was too bulky and Mechs were too complex for no reason. Now they follow some general rules shared between other SS13 machinery, and there is less magic happening under the hood. ## Detailed Changes ### New Mech UI, Air Tank and Radio as separate modules Previous UI for comparison: <img alt="9SScrXAOjy" src="https://github.com/tgstation/tgstation/assets/3625094/904e3d07-e7d7-4d3a-a062-93e0e35b4b66"> Previously mechs came with radio pre-installed and air canisters magically pre-filled with air even when you build one in fab. Radio and Air Tanks are now both utility modules that are optional to install. Gas RCS thrusters still require Air Tank module to operate. This made the Mechs more barebones when built, giving you only the basic functionality. <img alt="5SDMlXTJxv" src="https://github.com/tgstation/tgstation/assets/3625094/b9364230-49ac-416b-aa70-e851fbf2050e"> To compensate this change, all mechs got two extra utility module slots. All other modules got new UI. And ore box now shows the list of ores inside. <img alt="SRX5FjvsHA" src="https://github.com/tgstation/tgstation/assets/3625094/cbe2e98d-1cd4-4667-8dae-2f9227b4b265"> ### Mounted Radio Works as a normal radio, but with subspace transmission. Available from the basic mech research node and can be printed in fab. ### Cabin Sealing To compensate for the lack of air tank by default, mechs with enclosed cabin (e.g. all except Ripley) got an ability to toggle cabin exposure to the outside air. Exiting the mech makes cabin air automatically exposed. When you seal the cabin, it traps some of the outside air inside the cabin and you can breathe with this air to perform a short space trips. But the oxygen will run out quickly and CO2 will build up. Sealing the cabin in space will make the cabin filled with vacuum, and it will stay there until you return to air environment and unseal the cabin, letting the breathable air to enter. There are temperature and pressure sensors that turn yellow/red when the corresponding warning thresholds are reached. You could also use personal internals in combination with cabin sealing for long space travels, so Air Tank is completely optional now and mostly needed when you need RCS thruster. ### RCS thrusters They are now available earlier in tech tree and consume reasonable amount of air (5 times more than human jetpacks), and they don't work without Mounted Air Tank, unless it's an Ion thruster variant. ### Mounted Air Tank Available from the basic mech research node and can be printed in fab. Built model comes empty, and syndicate mechs come with one full of oxygen. <img alt="GrFDrH5Hwe" src="https://github.com/tgstation/tgstation/assets/3625094/b677b705-bda0-4c8c-96c7-d32bf7bf9f28"> Can be switched to pressurize or not pressurize the cabin. Releases gas only when the cabin is sealed shut. Starts releasing automatically, but can be toggled to not release if you want to use it just as a portable canister. Cabin pressure can now be configured in the module UI instead of Maintenance UI. Can be attached to a pipe network when the mech is parked above a connection port. Comes with a pump that works similarly to the portable pump. It lets you vent the air tank contents outside, or suck air from the room to fill the air tank. Intended to provide an ability to fill the air tank without the need to bother with pipes. Also has gas sensors that display gas mix data of the tank and the cabin (when sealed). ### Stock part changes All mechs now require a servo motor and they reduce mech movement power consumption instead of scanning module. Scanning modules are optional for mech operation (still required to build) and the lack of one disables the following UI elements: - Display of mech integrity (you can still see the alerts or examine the mech to get rough idea) - Display of mech status on internal damage (and you can't repair what you can't diagnose) The rating of scanning module doesn't have any effect as of now. Cargo mech comes without it roundstart. <img alt="2vDtt99oqb" src="https://github.com/tgstation/tgstation/assets/3625094/147144ca-824e-4501-acf5-6ee104f309e7"> Capacitors now also reduce light power usage and raise the overclocking temperature thresholds (see below). ### Maintenance Maintenance UI removed, and its logic migrated to other places. Access modification now managed inside the mech, and anyone who can control the mech, can adjust the access in the same way as they can set DNA key. To open the maintenance panel you just need a screwdriver. It is instant when the mech is empty and it has a 5 second delay when there is an occupant to avoid in-combat hacking and part removal. It will alert the occupant that someone is trying to tinker with their mech.  Once the panel is open, you can see the part ratings:  With open panel you can hack the mech wires (roboticists can now see them): <img alt="mj205G2qDa" src="https://github.com/tgstation/tgstation/assets/3625094/44cea0d1-44b4-4b50-b1d3-a97c0056bab3"> There are wires for: - Enabling/Disabling ID and DNA locks - Toggling mech lights - Toggling mech circuits malfunction (battery drain, sparks) - Toggling mech equipment malfunction (to repair after EMP or cause EMP-like effect, disarming mech) - 3 dud wires that do nothing The hacker may be shocked if the mech power cell allows. When the panel is open and the user has access to the mech, they can remove parts with a crowbar: <img alt="jR40gyTWtJ" src="https://github.com/tgstation/tgstation/assets/3625094/b573f5b9-b8ea-412e-b3e0-c872e01e0c23"> Hitting the mech with an ID from outside now toggles the ID Lock on/off if the ID has sufficient access. ### Power consumption and overclocking Rebalanced mech power consumption. T4 parts were not working in Syndicate Mechs, as their effect was not calculated until you manipulate parts manually. Constructed mechs with t1 parts even had their energy drain reduced with upgrade to t1. Now all mechs apply their base step power usage correctly don't ignore the stock parts. Servo tier now reduces base power consumption by 0% at t1, 50% at t2, 33% at t3 and 25% at t4 Capacitor tier now reduces base power consumption of mele attacks, phasing and light by the same amounts. Gygax leg actuators overload replaced with mech overclocking. Any mech can be overclocked by hacking wires, but only Gygax has a button for toggling it from the Cabin. Now there is an overclock coefficient. 1.5 for Gygax and other mechs, 2 for Dark Gygax. When overclocked, mechs moves N times faster, but consumes N times more power.  While overclocked, mech heats up every second, regardless of movement, and starts receiving internal and integrity damage after a certain temperature threshold. The chance is 0% at the threshold, and 100% at thresholds * 2. The roll happens every tick. Capacitor upgrades this threshold, letting you overclock safely for longer periods.  When you stop overclock, the temperature goes back down. ### Other changes and fixes Concealed weapon bay now doesn't show up when you examine the mech, so it's actually concealed now. New radio module can properly change its frequency, as it didn't work for previous radio. Launcher type weapons were ignoring cooldowns and power usage, so you could spam explosive banana peals, while they should have a 2 second cooldown: <img alt="q5GjUsHwGr" src="https://github.com/tgstation/tgstation/assets/3625094/d102725d-e9e1-4588-9d6c-b9e38b7a6535"> Now this is fixed and all launcher type weapons properly use power and have their cooldowns working. And now they have the kickback effect working (when it pushes you in the opposite direction in zero gravity on throw). Thermoregulator now heats/cools considering heat capacity instead of adding/reducing flat 10 degrees. So you can heat up cabin air quicker if the pressure is low. There were some other sloppy mistakes in mech code, like some functions returning too early, blocking other functionality unintentionally. Fixed these and made some other minor changes and improvements. ## Changelog 🆑 refactor: Refactored Mech UI refactor: Refactored mech radio into a utility module, adding extra slot to all mechs refactor: Refactored mech air tank into a utility module with an air pump, adding extra slot to all mechs refactor: Refactored mech cabin air - there is now a button to seal or unseal cabin to make it airtight or exchanging gases with the environment refactor: Removed mech maintenance UI Access is set in mech UI, and parts are ejected with a crowbar add: Mech now has wires and can be hacked qol: Roboticists now can see MOD suit and mech wires add: Mechs now require servo motor stock part and it affects movement power usage instead of scanning module add: Scanning module absence doesnt block mech movement and hides some UI data instead. Big Bess starts without one. qol: Hitting mech with ID card now toggles ID lock on/off if the card has required access fix: Fixed concealed weapon bay not being concealed on mech examine fix: Fixed mech radio not changing frequency fix: Fixed mech launcher type weapons ignoring specified cooldown fix: Fixed mech launcher type weapons not using specified power amount fix: Fixed mech temperature regulator ignoring gas heat capacity fix: Fixed mech stopping processing other things while not heating internal air fix: Fixed mech being able to leave transit tube in transit fix: Fixed mech internal damage flags working incorrectly fix: Fixed Gygax leg overloading being useless fix: Fixed mechs ignoring their stock parts on creation. Syndicate mechs now stronger against lasers and consume less energy on move. Upgrading from tier 1 to tier 2 doesn't make mech consume MORE energy than before the upgrade. balance: Rebalanced mech energy drain with part upgrades. Base energy drain reduced by 50%, 33%, 25% with upgrades and applies to movement (Servo rating), phasing, punching, light (Capacitor rating). balance: Hydraulic clamp now can force open airlocks balance: Made mech RCS pack consume reasonable amount of gas code: Fixed some other minor bugs and made some minor changes in the mech code /🆑 --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: Sealed101 <cool.bullseye@yandex.ru> Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
c92d338dad |
Refactors chameleon actions, Adds chameleon outfit saving, Adds chameleon scanner (#77140)
## About The Pull Request - Refactors chameleon actions a good bit, reducing a lot of the boilerplate copied around chameleon items. - I noticed that the EMP comsig completely disregarded any EMP protection the mob might have. I split the comsig into `COMSIG_ATOM_PRE_EMP_ACT` and `COMSIG_ATOM_EMP_ACT` - the former now used to aggregate protection flags and the latter to actually do EMP stuff. - As a result of above, this fixes a few oversights in which things using `COMSIG_ATOM_EMP_ACT` disregarded EMP protection. - Adds Chameleon Outfit saving. - RMB clicking the "Select Chameleon Outfit" will now save your current chameleon setup as a custom outfit. They become selectable as any other outfit afterwards. - Because it might be *too* easy to bamboozle people / might make people think you're a ling, I added a slight "animation" to swapping whole chameleon outfits. It's less than a second long. - Adds the Chameleon Scanner. - The chameleon scanner is, surprise, a chameleon item that can disguise as small gadgets or items (toys, cameras, analyzers, etc). - On LMB, the chameleon scanner will copy the outfit of the target to a custom outfit slot, allowing you to mimic them entirely without going through all the menus. - RMB does the same, but instantly equips the disguise you select in addition to saving it to a slot. ## Why It's Good For The Game Right now traitor stealth is very capable but cumbersome, which makes it much less appealing than just running and gunning. One big problem with it is that the chameleon kit is rather time consuming to use. You have to sort through hundreds of items for each of your chameleon items to find exactly the one you need. These items seek to amend that time gate, allowing for much quicker swapping between disguises or picking up the disguise of someone you kill to replace them like a pseudo-changeling. ## Changelog 🆑 Melbert refactor: Refactored chameleon actions a fair bit add: Adds outfit saving to chameleon clothes. RMB the "chameleon outfit" action to save your current chameleon setup for quick swapping. add: Swapping between chameleon outfits now has a slight "animation" associated, to distinguish traitors from lings slightly. add: Adds a new chameleon item, the "Chameleon Scanner". Use it on other crewmembers to stealthily save their current outfit as a custom outfit to use later. And of course, it's chameleon too. fix: Ethereals, the DNA lock mod, GPSs, and storage items now respect EMP protection /🆑 |
||
|
|
fb10121022 |
Icons folder cleaning wave two (#76788)
## About The Pull Request Further continous organizing and cleaning the Icons folder. There are still some minior nitpicks left to do, but I reached my daily sanity expenses limit again, and the faster these get in the less issues for both me and others later. Also cleans some mess I caused by my blindness last PR. ## Why It's Good For The Game Saner spriters = better sprites |
||
|
|
9ae549e096 |
Resprites Skillchips (#75183)
## About The Pull Request Replaces the skillchip sprite with a new, smaller one that looks more like a chip rather than an 8-inch floppy. (With a fancy housing because consumer electronics can't just be bare circuit boards that's not stylish.)  ## Why It's Good For The Game The old one looks like this and takes up most of a tile, need I say more?  ## Changelog 🆑 image: Skillchips have been resprited to be smaller and more chip-like /🆑 |
||
|
|
ccef887efe |
Lints Against Unmanaged Local Defines (#74333)
# MAINTAINER - USE THE BUTTON THAT SAYS "MERGE MASTER" THEN SET THE PR TO AUTO-MERGE! IT'S MUCH EASIER FOR ME TO FIX THINGS BEFORE THEY SKEW RATHER THAN AFTER THE FACT. ## About The Pull Request Hey there, This took a while to do, but here's the gist: Python file now regexes every file in `/code` except for those that have some valid reason to be tacking on more global defines. Some of those reasons are simply just that I don't have the time right now (doing what you see in this PR took a few hours) to refactor and parse what should belong and what should be thrown out. For the time being though, this PR will at least _halt_ people making the mistake of not `#undef`ing any files they `#define` "locally", or within the scope of a file. Most people forget to do this and this leads to a lot of mess later on due to how many variables can be unmanaged on the global level. I've made this mistake, you've made this mistake, it's a common thing. Let's automatically check for it so it can be fixed no-stress. Scenarios this PR corrects: * Forgetting to undef a define but undeffing others. * Not undeffing any defines in your file. * Earmarking a define as a "file local" define, but not defining it. * Having a define be a "file local" define, but having it be used elsewhere. * Having a "local" define not even be in the file that it only shows up in. * Having a completely unused define* (* I kept some of these because they seemed important... Others were junked.) ## Why It's Good For The Game If you wanna use it across multiple files, no reason to not make it a global define (maybe there's a few reasons but let's assume that this is the 95% case). Let me know if you don't like how I re-arranged some of the defines and how you'd rather see it be implemented, and I'd be happy to do that. This was mostly just "eh does it need it or not" sorta stuff. I used a pretty cool way to detect if we should use the standardized GitHub "error" output, you can see the results of that here https://github.com/san7890/bruhstation/actions/runs/4549766579/jobs/8022186846#step:7:792 ## Changelog Nothing that really concerns players. (I fixed up all this stuff using vscode, no regexes beyond what you see in the python script. sorry downstreams) |
||
|
|
ecbcef778d |
Refactors Regenerate Organs, and a few organ helpers (#74219)
## About The Pull Request Refactors regenerate organs to be slightly more intelligent in handling organ changes and replacements. Noteably: - We don't remove organs that were modified by the owner; such as changing out your heart for a cybernetic - We early break out of the for loop if they aren't supposed to have an organ there and remove it - We check for the organ already being correct, and just healing it and continuing if it is Also changes the names of some of the organ helpers into snake_case ### Mapping March Ckey to receive rewards: N/A ## Why It's Good For The Game ## Changelog --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
fcdbb85fc9 |
Fixes machines not releasing their contents when opened (such as mobs), when they otherwise should. (#74215)
## About The Pull Request Broken by #74163 Various child procs of `/obj/machinery/proc/open_machine(drop = TRUE, density_to_set = FALSE)` didn't have the same params as the parent proc. This leads to the wrong arg being passed to the parent's `drop = TRUE` param during the parent proc call. In this case, 0 (FALSE). Leading to machines that never dropped their contents when opened. This is a problem when a lot of the machines I've fixed contain players, necessitating admin intervention to free them. ## Why It's Good For The Game Feex. ## Changelog 🆑 fix: DNA Scanners, Sleepers, Abductor Experimentors, Skill Stations and Mod Installers now appropriately release their contents when opened, fixing an issue where they could permanently absorb players and items until admins intervened. /🆑 |
||
|
|
0e1cedd354 |
Machines can now be pried open multiple times and maintain their initial densities (#74163)
## About The Pull Request These changes fix how machines are pried open with crowbars. Currently, most machines can be pried open, but many of them have no method for being closed again. This means they can be pried once, and then never again (as their internal logic has them stuck in an "open" state). Additionally, the densities of these machines is also inconsistent, as density is tied to the procs for opening/closing machines (open = non-dense, closed = dense). Thus, these new changes allow desired densities to be passed to `open_machine()` and `close_machine()`, as well as `default_pry_open()`, meaning that atypical machine densities can be maintained (e.g. machines that should remain dense when open, or non-dense when closed). I've also added a `close_after_pry` boolean parameter to the `default_pry_open()` proc, which determines whether to immediately close a machine after opening it. This is useful for machines that don't really have a use case for remaining open, often lacking a sprite to represent this state as well. * Note: Opening and immediately closing machines with this boolean will still drop their contents onto the floor, but will now immediately "close" in their logic, allowing for further prying attempts in the future. It's worth noting that this implements default density values for these procs, which match the existing behavior for machines, so as to (hopefully) not disrupt existing or expected machine behavior. Two caveats to these changes currently exist: 1. On machines that immediately close after prying, the prying action can now be spammed to the chat with repeated clicking. I'm uncertain if this needs some sort of spam protection or if it's fine as is. 2. I've only been able to manually test this code. I'd love to write unit tests for it, as it affects a lot of different machines, but don't know where to begin with DM Unit Testing (or which files would be good examples to reference in the code base). * Note: I did manually test each and every machine that calls `default_pry_open()` and they all seem to be working correctly. (Except for `obj/machinery/plumbing/sender`, but that doesn't seem to need prying, as it has no contents to drop, only reagents.) As always, let me know if any improvements/changes should be made. This closes #26833. ## Why It's Good For The Game These changes allow crowbar prying to correctly occur multiple times on any machine, which is intended behavior. It prevents player confusion that could occur when a machine couldn't be pried open a second time during a shift, even though it had previously been pried before, forcing players to question themselves. (Are they missing something? Did they perform the action a different way last time? Is the machine actually still powered on instead of off? Etc.) These changes also maintain the correct density for machines after prying, preventing scenarios where a machine might behave differently once it had been pried open. (An example of this was being able to walk through a smartfridge after prying it open.) Additionally, players are no longer required to know/use workarounds (such as machine disassembly) to retrieve a powered-off machine's contents. Overall, these changes improve consistency around machines, creating more scenarios where they behave as players would expect. ## Changelog 🆑 fix: machines can now be pried open more than once. fix: machines now have the correct density when pried open. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
bf6f81a9b5 |
Implements AddTraits and RemoveTraits procs for adding/removing multiple traits + swag unit test (#74037)
On the tin, doing it like this means we can reduce our overall line fingerprint whenever we have to add two or more traits from the same source on the same target. Especially helps when we get to the 4+ range of traits, a breath of fresh air even. Doesn't mean we have to do for loops, as that's already handled within the define as well. I replaced some of the checks with `length()` checks, let me know if I should switch it over to something else (maybe `islist()`)? We stack_trace whenever we're not passed a list reference on purpose, and sometimes var/lists are null by default (or just empty, making this redundant). ## Why It's Good For The Game I commonly feel the urge to write "use `AddTraits()`" or something in reviews, then am sad when I remember it doesn't exist. I will no longer be sad. Can ensure a lot more trait safety as well by using static lists- when both ADD_TRAIT_LIST and REMOVE_TRAIT_LIST re-use the same list, you are confident (from a static point of view) that everything that you want to be adding/removing works. I may have missed a few things where this could be used, but both macros implemented in this PR still use the same framework that was being used in the last four years- so stuff won't break if left untouched. Just a nifty new tool for developers. also fixed up some code in the area, numerous bugs were found and exploded |
||
|
|
9dab26371c |
Throws a bunch of parenthesis around to ensure dear Aunt Sally is always properly excused. (#71281)
Similar vein to #37116 This is supposed to be standard, yet here we are. SHOULDN'T change anything, but there's likely something out there that's bound to behave different because of it. These were done manually, regex to find things that MIGHT need to be corrected; `^#define.+\+((?!\)).)*$` `^#define.+-((?!\)).)*$` `^#define.+\*((?!\)).)*$` `^#define.+\/((?!\)).)*$` (yeah that's a lot of stuff.) `^#define.+%((?!\)).)*$` `^#define.+SECONDS((?!\)).)*$` `^#define.+MINUTES((?!\)).)*$` |
||
|
|
4d6a8bc537 |
515 Compatibility (#71161)
Makes the code compatible with 515.1594+
Few simple changes and one very painful one.
Let's start with the easy:
* puts call behind `LIBCALL` define, so call_ext is properly used in 515
* Adds `NAMEOF_STATIC(_,X)` macro for nameof in static definitions since
src is now invalid there.
* Fixes tgui and devserver. From 515 onward the tmp3333{procid} cache
directory is not appened to base path in browser controls so we don't
check for it in base js and put the dev server dummy window file in
actual directory not the byond root.
* Renames the few things that had /final/ in typepath to ultimate since
final is a new keyword
And the very painful change:
`.proc/whatever` format is no longer valid, so we're replacing it with
new nameof() function. All this wrapped in three new macros.
`PROC_REF(X)`,`TYPE_PROC_REF(TYPE,X)`,`GLOBAL_PROC_REF(X)`. Global is
not actually necessary but if we get nameof that does not allow globals
it would be nice validation.
This is pretty unwieldy but there's no real alternative.
If you notice anything weird in the commits let me know because majority
was done with regex replace.
@tgstation/commit-access Since the .proc/stuff is pretty big change.
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
|