## 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
/🆑
## 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
/🆑
## About The Pull Request
Removes a lot of cargo cult copypasta with
`default_deconstruction_screwdriver`, `default_deconstruction_crowbar`,
and to a lesser extent `default_pry_open` and
`default_change_direction_wrench`
ALL you gotta do now if you want your machine to have an openable panel
or be deconstructible with a crowbar is this
```dm
/obj/machinery/dish_drive/screwdriver_act(mob/living/user, obj/item/tool)
return default_deconstruction_screwdriver(user, tool)
/obj/machinery/dish_drive/crowbar_act(mob/living/user, obj/item/tool)
return default_deconstruction_crowbar(user, tool)
```
`default_deconstruction_screwdriver` no longer directly sets
`icon_state`, requiring the user pass in the open and closed icon
states. Now, it just calls `update_appearance`, and everything that once
passed the icon state now uses `base_icon_state` and
`update_icon_state`.
## Why It's Good For The Game
Many of these procs were terribly overcomplicated and difficult to work
with for what should be a relatively simple action
Streamlining it makes it easier for coders to understand and work with
## Changelog
🆑 Melbert
refactor: A majority of machines had their screwdriver/crowbar/wrench
interactions rewritten, report any oddities like being unable to open a
machine's panel or deconstruct a machine
/🆑
## About The Pull Request
title
## Why It's Good For The Game
consistency
## Changelog
🆑
spellcheck: Most of wrenching screentips should be properly capitalized
now.
/🆑
## About The Pull Request
- Removes `previous_reaction_list` & `failed_but_capable_reactions` from
reaction holder. Gives considerable memory savings because reagent
holder is used in a lot of places
- Removes proc `has_state_changed()`. This proc didn't do much in saving
reaction code from executing and was inaccurate in most cases anyway.
Removing it actually speeds up stuff
- Refactored `handle_reactions()` to be as fast & efficient as possible.
Removed the use of proc `has_reagent()` and re-arranged other code where
possible
## Changelog
🆑
refactor: reagent reaction code has been refactored for better cpu &
memory performance. Report broken reactions on github
/🆑
## 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
/🆑
## About The Pull Request
Should use `transfer_amount` which is calculated per reagent
## Changelog
🆑
fix: moving reagents like acid/basic buffer and others across plumbing
machinery produces correct effects again
/🆑
## 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
/🆑
## 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
/🆑
## 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>
## About The Pull Request
Moves plumbing machines from `SSPlumbing` back to `SSMachines` which was
done in #94753
Plumbing machines call `use_energy()` a lot from `process()` and this
proc reports accurate readings to devices like power monitors only when
called from `SSMachines`
## Changelog
🆑
fix: power monitors report accurate readings for plumbing machinery
/🆑
## 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
/🆑
## 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
/🆑
## 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
/🆑
## 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>
## About The Pull Request
Inspired by #94233. `grind_results`(list) & `juice_typepath`(typepath)
are only used when grinding & juicing after which the atom is deleted.
This means if that object is not processed these vars occupy memory &
don't do anything.
Now these values are only generated on demand by calling their
respective procs. Considering how these vars are on the obj level the
memory savings are quite significant
## Changelog
🆑
refactor: grinding & juicing have been refactored to occupy low memory.
Report bugs on github
code: improved grinding & juicing code
/🆑
## About The Pull Request
<img width="579" height="67" alt="image"
src="https://github.com/user-attachments/assets/d7a4427e-2a6e-44d3-94ba-c90a2d474984"
/>
Simple rotation components number in the 8-9k range per round, and each
contains a needless callback datum as well.
These do not need to hold any state and can be bespoke elements, and the
proc to do things post_rotation can just be a normal atom proc.
<details><summary>Still works as you'd expect, including items that have
flag requirements like the wrench</summary>


