any blob can block atmos, the core and nodes now do so
blobs use two different procs for checking health and updating icons instead of one(there's probably a use for this)
the split consciousness verb now requires a node under your selector, instead of checking a global list of nodes and picking the newest(why?)
blobs can no longer take non-brute and burn damage types(I would make toxin do bonus damage but the crew can't apply it anyway)
Stuff fixed: My sad attempt at fixing #13126.
The expand() proc for blobs is hopefully less intensive now (WHY did it
used to spawn a blob only to destroy it? That must've been such a
waste...).
Destroy code no longer needs to adjust for the expand() proc doing weird
things.
The antag panel will now show the correct variable used to determine
blob progress.
Renamed the variables I used so they're not so similar to each other.
blob_legit and blobs_legit was WAY to easy to mix up.
🆑 ktccd
Fixes bug #13126 and also a few other areas blobs shouldn't be win from
absorbing (centcom, SPACE etc).
Added a variable to areas.
Kept the original blobs list as a list of all blobs, in case that was
used somewhere else, and instead made a separate list for legit blobs.
/🆑
Blobs now get to know what their chemical does.
Added two more buttons, for readapt chemical and storage blob.
Added hotkey for removing blobs, alt-click.
Removing a blob gives you some points back.
This requires a 508 beta version to use. If Travis fails this he's a bitch
Exceptions will generate a stack trace, which is way easier to see and more helpful in actually solving this kind of crap. Also logs all the arguments, src, line, and file automatically.
Removed any dubiously helpful information in the exception names so the runtime condenser won't see each one as a different runtime. If the information is critical to solve these bugs (camera one maybe?), then I'll just make these warnings.
Thrown exceptions crash the currently running proc. Yes that means there's useless returns in a bunch of these, sue me. spawn()'s are to let the proc continue.
Almost all of these are difficult to trigger, but I did test playsound. And frankly even if they do cause bugs by crashing procs, big whoop
Created a take_damage() proc for obj/effect/blob.
Slight adjustment of the values of damage to blobs.
Fixes typo in pod people attack message (changed the verb from "slice" to "slash")
Replacing some fo mob in viewers() show_message() with visible message().
Simplifying some message code in a couple places, fixing typos and span classes.
Moving do_attack_animation() proc to mob/living
Fixing the pixel offset issue from beds especially rollerbed.
Fixing the nograv bouncing stopping because of another animation being used.(lying down, jittering, attack animation)
Ranged weapons and laser eyes have a cooldown of 0.4.
Grilles, windows, windoors, walls and blobs have a cooldown of 0.8.
Hitting mobs will also have a cooldown of 0.8.
Removes the unused USEDELAY flag.
In particular, the one where dead blob spores make a shitload of smoke and become invisible and generally be buggy on death.
Also blobs should GC correctly now.
Hopefully nothing went wrong but you never know.
Conflicts:
code/FEA/FEA_fire.dm
code/controllers/supply_shuttle.dm
code/game/gamemodes/changeling/changeling_powers.dm
code/game/machinery/autolathe.dm
code/game/machinery/drying_rack.dm
code/modules/hydroponics/hydroponics.dm
code/modules/projectiles/projectile/magic.dm
code/modules/reagents/Chemistry-Recipes.dm
code/modules/reagents/reagent_dispenser.dm
Works pretty well. If it can't GC something, it'll just del() it and be done.
Speed is amazing, holy shit.
New procs you should be aware of:
qdel(atom/movable) - sets up an object for garbage collection. Call this rather than del(atom/movable).
atom/movable/Destroy() - called right before the object is GC'd, so it still has a loc. Also called if the object is del()'d.
new controller - garbage.dm has all the details on this. Basically it nulls all references on GC'd objects and force del() them if necessary.
Generally speaking, objects should use Destroy() for behavior prior to deletion rather than Del(). You should also always call the parent so the object gets the right gc_destroyed var set.
ISSUES:
Tries to GC mobs atm. This actually works for new players, not so much for humans/monkies/simple_animals/anything. I'm guessing it needs to clear out their mind and HUD and maybe other things.
Gibbing is really bugged. It works, but the overlays just sit there for awhile and ugh. I'm very tempted just to del() mob/living and mob/camera and call it a day.
qdel() equipment doesn't unequip the item.
Pipes don't generally GC correctly. Debugging suggests they get referenced in many pipenets and that isn't cleared properly. However some do work fine. Need assistance here.
Bots don't GC, probably in the radio controller.
Lots of other shit doesn't GC but it's hard to find them because of the pipe spam.
I think I'm calling Destroy() twice by accident.