minetest_wadsprint/init.set_sprinting_physics.lua

61 lines
2.5 KiB
Lua

if minetest.get_modpath("player_monoids") ~= nil then
local default_minetest_wadsprint_initialize_player = minetest_wadsprint.initialize_player
function minetest_wadsprint.initialize_player(player_obj)
default_minetest_wadsprint_initialize_player(player_obj)
minetest_wadsprint.stats[player_obj:get_player_name()].monoids = {}
minetest_wadsprint.stats[player_obj:get_player_name()].monoids.jump = {}
minetest_wadsprint.stats[player_obj:get_player_name()].monoids.speed = {}
end
function minetest_wadsprint.set_sprinting_physics(player,is_on_val)
if player.is_sprinting_physics_on ~= is_on_val then
if is_on_val == true then
table.insert(
player.monoids.jump,
player_monoids.jump:add_change(
player.obj,
minetest_wadsprint.SPRINT_JUMP_HEIGHT_BOOST_COEFFICIENT
)
)
table.insert(
player.monoids.speed,
player_monoids.speed:add_change(
player.obj,
minetest_wadsprint.SPRINT_RUN_SPEED_BOOST_COEFFICIENT
)
)
elseif player.is_sprinting_physics_on ~= nil then
while #player.monoids.jump ~= 0 do
player_monoids.jump:del_change(player.obj, table.remove(player.monoids.jump))
end
while #player.monoids.speed ~= 0 do
player_monoids.speed:del_change(player.obj, table.remove(player.monoids.speed))
end
end
player.is_sprinting_physics_on = is_on_val
end
end
else
function minetest_wadsprint.set_sprinting_physics(player,is_on_val)
if player.is_sprinting_physics_on ~= is_on_val then
local physics = player.obj:get_physics_override()
if is_on_val == true then
player.obj:set_physics_override(
{
jump = minetest_wadsprint.SPRINT_JUMP_HEIGHT_BOOST_COEFFICIENT,
speed = minetest_wadsprint.SPRINT_RUN_SPEED_BOOST_COEFFICIENT,
})
elseif player.is_sprinting_physics_on ~= nil then
player.obj:set_physics_override(
{
jump = 1,
speed = 1,
})
end
player.is_sprinting_physics_on = is_on_val
end
end
end