68 Commits

Author SHA1 Message Date
Aaron Suen
39cf68a575 Speed up objects_at_pos (in theory) 2020-05-25 00:00:40 -04:00
Aaron Suen
fe23c34208 Player buoyancy fixes/refinements
- Nerf effect by 50% to be less disruptive
- Effect can be avoided by not being in a
  swimming position (matching model anim)
- Refactor swimming check into API
- Special checking and handling for linkdead
  players, for whom client knockback
  wouldn't work anyway.
2020-05-22 07:30:12 -04:00
Aaron Suen
c69d0a1cff Infodump config, dump texture override template 2020-04-20 08:15:53 -04:00
Aaron Suen
b1f2828f5c Fix player air friction physics
If a player has sufficient upward velocity, then the gravity
reduction meant to slow downward acceleration instead slows upward
deceleration and the player flies ridiculously high.  Doesn't
happen normally in vanilla, but can happen with mods.

Thanks to Lone_Wolf for reporting this.
2020-04-09 06:39:58 -04:00
Aaron Suen
f240bc54c6 Fix is_full_sun error 2020-04-05 22:35:33 -04:00
Aaron Suen
35292eb259 Switch to an internal sound API
Avoid mangling official Minetest API
functions that mods may want to
use directly.
2020-04-05 21:22:51 -04:00
Aaron Suen
cdb32ebc36 Only detect "full sun" where not diminished. 2020-03-15 09:16:34 -04:00
Aaron Suen
7444a0248b Fix fog color (again) and a crash bug.
Sadly I don't have a way to make fog color texture
pack customizable, so it will have to be hard-coded
for now, and TP artists may want to advise players
to just disable fog if they can, or maybe a CSM could
work...
2020-02-22 19:08:51 -05:00
Aaron Suen
42ec1d7d5a Merge highly experimental perpetual twilight.
This removes the day/night cycle from NodeCore,
which experience seems to suggest may be more of
an annoyance than a useful and interesting gameplay
feature.

Some aspects of gameplay are notably altered, such
as the balance between artificial and natural light,
and the operation of optics (no more solar lenses).

The overall atmosphere of the game is also deeply
changed by this, taking on a timeless, dream-like
quality.  It remains to be seen whether this change is
beneficial or even tolerable.
2020-02-22 17:42:43 -05:00
Aaron Suen
6db8d9fc26 Adjust things to work in twilight.
- Lenses no longer produce light from sun at all;
  artificial light is always needed.
- Grass and trees survive, don't do dual-time check.
- Breeze sounds work in twilight.
- Sponge drying only requires twilight, now also can
  happen under artificial light.
- Peat to grass happens under twilight.
2020-02-22 16:55:42 -05:00
Aaron Suen
5b2b334fe4 Bathe the world in twilight, not sunlight. 2020-02-22 16:36:27 -05:00
Aaron Suen
f12cbd2c61 Merge branch 'master' into dev 2020-02-22 11:39:02 -05:00
Aaron Suen
1ddc9b52d0 API to dump inventory for mods. 2020-02-22 11:38:49 -05:00
Aaron Suen
5e27f5c175 Stronger depth light diminishing. 2020-02-22 10:41:18 -05:00
Aaron Suen
c7a322941e Experimental new natural light system.
- No day/night cycle, no sun/moon.
- Get rid of clouds too.
- Skybox is now 100% texture-packable.
- Natural light diminishes with depth.

Night-time no longer disrupts gameplay topside, but
skylights are no longer useful to an infinite depth and
artificial light is necessary for all deep mining.
2020-02-22 10:38:03 -05:00
Aaron Suen
090417daf8 Set-velocity item scattering.
This prevents chopped planks from landing atop the
log below, and all sorts of other recipe annoyances
when items scattered are not necessarily scattered
far enough.
2020-02-22 09:11:24 -05:00
Aaron Suen
266de04987 API for getting objects inside one node. 2020-02-09 10:11:13 -05:00
Aaron Suen
9deb64526e Offline tree growth tweaks.
- No tick delays during tree growth.
- Tree growth near unloaded areas will be delayed
  until the areas are loaded.
2020-02-08 14:23:45 -05:00
Aaron Suen
55eec8e011 Don't pre-scatter ejected items.
Supposedly some stacks are clipping through the nodes
surrounding them when ejected; this is theoretically
possible if the stacks are full enough, based on the
X/Z offsets and the collisionbox sizes.

Always start items near the center of the ejecting node
position, to minimize (in theory, eliminate) this risk.
2020-01-29 18:24:04 -05:00
Aaron Suen
b1fab67491 Start work on unifying/simplifying builtins.
falling_node rebuilt from scratch so far.
2020-01-04 10:51:10 -05:00
Aaron Suen
511455fff9 Player/ent freefall physics cleanup.
- Thrown objects inherit initial velocity.
- Player and objects have matched terminal
  velocity and can free-fall in tandem.
- Thrown objects experience horizontal air
  friction too.
2020-01-02 23:03:23 -05:00
Aaron Suen
c7a90debcb Fix scaling and charcoal writing.
Making hand dig everything broke logic that was
depending on things being "not hand diggable".
Continue to treat things as not-hand-diggable if they
would take a long enough time to dig.
2019-12-29 13:57:49 -05:00
Aaron Suen
b66c636aa7 Doors can't push nodes into players directly. 2019-12-18 19:52:07 -05:00
Aaron Suen
c0570db089 Fix lode yield probability distribution.
Also refactored exponential random transform function
into core API.
2019-12-16 09:20:00 -05:00
Aaron Suen
d7819762e5 Full proper support for spectator mods.
If players are invisible, NodeCore will not add any visible or
audible effects for them, allowing such players to be completely
non-interactive with gameplay.

