Crossed() is a byond builtin which is called automatically when two movable atoms overlap (as a side effect of Move(), but not when loc or x/y/z is changed). Previously, turf/Entered() iterated through all objects in the turf in order to tell them an object had entered; with this change, HasEntered() becomes redundant and can be eliminated.
This may reduce lag when a large number of objects are moving in a small space (singularity, mining conveyors, etc) but should cause no changes to functionality at all.
When you construct a cyborg now, the endoskeleton is stored in the mob, where before it was deleted.
Cyborg deconstruction now checks if there is a stored endoskeleton. If there is, it deconstructs it. If there isn't, it spawns new parts like before.
Also, there is now a burn_out proc for flashes, since the feature was previously copypasta.
* Fixes the ( shaped cyan wire
* Fixes a luminosity bug with glowshrooms.
* Changes a ridiculous internal loop in intercoms to use the MC.
* Makes intercoms not be bloodied by bloody hands.
* Adds a "NOBLOODY" flag for atoms that don't want to be bloodied.
Signed-off-by: Mloc-Argent <colmohici@gmail.com>
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.
The voice analyser will listen to the keyword now even when not secured
(enabling it to be directly used on grenade casings and tank transfer
valves).
Adds missing related proc to tank transfer valve.
-Adds the PDA painter, which lets you change the appearance of the inserted PDA. Good for job-changes and possibly traitor disguises?
-Cleans up pda.dmi, moves the ai card and pai device sprites to their own .dmi. PDA box sprite moved to storage.dmi where it belongs.
It will search list/L for a /datum/data/record with fields[field] == value, and return it.
This removes a vast amount of copypasta (there's still so much left in there though). It also removes all the locate(\ref[record]) I could find, which were normal used with topic(), meaning it was susceptible to abuse.
Secbots, ed209s and turrets are now smarter with their record-checks. They now prefer to use our face-name rather than id-name. ICly, this is the bot using facial recognition. This fixes an issue where it'd try to use the name variable which could be in the format "Unknown (as their id name)" when they were disfigured, etc. causing record-lookup to fail.
Additionally, these bots will treat those without a valid record in the security database, to be treated like criminals.
* Added a Del() to the projection which will disrupt the chameleon projector, before being deleted by acid or a drill (killing the person inside).
* Made chameleon projectors disrupt if moved from the hand, to make it consistent. Currently you could put them in pockets but if you picked them up it would disrupt. Fixing this would involve changing all use of dropped() so instead I made them disrupt when equipped and, due to how dropped() works, when they switch hands. Lowered the disrupt cooldown to make up for this.
* Fixed being able to order items with an inactive uplink.
* Shortened the name of an uplink item to make room.
* Removed the (?) from the Random Item to help avoid confusion with the new buttons.
My thinking behind this is ff the detective isn't meant to arrest people himself but is meant to call for back up instead, why not give him access to back up that will actually show up?
Also added SecBot access to the Captains for no reason other than he's the Captain and he should be getting his hands dirty.
Also is the captain's PDA meant to have access to all pda functions? Because I've noticed theres a few missing.