Setting hp_max before player actually emerges in a
join event seems to prevent damage flash (MT engine
issue 7876) for new players.
Old players rejoining for the first time since the
change will still experience it though.
It seems that when we access metadata too rapidly
it pulls data out of order or something, so that the
player damage time stuff is unstable, and healing can
start immediately, or more than 8 seconds later.
Caching this stuff manually seems to work around the
issue, and it seems that the metadata system is at
least EVENTUALLY consistent, so it's still good for
long-term use or across world unloads.
- Player hp_max is 8 now, so most injuries will block
a whole slot each time.
- Player can be reduced to 1 slot, not 2. The 2 slots
was from back in the day when players needed to go
to the surface to heal faster, to help them get up
there. Now the 1 slot is only needed in case the
player is trapped in fire or something.
- Damage effects now don't stop playing just because
the player has reached maximum injury, and healing
is also delayed by continued injury.
Treat all API mods as a "layer", and use the new
nc_api_all registration to indicate that a mod depends
on the NC API (which ALL NC mods assume they do).
This means that each non-API mod does not need to
worry about which API mods it really needs and which
it does not, nor will they need to be updated for any
internal API restructures.
This is a game, not a modpack, so all mods will be
loaded anyway, and we only care about order. That
means that we don't really need to worry about
having excess dependencies because any mod we
don't actually need will be needed by something that's
loaded anyway. If somebody wants to reuse a
component elsewhere, they're likely to need to do
some work to untangle it anyway, because of the
amount that NodeCore mechanics interact and
interdepend.
If players are invisible, NodeCore will not add any visible or
audible effects for them, allowing such players to be completely
non-interactive with gameplay.
This allows things like spectator or stealth-admin mods to
function properly.
- Healing rate is always the same, regardless of environment.
- Remove visible damage from player.
Lasting injury has just never really been a major gameplay
factor, and making players wait to heal under certain
circumstances did not feel like it made gameplay "better" in
any way.
Now, if you get hurt, you drop your stuff, and have to wait a
MINIMAL amount of time before you can pick it up again.
Similarly, with visible inventory, the damage textures are
redundant, and with the gameplay importance of injury being
so diminished, they were visual overkill.
Guarantee 2 usable slots no matter how many different
injury effects accumulate.
Filled slots will be shared among different damage types
roughly proportionally.
- Collapse all nodecore "core" mods in the /mods listing, so it's
easier to find the actual add-on mods.
- Parameterize in-game branding to make renaming derivatives just
a little easier.
Try to detect player traces going through a change in fluid medium
such as water/air or water/glass, and block facial recognition
through it.
Specifically allow air-into-glass transitions, or into any other
medium otherwise clear enough to allow sunlight to propagate.
Standardize the "play a sound for everybody except the player who
is already playing it client-locally" logic into one place.
Fix failure to correctly detect tool speeds for some things, i.e.
when the player is using a tool but the capability used on a node
is actually inherited from the hand.
Note that this may allow pummeling with wrong tools (e.g. repacking
soils with spades) along with accompanying inappropriate tool wear,
but this should be minor and avoidable, and can be fixed later...
Attempt to place stack node directly when player is pointing at
a node space, instead of tossing out an item ent.
This makes item organization less tedious in the early game, as
players are manipulating node positions instead of calculating
ent ballistics in their heads when trying to lay out inventories
on the ground, or using naive shelving.
(Note that wooden shelves still have an advantage in how quickly
items can be taken from them).
Items are still tossed as ents if a player is not looking at a
valid place in nodespace, so inventories can still be e.g. thrown
over a cliff or jettisoned in the ocean...
- Clean up registered_* usage patterns.
- Reduce tendancy of leaves to create stack nodes.
Now they tend to stack up properly in-world more often.
- Tweak damage system to create "headroom" where minor
damage doesn't cost inv slots immediately.
- Make player hand skin color match model skin.
- Cleanup/unify grass abm logic.
- Start installing new sounds by MagikEh
Sound source:
https://github.com/MagikEh/SoundsOfWarr
Each slot is twice as likely to be injured as the one to its
immediate left. This creates some player agency in organizing the
inventory, e.g. prioritizing which items to risk the most/least
in the event of injury.
- Eliminate health and breath stat bars.
- Players NO LONGER DIE FROM INJURY.
- Players no longer lose walking speed or mobility.
- Players lose inventory slots in proportion to injury; they're
stuffed with an "injury" item, and items they displace are
ejected. Slots are displaced in random order.
- Healing rate is much faster, so players are usually mildly
inconvenienced by injury, but can soon enough pick up their
stuff and leave.
- Health and breath HUDs are gone. Health is visible based on
number of lost slots, and breath uses a vignette to narrow
tunnel vision for O2 loss.
Overall, the old health system has been more of an immersion-
breaking annoyance than anything. This allows health to get out
of the way of the primary gameplay.
UNFINISHED: Need a replacement for the old "suicide to get unstuck"
mechanic.