This allows things like spectator or stealth-admin mods to
function properly.
2019-12-11 06:52:09 -05:00
Aaron Suen
5b0459e4bb Speed adjustment settings for many long-running processes.
Many processes that have a significant speed/time component can
now have speeds adjusted (as a multiplier from base rate) via
settings.

Things that can be adjusted:
- Tool speeds (including digging and pummeling)
- Cooking and pummel recipe durations
- Soaking processes like tree growth, peat fermentation

The settings are hierarchical, so groups of rates can be
adjusted together, and a further multiplier can be applied to
each member of the group.

The settings are calculated dynamically, for power users only,
and documenting them is out of scope for the project.

Specifically, this should help tuning for Kimapr's SkyBlock, and
possibly other mods involving signficant gameplay rebalancing.
2019-12-06 07:01:12 -05:00
Aaron Suen
b9e2f822f8 New flexible find_nodes_around api. 2019-11-30 10:28:35 -05:00
Aaron Suen
31bcefd842 Invert flammable/igniter checks.
This should improve game efficiency/smoothness when
a lot of flammable stuff is present but there are no
corresponding massive fires.

This seems to address runtime jitter issues noticed
after placing hundreds of coal nodes inside a forest.
2019-11-28 13:04:35 -05:00
Aaron Suen
6013583e4c Item dispersal tweaks/cleanup. 2019-11-28 11:40:28 -05:00
Aaron Suen
9afeebe215 Standardize item dispersal. 2019-11-28 11:29:21 -05:00
Aaron Suen
a12d44c4f8 Tighten up interact checks. 2019-11-28 08:55:09 -05:00
Aaron Suen
8c45be8abb Make handheld torches more forgiving.
You can now wade in shallow water or stand closer to a
waterfall without torches going out.
2019-11-18 22:17:17 -05:00
Aaron Suen
05c60e031a Attach wielded item sounds to moving player. 2019-09-12 20:20:59 -04:00
Aaron Suen
cbf035e0d5 Finished Soaking API, converted trees and infusion to it. 2019-09-05 22:48:30 -04:00
Aaron Suen
71469e3990 Fix a couple bugs/warnings. 2019-09-05 07:36:28 -04:00
Aaron Suen
39dea8a2ae MAJOR: Code quality audit using luacheck.
- Removed lots of unused variables, a few shadowed identifiers.
- Removed a few sections of dead code.
2019-08-31 09:26:53 -04:00
Aaron Suen
fe2c153f9e Clean up all lua code style.
Formatting rules based on Paul Kulchenko's perl-based formatter...
http://notebook.kulchenko.com/programming/lua-beautifier-in-55-lines-of-perl
...using a single tab for indent.

Mostly pure whitespace changes.
2019-08-27 19:14:51 -04:00
Aaron Suen
8c2181b250 Make node sounds on spinning too. 2019-08-14 21:46:55 -04:00
Aaron Suen
c1828219e6 Refactor social sounds subsystem.
Standardize the "play a sound for everybody except the player who
is already playing it client-locally" logic into one place.

Fix failure to correctly detect tool speeds for some things, i.e.
when the player is using a tool but the capability used on a node
is actually inherited from the hand.

Note that this may allow pummeling with wrong tools (e.g. repacking
soils with spades) along with accompanying inappropriate tool wear,
but this should be minor and avoidable, and can be fixed later...
2019-04-06 23:51:05 -04:00
Aaron Suen
eba101c93a Fix sound doubling issues. 2019-04-06 23:42:23 -04:00
Aaron Suen
68d996e1f3 Begin EOS for MT 0.4.
We actually haven't been testing in 0.4 at all for quite a while
now.  Since this is a standalone base game without complex
interdependency relationships, there isn't really any need to
maintain compat with old versions of the engine.  Players can
upgrade to play; keeping a separate copy just to play on old 0.4
servers is even still an option.

There is some internal cruft that has been building up to support
0.4, and this allows us to purge most of it.  The larger benefit
may come when we're able to remove line_of_sight in favor of the
more efficient raycast (still yet to be done).
2019-04-06 11:21:34 -04:00
Aaron Suen
507f5ae98e Sounds for tools wearing out and breaking. 2019-04-01 00:39:30 -04:00
Aaron Suen
85f87d1c17 Simplify some selectionboxes significantly. 2019-03-30 21:23:02 -04:00
Aaron Suen
9607bcc6a6 Start working on sounds, plus minor refinements.
- Clean up registered_* usage patterns.
- Reduce tendancy of leaves to create stack nodes.
  Now they tend to stack up properly in-world more often.
- Tweak damage system to create "headroom" where minor
  damage doesn't cost inv slots immediately.
- Make player hand skin color match model skin.
- Cleanup/unify grass abm logic.
- Start installing new sounds by MagikEh

Sound source:
  https://github.com/MagikEh/SoundsOfWarr
2019-03-13 23:51:59 -04:00
Aaron Suen
0652636e47 Remove redundant rotations, simplifying node spinning. 2019-03-07 10:04:32 -05:00
Aaron Suen
cb78b5a334 Got immediate triggering working. 2019-03-07 01:40:26 -05:00
Aaron Suen
94082bc86a Prism and full logic basically working.
There seems to be an issue triggering events, so a lot of work
is being done by the abm to cover over this problem...

Much like my earlier work with sz_rotary, I suspect a lot of
fine-tuning will be needed.
2019-03-07 00:58:37 -05:00
Aaron Suen
e68693c062 Optic API works, lens basically works. 2019-03-07 00:35:27 -05:00
Aaron Suen
3bb18e195e A little refactoring... 2019-03-05 23:05:56 -05:00
Aaron Suen
3bef72b665 Unify detecting old version of MT. 2019-03-03 12:08:47 -05:00