Correct behavior when ignore_gravity flag is true, fix mob projectile velocity calculation, add missing entity_def lookup

This commit is contained in:
teknomunk 2024-09-11 08:34:05 -05:00
parent cd11f1c588
commit f7c20748e7
2 changed files with 5 additions and 3 deletions

@ -1242,8 +1242,8 @@ function mob_class:do_states_attack (dtime)
owner = self, owner = self,
}) })
ent = arrow:get_luaentity() ent = arrow:get_luaentity()
v = ent.velocity or v
ent.switch = 1 ent.switch = 1
v = ent.velocity or 1
-- important for mcl_shields -- important for mcl_shields
ent._shooter = self.object ent._shooter = self.object
@ -1255,7 +1255,8 @@ function mob_class:do_states_attack (dtime)
-- offset makes shoot aim accurate -- offset makes shoot aim accurate
local amount = vector.length(vec) local amount = vector.length(vec)
vec = vector.multiply(vec, v / vector.length(vec)) vec.y = vec.y + self.shoot_offset
vec = vector.multiply(vec, v / amount)
if self.shoot_arrow then if self.shoot_arrow then
vec = vector.normalize(vec) vec = vector.normalize(vec)

@ -21,7 +21,7 @@ function mod.projectile_physics(obj, entity_def, v, a)
v = v or obj:get_velocity() v = v or obj:get_velocity()
a = a or vector.zero() a = a or vector.zero()
if not entity_def.ignore_gravity then if not entity_def._vl_projectile.ignore_gravity then
a = a + vector.new(0,-GRAVITY,0) a = a + vector.new(0,-GRAVITY,0)
end end
@ -372,6 +372,7 @@ function mod.create(entity_id, options)
a = vector.zero() a = vector.zero()
v = a v = a
end end
local entity_def = minetest.registered_entities[entity_id]
mod.projectile_physics(obj, entity_def, v, a) mod.projectile_physics(obj, entity_def, v, a)
-- Update projectile parameters -- Update projectile parameters