Admin freezing is now based on mob procs, instead of a lengthy else-if
change.
Other changes:
- No longer depends on paralysis, instead uses sleeping.
- No more frozen mobs setting off bombs.
- Simple animals and slimes override the default proc to make freezing
affect them as one would expect.
- Frozen var has been moved from human defines to living defines, no use
yet.
- Mobs frozen are added to a global 'admin_frozen_mobs' list.
- List is used to determine if the freeze verb should freeze or unfreze.
- Moved mob freeze-related vars to freeze file.
while life serve the same function, it is somewhat difficult to make,
the lazarus injector revives any neutral simple_animal on use, and can
turn hostile animals friendly towards them if it has been emped. so five
of those has been added to the crittercare.
Most importantly, Ian got a new mask, the mustache.
If you had Ian with a pet collar name like spot, and you gave him say a wizard name, then he would deafault to his real_name over his name, and making it impossible to restore the name on the collar.
Reaction_mob(), which handles things like TOUCH based reactions, now
will properly obey process_flags.
- This means things like Synthflesh won't work on Synthetics.
Changed Golems from PROCESS_DUO to PROCESS_ORG
- This will give them back the ability to be healed via chemistry, since
they don't naturally regenerate.
- PROCESS_DUO remains defined in case someone finds a use for it
(adminbuse maybe?)
This commit first and foremost ports the -tg- atom pooling system, and
removes the old experimental system entirely.
Secondly, this PR modifies the qdel system to use a -tg- lookalike
"destroy hint" system, which means that individual objects can tell qdel
what to do with them beyond taking care of things they need to delete.
This ties into the atom pooling system via a new hint define,
QDEL_HINT_PUTINPOOL, which will place the atom in the pool instead of
deleting it as per standard.
Emitter beams are now fully pooled.
Qdel now has semi-compatibility with all datum types, however it is not
the same as -tg-'s "Queue everything!" system. It simply passes it through
the GC immediately and adds it to the "hard del" lists. This means that
reagents can be qdel'ed, but there is no purpose as of yet, as it is more
or less the same as just deleting them, with the added effect of adding
logs of them being deleted to the garbage collector.
Fixes a runtime preventing Diona Nymphs from eating weeds and regaining
nutrition
Fixes fruit attacks checking for "hurt" when they should check for
"harm".
- You can now smack people with fruit on harm intent. If the plant has
TRAIT_STINGS, it will inject them with it's chemicals
- You can now crush a fruit in your hand on harm intent to destroy it
(will not leave trash like banana peels!). This will trigger the same
effects that throwing the fruit would have, except without needing to
throw it.
- Use this to activate that smoke-screen tobacco you spent all round
mutating, or to make a quick escape with your bluespace tomato!
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
Robot modules weren't handling qdel'd stacks properly, so now they
simply don't get qdel'd. They shouldn't get deleted often enough for
this to hurt performance.
Also, the module slot of a stack will now be deselected when it's used
up, and it will show up immediately when respawned while recharging.