2267 Commits

Author SHA1 Message Date
Aaron Suen
197467d795 Fix missing adze graveling wear check 2021-08-11 18:25:18 -04:00
Aaron Suen
de6206d6d9 Fix broken object crosshair 2021-08-11 06:44:40 -04:00
Aaron Suen
9abee673e5 Minor memoization func cleanup 2021-08-09 08:18:48 -04:00
Aaron Suen
1b0a506633 Fix tote AISM over-modification
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.
2021-08-09 07:26:26 -04:00
Aaron Suen
4ed265558f Notes updates 2021-08-08 09:07:53 -04:00
Aaron Suen
c2ec7cb942 Emergency dig time upper bound
Make sure no matter how badly players are
trapped, they can still make an emergency
tunnel out.
2021-08-08 08:36:34 -04:00
Aaron Suen
52a7211c00 Fix silk touch for lode ore 2021-08-07 15:20:05 -04:00
Aaron Suen
38fc6ab5d7 Subtler domain wall particles 2021-08-07 00:33:48 -04:00
Aaron Suen
d5d9cb07aa Tone down extreme glass brightness a bit 2021-08-07 00:16:54 -04:00
Aaron Suen
7d961a3bec Consistent "tip" in hints 2021-08-06 23:40:17 -04:00
Aaron Suen
46e60a2348 Graveled adze, new path to wood tech
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.
2021-08-06 23:39:39 -04:00
Aaron Suen
58968f39b7 Crude glass falls upon cooling 2021-08-06 23:05:09 -04:00
Aaron Suen
b4315def27 Delayed witness on staring 2021-08-06 22:59:33 -04:00
Aaron Suen
5c92ac7984 Fix dirt leaching hint
Was called in wrong order so it was looking for
dirt there instead of sand
2021-08-06 22:59:16 -04:00
Aaron Suen
5a9a18535f Hint completion by "staring", not "glancing"
Player needs to linger on the node for at least
long enough to reasonably read the description
before it counts as discovery.
2021-08-06 21:53:42 -04:00
Aaron Suen
3c41155550 Hint discovery by looktips
No touching necessary anymore
2021-08-06 21:46:27 -04:00
Aaron Suen
f7461414d2 Move lazy raycast into playerstep API 2021-08-06 21:33:23 -04:00
Aaron Suen
0e0a423e7e Make all liquids never exist as item stacks
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.
2021-08-06 21:20:45 -04:00
Aaron Suen
0d3601b831 Items/nodes no longer bounce off players
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.
2021-08-06 21:11:42 -04:00
Aaron Suen
a0d2abfe3a Fix missed DNTs 2021-08-05 21:09:01 -04:00
Aaron Suen
4f9d756c3f Fix DNTs not firing without nodenames 2021-08-05 20:50:03 -04:00
Aaron Suen
7244d6d11d Fix loose self-repacking when sitting on top of loose nodes
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.
2021-08-05 08:21:54 -04:00
Aaron Suen
81ef696bce Clear soaking meta cache on node replacement
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
2021-08-05 08:10:42 -04:00
Aaron Suen
6aafecf475 Optimize soaking check for dirt leaching
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.
2021-08-05 08:02:48 -04:00
Aaron Suen
0435e6af32 Rewrite core DNT API
- 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.
2021-08-05 07:36:14 -04:00
Aaron Suen
ffb25a9162 More exact DNT names
Keep actual name of DNTs distinct and self-describing instead of
relying on modname, which sometimes changes when things are
refactored.
2021-08-05 07:35:20 -04:00
Aaron Suen
ea51b81c39 Notes update 2021-08-04 22:58:29 -04:00
Aaron Suen
d8b29d047f Back out pickpocketing
- 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 :-)
2021-08-04 21:00:51 -04:00
Aaron Suen
362ff17bb2 Don't crash on pointing at non-luaentity 2021-08-04 20:46:37 -04:00
Aaron Suen
dd009343f9 Fix DNT retriggering bug 2021-08-04 17:15:04 -04:00
Aaron Suen
19652c2fe1 Begin major rework of nodenames matching, autostart DNTs
- 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.
2021-08-04 07:41:00 -04:00
Aaron Suen
d4c8d32171 Microoptimization of node update checks 2021-08-04 07:39:52 -04:00
Aaron Suen
bedfa4b211 Fix some APIs bypassing on_nodeupdate hooks 2021-08-04 07:36:31 -04:00
Aaron Suen
3dc6a0d6c1 Make "connected" glass non-optional
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.
2021-08-04 07:27:53 -04:00
Aaron Suen
011e171e2d Float glass tanks too now 2021-08-04 06:42:14 -04:00
Aaron Suen
964f2c5044 Make sure glass DNTs are queued 2021-08-03 21:08:57 -04:00
Aaron Suen
67b8f43cf0 Merge branch 'fluidwander' into dev 2021-08-02 07:18:29 -04:00
Aaron Suen
00b3dc477a Unified fluid wandering system
- 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.
2021-08-02 07:17:51 -04:00
Aaron Suen
1f913bf402 Merge branch 'dev' into fluidwander 2021-08-02 07:55:11 -04:00
Aaron Suen
ae96e86321 Lots of notes updates 2021-08-01 20:19:27 -04:00
Aaron Suen
531d259775 Fix looktip darkness punch fallback 2021-07-31 22:23:36 -04:00
Aaron Suen
6927552f8b Touchtips for ents 2021-07-31 21:05:52 -04:00
Aaron Suen
cbb3d59b2f Enable looktips for non-interact players too 2021-07-31 20:40:30 -04:00
Aaron Suen
cb7b3f7bea Redo touchtips into looktips
- 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
2021-07-31 15:54:11 -04:00
Aaron Suen
6e1df14c1b Dynamic custom crosshair
- 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.
2021-07-31 08:43:38 -04:00
Aaron Suen
b0bf94c6e6 Update README 2021-07-31 08:16:37 -04:00
Aaron Suen
9995d9bfc8 Add a use for dry sponges
Dry sponges act as air tanks while diving, but the effect is
limited by their tendency to soak up water from the environment.
2021-07-27 07:42:40 -04:00
Aaron Suen
f4cdda972c Re-optimize CDB listing images 2021-07-25 14:57:37 -04:00
Aaron Suen
352fd58339 Revert "Optimize and reorder player skin layers"
This reverts commit 5bb89ebae9af630922af81f895737ce4682ef183.
2021-07-25 14:55:24 -04:00
Aaron Suen
f240bf5990 Revert "Fix singleplayer skin"
This reverts commit c326d24d1b438e4de93c6fa8e2b565ace7cae3ea.
2021-07-25 14:54:47 -04:00