Don't reuse damage_per_second for damage on punch and radiant
damage. This allows these to be defined separately, i.e. no longer
assuming that all damage is from "heat" and can radiate. This
allows for things like thorny plants that hurt if you touch them
or stand in them but not if you stand near them.
Thanks to WintersKnight94 for reporting this.
This should more reliably minimize network traffic
incurred by excess property setting.
We could probably standardize a few more things,
like set attach, anim, yaw, pos...
This reverts commit 4a13733e68903904e088fe21d86dec6d927ee7d8.
While I'm still not happy with the desciptions, we probably need
some sensible way to talk about these in chat, wikis, etc.
This always felt kinda redundant and the names
themselves never seemed all that great.
For Lux Burns in particular, I'd rather the radiation
symbol speak for itself.
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...