References returned from methods should be deallocated and methods that
return those references should increment reference count to account for
that. These classes were writted before this system and didn't correctly
handle references. This patch addresses that.
JSONAPI couldn't parse JSON values like " {"key": :value"}" because of
the spaces before the opening curly brace. This behaviour was judged to
be unintuitive and a bug. This patch fixes the issue by always skipping
spaces in front of the value.
This should not break parsing JSON string values, since they are
supposed to start with double quotation mark.
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).