This converts the machine and mob processes to the SMC. Additionally, it
adds the Atom subsystem, which handles all Initialize() calls in place
of the old gameticker. Due to incompatibility with our atmospherics
(FUCK OUR ATMOSPHERICS FOR FUCKING EVER JESUS CHRIST WHO THE FUCK MADE
THIS PIECE OF GODDAMN SHIT) atmospherics machines do not use
Initialize() as they should, instead opting for a custom atmos_init
proc that the air controller handles.
make environment_smash into bitflags
add obj_damage for simple animals
make default max_integrity and obj_integrity INFINITY for non-defined objects, until we can move more objects to obj_integrity/take_damage() system
adds examining objects to roughly check damage
more obj_defense.dm procs
tables can be attacked with items, glass tables have a narsie_act()
fixes, changes to make it compile
Includes a refactor for gun turrets (merged into portable turrets), hostile simple_animal behaviour, spells (sounds have been added) and poi_list items.
Refactored most instances of special_role setting/checking to use new
SPECIAL_ROLE_X defines in code/__DEFINES/gamemode.dm
Removed relative pathing from objective.dm and split large if statements
into multiple, plus a bunch of styling fixes
Refactored every instance of `istype(ticker.mode` into a GAMEMODE_IS_X
define in code/__DEFINES/gamemode.dm. Done primarily for when someone gets
around to making gamemode code less AWFUL
This commit does a *lot*
Main points of shit changed:
- Breathing for carbons is now partially handled at a carbon/Life()
level; Humans still use their species bullshit and all.
- Most shit has been pushed up the chain to living/Life().
- Simple_animals no longer use the fucking stupid Die() proc, they use
death() like a consistant fucker.
- Human vision is now handled via species.
- Lots and lots of robot copypasta cleaned
- AI is still a terrifying mess, not even -tg- touches it
I have tested this, and everything I thought to test worked:
- Aliens breathing
- Humans breathing
- Human vision
- Robot HUD
- human HUD
- Simple animals automatic systems
- Simple animals dying properly
- Robot goggles working
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.
Blob will now eat items placed on it.
Blob does not produce light anymore (take that dionas)
Shield blobs now have same brute resist as normal blobs
Attempted to lower the CPU load of the "Pulse" proc.