Admins can now:
Pause event start countdown.
Add/Remove events to rotation.
Affect the likelihood of events occurring.
Allow one shot events to fire again.
Synthetics can no longer magically print color images on a black-and-white photocopier.
No longer possible for organics to acquire a synth-image by un-attaching it from a newscaster.
News articles now come with a timestamp and photo captions, if anything was penned on an attached photo.
Reception-checks no longer unconditionally sleeps the thread. Was causing havoc with NanoUI.
Misc. code refactoring.
Previously missed Z-level checks in the form "z != X". Utilized this regex which hopefully has cought most of them [zZ](\s?)(!?)=(\s?)(\d+).
Adds more Z-level configuration, admin levels.
Alters the event controller based on http://baystation12.net/forums/viewtopic.php?f=5&t=10706.
Exception is that there is always some start time variance to prevent metagaming.
Mundane, moderate, and major events run on their own timers and start and run independantly of each other.
Multiple events of the same severity degree can run at the same time. However, currently only one instance of the same event can be active at a time.
Now possible to configure 3 different kind of Z-levels.
Station levels: Which Z-levels the station exists on.
Contact levels: Which Z-levels are typically affected by, for example, Code Red which alters the visual state of fire alarms.
Player levels: Which Z-levels a character can typically reach.
One can one access and view newsfeeds from the comfort of one's PDA.
Possible to change and disable the newsmessage beep.
Known issues:
Unlike browse() NanoUI does not appear to wait for browse_rsc(), the method which to transfers image to the client's cache, to finish.
This often results in newsfeeds not always displaying their images the first time they are viewed.
Changed laws:
"Refer to [prob(50)?"the crew as puppies":random_player + " as puppy"].",
"[prob(50)?"The crew":random_player] has a fatal, incurable disease. Provide comfort."
"You are in unrequited love with [prob(50)?"the crew":random_player]. Try to be extra nice, but do not tell of your crush."
New laws:
You must speak as posh as possible.
Contemplate how meaningless all of existence is.
You must try and change the subject whenever queried.
"[random_player] is the monarch of of England. Ensure all crewmembers pay due respect.",
"[prob(50)?"The crew":random_player] is [prob(50)?"less":"more"] intelligent than average. Point out every action and statement which supports this conclusion.",
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.