Some mutators use mutate specific mutate commands "help", "version",
"status" and "credits" to ouput info about themselves.
Before this patch commands complained that there wasn't first three of
them. Now it doesn't complain.
Previously settings about side effects were scattered through different
relevant classes.
Now they will all be recorded in a single config object.
Additionally, log messages about both success and failure of introducing
these side effects.
Now `AcediaGameRules` are only added when Acedia actually needs their
events.
AcediaCore now also outputs console message about adding them and
registers a side effect.
This patch changes AcediaCore to only inject `BroadcastEventsObserver`
when its events are actually needed.
Other changes are making this change produce a log entry and adding a
relevant `SideEffect` that describes this change.
AcediaCore is moving towards separation of all of its functionality into
3 big groups: general, client-specific, server-specific. And files will
be rearranged into `BaseRealms`, `ClientRealm` and `ServerRealm`
accordingly.
Additional directory `CoreRealm` is meant to contain functionality and
base classes common for both `ClientRealm` and `ServerRealm` ones.
This is regarding an artifact left after text refactoring: when printing
JSON text values, they were being converted into `Text`, which after
refactoring always basically erased `MutableText` value, emptying it.
Previously `Iter` was meant to be a collection iterator class, but now
we need a more generalized notion of iterator, so we move some
collection-specific methods out and designate `Iter` a general iterator
class, while `CollectionIterator` takes its former place.
Siren's adjustemet code made cahgnes that were soon overwritten without
accomplishing anything. And husk code has some player replication info
obtaining code that is leftover from trying to restore perk resistances
that... didn't actually break from damage type substitution.