Also the toxin damage taken during INFECTION_LEVEL_ONE is greatly
reduced.
Fixes robotic internal organs getting infections.
Fixes the organ_failure random event. Forgot to set the affected organ
as needing processing.
Added brackets surrounding tokens to make whitespace and empty tokens
removable.
Slightly modified ion storm behavior.
Increased duration required to stop spam to 5 minutes.
Added ability to expand spam filter limit with installation of message
monitor circuits.
People will see why their message been discarded.
Discarded messages will be highlighted with red color in message log.
Added non-randomized example tokens at start. Added filter limitation.
Ion storm will replace tokens with garbage. Spam disaster lasts longer
and is more severe.
We discovered that most of the problems were were having was because of BYOND passing lists (e.g. SE and UI) by-ref instead of the assumed by-val.
This commit adds dna.Clone() and (UI|SE).Copy() where needed. These should be used where DNA or SE/UI lists are COPIED, otherwise changes made in the reference will affect the real strand.
This change also messes with the gene activation logic.
Since PDA's track conversations now we won't have a PDA for spam (we could always create a dummy object for it in the future)
So we don't want it adding to tnote. Popping up on the players chat is fine for now.
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.
As per request, events have been rebalanced to be a bit more even and vastly less appendicitis. Event timers have been increased from 15-25 minutes to 20-40 minutes.
It now opens up maintenance access to all people upon start. Furthermore,
one minute after ending (and with a warning), it will return maintenance
requirements to how they were before the event. In addition to this, it
has been buffed to closer to the original amount of damage for the event.