From 3b954ccda468f47e02a6515ed73074e965ca70e6 Mon Sep 17 00:00:00 2001 From: npx Date: Wed, 27 Apr 2016 00:03:48 +0200 Subject: [PATCH] Modified the explosion function to damage also the player --- nssm_api.lua | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/nssm_api.lua b/nssm_api.lua index 2708926..8361f0a 100644 --- a/nssm_api.lua +++ b/nssm_api.lua @@ -93,23 +93,18 @@ function nssm:explosion(pos, exp_radius, fire) --Damages entities around (not the player) local objects = minetest.env:get_objects_inside_radius(pos, exp_radius) for _,obj in ipairs(objects) do - if (obj:is_player()) then - elseif (obj:get_luaentity() and obj:get_luaentity().name ~= "__builtin:item") then - local obj_p = obj:getpos() - local vec = {x=obj_p.x-pos.x, y=obj_p.y-pos.y, z=obj_p.z-pos.z} - local dist = (vec.x^2+vec.y^2+vec.z^2)^0.5 - local damage = -exp_radius*dist+exp_radius^2 - obj:set_hp(obj:get_hp()-damage) - if (obj:get_hp() <= 0) then - if (not obj:is_player()) and obj:get_entity_name() ~= "nssm:kamehameha" then - obj:remove() - end + local obj_p = obj:getpos() + local vec = {x=obj_p.x-pos.x, y=obj_p.y-pos.y, z=obj_p.z-pos.z} + local dist = (vec.x^2+vec.y^2+vec.z^2)^0.5 + local damage = (-exp_radius*dist+exp_radius^2)*2 + obj:set_hp(obj:get_hp()-damage) + if (obj:get_hp() <= 0) then + if (not obj:is_player()) then + obj:remove() end - --minetest.chat_send_all("HP: "..obj:get_hp()) end end - --damages blocks around and if necessary put some fire pos = vector.round(pos) -- voxelmanip doesn't work properly unless pos is rounded ?!?! local vm = VoxelManip()