add latest changes from dev

This commit is contained in:
TenPlus1 2020-03-07 15:05:55 +00:00
parent 1f39b7b2c1
commit 5b68ce330a
3 changed files with 27 additions and 30 deletions

View File

@ -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.