Improved some text. Empty syringe is still ready for extraction code when that gets implemented.
Fixed a double-the error. Noticed that hydroponics code is full of them. Cleaned them up.
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.
Fixes#646, #579, #863
Completely redoes the click code. Moves all click related code into code/_onclick for reference. Also moves hud datum code and all the screen object code I could find into code/_onclick/hud, as it is related. Item attack(), attackby(), afterattack(), and attack_self() have been moved into item_attack.dm for consistency.
Completely removes dummy objects and adds atom.Adjacent(user). This proc checks for border items and anything marked with throwpass for determining whether or not you can reach a given square. A turf helper, ClickCross(), was added to facilitate this.
Removes the monolithic Atom.Click() proc in favor of an overridable click handler attached to mobs. Click code no longer uses the : path operator as a consequence, and mob/lastDblClick has been moved to Client/next_click. A few end arounds were necessary (screen objects, buildmode, and spells), but this has been handled by repurposing Atom.Click(); if you have special click code, insert it in the object's Click() function and return 1 to prevent normal processing.
This update adds support for attack_ghost(); the previous "new" click handler had support for it but was never finished. I have taken the liberty of letting ghosts click portals, the gateway, and the teleporter to jump to the intended target square, and kept the previous default action of examine()ing every damn thing you click. It is to be suggested that you could do more with this proc when ghost interactions are enabled.
This update also adds support for double clicking. It is currently only used for ghosts and AIs, because the original (first) click still registers normally. For both of these, double clicking a square will jump you to it, and double clicking a mob will follow it. In the case of ghosts, double clicking bots and the singularity will also set you following it; if you double click your own corpse, you will re-enter it; this also works if your body is in a closet, sleeper, DNA scanner, etc. Default mobs ignore double clicks as normal.
-- NOTE --
There are two flags which were previously unused or misused by click code: USEDELAY and NODELAY. Ostensibly, USEDELAY would double the normal 1sec delay, and NODELAY would remove it.
Using either of these flags as intended would significantly affect the timing of the game. In particular, USEDELAY is currently applied to guns and about everything else that acts at range. I am adding USEDELAY as a half-second increase for now, but I have not put a significant amount of thought into it. I considered lowering the normal 1sec delay to .8sec to balance it, but the consequences of that on combat involve more calculations than I care to make.
NODELAY seems to never have been used, and I did not implement it, but I could do so trivially.
On the plus side for xenobiologists this allows for them to place black slime extract in things (medibots, food) without it becoming immediately apparent to victims what's been sabotaged.
This disease cannot be spread in any fashion besides black slime extract. (Because that would be so hideously broken if it was transmittable)
The flavor texts for the stages are an allusion to nethack, where the process of getting slimed is much the same (http://nethack.wikia.com/wiki/Sliming)
One other feature of note: mutant slime people retain the old black slime extract behavior, getting slimed almost immediately after exposure. This means that you can replicate pre-pull black extract by creating a mixture of equal parts black and green extract.
They now have a random hidden detonation time that ranges from 3 to 8 seconds
They now can be made from any can, and will have a different appearance based on each one
-They look goofy if you try to spawn them in with admin commands (they have no soda can to reference, so the can is invisible in the sprite) but are completely functional otherwise
Modifies reagent_containers/food/drinks in order to move all canned drinks to the food/drinks/soda_cans to bunch them all up so they are easily worked into the IED
Modifies machinery/vending due to the abovementioned moving of canned drinks from food/drinks to food/drinks/soda_cans
Modifies the map because of the above to fix filepath issues
And of course adds weapons/grenades/ghettobomb.dm for the bulk of the IED, and modifies grenade.dmi for the sprites
Updated the Chem Dispenser UI with an Energy bar.
UIs attached to the Chem Dispenser will now update on recharge(), recharge now recharges 1 every 15 ticks instead of 2 every 30 (to make it feel more fluid).
Mercury now causes brain loss.
Ethylredoxane now removes ethanol from a mob.
Space cleaner no longer removes overlays. Most dirts and spots are /obj/effect/decal/cleanable's anyways.
Fixed the possibility to forcefeed brains snacks.
Removed the countdown of various status effects in brain's life() proc that shouldn't happen to brains anyway.
Has a custom sprite which I made, which essentially looks like the standard burger.
Currently no distinction between inflamed and non-inflamed appendixes because I don't know how to check vars without making a separate check like with human meat when processing the recipe.