capturetheflag/mods/ctf/ctf_classes/init.lua
LoneWolfHT fbf0126599
Allow more than two teams in a match at once (#724)
* Fix bugs with more than two teams

* Fix team allocation

* Fix bugz

* Fix crash

* Fix crash with crash fix
2020-12-25 10:37:02 -08:00

71 lines
2 KiB
Lua

ctf_classes = {
__classes = {},
__classes_ordered = {},
}
dofile(minetest.get_modpath("ctf_classes") .. "/api.lua")
dofile(minetest.get_modpath("ctf_classes") .. "/gui.lua")
dofile(minetest.get_modpath("ctf_classes") .. "/medic.lua")
dofile(minetest.get_modpath("ctf_classes") .. "/ranged.lua")
dofile(minetest.get_modpath("ctf_classes") .. "/melee.lua")
dofile(minetest.get_modpath("ctf_classes") .. "/items.lua")
dofile(minetest.get_modpath("ctf_classes") .. "/flags.lua")
dofile(minetest.get_modpath("ctf_classes") .. "/classes.lua")
minetest.register_on_joinplayer(function(player)
ctf_classes.update(player)
if ctf_classes.can_change(player) and
minetest.check_player_privs(player, { interact = true }) then
ctf_classes.show_gui(player:get_player_name(), player)
end
end)
minetest.register_chatcommand("class", {
func = function(name, params)
local player = minetest.get_player_by_name(name)
if not player then
return false, "You must be online to do this!"
end
local can_change, reason = ctf_classes.can_change(player)
if not can_change then
return false, reason
end
local cname = params:trim()
if params == "" then
ctf_classes.show_gui(name)
else
if ctf_classes.__classes[cname] then
ctf_classes.set(player, cname)
return true, "Set class to " .. cname
else
return false, "Class '" .. cname .. "' does not exist"
end
end
end
})
local old_set_skin = ctf_colors.set_skin
ctf_colors.set_skin = function(player, color, ...)
if color == "blue" or color == "red" then
player:set_properties({
textures = {"ctf_classes_skin_" .. ctf_classes.get(player).name .. "_" .. (color or "blue") .. ".png"}
})
elseif color then
old_set_skin(player, color, ...)
end
end
ctf_classes.set_skin = ctf_colors.set_skin
ctf_classes.register_on_changed(function(player, old, new)
if not old then
return
end
local pname = player:get_player_name()
ctf.chat_send_team(ctf.player(pname).team,
minetest.colorize("#ABCDEF", pname .. " is now a " .. new.description))
end)