commit
9c1339f6d7
7 changed files with 65 additions and 19 deletions
9
.github/dependabot.yml
vendored
Normal file
9
.github/dependabot.yml
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: gitsubmodule
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 10
|
||||
assignees:
|
||||
- LoneWolfHT
|
|
@ -248,6 +248,9 @@ minetest.register_chatcommand("t", {
|
|||
minetest.chat_send_player(name, "The team channel is disabled.")
|
||||
return
|
||||
end
|
||||
if param == "" then
|
||||
return false, "-!- Empty team message, see /help t"
|
||||
end
|
||||
|
||||
local tname = ctf.player(name).team
|
||||
local team = ctf.team(tname)
|
||||
|
|
|
@ -88,6 +88,24 @@ crafting.register_recipe({
|
|||
level = 1,
|
||||
})
|
||||
|
||||
-- Cobble Stairs
|
||||
crafting.register_recipe({
|
||||
type = "inv",
|
||||
output = "stairs:stair_cobble 8",
|
||||
items = { "default:cobble 6"},
|
||||
always_known = true,
|
||||
level = 1,
|
||||
})
|
||||
|
||||
-- Desert Cobble Stairs
|
||||
crafting.register_recipe({
|
||||
type = "inv",
|
||||
output = "stairs:stair_desert_cobble 8",
|
||||
items = { "default:desert_cobble 6"},
|
||||
always_known = true,
|
||||
level = 1,
|
||||
})
|
||||
|
||||
-- Wood x4
|
||||
crafting.register_recipe({
|
||||
type = "inv",
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 5fe0d7b1fd8aba95cfe0361a333abfa6b00f20a8
|
||||
Subproject commit fa7fa3e8f80dd82d6e98766581269817325e546b
|
|
@ -214,28 +214,44 @@ local shuffled_idx
|
|||
|
||||
math.randomseed(os.time())
|
||||
|
||||
-- Fisher-Yates shuffling algorithm, used for shuffling map selection order
|
||||
-- Fisher-Yates-Savilli shuffling algorithm, used for shuffling map selection order
|
||||
-- Adapted from snippet provided in https://stackoverflow.com/a/35574006
|
||||
local function shuffle_maps(idx_to_avoid)
|
||||
-- Improved to ensure that the first maps from current shuffled order differ
|
||||
-- from the last maps from previous shuffled order
|
||||
-- You can set the minimum distance between the same map using map_recurrence_threshold param
|
||||
local function shuffle_maps(previous_order, map_recurrence_threshold)
|
||||
local maps_count = #ctf_map.available_maps
|
||||
|
||||
map_recurrence_threshold = math.min(map_recurrence_threshold or 0, maps_count - 1)
|
||||
|
||||
if previous_order == nil then
|
||||
map_recurrence_threshold = 0
|
||||
previous_order = {}
|
||||
for i = 1, maps_count do
|
||||
previous_order[i] = i
|
||||
end
|
||||
end
|
||||
|
||||
-- Reset shuffled_idx
|
||||
shuffled_idx = 1
|
||||
|
||||
-- Create table of ordered indices
|
||||
shuffled_order = {}
|
||||
for i = 1, #ctf_map.available_maps, 1 do
|
||||
shuffled_order[i] = i
|
||||
|
||||
-- At first select maps that don't intersect with the last maps from previous order
|
||||
for i = 1, map_recurrence_threshold do
|
||||
local j = math.random(1, maps_count - map_recurrence_threshold)
|
||||
local k = maps_count - map_recurrence_threshold + i
|
||||
shuffled_order[i] = previous_order[j]
|
||||
previous_order[j] = previous_order[k]
|
||||
end
|
||||
|
||||
-- Shuffle table
|
||||
for i = #ctf_map.available_maps, 1, -1 do
|
||||
local j = math.random(i)
|
||||
shuffled_order[i], shuffled_order[j] = shuffled_order[j], shuffled_order[i]
|
||||
end
|
||||
|
||||
-- Prevent the last map of the previous cycle from becoming the first in the next cycle
|
||||
if shuffled_order[1] == idx_to_avoid then
|
||||
local k = math.random(#ctf_map.available_maps - 1)
|
||||
shuffled_order[1], shuffled_order[k + 1] = shuffled_order[k + 1], shuffled_order[1]
|
||||
-- Select remaining maps
|
||||
for i = map_recurrence_threshold + 1, maps_count do
|
||||
local j = math.random(1, maps_count - i + 1)
|
||||
local k = maps_count - i + 1
|
||||
shuffled_order[i] = previous_order[j]
|
||||
previous_order[j] = previous_order[k]
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -257,7 +273,7 @@ local function select_map()
|
|||
|
||||
-- If shuffled_idx overflows, re-shuffle map selection order
|
||||
if shuffled_idx > #ctf_map.available_maps then
|
||||
shuffle_maps(shuffled_order[#ctf_map.available_maps])
|
||||
shuffle_maps(shuffled_order, tonumber(minetest.settings:get("ctf_map.map_recurrence_threshold")) or 3)
|
||||
end
|
||||
else
|
||||
-- Choose next map index, but don't select the same one again
|
||||
|
|
|
@ -83,10 +83,10 @@ local function stop_healing(player, interrupted)
|
|||
player:hud_remove(info.hud)
|
||||
end
|
||||
|
||||
ctf_flag.register_on_precapture(function()
|
||||
ctf_match.register_on_new_match(function()
|
||||
-- Reset all player states at the end of the match
|
||||
for name, info in pairs(players) do
|
||||
players[name]=nil
|
||||
players[name] = nil
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
player:hud_remove(info.hud)
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = medkits
|
||||
depends = ctf_flag
|
||||
depends = ctf_match
|
||||
|
|
Loading…
Reference in a new issue