* Adds "Global" fails that can occur on any EXPERI-MENTOR process.
* Replaces telesci with the Experimental Lab
* Fixes numerous Experimentor bugs (item layers, part exchanger etc)
* Adds an in-game manual to the Experimental lab to teach players to use the machine.
* designs are now using the construction time var and the hacky /obj/item/mechavars is gone
* designs updated : there shouldn't be "no material" designs anymore
* cleaned the objects of their construction_cost and construction_time vars
* fixes the material name being displayed with $ character before
* this also fixes the overlay animation in inserting sheets
* the category var is now a list, so parts can be build/used with several chassis (fixes the Firefighter Chassis appearing when building Ripley)
* properly fix the href vulnerability when emptying (you can now remove all sheets of a materiel at once)
* the exofab now won't create a material sheet if there's not enough material (e.g 1000 metal)
* the exofab now won't accept a sheet if it would overstuff it (losing some material in the process)
* cleaned the code a bit (simplified, streamlined, using global vars, etc)
Finish #5722 and fixes#5954.
Exosuits will now use the designs from RnD to create objects instead of having the object already created on their contents.
Each one of the default items to build are now designs.
Removed access required to use the exosuit fabricators.
Removed an unused mech syringe gun design and replaced with a new one, with no cost.
Added a temporal object, /obj/item/mechavars, to be able to use initalize() for the construction time. This will be later on removed and the construction time will be ported to the design datums.
Some minors issues are still present, due to the amount of files needed to fix these, it won't be part of this commit, but a future one.
Fixes issue #3893
Removed required access to access the setting controls of the RnD console.
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.
Adds chemical storage interface to protolathe.
Fixes "purge" button for individual chemicals in the circuit imprinter doing nothing.
Adds radium reagent cost to floral somatoray.