From a084a8bc1feb5ad2c1022e502b89dc04bbd4464b Mon Sep 17 00:00:00 2001 From: Joachim Stolberg Date: Tue, 23 Jun 2020 18:53:34 +0200 Subject: [PATCH] built on 23/06/2020 18:53:34 --- README.md | 10 + autobahn/init.lua | 38 +- player_physics_design_pattern.md | 71 +++ stamina/.luacheckrc | 20 + stamina/API.txt | 64 +++ stamina/README.txt | 50 +++ stamina/bower.json | 14 + stamina/depends.txt | 3 + stamina/description.txt | 1 + stamina/init.lua | 552 ++++++++++++++++++++++++ stamina/mod.conf | 1 + stamina/screenshot.png | Bin 0 -> 32843 bytes stamina/settingtypes.txt | 24 ++ stamina/sounds/stamina_eat.1.ogg | Bin 0 -> 9333 bytes stamina/sounds/stamina_eat.2.ogg | Bin 0 -> 11736 bytes stamina/sounds/stamina_eat.3.ogg | Bin 0 -> 11656 bytes stamina/textures/stamina_hud_bg.png | Bin 0 -> 417 bytes stamina/textures/stamina_hud_fg.png | Bin 0 -> 522 bytes stamina/textures/stamina_hud_poison.png | Bin 0 -> 3196 bytes towercrane/control.lua | 44 +- 20 files changed, 860 insertions(+), 32 deletions(-) create mode 100644 player_physics_design_pattern.md create mode 100644 stamina/.luacheckrc create mode 100644 stamina/API.txt create mode 100644 stamina/README.txt create mode 100644 stamina/bower.json create mode 100644 stamina/depends.txt create mode 100644 stamina/description.txt create mode 100644 stamina/init.lua create mode 100644 stamina/mod.conf create mode 100644 stamina/screenshot.png create mode 100644 stamina/settingtypes.txt create mode 100644 stamina/sounds/stamina_eat.1.ogg create mode 100644 stamina/sounds/stamina_eat.2.ogg create mode 100644 stamina/sounds/stamina_eat.3.ogg create mode 100644 stamina/textures/stamina_hud_bg.png create mode 100644 stamina/textures/stamina_hud_fg.png create mode 100644 stamina/textures/stamina_hud_poison.png diff --git a/README.md b/README.md index 8cb10d5..6982a3e 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ This modpack includes: - minecart: Techage transportation system for oil and other items - towercrane: Simplifies the building of large techage plants - basic_materials: Needed items for many recipes +- stamina: The "hunger" mod from "minetest-mods" - doc: Ingame documentation mod, used for minecart and signs_bot - unified_inventory: Player's inventory with crafting guide, bags, and more. - tubelib2: Necessary library @@ -40,6 +41,15 @@ Required: Minetest Game ### History +#### 2020-06-23 + +Updates (see local readme files): +- mod stamina added +- autobahn, towercrane and stamina now use a commen player physics lockout mechanism +- signs_bot v1.03 with bugfixes +- techage manual expanded + + #### 2020-06-21 Updates (see local readme files): diff --git a/autobahn/init.lua b/autobahn/init.lua index 95c3962..e7efdba 100644 --- a/autobahn/init.lua +++ b/autobahn/init.lua @@ -36,19 +36,23 @@ end local function set_player_privs(player) local physics = player:get_physics_override() local meta = player:get_meta() - if meta and physics then - -- store the player privs default values - meta:set_int("autobahn_speed", physics.speed) - -- set operator privs - meta:set_int("autobahn_isactive", 1) - physics.speed = 3.5 - minetest.sound_play("autobahn_motor", { - pos = player:get_pos(), - gain = 0.5, - max_hear_distance = 5, - }) - -- write back - player:set_physics_override(physics) + -- Check access conflicts with other mods + if meta:get_int("player_physics_locked") == 0 then + meta:set_int("player_physics_locked", 1) + if meta and physics then + -- store the player privs default values + meta:set_int("autobahn_speed", physics.speed) + -- set operator privs + meta:set_int("autobahn_isactive", 1) + physics.speed = 3.5 + minetest.sound_play("autobahn_motor", { + pos = player:get_pos(), + gain = 0.5, + max_hear_distance = 5, + }) + -- write back + player:set_physics_override(physics) + end end end @@ -64,6 +68,7 @@ local function reset_player_privs(player) meta:set_string("autobahn_speed", "") -- write back player:set_physics_override(physics) + meta:set_int("player_physics_locked", 0) end end @@ -79,6 +84,11 @@ minetest.register_on_leaveplayer(function(player) end end) +minetest.register_on_respawnplayer(function(player) + if is_active(player) then + reset_player_privs(player) + end +end) local function control_player(player) local player_name = player:get_player_name() @@ -152,7 +162,7 @@ local function update_node(pos) local nnode local npos -- check case 1 - facedir = (2 + node.param2) % 4 + local facedir = (2 + node.param2) % 4 npos = vector.add(pos, Facedir2Dir[facedir]) npos.y = npos.y - 1 nnode = minetest.get_node(npos) diff --git a/player_physics_design_pattern.md b/player_physics_design_pattern.md new file mode 100644 index 0000000..a448893 --- /dev/null +++ b/player_physics_design_pattern.md @@ -0,0 +1,71 @@ +# Player Physics Design Pattern + +To be able to control the access to player physics (like speed, gravity) and privs (like fast, fly) +a common design pattern is used for the following mod-pack mods: + +- autobahn (fast, speed) +- towercrane (fly, speed) +- ta4_jetpack (gravity, speed) +- stamina (resets the gravity/speed cyclically) +- 3d_armor (changes physics based on APi calls) + +All of these mods try to change the player physics, which is a common resource and should only be changed by one mod. + +This lockout design pattern takes care that only one mod at a time is able to change physics or privs. + +```lua +local function change_player_physics(player) + local physics = player:get_physics_override() + local meta = player:get_meta() + + -- Check access conflicts with other mods + if meta:get_int("player_physics_locked") == 0 then + meta:set_int("player_physics_locked", 1) + + -- store old values, here speed and gravity + meta:set_int("mymod_normal_player_speed", physics.speed) + meta:set_int("mymod_normal_player_gravity", physics.gravity) + + -- do whatever is needed + + player:set_physics_override(physics) + meta:set_int("mymod_is_active", 1) + end +end + +local function restore_player_physics(player) + local physics = player:get_physics_override() + local meta = player:get_meta() + + if meta:get_int("mymod_is_active") == 1 then + meta:set_int("mymod_is_active", 0) + + -- restore old values (speed and gravity) + physics.speed = meta:get_int("mymod_normal_player_speed") + physics.gravity = meta:get_int("mymod_normal_player_gravity") + player:set_physics_override(physics) + end + meta:set_int("player_physics_locked", 0) +end + + + +minetest.register_on_joinplayer(function(player) + restore_player_physics(player) +end) + +minetest.register_on_respawnplayer(function(player) + restore_player_physics(player) +end) + +-- optional +minetest.register_on_leaveplayer(function(player) + restore_player_physics(player) +end) + +-- optional +minetest.register_on_dieplayer(function(player) + restore_player_physics(player) +end) +``` + diff --git a/stamina/.luacheckrc b/stamina/.luacheckrc new file mode 100644 index 0000000..a6b4003 --- /dev/null +++ b/stamina/.luacheckrc @@ -0,0 +1,20 @@ +unused_args = false +allow_defined_top = true + +read_globals = { + "DIR_DELIM", + "minetest", + "dump", + "vector", "nodeupdate", + "VoxelManip", "VoxelArea", + "PseudoRandom", "ItemStack", + "intllib", + "default", + "armor", + "player_monoids", +} + +globals = { + minetest = { fields = { "do_item_eat" }}, +} + diff --git a/stamina/API.txt b/stamina/API.txt new file mode 100644 index 0000000..334a2d0 --- /dev/null +++ b/stamina/API.txt @@ -0,0 +1,64 @@ +stamina.get_saturation(player) + Gets a player's saturation + +stamina.set_saturation(player, level) + Set a player's saturation. + Updates the HUD to reflect saturation level. + +stamina.update_saturation(player, level) + Update's a player's saturation. + Callbacks are processed first. + +stamina.change_saturation(player, change) + Update a player's saturation by a delta, instead of an absolute value. + +stamina.register_on_update_saturation(function(player, level)) + Register a callback for when saturation is updated. + If the callback returns True, no further callbacks are called, + and the default behavior is bypassed. +----------------------- +stamina.is_poisoned(player) + Check if a player is poisoned + +stamina.set_poisoned(player, poisoned) + Set a player's "poisoned" status (boolean) + Updates the HUD to reflect poison status. + +stamina.poison(player, ticks, interval) + Poison a player for a certain amount of time. + Ticks is how many times to poison the player. + Interval is the time between poison ticks. + Processes callbacks before changing status. + +stamina.register_on_poison(function(player, ticks, interval)) + Register a callback for when a player is poisoned. + If the callback returns True, no further callbacks are called, + and the default behavior is bypassed. +------------------------- +stamina.get_exhaustion(player) + Gets a player's exhaustion level. + Value is between 0 and `stamina.exhaust_lvl` (default: 160) + +stamina.set_exhaustion(player, level) + Sets a player's exhaustion level. + +stamina.exhaust_player(player, change, cause) + Update a player's exhaustion by "change". + If the player's exhaustion exceeds `stamina.exhaust_lvl`, stamina + is taken and exhaustion is reset. + Cause is an optional argument indicating the origin of the exhaustion. + Callbacks are processed before exhausting the player. + +stamina.register_on_exhaust_player(function(player, change, cause)) + Register a callback for when exhaustion is updated. + If the callback returns True, no further callbacks are called, + and the default behavior is bypassed. +------------------------ +stamina.set_sprinting(name, sprinting) + Sets whether a player is sprinting or not. + Callbacks are processed before setting sprint status. + +stamina.register_on_sprinting(function(player, sprinting)) + Register a callback for when a player's sprinting status is updated. + If the callback returns True, no further callbacks are called, + and the default behavior is bypassed. diff --git a/stamina/README.txt b/stamina/README.txt new file mode 100644 index 0000000..388c32b --- /dev/null +++ b/stamina/README.txt @@ -0,0 +1,50 @@ +Minetest mod "Stamina" +===================== + +(C) 2015 - BlockMen +(C) 2016 - Auke Kok + + +About this mod: +--------------- +This mod adds a stamina, or "hunger" mechanic to Minetest. Actions like +crafting, walking, digging or fighting make the player exhausted. When +enough exhaustion has been accumulated, the player gets more hungry, +and loses stamina. + +If a player is low on stamina, they start taking periodical damage, +and ultimately will die if they do not eat food. + +Eating food no longer heals the player. Instead, it increases the +stamina of the player. The stamina bar shows how well fed the player +is. More bread pieces means more stamina. + + +Q&A time: Why won't I move the stamina bar to the right? + +Answer: this conflicts with the builtin breath bar. To move the +builtin breath bar, I basically have to entirely re-implement it +in lua including timers to catch breath changes for each online +player, which is all a waste of time, just to move a few pixels +around. + + +For Modders: +------------ +This mod intercepts minetest.item_eat(), and applies the hp_change +as stamina change. The value can be positive (increase stamina) or +negative (periodically damage the player by 1 hp). + +See API.txt for information on the API. + +License: +-------- +Code: +- all code LGPL-2.1+ +Textures: +- stamina_hud_poison.png - BlockMen (CC-BY 3.0) +- stamina_hud_fg.png - PilzAdam (WTFPL), modified by BlockMen +- stamina_hud_bg.png - PilzAdam (WTFPL), modified by BlockMen +Sounds: +- stamina_eat.*.ogg - http://www.freesound.org/people/sonictechtonic/sounds/242215/ CC-BY-3.0 + diff --git a/stamina/bower.json b/stamina/bower.json new file mode 100644 index 0000000..3436201 --- /dev/null +++ b/stamina/bower.json @@ -0,0 +1,14 @@ +{ + "name": "stamina", + "description": "This mod adds a stamina, or hunger mechanic to Minetest. Actions like crafting, walking, digging or fighting make the player exhausted.", + "homepage": "https://github.com/minetest-mods/stamina", + "authors": [ + "BlockMen - 2015", + "Auke Kok - 2016" + ], + "license": "LGPL-2.1+", + "keywords": [ + "hunger", + "stamina" + ] +} \ No newline at end of file diff --git a/stamina/depends.txt b/stamina/depends.txt new file mode 100644 index 0000000..bdb6c20 --- /dev/null +++ b/stamina/depends.txt @@ -0,0 +1,3 @@ +default +3d_armor? +player_monoids? diff --git a/stamina/description.txt b/stamina/description.txt new file mode 100644 index 0000000..1074b3d --- /dev/null +++ b/stamina/description.txt @@ -0,0 +1 @@ +Adds stamina and hunger effects. diff --git a/stamina/init.lua b/stamina/init.lua new file mode 100644 index 0000000..77d6d36 --- /dev/null +++ b/stamina/init.lua @@ -0,0 +1,552 @@ +if not minetest.settings:get_bool("enable_damage") then + minetest.log("warning", "[stamina] Stamina will not load if damage is disabled (enable_damage=false)") + return +end + +stamina = {} +local modname = minetest.get_current_modname() +local armor_mod = minetest.get_modpath("3d_armor") and minetest.global_exists("armor") and armor.def +local player_monoids_mod = minetest.get_modpath("player_monoids") and minetest.global_exists("player_monoids") + +function stamina.log(level, message, ...) + return minetest.log(level, ("[%s] %s"):format(modname, message:format(...))) +end + +local function get_setting(key, default) + local value = minetest.settings:get("stamina." .. key) + local num_value = tonumber(value) + if value and not num_value then + stamina.log("warning", "Invalid value for setting %s: %q. Using default %q.", key, value, default) + end + return num_value or default +end + +stamina.settings = { + -- see settingtypes.txt for descriptions + eat_particles = minetest.settings:get_bool("stamina.eat_particles", true), + sprint = minetest.settings:get_bool("stamina.sprint", true), + sprint_particles = minetest.settings:get_bool("stamina.sprint_particles", true), + sprint_lvl = get_setting("sprint_lvl", 6), + sprint_speed = get_setting("sprint_speed", 0.8), + sprint_jump = get_setting("sprint_jump", 0.1), + sprint_with_fast = minetest.settings:get_bool("stamina.sprint_with_fast", false), + tick = get_setting("tick", 800), + tick_min = get_setting("tick_min", 4), + health_tick = get_setting("health_tick", 4), + move_tick = get_setting("move_tick", 0.5), + poison_tick = get_setting("poison_tick", 2.0), + exhaust_dig = get_setting("exhaust_dig", 3), + exhaust_place = get_setting("exhaust_place", 1), + exhaust_move = get_setting("exhaust_move", 1.5), + exhaust_jump = get_setting("exhaust_jump", 5), + exhaust_craft = get_setting("exhaust_craft", 20), + exhaust_punch = get_setting("exhaust_punch", 40), + exhaust_sprint = get_setting("exhaust_sprint", 28), + exhaust_lvl = get_setting("exhaust_lvl", 160), + heal = get_setting("heal", 1), + heal_lvl = get_setting("heal_lvl", 5), + starve = get_setting("starve", 1), + starve_lvl = get_setting("starve_lvl", 3), + visual_max = get_setting("visual_max", 20), +} +local settings = stamina.settings + +local attribute = { + saturation = "stamina:level", + poisoned = "stamina:poisoned", + exhaustion = "stamina:exhaustion", +} + +local function is_player(player) + return ( + minetest.is_player(player) and + not player.is_fake_player + ) +end + +local function set_player_attribute(player, key, value) + if player.get_meta then + if value == nil then + player:get_meta():set_string(key, "") + else + player:get_meta():set_string(key, tostring(value)) + end + else + player:set_attribute(key, value) + end +end + +local function get_player_attribute(player, key) + if player.get_meta then + return player:get_meta():get_string(key) + else + return player:get_attribute(key) + end +end + +local hud_ids_by_player_name = {} + +local function get_hud_id(player) + return hud_ids_by_player_name[player:get_player_name()] +end + +local function set_hud_id(player, hud_id) + hud_ids_by_player_name[player:get_player_name()] = hud_id +end + +--- SATURATION API --- +function stamina.get_saturation(player) + return tonumber(get_player_attribute(player, attribute.saturation)) +end + +function stamina.set_saturation(player, level) + set_player_attribute(player, attribute.saturation, level) + player:hud_change( + get_hud_id(player), + "number", + math.min(settings.visual_max, level) + ) +end + +stamina.registered_on_update_saturations = {} +function stamina.register_on_update_saturation(fun) + table.insert(stamina.registered_on_update_saturations, fun) +end + +function stamina.update_saturation(player, level) + for _, callback in ipairs(stamina.registered_on_update_saturations) do + local result = callback(player, level) + if result then + return result + end + end + + local old = stamina.get_saturation(player) + + if level == old then -- To suppress HUD update + return + end + + -- players without interact priv cannot eat + if old < settings.heal_lvl and not minetest.check_player_privs(player, {interact=true}) then + return + end + + stamina.set_saturation(player, level) +end + +function stamina.change_saturation(player, change) + if not is_player(player) or not change or change == 0 then + return false + end + local level = stamina.get_saturation(player) + change + level = math.max(level, 0) + level = math.min(level, settings.visual_max) + stamina.update_saturation(player, level) + return true +end + +stamina.change = stamina.change_saturation -- for backwards compatablity +--- END SATURATION API --- +--- POISON API --- +function stamina.is_poisoned(player) + return get_player_attribute(player, attribute.poisoned) == "yes" +end + +function stamina.set_poisoned(player, poisoned) + local hud_id = get_hud_id(player) + if poisoned then + player:hud_change(hud_id, "text", "stamina_hud_poison.png") + set_player_attribute(player, attribute.poisoned, "yes") + else + player:hud_change(hud_id, "text", "stamina_hud_fg.png") + set_player_attribute(player, attribute.poisoned, "no") + end +end + +local function poison_tick(player, ticks, interval, elapsed) + if not stamina.is_poisoned(player) then + return + elseif elapsed > ticks then + stamina.set_poisoned(player, false) + else + local hp = player:get_hp() - 1 + if hp > 0 then + player:set_hp(hp) + end + minetest.after(interval, poison_tick, player, ticks, interval, elapsed + 1) + end +end + +stamina.registered_on_poisons = {} +function stamina.register_on_poison(fun) + table.insert(stamina.registered_on_poisons, fun) +end + +function stamina.poison(player, ticks, interval) + for _, fun in ipairs(stamina.registered_on_poisons) do + local rv = fun(player, ticks, interval) + if rv == true then + return + end + end + if not is_player(player) then + return + end + stamina.set_poisoned(player, true) + poison_tick(player, ticks, interval, 0) +end +--- END POISON API --- +--- EXHAUSTION API --- +stamina.exhaustion_reasons = { + craft = "craft", + dig = "dig", + heal = "heal", + jump = "jump", + move = "move", + place = "place", + punch = "punch", + sprint = "sprint", +} + +function stamina.get_exhaustion(player) + return tonumber(get_player_attribute(player, attribute.exhaustion)) +end + +function stamina.set_exhaustion(player, exhaustion) + set_player_attribute(player, attribute.exhaustion, exhaustion) +end + +stamina.registered_on_exhaust_players = {} +function stamina.register_on_exhaust_player(fun) + table.insert(stamina.registered_on_exhaust_players, fun) +end + +function stamina.exhaust_player(player, change, cause) + for _, callback in ipairs(stamina.registered_on_exhaust_players) do + local result = callback(player, change, cause) + if result then + return result + end + end + + if not is_player(player) then + return + end + + local exhaustion = stamina.get_exhaustion(player) or 0 + + exhaustion = exhaustion + change + + if exhaustion >= settings.exhaust_lvl then + exhaustion = exhaustion - settings.exhaust_lvl + stamina.change(player, -1) + end + + stamina.set_exhaustion(player, exhaustion) +end +--- END EXHAUSTION API --- +--- SPRINTING API --- +stamina.registered_on_sprintings = {} +function stamina.register_on_sprinting(fun) + table.insert(stamina.registered_on_sprintings, fun) +end + +function stamina.set_sprinting(player, sprinting) + for _, fun in ipairs(stamina.registered_on_sprintings) do + local rv = fun(player, sprinting) + if rv == true then + return + end + end + + if player_monoids_mod then + if sprinting then + player_monoids.speed:add_change(player, 1 + settings.sprint_speed, "stamina:physics") + player_monoids.jump:add_change(player, 1 + settings.sprint_jump, "stamina:physics") + else + player_monoids.speed:del_change(player, "stamina:physics") + player_monoids.jump:del_change(player, "stamina:physics") + end + else + local def + if armor_mod then + -- Get player physics from 3d_armor mod + local name = player:get_player_name() + def = { + speed=armor.def[name].speed, + jump=armor.def[name].jump, + gravity=armor.def[name].gravity + } + else + def = { + speed=1, + jump=1, + gravity=1 + } + end + + if sprinting then + def.speed = def.speed + settings.sprint_speed + def.jump = def.jump + settings.sprint_jump + end + + -- Check access conflicts with other mods + if player:get_meta():get_int("player_physics_locked") == 0 then + player:set_physics_override(def) + end + end + + if settings.sprint_particles and sprinting then + local pos = player:getpos() + local node = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) + local def = minetest.registered_nodes[node.name] or {} + local drawtype = def.drawtype + if drawtype ~= "airlike" and drawtype ~= "liquid" and drawtype ~= "flowingliquid" then + minetest.add_particlespawner({ + amount = 5, + time = 0.01, + minpos = {x = pos.x - 0.25, y = pos.y + 0.1, z = pos.z - 0.25}, + maxpos = {x = pos.x + 0.25, y = pos.y + 0.1, z = pos.z + 0.25}, + minvel = {x = -0.5, y = 1, z = -0.5}, + maxvel = {x = 0.5, y = 2, z = 0.5}, + minacc = {x = 0, y = -5, z = 0}, + maxacc = {x = 0, y = -12, z = 0}, + minexptime = 0.25, + maxexptime = 0.5, + minsize = 0.5, + maxsize = 1.0, + vertical = false, + collisiondetection = false, + texture = "default_dirt.png", + }) + end + end +end +--- END SPRINTING API --- + +-- Time based stamina functions +local function move_tick() + for _,player in ipairs(minetest.get_connected_players()) do + local controls = player:get_player_control() + local is_moving = controls.up or controls.down or controls.left or controls.right + local velocity = player:get_player_velocity() + velocity.y = 0 + local horizontal_speed = vector.length(velocity) + local has_velocity = horizontal_speed > 0.05 + + if controls.jump then + stamina.exhaust_player(player, settings.exhaust_jump, stamina.exhaustion_reasons.jump) + elseif is_moving and has_velocity then + stamina.exhaust_player(player, settings.exhaust_move, stamina.exhaustion_reasons.move) + end + + if settings.sprint then + local can_sprint = ( + controls.aux1 and + not player:get_attach() and + (settings.sprint_with_fast or not minetest.check_player_privs(player, {fast = true})) and + stamina.get_saturation(player) > settings.sprint_lvl + ) + + if can_sprint then + stamina.set_sprinting(player, true) + if is_moving and has_velocity then + stamina.exhaust_player(player, settings.exhaust_sprint, stamina.exhaustion_reasons.sprint) + end + else + stamina.set_sprinting(player, false) + end + end + end +end + +local function stamina_tick() + -- lower saturation by 1 point after settings.tick second(s) + for _,player in ipairs(minetest.get_connected_players()) do + local saturation = stamina.get_saturation(player) + if saturation > settings.tick_min then + stamina.update_saturation(player, saturation - 1) + end + end +end + +local function health_tick() + -- heal or damage player, depending on saturation + for _,player in ipairs(minetest.get_connected_players()) do + local air = player:get_breath() or 0 + local hp = player:get_hp() + local saturation = stamina.get_saturation(player) + + -- don't heal if dead, drowning, or poisoned + local should_heal = ( + saturation >= settings.heal_lvl and + saturation >= hp and + hp > 0 and + air > 0 + and not stamina.is_poisoned(player) + ) + -- or damage player by 1 hp if saturation is < 2 (of 30) + local is_starving = ( + saturation < settings.starve_lvl and + hp > 0 + ) + + if should_heal then + player:set_hp(hp + settings.heal) + stamina.exhaust_player(player, settings.exhaust_lvl, stamina.exhaustion_reasons.heal) + elseif is_starving then + player:set_hp(hp - settings.starve) + end + end +end + +local stamina_timer = 0 +local health_timer = 0 +local action_timer = 0 + +local function stamina_globaltimer(dtime) + stamina_timer = stamina_timer + dtime + health_timer = health_timer + dtime + action_timer = action_timer + dtime + + if action_timer > settings.move_tick then + action_timer = 0 + move_tick() + end + + if stamina_timer > settings.tick then + stamina_timer = 0 + stamina_tick() + end + + if health_timer > settings.health_tick then + health_timer = 0 + health_tick() + end +end + +-- override minetest.do_item_eat() so we can redirect hp_change to stamina +stamina.core_item_eat = minetest.do_item_eat +function minetest.do_item_eat(hp_change, replace_with_item, itemstack, player, pointed_thing) + for _, callback in ipairs(minetest.registered_on_item_eats) do + local result = callback(hp_change, replace_with_item, itemstack, player, pointed_thing) + if result then + return result + end + end + + if not is_player(player) or not itemstack then + return itemstack + end + + local level = stamina.get_saturation(player) or 0 + if level >= settings.visual_max then + -- don't eat if player is full + return itemstack + end + + local itemname = itemstack:get_name() + if replace_with_item then + stamina.log("action", "%s eats %s for %s stamina, replace with %s", + player:get_player_name(), itemname, hp_change, replace_with_item) + else + stamina.log("action", "%s eats %s for %s stamina", + player:get_player_name(), itemname, hp_change) + end + minetest.sound_play("stamina_eat", {to_player = player:get_player_name(), gain = 0.7}) + + if hp_change > 0 then + stamina.change_saturation(player, hp_change) + stamina.set_exhaustion(player, 0) + else + -- assume hp_change < 0. + stamina.poison(player, -hp_change, settings.poison_tick) + end + + if settings.eat_particles then + -- particle effect when eating + local pos = player:getpos() + pos.y = pos.y + 1.5 -- mouth level + local texture = minetest.registered_items[itemname].inventory_image + local dir = player:get_look_dir() + + minetest.add_particlespawner({ + amount = 5, + time = 0.1, + minpos = pos, + maxpos = pos, + minvel = {x = dir.x - 1, y = dir.y, z = dir.z - 1}, + maxvel = {x = dir.x + 1, y = dir.y, z = dir.z + 1}, + minacc = {x = 0, y = -5, z = 0}, + maxacc = {x = 0, y = -9, z = 0}, + minexptime = 1, + maxexptime = 1, + minsize = 1, + maxsize = 2, + texture = texture, + }) + end + + itemstack:take_item() + + if replace_with_item then + if itemstack:is_empty() then + itemstack:add_item(replace_with_item) + else + local inv = player:get_inventory() + if inv:room_for_item("main", {name=replace_with_item}) then + inv:add_item("main", replace_with_item) + else + local pos = player:getpos() + pos.y = math.floor(pos.y - 1.0) + minetest.add_item(pos, replace_with_item) + end + end + end + + return itemstack +end + +minetest.register_on_joinplayer(function(player) + local level = stamina.get_saturation(player) or settings.visual_max + local id = player:hud_add({ + name = "stamina", + hud_elem_type = "statbar", + position = {x = 0.5, y = 1}, + size = {x = 24, y = 24}, + text = "stamina_hud_fg.png", + number = level, + alignment = {x = -1, y = -1}, + offset = {x = -266, y = -110}, + max = 0, + }) + stamina.set_saturation(player, level) + set_hud_id(player, id) + -- reset poisoned + stamina.set_poisoned(player, false) + -- remove legacy hud_id from player metadata + set_player_attribute(player, "stamina:hud_id", nil) +end) + +minetest.register_on_leaveplayer(function(player) + set_hud_id(player, nil) +end) + +minetest.register_globalstep(stamina_globaltimer) + +minetest.register_on_placenode(function(pos, oldnode, player, ext) + stamina.exhaust_player(player, settings.exhaust_place, stamina.exhaustion_reasons.place) +end) +minetest.register_on_dignode(function(pos, oldnode, player, ext) + stamina.exhaust_player(player, settings.exhaust_dig, stamina.exhaustion_reasons.dig) +end) +minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) + stamina.exhaust_player(player, settings.exhaust_craft, stamina.exhaustion_reasons.craft) +end) +minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage) + stamina.exhaust_player(hitter, settings.exhaust_punch, stamina.exhaustion_reasons.punch) +end) +minetest.register_on_respawnplayer(function(player) + stamina.update_saturation(player, settings.visual_max) +end) diff --git a/stamina/mod.conf b/stamina/mod.conf new file mode 100644 index 0000000..b049a5a --- /dev/null +++ b/stamina/mod.conf @@ -0,0 +1 @@ +name = stamina diff --git a/stamina/screenshot.png b/stamina/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..4ea1cb01a84f69f80ac713e650185dfdb6bf31e9 GIT binary patch literal 32843 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 literal 0 HcmV?d00001 diff --git a/stamina/sounds/stamina_eat.2.ogg b/stamina/sounds/stamina_eat.2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..edca4239dc6c9b95df5588afa9f227e379886d6e GIT binary patch literal 11736 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 VXr4zSvBvFFyCks}pO667{{aK%bkqO< literal 0 HcmV?d00001 diff --git a/stamina/textures/stamina_hud_bg.png b/stamina/textures/stamina_hud_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..07e21e7be47ebfe19f972382f6ea5a086a33cbfc GIT binary patch literal 417 zcmV;S0bc%zP)pGQ%OWYRCt`Nlf7=jFcd~Z)s4q-V#j}S9N(Bo9uNaUNQ_8GOc{AB z-maBG`8vgdma0hS*v&hyhZwANsZfiVWoIXLI2s_N})-8TUd zjUfaO5kd%1O2HU|rfFcUg;ENPvG<1pBD&Od4Jjq8wTLldwOXO?dsu5Bgg{xAQ?fA& z_WS*8yWNh)7?foR&N5y3eJB7(IRbzSGHX|2bcfQT;6IdIP5z0X~xln_Ed zN(t{hy!V*u7-N@P!PPkj=Nw{;xm#6LIh9fhA%u(&0=I$>BFd4Sb1=q0YmKI9Af<#c z2Gf8i02IYA470=GaOt`(Prq&3%x%}(!$fqwdxhO@hZrMbjOe-!lkg`V?!kF}D%R^Y zQc6fEVX;^s#)y;>Hk%FlzQ@Bw8iwKJ(MJBpU4rBB`1&Wov!Ce`d<6U`HGiA|00000 LNkvXXu0mjf5NEV} literal 0 HcmV?d00001 diff --git a/stamina/textures/stamina_hud_fg.png b/stamina/textures/stamina_hud_fg.png new file mode 100644 index 0000000000000000000000000000000000000000..a5cc2a12339c1fcba9e605fb5cae51aabcefb60c GIT binary patch literal 522 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