* Custom digiline rules for machines
* Add custom digiline receptor and effector rules for machines
* technic.digiline.rules must be always available, even if digilines is disabled
Co-authored-by: SX <50966843+S-S-X@users.noreply.github.com>
When the function is defined inside the ABM, a new closure is allocated every time the ABM runs.
Since the action function is already way too long, it's better for readability and performance to split it out.
Add the EU_string helper function
In comparison to pretty_num it uses SI prefixes, adds "EU" (e.g. kEU) and rounds the number for readability
Add a constant_digit_count boolean setting
and where it is
only prints the warning once per redundant station, per minetest
session. if there are multiple redundant stations on a network, digging
one should cause the warning to appear for the next one technic finds,
if it doesn't show them all right away.
(for situations where a user creates a laggy machine on a public server, use
this to suspend power distribution until the machine is found and disabled)
`/powerctrl off` to disable
`/powerctrl on` to reenable
(actually, anything but "on" disables it)
delete back/bottom texture for power monitor
use "machine bottom" for bottom of force field generator
add cable connection overlay, use it on various machines' bottoms/sides, as appropriate
This fixes several issues:
* More than one switching station could become active on large networks
- Switching stations now semi-permanently become disabled if another is present
- Power monitors have been added to replace the function of "slave" switching stations, to discourage overuse of switching stations
* Networks did not reliably "split" when cutting a cable
- I "may" have caused this issue, but I believe it is solved by this
* Machines did not run without a player near the switching station
- Active switching stations now forceload themselves, and free the forceloaded block if disabled, dug, or disconnected
- Machines are only loaded to run them (as before), so only one mapblock (or two if the bottom edge of the switching station is a mapblock boundary) is loaded
- Cables are still only loaded during a full network recalculation
Changes:
* Make rayIter a global utility, and use it for radiation too.
* prettynum -> pretty_num and cleanup.
* Remove resolve_name/function_exists (unused).
* Cleanup nuclear reactor code.
Don't load the whole digging area when only a small piece is relevant.
Also, move the (time expensive) check whether the air above a block is free to the last position, which spares unneccessary checks when multiple quarries are placed together, or a quarry has to loop over air for another reason.