Just in time for the feature freeze, a big change that will introduce bugs! Yay!
Mob verb is called verb/examinate(target), which just calls target.examine(user) and face_atom(target)
For explanation why, see http://www.byond.com/forum/?post=1326139&page=2#comment8198716
Long story short, mob verbs are much faster than object verbs. The goal is to make right-click menus populate faster.
Also changes a bunch of examine() procs to always, ALWAYS call the parent. Except mobs, but you have 1 guess why I'm not touching them. Mostly this affects obj/item/examine().
And also remove a whole shitload of pointless set src in view(2) kind of crap. Also span classes.
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.
The garbage controller no longer bothers nulling out every variable on destroyed objects.
An object can opt to not be collected by returning true from Destroy(). Useful for pools or other edge cases.
Fixed boxes not being collected, along with a couple other things.
Turfs will not be monitored for collection.
generate_ion_law() is no longer a /datum proc, and I am an admin in the repo. Deal with it.
1 cultist
Requires 4 plasteel to convert to a shell
Boring coder stuff: Wrote a proc called mob/proc/sac_act - pretty simple thing that gets called in the sacrifice rune instead of it being a huge unwieldy wall of text full of conditionals
Exciting future of the game stuff: This will allow me to enable all mobs to be sacrificed.
¬TO-DO: Move current sacrifice code into relevent sac_act procs for humans, monkeys, aliums
¬TO-DO: Write sac_acts for the other mob types
-¬DONE: Corgis
--¬TO-DO: Make corgi sacrifice !!FUN!!
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
- Functionality should be unchanged
- Admins can varedit chemical costs of individual abilities.
- Allows coders to implement sting upgrades more easily.
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.
You can still be stunned, slip (unfortunately), be pushed or die, your
icon just remains upright to simulate zero gravity. Upon being dragged
into the station, your body thumps to the ground inside the airlock.
It's pretty neat.
Fixes#2550 by adding a check for space turf at the location of the mob
before playing a bodyfall sound
Fixes#2494 by following Carn's suggestion of determining whether a hat
will fall off based on its head cover and head hide flags.
Thank you @Razharas and @MrPerson for help with bitflags.
Thanks @Supersayu for providing a lot of this code.
-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.