Start rewriting spears using vl_projectile API
This commit is contained in:
parent
d5799c6b21
commit
aa2fac6ef8
|
@ -439,7 +439,27 @@ function SPEAR_ENTITY.on_activate(self, staticdata, dtime_s)
|
||||||
self.object:set_armor_groups({ immortal = 1 })
|
self.object:set_armor_groups({ immortal = 1 })
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_entity("vl_weaponry:spear_entity", SPEAR_ENTITY)
|
local spear_entity = table.copy(mcl_bows.arrow_entity)
|
||||||
|
table.update(spear_entity,{
|
||||||
|
visual = "item",
|
||||||
|
visual_size = {x=-0.5, y=-0.5},
|
||||||
|
textures = {"vl_weaponry:spear_wood"},
|
||||||
|
})
|
||||||
|
table.update(spear_entity._vl_projectile,{
|
||||||
|
behaviors = {
|
||||||
|
vl_projectile.sticks,
|
||||||
|
vl_projectile.burns,
|
||||||
|
vl_projectile.has_tracer,
|
||||||
|
vl_projectile.has_owner_grace_distance,
|
||||||
|
vl_projectile.collides_with_solids,
|
||||||
|
vl_projectile.raycast_collides_with_entities,
|
||||||
|
},
|
||||||
|
pitch_offset = math.pi / 4,
|
||||||
|
})
|
||||||
|
|
||||||
|
vl_projectile.register("vl_weaponry:spear_entity", spear_entity)
|
||||||
|
|
||||||
|
--minetest.register_entity("vl_weaponry:spear_entity", SPEAR_ENTITY)
|
||||||
|
|
||||||
local spear_throw_power = 25
|
local spear_throw_power = 25
|
||||||
|
|
||||||
|
@ -464,10 +484,12 @@ local spear_on_place = function(wear_divisor)
|
||||||
pos.y = pos.y + 1.5
|
pos.y = pos.y + 1.5
|
||||||
local dir = user:get_look_dir()
|
local dir = user:get_look_dir()
|
||||||
local yaw = user:get_look_horizontal()
|
local yaw = user:get_look_horizontal()
|
||||||
local obj = minetest.add_entity({x=pos.x,y=pos.y,z=pos.z}, "vl_weaponry:spear_entity")
|
local obj = vl_projectile.create("vl_weaponry:spear_entity",{
|
||||||
obj:set_velocity({x=dir.x*spear_throw_power, y=dir.y*spear_throw_power, z=dir.z*spear_throw_power})
|
pos = pos,
|
||||||
obj:set_acceleration({x=0, y=-GRAVITY, z=0})
|
dir = dir,
|
||||||
obj:set_yaw(yaw-math.pi/2)
|
owner = user,
|
||||||
|
velocity = spear_throw_power,
|
||||||
|
})
|
||||||
obj:set_properties({textures = {itemstack:get_name()}})
|
obj:set_properties({textures = {itemstack:get_name()}})
|
||||||
local le = obj:get_luaentity()
|
local le = obj:get_luaentity()
|
||||||
le._shooter = user
|
le._shooter = user
|
||||||
|
@ -476,7 +498,7 @@ local spear_on_place = function(wear_divisor)
|
||||||
le._is_critical = false
|
le._is_critical = false
|
||||||
le._startpos = pos
|
le._startpos = pos
|
||||||
le._collectable = true
|
le._collectable = true
|
||||||
le._itemstack = itemstack
|
le._arrow_item = itemstack:get_name()
|
||||||
minetest.sound_play("mcl_bows_bow_shoot", {pos=pos, max_hear_distance=16}, true)
|
minetest.sound_play("mcl_bows_bow_shoot", {pos=pos, max_hear_distance=16}, true)
|
||||||
if user and user:is_player() then
|
if user and user:is_player() then
|
||||||
if obj:get_luaentity().player == "" then
|
if obj:get_luaentity().player == "" then
|
||||||
|
|
Loading…
Reference in New Issue