- Instead of using auto_use_power to re-tally up machinery's power usage every cycle, track the steady "static" load separately from the transient "oneoff" usage. Machines then only need to inform the area when they use oneoff power or *change* their steady usage.
- Remove auto_use_power and stop SSmachines from calling it.
- Add vars to track "static" usage for each of the three power channels to /area
- Rename the existing three vars to "oneoff" so its clear what they mean (and to catch people accidentally updating them directly)
- Update area power procs and APCs to use the new variables.
- Rename /area/proc/use_power() to use_power_oneoff() to make it clear what it is doing.
- Deprecate /obj/machinery/use_power() in favor of use_power_oneoff() but don't delete yet. Can transition gradually.
- Add logic to the update_power procs on machines to calculate the deltas and update static area power whenever their usage changes.
- Add logic to machines to update area power when they are created, destroyed, or move.
- Moved /obj/machinery procs related to area power usage into machinery_power.dm to make them easier to find.
- Added or updated comments in several places to explain what is going on and how to use it.
- Please fasten your seatbelts, this will be a long one as it joins few older Bay PRs into one.
1. Ports https://github.com/Baystation12/Baystation12/pull/12626
- SMES units may now be damaged and destroyed. Charged SMES units fail quite violently. Damage can be fixed by welding tool.
- PSUs completely refactored, ghetto variant no longer exists.
- Cell rack PSUs now can be considered a hybrid between large battery charger and a SMES. They actually use the cells to store power (so you can hot-swap the cells to get more juice simply via the UI without deconstructing the whole machine), but in comparison to SMES have poor throughput and capacity in general (cells are simply too small). They are also somewhat limited in configuration options (lacks the precision electronics of a SMES). Better matter bin lets you put in more cells, up to 9.
- Cell rack PSU also has a mode that allows charge-balancing all inserted batteries (moves energy around so each battery has the same charge %)
2. Ports https://github.com/Baystation12/Baystation12/pull/11977
- SMES units now have full load balancing capability, getting rid of that annoying "One SMES charges at full, other SMES gets nothing" problem. If insufficient power is available on input, all inputting SMESes will now charge at same percentage. If more SMESes power a single output, they will all output equal percentage of their setting.
- This appears to have a pleasant side effect of fixing the issue where SMESes could starve APCs of energy. SMESes are ALWAYS last to input power on a powernet.
- This also appears to have fixed weird values displayed in SMES output/input load readings in the UI. By weird values i mostly mean inputs/outputs actually higher than the SMES is set to have.
3. Ports https://github.com/Baystation12/Baystation12/pull/18137
- SMES units (and subtypes, therefore effectively also PSUs from previous entry) can now have more than one terminal. This effectively allows a setup where two (or more) sources feed a single SMES, which then feeds the output. SMESes can not exceed input setting even with multiple terminals.
- Typical example of use in practice would be SMES that runs something important (for example an AI, telecomms, pick whatever you want). It could have one input from the power grid, and second input from a PACMAN generator set up nearby as a backup. Before the generator would have to be wired into main grid, therefore main grid would siphon off power from it. Now the generator can be separate and dedicated for whatever use you want.
* Makes slightly smaller objects capable of bashing open busted APCs
Because I've realized that engineers have enough --- to deal with without having to hunt down a fire extinguisher to bash open an APC
* Grammaring the best
Drone subtype added that is slower than the regular type, so that fleeing is an option now.
All drones on surface POIs have been replaced by this subtype.
Fixes power issues in several POIs.
Makes POI SMESes more robust and start full.
APCs in POIs will no longer send an alert to the station.
Fixes missing area in bonfire POI.
Tweaks name and desc of big stompy drone mechas.
Now certain weapons can strike faster or slower than usual. No weapons currently do this as this PR just lays the groundwork for that.
The click delay can also be modified with traits. The slime agility modifier makes attacks happen 25% sooner.
Adds debug test verb to display a weapon's DPS. It's really basic but should be sufficient for future force adjustments I might do in the future.
Adds toolspeed var, which is a multiplier on how 'fast' the tool works. 0.5 means it goes twice as fast.
Adds usesound var, which determines what sound is used when a tool is being used.
Changes a lot of code to use those two vars instead.
Adds 'ayyy' tools, which are ported from /tg/'s abductor gamemode. They're currently admin only but I might make them obtainable by xenoarch later.
Adds powertools, also from /tg/. CE starts with them in a new toolbelt that spawns in their locker, ported from (you guessed it) /tg/.
Changes welder sprites to look nicer, ported yet again from /tg/. Modified the blue welder slightly so it can be the electric welder sprite.
Adds various sounds from /tg/, for tools and welders.
-Adds a Polaris version of APC rebooting
-Changes the random APC-bluescreening event to be more sensible in what it does and how to repair it. Bluescreened APCs are permanently unlocked, and can be fixed by removing the power cell and applying a multitool.
-EMP'd APCs now give Bay's timed (or manual) reboot nanoUI so that important places aren't shut off permanently if engineering can't get around to them.
-Nins and twizs no longer **** up APCs when they drain power from the cell completely. Also, drained power comes from the powernet primarily, and only draws from the battery if the powernet doesn't give enough (random chance) or if the cable is cut.
-Bluescreened APC sprite now switches to an open wire panel sprite if a screwdriver is applied.
-Grid checks put a nanoUI notice on APCs. As it is now, you have to wait for the grid check to end or use the grid checker in engineering before you can manipulate APCs.
-Grammar fixes
-More grammar fixes
-My god the grammar fixes
-to_chat'd the user <<s again.
-Merged a small clean-up to power states.
-Bashing APCs to pieces was always ineffective but would spam everyone anyway. Now, it only spams the person bashing the APC. This is a placeholder, ideally you should be able to bash a working APC's cover off if you want its battery out but this PR is already big enough as is.
Maps in a new Grid Checker machine, located in an expanded substation room in Engineering. When a grid check happens, Engineering can hack that machine to restore power sooner. Wearing insulated gloves is highly recommended.
Separates the 'count and assess everything' stuff to it's own datum, called the metric datum, which I plan to add on to in the future to make counting and metrics easier.
Makes decision process a bit more weight-based, will probably continue tweaking later.
Makes the admin debug UI have links to change settings easily.
Adds replacement for grid check event, which works similar to the old one, but is now based on a physical machine in the game world, that Engineering can hack to make the event end faster, if so desired. Note that the machine is not mapped in, and won't be mapped in until the event system is ready for launch.
Adds grid_check variables to SMESes and APCs to make them stop doing work without draining the battery.
Grid checks in the new system are caused by a "power spike" which originates from the engine and will cause bad things, should no grid checker machine be connected to the power-net. These power spikes occur when the GM decides that a grid check is a good event to have.
The grid checker can be built and deconstructed using the standard machine construction methods.
Changes layout of the AI core, see picture in PR.
Moves APCs for core and upload to the backs of the rooms.
Critical APCs can somewhat resist EMP now.
Gives turrets a ten second timeout until they go underneath the turret covers, unless turned off manually or if they lose power.
Adds a new type of turret specifically for the AI upload/core. This type has more health, has a 1/3 chance to ignore EMP, and fires xray lasers, to counter ablative armor.
A new material called Durasteel has been added. It is made from Plasteel and diamonds, and boasts more toughness than Plasteel alone, as well as reflectivity. The inner walls of the AI core are made out of this new material, which makes emitters less helpful.
Emitters can be damaged by projectiles, and will explode if too much damage is sustained. Shooting a Durasteel wall will likely cause you to lose the emitter.
New AI core turrets turn green when on lethal, to show that xray is coming.