Need to be granted interact privs before they can
start observing and discovering things and trigger
hint completion. This should reduce the noise for
pure spectators, and not distract new players who
should be reading rules or something.
The "player character" only assists with "depth
perception" and determining if pointing at
something within reach; diggability, protection,
and other consequences of touching the thing
should really be the actual player's responsibility.
We don't want things to be too "automatic" for
the player; they are supposed to learn about the
world, not about the HUD instrumentation.
The use of object vs node crosshair is less important now
due to our ability to rely on the looktips to differentiate
which thing we're pointing at (and which face), and
makes less sense in terms of NodeCore's everything-is-a-
node nature.
Protection, however, is more useful to show, where in
use, so players can avoid interacting with things and
triggering protection alerts. Use the old everted
crosshair design to now mean "protected" instead of
"pointing at entity."
The old use of the crosshair shape should have been
uncommon enough that players should be able to
adapt to the change alright.
- Tab content can now be "raw" instead of plaintext, in
which case it will not be escaped or embedded in a
textbox and can have arbitrary controls.
- Tab content function is now passed geometry that
would be used for textarea, to inform placement of
custom form controls.
- Tab content function is passed list of current
formspec content in mostly-complete form, so that it
can modify any other form data, including replacing
the entire form if it wants.
- Falsy tab content (or content function return) prevents
showing the formspec at all, allowing mods to show
their own formspec entirely, but navigation back to
the guide is the mod's responsibility.
Instead of sorting hint completion alerts alphabetically
just so they'll be stable, sort them by order of actual
completion, so most recently completed hints are at
the bottom of the list, instead of inserted at randomish
places in the list.
Lock more things behind prerequisite hints, even if
they're not absolutely strictly necessary to complete
in that order, if they would commonly be done in
that order. This reduces players being overwhelmed
by available hints very early in the game, and avoids
red herrings like "find lux" which can technically be
accomplished but yields no useful results until the
player can act on them.
For "applying" an item to a stack using right-click.
So far, replaces the old eggcorn planting recipe; to
be done include tool stone-tipping and adze
graveling.
Using the new recipe allows more inversion of control
/ dependency injection, so we don't have to override
on_place or on_rightclick in definitions anymore, and
stop having to recreate some of the base logic from
the crafting system, e.g. discovery, placement sounds.
Instead of them being like a half-broken hand
that can dig but can't climb, just make these
items completely invisible and unusable, i.e. you
must select an actual working inventory slot to
even see a hand.
This should also solve the issue that skins mods
that change the hand display the wrong arm
skin for injury items.
- Major impact is on chopping recipes (logs to
planks, charcoal splitting, optic lenses).
- Try to eject items only in a direction that they
can actually fly.
- Distribute items more or less evenly among each
direction they can fly.
Carrying a tote with an infused tool inside would
cause the tote to repeatedly animate item
switching because the infused tool's soaking AISM
would keep returning a new item stack, causing
the tote to detect a "dirty" state, reserialize its
data, and thus keep changing metadata.
Detect if we're setting an item string to the same
string it already was, and don't mark it as dirty
if so, fixing this.
Get rid of the intuitive leap necessary to climb a
tree to make planks. Instead, a wooden adze
can be gravel-tipped (adzes are now represented
in all tiers) and can chop tree trunks.
The graveled adze is as powerful as a wooden
hatchet and spade combined, in terms of
diggability, but it breaks after a SINGLE use.
It doesn't consume the gravel it's made from,
but reapplying the tip each use is a lot of extra
process.
Any liquids that are dropped should become
placed nodes. It was observed before this that
wet concrete may have been displaced in such
a way that it created a stack node; this ensures
such things are precluded as much as possible.
Be consistent with the principle that the mere
presence of a player does not affect the behavior
of objects in the world. Items should "fall
through" players instead of bouncing off them,
i.e. being deflected.
The original idea was that stacks of loose nodes should repack
from the bottom up, and self-repacking should never "race" against
reposing.
If the node is sitting on a solid node, it can always self-repack.
If it's sitting on a loose node, then only repack if the node
below is not itself in the process of self-repacking, and if the
node itself isn't awaiting reposing.
Ensure that when meta is implicitly cleared by node replacement,
the cache doesn't keep an old copy and fast-forward through
soaking recipes if the old node is re-replaced later
This was triggering on all dirt nodes everywhere, so optimize the
most common code path, i.e. one where there is no water above
and the soaking data must be reset.
- Store next runtime instead of countdown, so metadata always has
one canonical representation for a given target time, allowing
us to more easily avoid rewriting the same data with different
representation.
- Tons of caching and duplicate write avoidance, reduced resetting
of node timers, and MT API calls in general.
- It was never really a major gameplay feature,
and more than anything probably more annoying
when mining close to someone and accidentally
hitting their items.
- Broken with looktips due to an engine bug, not
worth trying to fix or work around as is.
- May be readded later if a better way to do it is
discovered.
- This may be part of a pivot toward a simpler
plan for YCTIWY integration...
- Already served its purpose in getting rid of
writers' block :-)