Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- minetest.calculate_knockback(function(player, hitter, time_from_last_punch, tool_capabilities, dir, distance, damage)
- local in_bed = beds.player
- local name = player:get_player_name()
- if damage == 0 or player:get_armor_groups().immortal or in_bed[name] then
- return 0.0
- end
- local m = 8
- -- solve m - m*e^(k*4) = 4 for k
- local k = -0.17328
- local res = m - m * math.exp(k * damage)
- if distance < 2.0 then
- res = res * 1.1 -- more knockback when closer
- elseif distance > 4.0 then
- res = res * 0.9 -- less when far away
- end
- return res
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement