not working - middle of fix for energy boosts

This commit is contained in:
Tai Kedzierski 2018-12-23 23:43:52 +00:00
parent 09923bb402
commit fe3f2f4c8c

View File

@ -48,36 +48,48 @@ local function set_player_boost(user, power)
phys = round_physics(user:get_physics_override() ) phys = round_physics(user:get_physics_override() )
local newphys = { if phys.speed == 1 and phys.gravity == 1 then
speed = phys.speed * coefficients.speed, local newphys = {
gravity = phys.gravity/(coefficients.gravity*power), speed = phys.speed * coefficients.speed,
} gravity = phys.gravity/(coefficients.gravity*power),
}
newphys = round_physics(newphys) newphys = round_physics(newphys)
local diff = { local diff = {
speed = newphys.speed - phys.speed, speed = newphys.speed - phys.speed,
gravity = newphys.gravity - phys.gravity, gravity = newphys.gravity - phys.gravity,
} }
user:set_physics_override(newphys) user:set_physics_override(newphys)
tell_player_physics(user:get_player_name(), newphys) tell_player_physics(user:get_player_name(), newphys)
minetest.after(power * 2.5, function() stack_boost(user:get_player_name(), power*2.5, diff)
-- By the time we run the boost removal function, the player's physics end
-- may have been further modified - get the current state of the player
local boosted_phys = round_physics(user:get_physics_override() )
stack_boost(user:get_player_name(), power*2.5)
end
minetest.register_onstep(function(dtime)
-- Power down players with boosts
for -- get each boosted player, apply change
-- By the time we run the boost removal function, the player's physics
-- may have been further modified - get the current state of the player
local boosted_phys = round_physics(user:get_physics_override() )
local boostcount, gotdiff = unstack_boost(user:get_player_name())
if boostcount < 1 then
-- Remove the value of the boost when it was set, leaving the additional boost in place -- Remove the value of the boost when it was set, leaving the additional boost in place
local restored_phys = { local restored_phys = {
speed = boosted_phys.speed - diff.speed, speed = boosted_phys.speed - gotdiff.speed,
gravity = boosted_phys.gravity - diff.gravity, gravity = boosted_phys.gravity - gotdiff.gravity,
} }
restored_phys = round_physics(restored_phys) restored_phys = round_physics(restored_phys)
user:set_physics_override(restored_phys) user:set_physics_override(restored_phys)
tell_player_physics(user:get_player_name(), restored_phys) tell_player_physics(user:get_player_name(), restored_phys)
end) end
end end)
local function eat_energy(itemstack, user, pointedthing) local function eat_energy(itemstack, user, pointedthing)