Commit Graph

12896 Commits

Author SHA1 Message Date
the-real-herowl
8f1521863a Merge pull request 'Projectile Refactor' (#4433) from projectile-refactor into master
Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4433
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-12-26 04:27:31 +01:00
the-real-herowl
2860832890 Allow changing maximum projectile time live 2024-12-26 03:00:38 +01:00
the-real-herowl
67f45bd6fb Fix potion registering not working with other mods 2024-12-25 23:25:19 +01:00
teknomunk
ddba0408e1 Correct behavior of projectiles sticking in players forcing the projectile to survive 2024-12-25 11:52:24 +01:00
teknomunk
7de503770f Address review concerns 2024-12-25 11:52:24 +01:00
teknomunk
2732976404 Move fireball redirection service award check to ghast from fireball 2024-12-25 11:52:24 +01:00
teknomunk
5c1881753b Change object alive check so that projectiles are still removed when the object dies 2024-12-25 11:52:24 +01:00
teknomunk
60e3c139cc Change mcl_mobs to use mcl_util.remove_entity() when killing mobs, add guard in vl_projectile against removed mobs 2024-12-25 11:52:24 +01:00
teknomunk
b8d2f67dfd Update api.md with rotational offset fields 2024-12-25 11:52:24 +01:00
teknomunk
0d82c8f725 Replace magic numbers with named constants, add missing 'local' 2024-12-25 11:52:24 +01:00
teknomunk
bb934d09ee Break long lines, add space between functions in vl_projectile/init.lua 2024-12-25 11:52:24 +01:00
teknomunk
bc321ccae4 Add _vl_projectile.can_punch() to mob API and move hard-coded entity behavior from arrow to rover code 2024-12-25 11:52:24 +01:00
teknomunk
a2167e7dfc Change to use nil radius in within_limits(pos,radius) check 2024-12-25 11:52:24 +01:00
teknomunk
88cd54a03b Add reference to Projectile API documentatino from mob API documentation 2024-12-25 11:52:24 +01:00
teknomunk
5db55dde3c Update { ... } to {...} 2024-12-25 11:52:24 +01:00
teknomunk
0d8f7515c6 Update minetest->Luanti in affected documentation, update minetest. -> core. in affected code, factor out common subexpressions in mods/ITEMS/vl_projectile/init.lua 2024-12-25 11:52:24 +01:00
teknomunk
7c8da2eba7 Rework self.timer and _owner collision conditions 2024-12-25 11:52:24 +01:00
teknomunk
6566304b43 Fix bug in solid node collision code (not updating _last_velocity, making delta_v larger if length was small) 2024-12-25 11:52:24 +01:00
teknomunk
5f0244ebb1 Use creative arrow collection behavior from master (except they make pickup noises in creative), make all creative arrows infinity 2024-12-25 11:52:24 +01:00
teknomunk
537f49d57e Rearrange conditions to minimize executed code 2024-12-25 11:52:24 +01:00
teknomunk
51ebb26abe Stop infinite loop of arrows stuck in yourself punching you 2024-12-25 11:52:24 +01:00
teknomunk
73c66dc888 Sound fix, preserve _itemstring as well 2024-12-25 11:52:24 +01:00
teknomunk
1e165155d8 Add _arrow_item to list of perserved fields 2024-12-25 11:52:24 +01:00
teknomunk
f426d96ef5 Make arrows (and all their derivatives) preserve collectable and entity properties across world unload/load 2024-12-25 11:52:24 +01:00
teknomunk
d42797d48d Make stuck arrows stop processing all other behaviors 2024-12-25 11:52:24 +01:00
teknomunk
f1a0c04f52 Make it possible to pick up arrows in creative mode 2024-12-25 11:52:24 +01:00
teknomunk
17f063c4e5 Fix tipped arrow behavior, remove debug code 2024-12-25 11:52:24 +01:00
teknomunk
33c70fd677 Rework projectile pickup code (to prevent item duplication bugs), always update _last_pos, short circuit processing behaviors if the entity was removed by a behavior but didn't report it 2024-12-25 11:52:24 +01:00
teknomunk
d1fe8de1b6 Fix crash when respawning 2024-12-25 11:52:24 +01:00
teknomunk
174cb5fe1c Let arrows stick in players 2024-12-25 11:52:24 +01:00
teknomunk
aa8cec9911 Implement mcl_util.remove_entity() and convert projectile code to use it 2024-12-25 11:52:24 +01:00
teknomunk
df8db4aa39 Add pitch and yaw offset support to vl_projectile 2024-12-25 11:52:24 +01:00
teknomunk
0d95c167cf Correct self-collision for lingering/splash potions 2024-12-25 11:52:24 +01:00
teknomunk
2fcd4ff69f Fix condition on node collision for mob projectiles 2024-12-25 11:52:24 +01:00
teknomunk
1df10c8dd3 Correct damage for mob projectiles 2024-12-25 11:52:24 +01:00
teknomunk
efa6e7d2d0 Move arrow self-collision grace logic to vl_projectile then apply to mob projectiles and splash and linger potions, allow entity luaentity to be passed to mcl_util.get_entity_id() 2024-12-25 11:52:24 +01:00
teknomunk
cf71d2981a Fix crash when firing rocket arrows 2024-12-25 11:52:24 +01:00
teknomunk
2d56deacf6 Replace _puncher with _owner, rework projectile code to make _owner a string, copy mcl_util.gen_uuid() from minecart branch, add mcl_util.get_entity_id(), fix crash 2024-12-25 11:52:24 +01:00
teknomunk
96abcd2bcc Remove debug dump, move maximum time to live to vl_projectile 2024-12-25 11:52:24 +01:00
teknomunk
3df59a47b0 Document vl_projectile.replace_with_item_drop 2024-12-25 11:52:24 +01:00
teknomunk
c857d66f5d Move projectile stick logic into vl_projectile 2024-12-25 11:52:24 +01:00
teknomunk
32d37b30bf Move tracer to vl_projectile 2024-12-25 11:52:24 +01:00
teknomunk
f265f5b52d Change mcl_bows to use standard vl_projectile on_step handler, move burning behavior to vl_projectile 2024-12-25 11:52:24 +01:00
teknomunk
8e4f870a46 Move arrow-node logic out of mcl_bows/arrow.lua and into the node definitions under _vl_projectile.on_collide 2024-12-25 11:52:24 +01:00
teknomunk
ba244fa930 Remove secondary collision check in mcl_bows/arrow.lua (it was just hitting grass) 2024-12-25 11:52:24 +01:00
teknomunk
d284df907e Remove code with no effect other than emitting a warning 2024-12-25 11:52:24 +01:00
teknomunk
c3275eb0b7 Resolve luacheck findings 2024-12-25 11:52:24 +01:00
teknomunk
4b73839346 Fix crashes in mcl_throwing 2024-12-25 11:52:24 +01:00
teknomunk
dc312ee012 Fix crash when hit with an arrow that is not piercing 2024-12-25 11:52:24 +01:00
the-real-herowl
a1c7bb55a1 Rockets and piercing arrows fixed
They both work properly now.
2024-12-25 11:52:24 +01:00