Implements a wrapper to the call()() function, meant to be used for calling dylibs.
This is useful for two reasons:
It allows us to debug the dylib calls (such as timing for the time being).
Guess who the baton passes to.
Convert all runes to datums
Rework arcane tome mechanics, holy shit it's terrible
Convert rune effects to actually use rune datums
Add additional effects that are now possible because of non-shitcode code
-Almost all aspects of virology and it's related machinery and objects have been purged from the code and map.
-Most of disease code has been purged. Some pieces of it remain as holdovers because they would require extensive rewrite of defines and codes for things like nanite robot transformation and appendicitis (that frankly isn't necessary)
-The outbreak event has been purged, as has the virology malicious code event variant.
-The Virology department has been remapped into the Abandoned Sector.
So while I was doing completely different things, I remembered discussing, with Geeves, that our preferences toggles only save 16 bit flags. Despite BYOND now supporting 24 of them. Lo and behold, sanitization is at fault. So I fixed it.
Added a define BITFIELDMAX to indicate the max length of a BYOND bitfield. Replaced all relevant uses of 65535 with it. (Need to do a sweep for 0xffff as well, actually.)
The lifeless live again. Or in this case, what never actually lived here.
Ports Baystation12/Baystation12#17460 probably for real this time. What this allows us to do is create shuttles on runtime and make shuttles easier by just making landmarks and a shuttle instead of areas and shuttles. Also allows runtime landmark creation via flares or whatever AND allows shuttles to use different landmarks at will.
I removed most of the overmap stuff, I think. It shouldn't be hard to slam it in whenever we need to.
Changes:
"Shuttle code has been completely reworked."
"Shuttles can now be modified to have more than one destination."
"Shuttles now have a takeoff sound."
"You can now throw mobs against walls to damage them. A lot."
"You now need a neckgrab to throw mobs."
"BEING UNBUCKLED DURING SHUTTLE LAUNCH IS DANGEROUS! Don't do it."
"Adminghosts can now interact with all shuttles."
Tweaked a hell of a lot of silicon code to make synthetics better.
Synths with scrambled codes that prevent them from being on robotics computers will now appear on Merc camera networks.
Both variants of the engineering borg can now deploy the malf borging machine.
Medical borgs no longer get polyacid sprays, instead getting Wulumunusha CMO Hyposprays, which cause muteness.
You must now be on help intent to use items like crowbars and screwdrivers on borgs. Otherwise you hit them with it.
Fixes lack of chat tags, and runtime on player panel preventing it from displaying stuff.
Don't really understand the problem with Cut() on the player panel data["players"], it should leave an empty list behind right..? Anyway. Let's see if this passes dreamchecker.
Species that are neuter (at least from the human/player characters' perspective) will now properly spawn as neuter, and be neuter in the character setup screen.
This affects (tagged) IPCs, Dionae, Vox & Vaurca.
Also fixes some gender related grammar stuff.
I think all the procs that randomise based on gender will just default to one or the other and shouldn't have noticeably weird results.
This also fixes the bug where Diona players would be 'he/she', but NPC diona would be 'it'.
The C++ UDP logging library has been swapped out with a rustg implementation. The rustg library uses non-blocking IO mode, and hopefully has less trouble than the C++ one. Though we'll have to see. It should error when the call is supposed to block.
The old library has been removed.
Adds a system for autobanning IPs which abuse the world/Topic API. The implementation is very analogous to fail2ban. All bans implemented are removed at round end, or at the start of the next round. This is to stop the windows firewall from getting clogged to hell. The system respects whitelisted IPs.
Ports (and adjusts) Baystation12/Baystation12#12521 et al. Essentially brings our visualnet code up to the standard of three years ago, rather than five.
Side effects of merging may include but are not limited to loss of AI vision, helmet camera failure, garbage collection implosion, infinite turf loops, and unintended layer shenanigans.
High-level changes:
Overall, visualnet/chunk procs have been renamed and refactored to be clear as to their function.
Fix some layering issues related to magic numbers, these have been set to constants.
Visualnets now track source movement rather than overriding individual mob/obj procs.
Adds obfuscation underlay to complicate memory fudging to remove camera static.
Cameras now only add themselves to the cameranet if they're on open (non-restricted) networks.
Helmet cameras now use cameras themselves rather than network defines.
Adds a sorted object list insertion helper.
The Camera MIU (presently unused) should now function properly.
Unused cultnet / cult mask deleted because refactoring that would likely kill the few brain cells I have left