* Make Singulo Stable Again
* Prevents emitter beam effects from being pulled by singulo. Now watch them hit the field gens.
* Prevent singulo from consuming the PA particle effects. It already gets fed by impact, don't try to eat them.
* Improve the Setup Singularity debug verb to do more better setup (including PA)
* Fix the energy dissipation values so that singularity does not just keep on growing even when setup properly.
* Enhance singularity proc/eat()
* Use `var/simulated` as a more generic way to ignore lighting overlays etc
* Remove redundant code in the rest of the proc body.
* Slight optimization: avoiding typecheck in loop over return from orange()
* For non-assoc lists every value was being read as a string. For vars like "access_req" this is bad - it doesn't work. Therefore we add support for lists of numbers.
* While I'm here, might as well add support for non-string keys of associative lists too, since that's required by things like vending machines.
Fixes Destroy() proc on zpipes and cryo cells gets rid of a `loc = X`
Updates remaining atmos machinery to use atmos_init
Fixes area atmos computer to use initialize() instead of spawn-in-New
Because starting money is pretty much all it affects, anyway. Instead of just being used to measure NT's opinion of you, you now choose income categories to fall under. This still affects how much money you start with, with the highest category giving a 1.3x modifier, but the lowest has been lowered to 0.5 times. Now you can start with even less money than before.
Currently doesn't change the "this person might be willing to help you" message for traitors, but it would be easy to do something different with that if requested.
* to_chat() replacement.
* Revert calling target.init_dir() before connecting.
* This change was added in https://github.com/PolarisSS13/Polaris/pull/3775 to counteract `dir` not being set prior to New() for dynamically loaded maps. The root cause was /atom/New() not calling _preloader.load(). Undoing the change now that /atom/New() is fixed.
* The addition of the init_dir() proc itself however, is useful, because there ARE other times some atmos machinery will want to re-initialize its dir, specifically whenever it is rotated.
* init_dir() must be called in the constructor of all atmospherics machines capable of connecting to another. Since it has to happen for ALL machines, lets move that call to /obj/machinery/atmospherics/New()
* Rename /obj/machinery/atmospherics initialize() to atmos_init()
* These days `initialize()` is used to handle general object initialization that is moved outside of New(). The node connection discovery of atmos machinery needs to happen after all that, and so needs to be in a separate proc.
* Make sure to actually call atmos_init during system startup.
* Checks list length after input() returns so you can't cheese it.
* Sanitizes list to proper length so existing characters over the limit will be fixed.