fixes#3196.
- Fixes welder fuel being spread/created on space turfs.
- Added missing `src = null` statements in some reagent reactions.
- Removed duplicate virus food recipe and fixed the current one.
The new recipe apparently was from some virology rework and
conflicted with the old one. The current recipe has been tweaked
to match the wiki: 5u milk + 5u water gives 15u virus food.
- Moved transfer/splash code to the reagent_container/transfer() proc.
No more copypasted code everywhere, hopefully.
- Fixed some (pills, holy water bottle, drink glasses, shakers...)
`reagent_containers` being able to transfer contents at a distance.
- Added a `return 1` in some `attackby()` to avoid having them call
`afterattack()`. Reduces amount of snowflake code and kills ninjacode
in `reagent_containers`.
- Added helper procs to log game events/reagent transfers.
- Removed copypasted code from spray/chemsprayer and syringe code
and refactored it a bit.
- Fixed trans_to() not handling blood transfers correctly.
- Less painful copypasted logging code.
- Why am I even alive
- Modernized things, removed more snowflake.
- Welder fuel and flamethrower decals are now pooled.
- `transfer_sub` now typechecks properly
- `splash_sub` now handles correctly and gives a message when
splashing something with `amount = 0` or without reagents
- Added `is_empty()` proc to `/datum/reagents`
- Added `animate_movement` to the pooler's ignore list to fix
a bug where pooled objects would get that var reset to 0
instead of their overriden value for some reason.
Removed update_values(). RIP, shine on you CPU diamond.
Removed get_moles_by_id and get_archived_moles_by_id, all moles are now accessed directly to reduce call cost.
Added set_temperature and set_volume procs which recalc pressure when temperature or pressure change.
Heat_capacity is now a var updated when gases update.
Modified adjust_gas to use set_gas, modified set_gas to alter heat_capacity, total_moles, and pressure as needed.
Moved gas_mixture gas numbers to a list which is connected to a global gas_datum list, like with reagents.
Modified some maths procs to be more sane, added adjust_gas and set_gas to help with processing.
Added a modular system for gas flags - gases can now be marked as fuel and oxidiser with a flag, logged with a flag, scanned with a flag, etc.
Changed scrubbers to use a list of scrubbing gases rather than a set of vars.
Made miners and xenoarch effects more sensible - they now produce gas by ID, not manually.
Made turfs' starting gases into a list, removed turf gas number vars.