1998 Commits

Author SHA1 Message Date
Aaron Suen
b6f4ebaca7 ABM inversion for brick bonding 2021-03-21 12:09:28 -04:00
Aaron Suen
267450add4 Register a few obvious inversions
Ones that were not done manually before,
and can probably give us a noticeable
speed-up right now.
2021-03-21 12:08:55 -04:00
Aaron Suen
7fd51c1a6c ABM "inversion" API
This is useful when we want to perform an
action on a commonly-occuring node (like
sand or item stacks) with a requirement of
a neighbor of a less common node type (like
igniters).  Checking for B with A nearby can
be a lot faster than A with B nearby if B is
less common, so fewer neighbor checks
actually need to happen.

This was already done "manually" for the
flammable/igniter interaction, but now this is
a general API for all ABMs, that allows the
inversion to be done nearly transparently
with just a flag in the definition, and so the
ABM rules can be written more simply, with
the inversion handled elsewhere.

TODO: Rewrite current manual-inversions,
including the ones for flammable/igniter and
lava/stone hardening/softening.
2021-03-21 12:08:08 -04:00
Aaron Suen
abc5dc2cd2 ABM statistics reporting 2021-03-21 12:04:44 -04:00
Aaron Suen
d949430a65 Make protection exemption exemptable
So nc_exmachina and other downstream
mods can override the protection override
for item stacks too.
2021-03-20 08:08:05 -04:00
Aaron Suen
5dc95a91c4 Unprotect item stack nodes
This prevents a problem where players
can drop items into other players'
protected areas but cannot dig them.

Other solutions to prevent players from
placing items into protected areas in the
first place may be possible, and may still
be explored, but are not foolproof and so
this acts as a fallback at least.
2021-03-20 08:02:51 -04:00
Aaron Suen
28b78f7dce Log teleportations 2021-03-18 09:49:34 -04:00
Aaron Suen
99aec737d5 Dump inventory on all teleports by default
A low-level player teleportation must be explicitly
declared nodecorian via a keepinv property on
the position, or the player must be exempted via
the keepinv priv, to be allowed to teleport without
leaving the inventory behind.

