From aaf861e497c344c1907510c2c158a60d47c9ff1c Mon Sep 17 00:00:00 2001 From: Lars Date: Tue, 3 May 2022 20:15:46 -0700 Subject: [PATCH] Make ricochet configurable. --- ammo.lua | 44 ++++++++++++++++++++++++-------------------- settingtypes.txt | 5 ++++- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/ammo.lua b/ammo.lua index 100a126..5d043e3 100644 --- a/ammo.lua +++ b/ammo.lua @@ -176,31 +176,35 @@ end if minetest.get_item_group(minetest.get_node(moveresult.collisions[1].node_pos).name, "level") > 1 then -self.object:set_velocity(moveresult.collisions[1].old_velocity) + if minetest.settings:get_bool("rangedweapons_bullet_ricochet", true) then + self.object:set_velocity(moveresult.collisions[1].old_velocity) -if sparks > 0 then -make_sparks(self.object:get_pos()) -end + if sparks > 0 then + make_sparks(self.object:get_pos()) + end -local objVel = moveresult.collisions[1].old_velocity -local objRot = self.object:get_rotation() + local objVel = moveresult.collisions[1].old_velocity + local objRot = self.object:get_rotation() -if objRot and objVel then -if moveresult.collisions[1].axis == "x" then -self.object:set_rotation({x=0,y=objRot.y,z=objRot.z+3}) -self.object:set_velocity({x=objVel.x*-1,y=objVel.y,z=objVel.z}) -end + if objRot and objVel then + if moveresult.collisions[1].axis == "x" then + self.object:set_rotation({x=0,y=objRot.y,z=objRot.z+3}) + self.object:set_velocity({x=objVel.x*-1,y=objVel.y,z=objVel.z}) + end -if moveresult.collisions[1].axis == "z" then -self.object:set_rotation({x=0,y=objRot.y,z=objRot.z+3}) -self.object:set_velocity({x=objVel.x,y=objVel.y,z=objVel.z*-1}) -end - -if moveresult.collisions[1].axis == "y" then -self.object:set_rotation({x=0,y=objRot.y+3,z=objRot.z+3}) -self.object:set_velocity({x=objVel.x,y=objVel.y*-1,z=objVel.z}) -end end + if moveresult.collisions[1].axis == "z" then + self.object:set_rotation({x=0,y=objRot.y,z=objRot.z+3}) + self.object:set_velocity({x=objVel.x,y=objVel.y,z=objVel.z*-1}) + end + if moveresult.collisions[1].axis == "y" then + self.object:set_rotation({x=0,y=objRot.y+3,z=objRot.z+3}) + self.object:set_velocity({x=objVel.x,y=objVel.y*-1,z=objVel.z}) + end + end + else + self.object:remove() + end else diff --git a/settingtypes.txt b/settingtypes.txt index b490a8b..a309ce7 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -37,9 +37,12 @@ rangedweapons_min_gun_efficiency (Minimum Gun Skill) int 40 # Use particles on bullet impact (disabling can improve server lag) rangedweapons_impact_particles (Particles on impact) bool true -# Animate Empty Shells ascEntities (disabling can improve server lag) +# Animate Empty Shells as Entities (disabling can improve server lag) rangedweapons_animate_empty_shells (Animate Empty Shells) bool true +# Bullet ricochet (disabling can improve server lag) +rangedweapons_bullet_ricochet (Bullets Ricocet) bool true + rangedweapons_shurikens (Enable Shurikens) bool true rangedweapons_handguns (Enable Handgus) bool true