local function send_message(arena,num_str) arena_lib.HUD_send_msg_all("title", arena, num_str, 1,nil,0xFF0000) --arena_lib.HUD_send_msg_all(HUD_type, arena, msg, , , ) end arena_lib.on_load("sumo", function(arena) send_message(arena,'3') minetest.after(1, function(arena) send_message(arena,'2') minetest.after(1, function(arena) send_message(arena,'1') local item = ItemStack("sumo:pushstick") for pl_name, stats in pairs(arena.players) do local player = minetest.get_player_by_name(pl_name) player:get_inventory():set_stack("main", 1, item) local message = 'Controls: '.. minetest.colorize('Red', '[Punch]: ').. minetest.colorize('Green', 'Push other players ').. minetest.colorize('Red', '[Punch]+[Aux1 (e)]: ').. minetest.colorize('Green', 'Exchange places ').. minetest.colorize('Red', '[Punch]+[Sneak]: ').. minetest.colorize('Green', 'Push harder ').. minetest.colorize('Red', '[Place]: ').. minetest.colorize('Green', 'Vault ').. minetest.colorize('Red', '[Place]+[Aux1 (e)]: ').. minetest.colorize('Green', '2 sec speed boost. ') .. 'Cooldowns Apply!' minetest.chat_send_player(pl_name,message) end minetest.after(1, function(arena) arena_lib.HUD_send_msg_all("title", arena, "Fight!", 1,nil,0x00FF00) end, arena) end, arena) end, arena) end) --this is necessary beacuse it is required by arena_lib for timed games arena_lib.on_time_tick('sumo', function(arena) if arena.in_game and not arena.in_celebration then local c = 0x00FF00 if arena.current_time < 60 then c = 0xFFFF00 end if arena.current_time < 10 then c = 0xFF0000 end if arena.current_time < arena.initial_time - 5 then arena_lib.HUD_send_msg_all('hotbar', arena, arena.current_time, 1,nil,c) end end end) minetest.register_on_player_hpchange(function(player, hp_change) local pl_name = player:get_player_name() if arena_lib.is_player_in_arena(pl_name, 'sumo') then local arena = arena_lib.get_arena_by_player(pl_name) local hp = player:get_hp() if arena.in_celebration then --protect winners from damage return 0 end if hp + hp_change <= 0 then --dont ever kill players, but if a damage *would* kill them, then eliminate them, and set their health back to normal arena_lib.HUD_hide('hotbar', p_name) arena_lib.remove_player_from_arena(pl_name, 1) player:set_hp(20) return 0 else return hp_change --if it would not kill players then apply damage as normal end else return hp_change end end, true) --if the game times out arena_lib.on_timeout('sumo', function(arena) local winner_names = {} for p_name, p_stats in pairs(arena.players) do table.insert(winner_names, p_name) end arena_lib.load_celebration('sumo', arena, winner_names) end) arena_lib.on_death('sumo', function(arena, p_name, reason) arena_lib.HUD_hide('hotbar', p_name) if not arena.in_celebration then arena_lib.remove_player_from_arena(p_name, 1) end end) arena_lib.on_celebration('sumo', function(arena, winner_name) arena_lib.HUD_hide('hotbar', arena) end) arena_lib.on_quit('sumo', function(arena, pl_name, is_forced) arena_lib.HUD_hide('hotbar', pl_name) end) arena_lib.on_eliminate('sumo', function(arena, p_name) minetest.sound_play('sumo_lose', { to_player = p_name, gain = 2.0, }) --minetest.chat_send_all(dump(arena)) local count = 0 local sound = 'sumo_elim' for p_name,data in pairs(arena.players) do count = count + 1 end if count == 1 then sound = 'sumo_win' end for p_name, stats in pairs(arena.players) do minetest.sound_play(sound, { to_player = p_name, gain = 2.0, }) end end) --remove stick if in inv when joinplayer minetest.register_on_joinplayer(function(player) local inv = player:get_inventory() local stack = ItemStack("sumo:pushstick") local taken = inv:remove_item("main", stack) end)