Commit Graph

148 Commits

Author SHA1 Message Date
teknomunk
0b62c827aa Remove has_room debug data 2024-09-16 13:32:06 +02:00
teknomunk
626bdd13d8 Change several places where mobs are created to use mcl_mobs.spawn() instead of minetest.add_entity() 2024-09-16 13:32:06 +02:00
teknomunk
31a3788ce1 Address review comments 2024-09-16 13:32:06 +02:00
teknomunk
6c50e0a82b Fix volume used for room check during spawn, make mcl_mobs.spawn check for room before adding entity, change iron golems and mob spawners to use mcl_mobs.spawn 2024-09-16 13:32:06 +02:00
teknomunk
8ef08128b1 Add short circuit if sub-node space check isn't possible: 2024-09-16 13:32:06 +02:00
teknomunk
15efd00a29 Replace second call to minetest.find_nodes_in_area with checking top layer for matching nodes, change p2 calculation to use ceil(value) - 1, fix dx*dy*dz calculation 2024-09-16 13:32:06 +02:00
teknomunk
fa3df0d8c6 Add check for presence of minetest.get_node_boxes before attempting sub-node space checks 2024-09-16 13:32:06 +02:00
teknomunk
4d58f63485 Implement partial node spawning check 2024-09-16 13:32:06 +02:00
teknomunk
fa09b65010 Add most of the code for sub-node accurate spawning volume check (needs a function to calculate bounding box height of nodes) 2024-09-16 13:32:06 +02:00
teknomunk
d8d39ffd52 Add spawnbox parameter that overrides collision box for spawn volume checks 2024-09-16 13:32:06 +02:00
teknomunk
b6aafedf25 Fix space check function has_room() in mcl_mobs/spawning.lua so it allows spiderproofing 2024-09-16 13:32:06 +02:00
kno10
f9290c6493 drop entirely 2024-09-15 22:21:23 +02:00
kno10
52124bd201 FIX spawning 2024-09-15 22:21:23 +02:00
kno10
7d763b7257 more mob spawn code improvements 2024-09-09 20:33:03 +02:00
kno10
bdd3ae2cd8 avoid spawning ground mobs in shallow water 2024-09-09 20:33:03 +02:00
kno10
2e1df31399 Refactor and clean up spawn checks, optimize. 2024-09-09 20:33:03 +02:00
kno10
382a35bb44 delay biome check when spawning 2024-09-09 20:33:03 +02:00
kno10
77382d930e Typo in setting name, default should be false (#4492)
Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4492
Reviewed-by: Mikita Wiśniewski <rudzik8@protonmail.com>
Co-authored-by: kno10 <kno10@noreply.git.minetest.land>
Co-committed-by: kno10 <kno10@noreply.git.minetest.land>
2024-08-03 17:52:51 +02:00
kno10
80a6a6efb0 Choose direction vectors uniformly for spawning (#4467)
The previous code was biased towards placing mobs on top or below the
player, because it chose the theta inclination angle uniformly,
but the sphere is more narrow at the top and bottom.

This code is also simpler.

Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4467
Reviewed-by: teknomunk <teknomunk@protonmail.com>
Co-authored-by: kno10 <erich.schubert@gmail.com>
Co-committed-by: kno10 <erich.schubert@gmail.com>
2024-07-31 02:30:29 +02:00
teknomunk
ecf12b85cc Fix undefined global warning for variable distance in spawning code (#4348)
Fixes the warning about an undeclared global that occurs the first time a mob attempts to spawn.

Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4348
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: teknomunk <teknomunk@protonmail.com>
Co-committed-by: teknomunk <teknomunk@protonmail.com>
2024-05-31 09:54:59 +00:00
the-real-herowl
651fb74be1 Fix a crash 2024-05-22 21:03:43 +02:00
the-real-herowl
7cd0cfede8 Further (mcl_)luck functionality
* XP from mob breeding impacted by luck
* eye of ender explosion chance impacted by luck
* fishing loot impacted by luck
* melee critical damage impacted by luck
* also fixed 2 scripts marked as "executable"
2024-05-22 21:02:25 +02:00
teknomunk
0279dde3d0 Limit check to +/- 16 nodes from goal position (maximum 33 nodes, 3 map blocks) 2024-05-22 15:25:38 +00:00
teknomunk
2a014ca79c Change y range calculation to use outer zone distance and not middle to let mobs spawn far away from the player 2024-05-22 15:25:38 +00:00
teknomunk
1bc0a0b411 Implement a continuous distribution function using a piecewise linear function for selecting the distance from the player to spawn mobs with, fix crash when no nodes are found under air at the goal position 2024-05-22 15:25:38 +00:00
teknomunk
bd6c8d35c3 Change y_min/y_max calculations 2024-05-22 15:25:38 +00:00
teknomunk
3850fc1a9f Limit y range to the same hemisphere (top/bottom) 2024-05-22 15:25:38 +00:00
teknomunk
74cf14ef0f Close if statement 2024-05-22 15:25:38 +00:00
teknomunk
3a4a8799ea Change mob spawning randomization from polar coordinates to spherical coordinates, move position validation code from find_spawning_position to get_next_mob_spawn_pos, minimize code remaining in find_spawning_position 2024-05-22 15:25:38 +00:00
ancientmarinerdev
ac4aff12ea Enable custom biome check in spawning. This allows mods to overide the check in singlenode and other mapgens that do not support biome API. (#4217)
Some older mapgens do not support the MT biome API. Singlenode and I think v6 also. This allows mods to overide the biomecheck in mob spawning to return valid biomenames and customise this.

Reviewed-on: https://git.minetest.land/MineClone2/MineClone2/pulls/4217
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: ancientmarinerdev <ancientmariner_dev@proton.me>
Co-committed-by: ancientmarinerdev <ancientmariner_dev@proton.me>
2024-04-01 15:40:14 +00:00
bakawun
4d90dfab0e Spawning: add a comment to clarify what the random select is doing 2024-01-10 11:22:13 +01:00
bakawun
b2b63266b7 Spawning: break mob selection loop when out of bounds 2024-01-10 11:22:13 +01:00
bakawun
d151e79fb9 Spawning: remove unused summary_chance 2024-01-10 11:22:13 +01:00
bakawun
e419e6d63b Spawning: remove another unused perlin var 2024-01-10 11:22:13 +01:00
cora
55517154bd Mob spawning: Remove unused vars 2024-01-10 11:22:13 +01:00
bakawun
402e4e7b79 Spawning: fix random weighted choice 2024-01-10 11:22:13 +01:00
codiac
4cf865a36c Fix passive threshold in nether and end (#4030)
Fix light check for passive mobs in other dimensions. It is apparently the same in all dimensions. If a mob has it's own spawn_check function then that should be used regardless of it's type.

Fixes #4029

Reviewed-on: https://git.minetest.land/MineClone2/MineClone2/pulls/4030
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: codiac <codiac@inbox.lv>
Co-committed-by: codiac <codiac@inbox.lv>
2023-11-28 02:45:18 +00:00
codiac
d2d7887e0f Handle bat and slime light checks 2023-09-21 14:53:32 +10:00
codiac
bf4c7e1913 Allow non monsters spawns too 2023-09-20 09:24:51 +10:00
codiac
11e3674926 Use MC 1.18 light levels to control mob spawning 2023-09-19 11:18:40 +10:00
ancientmarinerdev
c65f8c9e51 Improved early game spawn balance 2023-06-01 20:05:25 +00:00
ancientmarinerdev
812269264b Add in caps for underground water and axolotl 2023-06-01 20:05:25 +00:00
ancientmarinerdev
afb4540408 Clean up 2023-06-01 20:05:25 +00:00
ancientmarinerdev
ae32ce4a0a Split hostile and non-hostile mob caps 2023-06-01 20:05:25 +00:00
ancientmarinerdev
ea4ea3f05e Standardise despawn logic and add asserts. Add persistent flag for mobs that have been interacted with. 2023-05-09 22:24:40 +00:00
ancientmarinerdev
bd579314ba Remove logging and clean up 2023-03-19 02:44:35 +00:00
ancientmarinerdev
e7449a65d8 Fix check_position and change spawn check to stages 2023-03-19 02:44:35 +00:00
ancientmarinerdev
a25cced40e Remove comment now resolved 2023-03-04 02:18:36 +00:00
ancientmarinerdev
86a85bb487 Fix spawn egg crashes in different dimensions 2023-03-04 01:38:51 +00:00
GuyLiner
cafc16c41c Fix #3484
If a mob was not found in the spawn_dictionary or the non_spawn
dictionary and you tried to use a spawn egg to spawn that mob, the game
would crash. This commit prevents that from happening by adding a check
for mobs that don't exist, and minetest.log throws an error.
2023-02-26 11:22:21 -05:00