Commit graph

924 commits

Author SHA1 Message Date
kno10
36f5abc4df Fix spawning ignoring mob cap (#4891)
Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4891
Reviewed-by: teknomunk <teknomunk@protonmail.com>
Reviewed-by: Mikita Wiśniewski <rudzik8@protonmail.com>
Co-authored-by: kno10 <erich.schubert@gmail.com>
Co-committed-by: kno10 <erich.schubert@gmail.com>
2025-01-25 14:22:30 +01:00
kno10
a0fe68a6f1 Tiny fix in door pathfinding (#4893)
Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4893
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: kno10 <erich.schubert@gmail.com>
Co-committed-by: kno10 <erich.schubert@gmail.com>
2025-01-24 22:32:42 +01:00
teknomunk
9474da5e75 Fix crash 2025-01-20 18:37:09 +01:00
teknomunk
e5279a2723 Rework fixed_timestep() to be more accurate and remove maximum spawn cycle time 2025-01-20 18:37:09 +01:00
teknomunk
ed5a08ba36 Rework build_state_for_position so that more cases will return early and avoid computations and a table allocation, replace find_spawning_position() with get_next_spawning_position(), add (commented out) notes for tracking which cases lead to mobs not spawning to help guide optimization 2025-01-20 18:37:09 +01:00
teknomunk
94da5fe813 Replace minetest. with core., fix percentage calculation 2025-01-20 18:37:09 +01:00
teknomunk
f59beb9961 Address review comments 2025-01-20 18:37:09 +01:00
teknomunk
60d6d252b1 Further optimizations: pairs() -> for i=, remove most mcl_log() calls, remove unused parameter in mob_cap_space() 2025-01-20 18:37:09 +01:00
teknomunk
85155f8cd5 Convert state hash to number from string, exclude core.add_entity() time from profiling 2025-01-20 18:37:09 +01:00
teknomunk
23c04a6735 Add per-spawn-attempt timing calculation 2025-01-20 18:37:09 +01:00
teknomunk
29717808cd Add built-in mob spawn profiling 2025-01-20 18:37:09 +01:00
teknomunk
8cabee0621 Localize minetest.get_node() 2025-01-20 18:37:09 +01:00
teknomunk
ce993654f3 Finish converting to use localized version of math.* functions 2025-01-20 18:37:09 +01:00
teknomunk
e37c8a9530 Fix rebase 2025-01-20 18:37:09 +01:00
teknomunk
8f0fdfe03a Move registered_entity[] check to spawn registration, use localized math.* functions, fix typo, add error messages to asserts in spawn registration 2025-01-20 18:37:09 +01:00
teknomunk
43321083f7 Remove redundant room check 2025-01-20 18:37:09 +01:00
teknomunk
57f3ad4fd7 Change state serialization to use table.concat() with a persistent workspace table 2025-01-20 18:37:09 +01:00
teknomunk
9a34c124c1 Only create biomes_lookup if one wasn't provided in the definition 2025-01-20 18:37:09 +01:00
teknomunk
3a54c67c4c Remove unused table.find(), add comment on fallthru, fix typo in log message, switch to using mcl_log for two log messages, set guardians to no biomes (structures only) 2025-01-20 18:37:09 +01:00
teknomunk
374db5ad24 Add seethru node list support to mcl_mobs.check_line_of_sight 2025-01-20 18:37:09 +01:00
teknomunk
299c209b60 Fix lava spawns 2025-01-20 18:37:09 +01:00
teknomunk
f4e2275ae1 Remove development logging, correct luacheck findings 2025-01-20 18:37:09 +01:00
teknomunk
5844dcfff9 Rewrite mcl_mobs:spawn_specific() in terms of mcl_mobs:spawn_setup() and mark as deprecated, cleanup mcl_mobs:spawn_setup(), compute cumulative chance once when the spawn list is created instead of every time a spawn is attempted 2025-01-20 18:37:09 +01:00
teknomunk
886098e5f4 Remove comment superceded by type annotations, give explicit values for mcl_mobs.SpawnDef.dimension 2025-01-20 18:37:09 +01:00
teknomunk
09eb6bde1e Fix crashes in generating state serialization, make adaptive spawn attempt rate actually work 2025-01-20 18:37:09 +01:00
teknomunk
2626a475ee Redo guardian spawn registration (copy biomes from glow squid) 2025-01-20 18:37:09 +01:00
teknomunk
8957bf300c Make sure all parameters to spawn_specific() get stored in the spawn definition, change select_random_mob_def() to remove possible error() call 2025-01-20 18:37:09 +01:00
teknomunk
9aade4034f Add lava conditions 2025-01-20 18:37:09 +01:00
teknomunk
b4cd5fe37c Add biome_lookup table to SpawnDef, type annotation for mcl_mobs.SpawnDef class 2025-01-20 18:37:09 +01:00
teknomunk
511434a923 Replace compute_hash with a string.format(), move spawn_names into logging block, remove argument aliasing in get_spawn_list(), add SpawnState type annotation 2025-01-20 18:37:09 +01:00
teknomunk
bc5e5f7262 Inline most spawn definition fields, remove table.insert() 2025-01-20 18:37:09 +01:00
teknomunk
0b07f449da Resolve linter warnings, replace get_item_group with groups.* lookups 2025-01-20 18:37:09 +01:00
teknomunk
e4b5673642 Resolve some review comments 2025-01-20 18:37:09 +01:00
teknomunk
35fafc9928 Resolve several lua-language-server findings, add missing get_item_group, remove spawn_def usage (didn't exist where attempted to be used) 2025-01-20 18:37:09 +01:00
teknomunk
add61ad6b2 Change main spawning look to use adaptive delay based on last run with maximum period of 2.5 seconds, put some logging behind a flag, remove unused constants 2025-01-20 18:37:09 +01:00
teknomunk
8b13b36a6a Move raycast_line_of_sight function to mcl_mobs/functions.lua, rework group spawn point selection code, add line of sight check to group origin 2025-01-20 18:37:09 +01:00
teknomunk
8c42694ac9 Change logging default and one log message 2025-01-20 18:37:09 +01:00
teknomunk
78aa99eacd Refactor spawn_group() so that each spawn point can only be used once and protection is respected 2025-01-20 18:37:09 +01:00
teknomunk
97a674e8c9 Fix passive spawning, disable some debug logging 2025-01-20 18:37:09 +01:00
teknomunk
28a058f8b7 Stop mobs that require ground from spawning in water, remove unused code and variables, some minor microoptimizations 2025-01-20 18:37:09 +01:00
teknomunk
61c9f9eade Drop biome group generation and replace with spawn state checks for much improved performance (but has regressions), change logging of failure to find spawn point, increase spawn attempts to 4 per second with no position retries and only a single mob or group per attempt 2025-01-20 18:37:09 +01:00
teknomunk
8af26e2e75 Replace biome_check() with table.find() 2025-01-20 18:37:09 +01:00
teknomunk
b636a2e831 Implement generating biome groups for spawning (not actually used yet) 2025-01-20 18:37:09 +01:00
teknomunk
0cb2ef8957 Initial changes to spawn_check() and spawn_a_mob(), add profiling for mob spawning 2025-01-20 18:37:09 +01:00
kno10
36bededf5d use helper function for cleaner code 2025-01-09 13:01:25 +01:00
kno10
f8a6172ca3 actually support spawnbox, drop old collisionbox workaround 2025-01-09 13:01:25 +01:00
kno10
2c2e5d7dc8 allow spawning medium size mobs in 2x2 2025-01-09 13:01:25 +01:00
kno10
a4fa9c1913 make fly_in a map 2025-01-09 13:01:25 +01:00
kno10
ac1333be94 spawn room check that tolerates plants 2025-01-09 13:01:25 +01:00
Mikita Wiśniewski
2df6f7d5d4 Fix jockey spawn room check (#4812)
Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4812
Reviewed-by: kno10 <kno10@noreply.git.minetest.land>
Co-authored-by: Mikita Wiśniewski <rudzik8@protonmail.com>
Co-committed-by: Mikita Wiśniewski <rudzik8@protonmail.com>
2025-01-05 02:23:48 +01:00