Separate fall check loop from energy loop

This commit is contained in:
Zughy 2022-05-24 17:30:03 +02:00
parent 39c4e0e2ef
commit b73f40c688
4 changed files with 24 additions and 13 deletions

View File

@ -116,6 +116,7 @@ dofile(srcpath .. "/modes/game_main.lua")
dofile(srcpath .. "/modes/TD/ball.lua")
-- misc
dofile(srcpath .. "/misc/energy.lua")
dofile(srcpath .. "/misc/fall.lua")
dofile(srcpath .. "/misc/immunity.lua")
block_league.init_storage()

View File

@ -34,6 +34,7 @@ end)
arena_lib.on_start("block_league", function(arena)
block_league.HUD_remove_inputs(arena)
block_league.energy_refill_loop(arena)
block_league.fall_check_loop(arena)
end)
@ -147,7 +148,6 @@ end)
arena_lib.on_quit("block_league", function(arena, p_name, is_spectator)
-- se aveva la palla, sganciala

View File

@ -11,19 +11,12 @@ function block_league.energy_refill_loop(arena)
local player = minetest.get_player_by_name(pl_name)
local health = player:get_hp()
local energy = arena.players[pl_name].energy
-- se è vivo
if health > 0 then
if player:get_meta():get_int("bl_has_ball") == 0 and arena.players[pl_name].energy < MAX_ENERGY then
arena.players[pl_name].energy = arena.players[pl_name].energy + 1
block_league.HUD_energy_update(arena, pl_name)
end
if player:get_pos().y < arena.min_y then
player:set_hp(0)
player:get_meta():set_int("bl_has_ball", 0)
block_league.hud_log_update(arena, "bl_log_suicide.png", pl_name, "")
end
-- se è vivo, senza palla e con energia non al massimo
if health > 0 and player:get_meta():get_int("bl_has_ball") == 0 and energy < MAX_ENERGY then
arena.players[pl_name].energy = energy + 1
block_league.HUD_energy_update(arena, pl_name)
end
end

17
src/misc/fall.lua Normal file
View File

@ -0,0 +1,17 @@
function block_league.fall_check_loop(arena)
if not arena.in_game then return end
for pl_name, stats in pairs(arena.players) do
local player = minetest.get_player_by_name(pl_name)
if player:get_hp() > 0 and player:get_pos().y < arena.min_y then
player:set_hp(0)
player:get_meta():set_int("bl_has_ball", 0)
block_league.hud_log_update(arena, "bl_log_suicide.png", pl_name, "")
end
end
minetest.after(0.1, function() block_league.fall_check(arena) end)
end