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.
Feature: Introduces and adjusts code for cyborg and AI custom sprites
Cleanup: Streamlined the AI core selection code. Could probably be even cleaner but it's good for now.
Features:
- You now have to open up a cyborg after constructing it and insert all the components
- Cyborgs have per-component damage rather than total damage.
- Too much damage can fry a component, making it non-functional
- Components consume power
- You can disable a component to save power
- Actuator component allows you to move
- Camera component allows you to see
- Comms component allows you to use :b
- Radio component allows you to use radio
- The same placeholder icon for all components
Apply screwdriver to robotic arms and legs to get hands/feet. They can
be surgically attached properly, far as I can tell. Also, fixed a few
backwards slashes in text marcos.