This means that naive mods like /home commands
will now work correctly and teleport only the
player, and not items.
2021-03-17 08:13:36 -04:00
Aaron Suen
9334834077 Merge branch 'master' into dev 2021-03-17 00:02:11 -04:00
Aaron Suen
2c2e705938 Try to reduce spawn star memory leak near spawn
Use grid-aligned pixel locaiton for calculating
opacity so each star pixel position has only one
opacity level associated with it, rather than the
multiple that can currently occupy that opacity
range.
2021-03-17 00:02:05 -04:00
Aaron Suen
0251a7d023 Try to reduce spawn star memory leak near spawn
Use grid-aligned pixel locaiton for calculating
opacity so each star pixel position has only one
opacity level associated with it, rather than the
multiple that can currently occupy that opacity
range.
2021-03-16 20:51:33 -04:00
Aaron Suen
8f452a48fe Fix digging undiggables at high lag
Apparently (e.g. on Kimapr's servers) it's possible
to dig "undiggable" nodes under extreme lag.

Theory:

- Place something like cobble next to water source
- Dig with infused mattock through all stages

The client will predict a cobble->loose cobble
transition, then let you dig the loose cobble, and
then send the "dig" command to the server, but
on the server side the cobble instead was dug
directly, and then water flowed in to fill the space
where the client thought the loose cobble would
be, so the client digs the water, and you get
flowing water in your inventory.
2021-03-16 20:19:11 -04:00
Aaron Suen
f638499c35 Make stacks automatically "fall into" stacks below
If a stack does a fall check, does not actually fall,
but the stack below is compatible, try to transfer
items downward.
2021-03-15 21:08:49 -04:00
Aaron Suen
c3519ca37c Fix backface culling on most mesh nodes 2021-03-15 19:17:25 -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
5da091816c Falling nodes displace itemstacks
The realism theory is that item stacks are "looser"
and more easily pushed out of the way.  The
gameplay theory is that it's getting annoying
having machines like log or charcoal choppers
getting blocked by items under the falling nodes.

This is also hopefully part of falling-node stack
order reform, to fix that nodes sometimes fall
through each other.
2021-03-14 21:33:40 -04:00
Aaron Suen
cb2251529a Pumwater renewal recipe
Surround stone with pumwater on at least 4 sides.
If surrounded on all 6 faces, should take about
30 minutes on average.
2021-03-14 10:26:46 -04:00
Aaron Suen
7f76c50b7d Clean up old junk strings in translations 2021-03-12 18:27:30 -05:00
Aaron Suen
3bef859c4c Make spawn star relative to static_spawnpoint if set 2021-03-12 07:19:37 -05:00
Aaron Suen
13c633e19e Fix long-standing infinite loop freeze in door logic
Thanks to NoComment for discovering, researching, and reporting.
2021-03-11 08:15:39 -05:00
Aaron Suen
db188d5578 Translation sync, w/ updated copyright date 2021-03-11 08:04:25 -05:00
Aaron Suen
817a9692da Remove redundant door registrations
Don't make door panels out of doors/panels.
2021-03-11 07:58:27 -05:00
Aaron Suen
cbea186eab Remove dungeon cobble name
Simplify things for translations
2021-03-11 07:58:07 -05:00
Aaron Suen
668ea4cb4e Fix copyright dates 2021-03-11 07:36:11 -05:00
Aaron Suen
1513d7eb93 Announce player rejection on next tick
This way, at the time the announcement is made,
the player has already been kicked, and any mods
that check the player list based on this (i.e.
szutil_nowonline) will show the correct list.
2021-03-10 09:38:58 -05:00
Aaron Suen
319a3f7480 Fix dynamic lighting staying after torch goes out 2021-03-09 18:29:32 -05:00
Aaron Suen
d85424211b Merge branch 'master' into dev 2021-03-09 13:53:35 -05:00
Aaron Suen
1bba71f80c Spelling things correctly is helpful 2021-03-09 13:53:23 -05:00
Aaron Suen
95f0fb0ee9 Heaviest image compression option 2021-03-09 08:33:58 -05:00
Aaron Suen
c706163bc1 Model object file optimization
https://github.com/ExeVirus/Compress-Obj
2021-03-09 08:25:01 -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
0b94d56ca8 Merge branch 'master' into dev 2021-03-09 07:56:46 -05:00
Aaron Suen
19e4a225e0 Don't translate player names
- Simplify wield item player owner display
- Don't try to translate player names
2021-03-09 07:51:03 -05:00
Aaron Suen
a4c5eb3b1b Sledgehammer solution to visinvs not loading
Apparently LBMs are just not reliable anymore as
of 5.4, so we'll have to fall back to the at least
eventually-reliable ABM again.
2021-03-09 00:09:05 -05:00
Aaron Suen
ada305338f Log visinv entity retries 2021-03-08 22:26:00 -05:00
Aaron Suen
51fb21175f Retry failed visinv ent creation
Visinv ents sometimes don't appear in MT
5.4+.  I haven't fully investigated the
reason yet, but it could be because the
mapblocks aren't "active" yet when the
LBM is being called and trying to create the
ents, so if the creation fails, try queueing
a retry and see if we catch it later.
2021-03-08 22:06:56 -05:00
Aaron Suen
1f8f151e76 loot is a core mod too 2021-03-08 21:43:47 -05:00
Aaron Suen
3e7554cb7a Retire visinv-tweening branch
The original idea was to have items that are thrown and land into a
stack node smoothly "slide" into place instead of disappearing
momentarily and then reappearing in their final spot, to create a sort
of visual continuity.

However, it turns out that making this actually work is almost
certainly going to be way more complex and fragile than it's worth,
and visinvs have faced new challenges since then anyway, so it's
probably about time to kill this project officially.
2021-03-06 08:59:01 -05:00
Aaron Suen
80238218e0 Retire the "3D eggcorns" branch
- This branch has gone nowhere for a long time.
- Most players agreed they didn't like the new look.
- It would take away texture pack authors' ability to redefine the
  shape of the eggcorn as they can now.
- The existing "flat item extrude mesh" look fits well enough with
  the other artwork in the game that it's not needed.

This was an interesting experiment and so will be preserved in the
project history, but isn't going anywhere so doesn't deserve its own
branch head.
2021-03-06 08:54:40 -05:00
Aaron Suen
b67a984967 Reduce dungeon brickiness
Bricks are a valuable resource, so we don't
want to give too many to the player just
for finding a dungeon.
2021-03-05 21:40:48 -05:00
Aaron Suen
b89f2b7d86 Disable fast dungeon initialization methods
Apparently on top of dungeons regenerating
over top of themselves, caves can also carve
into dungeons, and this may cause issues
with dungeon loot, where the loot nodes are
removed (but w/o the destructor) so that
floating fake visinv entities are sometimes
left floating in place.

Instead, give the engine time to finish
initializing dungeons, and then use only the
ABM (sigh, it's always only ABMs that are
actually eventually reliable after all) to do
delayed initialization.

This kind of sucks if the player starts out in
a dungeon in a new map, but the old "fast"
methods weren't fast enough to prevent a
flash of uninitialized dungeon anyway, so we
just have to hope that the dungeons will get
initialized while on the map horizon before
the player gets close enough for it to matter.

Get rid of the different dungeon cobble now
to mitigate this, also since we no longer
need it to debug uninitialized dungeons.
2021-03-05 21:02:36 -05:00
Aaron Suen
3fe2d58872 Stone brickify dungeons 2021-03-05 20:56:47 -05:00
Aaron Suen
a24cce594b Fix totes in loot table 2021-03-05 20:35:36 -05:00
Aaron Suen
759bca9377 Prevent loot placement on stairs
This interferes with dungeon mobility, and
especially when shelves are placed on
stairs this makes it less believable that
someone could have once lived here and
left it this way.
2021-03-04 23:36:56 -05:00
Aaron Suen
4c39a6b51f Remove debugging chatter 2021-03-04 23:13:15 -05:00
Aaron Suen
ccb86a4552 Merge sort-of-exprimental dungeon loot system 2021-03-04 23:11:24 -05:00
Aaron Suen
40cd5b8d9e Fix spawn star showing over darkening 2021-03-04 23:11:16 -05:00
Aaron Suen
ad6b19a7cc Deeper dungeons have denser loot 2021-03-04 23:05:39 -05:00
Aaron Suen
f18e665ca7 Support loot in high ceiling deep dungeons 2021-03-04 22:56:52 -05:00
Aaron Suen
54a1175e3e Dungeon loot shelf towers 2021-03-04 22:46:28 -05:00