mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-13 00:55:20 +01:00
masterfixes
101 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
f601a6ddaf | Merge remote-tracking branch 'tgstation/master' into upstream-6-2-2026 | ||
|
|
cc34f01082 |
Fixes plumbing ducts having weird shadows (#96102)
## About The Pull Request UPDATE_ICON is needed rather than UPDATE_ICON_STATE to update the emissive blocker Closes #96076 ## Changelog 🆑 fix: Fixed plumbing ducts having weird shadows /🆑 |
||
|
|
eaba74a2eb |
Fixes for boulder processing machines (#96033)
## About The Pull Request - Opening the panel of a boulder refiner machine or un-wrenching it now turns off its environment light - The boulder refiner machine has reagent holder of type `/datum/reagents/plumbing` which fixes rounding errors & has other plumbing optimized features - The boulder refiner machine now only takes in booster reagents & only outputs waste reagent. This means even if you have a tank with random reagents attached to it, it will only take in booster reagents if present & exclude the rest thus saving you time & space from taking in other reagents - booster reagents is now a static list shared by all machines thus saving memory - Removed `supply_offset` & `demand_offset` vars from core plumbing component. These vars were making the pipes extend outside the tile causing it to overlap with adjacent tile machine pipes making everything ugly. Now the pipes are perpendicular to the conveyer belt sprite and will only take in boulders from the conveyer belt direction https://github.com/user-attachments/assets/5583a790-32b6-40df-a414-1602dd84fefd - Map edited smelters so the conveyer belt is in the direction of the refiner ## Changelog 🆑 fix: opening panel of boulder refinery with screwdriver or un-wrenching it turns of its light fix: boulder refinery only takes in booster reagents and excludes others and only outputs waste chemicals as intended fix: boulder refinery machines outputs waste reagents without rounding errors in them qol: removed conveyer sprite from boulder smelter & pixel shifts the refiner so you can see it's plumbing pipes properly sprite: smelters will now only take in boulders in the direction of its conveyer belt. It's plumbing pipes are perpendicular to its conveyer belt /🆑 |
||
|
|
003102864d |
Plumbing nit picks & Qol (#96123)
## About The Pull Request - 1 variable removal & comment correction which i found when looking over the files - Increases plumbing assimilator heating to that of tier 3 heating chem heater ## Changelog 🆑 qol: plumbing assimilator has higher heating coefficient to that of tier 3 chem heater /🆑 |
||
|
|
ccc21d1f30 |
Lets you wrench plumbing machines on ducts/machinery again (#5577)
## About The Pull Request TG changed the behavior of the plumbing machinery to not allow it anymore, much to the chagrin of chem players. ## Why It's Good For The Game Lets chem players use the setups they have been using, nice and compact. I have been requested by Several Chem Players to restore it to the old behavior. ## Proof Of Testing <img width="216" height="224" alt="afbeelding" src="https://github.com/user-attachments/assets/6abc548a-a84e-444b-8742-9222afa18161" /> <img width="344" height="76" alt="afbeelding" src="https://github.com/user-attachments/assets/35875eb2-ab37-4a7a-8161-0246146d65cb" /> <details> <summary>Screenshots/Videos</summary> </details> ## Changelog 🆑 balance: You can once more place chemistry machines on ducts/manifolds/etc /🆑 |
||
|
|
21b4095dfd |
[MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)
Upstream 04/17/2026 fixes https://github.com/Bubberstation/Bubberstation/issues/5549 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com> Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com> Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com> Co-authored-by: loganuk <fakeemail123@aol.com> Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com> Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> Co-authored-by: Lucy <lucy@absolucy.moe> Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com> Co-authored-by: Isratosh <Isratosh@hotmail.com> Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com> Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com> Co-authored-by: Alexander V. <volas@ya.ru> Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com> Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: Tim <timothymtorres@gmail.com> Co-authored-by: Iamgoofball <iamgoofball@gmail.com> Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com> Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com> Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com> Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com> Co-authored-by: Josh <josh.adam.powell@gmail.com> Co-authored-by: Josh Powell <josh.powell@softwire.com> Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com> Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com> Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com> Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com> |
||
|
|
0c91535120 | Arcmining: Chemical Boosting (#95530) | ||
|
|
c22d03aa8f |
Fixes plumbing pill press production quality (#95349)
## About The Pull Request - Fixes #95297 ## Changelog 🆑 fix: plumbing pill press won't store reagents & products if the total capacity for both is reached thus stopping faulty product creation (imbalanced reagent ratios) and power consumption /🆑 |
||
|
|
e90018a3eb |
Stops unessassary reactions from occurring in plumbing machines (#95125)
## About The Pull Request This PR stops reactions from occurring in plumbing machines except for 2 - Reaction chamber - Acclimator This means you can now have a tank containing welding fuel, carbon & hydrogen and not worry about them reacting to create oil ## Why its good for the game - Makes the game run faster. Calling `handle_reactions()` is an expensive operation and should not be done needlessly - Makes life for players easier. We don't want chemicals reacting before they reach the reaction chamber & acclimator and making them obsolete. It now allows them to do their job properly **Dependencies** - #95077 - #95084 After they are merged. Part of their code needs to be rewritten here. This also deletes the redundant splitter sprite ## Changelog 🆑 qol: except for plumbing reaction chamber & acclimator, no reactions will occur inside plumbing machines /🆑 |
||
|
|
6854e08ba0 |
General maintenance for plumbing acclimator (#95077)
## About The Pull Request - Made the UI more compact by removing options like turning on the accmilator & setting acceptable temperature range. They are neither intuitive nor useful for player and can be set in code directly as constants <details><summary>Here are the before & after pictures</summary> <p> **Before** <img width="317" height="270" alt="Screenshot (4)" src="https://github.com/user-attachments/assets/db5bf02d-8953-407d-8dc9-80d70c92b2be" /> **After** <img width="318" height="130" alt="Screenshot (5)" src="https://github.com/user-attachments/assets/3f562481-426d-40e1-8449-231dd6fe81c3" /> </p> </details> - Setting maximum volume now won't change the reagent holder maximum volume which broke chemical reactions and created ghost chemicals. It now accurately measures the input levels before starting heating/cooling - Fixed power usage so it matches that of chem heater - Added new icon state for filling & emptying reagents ## Changelog 🆑 refactor: plumbing accmilator code has been improved. Report bugs on github /🆑 |
||
|
|
ca436ad925 |
General maintenance for plumbing filter & splitter (#95084)
## About The Pull Request - Both UI's now don't auto update so it saves some bandwidth on the client side - Removed English version list on the chemical splitter list to save memory. It now auto computes it - Plumbing splitter now sends reagents even if the requested amount is larger than the amount set - Removed unused & redundant vars from both. Code is more compat - Plumbing splitter is a 3 way component allowing you to split reagents in 3 directions ## Changelog 🆑 refactor: code for plumbing splitter & filter have been improved. plumbing splitter is now a 3 way component. Report bugs on github /🆑 --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> |
||
|
|
4271c8bb33 |
General maintenance for plumbing automatic buffer (#94945)
## About The Pull Request - Adds examines & screen tips for resetting connections & changing threshold of plumbing automatic buffer - Removes `datum/buffer_net` and replaces it with a simple list of connections for memory savings - Replaced `attack_by()` attack chain for screwdriver with `screwdriver_act()` - Added tgui for plumbing buffer ## Changelog 🆑 refactor: plumbing automatic buffer has been refactored for better performance & interactions. report bugs on github /🆑 |
||
|
|
8bacdd2b71 |
[NO GBP] Allows plumbing machines on ducts with different layers (#95052)
## About The Pull Request - Closes #95039. Although intentionally removed in #94678 the inconvenience of not allowing ducts under machines of different layers isn't worth the visual clutter it has helped in reducing so I'm bringing it back ## Changelog 🆑 qol: you can place plumbing machines on ducts with different layers again /🆑 |
||
|
|
c779efbeec |
General maintenance for plumbing disposer (#94944)
## About The Pull Request - Plumbing disposer disposal rate can now be changed with hand nad has TGUI interface. It accepts a value between 5->15 meaning it can dispose anywhere from 10u to 50u reagents per tick. Added examines & screen tips for the same - Fixes plumbing disposer icon state not correctly switching between working and off under certain circumstances ## Changelog 🆑 qol: plumbing disposer now has TGUI interface for operations fix: plumbing disposer icon state correctly switches between on & off under circumstances /🆑 |
||
|
|
6dcd9b7b4b | [NO GBP]Fixes layer and colour select of duct stack (#95000) | ||
|
|
7fc6e1402a |
Additional maintenance for plumbing related stuff (#94753)
## About The Pull Request **Qol** - Adds examines & screen tips for washing items in sinks - Adds examines & screen tips for wall frame items i.e deconstructing with wrench & what structures you can mount them on **Fixes** - Plumbing components inside shuttles now properly reconnect - Plumbing iv drip has their connectors (red & blue pipes) visible again - Sinks consume reagents when washing and won't wash when it becomes dry - Fixes #94942 placing ducts by hand on turf won't run time. Also Plumbing machinery properly reconnects when un wrenching ducts in circular connections - All plumbing machinery now operates in the plumbing subsystem & map loaded machines begin processing **Refactor** - Refactored sink frame into a wall frame item meaning it can now be carried in hand and mounted on walls - Refactored the sink attack chain to use `item_interaction()` instead of `attackby()` - All sinks are now wall mounted components meaning destroying the wall they are attached to will cause it to deconstruct ## Changelog 🆑 qol: added examines & screen tips for wall frame items qol: added examines & screen tips for washing items in sinks fix: plumbing components inside shuttles reconnect to their machine counterparts correctly fix: plumbing iv drip has its red & blue connectors visible again fix: sinks consume reagents when washing and won't wash when it becomes dry fix: map loaded plumbing machines begin processing fix: placing stack of ducts by hand of ducts works again fix; plumbing machinery properly reconnects when un wrenching ducts in circular connections refactor: sinks are now proper wall mounted components meaning destroying their attached walls will cause it to get destroyed & sink frames are wall frame items that can be carried in hand /🆑 |
||
|
|
140885168a |
Improves plumbing machinery layer overlapping behaviour (#94678)
## About The Pull Request - Fixes #94676. You cannot anchor plumbing machinery on tiles that have other plumbing machinery regardless of their layer operating on it - Closes #94681. I have not been able to reproduce it but with wrenching code improved here it should be able to happen - All Plumbing machinery during CI will report overlapping machinery & ducts with the same layer on their tiles - Removed unused signal `COMSIG_OBJ_DEFAULT_UNFASTEN_WRENCH` ## Changelog 🆑 fix: plumbing machinery can't be anchored on top of machines that have other ducts/plumbing machines on them code: improved plumbing layer overlap code to report early bugs /🆑 |
||
|
|
3c5749f862 |
General maintenance for plumbing (#94427)
## About The Pull Request The overall behaviour of everything should stay the same but the memory & speed of these components has been slightly improved and when you scale that across large plumbing factories you get a substantial improvement. Here's a list of the most noticeable changes along with many others that aren't worth mentioning - Removed vars `use_overlays`, `turn_connects`, `recipient_reagents_holder` - `active` var is now replaced with a proc which simply returns is the machine wrenched or not - `turn_connects` has been removed because all machines have their pipes rotate when the machine is rotated. This also removed all the static icon states ending with `-s` from the `dmi` file thus reducing that file size as well - `extend_pipe_to_edge` var is directly integrated into `cut_overlays()` because it's use cases were limited such for showers & sinks - Simplified `Initialize()` a lot. Removed params `start`, `turn_connects`, `custom_receiver`, `extend_pipe_to_edge`. We now only pass `bolt_layer` making that proc faster & less convoluted - Replaced `set_recipient_reagents_holder()` proc with `recipient_reagents_holder()` which returns the reagent holder for holding reagents instead of storing it in the component. This removes the need to hook a qdel signal on the holder & we don't need to keep track of it - Merged a ton of procs to reduce overhead & reduce file size - Plumbing ducts creating the network at mapload is faster without using recursion and the timer subsystem - Deconstructing plumbing ducts is faster in reconstructing the network without using recursion and the timer subsystem This makes managing plumbing code less convoluted & overall better for the foreseeable future. See the lines of code removed vs added and still preserves behaviour ## Changelog 🆑 qol: added examines & screentips for ducts & stack of ducts qol: you can wrench a stack of ducts on the ground to create a pipe refactor: plumbing code has been improved overall. Report bugs on github sprite: removed unused static(does not rotate with machine) icon states for plumbing connections /🆑 --------- Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> |
||
|
|
dc357ab2f7 | Limits the amount of distinct chems that can be held in chemistry factory outputs (#93991) | ||
|
|
2ec99420a3 |
Adds a mapping log to plumbing destroying ducts (#94159)
## About The Pull Request <img width="1321" height="91" alt="image" src="https://github.com/user-attachments/assets/a50510da-5489-46d3-a56f-b47128f72431" /> This will trigger if you create a plumbing machine on top of a duct, but we're only caring for roundstart here? I can't use banned neighbors because I don't want to add a list that must be constantly maintained for every machine that uses the component. ## Why It's Good For The Game Prior to this PR, this is the only error you'd get about this occuring <img width="944" height="60" alt="image" src="https://github.com/user-attachments/assets/849d86e9-5ea4-4748-aa2a-7cf86386b7f3" /> Very undescriptive and I had to go through every single duct on a map to figure out what was being deleted, turns out it was a single duct being mapped on top of a toilet. |
||
|
|
3a54507ee7 |
Gives the automated IV an output pipe and lets you rotate it (#94058)
## About The Pull Request Plumbing IV drip now has an input and an output, the input only works when it's injecting and the output only works when it's draining. You can rotate with it alt click like all other plumbing things now, IV drip hotkeys removed ## Why It's Good For The Game It's an *automated* IV drip, the whole point is you can connect it to plumbing and having half it's functionality just not work is bad. As for the rotation it's waaaaaay more useful than the IV hotkeys for plumbing. ## Changelog 🆑 Cat qol: The plumbing IV drip can be rotate with alt click now add: The plumbing IV drip can now output chemicals into plumbing factories /🆑 fixes #93586 --------- Co-authored-by: John Doe <markkavalerov87@gmail.com> Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> |
||
|
|
d532cc9003 |
Adds plumbing to toilets (#92695)
## About The Pull Request Toilets no longer act as infinite instant water sources, instead working like showers and sinks - requiring either plumbing, or water reclaimers to restore their cistern's supply. If a toilet has a large enough fish inside, or if someone accidentally drops a small item into it, when flushing it'll spew out all of its cistern's contents around itself (Dropped items can be removed using a plunger after a small delay). Also fixed plunger act code on some plumbing objects, and converted toilets to use item interactions. ### This is a commission for ImprovedName/Ezel ## Why It's Good For The Game Makes toilets more intresting with plumbing, and brings them more inline with other plumbing appliances so that way you can't just make a toilet with 1 material sheet and conjure a infinite water resouce anywhere you please without a water recycler. Also you can get up to some silly stuff with foam production. ## Changelog 🆑 add: Toilets now require plumbing or water reclaimers to function, and can get clogged by small items. fix: Trying to use plungers on plumbing objects will no longer hit them after finishing the interaction. code: Updated toilet item interaction code /🆑 |
||
|
|
d3d3a12540 |
The big fix for pixel_x and pixel_y use cases. (#90124)
## About The Pull Request 516 requires float layered overlays to be using pixel_w and pixel_z instead of pixel_x and pixel_y respectively, unless we want visual/layering errors. This makes sense, as w,z are for visual effects only. Sadly seems we were not entirely consistent in this, and many things seem to have been using x,y incorrectly. This hopefully fixes that, and thus also fixes layering issues. Complete 1:1 compatibility not guaranteed. I did the lazy way suggested to me by SmArtKar to speed it up (Runtiming inside apply_overlays), and this is still included in the PR to flash out possible issues in a TM (Plus I will need someone to grep the runtimes for me after the TM period to make sure nothing was missed). After this is done I'll remove all these extra checks. Lints will probably be failing for a bit, got to wait for [this update](https://github.com/SpaceManiac/SpacemanDMM/commit/4b77cd487d0a7b6a069df20356b701af5b20489d) to them to make it into release. Or just unlint the lines, though that's probably gonna produce code debt ## Why It's Good For The Game Fixes this massive 516 mess, hopefully. closes #90281 ## Changelog 🆑 refactor: Changed many of our use cases for pixel_x and pixel_y correctly into pixel_w and pixel_z, fixing layering issues in the process. /🆑 --------- Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: SmArtKar <master.of.bagets@gmail.com> |
||
|
|
0495a19beb |
Refactor for reagent signals (#88909)
## About The Pull Request Refactors the way we listen for reagent changes. The changes made can be listed as points **1. Removes `COMSIG_REAGENTS_PRE_ADD_REAGENT`** Used to stop new reagents from being added to the holder, its only application is with the BRPED to stop inserting reagents into beakers/cells stored inside it. Rather than using this signal a cleaner solution is to simply remove the component part's reagent holders' flags which allow us to insert reagents into it(i.e. `REFILABLE`, `INJECTIBLE`, `DRAINABLE`) and restore them back when that part is removed thus achieving the same results. Thus `add_reagent()` is now slightly faster because it no longer uses this signal **2. Removes every other signal used by the reagent holder** Removes pretty much every other signal used by `holder.dm` which are `COMSIG_REAGENTS_[NEW_REAGENT, ADD_REAGENT, DEL_REAGENT, REM_REAGENT, CLEAR_REAGENTS]` While yes, it is true that all these signals are unique & serve a specific purpose the problem is no object in code respects their uniqueness & instead clumps them up all together & hooks them onto one proc to listen for "reagent changes". You see this code pattern repeated in so many places https://github.com/tgstation/tgstation/blob/9277364ef6449262e2c693ff6817925e074c47ce/code/modules/power/power_store.dm#L105 Not only does this look ugly but it also has a memory overhead (4 to 5 signal slots all performing the same action which is a lot compared to the solution i implemented below). Bonus is that "none" of the parameters passed to this proc are used so they go to waste as well. So after removing a ton of code we need something that can still make the code function which brings us to point 3 **3. Adds a new signal `COMSIG_REAGENTS_HOLDER_UPDATED` to rule them all** So if all objects in game are listening for "reagent changes"[adding/removing, reagents] then we need to look at the proc that is always called during these changes & that is none other than `update_total()` so we let that send out a signal and cause all objects to hook onto this 1 signal instead of 4 to 5 signals as explained in point 2 ## Why It's Good For The Game This section isn't necessary but i want us to better appreciate both the code & performance benifits of this PR. 1. First of all its waaaay less code and signals to worry about. Just look at the number of lines of code removed compared to added. Nothing more to say 2. Overhead of `RegisterSignal` compared to `RegisterSignals` is less for obvious reasons 3. `remove_all` is significantly faster as it no longer calls `remove_reagent()`[which in turn calls `update_total()` & `handle_reactions()` per call & uses a for loop so its a nested for loop of doom] for every reagent it removes, instead it does the work by itself & calls the above 2 procs just once 4. Usually when a reagent is deleted it calls `COMSIG_REAGENTS_REM_REAGENT` & `COMSIG_REAGENTS_DEL_REAGENT`. So if you have a holder with like 3 reagents upon transferring/deleting them you get a total of 6 signal calls!!. Now it's just 3(when using `trans_to`) and just 1 when using `remove_all/clear_reagents`. Need i say more no ## Changelog 🆑 fix: hydrophonics circuit component actually sets output level when reagents are changed in the tray refactor: refactors how code listens for reagent changes. Report bugs on github /🆑 |
||
|
|
ed8fc2c866 |
Optimization for plumbing reaction chamber & catalysts (#88722)
## About The Pull Request Plumbing components waste extra ticks in requesting reagents if those requested reagents are stored in a reaction chamber & they are catalysts which cannot be sent out. That is because the reaction chamber lies & tells the pipeline it can give them inside it's `/datum/component/plumbing/reaction_chamber/can_give()` proc but won't actually transfer them if it has no excess to spare. This doesn't cause errors because those components will eventually get their requested values from other supplies but it takes extra ticks to do so This ensures the reaction chamber won't volunteer itself as a supplier if it can't give out those catalysts thus enabling the pipeline to request more accurate values by excluding that reaction chamber from its list suppliers ## Changelog 🆑 code: plumbing reaction chamber won't waste extra ticks for the pipeline when sending out catalysts /🆑 --------- Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> |
||
|
|
91719a400a |
516 Compile Compatibility (#88611)
Renames all uses of caller, as they (currently) shadow the new byond var and will in future error Ups our "wan if compiled after" experiement compile version to 516 Adds an alternate 516 unit test |
||
|
|
a2b1aa9178 |
plumbing catalyst storag (#88404)
## About The Pull Request see title also see video https://github.com/user-attachments/assets/23e2d128-1175-4779-87cf-74a4d4e6e1c1 ## Why It's Good For The Game doing in 1 machine what was once done by 3-4 is nicer for the chemist. less materials wasted and more space available to play around in. also has the side effect of making the output slightly higher since time spent transferring catalysts can now be spent on transferring reagents that are consumed instead ## Changelog 🆑 add: catalyst function for plumbing reaction chambers /🆑 --------- Co-authored-by: SyncIt21 <VLord3D@gmail.com> |
||
|
|
58501dce77 |
Reorganizes the sound folder (#86726)
## About The Pull Request <details> - renamed ai folder to announcer -- announcer -- - moved vox_fem to announcer - moved approachingTG to announcer - separated the ambience folder into ambience and instrumental -- ambience -- - created holy folder moved all related sounds there - created engineering folder and moved all related sounds there - created security folder and moved ambidet there - created general folder and moved ambigen there - created icemoon folder and moved all icebox-related ambience there - created medical folder and moved all medbay-related ambi there - created ruin folder and moves all ruins ambi there - created beach folder and moved seag and shore there - created lavaland folder and moved related ambi there - created aurora_caelus folder and placed its ambi there - created misc folder and moved the rest of the files that don't have a specific category into it -- instrumental -- - moved traitor folder here - created lobby_music folder and placed our songs there (title0 not used anywhere? - server-side modification?) -- items -- - moved secdeath to hailer - moved surgery to handling -- effects -- - moved chemistry into effects - moved hallucinations into effects - moved health into effects - moved magic into effects -- vehicles -- - moved mecha into vehicles created mobs folder -- mobs -- - moved creatures folder into mobs - moved voice into mobs renamed creatures to non-humanoids renamed voice to humanoids -- non-humanoids-- created cyborg folder created hiss folder moved harmalarm.ogg to cyborg -- humanoids -- -- misc -- moved ghostwhisper to misc moved insane_low_laugh to misc I give up trying to document this. </details> - [X] ambience - [x] announcer - [x] effects - [X] instrumental - [x] items - [x] machines - [x] misc - [X] mobs - [X] runtime - [X] vehicles - [ ] attributions ## Why It's Good For The Game This folder is so disorganized that it's vomit inducing, will make it easier to find and add new sounds, providng a minor structure to the sound folder. ## Changelog 🆑 grungussuss refactor: the sound folder in the source code has been reorganized, please report any oddities with sounds playing or not playing server: lobby music has been repathed to sound/music/lobby_music /🆑 |
||
|
|
9a9b428b61 |
Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
|
||
|
|
4b4e9dff1d |
Wallening [IDB IGNORE] [MDB IGNORE] (#85491)
## What's going on here Kept you waitin huh! This pr resprites most all walls, windows and other "wall adjacent" things to a 3/4th perspective, technical term is "tall" walls (we are very smart). If you're trying to understand the technical details here, much of the "rendering tech" is built off the idea of split-vis. Basically, split a sprite up and render it on adjacent turfs, to prevent seeing "through" walls/doors, and to support seeing "edges" without actually seeing the atom itself. Most of the rest of it is pipelining done to accommodate how icons are cut. ## Path To Merge Almost* all sprites and code is done at this point. There are some things missing both on and off the bounty list, but that will be the case forever unless we force upstream (you guys) to stop adding new shit that doesn't fit the style. I plan on accepting and integrating prs to the current working repo <https://github.com/wall-nerds/wallening> up until a merge, to make contribution simpler and allow things like bounties to close out more easily This pr is quite bulky, even stripping away map changes it's maybe 7000 LOC (We have a few maps that were modified with UpdatePaths, I am also tentatively pring our test map, for future use.) This may inhibit proper review, although that is part of why I am willing to make it despite my perfectionism. Apologies in advance. Due to the perspective shift, a lot of mapping work is going to need to be done at some point. This comes in varying levels of priority. Many wallmounts are offset by hand, some are stuck in the wall/basically cannot be placed on the east/west/north edges of walls (posters), some just don't look great good in their current position. Tests are currently a minor bit yorked, I thought it was more important to get this up then to clean them fully. ## What does it look like?       ## Credits <details> <summary>Historical Mumbojumbo</summary> I am gonna do my best to document how this project came to be. I am operating off third party info and half remembered details, so if I'm wrong please yell at me. This project started sometime in late 2020, as a product of Rohesie trying to integrate and make easier work from Mojave Sun (A recently defunct fallout server) with /tg/. Mojave Sun (Apparently this was LITERALLY JUST infrared baron, that man is insane) was working with tall walls, IE walls that are 48px tall instead of the normal 32. This was I THINK done based off a technical prototype from aao7 proving A it was possible and B it didn't look like dogwater. This alongside oranges begging the art team for 3/4th walls (he meant TGMC style) lead to Rohesie bringing on contributors from general /tg/, including actionninja who would eventually take over as technical lead and Kryson, who would define /tg/'s version of the artstyle. Much of the formative aspects of this project are their work. The project was coming along pretty well for a few months, but ran into serious technical issues with `SIDE_MAP`, a byond map_format that allows for simpler 3/4th rendering. Due to BULLSHIT I will not detail here, the map format caused issues both at random with flickering and heavily with multiz. Concurrent with this, action stepped down after hacking out the rendering tech and starting work on an icon cutter that would allow for simpler icon generation, leaving ninjanomnom to manage the project. Some time passed, and the project stalled out due to the technical issues. Eventually I built a test case for the issues we had with `SIDE_MAP` and convinced lummox jr (byond's developer) to explain how the fuckin thing actually worked. This understanding made the project theoretically possible, but did not resolve the problems with multi-z. Resolving those required a full rework of how rendering like, worked. I (alongside tattle) took over project development from ninjanomnom at this time, and started work on Plane Cube (#69115), which when finished would finally make the project technically feasible. The time between then and now has been slow, progressive work. Many many artists and technical folks have dumped their time into this (as you can see from the credits). I will get into this more below but I would like to explicitly thank (in no particular order) tattle, draco, arcanemusic, actionninja, imaginos, viro and kylerace for keeping the project alive in this time period. I would have curled up into a ball and died if I had to do this all myself, your help has been indispensable. </details> <details> <summary>Detailed Credits</summary> Deep apologies if I have forgotten someone (I am sure I have, if someone is you please contact me). I've done my best to collate from the git log/my memory. Thanks to (In no particular order): Raccoff: Being funny to bully, creating threshold decals for airlocks aa07: (I think) inspiring the project ActionNinja: Laying the technical rock we build off, supporting me despite byond trying to kill him, building the icon cutter that makes this possible ArcaneMusic: Artistic and technical work spanning from the project's start to literally today, being a constant of motivation and positivity. I can't list all the stuff he's done Armhulen: Key rendering work (he's the reason thindows render right), an upbeat personality and a kick in the ass. Love you arm Azlan: Damn cool sprites, consistently Ben10Omintrix: You know ben showed up just to make basic mobs work, he's just fuckin like that man BigBimmer: A large amount of bounty work, alongside just like, throwing shit around. An absolute joy to work with Capsandi: Plaques, blastdoors, artistic work early on CapybaraExtravagante: Rendering work on wall frames Draco: SO MUCH STUFF. Much of the spritework done over the past two years is his, constantly engaged and will take on anything. I would have given up if not for you Floyd: Early rendering work, so early I don't even know the details. Enjoy freedom brother Imaginos16: A guiding hand through the middle years, handled much of the sprite review and contribution for a good bit there Iamgoofball: A dedication to detail and aesthetic goals, spends a lot of effort dissecting feedback with a focus on making things as good as they can be at the jump Infrared: Part of the impetus for the project, made all the xenomorph stuff in the MS style Jacquerel: A bunch of little upkeep/technical things, has done so much sprite gruntwork (WHY ARE THERE SO MANY PAINTING TYPES) Justice12354: Solved a bunch of error sprites (and worked out how to actually make prs to the project) Thanks bro! Kryson: Built the artstyle of the project, carrying on for years even when it was technically dying, only stopping to casually beat cancer. So much of our style and art is Kryson KylerAce: Handled annoying technical stuff for me, built window frame logic and fully got rid of grilles. LemonInTheDark: Rendering dirtywork, project management and just so much fucking time in dreammaker editing sprites Meyhazah: Table buttons, brass windows and alll the old style doors Mothblocks: Has provided constant support, gave me a deadline and motivation, erased worries about "it not being done", gave just SO much money to fill in the critical holes in sprites. Thanks moth MTandi: Contributed art despite his own blackjack and hookers club opening right down the road, I'm sorry I rolled over some of your sprites man I wish we had finished earlier Ninjanomnomnom: Consulted on gags issues, kept things alive through some truly shit times oranges: This is his fault Rohesie: Organized the effort, did much of the initial like, proof of concept stuff. I hope you're doin well whatever you're up to. san7890: Consulting on mapper UX/design problems, being my pet mapper Senefi: Offsetting items with a focus on detail/the more unused canidates SimplyLogan: Detailed map work and mapper feedback, personally very kind even if we end up talking past each other sometimes. Thank you! SpaceSmithers: Just like, random mapping support out of nowhere, and bein a straight up cool dude Tattle: A bunch of misc project management stuff, organizing the discord, managing the test server, dealing with all the mapping bullshit for me, being my backup in case of bus. I know you think you didn't do much but your presence and work have been a great help Thunder12345: Came out of nowhere and just so much of the random bounties, I'm kind of upset about how much we paid him Time-Green: I hooked him in by fucking with stuff he made and now he's just doin shit, thanks for helping out man! Twaticus: Provided artistic feedback and authority for my poor feeble coder brain, believed in the project for YEARS, was a constant source of ❤️ and affirmation unit0016: I have no god damn idea who she is, popped out of nowhere on the github one day and dealt with a bunch of annoying rendering/refactoring. Godspeed random furry thank you for all your effort and issue reports Viro: A bunch of detailed spriting moving towards 3/4ths, both on and off the wallening fork. If anyone believed this project would be done, it was viro Wallem: Artistic review and consultation, was my go-to guy for a long time when the other two spritetainers were inactive Waltermeldon: Cracked out a bunch of rendering work, he's the reason windows look like not dogwater. Alongside floyd and action spent a TON of time speaking to lummox/unearthing how byond rendering worked trying to make this thing happen ZephyrTFA: Added directional airlock helpers, dealt with a big fuckin bugaboo that was living in my brain like it was nothing. Love you brother And finally: The Mojave Sun development team. They provided a testbed for the idea, committed hundreds and hundreds of hours to the artstyle, and were a large reason we caught issues early enough to meaningfully deal with them. Your work is a testament to what longterm effort and deep detailed care produce. I hope you're doing well whatever you're up to. Go out with a bang! </details> ## Changelog 🆑 Raccoff, aa07, ActionNinja, ArcaneMusic, Armhulen, Azlan, Ben10Omintrix, BigBimmer, Capsandi, CapybaraExtravagante, Draco, Floyd, Iamgoofball, Imaginos16, Infrared, Jacquerel, Justice12354, Kryson, KylerAce, LemonInTheDark, Meyhazah, Mothblocks, MTandi, Ninjanomnom, oranges, Rohesie, Runi-c, san7890, Senefi, SimplyLogan, SomeAngryMiner, SpaceSmithers, Tattle, Thunder12345, Time-Green, Twaticus, unit0016, Viro, Waltermeldon, ZephyrTFA with thanks to the Mojave Sun team! add: Resprites or offsets almost all "tall" objects in the game to match a 3/4ths perspective add: Bunch of rendering mumbo jumbo to make said 3/4ths perspective work /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: san7890 <the@san7890.com> Co-authored-by: = <stewartareid@outlook.com> Co-authored-by: Capsandi <dansullycc@gmail.com> Co-authored-by: ArcaneMusic <hero12290@aol.com> Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> Co-authored-by: SomeAngryMiner <53237389+SomeAngryMiner@users.noreply.github.com> Co-authored-by: KylerAce <kylerlumpkin1@gmail.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com> Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: Runi-c <5150427+Runi-c@users.noreply.github.com> Co-authored-by: Roryl-c <5150427+Roryl-c@users.noreply.github.com> Co-authored-by: tattle <article.disaster@gmail.com> Co-authored-by: Senefi <20830349+Peliex@users.noreply.github.com> Co-authored-by: Justice <42555530+Justice12354@users.noreply.github.com> Co-authored-by: BluBerry016 <50649185+unit0016@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com> Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com> Co-authored-by: Rob Bailey <github@criticalaction.net> Co-authored-by: MMMiracles <lolaccount1@hotmail.com> |
||
|
|
5f80128fa9 |
Corrects 200+ instances of "it's" where it should've been "its" instead (#85169)
## About The Pull Request it's - conjunction of "it" and "is" its - possessive form of "it" grammar is hard, and there were a lot of places where "it's" was used where it shouldn't have been. i went and painstakingly searched the entire repository for these instances, spending a few hours on it. i completely ignored the changelog archive, and i may have missed some outliers. most player-facing ones should be corrected, though ## Why It's Good For The Game proper grammar is good ## Changelog 🆑 spellcheck: Numerous instances of "it's" have been properly replaced with "its" /🆑 |
||
|
|
258bd5cda4 |
Hydroponic trays take in reagents proportionally from plumbing mech (#84714)
## About The Pull Request - Fixes #84699 The issue isn't with reagents getting transferred one at a time. Yes this happens inside plumbing machinery and it isn't an issue there because they are not processed but simply stored(until all reagents can get there) until it is transferred to another machine that requests it. This however is a problem with hydroponic trays which both store & process those reagents. So when 1 reagent comes into the tray & if the tray gets full before the other reagents can get there it leads to missing fertilizers/nutrients in the tray causing problems in plant growth & such. For e.g. if your ducts have reagents like 3u sodium, 7u ash & 5u water & the tray has space for only 10u reagents. Using round robin it takes in 3u sodium + 7u ash = 10u reagents. The 5u water is left out cause the 10u request is complete causing the plants to dehydrate & die. Now trays are reverted to use the old "proportional method" of transferring reagents leading to trays getting all their nutrients from plumbing ducts. So using the old technique we get sodium + ash + water = 10u i.e. all reagents in the tray so the plants are happy Additionally bottler also uses the old "proportional method" of transferring reagents so it pumps out all reagents into the beaker ## Changelog 🆑 fix: hydroponic trays take in all reagents "proportionally" from plumbing ducts without leaving any behind fix: plumbing bottler pumps out all reagents "proportionally" into output beakers /🆑 |
||
|
|
3953821f5a |
[NO GBP] Fixes floating point errors in plumbing machinery (#84405)
## About The Pull Request - Fixes #84361 This brings back the round robin method of transferring reagents I removed in #78884 but in a more miniaturized & light weight form. It should speed up cpu performance of plumbing as a whole **The Downside** The reason i was hesitant about bringing it back is because this technique can result in **missing reagents** For example let's say our plumbing pill press has only space for 10u more of reagents but in the ducts we have say 3 reagents i.e 3u copper, 7u Aluminium, 4u iron(Order of reagents in the ducts is important) When the pill press makes the request for 10u of reagents from the ducts we get 3u copper + 7u Aluminium = 10u. **We completely leave out iron** because the 10u request has been fulfilled. This happens when the below 2 conditions are met - When there are a large number(different types) of reagents or large volume of one type of reagent in the ducts - When there isn't enough space in the machinery to take in all these reagents This is why the plunger was made so you can flush out reagents from machines and can make space to take in those missing reagents **The Upside** You don't get any floating point errors. Also given that this code has been around for years before i removed it, It should be ok to bring it back. Assuming players have always been sensible to only create the exact volume of reagents they need without making excess & quickly push out these reagents (either through output gate, pill press etc) from the ducts you should not see any problems. Plus this code is only exclusive to plumbing so no outside usage  **Other changes** - Plumbing IV Drip now only accepts reagents i.e. it only has a input pipe no output pipe just like your output gate & smoke machine. This was done because it is not an instance of `obj/machinery/plumbing` & so it won't use the round robin transfer technique leading to again re-introducing errors in the plumbing system. Also it makes sense as in we only need it to accept reagents from the ducts & inject it into the connected mob/whatever. We don't need it to pump out reagents back into the system - Output gate still uses the regular "proportional" method of transferring reagents. This is so if you use a beaker or something to take reagents out from it, it gives you all reagents without "missing any" ## Changelog 🆑 fix: plumbing machinery should have consistent volumes throughout the course of its operations fix: plumbing iv drop now only accepts reagents from ducts but won't put reagents back into it i.e. it only has a input pipe /🆑 |
||
|
|
8070e46a8e |
Plumbing machinery power & processing tweaks (#82702)
## About The Pull Request - Plumbing machinery begins processing only when wrenched & ends processing when unwrenched. The machines plumbing component `/datum/component/plumbing/process()` already does this but the underlying machines processing proc for e.g. `/obj/machinery/plumbing/synthesizer/process()` is always processing regardless of its wrenched state or not. We can optimize this & save power when unwrenched - Fixes #82621. This adds plumbing machines `idle_power_usage` on top of its `active_power_usage` ensuring it only uses power when actively doing work, So if your factory is say full of reagents & cannot do any more work it will use less energy i.e almost enter an stand by mode, efficiency - Plumbing grinder chemical will grinds & juice stuff correctly i.e. prefer grinding over juicing most of the time ## Changelog 🆑 fix: plumbing machinery begins processing only when wrenched & ends when unwrenched fix: plumbing machinery uses energy only when wrenched & doing work, will stop/use less energy when idle fix: plumbing grinder chemical will grinds & juice stuff correctly i.e. prefer grinding over juicing for most stuff /🆑 |
||
|
|
9723b4b317 |
Replaces even more deciseconds with SECONDS (#82438)
## About The Pull Request
Using these search regexes:
Ending in 0:
`addtimer\((.*),\s?(\d{1,3})0\b\)`
replacement:
`addtimer($1, $2 SECONDS)`
Two digit ending in odd:
`addtimer\((.*), (\d)([1-9])\)$`
replacement:
`addtimer($1, $2.$3 SECONDS)`
Single digit ending odd:
`addtimer\((.*), ([1-9])\)$`
replacement:
`addtimer($1, 0.$2 SECONDS)`
## Why It's Good For The Game
Code readability
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
|
||
|
|
c1d68698fb |
Micro-optimize qdel by only permitting one parameter (#80628)
Productionizes #80615. The core optimization is this: ```patch - var/hint = to_delete.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up. + var/hint = to_delete.Destroy(force) // Let our friend know they're about to get fucked up. ``` We avoid a heap allocation in the form of copying the args over to a new list. A/B testing shows this results in 33% better overtime, and in a real round shaving off a full second of self time and 0.4 seconds of overtime--both of these would be doubled in the event this is merged as the new proc was only being run 50% of the time. |
||
|
|
130b3dfa64 |
Code compression for reagent holder. Lowers plumbing reaction chamber tick usage (#79686)
## About The Pull Request More code improvements for reagent holder. As you can see it removes a lot more code than it adds so code savings are significant. This does not touch on any floating point arithmetic, all that is behind us, this focuses on removing redundant procs and merging existing procs to achieve the same functionality so if you do see any changes in reagent related behaviour it's not intentional and should be reported as a bug here. The following code changes can be summarized into points. **1. Removes procs `get_master_reagent_id()` & `get_master_reagent_name()`** Both of these procs have the exact same functionality as `get_master_reagent()` with the only exception of returning a different value. Instead we can just call `get_master_reagent()` directly and infer the name & type of it ourselves rather than creating a wrapper proc to do it for us, therefore reducing overall code **2. Removes & Merges `remove_all_type()` proc into `remove_reagent()`** The proc `remove_all_type()` is highly inefficient, it first uses a for loop to look for the reagent to remove & then it again calls `remove_reagent()` on the reagent once it has found it. We can just embed this functionality directly into `remove_reagent()` by simply adding an additional parameter `include_subtypes`. This way the operation is faster, and we reduce the code to get the job done. Also now `remove_reagent()` will return the total volume of reagents removed rather that a simple TRUE/FALSE **3. Removes & Merges `trans_id_to()` proc into `trans_to()`** Both these procs have the same job of transferring either a single reagent or all reagents. `trans_id_to()` is a scaled down version of `trans_to()` because - It does not have any `method` var. This means if you want to transfer a single reagent to a mob/organ or any other object it does not have the functionality to expose the target to that transferred reagent. - It does not have a `multiplier` var to scale reagent volumes - It does not have code to deal with organs or stop reactions i.e. it does not have the `no_react` var. We can overcome all these short comings by simply adding an extra var `target_id` to specify what specific reagent to transfer therefore attaining the same functionality while keeping the benefits of `trans_to()` proc therefore reducing overall code **4. Lowers plumbing reaction chamber tick usage for balancing ph.** Rather than invoking a while loop to balance ph it's much easier for the player to simply make the reaction chamber wait for e.g. add a reagent that will never come. This will make the chamber wait therefore giving the reaction chamber ample time to correctly balance the ph and then remove that reagent from the list therefore getting correct ph levels. No need to create code hacks when the player can do it themselves so the while loop has been removed ## Changelog 🆑 code: removed redundant procs `get_master_reagent_id()` & `get_master_reagent_name()` code: merged `remove_all_type()` proc with `remove_reagent()` now this proc can perform both functions. `remove_reagent()` now returns the total volume of reagents removed rather than a simple TRUE/FALSE. code: merged `trans_id_to()` proc with `trans_to()` now this proc can perform both functions refactor: plumbing reaction chamber will now use only a single tick to balance ph of a solution making it less efficient but more faster. Just make the reaction chamber wait for longer periods of time to accurately balance ph refactor: reagent holder code has been condensed. Report any bugs on GitHub /🆑 |
||
|
|
f56cadb04d |
[NO GBP] Final precision rounding for reagent volumes (#79571)
## About The Pull Request - Fixes #79566 This applies mostly to plumbing reaction chambers but to implement that fix some rounding operations had to be carried over to `holder.dm`(which will benefit everything in general) I'm pulling out all the stops here. Rather than checking "are we close enough" plumbing reaction chambers will now check if we and i quote "absolutely insanely precisely there". This means volumes like 49.9999 should become 50 period. Note this is a high probability & not a definite fix. i.e. now theoretically 100% of the time you should not get this problem but if it still happens then as of now i have no solution and have to go back to the drawing board on this one but i am very confident this should be the end of all plumbing related problems i.e. at least problems with volumes not getting rounded to whole numbers ## Changelog 🆑 fix: plumbing factories should not rarely/randomly brick at volumes like 0.9999(when in fact it should have been 1) /🆑 |
||
|
|
1a3f456416 |
Re-adds rounding tweaks for reagent volumes & plumbing reaction chamber tweaks (#79478)
## About The Pull Request - Closes #79464 This takes the important fixes mentioned in the above PR and adds them here. The above PR implemented the fixes by reverting a bunch of reagent PR's but in the process of doing so it has brought back really inefficient code & even some bugs that were previously fixed. Rather than reviewing them & bringing back those changes which is time consuming this PR extracts only those important rounding operations required for the fix leaving all other optimizations intact Mentioned @CliffracerX in the changelog so they can get their GBP Also plumbing reaction chamber is more active in taking in reagents. That is if a reagent is not available in the pipe net rather than waiting for it to become available it will simply skip over it & look for other listed reagents thus saving time - Fixes #31206 ## Changelog SyncIt21, CliffracerX 🆑 fix: reagent volumes should be consistent & non breaking across plumbing & chemistry as a whole fix: plumbing reaction chambers are more proactive. Will attempt to take in reagents more frequently /🆑 |
||
|
|
9e99b147c0 |
Plumbing IV Drip has full control over its transfer rate (#79373)
The problem is plumbing iv drip has the `/datum/component/plumbing/iv_drip` component attached to it. We gave this component full control over the mob we are trying to inject into with this statement over here https://github.com/tgstation/tgstation/blob/c356f2f7354e9aefa0638d1668326bce52d0cc4a/code/datums/components/plumbing/IV_drip.dm#L28 Remember this component is inherited from `/datum/component/plumbing` which has it's own **"process"** proc. https://github.com/tgstation/tgstation/blob/c356f2f7354e9aefa0638d1668326bce52d0cc4a/code/datums/components/plumbing/_plumbing.dm#L74 It was this proc that was injecting reagents into the mob at a rate of `MACHINE_REAGENT_TRANSFER`(10 units) per second. This process proc was conflicting with the base plumbing machinery process proc Why is why our transfer rate controls never worked. Now the plumbing machinery only draws reagents from the plumbing network into it's own internal container(not the mob) at an rate of `MACHINE_REAGENT_TRANSFER`(10 units) per second leaving the injection & draining rate alone and in full control of the player as intended. Also since plumbing iv drip inherited from `/obj/machinery/iv_drip` and not from the base type for all plumbing machinery `/obj/machinery/plumbing` it did not override the `/obj/plunger_act()` proc so the plunger did not work on it. That's fixed now too Also took the opportunity to move plumbing vat to plumbing module folder cause it belongs there |
||
|
|
4db10f0aa3 |
[NO GBP] Apply multiplier correctly when transferring reagents. (#79084)
## About The Pull Request - Fixes #79083 The multiplier should be applied per reagent volume & not on the requested amount as a whole. ## Changelog 🆑 fix: cryo and stuff that transfers reagents with a multiplier should transfer correct volumes as expected. /🆑 |
||
|
|
9ed4bd202d |
Aquariums now have an internal feed storage. Fish catalogs as 25cr goodies. (#78958)
## About The Pull Request Added a reagent holder to aquarium tanks and some code to enable the fish to be automatically fed at selectable intervals of 1 minute to 7 (default 3). The holder can be accessed and filled by opening the control panel, and emptied with a plunger if necessary. Simple plumbing compatibility has been added as well, in case you think the 6 units of capacity of the reagent holder (enough to feed a fish 60 times) are not enough. The preset fishing tank starts with enough feed to keep its contents alive for 30 minutes. Beside that, I've fixed a small oversight with the fish analyzer goodie pack. It should cost 150, not 500. The fish catalog is now a goodie pack you can get as a goodie for dirt cheap (25 creds) and a subtype of `book/manual`, so there's a slim chance you may find it at the library or somewhere else. Fixed a small oversight inside the fish catalog. Mapped in a single aquarium kit for each station map, in the service hallway/storage room where the techfab and cargo consoles are also found. Aquarium kits are now compatible with slapcrafting. ## Why It's Good For The Game Aquariums require too much maintainance for a gimmick, and it's quite awful to see the fish inside preset aquariums die 5 minutes into the round. Also, you cannot get fish catalogs anywhere but from the aquarium kit crate, which costs 1k credits, though its pertinence with fishing goes beyond aquarium stuff. Lastiy, I think it's good to give the crew a free aquarium kit. The price of the supply pack is a bit out of reach for many, service could use a bit of fisciculture too (I may make it a service pack later, so that it can be ordered through the service console). ## Changelog 🆑 add: Aquariums now have a small internal reagent holder, accessible when the panel is open and used to automatically feed the fishes at selectable intervals, also compatible with plumbing. add: Fish catalogs can now be bought as a goodie pack, for 25 cr, or rarely found at the library or maints. fix: Fixed the prices of fish analyzers. It's supposed to be 150 cr, not 500. map: Added an aquarium kit to each station, found in the room where the service techfab and order console also are. qol: Aquarium kits are now compatible with slapcrafting (crafted by hitting them with the required material without opening the menu). balance: Moved the aquarium kit and fish supply packs from the "General" section to "Service" and "Livestock" respectively, meaning they can be ordered for free from the service orders console. /🆑 |
||
|
|
df508a51b2 |
More Plumbing Fixes & Pill Press UI Changes (#79059)
## About The Pull Request 1. Fixes #79051 It's a consequence of floating-point math. We round it to 2 decimal places to display results like 50 but in fact its actual value is something like 49.999... something. So, we also shift up our expectations and call it a day. 2. Made a lot of variables defines and lists static to save memory for plumbing pill press and moved global lists to it's global list folder 3. Copied over chem master patch & pill designs over too plumbing press and removed the old designs & resized the UI ## Changelog 🆑 fix: plumbing pill press & bottler won't stop when processing 50 unit bottles code: made a lot of variables defines and lists static to save memory for plumbing pill press. Moved global lists to it's rightful place code: copied over chem master pill & patch designs over to plumbing pill press and removed the old designs. resized UI /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
ecf99a90e5 |
[NO GBP]Fixes plumbing for good(hopefully) & more reagent code (#78947)
## About The Pull Request 1. This should be the end of all problems related to plumbing and I swear if another issue popes up I'm goanna delete my GitHub account. Or to be more realistic just ping me and I'll be back :D - Fixes #78945 And this time I am **100%**(if I'm wrong then fuck me) sure that reagents will not flow in excess amounts into reaction chambers/synthesizers or whatever plumbing component you can think off. Reagents flowing in excess amounts is what caused the factory to grind to a halt as the components will stop processing if they detect excess amounts of reagents (which is why plunging them with a plunger would clear them of their reagents and help them resume processing again which obviously is not an ideal solution) Also, now it's no longer required to see reagent volumes in 4 decimal places so I rounded it back to just 2 places again so values like 0.999 or 1.001 will become just 1 again. Also plumbing reaction chamber was doing too much work so I fixed that. 2. Made defines for min & max ph. any change to ph values of any reagent will be confined between these values i.e., 0 & 14. Also converted some vars into defines. Using a variable makes sense if it's value changes but if it doesn't then just define it as a constant so you can save memory. Made synthesizer lists static to further save memory. 3. Significantly boosted the ph balancing mechanism for reaction chamber. You will be surprised. ## Changelog 🆑 fix: plumbing setups should(hopefully) no longer grind to a halt nor will overflow with excess volume of reagents. code: created defines for min & max ph. Improved some reaction_reagent code. Made synthesizer dispensable reagent list values static to save memory. refactor: ph balancing mechanism for reaction chamber is significantly improved. Optimized it's code overall refactor: examining each individual reagent will display their results back to 2 decimal places again and not 4 for easy readability. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
eb0be123aa | [NO GBP] Some more code maintenance for reagents (#78884) | ||
|
|
5d5492e111 |
Implements usage of the REVERSE_DIR macro throughout the code. (#77122)
## About The Pull Request Replaces a ton of `turn(dir, 180)` calls with the aforementioned macro. ## Why It's Good For The Game Afaik, `REVERSE_DIR` was coded to be faster than the classic `turn(dir, 180)` call, being a simple set of binary operations. To sum it up, micro optimization. ## Changelog N/A |
||
|
|
fb10121022 |
Icons folder cleaning wave two (#76788)
## About The Pull Request Further continous organizing and cleaning the Icons folder. There are still some minior nitpicks left to do, but I reached my daily sanity expenses limit again, and the faster these get in the less issues for both me and others later. Also cleans some mess I caused by my blindness last PR. ## Why It's Good For The Game Saner spriters = better sprites |
||
|
|
ae5a4f955d |
Pulls apart the vestiges of components still hanging onto signals (#75914)
## About The Pull Request Signals were initially only usable with component listeners, which while no longer the case has lead to outdated documentation, names, and a similar location in code. This pr pulls the two apart. Partially because mso thinks we should, but also because they really aren't directly linked anymore, and having them in this midstate just confuses people. [Renames comp_lookup to listen_lookup, since that's what it does](https://github.com/tgstation/tgstation/commit/102b79694fa8eb57ecf7b36032616a9e368ccced) [Moves signal procs over to their own file](https://github.com/tgstation/tgstation/commit/33d07d01fd336726b4f6f6f1b61bb0b3f11a00dc) [Renames the PREQDELETING and QDELETING comsigs to drop the parent bit since they can hook to more then just comps now](https://github.com/tgstation/tgstation/commit/335ea4ad081ec63c42cfa05856e582cca833af6e) [Does something similar to the attackby comsigs (PARENT -> ATOM)](https://github.com/tgstation/tgstation/commit/210e57051df63f88dac3dd83321236da825aae5e) [And finally passes over the examine signals](https://github.com/tgstation/tgstation/commit/65917658fb8a1e7d28ae23c9437a583d646f0302) ## Why It's Good For The Game Code makes more sense, things are better teased apart, s just good imo ## Changelog 🆑 refactor: Pulled apart the last vestiges of names/docs directly linking signals to components /🆑 |
||
|
|
daf55e611c |
Cleans up/renames as private some internal var definitions, removes some fucked uses of internal list vars (#75769)
## About The Pull Request [Improves the documentation of DCS lists, removes old list of callback docs that no longer apply](https://github.com/tgstation/tgstation/commit/c3821d9f5ffaeaa4772f927c819da0c1de0ca27c) [Adds a second signal register to decal rotating, adds a trait to objects under a tile. STOP DIRECTLY READING HIDDEN LISTS I SWEAR TO GOD](https://github.com/tgstation/tgstation/commit/6b3f97a76a6f7d24ab952739a1561633922994e1) [Removes direct reads of the timer list, they were redundant mostly](https://github.com/tgstation/tgstation/commit/14fcd9f8a6d1b2d42ec6df3493ebc76fe7c12032) [Please stop directly reading/modifying the traits list to ensure your dna rot follows the brain](https://github.com/tgstation/tgstation/commit/ec0e5237ec2b7c3b7806cb993670acc8ce388bdc) [Marks internal datum lists as well internal with _](https://github.com/tgstation/tgstation/pull/75769/commits/57c6577ff61629b8ea792ee37ec4f2490a8e2865) [57c6577](https://github.com/tgstation/tgstation/pull/75769/commits/57c6577ff61629b8ea792ee37ec4f2490a8e2865) Does the same to _clear_signal_refs() in hopes of keeping people from touching it ## Why It's Good For The Game They pissed me off. Users should not be touching these lists, especially in ways that make assumptions about their structure and are thus prone to breaking if that ever changes. Most of these are close to zero cost changes, using a wrapper to solve the problem, or just yeeting it Two aren't, Decals with a direction have gained a second signal register on init, and things that sit underfloor (cables/pipes) now get a trait when inserted there. This should have a minimal impact on memory/init time, bugging @Mothblocks about it just in case |
||
|
|
5db421281c |
Undertile Element Logic Refactor, or Catwalks Aren't Affected by Ambient Occlusion Anymore (#71555)
## About The Pull Request It was bugging me how catwalks would just be stuck rendering on the game plane in order to be above the pipes and all the other underfloor objects, because it meant that they stood out due to being affected by ambient occlusion. So I decided to change that, and the best change I could come up with, was to refactor the logic of `/datum/element/undertile` in order to actually allow us to do exactly what we wanted by having three different states of underfloor visibility, which in turn allowed me to slap everything that wasn't accessible on the floor plane rather than whatever plane they were on, effectively making it so catwalk tiles wouldn't need to be on the game plane anymore. :) Also fixes https://github.com/tgstation/tgstation/issues/63590 while I'm at it :) ## Why It's Good For The Game Seeing ambient occlusion on catwalks make them stand out in a jarring way, now that won't be the case anymore! Now, instead, you get something like this, which _absolutely_ looks like it fits in!  ## Changelog 🆑 GoldenAlpharex refactor: Refactored the way the undertile component works, to allow it to have a bit more granularity as to when it's meant to be covered, but still visible, like for catwalks! fix: Catwalks no longer are affected by ambient occlusion, and now properly feel like actual floor tiles. /🆑 |