119 Commits

Author SHA1 Message Date
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
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
135701f4f8 Remove soaking neighbor checks
These cause some issues, like the ability to soak
dirt under water for a short time to initialize the
soaking metadata, then remove the water flow,
then add it in and have leaching complete instantly
because the neighbor check prevented the soaking
ABM from firing to detect that the water was
removed.

In the course of investigating why ABMs are so slow
to begin with, it was discovered that having neighbor
checks can slow an ABM down by a factor of something
like 7x, so clearly the assumption that the neigbor check
being done in C++ as "efficient" was false.  This means
that we may be better off just always firing the ABM and
letting Lua check only a couple of relevant nodes (e.g.
for water flows in the space above) instead for
performance.

The main performance concern was dirt leaching, since
dirt generates naturally in the world in bulk, but if the
single check for water above may be faster than checking
all 26 neighbors in C++ anyway, we might as well let the
soaking API run for it so that it can detect the water having
been removed and reset the counters.
2021-07-10 11:23:09 -04:00
Aaron Suen
9fb4cf55b2 Deprecate register_limited_abm
This has just been an alias to minetest.register_abm
for a while now, and all ABM enhancement features
have been added directly to the core API.
2021-07-10 11:09:44 -04:00
Aaron Suen
40e8d23a16 Proof of concept sand-raking nodes 2021-07-02 15:40:52 -04:00
Aaron Suen
3dd945085e Remove the txp_* overlay image feature
- For inventory and wield images, this is already
  possible via override.txt since 5.3.
- For special tiles, this will be possible in 5.4.
- This complicates things, and introduces warning
  messages into mods built without awareness of
  this feaure.
- As far as I know, no texture packs have actually
  ever used this feature.
2021-04-11 10:42:27 -04:00
Aaron Suen
f633e86235 Make raw ores not silk-touchable
For one thing, it's a bit overpowered when you go
right from infused still digging lode ore as loose
cobble, right to boosted-infused digging it as raw
ore.

For another, uncobbled lux stone is purposefully
labeled as just plain stone to force the player to
pay attention to light cues, but this would make
inventory management problematic once smooth
lux stone has been collected with boosted tools.
2021-03-15 00:11:05 -04:00
Aaron Suen
95f0fb0ee9 Heaviest image compression option 2021-03-09 08:33:58 -05:00
Aaron Suen
410ebd5d8d Recompression using ECT
https://github.com/fhanau/Efficient-Compression-Tool
2021-03-09 08:16:23 -05:00
Aaron Suen
c10e80ef87 Set name in mod.conf as demanded by 5.5+ 2021-03-01 20:10:27 -05:00
Aaron Suen
dabf8ac697 Fix node registration alpha for 5.4+ 2021-02-07 12:40:10 -05:00
Aaron Suen
8e5428cedf Fix lux infusion
Tables containing lists of items to register AISMs
for are broken out into indexes at the time of
registration, so if we delay building the lists, we
need to delay registering the AISMs.  Luckily
AISMs can be registered later at runtime.
2021-01-03 08:56:47 -05:00
Aaron Suen
e1dc632779 New lux tool infusion API
- Split infusion logic from tool registration
  so tools aren't depending on sharing local
  tables with infusion logic.
- Use alternative_lux_* fields on tool item
  registrations to control how lux infusion and
  boost/unboost applies to tools.
- It should now be possible to register tools
  independently that can tap into lux infusion
  and boost features.
- It should now be possible to make tools
  boostable, unboostable, and infusable all
  independently, so they don't need to support
  all those actions, and they don't need to
  round-trip from e.g. a boost/unboost operation.
- We no longer depend on a naming convention
  for boost/unboost pairs (though in practice we
  follow it in the core game, but mods are not
  required to).
2020-12-28 20:54:57 -05:00
Aaron Suen
aae1ed78bb Support unboostable infused tools
Just make sure the boost/unboosted item is
actually registered before trying to overwrite
the stack.
2020-12-28 00:31:51 -05:00
Aaron Suen
bca338246c Tweak rad hud math again
Use an exponential scale for alpha intensity so
subtler shading gets narrower gradations
2020-09-28 23:07:43 -04:00
Aaron Suen
a346b5457f Reduce lag from continuous rad hud redraw
Round alpha channel to 16 levels, so we will have
cached all possible alpha values after not too long.
2020-09-27 22:49:34 -04:00
Aaron Suen
723d30897d Fix a couple more hints 2020-09-26 14:55:15 -04:00
Aaron Suen
7e2a4c0b0c Reintroduce radiation HUD 2020-09-14 09:36:59 -04:00
Aaron Suen
4ea87829b7 Another radiation nerf
When I was watching other people work on their
reactors, I was standing some distance off and
still got significant radiation damage after a
short time, even with the reactors subcritical.

Cut the radiation accumulation rate by 75% this
time, while buffing flux a little more relative to
solids.
2020-09-13 19:43:21 -04:00
Aaron Suen
6e939c5877 Nerf rad a bit more, still mainly off solids 2020-09-12 20:38:37 -04:00
Aaron Suen
367e0ec514 Fix rad damage immunity priv 2020-09-12 20:19:19 -04:00
Aaron Suen
4272204cb9 Nerf rads from tools and solids 2020-09-12 18:30:28 -04:00
Aaron Suen
8742b48fc8 New inventory radiation mechanics
Items in inventory can both emit radiation
and shield you from in-inventory radiation.
This process happens separately from
node-space radiation, though.
2020-09-12 16:43:00 -04:00
Aaron Suen
cb74ad204b Remove now-defuct HUD
Lux no longer has a "build-up" level, so
we have no good way to show the HUD
anymore anyway.
2020-09-12 16:31:53 -04:00
Aaron Suen
7ceb716473 Finished node rad emit/absorb
Lux things outside the player now
emit/absorb/scatter radiation, and can
also wash away radiation damage.