</details>
## Why It's Good For The Game
Makes a heavily used element much more lightweight, saves a few mb of
memory.
## Changelog
🆑
refactor: simple rotation component has been refactored into an element
Please report any bugs to github.
/🆑
## About The Pull Request
#94058 mistyped plumbing IV drip RMB override and broke all IV drips.
Also FALSE is not a valid return, we just need to prevent the child's
code from running in that scenario.
## Changelog
🆑
fix: Fixed RMB interactions for IV drips
/🆑
## About The Pull Request
Empy lists. There are a lot of 'em.
<img width="981" height="512" alt="image"
src="https://github.com/user-attachments/assets/b94b041a-2904-466b-ab89-54bd1de11b4e"
/>
Going through ways to reduce memory I found a few easy ones here. Wires,
the edible component, the seethrough component. None of these are really
a concern when it comes to needing lists in memory for performance
reasons. Wires aren't going to be cut most of the time for each door. A
lot of food does not have any junkiness. Seethrough component lies
dormant most of the round. Etc.
Making lists lazy in these cases should be a no brainer.
Everything I tested still seems to work exactly the same.
## Why It's Good For The Game
Frees memory that is just taking up space a lot of the time.
## Changelog
Not player-facing, this is all under-the-hood stuff.
## 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>
## About The Pull Request
nullchecks `held_item` in `iv_drip/plumbing/add_context()` to prevent
runtimes when attempting to check null.tool_behaviour
## Why It's Good For The Game
fixes#93815
## Changelog
🆑
fix: prevents runtime when hovering over plumbing iv drip
/🆑
## About The Pull Request
As Chemists, when make our massive plumbing factories we always use 5u
because anything under is pointless, and only makes our plumbing
factories slower, and takes up extra tedious/unnecessary time to setup.
This is simply a QoL change so that we don't have to keep pressing the
5u button when we make our synthesizers (its very tedious when working
on huge factories).
## Why It's Good For The Game
Less tediousness, notably when making huge factories
## Changelog
🆑 ArchBTW
qol: Makes plumbing synthesizers default to 5u
/🆑
## 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
/🆑
## About The Pull Request
Packaging category was unset until you swapped the product type in the
UI, so it'd default to naming the pills bottles. Also decapitalized the
suffixes for parity with the rest of pills/patches/bottles.
## Changelog
🆑
fix: Fixed unconfigured pill presses manufacturing pills that claim to
be bottles
spellcheck: Decapitalized pill press suffixes for parity with the rest
of pills/patches/bottles
/🆑
## 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)
## 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
/🆑
## About The Pull Request
Most of this is just the standard refactoring `attackby(...) >
item_interaction(...)`, and adding associated screentips.
The plumbing subtype doesn't need its own separate context code, because
the missing alt-click parts get overridden and thus aren't present
anyway.
The alt-click felt very unclear without feedback, so now makes the
standard clicking sound and plays a balloon alert.
The plumbing iv-drip wrench act no longer needs to check for combat
mode, as that's assumed for tool acts, and we use early returns instead
of that odd order of operations.
## Why It's Good For The Game
Less `attackby`
More screentips
More interaction feedback
## Changelog
🆑
refactor: Refactored IV drip item interactions. Please report any
issues.
sound: IV drip alt-click flow minimization/maximization makes the click
sound.
qol: IV drip alt-click flow minimization/maximization gives feedback.
qol: Updated IV drip screentips.
/🆑
## About The Pull Request
Most of this is just the standard refactoring `attackby(...) >
item_interaction(...)`, and adding associated screentips.
The plumbing subtype doesn't need its own separate context code, because
the missing alt-click parts get overridden and thus aren't present
anyway.
The alt-click felt very unclear without feedback, so now makes the
standard clicking sound and plays a balloon alert.
The plumbing iv-drip wrench act no longer needs to check for combat
mode, as that's assumed for tool acts, and we use early returns instead
of that odd order of operations.
## Why It's Good For The Game
Less `attackby`
More screentips
More interaction feedback
## Changelog
🆑
refactor: Refactored IV drip item interactions. Please report any
issues.
sound: IV drip alt-click flow minimization/maximization makes the click
sound.
qol: IV drip alt-click flow minimization/maximization gives feedback.
qol: Updated IV drip screentips.
/🆑
## About The Pull Request
Because it does nothing.
The only reagents that had this flag were inverse reagents & some
medicines but those reagents already had their `inverse_chem` set to
null meaning they are incapable of splitting even without this flag.
From the comments it said the flag had something to do with stomachs
constantly calling `on_mob_add()` which would split the reagent twice
however upon inspecting stomach code no such thing exists so it didn't
create any problems.
Once the reagent enters the mob it splits just once because purity is
preserved when transferring the reagent to different organs so this flag
never had a chance to do anything
Less code to worry about
## Changelog
🆑
code: removed `REAGENT_NOSPLIT` flag
/🆑
## About The Pull Request
Because it does nothing.
The only reagents that had this flag were inverse reagents & some
medicines but those reagents already had their `inverse_chem` set to
null meaning they are incapable of splitting even without this flag.
From the comments it said the flag had something to do with stomachs
constantly calling `on_mob_add()` which would split the reagent twice
however upon inspecting stomach code no such thing exists so it didn't
create any problems.
Once the reagent enters the mob it splits just once because purity is
preserved when transferring the reagent to different organs so this flag
never had a chance to do anything
Less code to worry about
## Changelog
🆑
code: removed `REAGENT_NOSPLIT` flag
/🆑
## 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
## 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
Melee attack chain now has a list passed along with it,
`attack_modifiers`, which you can stick force modifiers to change the
resulting attack
This is basically a soft implementation of damage packets until a more
definitive pr, but one that only applies to item attack chain, and not
unarmed attacks.
This change was done to facilitate a baton refactor - batons no longer
hack together their own attack chain, and are now integrated straight
into the real attack chain. This refactor itself was done because batons
don't send any attack signals, which has been annoying in the past (for
swing combat).
🆑 Melbert
refactor: Batons have been refactored again. Baton stuns now properly
count as an attack, when before it was a nothing. Report any oddities,
particularly in regards to harmbatonning vs normal batonning.
refactor: The method of adjusting item damage mid-attack has been
refactored - some affected items include the Nullblade and knives.
Report any strange happenings with damage numbers.
refactor: A few objects have been moved to the new interaction chain -
records consoles, mawed crucible, alien weeds and space vines, hedges,
restaurant portals, and some mobs - to name a few.
fix: Spears only deal bonus damage against secure lockers, not all
closet types (including crates)
/🆑
## About The Pull Request
Adds printable injectors to chemmaster and chemfactory, re-adds bottles
to chemmaster, fixes chemfactory being unable to print 100u bottles that
broke because of upstream changes - see changelog
## Why It's Good For The Game
bugs are bad, there's no real reason why you shouldnt be able to factory
1u pills
and, well... - printable injectors have been a very much requested
feature - we already have hyposprays, but they arent the kind of
disposable slop you can just throw out to crew and have their own issues
- having a 25u 1.5 sec injection is a good alternative to patches and
pills
having them be non-instant limits the potential to use them for murder
(piercing hypospray is still a much better option for that since you can
pump 50u of death slop into people...)
## Proof Of Testing
there would be some if github didnt refuse to load images for some
reason
i did test it a bunch of localhost though, i swear :3
## Changelog
🆑
add: printable 25u injectors, 1.5 sec injection time to other, instant
self inject, AP
add: you can print bottles and large bottles in the chemmaster, no more
pharmacy condimasters
qol: chemfactory can print items with less than 5u reagents now, down to
1u
fix: chemfactory can print 100u bottles properly again
fix: chemfactory doesn't call vials "bottles" anymore
image: added new injector sprites
/🆑
## About The Pull Request
Melee attack chain now has a list passed along with it,
`attack_modifiers`, which you can stick force modifiers to change the
resulting attack
This is basically a soft implementation of damage packets until a more
definitive pr, but one that only applies to item attack chain, and not
unarmed attacks.
This change was done to facilitate a baton refactor - batons no longer
hack together their own attack chain, and are now integrated straight
into the real attack chain. This refactor itself was done because batons
don't send any attack signals, which has been annoying in the past (for
swing combat).
## Changelog
🆑 Melbert
refactor: Batons have been refactored again. Baton stuns now properly
count as an attack, when before it was a nothing. Report any oddities,
particularly in regards to harmbatonning vs normal batonning.
refactor: The method of adjusting item damage mid-attack has been
refactored - some affected items include the Nullblade and knives.
Report any strange happenings with damage numbers.
refactor: A few objects have been moved to the new interaction chain -
records consoles, mawed crucible, alien weeds and space vines, hedges,
restaurant portals, and some mobs - to name a few.
fix: Spears only deal bonus damage against secure lockers, not all
closet types (including crates)
/🆑
People can now pet held mothroaches and pugs if they want to, or use
items on them, hopefully without causing many issues. After all, it only
took about a couple dozen lines of code to make...
...Oh, did the 527 files changed or the 850~ lines added/removed perhaps
catch your eye? Made you wonder if I accidentally pushed the wrong
branch? or skewed something up big time? Well, nuh uh. I just happen to
be fed up with the melee attack chain still using stringized params
instead of an array/list. It was frankly revolting to see how I'd have
had to otherwise call `list2params` for what I'm trying to accomplish
here, and make this PR another tessera to the immense stupidity of our
attack chain procs calling `params2list` over and over and over instead
of just using that one call instance from `ClickOn` as an argument. It's
2025, honey, wake up!
I also tried to replace some of those single letter vars/args but there
are just way too many of them.
Improving old code. And I want to be able to pet mobroaches while
holding them too.
🆑
qol: You can now interact with held mobs in more ways beside wearing
them.
/🆑
## About The Pull Request
Chemical presses now have a setting to customize pill duration, at 3s by
default (like chemmasters). Both presses and chemmasters now have a
setting for 0s pills, previously the cap was 1 as allowing to completely
dissolve the coating with water was something I only implemented down
the line.
Also slightly cleaned up both chemmaster and chem press files so they
pass linters now.
- Closes#90427
## Why It's Good For The Game
Presses not being able to customize pill durations is kinda silly and
was an oversight on my part, same with 0s pills - you can achieve the
same result, and ideally you should be able to produce those with
presses, at which point there's no reason to not add them to
chemmasters.
## Changelog
🆑
add: You can now customize pill duration in chemical presses
balance: ChemMasters and chemical presses can now create 0s duration
pills.
/🆑
## About The Pull Request
People can now pet held mothroaches and pugs if they want to, or use
items on them, hopefully without causing many issues. After all, it only
took about a couple dozen lines of code to make...
...Oh, did the 527 files changed or the 850~ lines added/removed perhaps
catch your eye? Made you wonder if I accidentally pushed the wrong
branch? or skewed something up big time? Well, nuh uh. I just happen to
be fed up with the melee attack chain still using stringized params
instead of an array/list. It was frankly revolting to see how I'd have
had to otherwise call `list2params` for what I'm trying to accomplish
here, and make this PR another tessera to the immense stupidity of our
attack chain procs calling `params2list` over and over and over instead
of just using that one call instance from `ClickOn` as an argument. It's
2025, honey, wake up!
I also tried to replace some of those single letter vars/args but there
are just way too many of them.
## Why It's Good For The Game
Improving old code. And I want to be able to pet mobroaches while
holding them too.
## Changelog
🆑
qol: You can now interact with held mobs in more ways beside wearing
them.
/🆑