* Adds in body snatcher
* Modifies method the bodysnatcher works
* Fixes merge & compile error
* Update trash_pile.dm
* Update trash_pile.dm
* Gets transfer_to to work
-Added a counter for janihound to keep track of how much crap it's ate.
-Lowered janigut capacity to 25 items.
-Made mice edible for the borgo.
-Gave a gentle touch to the wolftaur sprites. (more types later?)
-Added a saddlebag version that fits itself for every quadtaur.
-Added a robust combat aesthetic saddlebag as a childtype to the forementioned.
* Okay evidently walk_to(A, B) doesn't stop when A reaches B, but keeps running in the background forever until it is manually canceled! Therefore in order to be garbage collected, we must cancel walking on any object that might have initiated it.
* Fixes this on chemsmoke and spiders.
* The same story applies to walk_towards; fixed for dust, meteors and immovablerod, and also to walk_away; fixed for flashbangs.
* Also fixed chemsmoke actually getting qdeled at the right time.
* Okay evidently walk_to(A, B) doesn't stop when A reaches B, but keeps running in the background forever until it is manually canceled! Therefore in order to be garbage collected, we must cancel walking on any object that might have initiated it.
* Fixes this on chemsmoke, spiders, and aiholos.
* The same story applies to walk_towards; fixed for dust, meteors and immovablerod, and also to walk_away; fixed for flashbangs.
* Also fixed chemsmoke actually getting qdeled at the right time.
I like the ones I wrote, but these are proooobably better.
They have normal units, which are worn on the back and you can grab the paddles out of to shock people.
Then there's compact units, which are worn as a belt, and serve the same purpose.
And finally there's the combat units, which allow revives through spacesuits, and have no safety so you can zap living people on harm intent (good for antags? CMO?).
These appropriately check for blood, a heart, etc. So, in that way, they're a bit more realisic than my original ones which I was sorta lazy in writing.
Emagging them turns off the safeties, allowing them to zap people who are still alive.
I actually cleaned up their sprite choice code a little and added a sprite for the 'combat' one since previously it was just the emagged sprite (flashing exclamation point). Now it's just got a red heart monitor, and the emagged ones keeps the exclamation.
Did make one balance change in that compact ones use twice the power (inefficient small capacitors? or something?).
* Since the transcore has a ticker process, it really should be a subsystem. Converted it over. However, because its ticker is so fast, I did not bother implementing MC_TICK_CHECK into it. Therefore it has the SS_NO_TICK_CHECK flag.
* Because its a subsystem, the global variable is now SStranscore instead of transcore.
* Because subsystems are so easy to debug, I removed the "TC" debugging variable from the machines that used it.
* Organized a few files. The transcore subsystem is in the subsystems folder. Defines had to be moved to defines folder so they are included first.
**This commit prevents dead people from being backup-implanted!**
But it's fine because you just use this handheld thing to back them up instead and don't waste an implant, and medical starts with 4 so don't freak out. See below.
Adds the SleeveMate 3200 hand-scanner device. This device allows you to scan people to determine several things about them:
- If they have a mind in them
- If they have a client attached
- If their mind matches their body
- If they are alive/conscious
All of that is represented with in-universe messages of course. The real function of it is that it provides several features:
- One-time mind scan: Performs a one-time mind scan for those that don't like getting mind backup implants. This will store that one scan in the database, but you'll forget everything since then if resleeved. This is also useful for resleeving someone who died without an implant, but is not DNR/DNC.
- One-time body scan: Adds someone to the body scan database, or, updates their body scan if they obtained a new body. Useful if someone has used the body designer and switched bodies, as you can update their body scan. You should probably check medical records, and LOOC around before using this to resleeve someone that didn't have a body scan originally, because they may have picked that to avoid resleeving.
- Store Whole Mind: Takes the entire mind from someone, storing it into the SleeveMate 3200, rendering the patient mindless. From there, it can be backed up as many times as needed, deleted, or stored into someone with a Soulcatcher NIFSoft and run live in their VR (so now you don't have to digest/kill people for that).
Four SM3200's start in medical (1 in minimed downstairs, 3 upstairs), R&D can fab more, and they occasionally show up in trash piles for those wanting to be sneaky with a Soulcatcher, but who don't like digesting people.
* Remove remaining hard del()'s in our code.
* Replace deleted() and gcDestroyed with QDELETED macro.
* Fix some strange calls directly to Del() (capital D)
* Make Destroy() return qdel hints.
* Make a few of the Destroy()'s more comprehensive in cleaning up references.
* In edited Destroy() procs, converted to use qdel_null and qdel_null_list macros when possible for pretty code.
* Removed unused variable `sleevecard`
s = Speedloaders. (Functionally the same as clips, but they're not
_really_ the same thing, just in case we change these later.)
c = Clips. (Can also be used to fill other magazines.)
m = Magazine. (Holds ammo rounds.)
a = Ammo. (Individual rounds of ammo.)
* The performance of the radiation controller as-is was not fast enough for inclusion in production servers, but it has some nice featuers, so rewrote it to be more performant.
* Instead of storing the radiation strength for every turf, we only store the sources of radiation, and calculate the strength only for mobs who might be in range.
* Old method was ray-tracing to every turf in range whether anything was there to be irradiated or not. Could be hundreds of turfs. New method only lazily calcualtes strength at a turf if we actually need to know it. Often times this is zero turfs if nobody is standing in engineering.
* Removed the automatic processing of objects with "rad_power" set. Objects are responsible for calling the repository to create/update their radiation sources. Saves some extra overhead that in practice was redundant with other process controllers.
* Also tweaked to be more respectful of qdel'd objects and added some comments.
It's for the ERPs yo. And you can always find it by just walking around a bit and listening to the static if someone uses them for robust purposes (probably a lot more rare on our server).