Fixes:
- Body scanners runtiming from bad drag-drops
- Flashbangs runtiming when flashing humans without eyes
- Diona nymphs runtiming because they're not simple animals with an
environment_smash var
- A thrown object colliding with a non-existent limb runtiming
- Brains runtiming when redundantly removed
- Thrown objects runtiming when they can't find an area
Both internal and external organs are a mess, which is making
maintaining and updating them nasty, so I'm cleaning them up, this is
the first stage
mechanical and assisted internal organs are now an object type rather
than a var in the organ which makes it much cleaner and easier to adjust
removed duplicate list of internal organs as there's no reason to have
the same objects in 2 separate lists
made New() a lot cleaner and more robust
External organs will be next
Infections can now spread between internal and external organs.
Also changes the organ_failure random event to cause an infection
instead.
Conflicts:
code/modules/events/organ_failure.dm
code/modules/organs/organ.dm
Body temperature regulation is now based on species, and environmental
temperature now respects the air density when affecting living/humans.
This also fixes some bugs with heat/cold protection handling and
improves the way synthetic species body temperatures are handled to be
much more logical.
IPCs always gain temperature but cool down because of their environment.
When the heat transfer to the environment is reduced because of the lack
of air, this will cause IPCs to heat up.
As well, having an infection will increase your body temperature, and
body scanners now detect infections.
Conflicts:
code/modules/mob/living/carbon/human/life.dm
code/modules/mob/living/carbon/species.dm
We no longer run auto_use_power() on every machine every tick.
We now have a global list of areas, and areas that have an APC in them (all_areas and active_areas) no more looping through world bullshit.
A bunch of snowflakey as fuck machines won't use_power() in their process, you get two options, active and idle, use them!
This means a lot of machines won't double dip on power as well so power usage for the station has dropped about 20%
Because everything is snowflakey as fuck we're going to have some machines that don't force an update on their power usage. Fuck them.
We should catch them with the root obj/machine/proc's forcing updates.
Conflicts:
code/modules/mob/mob.dm
code/modules/power/apc.dm