2432 Commits

Author SHA1 Message Date
Aaron Suen
533b2a840c More flexible player guide API for mods
- 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.
2021-08-14 08:54:02 -04:00
Aaron Suen
fb66115fb1 Order hint completion alerts chronologically
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.
2021-08-14 08:37:06 -04:00
Aaron Suen
5639ec773c Simplify early-game hints
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.
2021-08-14 08:29:27 -04:00
Aaron Suen
7dc2e5a822 Idea notes 2021-08-14 08:14:45 -04:00
Aaron Suen
5cbbae8cc9 Graveled adze recipe reform
Using stackapply recipe, it's no longer necessary to
sneak+place the gravel above the adze; it works
just like stone-tipping.
2021-08-14 08:11:12 -04:00
Aaron Suen
8237f8c400 Convert tool stone-tipping to stackapply recipe 2021-08-14 08:06:27 -04:00
Aaron Suen
d7dbde8765 New stackapply recipe type
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.
2021-08-14 08:01:50 -04:00
Aaron Suen
e7a8856aab Translation updates
- Start of German translation
- Re-completion of Russian
2021-08-14 07:40:04 -04:00
Aaron Suen
e2751cb2c3 Player skin leather tone and colors 2021-08-12 07:36:01 -04:00
Aaron Suen
bc8f78ce75 Make health virtual items unusable
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.
2021-08-11 22:13:09 -04:00
Aaron Suen
81da6bc2a7 Merge branch 'master' into dev 2021-08-11 18:25:39 -04:00
Aaron Suen
197467d795 Fix missing adze graveling wear check 2021-08-11 18:25:18 -04:00
Aaron Suen
f9e02b681e Remove no-longer-used sound 2021-08-11 06:55:48 -04:00
Aaron Suen
3c9873e81d Merge branch 'master' into dev 2021-08-11 08:44:52 -04:00
Aaron Suen
de6206d6d9 Fix broken object crosshair 2021-08-11 06:44:40 -04:00
Aaron Suen
d5233b5f19 Visible bandolier on player skin 2021-08-09 08:24:41 -04:00
Aaron Suen
aebd2b3111 Nicer, "smart" item ejection
- 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.
2021-08-09 08:20:28 -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