mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 05:00:55 +01:00
docker-build
1510
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
e28e9fbdba | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-23-10-2025 | ||
|
|
d1962eec26 |
The Inversenning : Chiral Inversing Buffer (#93376)
## About The Pull Request This PR adds a new buffer (and accompanying Lavaland geyser) to the game: Chiral Inversing Buffer! This unique buffer allows you to instantly transmute a hidden impure or inverse reagent into its original form, no hassle with the HPLC. It can be acquired in three ways, two of which involve Cargo. You can purchase a crate containing one 30u bottle of the buffer for 600 credits, or for free through Medbay's cargo console. You can also scour Lavaland and uncover a geyser that offers unlimited buffer. The buffer itself checks if any eligible inverses or impurities are present within the holder. If there is none, the buffer will fizzle out and be effectively wasted. If there is an eligible reagent, it converts the reagent into the Inverse at a 10-to-1 ratio with the buffer. This means that buying a bottle from cargo will net you at max, 300 units of instant inversing. Do note that this buffer has the best results when added after a reaction, not during or before. https://github.com/user-attachments/assets/5f04097d-6baa-4cfd-bf0d-77f175d37acb ## Why It's Good For The Game This was made from the suggestions of my previous PR at #93316. The main issue that this PR targets is the lack of speedy access to "true" inverse reagents. The current system hides the name of most inverses on creation and only has the HPLC to reliably convert hidden inverses into their true counterpart. This can cause issues with some inverses due to them still retaining some properties of their base reagent. While that system cannot be removed as of now, this PR serves to add another alternative for Chemists to pursue if they need to purify their inverse outputs. <img width="135" height="136" alt="chiralgeyser" src="https://github.com/user-attachments/assets/1cb336ac-966e-4c4b-8cb2-68616c410f26" /> ## Changelog 🆑 add: Chiral Inversing Buffer : A new way to convert your hidden impurities and inverses into their true form! Requires a purchase from Cargo or a trip to Lavaland to acquire. balance: A new geyser has been added to Lavaland that outputs Chiral Inversing Buffer. Geyser weights have been adjusted to accommodate this addition. /🆑 |
||
|
|
348789fa8d |
The Renamening- upgrades UNIQUE_RENAME and moves a lot of renaming implementations under it (#93115)
## About The Pull Request Moves a lot of the unique renaming implementations described in #82664 to the functions given by the `obj_flag` `UNIQUE_RENAME`. `UNIQUE_RENAME` has been given new properties to account for non-standard renaming, these being the `RENAME_NO_DESC` flag that prevents changing the description, the `nameformat()` and `descformat()` procs that, when modified, allow for applying naming formats(i.e. "Body Bag - [input]"), as well as other post-renaming handling such as changing the name of the output plant of a renamed seed, the `rename_checks()` proc that allows for unique naming prevention(such as a locked personal closet), and the `rename_reset()` proc to clean up other possible renamed variables potentially changed in `nameformat()` and `descformat()`. This also adds `/datum/element/tool_renaming` to crayons, which will let them rename anything that has `UNIQUE_RENAME`. I looked through everything with that flag, and I didn't see anything that I don't think should be renameable by a crayon(except things that shouldn't be renamable with pens), so it shouldn't fuck anything up. ## Why It's Good For The Game moves all of the non-honorable mentions in #82664 to the same renaming system, and also moves all of the honorable mentions save for: - plaques, as they only get renamed once and wouldn't benefit from `UNIQUE_RENAME` imo - books, because they're far more than just renaming, and are persistent - paintings, because they're persistent - photos, because they're not normal renaming and they're persistent - endoskeletons, because they're done with a multitool in UI - cardboard IDs, because they're far more than just renaming Additionally, this fixes: - Implanter renaming didn't work because a ! was missing - Clown borg picket sign renaming didn't work because they didn't use the correct arguments This'll make it easier to make renameable objects in the future, as well. ## Changelog 🆑 fix: fixes implanter renaming not working fix: fixes clownborg picket sign renaming not working code: brought most unique renaming implementations under UNIQUE_RENAME /🆑 |
||
|
|
d14e538393 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-15-10-2025 | ||
|
|
a2c7c8e57b |
Heretic Antagonist Full Overhaul. (#92119)
## About The Pull Request Heretic has received a complete overhaul. This PR touches nearly every aspect of the antagonist. For readability's sake, not every change is going to be listed in this pull request. For the full list of changes please refer to the design doc: https://hackmd.io/@BiST8PJVRjiwVPY86U3bLQ/B11HyChz1g. Code by Me, @Xander3359 and @Arturlang TGUI by @Arturlang Sprites by OrcaCora and GregorDM Writing bits by @necromanceranne ### Core changes - Cross-pathing has been removed. Main knowledge spells are now exclusive to their path (for the most part). - For every main knowledge unlocked (save for the robes and the blade upgrade), Heretics can choose one option from a draft of 3 random side knowledges (this is a free point). - Heretics can now purchase side knowledges from a new tab, the "Knowledge Shop". Side-knowledges have been divided by tier (Stealth, Defense, Summons, Combat and Main). Tiers are unlocked as you progress toward your main path. - Heretics now gain the grasp and mark upgrade immediately, but their main knowledge choices cost twice as much (except for the first spell, the robes and the blade upgrade). - Path specific robes have been introduced! They come with their own set of quirks. - Each Path has received a passive ability. This passive is upgraded when you first create your robes, and again when you complete the Ritual of Knowledge. - Paths have been rebalanced as a result of the removal of cross-path progression. Cosmic and Moon paths have received soft reworks. - Upon unlocking the path 2nd level or reaching a total of 8 points worth of knowledge, Heretics will lose the ability to blade break (and the limit on blades all together). - Ascension now automatically calls the shuttle with no possibility of a recall. - Late join Heretic has been removed. ### New UI <img width="750" height="635" alt="moon path ui" src="https://github.com/user-attachments/assets/184ef783-5c9c-48a1-a2f7-4807ca93e990" /> ### Knowledge shop <img width="787" height="669" alt="Knowledge shop" src="https://github.com/user-attachments/assets/3dc89b84-8c70-4d47-b612-54396e3ea6e7" /> ### Quality of life //General balance changes - Heretics will now gain X-ray vision for a few seconds when nearby an eldritch essence (this effect has a cooldown). - Ritual of knowledge now requires 1 uncommon item instead of 2. You may now use a stunprod instead of a baton to complete the ritual. Beartraps have been removed from the list of possible reagents. - The maximum number of possible sacrifices required to ascend has been reduced from 6 to 5 while the minimum has been upped to 4. - Codex Cicatrix no longer requires a special pen to be made. ### Passive abilities - Heretics now start with a passive ability. You can find what it does on the path info tab after a path has been selected, and what they gain when upgraded. - Crafting your first set of Eldritch robes will bump your passive to level 2. - Unlocking the 2nd level will subsequently unlock your "Ritual Of Knowledge" - Completing the ritual of knowledge or ascending will net you the final level. ### Path Specific Robes - Armorer's Ritual is no longer a side knowledge. Each path will have their own unique version of the ritual. This is placed after the 2nd spell in the tree. - Robes can no longer be destroyed by fire and acid, grant t4 flash protection (Moth Heretics stay winning) and protection against basic syringes, to bring them on par with other antagonist's armor sets. - The recipe to craft the robes is now a set of armor/vest, a mask (any mask will do now, not just gas masks), plus the unique reagent required for the blades (Plasma for Cosmic, Trash For Rust, match for Ash and so on) - Wearing the robes as a non-heretic may yield some unfortunate side-effects. ### Moon Path Rework Moon path rework. Moon Heretics gain immunity to brain traumas and slowly regenerate brain health. Equipping the moon amulette channels its effects through the moon blade; making it unblockable and cause sanity damage instead of brute. Ring leader's Rise now summons an army of harmless clones that explode when attacked; the explosion briefly stuns non-heretics and cause sanity and brain damage to them. Moon blade can also now be used when pacified and Moon spells are no longer blocked by regular anti magic, only mind magic protection. **Cosmic Path Rework** Cosmic path has received the biggest batch of changes alongside Moon. The path has been dead last in ascension and pickrate (less than 5%) for almost 2 years. It did gain some popularity over the last few months, reaching the highest ascension rate in the game (12%) while mantaining a relatively low pickrate. Cosmic sits in a weird spot, where pretty much every knowledge surrounding the path is either mediocre or, in the case of the ascension, dysfunctional. Yet it has maintained a smidge of relevancy due to how quickly Cosmic heretics can capture and sacrifice targets thanks to Star Touch. As a result, the best course of action would be to rebalance the entirety of the kit; granting the heretic more tools to manipulate space and dictate the flow of a fight, while lessening their ability to end a confrontation by instantly sleeping their opponents. lastly The Star Gazer is now ghost controlled ; And they shoot lazers! <img width="636" height="451" alt="gazer gag 3" src="https://github.com/user-attachments/assets/601d6881-c042-4e42-8ce6-ac90cd27848b" /> ## Why It's Good For The Game ### Ok...but why do we want this? Again, if you want my full reasoning, please check my doc https://hackmd.io/@BiST8PJVRjiwVPY86U3bLQ/B11HyChz1g. To keep it short and concise; Heretic is too complex and unintuitive for its own good. Too impenetrable for new players and too abusable for experienced players. This can be chalked up to a lot of poor design decisions. But ultimately, what I believe being the biggest contributor to the current status of Heretic is the ability to move into different paths, also known as "Cross-Pathing". ### Cross Pathing my beloathed. Cross-pathing, while cool in theory, overcomplicates the antagonist and overloads them with power. Players dealing with the heretic are incapable of working out what a given heretic can do. This also leads to late game heretics having 3 rows Worth of action buttons and virtually no weakness. Over the last year, I've often received the understandable but also kind of unfair accusations of making Heretic too powerful without a clear aim or purpose. My goal with the paths I've reworked over the last year (Rust,Void and Blade) wasn't necessarily to just make them stronger (although that was also part of the goal, as they were paths that were underperforming), but for them to have more interactions with the sandbox and to better live up to the fantasy presented to the player. If an harbringer of frost gets countered by a cup of coffee, we probably messed something up. Unfortunately, the current incarnation of Heretic doesn't really allow for surgical balance changes to specific paths. Every time a knowledge gets buffed, we make every path that can easily tap onto that knowledge stronger by default. It doesn't take a genius to understand why this system is ultimately unsustainable. ### Blade Breaking I feel that after a heretic has reached the near peak of their power, they no longer need the ability to instantly escape any encounter. Check my doc for my full reasoning. ## Less versatile, more specialized paths. By removing cross-pathing, we remove a huge maintainability burden from the antagonist. Paths can now be designed around clearer strengths and weaknesses. They become easier to balance and less of an headache to understand for everyone. It also means we can give paths some needed quality of life quirks without having to worry how such a change might have a knock-on effect for other paths. Ash heretics can finally let loose without dying by their own flames. Cosmic Heretic can go to space without having to carry a modsuit. Moon Heretic can use their abilities without fear of one random trauma ruining their day, and so on. ### What a horrible night to have a curse...., wait how do I curse people again? As of right now the heretic tree has quite a hefty amount of trinkets that pretty much never see use. Partly because the tree itself is a nightmare to navigate. And partly because why would anyone set up an elaborate plan or scheme when they can unleash 2 rows of spell in the span of bunch of seconds. Heretics mostly gravitate towards powers that push them towards greater, more potent combat strength. If it doesn't contribute to killing people quicker, it isn't worth doing for most. And given the opportunity cost associated for taking those powers, they will remain that way so long as there are better choices to be poached. The new draft system encourages Heretics to play more with the tools at their disposal. If you want to go for a specific combo from the side path options, you may now do so by tapping into the knowledge shop. Yes, the shop does include a few knowledges from the other paths. But these are limited to 1 per path, are very expensive and can only be unlocked very late into the shift. ## Drip Of the Mansus The iconic heretic robe is actually sequestered to a side path that is most easily access by only two paths at a time. Since heretic paths are being made to be much more specialized, the most obvious way in which this can be showcased is through an easily identifiable outfit. By using the robes, we can both telegraph WHAT heretic you are looking at, and just how much power they've accumulated and when it is reasonable to take the kid gloves off and treat them as a genuine threat. If a heretic is in their robes, that heretic is now a significantly more prominent danger to the station. It also serves as a useful means for gating some of the more powerful effects of a heretic's path behind the robes, AND enable options for disarming them of that power should they be captured without making it something endemic to their mob. A major problem with heretics is a lack of certainty as to how powerful they have become. A heretics robes is one of the milestones to help players dealing with heretics identify that. ### Will this be 100% fair and balanced? This is a massive overhaul to a pretty complex and bloated antagonist. I've done my best to show the changes to several maintainers and other members of the community for their feedback. But at some point we'll have to see how this behave in the environment to get a feel if something is over or undertuned. (that's my way of saying, yes this is likely gonna require a testmerge or two). What I will say is that I'm not trying to change the core identity of Heretic. Heretics should have the upperhand in single encounters early on, be able to joust a small group of players after they unlock their final spell, and end the round when they ascend. They're a progression antagonist. They should retain their payoff as well as pose a danger as they grow stronger. But if more players feel like they are more reliably able to play the antagonist in more varied and interesting ways, rather than the antagonist largely existing as a measuring stick for 'robustness' due to its elitist design philosophy, then the rework has been a success. There should be something for everyone in the antagonist, as is true for all of our antagonist roles. |
||
|
|
e6ceb7289d |
Readds Lean (#93310)
## About The Pull Request Readds Lean It was a flavor of the month meme, talked about a lot in 2022. Since 2022-2023 it died down. I'm hoping enough time has passed and the sentiment has changed since then We have some fun chemicals like Maldium, Methamphetamine, Fentanyl, Kronkaine (cocaine), Bath Salts in game But if it's still not good enough, feel free to close the PR its no big deal I've also made the drink more fun and engaging (like when it's used in a party ICly) compared to last time ## Why It's Good For The Game - It's a fun drink - Encourages more parties (IC birthday, etc) - Incentivizes RP interaction in bar - More flavorful stuff for bartender - Another thing would be that SS13 players are special and something like this, would probably actually incentivize those who don't like to hang out with others, to take the time to hang out with others. ## Changelog 🆑 ArchBTW add: Readds Lean /🆑 --------- Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> |
||
|
|
f72eb75a6f |
Handcuffs can now be used to bind certain items (briefcases, toolboxes, etc.) to your hand. (#93305)
## About The Pull Request Technically, this PR introduces the cuffable_item element and the cuffed_item status effect and their relative code. In more player-friendly terms, this allows the ability to use handcuffs to bind certain items to your hands by right-clicking it with a pair of handcuffs in your active hand. This makes the item unable to be dropped, for better or worse, until you or someone else remove said cuffs. And no, this doesn't conflict with the ability to be handcuffed if you're silly enough to think that. There are more than one way to remove the cuffs. For the player with the item cuffed to their hand, to remove the cuffs they can either click the status alert, or examine the item and click the relative hyperlink. The second option is good to have if for some reason the status alert doesn't show up (too many alerts etc.). For other people, they can remove the cuffs by opening the strip inventory menu (the one you open by click-dragging the sprite of person with the item onto yours). It's an alternative action specific to this status effect (therefore only held items). Until the cuffs are removed, trying to remove the item **directly** will bring you nowhere **because the item is stuck to their hands**, duh. Alternatively you can just chop their arm off. You do what you do. For a list of items that can be bound with cuffs (suggestions welcome): - briefcases - toolboxes - lockboxes - first aid kits - shields (they generally have handles and all. gameplay-wise they already take away one hand slot to use. Using cuffs seals the deal: no swapping items on the go, so no two-handed weapons, but you won't drop the shield until it's broken) - jerrycans (Kryson's suggestion) - soup pots (ditto, kinda weird) - coffee mugs, and the mauna mug (ditto) - buckets - plushes (silly stuff, if you ever want to arrest a plush or test the feature) - pet carriers - mining drills - swords with closed guards (ERT chainsaw-sword, cap's sabre, parsnip sabre, cutlass, e-cutlass...) - crutches and the white cane - baskets - flashlights and lamps (not subtypes like flares, glowsticks and torches) - TTVs - chairs ## Why It's Good For The Game This opens up for some emergent use for handcuffs beside people (or prisoner shoes). Inspired by a scene of some 1998 action movie, where one of the bad guys had the mc guffin briefcase latched to his wrist with a pair of handcuffs. Codewise, it was also a reason to refactor bits of code like handcuffs and screen alerts slightly. On a sidenote, actual sprites for cult/heretic shackles. ## Changelog 🆑 add: You can now bind certain items like briefcases, toolboxes, medkits, shields, jerrycans etc. to your hand with a pair of handcuffs, preventing them from being dropped. You can remove said binds at any time unless incapacitated, and so can others through the strip inventory menu. qol: The appearance of a screen alert now updates if the object it represents (like, an item offered by another player) changes appearance. imageadd: The shadow shackles item (from cult magic and heretic sacrifices) now has its own icon. /🆑 |
||
|
|
1afe7a9b89 |
Various reagent-to-mob interactions have click cds again (#93295)
## About The Pull Request Moving from `attack` to `item_interaction` and `interact_with_atom` accidentally made these click CD free Which is probably a bad thing So I re-added click CDs to reagent container -> mob interactions that were converted. Reagent container -> item interactions have no CDs. ## Changelog 🆑 Melbert fix: Reagent container interactions with mobs have click cooldown again /🆑 |
||
|
|
312085b95c | Grah | ||
|
|
5e629dff04 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync | ||
|
|
415b86aefa |
Fixes damp rag runtime (#93192)
## About The Pull Request <img width="564" height="75" alt="image" src="https://github.com/user-attachments/assets/539de6b9-4c4e-40cd-9ebf-d891db25ede2" /> Seems to be caused by add_blood_dna() being passed an empty list (which happens by default with rags). <details><summary> see here </summary> <img width="591" height="518" alt="image" src="https://github.com/user-attachments/assets/9c1e6863-8707-4768-87ac-a2e0874fd34d" /> `all_blood_dna` is not null but an empty list to start, so we need our proc to be able to handle such cases </details> So anytime you clean something that doesn't have blood dna you will get this runtime. ## Why It's Good For The Game If someone is cleaning these really can build up. Less runtime log pollution so we notice important issues. ## Changelog N/A |
||
|
|
4684abceb0 | Refactor reagent container + all subtypes to interaction chain 2 electric boogaloo (#92763) | ||
|
|
b308ee9d78 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync | ||
|
|
852f6f8868 |
[NO GBP] recipe speed fix (#92939)
## About The Pull Request This PR aims to fix another issue with #92577. The main problem is that the list of instances we get from `get_surroundings()` doesn't contain items that are found within the person that's crafting the recipe, since those are checked separately in `check_tools()`. This ends up making the recipe hella slower because the appropriate tool couldn't be found in the checks for calculating the duration of the craft. This also trims a few lines of code and other small things worth of a small refactor. EDIT: Found out the real problem. the list of instances was an assoc list of type -> instances, while I thought otherwise. ## Why It's Good For The Game Fixing some recipes taking too long to make. Fixes https://github.com/tgstation/tgstation/issues/93003 ## Changelog 🆑 fix: Fixed some recipes taking too long to make. /🆑 |
||
|
|
9b282a850e | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync | ||
|
|
d2f34e33be |
moves abstract_type up to datum, spawners wont spawn them (#92909)
## About The Pull Request moves all implementations (im aware of) for "Im a parent type dont spawn me please" to the datum layer to standardized behavior adds a standerized proc for filtering out "bad" items that we dont want spawning. applies to it the subtype vendor, gifts, and a new spawner and mystery box for a random gun (neither playerfacing) "port" of https://github.com/shiptest-ss13/Shiptest/pull/4621 https://github.com/user-attachments/assets/22f6f0b2-b44e-411a-b3dc-6b97dc0287aa small warning: I dont have EVERY abstract type defined right now but, ive done a good enough job for now. Im tired of data entry rn ## Why It's Good For The Game standardizing behavior. Might be a micro hit to performance however having this lets us not rely on icon state to determine whether something is a parent type and makes it much easier to tell something is a parent type (could be applied further to things like admin spawning menus and things like that). need feedback on if this is actually good for the game. ## Changelog 🆑 add: Soda cans show up in the silver slime drink table. add: Examine tag for items that are not mean to show up ingame. refactor: Standardizes how gifts rule out abstract types. fix: gifts no longer check if something has an inhand, massively expanding the list of potential items. /🆑 |
||
|
|
939f2fc9ac | Merge branch 'master' of https://github.com/tgstation/tgstation into xpokee-test-upstream-sync | ||
|
|
ee99d0e5b0 |
Asthma quirk, inhalers - Electric Boogaloo (#92747)
## About The Pull Request Revival of https://github.com/tgstation/tgstation/pull/79691 A while back, I made this PR, but lost motivation after diving too deep into the code soup of can_breathe and related procs. Now, I have removed those parts, and have simplified that part of the code to the point I think it's ready for review. Many reviews from the previous PR have been addressed in this PR. <hr> <details> <summary>Details</summary> Asthma is a 4 point negative quirk that emulates real life asthma. It works by slowly decreasing the amount of pressure each breath you take receives, until your lungs completely seal, ensuring death if you dont get oxyloss meds/windpipe surgery. Inflammation (the tracker for intensity) increases whenever you breathe smoke, use a cigarette, metabolize histimine, or suffer an asthma attack. Asthma attacks have a low chance of happening every second, starting 10 minutes after you spawn and with a 20-30 grace period between attacks. They are "diseases" that cant be outright cured by albuterol, only put into remission. They increase inflammation at varying rates depending on their severity, with extreme asthma attacks being a immediate threat to your life while mild ones might not even cause inflammation. The response to these is always the same - use your inhaler before you start choking. Asthmatics start with a rescue inhaler, a low-capacity inhaler loaded with albuterol, which I will get to later. Albuterol is a new medicine thats a little tricky to make but still doable. It can be efficiently created with inverse convermol, or transmutated from salbutamol and convermol. The opposite is true, with albuterol able to be turned into salbutamol. Two canisters are available in chemvends. Upon use, it increases the virtual pressure of all breaths taken by 40%. This allows for you to breathe in lower pressure environments, as well as enhancing the effects of things like healium. It's OD causes your diaphram to spasm, causing sporadic losebreath and forced breathing. Inhalers are a fancy new reagent application apparatus that uses the INHALE reagent bitflag. Inhalers themselves are rather unremarkable, they are merely the method of using inhaler canisters (they also have a rotary display approximating the uses left in a canister - just like real life inhalers). Inhaler canisters are the reagent containers, and are generally low capacity. They can only be used in a inhaler, and contain aerosolized chemicals. Inhaler canisters and inhalers are unlocked from chemical synthesis, and are printable for cheap from a medlathe. In order to use a inhaler, one must uncover the mouth of a carbon and wait a few seconds (its faster if its a self-application) before a small amount of the reagents are delivered via the INHALE bitflag. This only works on things currently breathing - if theyre dead, have no lungs, or just, arent breathing - it will fail. This includes asthmatics with 100% inflammation. </details> <img width="181" height="74" alt="282863233-77a7cd6b-44d2-458e-9966-06d485df1521" src="https://github.com/user-attachments/assets/293b6659-0834-4e9a-b033-cc3b0cfde18e" /> <img width="1465" height="202" alt="282863346-2a247736-0c3a-43b0-a60b-7cff10ce4963" src="https://github.com/user-attachments/assets/5d9a13dc-b7b2-4de2-adda-8fbc8276e667" /> Sprites are not mine; they are from swanni and I can NOT sprite for the life of me ## Why It's Good For The Game 1. Asthma is just cool. One of my favorite features on bay was the fact lung damage required you to turn up the pressure on your O2 tank to survive, and this does precisely that. 2. Its always fun to add new ways to interact with atmos as a player that arent grossly broken, and I fail to see how a 40% increase of gas intake will really affect balance too badly. 3. Inhalers are badass. ## Changelog 🆑 add: Asthma quirk, based on IRL asthma add: Inhalers, a new reagent administering method that uses INHALE add: Albuterol, a new reagent that increases the amount of gas you inhale by 40% balance: Inverse convermol now forms once the reaction is done, not on metabolize /🆑 --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> # Conflicts: # code/datums/quirks/negative_quirks/allergic.dm # code/game/objects/items/devices/scanners/health_analyzer.dm |
||
|
|
50499dba9a |
Adds opium and meth rocks! (#92699)
## About The Pull Request <img width="612" height="185" alt="dreamseeker_SNMvxqCRiR" src="https://github.com/user-attachments/assets/1d3103e9-edc1-4e50-8793-c8c2ace53aea" /> This is a small expansion to narcotics, their production, and presence in the game! For my esteemed Terry and Manuel/Sybil sector colleagues I've added: - 2 new solid drug items: **crystal meth and opium**! - A **precipitation reaction** for meth after it's been cooled, producing a solid crystal form, 2u sulfuric acid, 10u meth. **Above 90% purity, the meth will gain an increasingly blue tint!** - A production method for opium! Slice a well developed poppy pod with any sharp item, **before it's fully mature and flowered** to extract a small amount of opium to enjoy! It's a small container for morphine. Can be pressed together to combine the concentrations up to 10u, as each extraction contains trace amounts. Scales off poppy's potency. - Populated narcotics/contraband spawners with new items, and items that really should have been on there. - Added a brand new smoking apparatus, the glass pipe! Can be crafted. Fixed the transparent pixel. - **Fixed methsplosions so that now spacemen can finally smoke meth without exploding!!!** Omegaweed too. Normal methsplosions are untouched! - **Expanded the ability for players to insert all drug items into pipes**, so now players can smoke moon rocks, SaturnX, and my new items! Previously, only 'dried' items were. - Fentanyl patch box for narcotics spawner, also for a new ruin I've made. - **Expanded these changes to the black market uplink.** <img width="640" height="256" alt="demo" src="https://github.com/user-attachments/assets/c8a0eb2c-b0fa-4e70-b6c1-2e741cd170a2" /> Now, players can precipitate meth into a solid form, and produce opium. I added a lot of these substances and the ones that didn't exist into spawners that they were partially in, or could reasonably be in. The opium poppy extraction required a new variable that can be used for similar interactions too. Crystal sprites are transparent, smoked sprite has a nice little animation and glow. These items are now on the black market uplink, in both expensive dealer shipments of varying rarities for different narcotics, as well as personal use quantities on a different rotation, at a steeper price. Expanded randomized spawners to give the black market and ruins more teeth and edge, without adding another weapon. Credit to the moon rock guy, I'm just happy I made your stuff smokable!! <img width="219" height="201" alt="dreamseeker_N8x9bsN3kS" src="https://github.com/user-attachments/assets/64d23c27-92b9-423b-91ac-903b8476d0b4" /> tl;dr added opium and meth ## Why It's Good For The Game For **too long**, narcotics, chems and stims have been mere integers or buffs/debuffs in pills or syringes, so I introduced two new methods for making them and populated niche, criminal vectors with them. These are real items now, with more interactions. Allowing these to be smoked also allowed moon rocks and SaturnX to be smoked too, including them into this and enticing players to have another reason to make them as well. Buffs with drawbacks, addictions and problems are actually great. It's a new venue for flavor. I've put thought into the balance for addition and quantity. It'll add a criminal, or exotic tone to a round, provide new business opportunities, and new access to stims and chems without going over the top. Perhaps something peaceful antagonists can do. More proverbial floor pills give security or command something to selectively enforce, and absolutely provide novel opportunities for medical staff! Also, methsplosions now don't happen in cigarette items! You can smoke omegaweed without fucking dying! ## Changelog 🆑 add: Added meth, opium, and their production! Also added to black market uplink. add: Added a craftable glass pipe. add: Added to contraband spawners. qol: Can now insert any drug item into a pipe. fix: Spacemen can now smoke meth without exploding!! /🆑 --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> |
||
|
|
fadbf16e1b |
Asthma quirk, inhalers - Electric Boogaloo (#92747)
## About The Pull Request Revival of https://github.com/tgstation/tgstation/pull/79691 A while back, I made this PR, but lost motivation after diving too deep into the code soup of can_breathe and related procs. Now, I have removed those parts, and have simplified that part of the code to the point I think it's ready for review. Many reviews from the previous PR have been addressed in this PR. <hr> <details> <summary>Details</summary> Asthma is a 4 point negative quirk that emulates real life asthma. It works by slowly decreasing the amount of pressure each breath you take receives, until your lungs completely seal, ensuring death if you dont get oxyloss meds/windpipe surgery. Inflammation (the tracker for intensity) increases whenever you breathe smoke, use a cigarette, metabolize histimine, or suffer an asthma attack. Asthma attacks have a low chance of happening every second, starting 10 minutes after you spawn and with a 20-30 grace period between attacks. They are "diseases" that cant be outright cured by albuterol, only put into remission. They increase inflammation at varying rates depending on their severity, with extreme asthma attacks being a immediate threat to your life while mild ones might not even cause inflammation. The response to these is always the same - use your inhaler before you start choking. Asthmatics start with a rescue inhaler, a low-capacity inhaler loaded with albuterol, which I will get to later. Albuterol is a new medicine thats a little tricky to make but still doable. It can be efficiently created with inverse convermol, or transmutated from salbutamol and convermol. The opposite is true, with albuterol able to be turned into salbutamol. Two canisters are available in chemvends. Upon use, it increases the virtual pressure of all breaths taken by 40%. This allows for you to breathe in lower pressure environments, as well as enhancing the effects of things like healium. It's OD causes your diaphram to spasm, causing sporadic losebreath and forced breathing. Inhalers are a fancy new reagent application apparatus that uses the INHALE reagent bitflag. Inhalers themselves are rather unremarkable, they are merely the method of using inhaler canisters (they also have a rotary display approximating the uses left in a canister - just like real life inhalers). Inhaler canisters are the reagent containers, and are generally low capacity. They can only be used in a inhaler, and contain aerosolized chemicals. Inhaler canisters and inhalers are unlocked from chemical synthesis, and are printable for cheap from a medlathe. In order to use a inhaler, one must uncover the mouth of a carbon and wait a few seconds (its faster if its a self-application) before a small amount of the reagents are delivered via the INHALE bitflag. This only works on things currently breathing - if theyre dead, have no lungs, or just, arent breathing - it will fail. This includes asthmatics with 100% inflammation. </details> <img width="181" height="74" alt="282863233-77a7cd6b-44d2-458e-9966-06d485df1521" src="https://github.com/user-attachments/assets/293b6659-0834-4e9a-b033-cc3b0cfde18e" /> <img width="1465" height="202" alt="282863346-2a247736-0c3a-43b0-a60b-7cff10ce4963" src="https://github.com/user-attachments/assets/5d9a13dc-b7b2-4de2-adda-8fbc8276e667" /> Sprites are not mine; they are from swanni and I can NOT sprite for the life of me ## Why It's Good For The Game 1. Asthma is just cool. One of my favorite features on bay was the fact lung damage required you to turn up the pressure on your O2 tank to survive, and this does precisely that. 2. Its always fun to add new ways to interact with atmos as a player that arent grossly broken, and I fail to see how a 40% increase of gas intake will really affect balance too badly. 3. Inhalers are badass. ## Changelog 🆑 add: Asthma quirk, based on IRL asthma add: Inhalers, a new reagent administering method that uses INHALE add: Albuterol, a new reagent that increases the amount of gas you inhale by 40% balance: Inverse convermol now forms once the reaction is done, not on metabolize /🆑 --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
b348b617a3 |
Merge branch 'master' of https://github.com/tgstation/tgstation into pupstream-2025-09-07
# Conflicts: # README.md # code/__DEFINES/admin.dm # code/__DEFINES/melee.dm # code/_globalvars/traits/_traits.dm # code/controllers/subsystem/economy.dm # code/datums/components/crafting/crafting.dm # code/datums/elements/crusher_loot.dm # code/modules/antagonists/pirate/pirate_shuttle_equipment.dm # code/modules/clothing/suits/_suits.dm # code/modules/escape_menu/leave_body.dm # code/modules/jobs/job_types/_job.dm # code/modules/mining/equipment/mineral_scanner.dm # code/modules/mob/living/living.dm # code/modules/plumbing/plumbers/pill_press.dm # tgui/packages/tgui/interfaces/Vending.tsx |
||
|
|
bda68348a8 |
lets you put pills in slices of cheese and meats (#92630)
## About The Pull Request Adds the food storage component to cutlets, cooked and raw, as well as slices of cheese. This means you can put pills in them. Also changes pills on accidental consumption, if you like the food they are stuck into, then you don't even notice that you just ate a pill. Mmm cheese... ## Why It's Good For The Game Food storage is a really funny component but only works on very few foods, like whole wheels of cheese or loaves of bread. Everyone knows the best way to sneak a pill is to put it in a slice of cheese. ## Changelog 🆑 add: Lets small items be stuck into slices of cheese or lunch meat balance: Pills in food no longer alert you that you've just swallowed one if you like the food they were stuck in (yum... cheese...) /🆑 --------- Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> |
||
|
|
906ac46477 |
Makes water coolers more mechanically interesting, fills them up with fruit punch sometimes (#92480)
## About The Pull Request This overhauls Water Coolers (now referred to as "liquid coolers" internally and in most external cases). They'll feel less like a useless prop now. (sprites may look off because of the gif software I use) **Important Thing # 1:** The reagents are now handled by cooler jugs. You can pop the jug off of a cooler, fill it with whatever the hell you want, and put it back on. Fill it with drugs. Fill it with acid. I don't care, I'm not your mom. <img width="41" height="56" alt="image" src="https://github.com/user-attachments/assets/4c618cab-99b4-4a72-ae7b-7b900d7f5eaf" /> The sprite now uses an overlay to change colors based on the mix. Water, when present in the cooler, is magically turned blue to keep that classic water cooler look. <img width="280" height="333" alt="image" src="https://github.com/user-attachments/assets/8a6a905c-bef4-4f5f-9393-5ce5dcca0620" /> The jugs are 200 reagents, and are mechanically comparable to the jerry can. No 200 unit acid splashes or anything. Y'know, unless you put the jug in a cooler and knock it over...  **Important Thing # 2:** They can be anchored, tipped, and crafted. Tipping them requires the cooler be unanchored. If you want to use one of these tactically, unwrench it beforehand.  **Important Thing # 3:** They can be bought from cargo now! <img width="501" height="605" alt="image" src="https://github.com/user-attachments/assets/6f261aab-f11a-4126-98ce-d9278d01d0a0" /> **Important Thing # 4** Fruit punch. <img width="175" height="127" alt="image" src="https://github.com/user-attachments/assets/ac81e48c-47ff-461f-85f8-3e77a6a6ca55" /> Fruit punch is a drink with impressive (slightly faster than omnizine) healing qualities. Unfortunately, it's so unbearably sweet that it can only be safely consumed near a liquid cooler! Drinking this stuff is a commitment, since if you stray from the cooler while digesting it, you will be hurt and disoriented. You should avoid drinking too much at once, in case an emergency comes up! For this reason, we encourage drinkers to _take small sips from your paper cooler cup, hang around the cooler, and maybe chat with other people who are healing too._ (Mapload) water coolers have a 1% chance to start full of punch instead of water. Maybe you'll get lucky and start with a healing station in your department, or maybe a hopeless space explorer will find one in a ruin and be saved. You can also buy one from cargo but it's priceyyyyy. It's also the only source of punch. ## Why It's Good For The Game Realizing how little functionality water coolers have was super disappointing. They do hardly anything but take up space and look pretty. And now, they're getting mapped into all of the new stations! We can't have a bunch of inert, sandbox-shunning furniture just sitting around, the other codebases would laugh at us! Now, coolers are more congruent with how most people would expect one to behave in the game environment. Even minor changes like making them unanchorable or refillable helps them fit in with most players' intuitive understanding of how atoms typically behave. The reagent storage change gives coolers their own unique niche in the sandbox. Tipping them over can also give you an edge in escaping someone, so even the untouched roundstart coolers can serve a purpose to savvy players. For the punch cooler, I figured "why not make a reagent that rewards players for treating the water cooler like a water cooler?" The punch encourages players to stand around it, slowly sip from the cooler, and chat with their co-workers. Just like people do in offices! It's thematically sound! ## Changelog 🆑 Rhials add: You may now remove water cooler jugs and put whatever you want in them. Go nuts. add: Water coolers are now craftable (with plastic), orderable from cargo, and tippable when unanchored. add: Rarely, water coolers will spawn full of healing fruit punch instead of water! Be careful not to stray from the cooler while digesting this stuff. add: You can also just buy the punch cooler from cargo if you feel like it. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> # Conflicts: # code/modules/reagents/reagent_dispenser.dm |
||
|
|
6618c9d694 |
Misc File Purge: The Return (#92438)
## About The Pull Request Purged several files inthe theme of misc.dm and broken the contents out into better organised files. Incidentally done some minor cleanup by removing an unused global list referring to a string file that no-longer exists, and removing a useless proc that replicated the behaviour of file2list(). ## Why It's Good For The Game See #60358 and all its successors ## Changelog 🆑 code: Reduced the number of files named misc.dm or similar by 14%. /🆑 # Conflicts: # code/_globalvars/lists/flavor_misc.dm |
||
|
|
4f6e27ca92 |
Makes water coolers more mechanically interesting, fills them up with fruit punch sometimes (#92480)
## About The Pull Request This overhauls Water Coolers (now referred to as "liquid coolers" internally and in most external cases). They'll feel less like a useless prop now. (sprites may look off because of the gif software I use) **Important Thing # 1:** The reagents are now handled by cooler jugs. You can pop the jug off of a cooler, fill it with whatever the hell you want, and put it back on. Fill it with drugs. Fill it with acid. I don't care, I'm not your mom. <img width="41" height="56" alt="image" src="https://github.com/user-attachments/assets/4c618cab-99b4-4a72-ae7b-7b900d7f5eaf" /> The sprite now uses an overlay to change colors based on the mix. Water, when present in the cooler, is magically turned blue to keep that classic water cooler look. <img width="280" height="333" alt="image" src="https://github.com/user-attachments/assets/8a6a905c-bef4-4f5f-9393-5ce5dcca0620" /> The jugs are 200 reagents, and are mechanically comparable to the jerry can. No 200 unit acid splashes or anything. Y'know, unless you put the jug in a cooler and knock it over...  **Important Thing # 2:** They can be anchored, tipped, and crafted. Tipping them requires the cooler be unanchored. If you want to use one of these tactically, unwrench it beforehand.  **Important Thing # 3:** They can be bought from cargo now! <img width="501" height="605" alt="image" src="https://github.com/user-attachments/assets/6f261aab-f11a-4126-98ce-d9278d01d0a0" /> **Important Thing # 4** Fruit punch. <img width="175" height="127" alt="image" src="https://github.com/user-attachments/assets/ac81e48c-47ff-461f-85f8-3e77a6a6ca55" /> Fruit punch is a drink with impressive (slightly faster than omnizine) healing qualities. Unfortunately, it's so unbearably sweet that it can only be safely consumed near a liquid cooler! Drinking this stuff is a commitment, since if you stray from the cooler while digesting it, you will be hurt and disoriented. You should avoid drinking too much at once, in case an emergency comes up! For this reason, we encourage drinkers to _take small sips from your paper cooler cup, hang around the cooler, and maybe chat with other people who are healing too._ (Mapload) water coolers have a 1% chance to start full of punch instead of water. Maybe you'll get lucky and start with a healing station in your department, or maybe a hopeless space explorer will find one in a ruin and be saved. You can also buy one from cargo but it's priceyyyyy. It's also the only source of punch. ## Why It's Good For The Game Realizing how little functionality water coolers have was super disappointing. They do hardly anything but take up space and look pretty. And now, they're getting mapped into all of the new stations! We can't have a bunch of inert, sandbox-shunning furniture just sitting around, the other codebases would laugh at us! Now, coolers are more congruent with how most people would expect one to behave in the game environment. Even minor changes like making them unanchorable or refillable helps them fit in with most players' intuitive understanding of how atoms typically behave. The reagent storage change gives coolers their own unique niche in the sandbox. Tipping them over can also give you an edge in escaping someone, so even the untouched roundstart coolers can serve a purpose to savvy players. For the punch cooler, I figured "why not make a reagent that rewards players for treating the water cooler like a water cooler?" The punch encourages players to stand around it, slowly sip from the cooler, and chat with their co-workers. Just like people do in offices! It's thematically sound! ## Changelog 🆑 Rhials add: You may now remove water cooler jugs and put whatever you want in them. Go nuts. add: Water coolers are now craftable (with plastic), orderable from cargo, and tippable when unanchored. add: Rarely, water coolers will spawn full of healing fruit punch instead of water! Be careful not to stray from the cooler while digesting this stuff. add: You can also just buy the punch cooler from cargo if you feel like it. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
7c6e6422cc |
Misc File Purge: The Return (#92438)
## About The Pull Request Purged several files inthe theme of misc.dm and broken the contents out into better organised files. Incidentally done some minor cleanup by removing an unused global list referring to a string file that no-longer exists, and removing a useless proc that replicated the behaviour of file2list(). ## Why It's Good For The Game See #60358 and all its successors ## Changelog 🆑 code: Reduced the number of files named misc.dm or similar by 14%. /🆑 |
||
|
|
796bb41477 |
Merges copy_to() into trans_to() for reagent holder (#92410)
## About The Pull Request
Merges `/datum/reagents/proc/copy_to()` ->
`/datum/reagents/proc/trans_to()`. Added a parameter `copy_only` to
indicate we want a copy operation
## Why It's Good For The Game
- Less code to maintain
- All the functionality of `trans_to()`[logging, transferring single
reagent, expelling reagents from stomach, etc] now applies for copying
reagents as well which was missing a lot of it, so we have consistent
behaviour
## Changelog
🆑
refactor: code for copying reagents has been refactored. Please report
bugs on github
/🆑
(cherry picked from commit
|
||
|
|
a1d27e384d |
Merges copy_to() into trans_to() for reagent holder (#92410)
## About The Pull Request Merges `/datum/reagents/proc/copy_to()` -> `/datum/reagents/proc/trans_to()`. Added a parameter `copy_only` to indicate we want a copy operation ## Why It's Good For The Game - Less code to maintain - All the functionality of `trans_to()`[logging, transferring single reagent, expelling reagents from stomach, etc] now applies for copying reagents as well which was missing a lot of it, so we have consistent behaviour ## Changelog 🆑 refactor: code for copying reagents has been refactored. Please report bugs on github /🆑 |
||
|
|
e7c25d4c40 |
The Glitterening (#92226)
## About The Pull Request Adds a number of new capabilities to glitter. - It can be any colour. <img width="657" height="398" alt="image" src="https://github.com/user-attachments/assets/60e80c04-8eee-470c-8953-47f6eda9f83e" /> - It can be made in chemistry and dyed by combining it with acetone and other reagents to give it the average colour of the non-glitter, not-acetone reagents. - Multiple colours can be mixed into one reagent datum, randomly depositing a colour from those in the datum on the floor. <img width="554" height="507" alt="image" src="https://github.com/user-attachments/assets/9cc7d1d5-9bec-4b28-af06-310ffb24de49" /> - Anyone with glitter reagent in them will cough glitter onto the floor - Glittery crates will leave a trail of appropriately coloured glitter when moved <img width="960" height="259" alt="image" src="https://github.com/user-attachments/assets/71cc1176-23f9-4ae7-b500-1744b752c014" /> Resprited glitter to support these changes and make it not look like gas (or ass). ## Why It's Good For The Game It looks cool and raises the bar for chemists maximally pissing off the janitor as they fill a room with multicoloured glitter and all the occupants run off to cough more up all over the surrounding area. ## Changelog 🆑 add: Glitter can now be made from plastic polymers and aluminium. add: Plastic polymer can be made at any temperature, and then heated to produce sheets. add: Glitter can now be made any colour, mix 10 units each of glitter and acetone to change its colour to that of the other reagents in the beaker. add: Mixing different colours of glitter will cause a random selection of those colours to appear on the floor when released. add: Being exposed to glitter in reagent form causes you to cough up more glitter onto the floor add: Dragging glittery crates will now spread a trail of glitter and angry janitors behind them. image: Added new glitter sprites (that don't look like gasses) /🆑 |
||
|
|
2a96ae3344 |
Refactors reagent transfer operations (#92213)
- Fixes #92198 - Fixes #92298 **1) Replaces reagent `on_transfer()` with its corresponding `expose()` proc variants** This PR replaces all known implementations of `/datum/reagent/on_transfer()` with `/datum/reagent/expose_mob()`. We use `expose_mob()` & not the other `expose()` variants because all known implementations were targeting living beings so this was the correct replacement This has 2 benefits - `expose_mob()` gets called correctly when an impure reagent is converted to it's inverse variant like for Cryostylane & Cryogeldia. This isn't the case for `on_transfer()` so we get correct behaviour which fixes the above bug - Removing `on_transfer()` makes the proc `/datum/reagents/trans_to()` much faster performance wise because we aren't calling `update_total()` per reagent transfered now but only once at the end after all reagents are transferred Also there was little to no functional difference between the 2 procs, `expose()` works correctly in comparison & this won't confuse devs when deciding which proc to use. One proc to cover all scenarios **2) Removes unused expose signals** `COMSIG_ATOM_AFTER_EXPOSE_REAGENTS` & `COMSIG_REAGENTS_EXPOSE_ATOM` are not used anywhere in the codebase i.e. no listeners. They can be discarded as dead code **3) Fixes wrong transfer amount passed to `/datum/reagent/intercept_reagents_transfer()` & `/datum/reagents/expose()`** The wrong transfer `amount` was passed when it fact it should use `transfer_amount` which contains the multiplier & proportional multiplier applied. Also the reagent volumes exposed was computed incorrectly resulting in the 2nd issue listed above. Blood transferred to mobs now go to `blood_volume` directly instead of getting added to the mobs reagent holder as long as it's less than `BLOOD_VOLUME_MAXIMUM` level 🆑 fix: reagent intercept operations use correct volumes e.g. ph buffers fix: impure cryostylane now has inverse cryogeldia effects when applied on mods fix: exposing reagents now uses correct volumes i.e. injecting blood into mobs don't increase it exponentially and stops when max levels are reached. Exposure affects of all reagents are lessened upon continuous exposure refactor: refactors how reagent affects are applied on mobs. Report bugs on github /🆑 |
||
|
|
d97c57b263 |
The Glitterening (#92226)
## About The Pull Request Adds a number of new capabilities to glitter. - It can be any colour. <img width="657" height="398" alt="image" src="https://github.com/user-attachments/assets/60e80c04-8eee-470c-8953-47f6eda9f83e" /> - It can be made in chemistry and dyed by combining it with acetone and other reagents to give it the average colour of the non-glitter, not-acetone reagents. - Multiple colours can be mixed into one reagent datum, randomly depositing a colour from those in the datum on the floor. <img width="554" height="507" alt="image" src="https://github.com/user-attachments/assets/9cc7d1d5-9bec-4b28-af06-310ffb24de49" /> - Anyone with glitter reagent in them will cough glitter onto the floor - Glittery crates will leave a trail of appropriately coloured glitter when moved <img width="960" height="259" alt="image" src="https://github.com/user-attachments/assets/71cc1176-23f9-4ae7-b500-1744b752c014" /> Resprited glitter to support these changes and make it not look like gas (or ass). ## Why It's Good For The Game It looks cool and raises the bar for chemists maximally pissing off the janitor as they fill a room with multicoloured glitter and all the occupants run off to cough more up all over the surrounding area. ## Changelog 🆑 add: Glitter can now be made from plastic polymers and aluminium. add: Plastic polymer can be made at any temperature, and then heated to produce sheets. add: Glitter can now be made any colour, mix 10 units each of glitter and acetone to change its colour to that of the other reagents in the beaker. add: Mixing different colours of glitter will cause a random selection of those colours to appear on the floor when released. add: Being exposed to glitter in reagent form causes you to cough up more glitter onto the floor add: Dragging glittery crates will now spread a trail of glitter and angry janitors behind them. image: Added new glitter sprites (that don't look like gasses) /🆑 |
||
|
|
64376e2899 |
Refactors reagent transfer operations (#92213)
## About The Pull Request - Fixes #92198 - Fixes #92298 **1) Replaces reagent `on_transfer()` with its corresponding `expose()` proc variants** This PR replaces all known implementations of `/datum/reagent/on_transfer()` with `/datum/reagent/expose_mob()`. We use `expose_mob()` & not the other `expose()` variants because all known implementations were targeting living beings so this was the correct replacement This has 2 benefits - `expose_mob()` gets called correctly when an impure reagent is converted to it's inverse variant like for Cryostylane & Cryogeldia. This isn't the case for `on_transfer()` so we get correct behaviour which fixes the above bug - Removing `on_transfer()` makes the proc `/datum/reagents/trans_to()` much faster performance wise because we aren't calling `update_total()` per reagent transfered now but only once at the end after all reagents are transferred Also there was little to no functional difference between the 2 procs, `expose()` works correctly in comparison & this won't confuse devs when deciding which proc to use. One proc to cover all scenarios **2) Removes unused expose signals** `COMSIG_ATOM_AFTER_EXPOSE_REAGENTS` & `COMSIG_REAGENTS_EXPOSE_ATOM` are not used anywhere in the codebase i.e. no listeners. They can be discarded as dead code **3) Fixes wrong transfer amount passed to `/datum/reagent/intercept_reagents_transfer()` & `/datum/reagents/expose()`** The wrong transfer `amount` was passed when it fact it should use `transfer_amount` which contains the multiplier & proportional multiplier applied. Also the reagent volumes exposed was computed incorrectly resulting in the 2nd issue listed above. Blood transferred to mobs now go to `blood_volume` directly instead of getting added to the mobs reagent holder as long as it's less than `BLOOD_VOLUME_MAXIMUM` level ## Changelog 🆑 fix: reagent intercept operations use correct volumes e.g. ph buffers fix: impure cryostylane now has inverse cryogeldia effects when applied on mods fix: exposing reagents now uses correct volumes i.e. injecting blood into mobs don't increase it exponentially and stops when max levels are reached. Exposure affects of all reagents are lessened upon continuous exposure refactor: refactors how reagent affects are applied on mobs. Report bugs on github /🆑 |
||
|
|
7424ad8f0d |
You can wring out damp rags to get slightly more mileage out of it (#92112)
## About The Pull Request Using damp rag in hand lets you wring it out, clearing 1/4th of the bloodiness. Takes 2 seconds, plus 1 second per previous wring until it's cleaned ## Why It's Good For The Game Suggested in the community meeting, I thought it was cool ## Changelog 🆑 Melbert qol: Using a damp rag in hand will wring it out, making it usable for a bit longer. /🆑 |
||
|
|
2464126a14 |
You can wring out damp rags to get slightly more mileage out of it (#92112)
## About The Pull Request Using damp rag in hand lets you wring it out, clearing 1/4th of the bloodiness. Takes 2 seconds, plus 1 second per previous wring until it's cleaned ## Why It's Good For The Game Suggested in the community meeting, I thought it was cool ## Changelog 🆑 Melbert qol: Using a damp rag in hand will wring it out, making it usable for a bit longer. /🆑 |
||
|
|
d21155b475 |
Fixes nonhuman blood bloodpacks spawning non-blood blood (#92063)
## About The Pull Request Blood pack code is abyssmal and I somehow missed it during my refactor. Refactored how they spawn blood which should fix it not actually doing anything when splashed/used in reactions, and also lizard blood not getting its green color. - Closes #92008 ## Changelog 🆑 fix: Fixed lizard blood bloodpacks being red instead of green refactor: Refactored blood packs /🆑 |
||
|
|
dd00941e32 |
Makes the Organ Jar printable, lowers it chemical capacity and makes it pour large amounts at once (#92003)
## About The Pull Request A note to start: the coroner's mail goodie is untouched. They still get their brain-in-a-jar, prefilled with formaldehyde and with the ghostrole-brain. **First part is fairly simple. It's printable now.**  **Balance is hopefully also simple...** Originally it could store 150u, which just made it an improvement over most of the other basic beakers... but it shouldn't even be useful in chemistry, it's rather unshapely for that! So the balance is as follows: - It stores 120u of chemicals, printable roundstart. _Identical to the X-Large Beaker - even in cost, needing some plastic (which makes it shatter-proof. i guess.)_ - The unwieldy lip means it can only pour in large amounts (20, 40, 60, 120) _It's not ideal for mixing in chemistry... This will **hopefully** discourage using it where it'd look out-of-place. Why juggle big numbers when you can use easier to handle, equivalent X-Large Beaker?_ If players so choose they **can**, of course, still mix their spacedrugs soaking in a bottle with a Felinid Liver. It's just not a preferred shift-start beaker. _Also it's a /beaker subtype now because I wanted to inherit some things, like the pickup/drop sounds. This technically means it works as a component in machines, but since it's equal to an X-Large beaker that doesn't really mean anything. Just a funny interaction._ ## Why It's Good For The Game I can finally torment my patients without having to hope the Mail Gods deem me (or the department Coroner) worthy. The idea of gifting them their inflamed appendix in a preserved jar makes me happy.  ## Changelog 🆑 add: Medical (and Science) can now print Organ Jars from their protolathes! Their shatter-proofing requires some plastic, though. balance: Organ Jar capacity lowered to 120u, and they can only pour in large quantities (have you ever tried pouring out of a jar with a lip like that? Disaster. Such a mess.). /🆑 |
||
|
|
6e48908a6e |
Fixes nonhuman blood bloodpacks spawning non-blood blood (#92063)
## About The Pull Request Blood pack code is abyssmal and I somehow missed it during my refactor. Refactored how they spawn blood which should fix it not actually doing anything when splashed/used in reactions, and also lizard blood not getting its green color. - Closes #92008 ## Changelog 🆑 fix: Fixed lizard blood bloodpacks being red instead of green refactor: Refactored blood packs /🆑 |
||
|
|
1cd78246b4 |
Makes the Organ Jar printable, lowers it chemical capacity and makes it pour large amounts at once (#92003)
## About The Pull Request A note to start: the coroner's mail goodie is untouched. They still get their brain-in-a-jar, prefilled with formaldehyde and with the ghostrole-brain. **First part is fairly simple. It's printable now.**  **Balance is hopefully also simple...** Originally it could store 150u, which just made it an improvement over most of the other basic beakers... but it shouldn't even be useful in chemistry, it's rather unshapely for that! So the balance is as follows: - It stores 120u of chemicals, printable roundstart. _Identical to the X-Large Beaker - even in cost, needing some plastic (which makes it shatter-proof. i guess.)_ - The unwieldy lip means it can only pour in large amounts (20, 40, 60, 120) _It's not ideal for mixing in chemistry... This will **hopefully** discourage using it where it'd look out-of-place. Why juggle big numbers when you can use easier to handle, equivalent X-Large Beaker?_ If players so choose they **can**, of course, still mix their spacedrugs soaking in a bottle with a Felinid Liver. It's just not a preferred shift-start beaker. _Also it's a /beaker subtype now because I wanted to inherit some things, like the pickup/drop sounds. This technically means it works as a component in machines, but since it's equal to an X-Large beaker that doesn't really mean anything. Just a funny interaction._ ## Why It's Good For The Game I can finally torment my patients without having to hope the Mail Gods deem me (or the department Coroner) worthy. The idea of gifting them their inflamed appendix in a preserved jar makes me happy.  ## Changelog 🆑 add: Medical (and Science) can now print Organ Jars from their protolathes! Their shatter-proofing requires some plastic, though. balance: Organ Jar capacity lowered to 120u, and they can only pour in large quantities (have you ever tried pouring out of a jar with a lip like that? Disaster. Such a mess.). /🆑 |
||
|
|
690bfc04b4 |
Rebalances wound determination values, wounding escalation and wound armor to hopefully be less explosive (#91099)
This is a big one so please bear with me, wounds are complicated We've decreased the max contributed damage to wound rolls from 35 to 25. This results, after the exponent, a max possible wound roll of 1 to 91 before any modifiers (assuming the attack, after armor, is 25 or above). The minimum value to wound is still 5. Most wounds were contributing significant numbers per wound type to the potential for a new wound to occur. Getting wounded once meant you were getting wound a lot, but actually getting past that first wounding may be the tricky part. We have significantly reigned in the wound penalty that having a wound contributes, and instead utilize the series wound penalty to allow same type wounds to escalate themselves faster as a priority. Having wounds still makes you more wound vulnerable, just not to such an extreme degree. The priority here for what wounds matter most for contributing to overall wounding vulnerability is ``Infected BURNS > BURNS > SLASH|PIERCE > BLUNT.`` Wound armor, unlike all other kinds of armor, was used as a additive value to the wound roll modifiers rather than a multiplicative value. We have reworked how wound armor is determined by changing how wound modifiers are calculated. Firstly, we're passing our entire injury roll into the ``check_woundings_mod()`` proc, as we're not treating this as a proc that just adds values anymore. Secondly, bare wound bonus only applies if there is no potential wound protection from any source, as expected. But it comes last in the calculations. Thirdly, wound protection is applied to the injury roll last, after wound bonuses from the attack, wound bonuses from other wounds and wound bonuses from a disabled limb are applied. This does not include serial wound bonuses, which are determined outside of this proc. Wound protection comes from two sources. Clothing and limb wound resistance. Your chest and head have an amount of wound resistance so long as they are not mangled in any fashion. Being mangled means having either a hairline fracture or a weeping avulsion wound. Wound protection reduces the final injury roll by a percentage. Say our roll is 50, and we have effectively 50% wound protection. The final roll would be 25. ~~Most clothing have had their wound armor values changed. As a loose rule, I used the highest of melee or bomb armor, except where that value was 100, in which case I used the lowest instead. I'm basing this decision on how embeds are calculated, which is attack type agnostic.~~ ~~Some armor have inconsistent values because they are alternative armors to an existing armor type or are hyperspecialized armor. Ablative, bulletproof and security vests all share a value of 35, despite the former two not having decent melee or bomb armor.~~ ~~Some clothing missing wound armor that should have had them now have wound armor.~~ ~~This may need a bit of scrutiny in case one or two seem weirdly high. Some have maybe become too low. Its a bit hard to say.~~ I changed it to ``exposed_wound_bonus`` to better represent when it applies. You can be naked and still not be affected by this bonus if the limb has wound resistance. I'm not promising anything with this PR, but this is an attempt to sanity check the values on wounds so that we're not seeing what the data that determined the removal of beheading presented. An extreme over-representation of tier 3 wounds. ~~And, from that, maybe I can argue for beheadings coming back. That's my goal. I think beheadings happened so much because the numbers were in need of work.~~ Well okay I just wanna make wounds a bit more workable actually more than I want beheadings. Why is it that tier 3 wounds were so over-represented? Because wounds will often force more severe wounds of other types by merit of any wounds existing at all on a limb. Having **_a_** wound makes you more wound prone for any kind of wound, and not just making you more likely to suffer a more severe type of the same wound. The threshold mechanic was intended to simulate making a wound worse, but oddly just made a limb broadly more prone to getting worse from any kind of attack to such a degree that future wound rolls of different types were often going to start at the threshold necessary to be a tier 3 wound. Dismemberment, mind you, requires you to suffer a flesh wound while you have a bone wound of tier 2 or higher (with tier 3 giving a bonus to this). You can do this readily via just a sharp weapon, because having a mangled limb causes the wound to turn into a bone wound. Technically, this is meant to be less likely as the effective damage for this wound is halved. But the wound bonus from having a flesh wound was almost always significant enough to kick your new bone wound up to a tier 3. In other words; its not surprising that you saw so many beheadings, because the system wanted to behead you as fast as it possibly can thanks to all these escalating values. Wound armor was only applied as a flat reduction on the roll. The average for wound armor was 10. After receiving a single wound, you can expect wound rolls to reach upwards of 100, even if the actual damage roll was not particularly high, due to wound stacking bonuses form being wounded. This meant that wounds, if they happened, came thick and fast after the first, regardless of what your protection might be to wounds. It was just a matter of getting past the initial bump. This is why effects that forced wounds were so powerful. They basically made a given limb more prone to taking a wound without having to deal with the protection problem first. Finally, this is just a broad flaw with the system that is not its fault. It is actually a problem that isn't a problem. Most people in the game are not wearing helmets that protect their head. So most people are going to suffer from a higher proclivity of being wounded if people are aiming for the head. There is this...kind of cargo cult belief that aiming for the head means you do more damage, or can stun someone if you're lucky or what have you. It's entirely nonsense, but it has a grain of truth in that people rarely wear, or even have access too, headwear that provides wound protection or any protection at all. People have jumpsuits, which are universally wound protected, but that isn't true of the head. Look, the point is, they're not aiming at the head because it is usually less armored, its for other reasons but it just so happens to become true due to wounds and how wounds roll their type. To soften this issue, I've decided to treat wound resistance as armor until the limb suffers a tier 3 wound. This way, hits to the head MAY not necessarily escalate to tier 3 instantly as they would on live even from relatively low power weapons. Some weapons have very low force, but have extreme bare wound bonuses. This should be less likely after this change. I doubt this will necessarily make high damage high wound weapons like energy swords any less prone to cutting you clean open, but it might thanks to the reduction to contributed damage to the injury roll. The system is now _a bit more random_. 🆑 balance: Wounds do not make you as vulnerable to suffering wounds of all types as before. Instead, wounds make you more vulnerable to suffering worse versions of themselves as a priority. balance: Wound armor is now more impactful when protecting you from wounds when you have already been wounded. balance: Your head and chest are more difficult to wound until they have been mangled; either from suffering from a weeping avulsion or a hairline fracture. code: Changed the variable for bare_wound_bonus to exposed_wound_bonus to better explain what that variable is doing. /🆑 --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> |
||
|
|
57624ca1e2 |
Rebalances wound determination values, wounding escalation and wound armor to hopefully be less explosive (#91099)
## About The Pull Request This is a big one so please bear with me, wounds are complicated ### Max Potential Wound Rolls We've decreased the max contributed damage to wound rolls from 35 to 25. This results, after the exponent, a max possible wound roll of 1 to 91 before any modifiers (assuming the attack, after armor, is 25 or above). The minimum value to wound is still 5. ### Wound Escalation Penalties Most wounds were contributing significant numbers per wound type to the potential for a new wound to occur. Getting wounded once meant you were getting wound a lot, but actually getting past that first wounding may be the tricky part. We have significantly reigned in the wound penalty that having a wound contributes, and instead utilize the series wound penalty to allow same type wounds to escalate themselves faster as a priority. Having wounds still makes you more wound vulnerable, just not to such an extreme degree. The priority here for what wounds matter most for contributing to overall wounding vulnerability is ``Infected BURNS > BURNS > SLASH|PIERCE > BLUNT.`` ### Wound Armor Wound armor, unlike all other kinds of armor, was used as a additive value to the wound roll modifiers rather than a multiplicative value. We have reworked how wound armor is determined by changing how wound modifiers are calculated. Firstly, we're passing our entire injury roll into the ``check_woundings_mod()`` proc, as we're not treating this as a proc that just adds values anymore. Secondly, bare wound bonus only applies if there is no potential wound protection from any source, as expected. But it comes last in the calculations. Thirdly, wound protection is applied to the injury roll last, after wound bonuses from the attack, wound bonuses from other wounds and wound bonuses from a disabled limb are applied. This does not include serial wound bonuses, which are determined outside of this proc. Wound protection comes from two sources. Clothing and limb wound resistance. Your chest and head have an amount of wound resistance so long as they are not mangled in any fashion. Being mangled means having either a hairline fracture or a weeping avulsion wound. Wound protection reduces the final injury roll by a percentage. Say our roll is 50, and we have effectively 50% wound protection. The final roll would be 25. ### ~~Wound Armor on Clothing~~ Reverted ~~Most clothing have had their wound armor values changed. As a loose rule, I used the highest of melee or bomb armor, except where that value was 100, in which case I used the lowest instead. I'm basing this decision on how embeds are calculated, which is attack type agnostic.~~ ~~Some armor have inconsistent values because they are alternative armors to an existing armor type or are hyperspecialized armor. Ablative, bulletproof and security vests all share a value of 35, despite the former two not having decent melee or bomb armor.~~ ~~Some clothing missing wound armor that should have had them now have wound armor.~~ ~~This may need a bit of scrutiny in case one or two seem weirdly high. Some have maybe become too low. Its a bit hard to say.~~ ### The ``bare_wound_bonus`` variable I changed it to ``exposed_wound_bonus`` to better represent when it applies. You can be naked and still not be affected by this bonus if the limb has wound resistance. ## Why It's Good For The Game I'm not promising anything with this PR, but this is an attempt to sanity check the values on wounds so that we're not seeing what the data that determined the removal of beheading presented. An extreme over-representation of tier 3 wounds. ~~And, from that, maybe I can argue for beheadings coming back. That's my goal. I think beheadings happened so much because the numbers were in need of work.~~ Well okay I just wanna make wounds a bit more workable actually more than I want beheadings. Why is it that tier 3 wounds were so over-represented? Because wounds will often force more severe wounds of other types by merit of any wounds existing at all on a limb. Having **_a_** wound makes you more wound prone for any kind of wound, and not just making you more likely to suffer a more severe type of the same wound. The threshold mechanic was intended to simulate making a wound worse, but oddly just made a limb broadly more prone to getting worse from any kind of attack to such a degree that future wound rolls of different types were often going to start at the threshold necessary to be a tier 3 wound. Dismemberment, mind you, requires you to suffer a flesh wound while you have a bone wound of tier 2 or higher (with tier 3 giving a bonus to this). You can do this readily via just a sharp weapon, because having a mangled limb causes the wound to turn into a bone wound. Technically, this is meant to be less likely as the effective damage for this wound is halved. But the wound bonus from having a flesh wound was almost always significant enough to kick your new bone wound up to a tier 3. In other words; its not surprising that you saw so many beheadings, because the system wanted to behead you as fast as it possibly can thanks to all these escalating values. Wound armor was only applied as a flat reduction on the roll. The average for wound armor was 10. After receiving a single wound, you can expect wound rolls to reach upwards of 100, even if the actual damage roll was not particularly high, due to wound stacking bonuses form being wounded. This meant that wounds, if they happened, came thick and fast after the first, regardless of what your protection might be to wounds. It was just a matter of getting past the initial bump. This is why effects that forced wounds were so powerful. They basically made a given limb more prone to taking a wound without having to deal with the protection problem first. Finally, this is just a broad flaw with the system that is not its fault. It is actually a problem that isn't a problem. Most people in the game are not wearing helmets that protect their head. So most people are going to suffer from a higher proclivity of being wounded if people are aiming for the head. There is this...kind of cargo cult belief that aiming for the head means you do more damage, or can stun someone if you're lucky or what have you. It's entirely nonsense, but it has a grain of truth in that people rarely wear, or even have access too, headwear that provides wound protection or any protection at all. People have jumpsuits, which are universally wound protected, but that isn't true of the head. Look, the point is, they're not aiming at the head because it is usually less armored, its for other reasons but it just so happens to become true due to wounds and how wounds roll their type. To soften this issue, I've decided to treat wound resistance as armor until the limb suffers a tier 3 wound. This way, hits to the head MAY not necessarily escalate to tier 3 instantly as they would on live even from relatively low power weapons. Some weapons have very low force, but have extreme bare wound bonuses. This should be less likely after this change. I doubt this will necessarily make high damage high wound weapons like energy swords any less prone to cutting you clean open, but it might thanks to the reduction to contributed damage to the injury roll. The system is now _a bit more random_. ## Changelog 🆑 balance: Wounds do not make you as vulnerable to suffering wounds of all types as before. Instead, wounds make you more vulnerable to suffering worse versions of themselves as a priority. balance: Wound armor is now more impactful when protecting you from wounds when you have already been wounded. balance: Your head and chest are more difficult to wound until they have been mangled; either from suffering from a weeping avulsion or a hairline fracture. code: Changed the variable for bare_wound_bonus to exposed_wound_bonus to better explain what that variable is doing. /🆑 --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> |
||
|
|
c906b85d30 |
Audits wash/cleaning signals + refactors wash() to ensure no needless mob updates occur (#91259)
## About The Pull Request This has the potential to create a lot of needless mob updates which is not great. Now should only update a mob's clothing if it was actually washed. This PR 1) ensures that all wash() procs return a bitflag. 2) ensures that `wash()` proccalls which result in expensive operations like icon updates only do so when it is necessary ## Why It's Good For The Game Updating mob sprites is expensive, and doing it when nothing has been changed is bad. ## Changelog Nothing really player facing |
||
|
|
1f3894e793 |
Crafting refactor, implementing materials (#89465)
My original plan was to just implement materials into crafting so that items would inherit the materials of their components, allowing for some interesting stuff if the material flags of the item allow it. However to my dismay crafting is a pile of old tech debt, starting from the old `del_reqs` and `CheckParts` which still contain lines about old janky bandaids that are no longer in use nor reachable, up to the `customizable_reagent_holder` component which has some harddel issues when your custom food is sliced, and items used in food recipes not being deleted and instead stored inside the result with no purpose as well as other inconsistencies like stack recipes that transfer materials having counterparts in the UI that don't do that. EDIT: Several things have come up while working on this, so I apologise that it ended up changing over 100+ files. I managed to atomize some of the changes, but it's a bit tedious. EDIT: TLDR because I was told this section is too vague and there's too much going on. This PR: - Improves the dated crafting code (not the UI). - replaced `atom/CheckParts` and `crafting_recipe/on_craft_completion` with `atom/on_craft_completion`. - Reqs used in food recipes are now deleted by default and not stored inside the result (they did nothing). - Renames the customizable_reagent_holder comp and improves it (No harddels/ref issues). - Adds a unit test that tries to craft all recipes to see what's wrong (it skips some of the much more specific reqs for now). - In the unit test is also the code to make sure materials of the crafted item and a non-crafted item of the same type are roughly the same, so far only applied to food. - Some mild material/food refactoring around the fact that food item code has been changed to support materials. Improving the backbone of the crafting system. Also materials and food code. 🆑 refactor: Refactored crafting backend. Report possible pesky bugs. balance: the MEAT backpack (from the MEAT cargo pack) may be a smidge different because of code standardization. /🆑 |
||
|
|
d841c9df40 |
[MDB IGNORE] Blood Refactor Chapter 2: Collector's Edition (#91054)
Refactors most of blood handling code untouched by #90593 and completely rewrites all blood decals, components and reagents. - Blood types now have behavioral flags which allow them to control where they leave decals/DNA/viruses. Oil no longer transfers DNA and viruses with it, while podpeople water-blood doesn't leave visible decals on turfs and items, but still can be picked up by DNA scanners. - Multiple blood types have received unique handling - liquid electricity blood now glows in the dark, oil trails are flammable and lube ones are slippery. Oil blood can be restored with fuel, lube with silicon and slime with stable plasma (as normal plasma already passively regenerates their blood), instead of everything using iron. Saline solution only supplements on iron-based blood and won't do anything to help with bloodloss for species who rely on different blood types. (Roundstart this applies only to Ethereals) - All blood logic has been moved away from the blood reagent itself into a blood element that is assigned to the blood reagent by default, and to any reagent that's drawn from a mob as their "blood" (in ``transfer_blood_to``). This means that blood you draw from lizards will be green and have lizard's blood description instead of mentioning red blood cells, Ethereal "blood" will actually contain their DNA and genes, etc. - Refactored all blood decals. Blood states are no more, everything is now handled via blood DNA. Credits to MrMelbert and Maplestation, as a significant amount of code has been taken from https://github.com/MrMelbert/MapleStationCode/pull/436 and many of his followup PRs. Oil and xenomorph splatters are now subtypes of blood, blood drying is now animated, blood trails now curve and can be diagonal. - Rewrote bloodysoles and bloody_spreader components, credits to Melbert again for the former, while latter now makes more sense with its interactions. Bloody soles no longer share blood DNA with your hands. - Ported Melbert's bloody footprint sprites and bot-blood-spreading functionality. - Removed all species-side reagent interactions, instead they're handled by said species' livers. (This previously included exotic blood handling, thus the removal) - Slightly optimized human rendering by removing inbetween overlay holders for clothing when they're not needed. - Blood-transmitted diseases will now get added to many more decals than before. - Cleaned up and partially refactored replica pods, fixed an issue where monkeys/manipulators were unable to harvest mindless pods. - Exotic bloodtype on species now automatically assigns their blood reagent, without the need to assign them separately. - Clown mobs now bleed (with colorful reagent instead of blood during april fools), and so do vatbeasts (lizard blood) - Implemented generic procs for handling bleeding checks, all sorts of scanners now also correctly call your blood for what it is. - Podpeople's guts are now lime-green like their organs, instead of being weirdly greyish like their water-blood. (Their bleeding overlays are still grey, as they're bleeding water) - Slimepeople now can bleed. Their jelly is pale purple in color, but their wound overlays copy their body color. - Injecting/spraying/splashing/etc mob with a reagent preserves its data, so you could theoretically recycle fine wines from someone's bloodstream - Fixed burdened chaplain's sect never actually giving a blessing when applying effects, and giving a blessing when nothing can be healed. Inverted check strikes again. - Closes #91039 A lot of blood here has dried, visually the blood colors are almost exactly the same as before either of the blood refactors.   |
||
|
|
2bae025bfe |
Audits wash/cleaning signals + refactors wash() to ensure no needless mob updates occur (#91259)
## About The Pull Request This has the potential to create a lot of needless mob updates which is not great. Now should only update a mob's clothing if it was actually washed. This PR 1) ensures that all wash() procs return a bitflag. 2) ensures that `wash()` proccalls which result in expensive operations like icon updates only do so when it is necessary ## Why It's Good For The Game Updating mob sprites is expensive, and doing it when nothing has been changed is bad. ## Changelog Nothing really player facing |
||
|
|
4f6727024d |
Crafting refactor, implementing materials (#89465)
## About The Pull Request My original plan was to just implement materials into crafting so that items would inherit the materials of their components, allowing for some interesting stuff if the material flags of the item allow it. However to my dismay crafting is a pile of old tech debt, starting from the old `del_reqs` and `CheckParts` which still contain lines about old janky bandaids that are no longer in use nor reachable, up to the `customizable_reagent_holder` component which has some harddel issues when your custom food is sliced, and items used in food recipes not being deleted and instead stored inside the result with no purpose as well as other inconsistencies like stack recipes that transfer materials having counterparts in the UI that don't do that. EDIT: Several things have come up while working on this, so I apologise that it ended up changing over 100+ files. I managed to atomize some of the changes, but it's a bit tedious. EDIT: TLDR because I was told this section is too vague and there's too much going on. This PR: - Improves the dated crafting code (not the UI). - replaced `atom/CheckParts` and `crafting_recipe/on_craft_completion` with `atom/on_craft_completion`. - Reqs used in food recipes are now deleted by default and not stored inside the result (they did nothing). - Renames the customizable_reagent_holder comp and improves it (No harddels/ref issues). - Adds a unit test that tries to craft all recipes to see what's wrong (it skips some of the much more specific reqs for now). - In the unit test is also the code to make sure materials of the crafted item and a non-crafted item of the same type are roughly the same, so far only applied to food. - Some mild material/food refactoring around the fact that food item code has been changed to support materials. ## Why It's Good For The Game Improving the backbone of the crafting system. Also materials and food code. ## Changelog 🆑 refactor: Refactored crafting backend. Report possible pesky bugs. balance: the MEAT backpack (from the MEAT cargo pack) may be a smidge different because of code standardization. /🆑 |
||
|
|
b4061f1800 |
[MDB IGNORE] Blood Refactor Chapter 2: Collector's Edition (#91054)
## About The Pull Request Refactors most of blood handling code untouched by #90593 and completely rewrites all blood decals, components and reagents. - Blood types now have behavioral flags which allow them to control where they leave decals/DNA/viruses. Oil no longer transfers DNA and viruses with it, while podpeople water-blood doesn't leave visible decals on turfs and items, but still can be picked up by DNA scanners. - Multiple blood types have received unique handling - liquid electricity blood now glows in the dark, oil trails are flammable and lube ones are slippery. Oil blood can be restored with fuel, lube with silicon and slime with stable plasma (as normal plasma already passively regenerates their blood), instead of everything using iron. Saline solution only supplements on iron-based blood and won't do anything to help with bloodloss for species who rely on different blood types. (Roundstart this applies only to Ethereals) - All blood logic has been moved away from the blood reagent itself into a blood element that is assigned to the blood reagent by default, and to any reagent that's drawn from a mob as their "blood" (in ``transfer_blood_to``). This means that blood you draw from lizards will be green and have lizard's blood description instead of mentioning red blood cells, Ethereal "blood" will actually contain their DNA and genes, etc. - Refactored all blood decals. Blood states are no more, everything is now handled via blood DNA. Credits to MrMelbert and Maplestation, as a significant amount of code has been taken from https://github.com/MrMelbert/MapleStationCode/pull/436 and many of his followup PRs. Oil and xenomorph splatters are now subtypes of blood, blood drying is now animated, blood trails now curve and can be diagonal. - Rewrote bloodysoles and bloody_spreader components, credits to Melbert again for the former, while latter now makes more sense with its interactions. Bloody soles no longer share blood DNA with your hands. - Ported Melbert's bloody footprint sprites and bot-blood-spreading functionality. - Removed all species-side reagent interactions, instead they're handled by said species' livers. (This previously included exotic blood handling, thus the removal) - Slightly optimized human rendering by removing inbetween overlay holders for clothing when they're not needed. - Blood-transmitted diseases will now get added to many more decals than before. - Cleaned up and partially refactored replica pods, fixed an issue where monkeys/manipulators were unable to harvest mindless pods. - Exotic bloodtype on species now automatically assigns their blood reagent, without the need to assign them separately. - Clown mobs now bleed (with colorful reagent instead of blood during april fools), and so do vatbeasts (lizard blood) - Implemented generic procs for handling bleeding checks, all sorts of scanners now also correctly call your blood for what it is. - Podpeople's guts are now lime-green like their organs, instead of being weirdly greyish like their water-blood. (Their bleeding overlays are still grey, as they're bleeding water) - Slimepeople now can bleed. Their jelly is pale purple in color, but their wound overlays copy their body color. - Injecting/spraying/splashing/etc mob with a reagent preserves its data, so you could theoretically recycle fine wines from someone's bloodstream - Fixed burdened chaplain's sect never actually giving a blessing when applying effects, and giving a blessing when nothing can be healed. Inverted check strikes again. - Closes #91039 #### Examples A lot of blood here has dried, visually the blood colors are almost exactly the same as before either of the blood refactors.   |
||
|
|
c850287ed1 |
Adds 2u sanguarite to atropine medipens (#91325)
## About The Pull Request Adds 2u sanguarite (Coagulant) to atropine medipens (The ones provided to nuclear operatives and in the advanced medkit) ## Why It's Good For The Game Every crew member who isnt a syndicate operative spawns with a medipen with coagulant. It doesn't make sense why syndicate operatives somehow have worse medipens provided to them in their survival kits, while being basically a direct upgrade otherwise. In my experience, bleeds tend to be an absolute killer of nukies. Letting nukies deal with a single bleed by default puts them on-par with any other human in this regard, and reinforces the belief that 'the medipen in the survival box helps with bleeds'. ## Changelog 🆑 add: Adds 2u sanguarite to atropens /🆑 |
||
|
|
170f4c8af3 |
adds snail swabbing (#91197)
## About The Pull Request a player requested i add this, i think its harmless enough to add, but u can now swab snails, or mapped in watering cans in botany for snail samples ## Why It's Good For The Game adds a few more beneficial creatures to the cytology pool, these ones specifically being helpful for botanists. ## Changelog 🆑 add: snails are now growable from cytology. u can swab snails or watering cans for samples /🆑 |
||
|
|
35d7b314c7 |
Adds 2u sanguarite to atropine medipens (#91325)
## About The Pull Request Adds 2u sanguarite (Coagulant) to atropine medipens (The ones provided to nuclear operatives and in the advanced medkit) ## Why It's Good For The Game Every crew member who isnt a syndicate operative spawns with a medipen with coagulant. It doesn't make sense why syndicate operatives somehow have worse medipens provided to them in their survival kits, while being basically a direct upgrade otherwise. In my experience, bleeds tend to be an absolute killer of nukies. Letting nukies deal with a single bleed by default puts them on-par with any other human in this regard, and reinforces the belief that 'the medipen in the survival box helps with bleeds'. ## Changelog 🆑 add: Adds 2u sanguarite to atropens /🆑 |
||
|
|
b639a4d6e5 |
adds snail swabbing (#91197)
## About The Pull Request a player requested i add this, i think its harmless enough to add, but u can now swab snails, or mapped in watering cans in botany for snail samples ## Why It's Good For The Game adds a few more beneficial creatures to the cytology pool, these ones specifically being helpful for botanists. ## Changelog 🆑 add: snails are now growable from cytology. u can swab snails or watering cans for samples /🆑 |