- Refactors some code to more modern standards, fixes problem with PSUs not reacting to UI input.
- Adds cable coil recoloring using multitool (Bay went the path of having dedicated cable painter device but that really feels as too much of a hassle having to carry another device for this - lets just say the paint is electrically reactive in some way).
- Adds changelog
- 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.
Also fix a few things to be on the correct plane. Basically the under-floor stuff is supposed to be on PLATING_PLANE.
Portable atmospherics go on object layer so they are above stationary machinery, given that they move around.
Fixed wires to be on top of pipes like they used to be, otherwise they'd be obscured too often.
* Fixes#4632.
* 1:27 am coding best coding
* fixes a warning
* Removes the last of the gender macros. Gender is dead.
* gender II: the travis-ing
* linebreaks are dead too.
* oops i accidentally the gender, also ambiguous gender is now taken into account for get_visible_gender
Semi-rewrites how surgery failure works. Using an improper surface will call the surgery step's fail proc instead of just doing a melee attack.
Adds 'surgery odds' var to objs, which determines effectiveness. The numbers for operating tables/roller beds/tables remain unchanged from the previous version, however doing it this way makes it cleaner to add new surfaces in the future.
Adds a proc to get a surgery surface.
Also makes burn repair on FBPs more efficent, so that one scorched robot does not take literally all of robotic's wires.
A lot of new defines are now in inventory_sizes.dm, which contains;
All the size identifiers (the thing that tells the game if something is bulky, or w/e).
Storage costs for all the sizes, which are exponents of two, as previously.
A few constants for inventory size.
Also changes all storage item's capacity definitions by basing it off of how many 'normal slots' exist for it. This allows one to change the definition for all of the defines in the file, and everything will follow along without needing to change 500 files. In testing, I made all ITEMSIZE_COST_* defines doubled, and nothing had broke.
The benefit of doing all of this is that it makes adding new weight classes in the future much simpler, and makes knowing how much space a container has easier, as seeing ITEMSIZE_COST_NORMAL * 7 means it can hold seven normal items.
* Consolidates copypasta for repairing robolimbs
Also prevents self-repairing a limb you are using to hold the tool
* Fixes robot organs becoming undamagable after reaching cap
* Fixes repairing with cable not using any cable, repairing with weldingtool not doing eyecheck
* Removes ORGAN_ROBOT and ORGAN_ASSISTED flags, fixes#13123
* Fixes damage to robotic limbs not triggering organ processing
At the same time, robotic limbs with damage don't need to process.
However, it's much safer to explicitly have robot limbs return 0 from
needs_process() instead of not rechecking bad external organs.
* Build on HarpyEagle changes to apply to Polaris
Had to apply the change from flag to an enumeration.
* Removes unneeded file
* Fix bruisepacks, remove heart
Well, the unused bay version of the heart anyway
* Tweaks examine, reverts isSynthetic
Reverted that because Bay doesn't use it the same way. Also changed Examine to not list every robo-limb on non-FBPs in red, but left them listed as normal per Spookerton
Removes limitation of being unable to join different colors of cable
Allows merging of different kinds of cable
Adjusts the color changing proc to be nicer as per Baystation12/Baystation#11645