- `BlockFloater`s and `ComboFloater`s don't store the owner anymore,
`ExpFloater` still does, however the field is used to prevent
accumulating old floaters with new ones. This change also makes it so
that if the client changes entity, they keep the old entity's
floaters.
- The `combo_floaters` field is now `combo_floater` plus it now uses an
Option<ExpFloater>.
- Changed `handle_health_change` to change the health even if the entity
does not have a `Pos` or `Uid`, now uses `emit_now`combo_floater` plus
it now uses an Option<ExpFloater>.
- Changed `handle_health_change` to change the health even if the entity
does not have a `Pos` or `Uid`, now uses `emit_now`
- Changed some comments
- Change hp_pulse to not be framerate dependent
- Change some of the HpFloater checks to be inside the find() function
- Remove unnecessary join
- Add back option for showing incoming damage + add option for
experience accumulation
- Change `ExpFloater`s to not store the owner, as they are only shown
for the player (will have to see if the implementation is correct so
that it may be applied to the other floaters)
- Rename `Outcome::Damage` to `Outcome::HealthChange` and `DamageInfo`
to `HealthChangeInfo`
- Update some outdated comments/documentation
* Added `LootOwner` component used to indicate that an `ItemDrop` entity is owned by another entity
* A loot winner is now calculated after EXP allocation using the EXP per entity for weighted chance distribution
* Used existing Inventory Full overitem text to show "Owned by {player} for {seconds}secs" when a pickup fails due to a loot ownership check
* Updated agent code to take into account loot ownership when searching for `ItemDrop` targets to pick up
* Added `loot` ECS system to clear expired loot ownerships
- Prevent utterances and other sounds from causing undesired jitters and
fleeing, such as those caused by greeting villagers.
- Agents will no longer flee from quieter weapon sounds such as melee.
Piercing damage now ignores an amount of protection equal to the piercing damage value.
Crushing damage now does poise damage equal to the amount of mitigated damage.
When poise damage is dealt while in a poise state, poise damage is instead converted to damage.
Damage from a given individual or group only counts towards a kill for 10 minutes since that individual or group's last damage to the entity - after this period their damage contribution is removed. This avoids the list of damage contributors growing excessively large for an entity that does a lot of combat but never dies.
EXP sharing within groups is unchanged - the difference is simply that the input to this calculation may be less than 100% of the base EXP reward for the kill if other individuals or groups contributed damage.