From c412c6058b9db05b5409f510de364e6816f3ec43 Mon Sep 17 00:00:00 2001 From: LoneWolfHT Date: Wed, 6 Apr 2022 10:49:41 -0700 Subject: [PATCH] Classes Updates (#994) * Classes Rework * Add ctf_settings * Auto-start respawn timer * cooldowns: provide cooldown start time * Allow squinting with zoom * Restore old scout ability, allow sniper ADS * Knight combat rework rework rework * Fix luacheck warnings * Change classes build timer to a minute * Default to default wielditem display * Update class desc * Fix crash and tweak restart message * Fix potential issue * Undo failure of a crash fix * Fix crash * Fix potential issues * Fix crash? * Roughly restore old knight sword behaviour --- .luacheckrc | 7 +- mods/apis/ctf_gui/api.md | 7 +- mods/apis/ctf_gui/dev.lua | 37 +++ mods/apis/ctf_gui/init.lua | 103 +++++++- mods/apis/ctf_settings/init.lua | 122 +++++++++ mods/apis/ctf_settings/mod.conf | 2 + mods/ctf/ctf_api/init.lua | 2 +- mods/ctf/ctf_combat/ctf_melee/init.lua | 249 ++++++++++++++++++ mods/ctf/ctf_combat/ctf_melee/mod.conf | 2 +- .../ctf_melee/sounds/ctf_melee_whoosh.ogg | Bin 0 -> 9567 bytes .../ctf_melee/textures/ctf_melee_slash.png | Bin 0 -> 589 bytes mods/ctf/ctf_combat/ctf_ranged/init.lua | 49 ++-- mods/ctf/ctf_core/cooldowns.lua | 21 +- mods/ctf/ctf_map/ctf_traps.lua | 4 +- mods/ctf/ctf_map/init.lua | 2 +- mods/ctf/ctf_map/map_meta.lua | 2 +- mods/ctf/ctf_map/mapedit_gui.lua | 58 ++-- mods/ctf/ctf_modebase/features.lua | 55 ++-- mods/ctf/ctf_modebase/flags/nodes.lua | 4 +- mods/ctf/ctf_modebase/init.lua | 2 +- mods/ctf/ctf_modebase/map_catalog_show.lua | 6 +- mods/ctf/ctf_modebase/markers.lua | 188 ++++++++----- mods/ctf/ctf_modebase/match.lua | 2 +- mods/ctf/ctf_modebase/mod.conf | 2 +- mods/ctf/ctf_modebase/mode_vote.lua | 5 +- mods/ctf/ctf_modebase/respawn_delay.lua | 31 ++- mods/ctf/ctf_modebase/summary.lua | 2 +- .../textures/ctf_modebase_group.png | Bin 0 -> 630 bytes .../ctf_modes/ctf_mode_classes/classes.lua | 238 +++++++++++++---- mods/ctf/ctf_modes/ctf_mode_classes/init.lua | 14 +- mods/ctf/ctf_modes/ctf_mode_classes/mod.conf | 2 +- mods/ctf/ctf_modes/ctf_mode_classic/init.lua | 1 + .../ctf_modes/ctf_mode_nade_fight/init.lua | 1 + mods/ctf/ctf_player/LICENSE.txt | 1 + mods/ctf/ctf_player/init.lua | 118 +++++++++ mods/ctf/ctf_player/mod.conf | 2 + mods/ctf/ctf_player/models/character.b3d | Bin 0 -> 82505 bytes mods/ctf/ctf_player/models/character.blend | Bin 0 -> 882348 bytes mods/mtg/mtg_player_api/api.lua | 11 +- mods/other/wield3d/init.lua | 38 ++- mods/other/wield3d/mod.conf | 1 + 41 files changed, 1157 insertions(+), 234 deletions(-) create mode 100644 mods/apis/ctf_gui/dev.lua create mode 100644 mods/apis/ctf_settings/init.lua create mode 100644 mods/apis/ctf_settings/mod.conf create mode 100644 mods/ctf/ctf_combat/ctf_melee/sounds/ctf_melee_whoosh.ogg create mode 100644 mods/ctf/ctf_combat/ctf_melee/textures/ctf_melee_slash.png create mode 100644 mods/ctf/ctf_modebase/textures/ctf_modebase_group.png create mode 100644 mods/ctf/ctf_player/LICENSE.txt create mode 100644 mods/ctf/ctf_player/init.lua create mode 100644 mods/ctf/ctf_player/mod.conf create mode 100644 mods/ctf/ctf_player/models/character.b3d create mode 100644 mods/ctf/ctf_player/models/character.blend diff --git a/.luacheckrc b/.luacheckrc index e164b23..fbe0728 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -3,18 +3,18 @@ unused_args = false globals = { "PlayerObj", "PlayerName", "HumanReadable", "RunCallbacks", - "ctf_gui", "hud_events", "mhud", "physics", "rawf", + "ctf_gui", "hud_events", "mhud", "physics", "rawf", "ctf_settings", "ctf_api", "ctf_chat", "ctf_combat_mode", "ctf_core", "ctf_cosmetics", "ctf_healing", "ctf_kill_list", "ctf_map", "ctf_melee", "ctf_modebase", - "ctf_ranged", "ctf_rankings", "ctf_report", "ctf_teams", + "ctf_ranged", "ctf_rankings", "ctf_report", "ctf_teams", "ctf_player", "dropondie", "grenades", "chatcmdbuilder", "crafting", "hpbar", "playertag", "random_messages", "skybox", "throwable_snow", - "default", "doors", + "default", "doors", "player_api", "sfinv", "binoculars", "vector", math = { @@ -47,6 +47,7 @@ read_globals = { "ItemStack", "Settings", "unpack", + "loadstring", table = { fields = { diff --git a/mods/apis/ctf_gui/api.md b/mods/apis/ctf_gui/api.md index 9814a50..32bfa77 100644 --- a/mods/apis/ctf_gui/api.md +++ b/mods/apis/ctf_gui/api.md @@ -2,10 +2,14 @@ A tool for easily creating basic CTF-themed GUIs +**There is a new API in the works, use of this is not recommended** + # API ```lua -ctf_gui.show_formspec(player, "modname:formname", { +ctf_gui.old_init() + +ctf_gui.old_show_formspec(player, "modname:formname", { size = {x = , y = }, title = "Formspec Title", description = "Text below the title", @@ -86,4 +90,3 @@ ctf_gui.show_formspec(player, "modname:formname", { -- Called when this element shows up in on_player_recieve_fields end, } - diff --git a/mods/apis/ctf_gui/dev.lua b/mods/apis/ctf_gui/dev.lua new file mode 100644 index 0000000..e752890 --- /dev/null +++ b/mods/apis/ctf_gui/dev.lua @@ -0,0 +1,37 @@ +function ctf_gui.show_formspec_dev(player, formname, formspec, formcontext) + local filepath = minetest.get_worldpath().."/ctf_gui/" + local filename = filepath.."file_edit.txt" + + minetest.mkdir(filepath) + + local file = assert(io.open(filename, "w")) + + file:write(formspec) + + file:close() + + local function interval() + if formspec:sub(1, 3) == "[f]" then + local result, form = pcall(loadstring(formspec:sub(4)), formcontext) + ctf_gui.show_formspec(player, formname, result and form or "") + else + ctf_gui.show_formspec(player, formname, formspec) + end + + minetest.after(1, function() + local f = assert(io.open(filename, "r")) + + formspec = f:read("*a") + + f:close() + + if formspec ~= "exit" then + interval() + else + minetest.request_shutdown("Formspec dev requested shutdown", true) + end + end) + end + + interval() +end diff --git a/mods/apis/ctf_gui/init.lua b/mods/apis/ctf_gui/init.lua index 511e8ed..045908e 100644 --- a/mods/apis/ctf_gui/init.lua +++ b/mods/apis/ctf_gui/init.lua @@ -5,8 +5,8 @@ ctf_gui = { } local context = {} - local gui_users_initialized = {} + function ctf_gui.init() local modname = minetest.get_current_modname() @@ -14,6 +14,45 @@ function ctf_gui.init() gui_users_initialized[modname] = true + ctf_core.register_on_formspec_input(modname..":", function(pname, formname, fields, ...) + local ctx = context[pname] + if not ctx then return end + + if ctx._formname == formname and ctx._on_formspec_input then + if ctx._privs then + local playerprivs = minetest.get_player_privs(pname) + + for priv, needed in pairs(ctx._privs) do + if needed and not playerprivs[priv] then + minetest.log("warning", string.format( + "Player '%q' doesn't have the privs needed to access the formspec '%s'", + pname, formname + )) + return + end + end + end + + if fields.quit and ctx._on_quit then + ctx._on_quit(pname, fields) + else + local action = ctx._on_formspec_input(pname, ctx, fields, ...) + + if action == "refresh" then + minetest.show_formspec(pname, ctx._formname, ctx._formspec(ctx)) + end + end + end + end) +end + +function ctf_gui.old_init() + local modname = minetest.get_current_modname() + + assert(not gui_users_initialized[modname], "Already initialized for mod: "..modname) + + gui_users_initialized[modname] = true + ctf_core.register_on_formspec_input(modname..":", function(pname, formname, fields) local ctx = context[pname] if not ctx then return end @@ -24,8 +63,10 @@ function ctf_gui.init() for priv, needed in pairs(ctx.privs) do if needed and not playerprivs[priv] then - minetest.log("warning", "Player " .. dump(pname) .. - " doesn't have the privs needed to access the formspec " .. dump(formname)) + minetest.log("warning", string.format( + "Player '%q' doesn't have the privs needed to access the formspec '%s'", + pname, formname + )) return end end @@ -44,8 +85,10 @@ function ctf_gui.init() end end if bad then - minetest.log("warning", "Player " .. dump(pname) .. - " sent unallowed values for formspec " .. dump(formname) .. " : " .. dump(fields)) + minetest.log("warning", string.format( + "Player %s sent unallowed values for formspec %s : %s", + pname, formname, dump(fields) + )) return end end @@ -64,7 +107,52 @@ function ctf_gui.init() end) end -function ctf_gui.show_formspec(player, formname, formdef) +function ctf_gui.show_formspec(player, formname, formspec, formcontext) + player = PlayerName(player) + + context[player] = formcontext or {} + + context[player]._formname = formname + context[player]._formspec = formspec + + if type(formspec) == "function" then + minetest.show_formspec(player, formname, formspec(formcontext)) + else + minetest.show_formspec(player, formname, formspec) + end +end + +do + local remove = table.remove + local concat = table.concat + local formspec_escape = minetest.formspec_escape + local format = string.format + local unpck = unpack + + function ctf_gui.list_to_element(l) + local base = remove(l, 1) + + for k, format_var in ipairs(l) do + l[k] = formspec_escape(format_var) + end + + return format(base, unpck(l)) + end + + local lte = ctf_gui.list_to_element + + function ctf_gui.list_to_formspec_str(l) + for k, v in ipairs(l) do + if type(v) == "table" then + l[k] = lte(v) + end + end + + return concat(l, "") + end +end + +function ctf_gui.old_show_formspec(player, formname, formdef) player = PlayerName(player) formdef.formname = formname @@ -289,7 +377,10 @@ function ctf_gui.show_formspec(player, formname, formdef) "]" end + formdef._info = formdef context[player] = formdef minetest.show_formspec(player, formdef.formname, formspec) end + +dofile(minetest.get_modpath("ctf_gui").."/dev.lua") diff --git a/mods/apis/ctf_settings/init.lua b/mods/apis/ctf_settings/init.lua new file mode 100644 index 0000000..db0c81c --- /dev/null +++ b/mods/apis/ctf_settings/init.lua @@ -0,0 +1,122 @@ +ctf_settings = { + settings = {}, + settings_list = {}, +} + +local FORMSIZE = {x = 8, y = 5} +local SCROLLBAR_W = 0.4 + +minetest.after(0, function() + table.sort(ctf_settings.settings_list, function(a, b) return a < b end) +end) + +--[[ +Settings should only be registered at loadtime + +{ + type = "bool", + label = "Setting name/label", + description = "Text in tooltip", + default = "default value", + on_change = function(player, new_value) + <...> + end +} +]] +---@param def table +function ctf_settings.register(name, def) + ctf_settings.settings[name] = def + table.insert(ctf_settings.settings_list, name) +end + +function ctf_settings.set(player, setting, value) + player:get_meta():set_string("ctf_settings:"..setting, value) +end + +---@return string Returns the player's chosen setting value, the default given at registration, or if both are unset: "" +function ctf_settings.get(player, setting) + local value = player:get_meta():get_string("ctf_settings:"..setting) + local info = ctf_settings.settings[setting] + + return value == "" and info.default or value +end + +minetest.register_on_mods_loaded(function() + sfinv.register_page("ctf_settings:settings", { + title = "Settings", + get = function(self, player, context) + local setting_list = {} + local lastypos + + for k, setting in ipairs(ctf_settings.settings_list) do + local settingdef = ctf_settings.settings[setting] + + if settingdef.type == "bool" then + lastypos = (k / 2) - 1 + setting_list[k] = { + "checkbox[0,%f;%s;%s;%s]tooltip[%s;%s]", + lastypos, + setting, + settingdef.label or setting, + ctf_settings.get(player, setting), + setting, + settingdef.description or HumanReadable(setting) + } + end + end + + local form = { + {"box[-0.1,-0.1;%f,%f;#00000055]", FORMSIZE.x - SCROLLBAR_W, FORMSIZE.y}, + {"scroll_container[-0.1,0.3;%f,%f;settings_scrollbar;vertical;0.1]", + FORMSIZE.x - SCROLLBAR_W, + FORMSIZE.y + 0.7 + }, + ctf_gui.list_to_formspec_str(setting_list), + "scroll_container_end[]", + {"scrollbaroptions[max=%d]", math.ceil((lastypos - 3.833) * 11.538)}, + {"scrollbar[%f,-0.1;%f,%f;vertical;settings_scrollbar;%f]", + FORMSIZE.x - SCROLLBAR_W, + SCROLLBAR_W, + FORMSIZE.y, + context and context.settings_scrollbar or 0 + }, + } + + return sfinv.make_formspec(player, context, ctf_gui.list_to_formspec_str(form), true) + end, + on_player_receive_fields = function(self, player, context, fields) + local refresh = false + + for field, value in pairs(fields) do + local setting = ctf_settings.settings[field] + + if setting then + if setting.type == "bool" then + local newvalue = value == "true" and "true" or "false" + + ctf_settings.set(player, field, newvalue) + + if setting.on_change then + setting.on_change(player, newvalue) + end + end + + refresh = true + end + end + + if not refresh then return end + + if fields.settings_scrollbar then + local scrollevent = minetest.explode_scrollbar_event(fields.settings_scrollbar) + + if scrollevent.value then + context.settings_scrollbar = scrollevent.value + end + end + + + sfinv.set_page(player, sfinv.get_page(player)) + end, + }) +end) diff --git a/mods/apis/ctf_settings/mod.conf b/mods/apis/ctf_settings/mod.conf new file mode 100644 index 0000000..9a73d42 --- /dev/null +++ b/mods/apis/ctf_settings/mod.conf @@ -0,0 +1,2 @@ +name = ctf_settings +depends = sfinv, ctf_gui diff --git a/mods/ctf/ctf_api/init.lua b/mods/ctf/ctf_api/init.lua index b032ae5..abd4115 100644 --- a/mods/ctf/ctf_api/init.lua +++ b/mods/ctf/ctf_api/init.lua @@ -38,4 +38,4 @@ end --- * flag_team function ctf_api.register_on_flag_take(func) table.insert(ctf_api.registered_on_flag_take, func) -end \ No newline at end of file +end diff --git a/mods/ctf/ctf_combat/ctf_melee/init.lua b/mods/ctf/ctf_combat/ctf_melee/init.lua index 7dc55a2..6355032 100644 --- a/mods/ctf/ctf_combat/ctf_melee/init.lua +++ b/mods/ctf/ctf_combat/ctf_melee/init.lua @@ -29,6 +29,8 @@ local sword_mats = { } } +local attack_cooldown = ctf_core.init_cooldowns() + function ctf_melee.simple_register_sword(name, def) local base_def = { description = def.description, @@ -74,6 +76,253 @@ function ctf_melee.simple_register_sword(name, def) ctf_melee.registered_swords[name] = base_def end +local slash_stab_anim_length = ctf_player.animation_time.stab_slash +local EXTRA_ANIM_LENGTH = { + slash = slash_stab_anim_length * 0.5, + stab = 0.1, +} + +local SWOOSH_SOUND_DISTANCE = 8 +local COMBAT_SOUND_DISTANCE = 16 +local KNOCKBACK = {slash = 6, stab = 0} +local HIT_BOOST = 9 + +local function dopunch(target, attacker, ignores, attack_capabilities, dir, attack_interval) + if target.ref:is_player() and not ignores[target.ref] and + ctf_modebase:get_current_mode().can_punchplayer(attacker, target.ref) then + ignores[target.ref] = true -- add to the table we were passed + + target.ref:punch(attacker, attack_interval, attack_capabilities, dir) + + minetest.sound_play("player_damage", { + object = attacker, + exclude_player = target.ref:get_player_name(), + pitch = 0.8, + gain = 0.4, + max_hear_distance = COMBAT_SOUND_DISTANCE, + }, true) + + return true + end + + return false +end + +local function slash_stab_sword_func(keypress, itemstack, user, pointed) + local uname = user:get_player_name() + local cooldown = attack_cooldown:get(uname) + local anim = (keypress == "LMB" and "stab") or "slash" + + if cooldown then + -- if the cooldown has <= 0.3 seconds left then let them queue another stab + if anim == "stab" and cooldown._time - (os.clock() - cooldown.start_time) <= 0.3 then + -- Don't queue a miss + if not pointed or pointed.type ~= "object" then + return + end + + cooldown._on_end = function(self) + local player = minetest.get_player_by_name(uname) + + if not player then return end + + local wielded = player:get_wielded_item() + + if wielded:get_name() ~= itemstack:get_name() then return end + + slash_stab_sword_func(keypress, wielded, user, pointed) + end + end + + return + end + + local attack_interval = slash_stab_anim_length + EXTRA_ANIM_LENGTH[anim] + + ctf_player.set_stab_slash_anim(anim, user, EXTRA_ANIM_LENGTH[anim]) + + attack_cooldown:set(uname, { + _time = attack_interval, + _on_end = function(self) -- Repeat attack if player is holding down the button + local player = minetest.get_player_by_name(uname) + + if not player then return end + + local controls = player:get_player_control() + local wielded = player:get_wielded_item() + + if wielded:get_name() == itemstack:get_name() and (controls.LMB or controls.RMB) then + if not controls[keypress] then + keypress = (keypress == "LMB") and "RMB" or "LMB" + end + + slash_stab_sword_func(keypress, wielded, player, nil) + end + end, + }) + + local startpos = vector.offset(user:get_pos(), 0, user:get_properties().eye_height, 0) + + local def = itemstack:get_definition() + local attack_capabilities = def.tool_capabilities + + local dir = user:get_look_dir() + local user_kb_dir = vector.new(dir) + + local ignores = {[user] = true} + local section = math.pi/12 + local hit_player = false + local axis + local rays + + attack_capabilities.damage_groups.knockback = KNOCKBACK[anim] + + axis = vector.cross(vector.new(dir.z, 0, -dir.x), dir) + + if pointed and pointed.type == "object" then + hit_player = dopunch(pointed, user, ignores, attack_capabilities, dir, attack_interval) or hit_player + + pointed = true + end + + if anim == "slash" then + user_kb_dir = -user_kb_dir + rays = { + vector.rotate_around_axis(dir, axis, section * 3), + vector.rotate_around_axis(dir, axis, section * 2), + vector.rotate_around_axis(dir, axis, section ), + + vector.rotate_around_axis(dir, axis, -section * 3), + vector.rotate_around_axis(dir, axis, -section * 2), + vector.rotate_around_axis(dir, axis, -section ), + + (pointed ~= true) and dir or nil, + } + + minetest.sound_play("ctf_melee_whoosh", { + object = user, + pitch = 1.1, + gain = 1.2, + max_hear_distance = SWOOSH_SOUND_DISTANCE, + }, true) + else + rays = { + (pointed ~= true) and dir or nil, + vector.rotate_around_axis(dir, axis, -section), + vector.rotate_around_axis(dir, axis, section), + } + + minetest.sound_play("ctf_melee_whoosh", { + object = user, + gain = 1.1, + max_hear_distance = SWOOSH_SOUND_DISTANCE, + }, true) + end + + user_kb_dir.y = math.max(math.min(user_kb_dir.y, 0.4), 0) + + for _, shootdir in ipairs(rays) do + local ray = minetest.raycast(startpos, startpos + (shootdir * 4), true, false) + + minetest.add_particle({ + pos = startpos, + velocity = shootdir * 44, + expirationtime = 0.1, + size = 5, + collisiondetection = true, + collision_removal = true, + object_collision = false, + texture = "ctf_melee_slash.png", + glow = 5, + }) + + for hit in ray do + if hit.type ~= "object" then break end + + hit_player = dopunch(hit, user, ignores, attack_capabilities, shootdir, attack_interval) or hit_player + end + end + + if hit_player then + user:add_velocity(user_kb_dir * HIT_BOOST) + end +end + +function ctf_melee.register_sword(name, def) + local base_def = { + description = def.description, + inventory_image = def.inventory_image, + inventory_overlay = def.inventory_overlay, + wield_image = def.wield_image, + damage_groups = def.damage_groups, + disable_mine_anim = true, + tool_capabilities = { + full_punch_interval = slash_stab_anim_length, + max_drop_level=1, + groupcaps={ + snappy={times={[1]=2.5, [2]=1.20, [3]=0.35}, uses=0, maxlevel=3}, + }, + punch_attack_uses = 0, + }, + sound = {breaks = "default_tool_breaks"}, + groups = def.groups or {}, + } + + local damage_capabilities = base_def.tool_capabilities + damage_capabilities.damage_groups = base_def.damage_groups + + base_def.groups.sword = 1 + + local function rightclick_func(...) + slash_stab_sword_func("RMB", ...) + + if def.rightclick_func then + return def.rightclick_func(...) + end + end + + base_def.on_use = function(itemstack, user, pointed, ...) + if pointed then + if pointed.type == "object" then + if not pointed.ref:is_player() then + pointed.ref:punch(user, slash_stab_anim_length, damage_capabilities, vector.new()) + return + end + elseif pointed.type == "node" then + local node = minetest.get_node(pointed.under) + local node_on_punch = minetest.registered_nodes[node.name].on_punch + + if node_on_punch then + node_on_punch(pointed.under, node, user, pointed) + end + end + end + + slash_stab_sword_func("LMB", itemstack, user, pointed, ...) + end + + base_def.on_place = function(itemstack, user, pointed, ...) + local pointed_def = false + local node + + if pointed and pointed.under then + node = minetest.get_node(pointed.under) + pointed_def = minetest.registered_nodes[node.name] + end + + if pointed_def and pointed_def.on_rightclick then + return minetest.item_place(itemstack, user, pointed) + else + return rightclick_func(itemstack, user, pointed, ...) + end + end + + base_def.on_secondary_use = rightclick_func + + minetest.register_tool(name, base_def) + ctf_melee.registered_swords[name] = base_def +end + for mat, def in pairs(sword_mats) do ctf_melee.simple_register_sword("ctf_melee:sword_"..mat, def) diff --git a/mods/ctf/ctf_combat/ctf_melee/mod.conf b/mods/ctf/ctf_combat/ctf_melee/mod.conf index 9462315..0318586 100644 --- a/mods/ctf/ctf_combat/ctf_melee/mod.conf +++ b/mods/ctf/ctf_combat/ctf_melee/mod.conf @@ -1,2 +1,2 @@ name = ctf_melee -depends = ctf_core +depends = ctf_core, ctf_player diff --git a/mods/ctf/ctf_combat/ctf_melee/sounds/ctf_melee_whoosh.ogg b/mods/ctf/ctf_combat/ctf_melee/sounds/ctf_melee_whoosh.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cf98113d34cbea6841ca23d37ae1eff8c11a8d12 GIT binary patch literal 9567 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 Y8_-AEuD+IUd>2{&QsDG!8Gh)$0O~t~4*&oF literal 0 HcmV?d00001 diff --git a/mods/ctf/ctf_combat/ctf_melee/textures/ctf_melee_slash.png b/mods/ctf/ctf_combat/ctf_melee/textures/ctf_melee_slash.png new file mode 100644 index 0000000000000000000000000000000000000000..f73fe91fc2cce32f5ef8693ca79fa6a38d5f7c7c GIT binary patch literal 589 zcmV-T0EX>4Tx04R}tkv&MmKpe$i(~2S$2P;T%$WWauh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRY9h#?>`Q%`0Vv+x{W_we!cF3PjK&;2e3JS*_Mt`=0!T!GgAu;X2JxB(Q`eQV=1djtZ)<5T#Wk#YCF+;~xI7<4=)GCRYWF z91EyHh2;3b|KNAGW^sDTO$x?=o)_Ex7z28DfmXw|zmILZbprUGfh(=!uQh?#C+Urj z7C8b2w}Ff6jwbH`mpj17lP(#OBl&3x#Uk*2M&FbNhHioWHMh6+K29HiEOoVf0~{Oz z<0Z;o_jq?-cW?imY4`U7pXYM92@X@B00006VoOIv0J;Fd0L9o>VS)ev010qNS#tmY zE+YT{E+YYWr9XB6000McNliru<^mcP1qdRl6%hac02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{001RPL_t(I%VS^|1;Yg_Te0##0|NuYu7gKWXrjc)(u72h bf?)vwkliwb=kfPi00000NkvXXu0mjfGH~)# literal 0 HcmV?d00001 diff --git a/mods/ctf/ctf_combat/ctf_ranged/init.lua b/mods/ctf/ctf_combat/ctf_ranged/init.lua index 47c92a0..1e521af 100644 --- a/mods/ctf/ctf_combat/ctf_ranged/init.lua +++ b/mods/ctf/ctf_combat/ctf_ranged/init.lua @@ -1,8 +1,11 @@ -ctf_ranged = {} local hud = mhud.init() local shoot_cooldown = ctf_core.init_cooldowns() -local scoped = {} +ctf_ranged = { + scoped = {} +} + +local scoped = ctf_ranged.scoped local scale_const = 6 local timer = 1 @@ -23,11 +26,17 @@ local function process_ray(ray, user, look_dir, def) if hitpoint then if hitpoint.type == "node" then - local nodedef = minetest.registered_nodes[minetest.get_node(hitpoint.under).name] + local node = minetest.get_node(hitpoint.under) + local nodedef = minetest.registered_nodes[node.name] - if nodedef.groups.snappy or (nodedef.groups.oddly_breakable_by_hand or 0) >= 3 then + if nodedef.groups.snappy or nodedef.groups.ranged_breakable or + (nodedef.groups.oddly_breakable_by_hand or 0) >= 3 then if not minetest.is_protected(hitpoint.under, user:get_player_name()) then - minetest.dig_node(hitpoint.under) + if nodedef.groups.ranged_breakable and nodedef.on_dig then + nodedef.on_dig(hitpoint.under, node, user) + else + minetest.dig_node(hitpoint.under) + end end else if nodedef.walkable and nodedef.pointable then @@ -112,6 +121,7 @@ function ctf_ranged.simple_register_gun(name, def) loaded_def.inventory_overlay = def.texture_overlay loaded_def.wield_image = def.wield_texture or def.texture loaded_def.groups.not_in_creative_inventory = nil + loaded_def.on_secondary_use = def.on_secondary_use loaded_def.on_use = function(itemstack, user) if not ctf_ranged.can_use_gun(user, name) then minetest.sound_play("ctf_ranged_click", {pos = user:get_pos()}, true) @@ -186,13 +196,17 @@ minetest.register_on_leaveplayer(function(player) scoped[player:get_player_name()] = nil end) -local function show_scope(name, item_name, fov_mult) +function ctf_ranged.show_scope(name, item_name, fov_mult) local player = minetest.get_player_by_name(name) if not player then return end - scoped[name] = item_name + scoped[name] = { + item_name = item_name, + wielditem = player:hud_get_flags().wielditem + } + hud:add(player, "ctf_ranged:scope", { hud_elem_type = "image", position = {x = 0.5, y = 0.5}, @@ -207,18 +221,17 @@ local function show_scope(name, item_name, fov_mult) end -local function hide_scope(name) +function ctf_ranged.hide_scope(name) local player = minetest.get_player_by_name(name) if not player then return end - scoped[name] = nil hud:remove(name, "ctf_ranged:scope") player:set_fov(0) physics.remove(name, "sniper_rifles:scoping") - player:hud_set_flags({ wielditem = true }) - + player:hud_set_flags({ wielditem = scoped[name].wielditem }) + scoped[name] = nil end ctf_ranged.simple_register_gun("ctf_ranged:pistol", { @@ -289,10 +302,10 @@ ctf_ranged.simple_register_gun("ctf_ranged:sniper", { liquid_travel_dist = 10, rightclick_func = function(itemstack, user, pointed, ...) if scoped[user:get_player_name()] then - hide_scope(user:get_player_name()) + ctf_ranged.hide_scope(user:get_player_name()) else local item_name = itemstack:get_name():gsub("_loaded", "") - show_scope(user:get_player_name(), item_name, 4) + ctf_ranged.show_scope(user:get_player_name(), item_name, 4) end end }) @@ -309,10 +322,10 @@ ctf_ranged.simple_register_gun("ctf_ranged:sniper_magnum", { liquid_travel_dist = 15, rightclick_func = function(itemstack, user, pointed, ...) if scoped[user:get_player_name()] then - hide_scope(user:get_player_name()) + ctf_ranged.hide_scope(user:get_player_name()) else local item_name = itemstack:get_name():gsub("_loaded", "") - show_scope(user:get_player_name(), item_name, 8) + ctf_ranged.show_scope(user:get_player_name(), item_name, 8) end end }) @@ -332,11 +345,11 @@ minetest.register_globalstep(function(dtime) end time = 0 - for name, original_item in pairs(scoped) do + for name, info in pairs(scoped) do local player = minetest.get_player_by_name(name) local wielded_item = player:get_wielded_item():get_name():gsub("_loaded", "") - if wielded_item ~= original_item then - hide_scope(name) + if wielded_item ~= info.item_name then + ctf_ranged.hide_scope(name) end end end) diff --git a/mods/ctf/ctf_core/cooldowns.lua b/mods/ctf/ctf_core/cooldowns.lua index e4f8519..e8fceb7 100644 --- a/mods/ctf/ctf_core/cooldowns.lua +++ b/mods/ctf/ctf_core/cooldowns.lua @@ -5,7 +5,7 @@ function ctf_core.init_cooldowns() local pname = PlayerName(player) if self.players[pname] then - self.players[pname]:cancel() + self.players[pname]._timer:cancel() if not time then self.players[pname] = nil @@ -13,7 +13,24 @@ function ctf_core.init_cooldowns() end end - self.players[pname] = minetest.after(time, function() self.players[pname] = nil end) + if type(time) ~= "table" then + time = {_time = time} + end + + time._timer = minetest.after(time._time, function() + if time._on_end then + local copy = table.copy(self.players[pname]) + + self.players[pname] = nil + time._on_end(copy) + else + self.players[pname] = nil + end + end) + + time.start_time = os.clock() + + self.players[pname] = time end, get = function(self, player) return self.players[PlayerName(player)] diff --git a/mods/ctf/ctf_map/ctf_traps.lua b/mods/ctf/ctf_map/ctf_traps.lua index ecd9d93..b16fab5 100644 --- a/mods/ctf/ctf_map/ctf_traps.lua +++ b/mods/ctf/ctf_map/ctf_traps.lua @@ -43,7 +43,7 @@ minetest.register_node("ctf_map:damage_cobble", { tiles = {"ctf_map_damage_cobble.png"}, is_ground_content = false, walkable = true, - groups = {cracky=3, stone=2}, + groups = {cracky=3, stone=2, ranged_breakable=1}, on_dig = function(pos, node, digger, extra) if not digger:is_player() then return end @@ -100,4 +100,4 @@ minetest.register_node("ctf_map:reinforced_cobble", { is_ground_content = false, groups = {cracky = 1, stone = 2}, sounds = default.node_sound_stone_defaults(), -}) \ No newline at end of file +}) diff --git a/mods/ctf/ctf_map/init.lua b/mods/ctf/ctf_map/init.lua index f002273..095fd19 100644 --- a/mods/ctf/ctf_map/init.lua +++ b/mods/ctf/ctf_map/init.lua @@ -87,7 +87,7 @@ minetest.register_chatcommand("ctf_map", { inv:add_item("main", "ctf_map:adminpick") end - if not ctf_core.settings.server_mode == "mapedit" then + if ctf_core.settings.server_mode ~= "mapedit" then minetest.chat_send_player(name, minetest.colorize("red", "It is not recommended to edit maps unless the server is in mapedit mode")) end diff --git a/mods/ctf/ctf_map/map_meta.lua b/mods/ctf/ctf_map/map_meta.lua index 8a90adf..aa4c915 100644 --- a/mods/ctf/ctf_map/map_meta.lua +++ b/mods/ctf/ctf_map/map_meta.lua @@ -3,7 +3,7 @@ local CURRENT_MAP_VERSION = "2" function ctf_map.skybox_exists(subdir) local list = minetest.get_dir_list(subdir, true) - return not (table.indexof(list, "skybox") == -1) + return table.indexof(list, "skybox") ~= -1 end function ctf_map.load_map_meta(idx, dirname) diff --git a/mods/ctf/ctf_map/mapedit_gui.lua b/mods/ctf/ctf_map/mapedit_gui.lua index d19b88e..a122b40 100644 --- a/mods/ctf/ctf_map/mapedit_gui.lua +++ b/mods/ctf/ctf_map/mapedit_gui.lua @@ -1,4 +1,4 @@ -ctf_gui.init() +ctf_gui.old_init() local context = {} @@ -40,7 +40,7 @@ function ctf_map.show_map_editor(player) table.sort(dirlist_sorted) local selected_map = 1 - ctf_gui.show_formspec(player, "ctf_map:start", { + ctf_gui.old_show_formspec(player, "ctf_map:start", { size = {x = 8, y = 10.2}, title = "Capture The Flag Map Editor", description = "Would you like to edit an existing map or create a new one?", @@ -92,7 +92,7 @@ function ctf_map.show_map_editor(player) pos = {0.1, 1.8}, func = function(pname, fields) minetest.after(0.1, function() - ctf_gui.show_formspec(pname, "ctf_map:loading", { + ctf_gui.old_show_formspec(pname, "ctf_map:loading", { size = {x = 6, y = 4}, title = "Capture The Flag Map Editor", description = "Placing map '"..dirlist_sorted[selected_map].."'. This will take a few seconds..." @@ -114,7 +114,7 @@ function ctf_map.show_map_editor(player) pos = {(8-ctf_gui.ELEM_SIZE.x) - 0.3, 1.8}, func = function(pname, fields) minetest.after(0.1, function() - ctf_gui.show_formspec(pname, "ctf_map:loading", { + ctf_gui.old_show_formspec(pname, "ctf_map:loading", { size = {x = 6, y = 4}, title = "Capture The Flag Map Editor", description = "Resuming map '"..dirlist_sorted[selected_map].. @@ -188,7 +188,7 @@ function ctf_map.show_map_save_form(player, scroll_pos) -- MAP ENABLED elements.enabled = { type = "checkbox", label = "Map Enabled", pos = {0, 2}, default = context[player].enabled, - func = function(pname, fields, name) context[pname].enabled = fields[name] == "true" or false end, + func = function(pname, fields) context[pname].enabled = fields.enabled == "true" or false end, } -- FOLDER NAME, MAP NAME, MAP AUTHOR(S), MAP HINT, MAP LICENSE, OTHER INFO @@ -201,8 +201,8 @@ function ctf_map.show_map_save_form(player, scroll_pos) type = "field", label = label, pos = {0, ypos}, size = {6, 0.7}, default = context[player][name], - func = function(pname, fields, fname) - context[pname][name] = fields[fname] + func = function(pname, fields) + context[pname][name] = fields[name] end, } @@ -213,8 +213,8 @@ function ctf_map.show_map_save_form(player, scroll_pos) elements.initial_stuff = { type = "field", label = "Map Initial Stuff", pos = {0, ypos}, size = {6, 0.7}, default = table.concat(context[player].initial_stuff or {"none"}, ","), - func = function(pname, fields, name) - context[pname].initial_stuff = string.split(fields[name]:gsub("%s?,%s?", ","), ",") + func = function(pname, fields) + context[pname].initial_stuff = string.split(fields.initial_stuff:gsub("%s?,%s?", ","), ",") end, } ypos = ypos + 1.4 @@ -223,8 +223,8 @@ function ctf_map.show_map_save_form(player, scroll_pos) elements.treasures = { type = "textarea", label = "Map Treasures", pos = {0, ypos}, size = {ctf_gui.FORM_SIZE.x-3.6, 2.1}, default = context[player].treasures, - func = function(pname, fields, name) - context[pname].treasures = fields[name] + func = function(pname, fields) + context[pname].treasures = fields.treasures end, } ypos = ypos + 3.1 @@ -243,12 +243,12 @@ function ctf_map.show_map_save_form(player, scroll_pos) size = {6, ctf_gui.ELEM_SIZE.y}, items = ctf_map.skyboxes, default_idx = table.indexof(ctf_map.skyboxes, context[player].skybox), - func = function(pname, fields, name) + func = function(pname, fields) local oldval = context[pname].skybox - context[pname].skybox = fields[name] + context[pname].skybox = fields.skybox if context[pname].skybox ~= oldval then - skybox.set(PlayerObj(pname), table.indexof(ctf_map.skyboxes, fields[name])-1) + skybox.set(PlayerObj(pname), table.indexof(ctf_map.skyboxes, fields.skybox)-1) end end, } @@ -279,7 +279,7 @@ function ctf_map.show_map_save_form(player, scroll_pos) pos = {0, ypos}, size = {ctf_gui.FORM_SIZE.x/2 - 0.2, 2}, items = context[player].game_modes, - func = function(pname, fields, fname) + func = function(pname, fields) local event = minetest.explode_textlist_event(fields.game_modes) if event.type == "DCL" then @@ -289,12 +289,12 @@ function ctf_map.show_map_save_form(player, scroll_pos) end end } - elements["available_game_modes"] = { + elements.available_game_modes = { type = "textlist", pos = {ctf_gui.FORM_SIZE.x/2 + 0.2, ypos}, size = {ctf_gui.FORM_SIZE.x/2 - 0.2, 2}, items = available_game_modes, - func = function(pname, fields, fname) + func = function(pname, fields) local event = minetest.explode_textlist_event(fields.available_game_modes) if event.type == "DCL" then @@ -312,12 +312,12 @@ function ctf_map.show_map_save_form(player, scroll_pos) type = "field", label = label, pos = {0, ypos}, size = {4, 0.7}, default = context[player]["phys_"..name] or 1, - func = function(pname, fields, fname) + func = function(pname, fields) local oldval = context[pname]["phys_"..name] - context[pname]["phys_"..name] = tonumber(fields[fname]) or 1 + context[pname]["phys_"..name] = tonumber(fields[name]) or 1 if context[pname]["phys_"..name] ~= oldval then - physics.set(pname, "ctf_map_editor_"..name, {[name] = tonumber(fields[fname] or 1)}) + physics.set(pname, "ctf_map_editor_"..name, {[name] = tonumber(fields[name] or 1)}) end end, } @@ -329,9 +329,9 @@ function ctf_map.show_map_save_form(player, scroll_pos) elements.start_time = { type = "field", label = "Map start_time", pos = {0, ypos}, size = {4, 0.7}, default = context[player].start_time or ctf_map.DEFAULT_START_TIME, - func = function(pname, fields, name) + func = function(pname, fields) local oldval = context[pname].start_time - context[pname].start_time = tonumber(fields[name] or ctf_map.DEFAULT_START_TIME) + context[pname].start_time = tonumber(fields.start_time or ctf_map.DEFAULT_START_TIME) if context[pname].start_time ~= oldval then minetest.registered_chatcommands["time"].func(pname, tostring(context[pname].start_time)) @@ -344,9 +344,9 @@ function ctf_map.show_map_save_form(player, scroll_pos) elements.time_speed = { type = "field", label = "Map time_speed (Multiplier)", pos = {0, ypos}, size = {4, 0.7}, default = context[player].time_speed or "1", - func = function(pname, fields, name) + func = function(pname, fields) local oldval = context[pname].time_speed - context[pname].time_speed = tonumber(fields[name] or "1") + context[pname].time_speed = tonumber(fields.time_speed or "1") if context[pname].time_speed ~= oldval then minetest.settings:set("time_speed", context[pname].time_speed * 72) @@ -363,8 +363,8 @@ function ctf_map.show_map_save_form(player, scroll_pos) label = HumanReadable(teamname) .. " Team", pos = {0, idx}, default = def.enabled, - func = function(pname, fields, name) - context[pname].teams[teamname].enabled = fields[name] == "true" or false + func = function(pname, fields) + context[pname].teams[teamname].enabled = fields[teamname.."_checkbox"] == "true" or false end, } idx = idx + 1 @@ -464,10 +464,10 @@ function ctf_map.show_map_save_form(player, scroll_pos) pos = {7.2, idx}, size = {1, ctf_gui.ELEM_SIZE.y}, default = context[player].chests[id].amount, - func = function(pname, fields, name) + func = function(pname, fields) if not context[pname].chests[id] then return end - local newnum = tonumber(fields[name]) + local newnum = tonumber(fields["chestzone_chests_"..id]) if newnum then context[pname].chests[id].amount = newnum end @@ -530,7 +530,7 @@ function ctf_map.show_map_save_form(player, scroll_pos) idx = idx + 1 -- Show formspec - ctf_gui.show_formspec(player, "ctf_map:save", { + ctf_gui.old_show_formspec(player, "ctf_map:save", { title = "Capture The Flag Map Editor", description = "Save your map or edit the config.\nRemember to press ENTER after writing to a field", scrollheight = 176 + ((idx - 24) * 10) + 4, diff --git a/mods/ctf/ctf_modebase/features.lua b/mods/ctf/ctf_modebase/features.lua index 35d0b98..b71ebd1 100644 --- a/mods/ctf/ctf_modebase/features.lua +++ b/mods/ctf/ctf_modebase/features.lua @@ -163,6 +163,33 @@ local function end_combat_mode(player, reason, killer, weapon_image) ctf_combat_mode.end_combat(player) end +local function can_punchplayer(player, hitter) + if not ctf_modebase.match_started then + return false, "The match hasn't started yet!" + end + + local pname, hname = player:get_player_name(), hitter:get_player_name() + local pteam, hteam = ctf_teams.get(player), ctf_teams.get(hitter) + + if not ctf_modebase.remove_respawn_immunity(hitter) then + return false, "You can't attack while immune" + end + + if not pteam then + return false, pname .. " is not in a team!" + end + + if not hteam then + return false, "You are not in a team!" + end + + if pteam == hteam and pname ~= hname then + return false, pname .. " is on your team!" + end + + return true +end + return { on_new_match = function() team_list = {} @@ -424,37 +451,21 @@ return { return "You need at least 10 score to access this chest", deny_pro end, + can_punchplayer = can_punchplayer, on_punchplayer = function(player, hitter, damage, _, tool_capabilities) if not hitter:is_player() or player:get_hp() <= 0 then return false end - if not ctf_modebase.match_started then - return false, "The match hasn't started yet!" - end + local allowed, message = can_punchplayer(player, hitter) - local pname, hname = player:get_player_name(), hitter:get_player_name() - local pteam, hteam = ctf_teams.get(player), ctf_teams.get(hitter) - - if not ctf_modebase.remove_respawn_immunity(hitter) then - return false, "You can't attack while immune" - end - - if not pteam then - return false, pname .. " is not in a team!" - end - - if not hteam then - return false, "You are not in a team!" - end - - if pteam == hteam and pname ~= hname then - return false, pname .. " is on your team!" + if not allowed then + return false, message end local weapon_image = get_weapon_image(hitter, tool_capabilities) if player:get_hp() <= damage then - end_combat_mode(pname, "punch", hname, weapon_image) - elseif pname ~= hname then + end_combat_mode(player:get_player_name(), "punch", hitter:get_player_name(), weapon_image) + elseif player:get_player_name() ~= hitter:get_player_name() then ctf_combat_mode.add_hitter(player, hitter, weapon_image, 15) end diff --git a/mods/ctf/ctf_modebase/flags/nodes.lua b/mods/ctf/ctf_modebase/flags/nodes.lua index e74d546..6b69ec6 100644 --- a/mods/ctf/ctf_modebase/flags/nodes.lua +++ b/mods/ctf/ctf_modebase/flags/nodes.lua @@ -15,7 +15,7 @@ if ctf_core.settings.server_mode == "play" then end local function show_flag_color_form(player, target_pos, param2) - ctf_gui.show_formspec(player, "ctf_modebase:flag_color_select", { + ctf_gui.old_show_formspec(player, "ctf_modebase:flag_color_select", { title = "Flag Color Selection", description = "Choose a color for this flag", privs = {ctf_map_editor = true}, @@ -30,7 +30,7 @@ local function show_flag_color_form(player, target_pos, param2) label = "Choose", exit = true, pos = {"center", 1.5}, - func = function(playername, fields, field_name) + func = function(playername, fields) if not target_pos or not fields.teams then return end minetest.set_node(target_pos, {name = "ctf_modebase:flag_top_"..fields.teams, param2 = param2}) diff --git a/mods/ctf/ctf_modebase/init.lua b/mods/ctf/ctf_modebase/init.lua index fcba365..edb78b6 100644 --- a/mods/ctf/ctf_modebase/init.lua +++ b/mods/ctf/ctf_modebase/init.lua @@ -38,7 +38,7 @@ ctf_modebase = { flag_captured = {}, } -ctf_gui.init() +ctf_gui.old_init() function ctf_modebase.announce(msg) end diff --git a/mods/ctf/ctf_modebase/map_catalog_show.lua b/mods/ctf/ctf_modebase/map_catalog_show.lua index 04e9aef..5f4d238 100644 --- a/mods/ctf/ctf_modebase/map_catalog_show.lua +++ b/mods/ctf/ctf_modebase/map_catalog_show.lua @@ -21,8 +21,8 @@ local function show_catalog(pname, current_map) }, rows = ctf_modebase.map_catalog.map_names, default_idx = current_map, - func = function(_, fields, name) - local evt = minetest.explode_table_event(fields[name]) + func = function(_, fields) + local evt = minetest.explode_table_event(fields.list) if evt.type == "CHG" then show_catalog(pname, evt.row) end @@ -153,7 +153,7 @@ local function show_catalog(pname, current_map) } end - ctf_gui.show_formspec(pname, "ctf_map:catalog", formspec) + ctf_gui.old_show_formspec(pname, "ctf_map:catalog", formspec) end minetest.register_chatcommand("maps", { diff --git a/mods/ctf/ctf_modebase/markers.lua b/mods/ctf/ctf_modebase/markers.lua index b674913..fc83735 100644 --- a/mods/ctf/ctf_modebase/markers.lua +++ b/mods/ctf/ctf_modebase/markers.lua @@ -1,11 +1,30 @@ local hud = mhud.init() +local marker_cooldown = ctf_core.init_cooldowns() local markers = {} local MARKER_LIFETIME = 20 local MARKER_RANGE = 150 +local MARKER_PLACE_INTERVAL = 5 ctf_modebase.markers = {} +-- Code taken from mods/mtg/mtg_binoculars, changed default FOV +function binoculars.update_player_property(player) + local new_zoom_fov = 84 + + if player:get_inventory():contains_item( + "main", "binoculars:binoculars") then + new_zoom_fov = 10 + elseif minetest.is_creative_enabled(player:get_player_name()) then + new_zoom_fov = 15 + end + + -- Only set property if necessary to avoid player mesh reload + if player:get_properties().zoom_fov ~= new_zoom_fov then + player:set_properties({zoom_fov = new_zoom_fov}) + end +end + local function add_marker(pname, pteam, message, pos, owner) if not hud:get(pname, "marker_" .. owner) then hud:add(pname, "marker_" .. owner, { @@ -88,72 +107,80 @@ ctf_api.register_on_match_end(function() hud:remove_all() end) +local function marker_func(name, param) + local pteam = ctf_teams.get(name) + + if marker_cooldown:get(name) then + return false, "You can only place a marker every "..MARKER_PLACE_INTERVAL.." seconds" + end + + if not pteam then + return false, "You need to be in a team to use markers!" + end + + local player = minetest.get_player_by_name(name) + local pos1 = vector.offset(player:get_pos(), 0, player:get_properties().eye_height, 0) + + if param == "" then + param = "Look here!" + end + + local ray = minetest.raycast( + pos1, vector.add(pos1, vector.multiply(player:get_look_dir(), MARKER_RANGE), + true, false + )) + local pointed = ray:next() + + if pointed and pointed.type == "object" and pointed.ref == player then + pointed = ray:next() + end + + if not pointed then + return false, "Can't find anything to mark, too far away!" + end + + local message = string.format("m [%s]: %s", name, param) + local pos + + if pointed.type == "object" then + local concat + local obj = pointed.ref + local entity = obj:get_luaentity() + + -- If object is a player, append player name to display text + -- Else if obj is item entity, append item description and count to str. + if obj:is_player() then + concat = obj:get_player_name() + elseif entity then + if entity.name == "__builtin:item" then + local stack = ItemStack(entity.itemstring) + local itemdef = minetest.registered_items[stack:get_name()] + + -- Fallback to itemstring if description doesn't exist + concat = itemdef.description or entity.itemstring + concat = concat .. " " .. stack:get_count() + end + end + + pos = obj:get_pos() + if concat then + message = message .. " <" .. concat .. ">" + end + else + pos = pointed.under + end + + ctf_modebase.markers.add(name, message, pos) + + marker_cooldown:set(name, MARKER_PLACE_INTERVAL) + + return true, "Marker is placed!" +end + minetest.register_chatcommand("m", { description = "Place a marker in your look direction", privs = {interact = true, shout = true}, - func = function(name, param) - local pteam = ctf_teams.get(name) - - if not pteam then - return false, "You need to be in a team to use markers!" - end - - local player = minetest.get_player_by_name(name) - local pos1 = vector.offset(player:get_pos(), 0, player:get_properties().eye_height, 0) - - if param == "" then - param = "Look here!" - end - - local ray = minetest.raycast( - pos1, vector.add(pos1, vector.multiply(player:get_look_dir(), MARKER_RANGE), - true, false - )) - local pointed = ray:next() - - if pointed and pointed.type == "object" and pointed.ref == player then - pointed = ray:next() - end - - if not pointed then - return false, "Can't find anything to mark, too far away!" - end - - local message = string.format("m [%s]: %s", name, param) - local pos - - if pointed.type == "object" then - local concat - local obj = pointed.ref - local entity = obj:get_luaentity() - - -- If object is a player, append player name to display text - -- Else if obj is item entity, append item description and count to str. - if obj:is_player() then - concat = obj:get_player_name() - elseif entity then - if entity.name == "__builtin:item" then - local stack = ItemStack(entity.itemstring) - local itemdef = minetest.registered_items[stack:get_name()] - - -- Fallback to itemstring if description doesn't exist - concat = itemdef.description or entity.itemstring - concat = concat .. " " .. stack:get_count() - end - end - - pos = obj:get_pos() - if concat then - message = message .. " <" .. concat .. ">" - end - else - pos = pointed.under - end - - ctf_modebase.markers.add(name, message, pos) - - return true, "Marker is placed!" - end + func = marker_func }) minetest.register_chatcommand("mr", { @@ -163,3 +190,38 @@ minetest.register_chatcommand("mr", { return true, "Marker is removed!" end }) + +local check_interval = 0.3 +local timer = 0 +minetest.register_globalstep(function(dtime) + timer = timer + dtime + + if timer < check_interval then return end + timer = 0 + + for _, player in pairs(minetest.get_connected_players()) do + local controls = player:get_player_control() + + if controls.zoom then + local marker_text = false + + if controls.LMB then + marker_text = "" + elseif controls.RMB then + marker_text = "Defend!" + end + + if marker_text then + local success, msg = marker_func(player:get_player_name(), marker_text) + + if not success and msg then + hud_events.new(player, { + text = msg, + color = "warning", + quick = true, + }) + end + end + end + end +end) diff --git a/mods/ctf/ctf_modebase/match.lua b/mods/ctf/ctf_modebase/match.lua index f2cc0fa..cc60180 100644 --- a/mods/ctf/ctf_modebase/match.lua +++ b/mods/ctf/ctf_modebase/match.lua @@ -45,7 +45,7 @@ local function start_new_match() end if restart_on_next_match then - minetest.request_shutdown("Restarting server at imperator request.", true) + minetest.request_shutdown("Restarting server at imperator request.\nTip: Count to 7 before clicking reconnect", true) return end diff --git a/mods/ctf/ctf_modebase/mod.conf b/mods/ctf/ctf_modebase/mod.conf index 786f420..f585cb4 100644 --- a/mods/ctf/ctf_modebase/mod.conf +++ b/mods/ctf/ctf_modebase/mod.conf @@ -1,2 +1,2 @@ name = ctf_modebase -depends = ctf_api, ctf_core, ctf_teams, ctf_gui, ctf_map, ctf_healing, crafting, mhud, default +depends = ctf_api, ctf_core, ctf_teams, ctf_gui, ctf_map, ctf_healing, crafting, mhud, default, binoculars diff --git a/mods/ctf/ctf_modebase/mode_vote.lua b/mods/ctf/ctf_modebase/mode_vote.lua index a171f3c..190dfe4 100644 --- a/mods/ctf/ctf_modebase/mode_vote.lua +++ b/mods/ctf/ctf_modebase/mode_vote.lua @@ -32,6 +32,7 @@ local function show_modechoose_form(player) label = i, exit = true, pos = {"center", i}, + size = {1.4, 0.7}, func = function() if votes then player_vote(player, i) @@ -40,8 +41,8 @@ local function show_modechoose_form(player) } end - ctf_gui.show_formspec(player, "ctf_modebase:mode_select", { - size = {x = 8, y = 8}, + ctf_gui.old_show_formspec(player, "ctf_modebase:mode_select", { + size = {x = 8, y = MAX_ROUNDS + 3}, title = "Mode: "..HumanReadable(new_mode), description = "Please vote on how many matches you would like to play", elements = elements, diff --git a/mods/ctf/ctf_modebase/respawn_delay.lua b/mods/ctf/ctf_modebase/respawn_delay.lua index 0f3ed03..7043900 100644 --- a/mods/ctf/ctf_modebase/respawn_delay.lua +++ b/mods/ctf/ctf_modebase/respawn_delay.lua @@ -1,4 +1,5 @@ local RESPAWN_SECONDS = 7 +local AUTO_RESPAWN_TIME = 0.4 local respawn_delay = {} local hud = mhud.init() @@ -75,6 +76,23 @@ local function respawn(player, time) run_respawn_timer(pname) end +local function trigger_respawn(pname) + if respawn_delay[pname] then + if respawn_delay[pname].autorespawn then + respawn_delay[pname].autorespawn:cancel() + respawn_delay[pname].autorespawn = nil + end + + respawn(minetest.get_player_by_name(pname), RESPAWN_SECONDS) + else + local player = minetest.get_player_by_name(pname) + + if player then + ctf_modebase.on_respawnplayer(player) + end + end +end + function ctf_modebase.prepare_respawn_delay(player) local pname = player:get_player_name() if respawn_delay[pname] then return end @@ -90,6 +108,11 @@ function ctf_modebase.prepare_respawn_delay(player) player:set_attach(obj) respawn_delay[pname].obj = obj end + + respawn_delay[pname].autorespawn = minetest.after(AUTO_RESPAWN_TIME, function() + minetest.close_formspec(pname, "") -- This is the only way to close clientside formspecs + trigger_respawn(pname) + end) end ctf_api.register_on_match_end(function() @@ -117,11 +140,9 @@ minetest.register_on_leaveplayer(function(player) end) minetest.register_on_respawnplayer(function(player) - if respawn_delay[player:get_player_name()] then - respawn(player, RESPAWN_SECONDS) - else - ctf_modebase.on_respawnplayer(player) - end + local pname = player:get_player_name() + + trigger_respawn(pname) return true end) diff --git a/mods/ctf/ctf_modebase/summary.lua b/mods/ctf/ctf_modebase/summary.lua index 51f9689..9e6b661 100644 --- a/mods/ctf/ctf_modebase/summary.lua +++ b/mods/ctf/ctf_modebase/summary.lua @@ -237,7 +237,7 @@ function ctf_modebase.summary.show_gui_sorted(name, rankings, special_rankings, } end - ctf_gui.show_formspec(name, "ctf_modebase:summary", formspec) + ctf_gui.old_show_formspec(name, "ctf_modebase:summary", formspec) end ctf_core.register_chatcommand_alias("summary", "s", { diff --git a/mods/ctf/ctf_modebase/textures/ctf_modebase_group.png b/mods/ctf/ctf_modebase/textures/ctf_modebase_group.png new file mode 100644 index 0000000000000000000000000000000000000000..9d531cc1ef818a21a59b56106a8c4d4206d1d792 GIT binary patch literal 630 zcmV-+0*U>JP)EX>4Tx04R}tkv&MmKpe$iQ?()$5i^K5WT;LSq>4C76^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|=;Wm6A|?JWDYS_7;J6>}?mh0_0YbgZG^=Y8&~)2O z#-dUtyD9}=T4_we!cF3ht!pZjz4t2v7SK8bja8KzCVK|Hf* z8=UuvMOKtm;&b8&lP*a7$aTfzH_io@1)eFI>Et}INGuiFSZQNcG&SOB;*hH8lrLmF zRyl8R*2-1ZyeEHQFsHAixK48vF)SgD1SBY^qJ%PRglW}Dv5=(wXb1m@>raqNAy)~E z91EyGgY5dj|KNAGR(>ktB?Y5E_lx6vi~)gNpiy(2?_(i|qi@OrL$^TRn%7%%AEysMnz~xP0S*p< z@d9P9cX)SidvE`qY4-O6e2H?a2Ebf-00006VoOIv0N4Nk002P7kLLgY010qNS#tmY zE+YT{E+YYWr9XB6000McNliru<^l%~F*BJD7=Hi&02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{002%&L_t(I%VS^|-rxoU!+$LXhX44~Fwxw0LatzMNf%5++CH2C0DM;;ykMi^ Q$N&HU07*qoM6N<$f~-aax&QzG literal 0 HcmV?d00001 diff --git a/mods/ctf/ctf_modes/ctf_mode_classes/classes.lua b/mods/ctf/ctf_modes/ctf_mode_classes/classes.lua index a12524f..ee1d9b9 100644 --- a/mods/ctf/ctf_modes/ctf_mode_classes/classes.lua +++ b/mods/ctf/ctf_modes/ctf_mode_classes/classes.lua @@ -1,14 +1,16 @@ ctf_gui.init() + local cooldowns = ctf_core.init_cooldowns() local CLASS_SWITCH_COOLDOWN = 30 -local readable_class_list = {"Knight", "Ranged", "Support"} +local classes = {} + local class_list = {"knight", "ranged", "support"} local class_props = { knight = { name = "Knight", - description = "High HP class with a sword capable of strong damage bursts, +50% health points", - hp_max = 28, + description = "High HP class with a sword capable of short damage bursts", + hp_max = 30, visual_size = vector.new(1.1, 1.05, 1.1), items = { "ctf_mode_classes:knight_sword", @@ -20,7 +22,7 @@ local class_props = { }, support = { name = "Support", - description = "Normal HP class with healing bandages, an immunity ability, and building tools, +10% speed", + description = "Helper class with healing bandages, an immunity ability, and building gear", physics = {speed = 1.1}, items = { "ctf_mode_classes:support_bandage", @@ -33,12 +35,14 @@ local class_props = { "ctf_ranged:shotgun", "ctf_melee:", }, + disallowed_items_markup = { + ["ctf_melee:"] = "default_tool_steelsword.png^ctf_modebase_group.png", + }, }, ranged = { - name = "Ranged", - description = "Low HP ranged class with a rifle/grenade launcher gun, and a scaling ladder for reaching high places", - hp_max = 14, - visual_size = vector.new(0.9, 0.95, 0.9), + name = "Scout", + description = "Ranged class with a scoped rifle/grenade launcher and a scaling ladder for reaching high places", + visual_size = vector.new(0.9, 1, 0.9), items = { "ctf_mode_classes:ranged_rifle_loaded", "ctf_mode_classes:scaling_ladder" @@ -46,9 +50,54 @@ local class_props = { disallowed_items = { "ctf_melee:", }, + disallowed_items_markup = { + ["ctf_melee:"] = "default_tool_steelsword.png^ctf_modebase_group.png", + }, } } +minetest.register_on_mods_loaded(function() + for k, class_prop in pairs(class_props) do + local items_markup = "" + local disallowed_items_markup = "" + + for _, iname in ipairs(class_prop.items or {}) do + local item = ItemStack(iname) + local count = item:get_count() + + if count <= 1 then + count = nil + else + count = " x"..count + end + + local desc = string.split(item:get_description(), "\n", false, 1) + items_markup = string.format("%s%s\n\n\n\n", + items_markup, + minetest.formspec_escape(desc[1]) .. (count and count or ""), + item:get_name() + ) + end + + for _, iname in ipairs(class_prop.disallowed_items or {}) do + if minetest.registered_items[iname] then + disallowed_items_markup = string.format("%s", + disallowed_items_markup, + iname + ) + else + disallowed_items_markup = string.format("%s", + disallowed_items_markup, + class_prop.disallowed_items_markup[iname] + ) + end + end + + class_props[k].items_markup = items_markup:sub(1, -2) -- Remove \n at the end of str + class_props[k].disallowed_items_markup = disallowed_items_markup + end +end) + local function dist_from_flag(player) local tname = ctf_teams.get(player) if not tname then return 0 end @@ -60,8 +109,21 @@ end --- Knight Sword -- -local KNIGHT_COOLDOWN_TIME = 42 -local KNIGHT_USAGE_TIME = 12 +-- ctf_melee.register_sword("ctf_mode_classes:knight_sword", { +-- description = "Knight Sword", +-- inventory_image = "default_tool_bronzesword.png", +-- damage_groups = {fleshy = 5}, +-- }) + +local KNIGHT_COOLDOWN_TIME = 26 +local KNIGHT_USAGE_TIME = 8 + +ctf_settings.register("ctf_mode_classes:simple_knight_activate", { + type = "bool", + label = "[Classes] Simple Knight sword activation", + description = "If enabled you don't need to hold Sneak/Run to activate the rage ability", + default = "false", +}) ctf_melee.simple_register_sword("ctf_mode_classes:knight_sword", { description = "Knight Sword\n" .. minetest.colorize("gold", @@ -73,8 +135,10 @@ ctf_melee.simple_register_sword("ctf_mode_classes:knight_sword", { damage_groups = {fleshy = 7}, full_punch_interval = 0.7, rightclick_func = function(itemstack, user, pointed) - local ctl = user:get_player_control() - if not ctl.sneak and not ctl.aux1 then return end + if ctf_settings.get(user, "ctf_mode_classes:simple_knight_activate") ~= "true" then + local ctl = user:get_player_control() + if not ctl.sneak and not ctl.aux1 then return end + end local pname = user:get_player_name() @@ -110,16 +174,19 @@ ctf_melee.simple_register_sword("ctf_mode_classes:knight_sword", { end, }) + -- --- Ranged Gun -- -local RANGED_COOLDOWN_TIME = 36 +local RANGED_COOLDOWN_TIME = 31 +local RANGED_ZOOM_MULT = 3 +local scoped = ctf_ranged.scoped ctf_ranged.simple_register_gun("ctf_mode_classes:ranged_rifle", { type = "classes_rifle", - description = "Rifle\n" .. minetest.colorize("gold", - "(Sneak/Run) + Rightclick to launch grenade ("..RANGED_COOLDOWN_TIME.."s cooldown)"), + description = "Scout Rifle\n" .. minetest.colorize("gold", + "Rightclick + (Sneak/Run) to launch grenade ("..RANGED_COOLDOWN_TIME.."s cooldown), otherwise will toggle scope"), texture = "ctf_mode_classes_ranged_rifle.png", texture_overlay = "ctf_modebase_special_item.png^[transformFX", wield_texture = "ctf_mode_classes_ranged_rifle.png", @@ -131,7 +198,20 @@ ctf_ranged.simple_register_gun("ctf_mode_classes:ranged_rifle", { liquid_travel_dist = 4, rightclick_func = function(itemstack, user, pointed) local ctl = user:get_player_control() - if not ctl.sneak and not ctl.aux1 then return end + + if not ctl.sneak and not ctl.aux1 then + local uname = user:get_player_name() + + if not ctl.zoom then + if scoped[uname] then + ctf_ranged.hide_scope(uname) + else + ctf_ranged.show_scope(uname, "ctf_mode_classes:ranged_rifle", RANGED_ZOOM_MULT) + end + end + + return + end if itemstack:get_wear() == 0 then grenades.throw_grenade("grenades:frag", 24, user) @@ -243,8 +323,6 @@ ctf_healing.register_bandage("ctf_mode_classes:support_bandage", { end }) - -local classes = {} function classes.get_name(player) local meta = player:get_meta() @@ -261,6 +339,10 @@ function classes.get(player) return class_props[classes.get_name(player)] end +function classes.get_skin_overlay(player_or_class, class) + return "^ctf_mode_classes_" .. (class and player_or_class or classes.get_name(player_or_class)) .. "_overlay.png" +end + function classes.update(player) local class = classes.get(player) @@ -309,14 +391,10 @@ local function select_class(player, classname) end end -function classes.show_class_formspec(player, selected) +function classes.show_class_formspec(player) player = PlayerObj(player) if not player then return end - if not selected then - selected = table.indexof(class_list, classes.get_name(player)) - end - if not cooldowns:get(player) then if dist_from_flag(player) > 5 then hud_events.new(player, { @@ -327,38 +405,96 @@ function classes.show_class_formspec(player, selected) return end - local elements = {} + local pteam = ctf_teams.get(player) - elements.class_select = { - type = "dropdown", - items = readable_class_list, - default_idx = selected, - pos = {x = 0, y = 0.5}, - func = function(playername, fields, field_name) - local new_idx = table.indexof(readable_class_list, fields[field_name]) + ctf_gui.show_formspec(player, "ctf_mode_classes:class_form", function(context) + local form_x, form_y = 12, 10 - if new_idx ~= selected then - classes.show_class_formspec(playername, new_idx) + local bar_h = 2.2 + local bw = 5 + + local class = context.class + local class_prop = class_props[class] + + return ctf_gui.list_to_formspec_str({ + "formspec_version[4]", + {"size[%f,%f]", form_x, form_y+1.1}, + "real_coordinates[true]", + {"hypertext[0,0.2;%f,1.3;title;
Class Selection
]", form_x}, + + {"hypertext[0,%f;%f,1;classname;
]", + bar_h-0.9, + form_x, + class_prop.name + }, + {"box[0,%f;%f,0.8;#00000022]", bar_h-0.9, form_x}, + {"image_button[0.1,%f;0.8,0.8;creative_prev_icon.png;prev_class;]", bar_h-0.9}, + {"image_button[%f,%f;0.8,0.8;creative_next_icon.png;next_class;]", form_x-0.9, bar_h-0.9}, + + {"box[0.1,2.3;%f,%f;#00000077]", (form_x/2)-0.8, form_y-2.4}, + {"model[0.1,2.3;%f,%f;classpreview;character.b3d;%s;{0,160};;;]", + (form_x/2)-0.8, + form_y-2.4, + ctf_cosmetics.get_colored_skin(player, pteam and ctf_teams.team[pteam].color) .. + classes.get_skin_overlay(class, true) or "" + }, + {[[hypertext[%f,2.3;%f,%f;info; +
%s
+ %d HP + %s + %s + Disallowed Items + %s + ] ]], + (form_x/2)-0.6, + (form_x/2)+0.5, + form_y-2.4, + class_prop.description, + class_prop.hp_max or minetest.PLAYER_MAX_HP_DEFAULT, + class_prop.physics and class_prop.physics.speed and + " "..class_prop.physics.speed.."x Speed\n" or "", + class_prop.items_markup, + class_prop.disallowed_items_markup + }, + "style[select;font_size=*1.5]", + {"button_exit[%f,%f;%f,1;select;Choose Class]", (form_x/2) - (bw/2), form_y, bw}, + }) + end, { + class = classes.get_name(player) or "knight", + _on_formspec_input = function(pname, context, fields) + if fields.prev_class then + local classidx = table.indexof(class_list, context.class) - 1 + + if classidx < 1 then + classidx = #class_list + end + + context.class = class_list[classidx] + + return "refresh" + elseif fields.next_class then + local classidx = table.indexof(class_list, context.class) + 1 + + if classidx > #class_list then + classidx = 1 + end + + context.class = class_list[classidx] + + return "refresh" + elseif fields.select and classes.get_name(player) ~= context.class then + if dist_from_flag(player) > 5 then + hud_events.new(player, { + quick = true, + text = "You can only change class at your flag!", + color = "warning", + }) + return + end + + select_class(pname, context.class) end end, - } - - elements.select_class = { - type = "button", - exit = true, - label = "Choose Class", - pos = {x = ctf_gui.ELEM_SIZE.x + 0.5, y = 0.5}, - func = function(playername, fields, field_name) - select_class(playername, class_list[selected]) - end, - } - - ctf_gui.show_formspec(player, "ctf_mode_classes:class_form", { - size = {x = (ctf_gui.ELEM_SIZE.x * 2) + 1, y = 3.5}, - title = class_props[class_list[selected]].name, - description = class_props[class_list[selected]].description, - privs = {interact = true}, - elements = elements, }) else hud_events.new(player, { diff --git a/mods/ctf/ctf_modes/ctf_mode_classes/init.lua b/mods/ctf/ctf_modes/ctf_mode_classes/init.lua index 9628b2c..708173d 100644 --- a/mods/ctf/ctf_modes/ctf_mode_classes/init.lua +++ b/mods/ctf/ctf_modes/ctf_mode_classes/init.lua @@ -60,8 +60,7 @@ ctf_modebase.register_mode("classes", { "deaths", "hp_healed" }, - build_timer = 60 * 1.5, - + build_timer = 60, is_bound_item = function(_, name) if name:match("ctf_mode_classes:") or name:match("ctf_melee:") or name == "ctf_healing:bandage" then return true @@ -78,7 +77,7 @@ ctf_modebase.register_mode("classes", { ctf_modebase.bounties.get_next_bounty = ctf_modebase.bounty_algo.kd.get_next_bounty ctf_cosmetics.get_skin = function(player) - return old_get_skin(player) .. "^ctf_mode_classes_" .. classes.get_name(player) .. "_overlay.png" + return old_get_skin(player) .. classes.get_skin_overlay(player) end end, on_mode_end = function() @@ -107,8 +106,13 @@ ctf_modebase.register_mode("classes", { end, get_chest_access = features.get_chest_access, on_punchplayer = features.on_punchplayer, + can_punchplayer = features.can_punchplayer, on_healplayer = features.on_healplayer, - calculate_knockback = function() - return 0 + calculate_knockback = function(player, hitter, time_from_last_punch, tool_capabilities, dir, distance, damage) + if features.can_punchplayer(player, hitter) then + return 2 * (tool_capabilities.damage_groups.knockback or 1) + else + return 0 + end end, }) diff --git a/mods/ctf/ctf_modes/ctf_mode_classes/mod.conf b/mods/ctf/ctf_modes/ctf_mode_classes/mod.conf index 0248fa0..a56dfae 100644 --- a/mods/ctf/ctf_modes/ctf_mode_classes/mod.conf +++ b/mods/ctf/ctf_modes/ctf_mode_classes/mod.conf @@ -1,2 +1,2 @@ name = ctf_mode_classes -depends = ctf_modebase, ctf_melee, ctf_gui, ctf_cosmetics, ctf_api, hud_events +depends = ctf_modebase, ctf_melee, ctf_gui, ctf_cosmetics, ctf_api, hud_events, ctf_settings diff --git a/mods/ctf/ctf_modes/ctf_mode_classic/init.lua b/mods/ctf/ctf_modes/ctf_mode_classic/init.lua index 7de71e4..39e5c26 100644 --- a/mods/ctf/ctf_modes/ctf_mode_classic/init.lua +++ b/mods/ctf/ctf_modes/ctf_mode_classic/init.lua @@ -68,6 +68,7 @@ ctf_modebase.register_mode("classic", { on_flag_capture = features.on_flag_capture, on_flag_rightclick = function() end, get_chest_access = features.get_chest_access, + can_punchplayer = features.can_punchplayer, on_punchplayer = features.on_punchplayer, on_healplayer = features.on_healplayer, calculate_knockback = function() diff --git a/mods/ctf/ctf_modes/ctf_mode_nade_fight/init.lua b/mods/ctf/ctf_modes/ctf_mode_nade_fight/init.lua index 8196377..1cd5db4 100644 --- a/mods/ctf/ctf_modes/ctf_mode_nade_fight/init.lua +++ b/mods/ctf/ctf_modes/ctf_mode_nade_fight/init.lua @@ -102,6 +102,7 @@ ctf_modebase.register_mode("nade_fight", { on_flag_capture = features.on_flag_capture, on_flag_rightclick = function() end, get_chest_access = features.get_chest_access, + can_punchplayer = features.can_punchplayer, on_punchplayer = function(player, hitter, damage, unneeded, tool_capabilities, ...) if tool.holed[player:get_player_name()] then if tool_capabilities.grenade then diff --git a/mods/ctf/ctf_player/LICENSE.txt b/mods/ctf/ctf_player/LICENSE.txt new file mode 100644 index 0000000..d54e57e --- /dev/null +++ b/mods/ctf/ctf_player/LICENSE.txt @@ -0,0 +1 @@ +Player Model taken from Minetest Game and modified for CTF, Licensed CC BY-SA 3.0 (mods/mtg/mtg_player_api/) diff --git a/mods/ctf/ctf_player/init.lua b/mods/ctf/ctf_player/init.lua new file mode 100644 index 0000000..df3b5e1 --- /dev/null +++ b/mods/ctf/ctf_player/init.lua @@ -0,0 +1,118 @@ +local stab_slash_time = 20/60 - 0.2 +local stab_slash_cooldown_after = 0.2 + +ctf_player = { + animation_time = { + -- Animation Frames / Animation Framerate + Cooldown Time - 0.1 + stab_slash = stab_slash_time + stab_slash_cooldown_after, + }, +} + +-- Override player_api model +player_api.registered_models["character.b3d"] = nil + +player_api.register_model("character.b3d", { + animation_speed = 30, + textures = {"character.png"}, + animations = { + -- Standard animations. + stand = {x = 0, y = 79}, + lay = {x = 162, y = 166, eye_height = 0.3, + collisionbox = {-0.6, 0.0, -0.6, 0.6, 0.3, 0.6}}, + walk = {x = 168, y = 187}, + mine = {x = 189, y = 198}, + walk_mine = {x = 200, y = 219}, + sit = {x = 81, y = 160, eye_height = 0.8, + collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.0, 0.3}}, + stab = {x = 221, y = 241, frame_loop = false}, + slash = {x = 242, y = 262, frame_loop = false}, + }, + collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}, + stepheight = 0.6, + eye_height = 1.47, +}) + +minetest.register_on_joinplayer(function(player) + player:set_local_animation(nil, nil, nil, nil, 0) +end) + +-- Override player_api globalstep + +-- Localize for better performance. +local player_set_animation = player_api.set_animation +local get_animation = player_api.get_animation +local player_attached = player_api.player_attached +local models = player_api.registered_models + +local stab_slash_timer = {} +minetest.register_globalstep(function(dtime) + for p, timer in pairs(stab_slash_timer) do + timer.timeleft = timer.timeleft - dtime + + if timer.timeleft <= 0 then + if timer.state == "anim" then + timer.state = "cooldown" + timer.timeleft = stab_slash_cooldown_after + (timer.extra_time or 0) + else + stab_slash_timer[p] = nil + end + end + end +end) + +function ctf_player.set_stab_slash_anim(anim_type, player, extra_time) + stab_slash_timer[player:get_player_name()] = { + timeleft = stab_slash_time, + extra_time = extra_time, + state = "anim" + } + + player_set_animation(player, anim_type, 60) +end + +function player_api.globalstep() + for _, player in ipairs(minetest.get_connected_players()) do + local name = player:get_player_name() + local player_data = get_animation(player) + local model = models[player_data.model] + + if model and not player_attached[name] then + local controls = player:get_player_control() + local animation_speed_mod = model.animation_speed or 30 + + -- Determine if the player is sneaking, and reduce animation speed if so + if controls.sneak then + animation_speed_mod = animation_speed_mod / 2 + end + + -- Apply animations based on what the player is doing + if player:get_hp() == 0 then + player_set_animation(player, "lay") + elseif not stab_slash_timer[name] or stab_slash_timer[name].state == "cooldown" then + if controls.up or controls.down or controls.left or controls.right then + if controls.LMB or controls.RMB then + local wielded = player:get_wielded_item() + + if not wielded or not wielded:get_definition().disable_mine_anim then + player_set_animation(player, "walk_mine", animation_speed_mod) + else + player_set_animation(player, "walk", animation_speed_mod) + end + else + player_set_animation(player, "walk", animation_speed_mod) + end + elseif controls.LMB or controls.RMB then + local wielded = player:get_wielded_item() + + if not wielded or not wielded:get_definition().disable_mine_anim then + player_set_animation(player, "mine", animation_speed_mod) + else + player_set_animation(player, "stand", animation_speed_mod) + end + else + player_set_animation(player, "stand", animation_speed_mod) + end + end + end + end +end diff --git a/mods/ctf/ctf_player/mod.conf b/mods/ctf/ctf_player/mod.conf new file mode 100644 index 0000000..b18d4a7 --- /dev/null +++ b/mods/ctf/ctf_player/mod.conf @@ -0,0 +1,2 @@ +name = ctf_player +depends = player_api, ctf_core diff --git a/mods/ctf/ctf_player/models/character.b3d b/mods/ctf/ctf_player/models/character.b3d new file mode 100644 index 0000000000000000000000000000000000000000..50ab4544c16d3fc05cacd12a7ff7dd740b14bd4b GIT binary patch literal 82505 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 literal 0 HcmV?d00001 diff --git a/mods/ctf/ctf_player/models/character.blend b/mods/ctf/ctf_player/models/character.blend new file mode 100644 index 0000000000000000000000000000000000000000..c3234029324e2902d6f63750dccc1c86642dde81 GIT binary patch literal 882348 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 H>)-zXYf%(i literal 0 HcmV?d00001 diff --git a/mods/mtg/mtg_player_api/api.lua b/mods/mtg/mtg_player_api/api.lua index b3e3f5e..9e3559d 100644 --- a/mods/mtg/mtg_player_api/api.lua +++ b/mods/mtg/mtg_player_api/api.lua @@ -142,7 +142,7 @@ function player_api.set_animation(player, anim_name, speed) end end -- Set the animation seen by everyone else - player:set_animation(anim, speed, animation_blend) + player:set_animation(anim, speed, animation_blend, anim.frame_loop) -- Update related properties if they changed if anim._equals ~= previous_anim._equals then player:set_properties({ @@ -178,8 +178,8 @@ function minetest.calculate_knockback(player, ...) end -- Check each player and apply animations -minetest.register_globalstep(function() - for _, player in pairs(minetest.get_connected_players()) do +function player_api.globalstep() + for _, player in ipairs(minetest.get_connected_players()) do local name = player:get_player_name() local player_data = players[name] local model = models[player_data.model] @@ -208,6 +208,11 @@ minetest.register_globalstep(function() end end end +end + +-- Mods can modify the globalstep by overriding player_api.globalstep +minetest.register_globalstep(function(...) + player_api.globalstep(...) end) for _, api_function in pairs({"get_animation", "set_animation", "set_model", "set_textures"}) do diff --git a/mods/other/wield3d/init.lua b/mods/other/wield3d/init.lua index c14fa0e..afcbb52 100644 --- a/mods/other/wield3d/init.lua +++ b/mods/other/wield3d/init.lua @@ -2,7 +2,7 @@ local location = { "Arm_Right", -- default bone {x=0, y=5.5, z=3}, -- default position {x=-90, y=225, z=90}, -- default rotation - {x=0.25, y=0.25}, -- default scale + {x=0.3, y=0.3, z=0.25}, -- default scale } local players = {} @@ -21,6 +21,7 @@ minetest.register_entity("wield3d:entity", { backface_culling = false, static_save = false, pointable = false, + glow = 7, on_punch = function() return true end, }) @@ -43,7 +44,7 @@ end local globalstep_timer = 0 minetest.register_globalstep(function(dtime) globalstep_timer = globalstep_timer + dtime - if globalstep_timer < 1 then return end + if globalstep_timer < 0.5 then return end globalstep_timer = 0 @@ -54,18 +55,41 @@ minetest.register_globalstep(function(dtime) end end) -minetest.register_on_joinplayer(function(player) +local function add_wielditem(player) local entity = minetest.add_entity(player:get_pos(), "wield3d:entity") - entity:set_attach(player, location[1], location[2], location[3]) + local setting = ctf_settings.get(player, "use_old_wielditem_display") + + entity:set_attach( + player, + location[1], location[2], location[3], + setting == "false" + ) players[player:get_player_name()] = {entity=entity, item="wield3d:hand"} + player:hud_set_flags({wielditem = (setting == "true")}) update_entity(player) -end) +end -minetest.register_on_leaveplayer(function(player) +local function remove_wielditem(player) local pname = player:get_player_name() if players[pname] ~= nil then players[pname].entity:remove() players[pname] = nil end -end) +end + +minetest.register_on_joinplayer(add_wielditem) +minetest.register_on_leaveplayer(remove_wielditem) + + +ctf_settings.register("use_old_wielditem_display", { + label = "Use old wielditem display", + type = "bool", + default = "true", + description = "Will use Minetest's default method of showing the wielded item.\n" .. + "This won't show custom animations, but might be less jarring", + on_change = function(player, new_value) + remove_wielditem(player) + add_wielditem(player) + end, +}) diff --git a/mods/other/wield3d/mod.conf b/mods/other/wield3d/mod.conf index 7ab29fb..0a64beb 100644 --- a/mods/other/wield3d/mod.conf +++ b/mods/other/wield3d/mod.conf @@ -1 +1,2 @@ name = wield3d +depends = ctf_settings