This patch adds two more possible argument types for Acedia's commands:
for arbitrary JSON values (argument types for any specific type of value
were already availabler before) and for players type of value (allowing
to specify a list of players with selectors, similar to how one does it
for targeted commands).
This patch does not actually implement parsing of these two arguments,
simply adds a possibility to declare them.
Previously we've used hardcoded steam ids to test commands on our
servers. Proper priviledge system still wasn't introduced, but
hardcoding ourselves before public release is a shitty idea, so I've
added an alternative crutch instead: server admin can now specify steam
ids of players allowed to use commands in the config.
This is a temporary workaround and to be replaced later.
Aliases were initially using `Actor`-base objects to manage themselves,
but that became a legacy approachin AcediaCore and they had to be
reimplemented without any `Actor`s (based on `Feature` instead),
allowing them mto be usable even when no `LevelCore` is provided.
When `HashTable` was told to replace an object with itself, it ended up
incrementing its reference count because of the legacy equality check
(previously `FreeSelf()` completely deallocated an object, so the check
was warranted).
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.