Adds ability to attack mobs by clicking their tile.
When someone clicks a tile with a weapon while off help intent, and if a mob is occupying that tile, the mob will be attacked as if they were clicked directly.
If more than one mob is on a tile, one is chosen randomly.
You cannot hit yourself by clicking your own tile.
Weapons with cleaving abilities will attempt a cleave on the tile clicked on, making it very easy to hit (simple) mobs with those weapons if near you.
Other changes.
Cleave proc can accept any atom now and not just a mob.
Also cleans up weapons deciding how they can cleave somewhat.
* Fixes#4632.
* 1:27 am coding best coding
* fixes a warning
* Removes the last of the gender macros. Gender is dead.
* gender II: the travis-ing
* linebreaks are dead too.
* oops i accidentally the gender, also ambiguous gender is now taken into account for get_visible_gender
Axes executing a cleaving attack now has a visual effect to show the tiles that can potentially get hit.
Gives hatchets and the energy axe the ability to cleave.
Melee weapons can now potentially attack from farther away.
Obstacles are taken into account, so you cannot hit people through windows, but you can attack over specific things such as tables, or other people.
Currently only the spear can do this, with a range of two tiles, however the attack speed for the spear was reduced, so it may remain a situational weapon.
The intention for this is to make specific weapons feel different to each other besides 'does more damage', and I got ideas on other kinds of weapon adjustments later to make them feel a bit more unique.
Ports and tweaks the Explorer gear from /tg/. Recolored to remove the mining purple, instead its now a nice blue because winter, I suppose.
Adds a new survival knife that is bootknife ready.
Replaces xenoarch GPS with budget /tg/ GPS that is more useful, as it can track other GPSes.
A lot of new defines are now in inventory_sizes.dm, which contains;
All the size identifiers (the thing that tells the game if something is bulky, or w/e).
Storage costs for all the sizes, which are exponents of two, as previously.
A few constants for inventory size.
Also changes all storage item's capacity definitions by basing it off of how many 'normal slots' exist for it. This allows one to change the definition for all of the defines in the file, and everything will follow along without needing to change 500 files. In testing, I made all ITEMSIZE_COST_* defines doubled, and nothing had broke.
The benefit of doing all of this is that it makes adding new weight classes in the future much simpler, and makes knowing how much space a container has easier, as seeing ITEMSIZE_COST_NORMAL * 7 means it can hold seven normal items.