Now if virus can infect lesser/greater form of specie, it can infect its counterpart.
Also made viruses affect only joinable species to lessen a chance of spawning a virus that they can't work on (e.g. slime-affecting viruses that can't be injected into monkeys). As a side-effect viro reports are a little less inane listing all the species crewmembers aren't supposed to know about like xenomorphs and Shadows.
Instead of magic type bits, the infection protection value of clothing is mostly based on it's bio armor value, which is much more flexible. Also gloves and shoes to contribute to protection values, and adjusts surgical mask bio protection.
Hardsuits gain voidsuit level bio protection, when sealed.
Wearing a face mask helps prevent others from catching airborne diseases.
Also fixes#7909
- Effects can now appear and be spliced in at higher stages than their set stages (e.g. Waiting Syndrome can now occur in any block)
- Gibbingtons changed to not instantly gib infected on activation, instead either dealing massive brute damage or making humanoids' limbs fall off; this avoids three copies of Waiting Syndrome then Gibbingtons going undetected until it instagibs the entire station one after the other.
- New effect: chemical synthesis. Picks one reagent from its list, and keeps infected at 5-7u of that reagent. Infecting others, splicing the gene, etc does not change the reagent, only generating an entirely new chemical synthesis effect does that.
- Admin panel for spawning viruses
- Virus dish examine() now doesn't print 15+ lines to output, instead printing one line and a link to open a window with the rest (and it calls ..() now)
- Lowercased most virology machinery's names
- Renamed/reordered antigens, there are now 16 antigens rather than 11, and they don't use the blood markers' names despite not being affected by blood type at all
- Generating random effects does not rely so much on the GC
Restricts Gibbingtons, Suicide, and Monkism syndromes from even greater
diseases. Admins can still generate diseases with these syndromes
through secrets.
Fixes virus events potentially having people share the same virus datum.
`maths.dm`:
Rewrite `Gcd(x)` to remove recursive behaviour.
Remove `RaiseToPower(x)` and its usage from `event_manager.dm`.
Rename `Lerp()` to `Interpolate()`.
Add `Square(x)`, which squares a number.
Rearrange most of the functions in the file. (trigonometric functions together, etc.)
`type2type.dm`:
Rewrite `num2hex()` and optimise `hex2num()` for superior clarity and a 100% speed improvement.
Correct indenting, spaces, make switches more concise.
`time.dm`:
Remove old, slanderous commented-out function `/proc/time_stamp()`
`lists.dm`:
Add the macros, `BITTEST(bitfield,index)`, `BITSET(...)`, `BITRESET(...)`
and `BITFLIP(...)` for bit-manipulation and use them where 20+ files
do it manually, for arguments of reader clarity and standardness.
Viruses are properly transferred to spilled blood now.
Antigens prevent from infection properly.
Lowered frequency of blood puddle virus check to cut down on processing.