Revival and expansion of #1002 (thanks Iamgoofball!)
Creates a reagent blacklist for use with random chem stuff like pills!
- Currently blacklists admin-only, antag-only, and other bad-times chems
like mutationtoxin.
Creates a SECOND blacklist for further refinement, intended for use with
strange plants in botany.
- Currently just blocks alcohol / alcoholic bar drinks from the random
chems to avoid "watering down" the selections
Creates a new helper proc/get_random_chemical() to return a randomly
selected chemical/reagent that is not blacklisted.
- If passed with no arguments, will only look at the first blacklist.
- If passed with an argument, will also include the second "plant"
blacklist
- Will attempt to select a random chemical, then compare it to the
blacklisted chems to see if it is acceptable
- If the chem is on the blacklist, it will start over until it finds an
acceptable one
Rewrote the random chemical portion of Strange Plants to utilize the new
get_random_chemical proc rather than rely on a hardcoded "whitelist"
Updates Strange Plants to not only contain Nutriment
- They can now contain Nutriment, Plant-Matter, Protein... OR A COMBO OF
THEM!
Hydro trays and soil now recognize Nutriment, Plant-Matter, and Protein
as actual nutrients for plants, as well as (slightly) improving yield
modifiers.
Extension of #2596 (thanks Fox for the temp-fix)
Fixes#2416Fixes#2439 (again)
This commit does the following:
- Refactors scoreboard code to get rid of, at least, some of the
snowflakiness.
- Removes world << job objectives, puts them in the scoreboard.
Addendum: Nukeops and Rev are untested, due to the near-impossibility of
testing them alone. They _probably_ work.
This commit overhauls the underwear/undershirt system to -tg-'s text-based
version. No more magic numbers, just text states.
Note, this modifies the SQL Schema, and existing databases must be
modified by the following SQL:
ALTER TABLE server_db.characters
CHANGE underwear underwear MEDIUMTEXT NOT NULL,
CHANGE undershirt undershirt MEDIUMTEXT NOT NULL;
- Integrates Volundr's btime library and associated process scheduler
changes.
- btime is implemented separately from the process scheduler, as precise
time measurement is also useful elsewhere.
- `TimeOfHour` is no longer internally throttled; throttling is instead
done by `SCHECK`.
- If btime's `gettime` cannot be called at world startup, an error will
be output and the world will stop.
- Retains the change to schedule processes according to game time,
rather than real time.
- Removes the (now unused) update queue files.
- Removes the process scheduler testing files.
- These are standalone tests for the process scheduler, completely
unrelated to its use in the full codebase. We never used them.
- Moves the process scheduler defines into __DEFINES.
- Makes the lighting process run once before the round starts.
- Renames `scheck` to `sleepCheck`, to ensure any code that tries to use
`scheck` will fail to compile.
- Adds `SCHECK` and `SCHECK_EVERY` macros that skip calling `sleepCheck`
entirely until a specified number of `SCHECK`s (50 by default) have been
called.
- Makes most processes iterate using their `last_object` variable,
allowing hang recovery to show the type that caused the hang.
- Makes processes output an error when they filter out a type they
refuse to process.
- Rolls the recently-added alarm subsystem into the alarm process.
- Removes the now unused subsystems code.