From 807e63da52122883b4a64b569ea67eb051be57a9 Mon Sep 17 00:00:00 2001 From: _Zaizen_ Date: Sat, 7 Nov 2020 22:24:01 +0100 Subject: [PATCH] Bugfix: when you fall after a tochdown you don't get teleported continuously after the round starts. --- bl_modes/game_main.lua | 1 + player_manager.lua | 14 +++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/bl_modes/game_main.lua b/bl_modes/game_main.lua index 732ec64..1e723ff 100644 --- a/bl_modes/game_main.lua +++ b/bl_modes/game_main.lua @@ -13,6 +13,7 @@ function block_league.round_start(arena) block_league.refill_weapons(arena, p_name) player:get_meta():set_int("bl_reloading", 0) + player:get_meta():set_int("bl_death_delay", 0) player:set_physics_override({ speed = block_league.SPEED, diff --git a/player_manager.lua b/player_manager.lua index 5647ddd..ba6d03f 100644 --- a/player_manager.lua +++ b/player_manager.lua @@ -35,8 +35,10 @@ minetest.register_on_dieplayer(function(player) player:get_meta():set_int("bl_death_delay", 1) block_league.immunity(player) + local arena = arena_lib.get_arena_by_player(player:get_player_name()) + minetest.after(6, function() - if not player or not player:get_meta() then return end + if not player or arena.weapons_disabled then return end player:get_meta():set_int("bl_death_delay", 0) player:get_meta():set_int("bl_reloading", 0) end) @@ -52,7 +54,9 @@ minetest.register_on_respawnplayer(function(player) local p_name = player:get_player_name() local arena = arena_lib.get_arena_by_player(p_name) - death_delay(p_name, player:get_pos()) + if not arena.weapons_disabled then + death_delay(p_name, player:get_pos(), arena) + end arena.players[p_name].energy = 100 block_league.energy_update(arena, p_name) @@ -73,16 +77,16 @@ end) ---------------FUNZIONI LOCALI---------------- ---------------------------------------------- -function death_delay(p_name, pos) +function death_delay(p_name, pos, arena) - if not arena_lib.is_player_in_arena(p_name, "block_league") then return end + if not arena_lib.is_player_in_arena(p_name, "block_league") or arena.weapons_disabled then return end local player = minetest.get_player_by_name(p_name) if player:get_meta():get_int("bl_death_delay") == 0 then return end player:set_pos(pos) - minetest.after(0.2, function() death_delay(p_name, pos) end) + minetest.after(0.2, function() death_delay(p_name, pos, arena) end) end