DNA now stores blocks internally as numbers and only makes the uni_identity and struc_enzymes strings when something has changed. This is vastly more efficient.
In addition, the API for using it has been simplified. Common tasks, such as setting a sub-block, or getting a value from the block, are handled entirely by the DNA datum with simple, easy-to-use procs.
Tested on local server, but may need balancing and additional look-over since the code is from our server (/vg/) and I likely broke or forgot something.
Infection chance now calculated differently for airborne and contact ones.
Contact viruses spread on: infected people touching others, people touching naked infected people (clothed parts do not spread it).
Airborne viruses spread on: breathing (20% chance, then chance depending on worn clothing), coughing (now 2 tiles instead of 1)
Both types spread from mucous and blood puddles because lazy.
Fixes:
Blood and mucus now spread viruses correctly.
Lowered output of hyperzine generation syndrome, since it caused dedly ODs.
Hair styles that aren't designed to have color shifts will no longer be affected.
Balding virus symptom now only applies to humans.
Signed-off-by: Mloc <colmohici@gmail.com>
-Balding
-Stimulant - generates hyperzine.
Two more:
-Longevity : heals small amount of damage and some broken bones when activated. When healed deals same amount of damage.
-DNA degradation : deals tiny amount of clone damage
Also made retrovirus deal clone damage as well.
Fixed cure machine producing virus blood wrong.
Changes to existing syndromes:
-Cough : now has chance to infect people around mob.
-Telepathy : now should properly give powers to the mob.
New syndromes:
-Topographical Cretinism : confusing directions, much like drunk effect.
-Blackout : short-time blindness
That'll let 'greater' and 'lesser' viruses pick low-stage symptoms from same pool without duplicating them.
Also sorted effect datums by stage in effect.dm.
-Fixed derp with analyser.
Refactoring virus2, Part II - Viruses.
-Removed obsolete curing/resistance methods.
-Split base.dm into disease2.dm, effect.dm, helpers.dm.