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 :-)
- Unify logic for expanding nodenames/itemnames lists into indexes
of matching names, and comparing item names/defs to lists,
with group expansion and deferral.
- Add "autostart" option to DNTs which registers construction traps
and a patrol ABM automatically, use for some things that are a
good match.
- Note that some things are doing more complex logic in ABMs, such
as determining if a node is eligible, or custom timing logic;
leave these as-is for now.
The game was designed with this appearance in mind, especially the
appearance of float glass, and having this turned off can have a
major impact on the aesthetics and even function (accessibility)
of builds.
The ability to enable/disable connected glass is of unproven value
even to lower-end systems, as most of the additional work is in
the background mesh-building thread, and by now the game is complex
enough that other factors completely overpower the impact this has
on performance.
Forcing this mitigates the risk that players who have connected
glass turned off will not experience the proper results of using
float glass, and that their builds will appear very different for
other players.
- New fluid wandering API, mostly unified logic, only needs
some parameters, plus the "generation check".
- More sophisticated behavior seeking down-slopes beyond simple
immediate flowing node reach ("subtle slope" detection).
- More reliable timing using DNTs.
- Set firm movement rate of concrete, molten glass.
- Reduce molten glass generations, since it can now be more
reliably directed.
- Separate touchtips into in-world looktips vs
wieldtips for inventory.
- Automatically raycast and show tips for
anything we're looking at.
- Looktips don't work in full darkness, punch
to activate a temporary touchtip for it, or
use synesthesia lighting.
- nodecore.show_touchtip API stubbed out
(used in yctiwy).
TODO:
- Need to rework hint discovery to use raycast
instead of just punching
- Crosshair hidden when !interact
- Fade out crosshair when not pointing
- Makes crosshair HUD-scalable (not sure if
this is definitely good or bad yet)
- Forces crosshair appearance on mobile to
match desktop
Since the crosshair position is already used in
gameplay i.e. for item dropping on mobile, it's
important that mobile have consistent access
to it compared to desktop.
Also, mobile's lack of crosshair was one of the
main blockers to having look-tips instead of
touch-tips, so forcing a crosshair opens that
up again. Forcing punch interactions to see
anything causes issues with ember/pumwater
where punching hurts.
A crosshair would also be necessary for
star navigation assistance tools.