This PR is mostly about fixing body/cryo bag layering issues.
Currently live and annoying to try and treat around:

Currently, bags are are below roller beds when first deployed. If
buckled and unbuckled, they are then above, because of the + 0.1 on
buckling.
If buckled on a roller bed, dragged, and then unbuckled, they are then
above player mobs, because of the `layer + 1` on roller bed `Move()`
proc, which also doesn't get reset. I removed this +1 on Move() because
it was older than the +0.1 and seems to serve the same purpose.
The +0.1 did not have a method of reverting to the original buckled
atom's layer, so I added a var and check to handle that.
I also changed bullet casing's layer to `BELOW_TABLE_LAYER` with the
intent of not having them on top of stasis bags and roller beds, because
it causes issues as someone trying to treat wounded after a firefight.
Changing bullet casing's layer does have a consequence of putting
bullets underneath, for example, the soil in the public garden. Putting
the soil on `BELOW_TABLE_LAYER` would fix this, but with the consequence
of having the bushes be on top, making clicking the soil difficult for
farming purposes. Adding bushes to that layer causes consequences with
side window layering (like on deck three outside the public lounge.)
For this PR I only adjusted the bullet casing layer. I'm sure it has
other unintended layering interactions. Let me know if it would be
better to leave them where they are or on some other layer.
Current changes in PR: Bullets under soil/roller beds/stasis bags.

(Example of why making bullets on top of soil is difficult) Screenshot
shows both bullets and the soil being `BELOW_TABLE_LAYER` with bushes on
top, as a reference. PR Currently has bullets underneath soil.

Does what it says on the tin. Purely cosmetic for now. This is step
zero.
Basically, clothing is starting to get real bloated with a lot of
variants.
More pressingly, accessories as well, and we're probably going to get
accessories of accessories.
After seeing what's going on with arm guards, leg guards, plate carriers
and the like,
it's heading towards a really messy level of abstraction.
Hopefully this will nip it in the bud, so to speak.
I've also added the layering feature used in watches, so you can tuck in
your uniform in your pants, or your coat in your pants if you're so
inclined to.
This also means that in the near future, we'll finally have the ROLL
PANTS feature that has escaped us for so long.
For reviewers :
This PR is majority legwork of simply adding the new pants slot in. Very
similar to my previous Wrist slot PR.
The rest is just changing the existing pants/skirts over to a new
loadout slot and changing paths.
---------
Signed-off-by: Wowzewow (Wezzy) <42310821+alsoandanswer@users.noreply.github.com>
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
Adds objects utilizing the largely unused cars 2-10 sprites. While
automobile/random does exist, this will be a nice QoL for mappers. Also,
shuffles around the sprites in cars.dmi.
Resolved some runtimes for mimic turfs on examine.
All examine headers respect the proc signature.
All examine that do not explicitly need not to, passthrough the arglist
to references examine target procs.
Replaced the outside turfs with exoplanet ones for the digsite.
Fixed some exoplanet areas not having an exoplanet base turf.
Wrote a unit test for exoplanet areas to ensure they have an exoplanet
base turf.

