Overlooked in last air tank fix PR.
Suit storage sprites can now be defined per-species if the need arises for anything as weird as Tesh. That method seemed neater than a bit of unique code just for Teshari in the base update_icons code.
The cross of invisible particle accelerator/gyrotron targets where the
field goes was set as impassible to everything but mobs. Including
air. Now it's impassible to beams and particles only.
One place was capping the 0-1 percent_instability float to 100 instead
of 1, easy fix.
On Multi-Z compatible maps, if a tile is missing a ceiling (IE there is an open space above it), it will display an overlay to show this. This makes it easier to know where the hole in the ceiling is without having to go to the ceiling. Overlay sprite by Mechoid.
Also fixes space tiles appearing when meteors/explosions/other fun things occur on the Southern Cross map instead of open space.
Gene masks (like for plant genes) used unpadded num2hex on a random
number 0-255. This had the (technically ok) result of masks for values
1-15 being a single character but also had the (not ok) result of the
mask for value 0 being the empty string. This only happened to 1/256 of
genes, so was easy to miss.
This change pads all of them to 2 characters so this issue won't happen
and to line things up nice.
* POLARIS: Do this lazily
* POLARIS: Speed up visible_message and audible_message
* POLARIS: Destroy this list rather than cutting it, for future safety
* Runtime in dna_modifier.dm,330: Cannot read null.occupant
* Runtime in Chemistry-Reagents.dm,47: Cannot execute null.remove reagent().
* Runtime in blood.dm,182: Division by zero
* Compiled with the right map this time
The initialize() routines of HE pipes, vents an scrubbers need to be atmos_init() after all.
If you register yourself with radio controller you need to de-register yourself too.
* Adds "typecache" utility functions. A fast way to filter lists by type.
Ported from TG
* Ports the "orbit" feature and subsystem from TG
* Adds a feature that allows mobs and objs to "orbit" around some atom. They literally are moved around in circles. See the `orbit` proc in orbit.dm.
* Adds a subsystem that processes the actual movement of orbiting items.
* Adds utility methods for common machinery behavior.
* Adds default_unfasten_wrench which handles the standard anchor/unanchor behavior of wrenches being used on machines. Together with the other default_x_tool machinery procs we can eliminate having that code duplicated in dozens of places!
* Adds is_wire_tool proc to easily detect when a machine is hit with a tool that should open its wires UI (if it has one).
Based on ideas from Paradise, with improvements for us.
* Implements the Tesla Engine
Ported from a mixture of TG and Paradise code and assets: Edison's Bane
Includes the tesla energy ball itself, the generator that makes it, tesla coils, grounding rods, the circuits and frames to build them.
* Switch dusting to zapping on impact and spin better
Ported /tg SpinAnimation which supports more than triangles.
* POLARIS: Simplify Destroy on plane_master
If we're being Destroyed, the mob probably is too. Their job to remove references to us though.
* POLARIS: What if I want to wear a mouse on my head
* POLARIS: Lighting runtime for accessing a list that might not exist
* POLARIS: Lazily clear these lists
* POLARIS: Just return the normal hint in Destroy on plane holders