* Inert entities like arrows no longer block interactions like picking
up items! Logic looking for the closest entity will skip them.
* When pickaxe is not equipped and wielded we now show "Needs Pickaxe"
as the hint text for mineable blocks.
* Mineable blocks that aren't pointed at now show the mining text hint
instead of the text hint used for regular collectible blocks.
* Fixed recent bug where all interactables were showing the open text hint.
* Split `BlockInteraction` out of the `Interaction` enum in voxygen
since we were using this enum for two different things.
Allow the camera's zoom to be locked by a keybind
or a Gameplay setting. The zoom lock
behavior can be changed between Toggle
and Auto, where Auto only locks the camera
zoom while specific movement/combat inputs
are being pressed. (closes!1528)
A temporary fading notification is shown at the
top of the screen, informing the player of
the setting change (when the keybind is
used) or that the zoom is locked (when
the player might have forgotten the zoom
is locked, and is trying to zoom).
i18n strings are added for English and German,
but no other languages.
To implement the simplistic fading text, the
behavior was extracted into an impl
called `ChangeNotification`, where
reasons are quantified by `NotificationReason`.
The lights are supposed to be enabled when the setting is checked
The new description should better reflect the intended behaviour
Only the English descriptions have been updated.
Parries now cause the attacker to effectively have a recover that is either twice as long or 0.5s longer, whichever is more.
Counters now deal twice as much damage to the target if the target is in the buildup portion of an ability.
This is needed (for now) in order to parallelize ingame_chat, because
one of the handled messages updates this value on the server. It turns
out that the value is not actually used on the server, only the client,
so this was mostly a matter of threading this back to the correct place.
Additionally, we took the opportunity to modify the UI to not log you
into the game until your character was confirmed to be loaded, which
was a todo item that lets us simplify some error handling logic and
remove stuff from global state.
* Fix broken i18n keys for health and energy increases
* Better handle buff descriptions
Calculate infobox lines for item stats to set correct infobox frame
dimensions
entities are synced from and displayed in.
NOTE: Syncing entities work at the granularity regions which are
multi-chunk squares but the display of entities in voxygen is limited in
a circle with the radiues of the supplied distance.
Additional details and changes:
* Added `ViewDistances` struct in `common` that contains separate
terrain and entity view distances (the entity view distance will be
clamped by the terrain view distance in uses of this).
* View distance requests from the client to the server now use this
type.
* When requesting the character or spectate state the client now passes
its desired view distances. This is exposed as a new parameter on
`Client::request_character`/`Client::request_spectate`. And the client
no longer needs to send a view distance request after entering these
states. This also allows us to avoid needing to initialize `Presence`
with a default view distance value on the server.
* Removed `DerefFlaggedStorage` from `Presence` and `RegionSubscription` since the
change tracking isn't used for these components.
* Add sliders in voxygen graphics and network tabs for this new setting.
Show the clamped value as well as the selected value next to the
slider.
* Rename existing "Entities View Distance" slider (which AFAIK controls
the distance at which different LOD levels apply to figures) to
"Entities Detail Distance" so we can use the former name for this new
slider.
- 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
* New hud/ability.ron file for ability localizations
* i18n keys are created by adding .name and .desc to ability id. Because
of how i18n worked (returning key if string wasn't found), it was
impossible to do because it leads to UB in case string is missed.
To solve this we've added get_opt method that returns None
* New Localization::get_or method for convinient fallback key usage
* 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