add latest changes from dev
This commit is contained in:
parent
1f39b7b2c1
commit
5b68ce330a
57
init.lua
57
init.lua
@ -159,9 +159,8 @@ local function entity_physics(pos, radius, drops)
|
||||
|
||||
local damage = (4 / dist) * radius
|
||||
if obj:is_player() then
|
||||
-- currently the engine has no method to set
|
||||
-- player velocity. See #2960
|
||||
-- instead, we knock the player back 1.0 node, and slightly upwards
|
||||
-- we knock the player back 1.0 node, and slightly upwards
|
||||
-- TODO: switch to add_player_velocity() introduced in 5.1
|
||||
-- local dir = vector.normalize(vector.subtract(obj_pos, pos))
|
||||
-- local moveoff = vector.multiply(dir, dist + 1.0)
|
||||
-- local newpos = vector.add(pos, moveoff)
|
||||
@ -170,31 +169,35 @@ local function entity_physics(pos, radius, drops)
|
||||
|
||||
obj:set_hp(obj:get_hp() - damage)
|
||||
else
|
||||
local do_damage = true
|
||||
local do_knockback = true
|
||||
local entity_drops = {}
|
||||
local luaobj = obj:get_luaentity()
|
||||
local objdef = minetest.registered_entities[luaobj.name]
|
||||
|
||||
if objdef and objdef.on_blast then
|
||||
do_damage, do_knockback, entity_drops = objdef.on_blast(luaobj, damage)
|
||||
end
|
||||
-- object might have disappeared somehow
|
||||
if luaobj then
|
||||
local do_damage = true
|
||||
local do_knockback = true
|
||||
local entity_drops = {}
|
||||
local objdef = minetest.registered_entities[luaobj.name]
|
||||
|
||||
if do_knockback then
|
||||
local obj_vel = obj:get_velocity() or {x=0,y=0,z=0}
|
||||
obj:set_velocity(calc_velocity(pos, obj_pos,
|
||||
obj_vel, radius * 10))
|
||||
end
|
||||
if do_damage then
|
||||
if not obj:get_armor_groups().immortal then
|
||||
obj:punch(obj, 1.0, {
|
||||
full_punch_interval = 1.0,
|
||||
damage_groups = {fleshy = damage},
|
||||
}, nil)
|
||||
if objdef and objdef.on_blast then
|
||||
do_damage, do_knockback, entity_drops = objdef.on_blast(luaobj, damage)
|
||||
end
|
||||
|
||||
if do_knockback then
|
||||
local obj_vel = obj:get_velocity()
|
||||
obj:set_velocity(calc_velocity(pos, obj_pos,
|
||||
obj_vel, radius * 10))
|
||||
end
|
||||
if do_damage then
|
||||
if not obj:get_armor_groups().immortal then
|
||||
obj:punch(obj, 1.0, {
|
||||
full_punch_interval = 1.0,
|
||||
damage_groups = {fleshy = damage},
|
||||
}, nil)
|
||||
end
|
||||
end
|
||||
for _, item in pairs(entity_drops) do
|
||||
add_drop(drops, item)
|
||||
end
|
||||
end
|
||||
for _, item in pairs(entity_drops) do
|
||||
add_drop(drops, item)
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -420,12 +423,6 @@ minetest.register_node("tnt:boom", {
|
||||
walkable = false,
|
||||
drop = {},
|
||||
groups = {dig_immediate = 3},
|
||||
-- on_construct = function(pos)
|
||||
-- minetest.get_node_timer(pos):start(0.4)
|
||||
-- end,
|
||||
-- on_timer = function(pos, elapsed)
|
||||
-- minetest.remove_node(pos)
|
||||
-- end,
|
||||
-- unaffected by explosions
|
||||
on_blast = function() end,
|
||||
})
|
||||
|
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user