Will fix#4600 and the problem with drinks not knowing when they are open/closed.
Hopefully I didn't miss a string of code again,I don't think so,though.
Changed xeno smartfridge to a secure smartfridge.
Added a chemistry/medical smartfridge for easy chemical storage.
Smartfridge usage now leaves fingerprints.
Secure smartfriges are emagable, by the way!
- Adds an if() check to reaction_mob for catching a very rare runtime related to mobs inhaling smoke reagents from just deleted smoke.
- Carbons reaction_turf proc now modifies a single dirt overlay layer, instead of just adding more decal objects to the turf.
- Added some checks to the radium and uranium reaction_turf proc so it doesn't stack multiple greenglow decals.
- Performed colon removal surgery on thermites reaction_turf proc, also tweaked it's overlay operation to correctly overlay a chemical puddle effect, instead of a melted wall effect.
- Removed space_cleaners overlays.Cut() code, since it was removing decals from turfs.
- Complete rewrite of the chemsmoke spawning code (everything that happens after the reaction to create the smoke).
- Moved it into it's own file since it's a little longer than the old one code-wise.
- Tweaked the smoke sprites; gave chemsmoke directions for more randomization, and tweaked the timing of their animations so they are smooth now.
Most of the code is documented, so you should be able to follow what's going on just reading through it. In short though:
- Chemsmoke now affects a circular area with a variable range depending on the total amount of chemsmoke created (no more 1-of-each-ingredient smoke grenades - sorry).
- The carried reagent volume in the cloud balances itself according to how big the affected area is (larger area, less carried reagent per turf).
- The carried reagent has more volume the closer you are to the centre of the cloud.
- The visual smoke effect scales with how big the affected area is.
Fixes#3986
- Foam reagent inheritance fixed:
The trans_to() proc in Chemistry-Holder.dm was calling handle_reactions() every time it would add and remove reagents with add_reagent() and remove_reagent(). I've added a safety flag to both of these procs (and copy_to()) so that trans_to will not call handle_reactions() until it has added all the reagents to the target container. This allows foam to reliably take on the properties of other leftover reagents.
- Fixed a bug in effect_system.dm that wasn't applying reagents from foam to the environment.
- Tweaked smoke to apply reagent effects after it has stopped moving
This was causing huge reagent spam at the center of the smoke cloud as it was spawning, since they were being applied every time the cloud of smoke moved. Also changed it to apply the effects 2-3 times at longer intervals (2 seconds).
- Smoke also only effects tiles in a 3x3 grid now, rather than 5x5.
- Summary:
Chem smoke does slightly less damage (if it contains damaging reagents)
Chem smoke proc calls reduced by 60-70% (significant lag reduction)
Foam works properly again
Foam proc calls reduced by 70-80%