🆑 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.
Testing has revealed that it reduces the sluggishness of the game, though it will spike from lag when the singularity is loose. Thanks to ChuckTheSheep for suggesting it.
Server owners who want to keep set background enabled can do so by changing the define.
* The telescience computer starts with 3 artificial crystals.
* The crystals can be crushed to blink or you can throw it at someone to make them blink a short distance.
* You cannot teleport the AI or any anchored mob (unless they are buckled to an office chair).
* You can make the bluespace crystals from slimes or from research.
Changed how the overmind hud was updated so that it was more accurate. Instead of updating every life() it will update everytime the blob core health changes and everytime the resource count changes.
Renamed the expand power to "expand/attack", to make it more clear to new blubbers that you use it to attack people.
A blob tile will light up when it is being pulsed by a core/node, adds crucial visual feedback when placing resources/factories.
New shortcuts for the blob. Expand = CTRL Click - Rally = Middle Mouse Click - Create Shield = Alt Click
Blobs can now talk to each other and ghosts can hear them. Thanks to /vg/ for this code.
Removed the unnecessary AI quarantine code.
Formated the blob code to use the standard.
Made the blob start strong but grow slower, helping stop situations where the blob is instantly caught and gets wiped out and stop the blob from being unstoppable after making 4 resource blobs.
Removed the AI quarantine laws from the blob gamemode.
People didn't like getting instantly KO'd by the blob, reduced the damage output to encourage melee engagements.
Blob overminds can see in the darkness now.