mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-12-23 08:29:34 +01:00
Make mob punching time based
This commit is contained in:
parent
e1812b2cdb
commit
8530e6ee36
2 changed files with 59 additions and 69 deletions
|
@ -685,8 +685,6 @@ mobs.mob_step = function(self, dtime)
|
|||
end
|
||||
|
||||
|
||||
|
||||
|
||||
-- can mob be pushed, if so calculate direction -- do this last (overrides everything)
|
||||
if self.pushable then
|
||||
mobs.collision(self)
|
||||
|
|
|
@ -80,6 +80,12 @@ mobs.mob_punch = function(self, hitter, tflp, tool_capabilities, dir)
|
|||
end
|
||||
end
|
||||
|
||||
--don't do damage until pause timer resets
|
||||
if self.pause_timer > 0 then
|
||||
print(self.pause_timer)
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
-- error checking when mod profiling is enabled
|
||||
if not tool_capabilities then
|
||||
|
@ -93,6 +99,7 @@ mobs.mob_punch = function(self, hitter, tflp, tool_capabilities, dir)
|
|||
|
||||
-- punch interval
|
||||
local weapon = hitter:get_wielded_item()
|
||||
|
||||
local punch_interval = 1.4
|
||||
|
||||
-- exhaust attacker
|
||||
|
@ -105,23 +112,9 @@ mobs.mob_punch = function(self, hitter, tflp, tool_capabilities, dir)
|
|||
local armor = self.object:get_armor_groups() or {}
|
||||
local tmp
|
||||
|
||||
-- quick error check in case it ends up 0 (serialize.h check test)
|
||||
if tflp == 0 then
|
||||
tflp = 0.2
|
||||
end
|
||||
|
||||
--calculate damage groups
|
||||
for group,_ in pairs( (tool_capabilities.damage_groups or {}) ) do
|
||||
|
||||
tmp = tflp / (tool_capabilities.full_punch_interval or 1.4)
|
||||
|
||||
if tmp < 0 then
|
||||
tmp = 0.0
|
||||
elseif tmp > 1 then
|
||||
tmp = 1.0
|
||||
end
|
||||
|
||||
damage = damage + (tool_capabilities.damage_groups[group] or 0)
|
||||
* tmp * ((armor[group] or 0) / 100.0)
|
||||
damage = damage + (tool_capabilities.damage_groups[group] or 0) * ((armor[group] or 0) / 100.0)
|
||||
end
|
||||
|
||||
if weapon then
|
||||
|
@ -200,9 +193,7 @@ mobs.mob_punch = function(self, hitter, tflp, tool_capabilities, dir)
|
|||
-- die = true
|
||||
--end
|
||||
|
||||
-- knock back effect (only on full punch)
|
||||
if tflp >= punch_interval then
|
||||
|
||||
-- knock back effect
|
||||
local velocity = self.object:get_velocity()
|
||||
|
||||
--2d direction
|
||||
|
@ -252,9 +243,10 @@ mobs.mob_punch = function(self, hitter, tflp, tool_capabilities, dir)
|
|||
--add velocity breaks momentum - use set velocity
|
||||
self.object:set_velocity(dir)
|
||||
|
||||
--0.4 seconds until you can hurt the mob again
|
||||
self.pause_timer = 0.4
|
||||
end
|
||||
end -- END if damage
|
||||
-- END if damage
|
||||
|
||||
-- if skittish then run away
|
||||
--[[
|
||||
|
|
Loading…
Reference in a new issue