Fix player self-damage

This commit is contained in:
Lars 2022-03-03 15:48:40 -08:00
parent ad59ab40e4
commit da2a8c8b32

@ -24,7 +24,7 @@ initial_properties = {
visual_size = {x=0.75, y=0.75}, visual_size = {x=0.75, y=0.75},
textures = {"rangedweapons:shot_bullet_visual"}, textures = {"rangedweapons:shot_bullet_visual"},
lastpos = {}, lastpos = {},
collide_with_objects = false, collide_with_objects = true,
collisionbox = {-0.0025, -0.0025, -0.0025, 0.0025, 0.0025, 0.0025}, collisionbox = {-0.0025, -0.0025, -0.0025, 0.0025, 0.0025, 0.0025},
}, },
} }
@ -60,7 +60,7 @@ end end
self.timer = self.timer + dtime self.timer = self.timer + dtime
if self.timer > 0.06 then if self.timer >= 0 then
self.object:set_properties({collide_with_objects = true}) self.object:set_properties({collide_with_objects = true})
self.object:set_properties({collisionbox = {-size, -size, -size, size, size, size}}) self.object:set_properties({collisionbox = {-size, -size, -size, size, size, size}})
end end
@ -255,7 +255,7 @@ end
end end
if moveresult.collisions[1].type == "object" then if moveresult.collisions[1].type == "object" and (not moveresult.collisions[1].object:is_player() or moveresult.collisions[1].object:get_player_name() ~= self.owner) then
local actualDamage = self.damage or {fleshy=1} local actualDamage = self.damage or {fleshy=1}
@ -268,44 +268,43 @@ local dps = self.dps or 0
local skill = self.skill_value or 1 local skill = self.skill_value or 1
for _, dmg in pairs(actualDamage) do for _, dmg in pairs(actualDamage) do
damage[_] = actualDamage[_] damage[_] = actualDamage[_]
end end
if moveresult.collisions[1].object:is_player() then if moveresult.collisions[1].object:is_player() then
for _, player_dmg in pairs(damage) do for _, player_dmg in pairs(damage) do
damage[_] = damage[_] * rweapons_player_dmg_multiplier damage[_] = damage[_] * rweapons_player_dmg_multiplier
end end
if self.object:get_pos().y - moveresult.collisions[1].object:get_pos().y > 1.5 then if self.object:get_pos().y - moveresult.collisions[1].object:get_pos().y > 1.5 then
for _, hs_dmg in pairs(damage) do for _, hs_dmg in pairs(damage) do
damage[_] = damage[_] * rweapons_headshot_dmg_multiplier damage[_] = damage[_] * rweapons_headshot_dmg_multiplier
end end
end end
knockback = damage.knockback or 0 knockback = damage.knockback or 0
projectile_kb(moveresult.collisions[1].object,self.object,knockback) projectile_kb(moveresult.collisions[1].object,self.object,knockback)
else else
for _, mob_dmg in pairs(damage) do for _, mob_dmg in pairs(damage) do
damage[_] = damage[_] * rweapons_mob_dmg_multiplier damage[_] = damage[_] * rweapons_mob_dmg_multiplier
end end
end end
for _, bonus_dmg in pairs(damage) do for _, bonus_dmg in pairs(damage) do
damage[_] = (damage[_]*skill) + (self.dps*self.timer) damage[_] = (damage[_]*skill) + (self.dps*self.timer)
end end
--minetest.chat_send_all(critEffc) --minetest.chat_send_all(critEffc)
if math.random(1,100) <= crit+((skill*10)-10) then if math.random(1,100) <= crit+((skill*10)-10) then
for _, critDmg in pairs(damage) do for _, critDmg in pairs(damage) do
damage[_] = damage[_] * critEffc damage[_] = damage[_] * critEffc
end end
entpos = self.object:get_pos() entpos = self.object:get_pos()
minetest.add_particle ({ minetest.add_particle ({
pos = entpos, velocity = 0, acceleration = {x=0, y=5, z=0}, pos = entpos, velocity = 0, acceleration = {x=0, y=5, z=0},
expirationtime = 0.75, size = 12, collisiondetection = false, expirationtime = 0.75, size = 12, collisiondetection = false,
vertical = false, texture = "rangedweapons_crit.png", glow = 30,}) vertical = false, texture = "rangedweapons_crit.png", glow = 30,})
hit_texture = "rangedweapons_crithit.png" hit_texture = "rangedweapons_crithit.png"
end end
moveresult.collisions[1].object:punch(owner, 1.0, { moveresult.collisions[1].object:punch(owner, 1.0, {
full_punch_interval = 1.0, full_punch_interval = 1.0,