Remaining to do: player inventory
2020-09-12 16:27:15 -04:00
Aaron Suen
e6bd880528 Start work on redoing lux radiation logicUse a more direct, straightforward approach tolux radiation. Perhaps allow exposure to be morestochastic and less "smoothed". Offer more directand varied effects from sheilding.The end goal is to make radiation a significant force,but easily, and as intuitively as possible,manageable. 2020-09-12 12:10:18 -04:00
Aaron Suen
ae74e4f546 Complete basic hint audit of all mods 2020-09-11 17:20:21 -04:00
Aaron Suen
8624ee3a89 Fix lux rake durability issues 2020-09-08 21:23:03 -04:00
Aaron Suen
3915426d7b Add exclusive use for infused rake
Recalculate rake function based on update tool
capabilities so rakes can work on pumice now, and
theoretically even a future snappy=3 material.
2020-09-06 17:48:47 -04:00
Aaron Suen
6e9865487c Initial lux rakes
Operation on existing loose/snappy/crumbly stuff
is acceptable.  TBD is operation on pumice.
2020-09-06 17:25:03 -04:00
Aaron Suen
065bef313c Remove retired virtual item icons 2020-09-05 09:33:20 -04:00
Aaron Suen
94440b3912 Add a HUD for incident radiation 2020-09-05 09:32:02 -04:00
Aaron Suen
66d1a5fe34 Buff lux exposure rate even more 2020-09-05 09:16:39 -04:00
Aaron Suen
d35819b9af Merge branch 'dev' into luxbuff 2020-09-05 08:59:37 -04:00
Aaron Suen
18b01c1ae7 Redistribute hints into each mod
Hints themselves have not been tided up
much, but this makes the project of fixing the
hints for each mod a little more manageable
and breaks up the hard-to-navigate single
monolithic hints file in the old guide mod.

The old guide mod has now been completely
retired.  Hints are now a full-fledged API-layer
standard feature.
2020-09-04 19:07:45 -04:00
Aaron Suen
ef61cfffa6 Start work on buffing lux rad effect
Still needs more tweaking and testing
2020-09-04 14:58:32 -04:00
Aaron Suen
5c73331ec2 Remove description for burn/injury
These are no longer actually "items" in the
player's view, but states of the hotbar slots
themselves...
2020-09-04 13:58:46 -04:00
Aaron Suen
5b2e61be75 Merge branch 'dev' into fancy_hotbar_9271_fixed 2020-09-04 12:29:08 -04:00
Aaron Suen
6cd356c191 Remove explicit node non-diggability
This opens up the possibility of mods adding
tools that CAN dig some of these more exotic
things.
2020-09-02 08:21:46 -04:00
Aaron Suen
53c7a0c87c Add missing texturepack override textures. 2020-08-31 23:30:06 -04:00
Aaron Suen
50c8dbf6a6 Adzes can now be metal too 2020-08-31 22:03:40 -04:00
Aaron Suen
50bcbee25e Circumstantial lux tool degradation 2020-08-31 20:35:40 -04:00
Aaron Suen
78d321c24f Support explicit TP overrides for special_tiles
Hughes Ross has started to work on a PR for this
(https://github.com/minetest/minetest/pull/10140)
but it doesn't look like it will be ready until 5.4 at
least, and we will support pre-5.4 versions for
some time yet.  The ability for TP artists to
override special_tiles is necessary to allow things
like flowing liquid textures to be customized in
texture packs.

Add a hack for these, similar to how we did the
inventory/wield image hacks.

Note that we are also forcing overrides for special
tiles, since there may be cases where we reuse a
base image without modifiers but TP artists may
still want an independent override.
2020-07-04 19:25:37 -04:00
Aaron Suen
b2f78c0daa Indexing for craft checks
By restricting the recipes we check based
on the name of the central object being
checked, we can do many fewer craft
checks per item and avoid expensive
checks.
2020-06-27 12:20:35 -04:00
Aaron Suen
42f125c716 Make most recipes indexable
Register a "rootmatch" property for all
recipes that represents a broader, quicker
test for recipe eligibility.  False positives are
allowed but false negatives are not.

Since most recipes are eligible, we can
use this to build an index for fast lookups
of subsets of recipes to run and skip most
of the other ones.
2020-06-27 11:06:43 -04:00
Aaron Suen
1d05d0bd41 Remove redundant lux reaction check 2020-06-25 07:41:25 -04:00
Aaron Suen
0929d007ce Use nodecore.interval where appropriate
Fixes deprecated get_connected_players() at load time issue
2020-06-23 06:43:34 -04:00
Aaron Suen
3657ee862f Lux fluid should not make gravel sounds 2020-06-21 01:40:13 -04:00
Aaron Suen
f7fd09a04a Fix deprecation warning 2020-06-18 07:23:11 -04:00
Aaron Suen
984e87e155 Consistent ABM labeling
- Make sure every ABM has a label
- Use consistent case
- More concise names / consistent voice
2020-06-17 07:09:20 -04:00