------------------------------------------------------------ -- _____ _ _ _ -- -- |_ _| |_ (_)_ _ __| |_ _ _ -- -- | | | ' \| | '_(_-< _| || | -- -- |_| |_||_|_|_| /__/\__|\_, | -- -- |__/ -- ------------------------------------------------------------ -- Thirsty mod [thirsty] -- ------------------------------------------------------------ -- A mod that adds a "thirst" mechanic, similar to hunger -- -- Copyright (C) 2015 Ben Deutsch -- ------------------------------------------------------------ -- name idea thirsty_revive or thirsty_renew --------------- --[[ License -- --------------- This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA --Media/Images-- See Readme.MD - Mix of: CC BY-SA 3.0 CC BY-SA 4.0 CC0 1.0 Universal ------------------------------------------- -- Terminology: "Thirst" vs. "hydration" -- ------------------------------------------- "Thirst" is the absence of "hydration" (a term suggested by everamzah on the Minetest forums, thanks!). The overall mechanic is still called "thirst", but the visible bar is that of "hydration", filled with "hydro points". ]]-- thirsty = {} thirsty.version = 0.103 -- simple toboolean function that handles nil thirsty.tobool = function(value) if value == nil then return nil elseif value == "true" or value == 1 then return true else return false end end -- Configuration variables thirsty.config = { -- configuration in Settings>>Mods>>Thirsty -- Best to not change defaults here -- [General] tick_time = minetest.settings:get("thirsty_tick_time") or 0.5, start = minetest.settings:get("thirsty_starting_value") or 20, thirst_per_second = minetest.settings:get("thirst_per_second") or 1.0 / 30, damage_per_second = minetest.settings:get("damage_per_second") or 1.0 / 10.0, stand_still_for_drink = minetest.settings:get("stand_still_for_drink") or 1.0, stand_still_for_afk = minetest.settings:get("stand_still_for_afk") or 120.0, -- [Water Fountain] regen_from_fountain = minetest.settings:get("regen_from_fountain") or 0.5, fountain_height = minetest.settings:get("fountain_height") or 4, fountain_max_level = minetest.settings:get("fountain_max_level") or 20, fountain_distance_per_level = minetest.settings:get("fountain_distance_per_level") or 5, -- [Thirsty Mod Items] register_bowl = thirsty.tobool(minetest.settings:get("register_bowl")) or true, register_canteens = thirsty.tobool(minetest.settings:get("register_canteens")) or true, register_drinking_fountain = thirsty.tobool(minetest.settings:get("register_drinking")) or true, register_fountains = thirsty.tobool(minetest.settings:get("register_fountains")) or true, register_amulets = thirsty.tobool(minetest.settings:get("register_amulets")) or true, -- [Other Mods] register_vessels = thirsty.tobool(minetest.settings:get("register_vessels")) or true, -- [Node/Item Tables] Do not change names without code updates. -- Use API functions to register to these tables regen_from_node = {}, node_drinkable = {}, drink_from_container = {}, container_capacity = {}, drink_from_node = {}, fountain_type = {}, extraction_for_item = {}, injection_for_item = {}, thirst_adjust_item = {} } -- water fountains thirsty.fountains = { --[[ x:y:z = { pos = { x=x, y=y, z=z }, level = 4, time_until_check = 20, -- something about times } ]] } thirsty.ext_nodes_items = { --[[ acts as an internal mod aliasing for ingredients used in Canteen/Fountain recipes. to change edit: components_external_nodes_items.lua steel_ingot = default:steel_ingot ]] } -- general settings thirsty.time_next_tick = 0.0 local M = thirsty local C = M.config local modpath = minetest.get_modpath("thirsty") thirsty.time_next_tick = thirsty.config.tick_time dofile(modpath..'/hud.lua') dofile(modpath..'/functions.lua') minetest.register_on_joinplayer(thirsty.on_joinplayer) minetest.register_on_dieplayer(thirsty.on_dieplayer) minetest.register_globalstep(thirsty.main_loop) dofile(modpath..'/components_external_nodes_items.lua') dofile(modpath..'/components.lua') dofile(modpath..'/interop_a_functions.lua') -- dungeon_loot for Aumlets of Thirst if minetest.get_modpath("dungeon_loot") then dofile(modpath..'/interop_dungeon_loot.lua') end -- mobs_animal specific config if minetest.get_modpath("mobs_animal") then dofile(modpath..'/interop_mobs_animal.lua') end -- farming(redo) specific config if minetest.get_modpath("farming") and farming.mod == "redo" then dofile(modpath..'/interop_farming_redo.lua') end -- ethereal specific config if minetest.get_modpath("ethereal") then dofile(modpath..'/interop_ethereal.lua') end