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.
Replaces Holodamage with Stamina damage, if your stamina damage exceeds your current health, you get weaken(5)'d. Stamina heals itself slowly over time.
Makes the hallucination enemies deal more stamina damage than they did holodamage, but stamina damage heals now so it's mostly for just seeming threatening at the moment.
Adds the Disabler, a gun that does stamina damage. It has a range of your screen, but no more. Adds a disabler crate to cargo (security lock)
Fixes Lasertag ED209's because they were busted as shit
Reduces ED209's view range to 9 from 12, which was several times longer than your screen view, now is only a little bit more
Lastertag now does stamina damage instead of an instant stun for that GRITTY LASERTAG EXPERIENCE
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.
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)
Adjusts the click code to not use client/Click(). The code is largely unchanged, except that it allows the compiler default behaviour of calling atom/Click(), and then forwards the call to mob/ClickOn(). I had some reports that melee combat mixed with movement was behaving oddly, and I believe it may be due to the use of client/Click; the byond documentation says that redefining client/Click() causes additional overhead, and it isn't strictly necessary.
Alters the way double clicks are handled, in an attempt to better handle clickspam, as often occurs during pitched combat. This may also be responsible for the above, but I don't know.
Inserts proximity (aka flag) checks in all afterattack() procs. The old assumption was that unless an item used the USEDELAY flag, afterattack() was only called when adjacent, but this is no longer true. This led to beakers, soap, crayons, etc, all being usable at all ranges.
Removes the NODELAY flag, which was unused. Removes all existing uses of the USEDELAY flag so that it can be readded to things that need extra delay.
Removes the hand_* procs, previously used by restrained actions. Instead, the mob helper mob/RestrainedClickOn() has abosrbed basically all the functionality they were used for, which is really only monkeys with jungle fever.
Adds a special case of the Adjacency() proc for doors. This fixes#136, airlocks being unreachable due to border fire doors. However, this only takes us back to the unpleasant position where you have to open-hand the door, switch to a crowbar, and pry open the firedoor; it still needs a better fix.
They also added extra checks to
-Everytime a mob attacked (checking for super strength and electric hands)
-Every time a mob was attacked (checking for dermal armour)
-Every time a human was shot (checking for reflex)
-Every time a human breathed (checking for rebreather)
-Every tick of human life (checking for regen)
-Every hud update (checking for radar)
Not to mention just cluttered mob code in general. I know there won't be any noticeable performance increase from this but seeing as they were never going to be finished (I asked Doohl beforehand) and mob code is messy enough as is, I think only good can come of removing the code.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5587 316c924e-a436-60f5-8080-3fe189b3f50e
Slightly improved beartrap code while I was there, mostly standardisation and formatting stuff as usual.
Fixed the Chaplain's PDA spawn.
Reduced the chance of stealthy hulk wall smashing. All but one of the messages will attempt to go over the radio now.
Changed hulk resist text colour to red because it was barely readable in green.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5191 316c924e-a436-60f5-8080-3fe189b3f50e
I've tested it a fair bit, but there may be bugs, so please report those if you run into them.
Added an ismetroidadult() helper
Improved L6 code.
Made the syndie shuttle console impervious to bullets.
Made mirrors breakable.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5187 316c924e-a436-60f5-8080-3fe189b3f50e
Replaced the vault katana with a replica.
(svn actually managed a map merge, if it's broken please just revert to r5064's map, and replace the katana in the vault with a replica)
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5065 316c924e-a436-60f5-8080-3fe189b3f50e
-Slightly increased the temperature needed to break windows.
-Re-added a sound for screwdrivering the camera.
-Moved the autonumber camera stuff into the presets file.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4898 316c924e-a436-60f5-8080-3fe189b3f50e
-Fire made more deadly, as the flames will add more damage and a fire can spread more quickly.
-Fire can break windows now, meaning they can potentially extinguish themselves by opening a window to space.
-Increased the delay for atmos to process a cell and airgroup, will help with the lag for 50 player servers.
-Minor tweaks were made.
--Plasma needing a bit more before displaying its overlay.
--Pressure can now damage you at 550 kPA. This was because it wasn't viable to set the pumps to over-pressurize a room and potentially kill people.
--High pressure warning shows at 325.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4869 316c924e-a436-60f5-8080-3fe189b3f50e
closet.dm, costume.dm, decal.dm and window.dm have been knocked out of the define folder and their defines have been moved into appropriate files.
The closet folder has been re-organized a little.
supplypacks.dm has been moved into the datums folder since that's what it is.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4627 316c924e-a436-60f5-8080-3fe189b3f50e
Committing this early to allow pete to commit something involving the .dme file which would probably conflict otherwise.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4514 316c924e-a436-60f5-8080-3fe189b3f50e