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.
Changed all the hair/facial_hair/eye sprites to use a white base.
Changed the preview screen, in the preference menu, to use ICON_MULTIPLY to be able to use the new white sprites.
Removed the unused and broken cloaking item.
Ninjas now use the alpha variable, removed most of the checks for it.
Updated the documentation a bit.
Added some helper procs for later.
Death of the istype invasion from slimes, previously every single color of slime was its own kind of mob, and every single one of those slimes also had an adult form which was a different mob.
There is now only one kind of slime, reliant on new var is_adult and old var colour to determine how it looks. All baby slimes functioned identically outside of icon and core, and all adult slimes functioned identically to each other and to the babys save for a bit higher Health and more capacity to break shit.
A nice side effect is that this solves any inheritence issues of baby slimes growing up since it's still the same mob, though it doesn't solve the same issues for adult slimes splitting.
Also fixed a few annoying but rare bugs (like getting ghosted because you got DC'd and your slime self split and you weren't around to get mind transfered)
-fixed space ninjas not being able to charge directly from power cells - fixes#2139
-'fixed' Distro/Waste Monitors not displaying pressure read out when sensor was reading zero pressure - fixes #
227
-removed the canmove check on camera consoles - fixes#490
-Fixed stealmin's real ckeys showing in the admin-pm reply dialog's title - partially fixes#2163
-Fixed people buckled to chairs not dropping their items when appropriate (like when dead) - fixes#2172
-Fixed people being able to use uplink functions whilst stunned/dead/etc - fixes#2144
- Construct spells are an exception.
- Spells are transferred whenever a mind is transferred: cloning, pod cloning, borging, staff of changing.
- Spells are not transferred when you create a new mind for a new mob: soul stones, golems, respawns.
- To my surprise, this did not fix the issue where a mind-swapped wizard loses their spells when their original body is destroyed. I do not know why this happens.
- Non-human mobs can't use spells by default. Varedit spell.human_req to do that.
Lets admins set temporary notices that will last until the end of the round.
* All players that join the server will see this notice.
* Anyone can check it using the Adminnotice verb
* Also adds the motd verb that can be used to check the server's message of the day
The intention of this is to make it easier for admins and server hosts to run special events.