Now we dig nodes much more rarely when
landing, so that there's a good chance that
merely dropping an item is non-destructive,
unless we have no other choice. There is still
a chance of a random dig, so that "item
fountain" exploits are still self-resolving.
Having a piece of gravel fall onto a sedge and have it
move the sedge over intact was immersion-breaking
and "cheaty" as it allowed players to move things that
normally they would have to mature in-place, harvest,
and then replant.
It seems some players actually use the "aux1 = climb down" setting,
which can cause them to wave randomly when they're climbing on
ladders and such. Disable the waving animation for a second or
so after any player movement other than standing or waving, to
minimize this.
Using Oblomov's proposed sinusoidal brightness profile, making
the bright and dim extremes of the lantern's range shorter, and
stretching the middle. Also nerfed the total useful lifetime
of lanterns since we no longer have to inflate it by as large of
a "useless" range at the bottom end.
Always build up texture with lower layers inside and
higher layers outside. This will fix the need for an
override in the NodeCore Improved Community Edition
texturepack for refined charcoal.
This change seems to reduce the number of CAO's being drawn in scenes
across NCC from 25% in lightly-developeda areas, to closer to 50% in
more complex areas, and up to 90% in some special cases, like "cobble
pits" from players who mass-dig. Since CAO rendering in MT is
particularly inefficient, this is expected to better preserve
framerate for weaker client hardware in some more pathological cases.
The change is applied conservatively for now, i.e. only on nodes
specifically registered as likely warranting special bulk treatment,
and those nodes were selected based on an emprical survey of the
NodeCore Community server world, which has a mix of both new and
old player settlements, and different play styles.
- Use the existing on_stack_change hook instead of creating new
on_stack_[un]fill hooks, to simplify util_stack.
- Automatically register bulk nodes, but only for nodes being
registered that request bulk optimization.
- Remove some code duplication and registration complexity.
- Hand-pick nodes for bulk storage optimization based on a survey
of actual usage from a dump of the NodeCore Community server
world map.
- Use a separate group for visinvs with hidden entities.
Players can use sneak and/or aux1 for far-zooming, so they can
far-zoom while treading water in an ocean to look at distant
islands, instead of using the aux1=climb down hack, which causes
all sorts of weird issues with other features that try to detect
movement controls
Pointable/"viscous" liquids are "solid" when present at the head
location, but not at the feet location, so that players can still
wade on the surface of these liquids.
If the liquid is "pointable" then it can block players from being
able to emergency-dig the container; in these cases, just push the
player out immedately. This should only apply to some liquids
like pumwater, molten glass, or concrete.
Seems like with higher exponents, the lantern quickly discharges
to virtual uselessness and actually spends most of its charge
range at a zero emission level.
We can't check initial conditions because the legacy mod would
load after this one (to detect that it needs to be disabled), so
we have to provide an API entry point for it instead.
There's a "soft disable" that just hides the entities
but keeps the database up to date, and a "hard
disable" that clears the database, keeping only
minimal data, until existing transactions (taken
items, dumped inventories) are flushed to the
world.
I had wanted this to be a standard feature of the
game for a while but put off merging it because:
- I had hoped to find a better visual design for the
ghost player entities that matched the bandolier
in nc_player_wield better, and
- I had scalability concerns with large servers with
thousands of offline players.
However, in practice it seems like the scalability
issues are not as critical, and the visuals are
acceptable as they are for now.
In making this a standard game feature, it
will probably also make sense to add an option
to effectively disable parts of it (e.g. avoiding
creating the ents, or even avoiding filling the
database except where players' items are already
taken).
Higher exponents >1 cause lantern to lose intense glow fast, but
glow dimly for longer, making them more realistic and "safer," as
players will have more time to get back to a charging station once
they start to feel the pressure of a dimming lantern.
Lower exponents <1 would cause a lantern to glow more intensely
but burn out quicker once it starts to dim, similar to torches,
making them also dangerous as it's easier to overestimate remaining
charge when budgeting time to get back out of a cave.
The new formula has some values that can be tweaked to alter the
gameplay balance effect of this, in addition to total max charge
and discharge rate.
- Clean up group expansion logic
- Lanterns covered in lux will never net-discharge, even if they
are not getting enough power to charge, so that they can be
carried and installed as light fixtures, with a supply of
flux from above, and can be "paused" in a flux flow when not
in use without discharging.