Separate fall check loop from energy loop
This commit is contained in:
parent
39c4e0e2ef
commit
b73f40c688
1
init.lua
1
init.lua
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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
17
src/misc/fall.lua
Normal 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
|
Loading…
x
Reference in New Issue
Block a user