+ Added SFXs when the match starts/ends

+ Fixed game freeze when a treasure didn't exist
+ Added the barrier node
- Depends.txt
master
Giov4 2020-12-26 21:33:46 +01:00
parent bda5980713
commit 5be31f6892
10 changed files with 33 additions and 11 deletions

View File

@ -1,6 +1,6 @@
local function add_privs() end
local function remove_privs() end
local function create_glass_cage() end
local function create_barrier_cage() end
local function keep_teleporting() end
local function drop_items() end
@ -17,7 +17,7 @@ arena_lib.on_load("skywars", function(arena)
for pl_name in pairs(arena.players) do
local player = minetest.get_player_by_name(pl_name)
create_glass_cage(player)
create_barrier_cage(player)
player:get_inventory():add_item("main", "skywars:kit_selector")
end
@ -40,6 +40,7 @@ arena_lib.on_start("skywars", function(arena)
for pl_name in pairs(arena.players) do
local player = minetest.get_player_by_name(pl_name)
minetest.sound_play("sw_start", {to_player = pl_name})
add_privs(pl_name)
skywars.generate_HUD(arena, pl_name)
player:set_physics_override({
@ -48,7 +49,7 @@ arena_lib.on_start("skywars", function(arena)
jump=1
})
skywars.activate_enderpearl(player, arena)
player:get_inventory():remove_item("main", "skywars:kit_selector")
player:get_inventory():remove_item("main", "skywars:kit_selector")
end
end)
@ -58,6 +59,7 @@ arena_lib.on_celebration("skywars", function(arena, winner_name)
for pl_name in pairs(arena.players) do
local player = minetest.get_player_by_name(pl_name)
minetest.sound_play("sw_win", {to_player = pl_name})
remove_privs(pl_name)
skywars.block_enderpearl(player, arena)
end
@ -234,7 +236,7 @@ end
function create_glass_cage(player)
function create_barrier_cage(player)
minetest.after(0.1, function()
local original_pos = player:get_pos()
local glass_nodes = {
@ -253,7 +255,7 @@ function create_glass_cage(player)
for _, relative_pos in pairs(glass_nodes) do
local node_pos = vector.round(vector.add(original_pos, relative_pos))
if minetest.get_node(node_pos).name == "air" then
minetest.add_node(node_pos, {name="default:glass"})
minetest.add_node(node_pos, {name="skywars:barrier"})
minetest.after(skywars_settings.loading_time, function()
minetest.remove_node(node_pos)
end)

View File

@ -52,6 +52,8 @@ function skywars.select_random_treasures(chest, arena)
local random = math.random(1, 100)
local treasure_itemstack = treasure_to_itemstack(preciousness_filtered_treasures[j])
if treasure_itemstack == "error" then return generated_treasures end
if treasure_itemstack and random % (preciousness_filtered_treasures[j].rarity * 10) == 0 then
table.insert(generated_treasures, treasure_itemstack)
break
@ -73,7 +75,7 @@ function treasure_to_itemstack(treasure)
if ItemStack(itemstack):is_known() == false then
minetest.log("error","[Skywars Treasures] I was asked to put "..treasure.name.." inside a chest, but it doesn't exist.")
return nil
return "error"
end
return ItemStack(itemstack)
end

View File

@ -19,6 +19,26 @@ end
minetest.register_node("skywars:barrier", {
description = "Unbreakable transparent node",
drawtype = "airlike",
paramtype = "light",
sunlight_propagates = true,
air_equivalent = true,
drop = "",
inventory_image = "sw_node_barrier.png",
wield_image = "sw_node_barrier.png",
groups = {oddly_breakable_by_hand = 2},
can_dig = function(pos, player)
if minetest.get_player_privs(player:get_player_name()).skywars_admin then
return true
end
return false
end
})
function skywars.iterate_area_nodes(min_pos, max_pos, func)
for x = 1, max_pos.x - min_pos.x do
for y = 1, max_pos.y - min_pos.y do

View File

@ -90,9 +90,9 @@ end
minetest.register_node("skywars:test_node", {
description = "Skywars test block, don't use it!",
description = "Skywars test node, don't use it!",
groups = {crumbly=1, soil=1, dig_immediate=3},
tiles = {"node_test.png"},
tiles = {"sw_node_test.png"},
})

View File

@ -1,2 +0,0 @@
arena_lib
default

View File

@ -1,4 +1,4 @@
name = skywars
description = Skywars is a PvP minigame where players battle each other on floating islands until there is only one survivor remaining. Each player spawns on their own island and when the round begins must prepare for battle before crossing to the other islands and fighting.
depends = arena_lib, default
depends = arena_lib
optional_depends = enderpearl, 3d_armor

BIN
sounds/sw_start.ogg Normal file

Binary file not shown.

BIN
sounds/sw_win.ogg Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

View File

Before

Width:  |  Height:  |  Size: 308 B

After

Width:  |  Height:  |  Size: 308 B