Fixes Stuff
- Fixes VV not giving spells properly
- Fixes a garbage collection issue with ventcrawling pipes
- Probably fixes an issue where the is_in_modules check would return true for things NOT in your modules but of the same type Fixes#133
- Makes it so you cant make your view smaller than 1 tile because FUCKKKKKKKKK THATTTTTTTTTTTTTTT
- Makes it so only observers can change their view because new players and corpses dont particularly want/need it Fixes#127
- Moves view check to mob/login from mob/stat
See merge request !160
- Fixes VV not giving spells properly
- Fixes a garbage collection issue with ventcrawling pipes
- Probably fixes an issue where the is_in_modules check would return true for things NOT in your modules but of the same type
- Makes it so you cant make your view smaller than 1 tile because FUCKKKKKKKKK THATTTTTTTTTTTTTTT
- Makes it so only observers can change their view because new players and corpses dont particularly want/need it
- Moves view check to mob/login from mob/stat
No, I don't know how to manually fix conflicts on a PR, and this doesn't
make me wanna figure out how it's done
Fuck you too for not even trying when you were working on Endgame @N3X15
Also thanks for fucking up my PR by stealth-merging a fix @Comic
Because Baystation has finally gotten around to it, and because the code
looked simple, I decided to get my hands on porting a system that allows
up to define base_turfs. As a bonus, it also defines them per Z-level.
So if you wanted, you could have a space station, and a Z-level on a
map-spanning asteroid, and then an away mission on land, all in the same
file
Note that you can modify it mid-round via a DEBUG flag verb, it will
however only affect destroyed turfs (it won't change space, which I
suppose is intentional)
Tested were destroying walls and floors and even dropping a bomb in the
middle of Medbay
Not tested were more finicky conditions like the Singularity or
buildmode. I simply replaced all ChangeTurf() instructions that pointed
to space, because that is how Baystation implemented it
Only problem with this is that it doesn't work on a per-map basis, so
unless some wizardry is done on that code, it'll be hard to get anything
interesting going with it
Discussions go below. Since this is pure code refactor, I doubt there'll
be much up to debate
- Old PR over at #5192
- Older PR over at #5167
Example picture (with the current code, there would be no lattices over
the sand) :

meteor_hit() is a textbook example of snowflake. What you have here is a
proc linked to a single entity (the small meteor) which shouldn't even
have it (ever since I reworked meteors, small meteors explode) that is
present in FIFTY. FUCKING. FILES.
Since an explosion more than clearly does the damage we want done on
meteor impact, it is more than logical to remove it and lighten our code
of obsolete and obscuranting procs
For the handful of times where it isn't possible to straight up remove
it (immovable rod, dust, small meteor), the code was quickly patched by
making it fire ex_act(2), given that small meteors perform
explosion(src.loc, -1, 1, 3, 4, 0)
Doing it quick and dirty because otherwise it's going to cause conflicts
everywhere
Material datum functionality changed to mimic that of reagents etc. by
using a global datum list and an assoc value list.
Material datums added at the atom level.
starting_materials var added - on New(), the materials in the list are
added to a datum. An empty list generates an empty datum, a null means no
datum.
m_amt, g_amt, and where applicable gold_amt, etc. completely removed,
replaced with starting_materials where applicable.
Fabricators
Fixed a bug with fabricators taking design cost, not shown cost.
Fixed a bug with fabricators taking costs before a design was shown
completable.
Fabricators now transfer the materials they use in the design to the atom
produced's material datum.
Designs are now world-consistent : scanning the same atom will ref the
same design, and scanning an atom with a design will fetch it.
Mechanic fabs now add plastic cost on top of the design, not to it.
Mechanic designs no longer require random extra materials.
Mechanic designs are now material-specific, not type-specific.
Mechanic blueprint uses have been removed, in favour of a consumable
system.
RnD wires moved to the datum system.
Autolathe moved under fabricators. It preserves as much functionality as
possible.
Framework added for plastic costs on mechanic fabs to be toggled, and for
removal of designs to be toggled also.
A lot of code standardising for the way machines handle trying to take money from a user.
All machines can now be set to connect to the accounts database in initialize().
reconnect_database(), connect_account(), and scan_card() have all been moved to the machine level.
Merch computer now reads your equipped ID, not your mind account. Fixes#2854.
All machines getting your ID using get_id_card() now check all your slots, with hands being prioritised over the ID slot.
Removed a pointless human-only proc that was causing befuddlement.
I don't really get this if statement in policetape, but it should be fixed now maybe.
Added a proc for checking if two stacks can merge, used it on coloured cables. Fixes#4156.
Made the welding damage message list the item intensifying the damage. Fixes#4187.
Added Vox exclusion to RIG helmets, removed it from Wiz and Nukeops hardsuits. Fixes#4790, fixes#4756, fixes#4496.
Orebag now only gives borgs a message if it finds ore. Fixes#4150.
Throws something at #4267, hardcode is bad and everyone should feel bad.