Replaced some attack() overrides with apply_hit_effect() or other attack
procs where appropriate.
Removed the attack() override from reagent_containers.
Refactors how synthetics set their modules. On login, if appearance selection was initiated but not finalized, the selection options popup again. Fixes a long-standing issue of borgs being able to look like the standard module by loging out.
Ensures the syndicate agent IDs and syndicate borgs will always have the same initial access permissions.
Removes now unnecessary syndicate snowflake code from NanoUI.
Synths now utilize actual ids.
Now you can attach your useless chunks of meat back!
Needs second step to make meat limb usable, use hemostat/cable/mousetrap.
Changes how organs 'die'. Instead of damage they now acquire germs, 2-6 points per tick, twice faster after hitting acute infection stage. Once they reach necrosis stage, they die. All in all it takes ~7 minutes for organ to go bad without a freezer.
As a bonus, you can now attach robogroins and roboheads (no brain included)
Fixes stumps being un-cuttable, which prevented all kinds of fun stuff with replacements.
Removed ORGAN_DESTROYED check from processing, take_damage should be taking care of that now.
Fixes runtime when a borg is reset.
Fixes issue where /proc/select_active_ai_with_fewest_borgs() would not always return the intended AI.
Fixes issues with new borgs spamming the master AI with creation messages under some circumstances.
Rewrites gun.dm. Reorganizes the firing procedure into logical procs and cleans up some unnecessary variables or demotes them to the subtypes that actually care. Energy weapons that create their own projectiles no longer care about in_chamber. Launcher support is much more natural now.
Cleans up duplicated cyborg energy weapon power supply code. Adds support for energy weapons to recharge from external power sources, unifying cyborg and hardsuit mounted weapons. Incorporates the cyborg taser recharging mechanism. Cleans up laser tag gun duplication
Changes path strings to actual paths. Changes relative paths to absolute paths.
Renamed several targeting vars to make their purposes more clear.
Fixed targeting not handling firing correctly for certain subtypes.
Continues the wiring upgrade. Now cameras, airlocks, robots, and air alarms also use the new wire datum system.
Global wiring code is now removed but there are sneaky objects which didn't rely on them such as mulebots and autolathes.
Fixes a few issues from the previous upgrade.
There is potential for breaking out all the special stuff for laser code but for now I'm happy to simply have a shared codebase.
I imagine pathfinding/patrolling may be sharable with bots in general as well.