+ Added SFXs when the match starts/ends
+ Fixed game freeze when a treasure didn't exist + Added the barrier node - Depends.txtmaster
parent
bda5980713
commit
5be31f6892
|
@ -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)
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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"},
|
||||
})
|
||||
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
arena_lib
|
||||
default
|
2
mod.conf
2
mod.conf
|
@ -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
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 181 B |
Before Width: | Height: | Size: 308 B After Width: | Height: | Size: 308 B |
Loading…
Reference in New Issue