Welding in a RIG/spacesuit is currently broken. This PR fixes it. It was broken for two reasons.
First, the proc to get flash protection assumed the RIG was a clothing item, and as such thought it had variables it doesn't. So it would runtime.
Second, spacesuit helmets lost their flash protection for some reason. This has been reversed.
Do I really need to explain why it's dumb for this to appear on Syndie
suits, or NASA suits, or CentCom suits, or any other suits that don't
explicitly belong to the station?
Links many map-specific details such as the station name, z-level information, and allowed jobs from global vars to map datum vars, which should help us maintain multiple maps at once in the future, which will be needed for the future Southern Cross.
Note that a config change will be needed to change GENERATE_ASTEROID to GENERATE_MAP, otherwise no changes should be required to continue normal map usage.
To change to a different map, it's suggested to tick the file that ticks all the other needed files, which for the Northern Star is called northern_star.dm.
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.
Makes the name of the starsystem and station generic such that it can be modified in global.dm and replace the strings where it is used. This won't have an effect on Polaris itself, but makes changing the name much more simple for forks. Using string concat constants on the advice of Psi.
Fixes mistake involving belts.
Fixes mistake involving bags allowing w_class 5 items, which was from the manual merge.
Polaris tweaks
Makes inflatables w_class 3.
Spacesuits and RIGs are now w_class 5.
Both sniper weapons are now w_class 5.
Makes more inventories able to use the volume based system.
Cleans up the cig part of the port a bit.
Clothes now have a flash protection and tint level. If one is wearing multiple items with these modifiers they do stack.
Glasses also have a number of additional additions such as sight flags, see_invis level, and so forth.
Flash protection comes in 4 levels: Reduced, none, moderate, major.
Reduced protection, for example, means the user takes increased damaged from welding.
Moderate protection safeguards mobs from flashes, flash grenades, projectors, etc.
Major protection protects from the above as well as welding.
Tint also comes in 4 levels: None, moderate, heavy, blind
Moderate tint will apply the nearsighted overlay.
Major tint will apply the welding overlay.
Blind will apply the blindness overlay.
The end result is an attempt of less type checking. Any set of glasses may now also contain HUD glasses.
This should make a future rewrite of HUD glasses easier (could have the HUD functionality be a datum rather than separate item).
Code that used to check this flag now checks body_parts_covered for FACE
instead. Added a FLEXIBLEMATERIAL item flag to continue to allow vox to
eat food without poisoning themselves.
`code/setup.dm`:
Fixed large amounts of indenting.
Fixed large numbers of comments and their clarity.
Added parentheses to macros using expressions.
Added FIXME for unused duplicated macros, without certainty of their requirement.
Removed some duplicate macros present. (`BRUTE`, `BURN`, etc.)
Removed macro `PI`, and replaced instances of its use with `var/const/Pi` from `maths.dm`
`code/global.dm`:
Fixed large amounts of indenting, added newlines to long single-lined list definitions.
Slightly clarified comments.
Generalized all ninja power and gear code to work with new rig system.
Added shurikens, weapon mount, more work on deployable items.
Readded energy nets and energy blades.
Grenade launcher/charge stuff, interface stuff.
Renamed previously existing rigs to voidsuits, restructured rig and voidsuit files.
Refactored the energy net and teleportation proc.
Totally rewrote AI core/intellicard transfer procs.
Added rig sprites by Mordeth221, added step by steap suit sealing/inability to interfere with suit sealing process.
Updated map paths to use voidsuits.
Added chemical dispenser functionality, added power sink, added atom/drain_power() proc for later use.
Added rigsuit verbs, added voice changer.
Renamed MASKINTERNALS to AIRTIGHT, added internals checks for airtight helmets.
Added drain_power() procs to vulnerable machinery.
Reimplemented data theft.
Added suit maluses for losing your cell while wearing one.
Transitioned the rig suits to a back-mounted item that also controls a chestpiece.
Converted rig module to a storage item, convert ERT voidsuits to hardsuits.
Adds an update_clothing_icon() proc to clothing items that will call the
relevant icon update proc on the mob which is equipping the clothing, if
any. Changes various clothing procs to not call update icon procs on usr
which may not even be the mob wearing the clothing.