Fixed monkey cubes under showers from turning the game into Doom 3.
Fixed showers not showering you because of an improper early return on
wet floors.
Fixed blood overlays being wrongly cleared when you shower.
Sonme code improvements.
Runtime map now has a bunch of new areas / items with often-tested
stuffs, and some hard-to-put-at-runtime stuffs.
Runtime map jobs now are positioned to make it faster to reach the
aforementioned often-tested stuffs.
Runtime map doesn't generate an overmap anymore by default, which speeds
up the process.
Runtime map now loads in ~11 seconds instead of ~40 seconds as it was
before.
Updated the maploader to be faster in parsing maps.
Bapi is not engaged anymore if we're only measuring the map size, which
speeds up the process.
In fastboot we do not generate the codexes anymore, which speeds up the
process.
In fastboot and if exoplanets and away sites are not enabled, we do not
parse the map templates anymore, which speeds up the process.
Updated the icon smoothing to be faster.
Optimized cargo area code.
Other optimizations.
Refactored the attack proc signature.
Added signals and components for the attack proc.
Added signals and components for the attackby proc.
Adjusted some leftover attackby procs signatures.
Added grep test to ensure people don't keep adding attack/attackby procs
with the wrong signature.
Refactored the projectile code, mostly in line with TG's now.
Refactored various procs that are used or depends on it.
Projectiles can now ricochet if enabled to.
Damage falloffs with distance.
Homing projectiles can now have accuracy falloff with distance.
Projectiles have a maximum range.
Muzzle flash is configurable per projectile.
Impact effect of the projectile is configurable per projectile.
Accuracy decreases with distance.
Projectiles work with signals and emits them, for easy hooking up from
other parts of the code.
Meatshielding is now less effective .
Impact sound is now configurable per projectile.
High risk.
This adds the Lone Spacer offship and ghostrole. This is a shuttle-based
offship with only one slot, designed to be a totally generic and
versatile sandbox to play around with. It can be played in pretty much
any way imaginable, in any sector, any species, essentially any origin,
doing anything from piracy to smuggling, trading, light mining or
xenoarchaeology, or whatever else helps the intrepid explorer scratch
out a living from the stars.
**This is up for review.**
A few things to note:
- This adds a few crate variants to provide hazards in some of the
submaps. I've playtested these, they seem to work smoothly.
- There is an ongoing bug with shuttle-based offships, including this
and the Izharshan ship, in which telecommunications doesn't work unless
you clear every filtered frequency. I'm not attempting to tackle that
bug in this PR, so tentatively players will have to use the multitool by
the all-in-one to clear the filtering frequencies, or they can simply
use a shortwave.
- The ship is just within the constraints for shuttle size - I couldn't
make it any bigger. If it can't dock with a docking port, it's because
the docking port is mapped without enough space.
- IconDiffBot says I modified the Xanu Frigate overmap sprites at one
point. I'm not honestly sure how this happened, but it _seems_ fine?
- The workshop submap gives the ship a variety of generic augments, plus
all of the Zeng-Hu specific augments including the memory manipulator
and enhanced retinas. It doesn't have any more faction-specific augments
than those. The submap is mostly designed for installing prosthetics and
augments and making simple robots, but I'm pretty sure you could use it
to make a shipbound or IPC if you really wanted.
Credit to NobleRow for the overmap sprites!
Added 79 new stickers. 60 by LforLouise, 1 by Noble Row, 2 by Ben10083,
10 by Hazelmouse, 1 by Mr.Popper, 4 by FabianK3, and 1 by Kermit.
Added sticker sheets, a storage that can only store stickers. Sprite by
Noble Row
Added the new sticker sheets to the loadout menu
Replaced gold star and googly eye boxes with sticker sheets.
Moves the IPC memory wiper from the RD's locker to the OM's locker. It
makes more sense for the OM to have it, since the Machinist is an
operations overseen job, not a science overseen job.
Removes the tranquilizer rifle from the HoS's office, and places it in
the RD's office. Along with removing the box of shells from the HoS
locker, placing them in the RD's locker.
Changes the description of the rifle to move it away from being a 50 cal
sniper. Changed the shells to reflect this as well.
Expands the RD's office and reshuffles it slightly to make space for the
tranquilizer cabinet.
Part 2 will be a resprite of the rifle, to be added at a later date.
PR will need loremaster approval due to description involving corporate
lore.
Refactored the abstract meta propriety into defines.
It's now more easy to spot/see abstract types thanks to the macro that
defines them.
Added a check on initialization of atoms to avoid spawning abstract
types.
Made the spawn_atom proc check for abstractness.
Made the spawn_atom proc use tgui_list for types list shorter than 1000
elements, which enables to search in them. It's too laggy on larger
lists so above 1000 it uses the builtin input.
Made the spawn_atom use a list subtraction instead of a double list,
it's lighter on memory and processing.
Refactored hitby to be in line with TG's version.
Refactored item weight defines to a more clear naming scheme, also in
line with TG's version.
Refactored how the movement bumps are handled, ported signals to handle
them, in preparation for the movement update.
Fixed disposal hit bouncing the hitting atom on the wall.
Items do not push other items anymore if they are tiny.
Unfortunately most of the map is kind of unplayable or not mapped in
mind with stairs being untraversable for roller beds or wheelchairs.
Remapping every map to work with this mechanic is also not something I
am interested in.
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Fixed a runtime with crates animation when closing.
Updated closets door animation code, renamed one var to be more clear,
some minor DMDoc, moved some procs around.
Changes the sink/reagent dispenser (i.e. water tanks)' filling system to
be intent-based rather than opening a window every time. Should make
filling/emptying containers at least 10x quicker. :)
Use **HELP** intent to fill from a container. Any other intent (i.e.
HARM) will have you try to empty the container into the dispenser/sink
instead.
Additional examination info has been added to both the sink and reagent
dispensers to give such information.
* Barricades will now send a chat message if you can't climb them due to
there being barbed wire.
* Fixed barbed wire overlays not appearing on barricades.
Splits the current survey probes into two types: Atmosphere and Ground,
as well as adding a Geomagnetic variant. Replaces some of the currently
mapped in atmosphere probes with the two other types.
- bugfix: "Fixed tents not allowing assembly/disassembly by someone who
was interrupted."
- bugfix: "Fixed tents having invisible walls inside of them."
- bugfix: "Fixed ghosts being unable to see inside tents."
- bugfix: "Fixed tent sprites to be 3/4th compliant."
- bugfix: "Fixed tent roofs not disappering when you disassemble one you
are inside of."
- bugfix: "Fixed tent canvas not having a description."
- bugfix: "Fixed pre-fabricated tents not being disassembleable."
* Puts all the items that were manually mapped into head of staff
lockers into the code. Also deletes some dupe items (why do I have two
megaphones, etc)
* Also very minorly changes the CMO office after I deleted the rack with
a stethoscope, medbelt, and medHUD on it.
---------
Co-authored-by: La Villa Strangiato <mangodeity@gmail.com~>
Made relaymoves uniform in function header and non sleepable.
Improved IPC/borg recharger, made it time constant.
Tweaked client/Move() to avoid a range(), moved a relaymove around to
fix a bug, some minor tweaks.
Fixed IPC/borg recharge station not taking the IPC/Borg in on bump.
Adds tents, in two variants (A larger and smaller one). These utilise a
new large structure framework allowing a single item to spawn multiple
structures (The parts of the tent) in the correct places. The tents
count as inside, so can be used to shelter from weather. Tents have
roofs which become semi-transparent when entered. There are also
mappable effects which generate a tent at round start for mapping.
Adds sleeping bags, which can be attached to the outside of bags for
easy carrying. Ideally this would be an accessories interaction, but
backpacks aren't clothing and converting them to be such is outside of
the scope of this PR.
Adds foldable tables, for setting up on expeditions.
Ported SSThrowing from TG, to handle throwings.
Updated movement system to the latest iteration, made it a datum as per
latest iteration.
Updated pass/hit handling of atoms, introduced pass_flag_self to
determine what atoms allow to pass.
Moved procs and defines around to make them more organized.