This fixes:
- Giving loot protection to the entity to be destroyed instead of the
one who killed it.
- Checking the destroyed entity for non-humanoid body instead of the
entity receiving loot when deciding whether loot protection should be
given or not.
- Incorrect assumption that NPC groups are tracked in the group
manager when cleaning up loot protections.
`AgentData::jump_if` cancels `InputKind::Jump` if condition
is not met. Even if the jump itself was issued elsewhere.
This prevented merchants and travelers from reaching target site
if somewhere along the path jump is required.
This is exactly what happens during dispatch of `NpcActivity::Goto`.
Original implementation contained `traverse` followed by `jump_if`
for flying NPCs which cancelled pending `InputKind::Jump` issued
by `traverse`.
This fix extends jump condition inside traverse by
including `traversal_config.can_fly`.
individual commits combined here:
send active plugins
compute plugin sha hash
single position for defining Hash type
request plugins from the server
Server sending the plugin to the client
store received plugin in file and use it
handle plugin data at the right place
pass config_dir to client init
load local plugins
operational plugin caching
simplify the interface
clippy suggestions
remove artifacts
fix compilation of test world
ChangeLog entry
code quality fixes
improve readability
adapt to multiple systems