0) extracting code branches to closures
1) make RTSim remember target, even if they can't speak about it
2) make only RTSim Ships constantly flying (and not every flying RTSim)
You can tame RTSim Phoenix, yay
Frost breath:
- ori_rate reduced from 0.6 to 0.1
- time of breath increased from 1 second to 2 seconds
- buildup increased from 0.4 to 0.8
- make it more gentle, with less damage per tick, but faster tick rate
(50 * 1 to 10 * 5)
- make Frozen debuff strength smoler, 1.5 to 0.5 and make it chance to
apply debuff.
- make him use it when closer range (10 and not 15)
Ice spikes:
- increase recovery_duration from 0.3 to 1.0
- make him slower while doing ice spikes, make ice spikes move
slower
- make him use it when closer range (15 and not 20)
Snowball:
- increase recover_duration from 0.4 to 0.9
Strike:
- increase buildup_duration fron 0.6 to 0.8
- increase recover_duration from 0.5 to 1.0
- increase knockback from 40.0 to 70.0
Done:
support loading from assets in skillset_builder.rs
entity_config field with skillset asset field
move every SkillSet config to assets
tests for skillset assets
tests for assets in entity configs
LoadoutBuilder::build_loadout is a function which has four parameters
and 3 of them are Option<>, and although fourth (body) isn't Option<>,
it's optional too because it is used only in some combinations of
another arguments.
Because these combinations produces quirky code flow, it will be better
to split it to different methods.
So we did following changes to remove it and rewrite code that was using it
to use better methods.
* Introduce LoadoutPreset as new LoadoutConfig, currently it's only used
in Summon ability, because SummonInfo uses Copy and we can't specify
String for specifying asset path for loadout.
Everything else is rewritten to use asset path to create loadouts.
* More builder methods for LoadoutBuilder.
Namely:
- from_default which is used in server/src/cmd.rs in "/spawn" command.
- with_default_equipment, with_default_maintool to use default
loadout for specific body
- with_preset to use LoadoutPreset
* Add new make_loadout field with `fn (loadout_builder, trading_info) -> loadout_builder`
to EntityInfo which allows to lazily construct loadout without
modifying LoadoutBuilder code
* Fix Merchants not having trade site
We had heuristic that if something has Merchant LoadoutConfig - it's
merchant, which can be false, especially if we create Merchant loadout
lazily
As side note, we do same check for Guards and it fails too.
Too fix it, we introduce new agent::Mark, which explicitly specifies
kind of agent for entity
* `LoadoutBuilder::build_loadout` was written in a such way that depending
on main_tool you will have different loadout. Turns out it was this
way only for Adlets though and this behaviour is reproduced by specifying
different loadouts directly in world code.
The security model has been updated to reflect this change (for example,
moderators cannot revert a ban by an administrator). Ban history is
also now recorded in the ban file, and much more information about the
ban is stored (whitelists and administrators also have extra
information).
To support the new information without losing important information,
this commit also introduces a new migration path for editable settings
(both from legacy to the new format, and between versions). Examples
of how to do this correctly, and migrate to new versions of a settings
file, are in the settings/ subdirectory.
As part of this effort, editable settings have been revamped to
guarantee atomic saves (due to the increased amount of information in
each file), some latent bugs in networking were fixed, and server-cli
has been updated to go through StructOpt for both calls through TUI
and argv, greatly simplifying parsing logic.
- Add metrics for which branch of the compression heuristic was taken.
- Reduce the threshold for the heuristic.
- Deduplicate code for dealing with lazy messages.
- Make jpeg dependency only scoped to the compression benchmark.
- Remove commented code.