Moves some datacore code into datacore.dm from other .dm's
AI Photography, with extensions
AI Photography, with extensions
Merge branch 'AIphotography' of https://github.com/AndroidSFV/-tg-station into AIphotography
Removes bad WIP I had commented out
Changelog
Uncommented pixel_x and pixel_y
resolves #1368

Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
Fixes #1144. The ability to surgically implant the nuclear disk into a crewmember
Minor change to asteroid turf generation.
Mostly behind the scenes changes to how gamemodes are chosen.
Antags that are unrelated to the jobs and malfunctioning AI (Malf, Blob, Nuke, Wizard) are now chosen prior to job selection. This means you will have an equal chance to be a malf. AI if you have that turned on (Fix to issue 1127).
Fix to rare cases in which you would have a game start with less then three head revs or cultists (game will go back to lobby in this case).
People jobbanned from a certain antag position are now never considered for it.
can_start() is no longer directly called if the mode is secret since get_runnable_modes() does that for you anyway.
Added a message for admins if forcing the secret game mode was not successful.
ismob is a shit and broke everything, fixing it
Changes ismob to istype, everything is wonderful again
Wait, no, NOW everything is wonderful, ignore that last commit.
Merge pull request #1377 from Petethegoat/surgeryfix

Fixes #1144.
Merge pull request #1383 from Incoming5643/sliming

Standardized Transformation Hotfix Because ismob() Sucks
Merge pull request #1380 from dumpdavidson/gamemode_setup

Changes and fixes to how gamemodes and antags are chosen.
Click code rework

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.
Adds click delay to item quick buttons.  Updates changelog.
Fixes NOBLUDGEON flag

Apparently bitflags only work for up to 32768; bitflag 4 SEEMS unused so I have commandeered it.

Also, it apperas the TABLEPASS flag (as distinct from passflags PASSTABLE) does absolutely nothing, but I am not going to remove it here.