From 61d9e37c7f7ade6d9909f1a17317e6f43bacc845 Mon Sep 17 00:00:00 2001 From: mckaygerhard Date: Mon, 24 Jul 2023 15:30:11 -0400 Subject: [PATCH] mods - hudbars+hbarmor+hunger - fusion into a simgle loading mod * fix workaroun about ssettings not configurable * do not hardcoded hp_max from other mods, unless configured here * provide settings for hbhunger steps * provide settings for auto hide or not hbarmor * document those missing features * mark mod with version 2.3.5.0 and using redo flag * detection of original mods and bypass build-in own features * optimize loading of hubar for armor, bad initialization * real check player becouse of wrong implementation at engine --- mods/README.md | 2 +- mods/hudbars/README.md | 132 ++++++- mods/hudbars/default_settings.lua | 32 +- mods/hudbars/depends.txt | 32 +- mods/hudbars/description.txt | 2 +- mods/hudbars/hunger.lua | 175 +++++++++ mods/hudbars/init.lua | 314 +++++++++++++++-- mods/hudbars/locale/hudbars.de.tr | 8 + mods/hudbars/locale/hudbars.es.tr | 7 + mods/hudbars/locale/hudbars.fr.tr | 2 + mods/hudbars/locale/hudbars.it.tr | 5 +- mods/hudbars/locale/hudbars.ms.tr | 1 + mods/hudbars/locale/hudbars.pt.tr | 5 +- mods/hudbars/locale/hudbars.ru.tr | 5 +- mods/hudbars/locale/template.txt | 6 +- mods/hudbars/mod.conf | 3 +- mods/hudbars/register_foods.lua | 331 ++++++++++++++++++ mods/hudbars/screenshot.png | Bin 9556 -> 24726 bytes mods/hudbars/settingtypes.txt | 19 +- mods/hudbars/sounds/hbhunger_eat_generic.ogg | Bin 0 -> 61040 bytes mods/hudbars/textures/hbarmor_bar.png | Bin 0 -> 70 bytes mods/hudbars/textures/hbarmor_icon.png | Bin 0 -> 2641 bytes mods/hudbars/textures/hbhunger_bar.png | Bin 0 -> 80 bytes .../textures/hbhunger_bar_health_poison.png | Bin 0 -> 112 bytes mods/hudbars/textures/hbhunger_icon.png | Bin 0 -> 145 bytes .../textures/hbhunger_icon_health_poison.png | Bin 0 -> 192 bytes mods/hudbars/textures/hudbars_icon_breath.png | Bin 207 -> 153 bytes mods/hudbars/textures/hudbars_icon_health.png | Bin 172 -> 143 bytes 28 files changed, 1021 insertions(+), 60 deletions(-) create mode 100644 mods/hudbars/hunger.lua create mode 100644 mods/hudbars/locale/hudbars.fr.tr create mode 100644 mods/hudbars/register_foods.lua create mode 100644 mods/hudbars/sounds/hbhunger_eat_generic.ogg create mode 100644 mods/hudbars/textures/hbarmor_bar.png create mode 100644 mods/hudbars/textures/hbarmor_icon.png create mode 100644 mods/hudbars/textures/hbhunger_bar.png create mode 100644 mods/hudbars/textures/hbhunger_bar_health_poison.png create mode 100644 mods/hudbars/textures/hbhunger_icon.png create mode 100644 mods/hudbars/textures/hbhunger_icon_health_poison.png diff --git a/mods/README.md b/mods/README.md index 0cb1620..3ff5b8e 100644 --- a/mods/README.md +++ b/mods/README.md @@ -28,7 +28,7 @@ For information check [../README.md](../README.md) | fire | https://codeberg.org/minenux/minetest-mod-fire | https://codeberg.org/minenux/minetest-mod-fire/commit/4e5f7ad55314bd9b126fb133cfc5a32fa58b20d2 | [fire/README.md](fire/README.md) | | fireflies | https://codeberg.org/minenux/minetest-game-minetest | https://codeberg.org/minenux/minetest-game-minetest/commit/fc4ab2538d432a20978ee3bbd1b69a42446e9132 | [fireflies/README.md](fireflies/README.md) | | flowers | https://codeberg.org/minenux/minetest-game-minetest | https://codeberg.org/minenux/minetest-game-minetest/commit/eb64ff94f82d726e4a55b20fa7ce30e4a7470cc5 | | -| hudbars | https://codeberg.org/minenux/minetest-mod-hudbars | https://codeberg.org/minenux/minetest-mod-hudbars/commit/c219b708f89ccf8683c3ee33e1fe55641cc8b10a | [hudbars/README.md](hudbars/README.md) | +| hudbars | https://codeberg.org/minenux/minetest-mod-hudbars | https://codeberg.org/minenux/minetest-mod-hudbars/commit/e3db263828cb96f06d848e6dc80d90f21c7f92a0 | [hudbars/README.md](hudbars/README.md) | | give_initial_stuff | https://codeberg.org/minenux/minetest-game-minetest | https://codeberg.org/minenux/minetest-game-minetest/commit/ee86fb1c41e7d8d2a1d94764dd64808bc8ff5999 | [give_initial_stuff/README.md](give_initial_stuff/README.md) | | killme | https://codeberg.org/minenux/minetest-game-minetest | https://codeberg.org/minenux/minetest-game-minetest/commit/eb64ff94f82d726e4a55b20fa7ce30e4a7470cc5 | | | sfinv | https://codeberg.org/minenux/minetest-game-minetest | https://codeberg.org/minenux/minetest-game-minetest/commit/eb64ff94f82d726e4a55b20fa7ce30e4a7470cc5 | | diff --git a/mods/hudbars/README.md b/mods/hudbars/README.md index 25d5d72..98b4ad9 100644 --- a/mods/hudbars/README.md +++ b/mods/hudbars/README.md @@ -1,6 +1,6 @@ # minetest HUD bars -HUD mod to display as bars and API for +HUD mod to display as bars and API for healt, armor, breath, hunger ## Information -------------- @@ -13,33 +13,125 @@ this mod will place them accordingly. ![](screenshot.png) -## TEchnical info +### Features + +* This mod adds a mechanic for hunger, using "satiation" concept +* This mod adds information bar for armor status +* Eating an apple (from Minetest Game) increases your satiation by 2 + +> Warning: Eating food will not directly increase your health anymore, as long as the food +item is supported by this mod (see below). + +> Warning: ! Some foods may be poisoned. If you eat a poisoned item, you may still get a satiation +boost, but for a brief period you lose health points because of food poisoning. However, +food poisoning can never kill you. + +## Technical info ----------------- +This mod its a simplification of hudbars+hbarmor+hbhunger for performance +it provides extra checks for security an backguard compatibility +on all minetest engines. TExture media was optimized for low end devices. + +This fusioned hudbars 2.3.4.0 and hbarmor 1.0.1 with hbhunger 1.1.2 +with aditional patches rejected by upstream that improves performance. + +#### About armor support + +This mod adds a simple HUD bar which displays the current damage +of the player's armor (from the 3D Armor [`3d_armor`] mod) as a percentage (rounded). + +100% armor means the armor is in perfect shape. 0% means the armor is almost destroyed +or non-existant. Note that to reach 100%, the player must wear at least 4 or 6 different +pieces of armor in perfect shape. + +#### About hunger supoort + +This mod adds a hunger buildin mechanic to the game. Players get a new attribute called “satiation”: + +* A new player starts with 20 satiation points out of 30 +* Actions like digging, placing and walking cause exhaustion, which lower the satiation +* Every 800 seconds you lose 1 satiation point without doing anything +* At 1 or 0 satiation you will suffer damage and die in case you don't eat something +* If your satiation is 16 or higher, you will slowly regenerate health points +* Eating food will increase your satiation (Duh!) + +All mods which add food through standard measures (`minetest.item_eat`) are already +supported automatically. Poisoned food needs special support. + +#### Dependencies + +* default +* 3d_armor +* farming + +More mod are optionally supported depending of availability + +#### Known supported food mods + +* Apple and Blueberries from Minetest Game [`default`] +* Red and brown mushroom from Minetest Game [`flowers`] +* Bread from Minetest Game [`farming`] +* [`animalmaterials`] (Mob Framework (`mobf` modpack)) +* Bushes [`bushes`] +* [`bushes_classic`] +* Creatures [`creatures`] +* [`dwarves`] (beer and such) +* Docfarming [`docfarming`] +* Ethereal / Ethereal NG [`ethereal`] +* Farming Redo [`farming`] by TenPlus1 +* Farming plus [`farming_plus`] +* Ferns [`ferns`] +* Fishing [`fishing`] +* [`fruit`] +* Glooptest [`glooptest`] +* JKMod ([`jkanimals`], [`jkfarming`], [`jkwine`]) +* [`kpgmobs`] +* [`mobfcooking`] +* [`mooretrees`] +* [`mtfoods`] +* [`mushroom`] +* [`mush45`] +* Seaplants [`sea`] +* Simple mobs [`mobs`] +* Pizza [`pizza`] +* Not So Simple Mobs [`nssm`] + +#### Statbar mode + +If you use the statbar mode of the HUD Bars mod, these things are important to know: +As with all mods using HUD Bars, the bread statbar symbols represent the rough percentage +out of 30 satiation points, in steps of 5%, so the symbols give you an estimate of your +satiation. This is different from the hunger mod by BlockMen. + > **Warning** Keep in mind if running a server with this mod, that the custom position should be displayed correctly on every screen size. -#### Dependencies - -There's no depends - #### Current version -The current version is 2.3.4.0 its a plus fork from original cos current +The current version is 2.3.5 its a plus fork from original cos current minetest most close mods developers are not so open to support already working servers. -It works for Minetest 0.4.17+ (maybe 0.4.16 too) or later. +It works for Minetest 0.4.16+/5.X+ or later. -#### Settings +#### Configurations This mod can be configured quite a bit. You can change HUD bar appearance, offsets, ordering, and more. Use the advanced settings menu in Minetest for detailed configuration. -| configuration name | Description | type | values, min/default/max | +| configuration name | Description | type | values, default/min/max | | ---------------------------- | ------------------------------------- | ---- | ------------------------ | -| hudbars_bar_type | HUD bars style | enum | progress_bar progress_bar,statbar_classic,statbar_modern | +| hudbars_hp_player_maximun | set the maximun hp of the player healt | int | 10 20 60 | +| hudbars_br_player_maximun | set the maximun player breath value | int | 10 10 30 | +| hbarmor_autohide | Automatically hide armor HUD bar | bool | false | +| hbhunger_satiation_tick | Time in seconds which 1 saturation point is taken | float | 800 | +| hbhunger_satiation_sprint_dig | exhaustion increased this value after digged node | float | 3 | +| hbhunger_satiation_sprint_place | exhaustion increased this value after placed | float | 1 | +| hbhunger_satiation_sprint_move | exhaustion increased this value if player moves | float | 0.2 | +| hbhunger_satiation_sprint_lvl | at what exhaustion player satiation gets lowerd | float | 160 | +| hudbars_bar_type | HUD bars style | enum | progress_bar (progress_bar,statbar_classic,statbar_modern) | | hudbars_autohide_breath | Automatically hide breath indicators | bool | true | -| hudbars_alignment_pattern | HUD bars alignment pattern | enum | zigzag zigzag,stack_up,stack_down | +| hudbars_alignment_pattern | HUD bars alignment pattern | enum | zigzag (zigzag,stack_up,stack_down) | | hudbars_sorting | HUD bars order | string | breath=1, health=0 | | hudbars_pos_left_x | Left HUD bar screen x position | float | 0.5 0.0 1.0 | | hudbars_pos_left_y | Left HUD bar screen y position | float | 1.0 0.0 1.0 | @@ -54,7 +146,7 @@ Use the advanced settings menu in Minetest for detailed configuration. | hudbars_start_statbar_offset_right_x | Right HUD statbar x offset | int | 25 | | hudbars_start_statbar_offset_right_y | Right HUD statbar y offset | int | -90 | | hudbars_vmargin | Vertical distance between HUD bars | int | 24 0 | -| hudbars_tick | Default HUD bars update interval | float | 0.1 0.0 4.0 | +| hudbars_tick | Default HUD bars update interval | float | 0.2 0.0 4.0 | #### API @@ -65,9 +157,12 @@ Documentation for the API of this mod can be found in [`API.md`.](API.md) #### License of source code -Author: Wuzzy (2015) +Authors: -Also: This mod was forked from the “Better HUD” [hud] mod by BlockMen. +* Wuzzy (2015) +* PICCORO Lenz McKAY (2023) + +This mod was forked from the “Better HUD” (and hunger) [hud] mod by BlockMen. Translations: @@ -87,12 +182,15 @@ and/or modify it under the terms of the MIT License. #### Licenses of textures * `hudbars_icon_health.png`—celeron55 (CC BY-SA 3.0), modified by BlockMen -* `hudbars_bgicon_health.png`—celeron55 (CC BY-SA 3.0), modified by BlockMen * `hudbars_icon_breath.png`—kaeza (MIT License), modified by BlockMen, modified again by Wuzzy -* `hudbars_bgicon_breath.png`—based on previous image, edited by Wuzzy (MIT License) * `hudbars_bar_health.png`—Wuzzy (MIT License) * `hudbars_bar_breath.png`—Wuzzy (MIT License) * `hudbars_bar_background.png`—Wuzzy (MIT License) +* `hbarmor_icon.png`—Stu ([CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/)), modified by BlockMen +* `hbarmor_bar.png`—Wuzzy (MIT License) +* `hbhunger_icon.png`—PilzAdam ([MIT License](https://opensource.org/licenses/MIT)), modified by BlockMen +* `hbhunger_bar.png`—Wuzzy (MIT License) +* `hbhunger_icon_health_poison.png`—celeron55 ([CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/)), modified by BlockMen, modified again by Wuzzy #### License references diff --git a/mods/hudbars/default_settings.lua b/mods/hudbars/default_settings.lua index 31cd214..75ec2e6 100644 --- a/mods/hudbars/default_settings.lua +++ b/mods/hudbars/default_settings.lua @@ -25,14 +25,14 @@ else hb.settings.start_offset_right.y = hb.load_setting("hudbars_start_statbar_offset_right_y", "number", -90) end hb.settings.vmargin = hb.load_setting("hudbars_vmargin", "number", 24) -hb.settings.tick = hb.load_setting("hudbars_tick", "number", 0.1) +hb.settings.tick = hb.load_setting("hudbars_tick", "number", 0.3) -- Experimental setting: Changing this setting is not officially supported, do NOT rely on it! hb.settings.forceload_default_hudbars = hb.load_setting("hudbars_forceload_default_hudbars", "bool", true) -- Misc. settings hb.settings.alignment_pattern = hb.load_setting("hudbars_alignment_pattern", "string", "zigzag", {"zigzag", "stack_up", "stack_down"}) -hb.settings.autohide_breath = hb.load_setting("hudbars_autohide_breath", "bool", true) +hb.settings.autohide_breath = hb.load_setting("hudbars_autohide_breath", "bool", (true and not hb.settings.forceload_default_hudbars)) local sorting = minetest.settings:get("hudbars_sorting") if sorting ~= nil then @@ -47,9 +47,33 @@ else hb.settings.sorting_reverse = { [0] = "health", [1] = "breath" } end -hb.settings.hp_player_maximun = hb.load_setting("hudbars_hp_player_maximun", "number", 20) -hb.settings.br_player_maximun = hb.load_setting("hudbars_br_player_maximun", "number", 10) +hb.settings.hp_player_maximun = hb.load_setting("hudbars_hp_player_maximun", "number", 40) +hb.settings.br_player_maximun = hb.load_setting("hudbars_br_player_maximun", "number", 20) if minetest.has_feature("object_use_texture_alpha") then core.PLAYER_MAX_HP_DEFAULT = hb.settings.hp_player_maximun +else +core.PLAYER_MAX_HP = hb.settings.hp_player_maximun end + +hbarmor.autohide = (true and not hb.settings.forceload_default_hudbars) + +hbhunger.HUD_TICK = 0.2 + +hbhunger.HUNGER_TICK = 800 -- time in seconds after that 1 hunger point is taken +hbhunger.EXHAUST_DIG = 3 -- exhaustion increased this value after digged node +hbhunger.EXHAUST_PLACE = 1 -- exhaustion increased this value after placed +hbhunger.EXHAUST_MOVE = 0.2 -- exhaustion increased this value if player movement detected +hbhunger.EXHAUST_LVL = 160 -- at what exhaustion player satiation gets lowerd +hbhunger.SAT_MAX = 30 -- maximum satiation points +hbhunger.SAT_INIT = 20 -- initial satiation points +hbhunger.SAT_HEAL = 15 -- required satiation points to start healing + +local set + +set = minetest.settings:get_bool("hbarmor_autohide") if set ~= nil then hbarmor.autohide = set end +set = minetest.settings:get("hbhunger_satiation_tick") if set ~= nil then hbhunger.HUNGER_TICK = tonumber(set) end +set = minetest.settings:get("hbhunger_satiation_dig") if set ~= nil then hbhunger.HUNGER_DIG = tonumber(set) end +set = minetest.settings:get("hbhunger_satiation_place") if set ~= nil then hbhunger.HUNGER_PLACE = tonumber(set) end +set = minetest.settings:get("hbhunger_satiation_move") if set ~= nil then hbhunger.HUNGER_MOVE = tonumber(set) end +set = minetest.settings:get("hbhunger_satiation_lvl") if set ~= nil then hbhunger.HUNGER_LVL = tonumber(set) end diff --git a/mods/hudbars/depends.txt b/mods/hudbars/depends.txt index d9b8b81..afc33be 100644 --- a/mods/hudbars/depends.txt +++ b/mods/hudbars/depends.txt @@ -1 +1,31 @@ -intllib? \ No newline at end of file +default? +intllib? +3d_armor? +flowers? +animalmaterials? +bucket? +bushes? +bushes_classic? +cooking? +creatures? +docfarming? +dwarves? +ethereal? +farming? +farming_plus? +ferns? +fishing? +fruit? +glooptest? +jkanimals? +jkfarming? +jkwine? +kpgmobs? +mobfcooking? +mobs?moretrees? +mtfoods? +mush45? +mushroom? +seaplants? +pizza? +nssm? diff --git a/mods/hudbars/description.txt b/mods/hudbars/description.txt index 726453c..3b178c7 100644 --- a/mods/hudbars/description.txt +++ b/mods/hudbars/description.txt @@ -1 +1 @@ -HUD mod to display as bars and API for \ No newline at end of file +HUD mod to display as bars and API for satiaton/stamina and armor status features diff --git a/mods/hudbars/hunger.lua b/mods/hudbars/hunger.lua new file mode 100644 index 0000000..0387581 --- /dev/null +++ b/mods/hudbars/hunger.lua @@ -0,0 +1,175 @@ +-- Keep these for backwards compatibility +function hbhunger.save_hunger(player) + hbhunger.set_hunger_raw(player) +end +function hbhunger.load_hunger(player) + hbhunger.get_hunger_raw(player) +end + +-- wrapper for minetest.item_eat (this way we make sure other mods can't break this one) +local org_eat = minetest.do_item_eat +minetest.do_item_eat = function(hp_change, replace_with_item, itemstack, user, pointed_thing) + local old_itemstack = itemstack + itemstack = hbhunger.eat(hp_change, replace_with_item, itemstack, user, pointed_thing) + for _, callback in pairs(minetest.registered_on_item_eats) do + local result = callback(hp_change, replace_with_item, itemstack, user, pointed_thing, old_itemstack) + if result then + return result + end + end + return itemstack +end + +-- food functions +local food = hbhunger.food + +function hbhunger.register_food(name, hunger_change, replace_with_item, poisen, heal, sound) + food[name] = {} + food[name].saturation = hunger_change -- hunger points added + food[name].replace = replace_with_item -- what item is given back after eating + food[name].poisen = poisen -- time its poisening + food[name].healing = heal -- amount of HP + food[name].sound = sound -- special sound that is played when eating +end + +function hbhunger.eat(hp_change, replace_with_item, itemstack, user, pointed_thing) + local item = itemstack:get_name() + local def = food[item] + if not def then + def = {} + if type(hp_change) ~= "number" then + hp_change = 1 + minetest.log("error", "Wrong on_use() definition for item '" .. item .. "'") + end + def.saturation = hp_change * 1.3 + def.replace = replace_with_item + end + local func = hbhunger.item_eat(def.saturation, def.replace, def.poisen, def.healing, def.sound) + return func(itemstack, user, pointed_thing) +end + +-- Poison player +local function poisenp(tick, time, time_left, player) + -- First check if player is still there + if not player:is_player() then + return + end + time_left = time_left + tick + if time_left < time then + minetest.after(tick, poisenp, tick, time, time_left, player) + else + hbhunger.poisonings[player:get_player_name()] = hbhunger.poisonings[player:get_player_name()] - 1 + if hbhunger.poisonings[player:get_player_name()] <= 0 then + -- Reset HUD bar color + hb.change_hudbar(player, "health", nil, nil, "hudbars_icon_health.png", nil, "hudbars_bar_health.png") + end + end + if player:get_hp()-1 > 0 then + player:set_hp(player:get_hp()-1) + end + +end + +function hbhunger.item_eat(hunger_change, replace_with_item, poisen, heal, sound) + return function(itemstack, user, pointed_thing) + if itemstack:take_item() ~= nil and user ~= nil then + local name = user:get_player_name() + local h = tonumber(hbhunger.hunger[name]) + local hp = user:get_hp() + if h == nil or hp == nil then + return + end + if user:is_player() then + local object, object_pos + -- Check if user is a "fake player" (unofficial imitation of a the player data structure) + if type(user) == "userdata" then + object = user + else + object_pos = user:get_pos() + end + minetest.sound_play( + {name = sound or "hbhunger_eat_generic", + gain = 1}, + {object=object, + pos=object_pos, + max_hear_distance = 16, + pitch = 1 + math.random(-10, 10)*0.005,}, + true + ) + end + + -- Saturation + if h < hbhunger.SAT_MAX and hunger_change then + h = h + hunger_change + if h > hbhunger.SAT_MAX then h = hbhunger.SAT_MAX end + hbhunger.hunger[name] = h + hbhunger.set_hunger_raw(user) + end + -- we must respect the real maximun hp of the player already set + local max_hp = user:get_properties().hp_max + -- Healing + if hp < max_hp then + -- heal is not defines due way of hbhunger.register_food + if not heal then heal = 1 end + -- eating something not give you inmediate life, give you statiation to get recovery + if hp < 6 and heal > 0 then hp = hp + heal end + -- so do not hardcoded hp to 20 when eating + if hp > max_hp then hp = max_hp end + -- this will work only when valid then + user:set_hp(hp) + end + -- Poison + if poisen then + -- Set poison bar + hb.change_hudbar(user, "health", nil, nil, "hbhunger_icon_health_poison.png", nil, "hbhunger_bar_health_poison.png") + hbhunger.poisonings[name] = hbhunger.poisonings[name] + 1 + poisenp(1, poisen, 0, user) + end + + if itemstack:get_count() == 0 then + itemstack:add_item(replace_with_item) + else + local inv = user:get_inventory() + if inv:room_for_item("main", replace_with_item) then + inv:add_item("main", replace_with_item) + else + minetest.add_item(user:get_pos(), replace_with_item) + end + end + end + return itemstack + end +end + +-- player-action based hunger changes +function hbhunger.handle_node_actions(pos, oldnode, player, ext) + -- is_fake_player comes from the pipeworks, we are not interested in those + if not player or not player:is_player() or player.is_fake_player == true then + return + end + local name = player:get_player_name() + local exhaus = hbhunger.exhaustion[name] + if exhaus == nil then return end + local new = hbhunger.EXHAUST_PLACE + -- placenode event + if not ext then + new = hbhunger.EXHAUST_DIG + end + -- assume its send by main timer when movement detected + if not pos and not oldnode then + new = hbhunger.EXHAUST_MOVE + end + exhaus = exhaus + new + if exhaus > hbhunger.EXHAUST_LVL then + exhaus = 0 + local h = tonumber(hbhunger.hunger[name]) + h = h - 1 + if h < 0 then h = 0 end + hbhunger.hunger[name] = h + hbhunger.set_hunger_raw(player) + end + hbhunger.exhaustion[name] = exhaus +end + +minetest.register_on_placenode(hbhunger.handle_node_actions) +minetest.register_on_dignode(hbhunger.handle_node_actions) diff --git a/mods/hudbars/init.lua b/mods/hudbars/init.lua index 378c37e..1669c9a 100644 --- a/mods/hudbars/init.lua +++ b/mods/hudbars/init.lua @@ -24,7 +24,17 @@ end local N = function(s) return s end +local modarmors = minetest.get_modpath("3d_armor") +local modhbarm = minetest.get_modpath("hbarmor") +local modhbhung = minetest.get_modpath("hbhunger") + +if (not armor) or (not armor.def) then + minetest.log("error", "[hbarmor] Outdated 3d_armor version. Please update your version of 3d_armor!") +end + hb = {} +hb.version = "2.3.5.0" +hb.redo = true hb.hudtables = {} @@ -34,6 +44,29 @@ hb.hudbars_count = 0 -- table which records which HUD bar slots have been “registered” so far; used for automatic positioning hb.registered_slots = {} +-- Table which contains all players with active default HUD bars (only for internal use) +hb.players = {} + +hbarmor = {} +hbhunger = {} + +-- HUD item ids +local hunger_hud = {} + +-- Stores if player's HUD bar has been initialized so far. +hbarmor.player_active = {} + +-- HUD statbar values +hbarmor.armor = {} +hbhunger.food = {} +hbhunger.hunger = {} +hbhunger.hunger_out = {} +hbhunger.poisonings = {} +hbhunger.exhaustion = {} -- Exhaustion is experimental! + +-- If true, the armor bar is hidden when the player does not wear any armor +hbarmor.autohide = true + hb.settings = {} function hb.load_setting(sname, stype, defaultval, valid_values) @@ -70,8 +103,67 @@ end -- Load default settings dofile(minetest.get_modpath("hudbars").."/default_settings.lua") +if not modhbhung then + + -- due lackof global hbhunger these need to be first + hbhunger.get_hunger_raw = function(player) + local inv = player:get_inventory() + if not inv then return nil end + local hgp = inv:get_stack("hunger", 1):get_count() + if hgp == 0 then + hgp = 21 + inv:set_stack("hunger", 1, ItemStack({name=":", count=hgp})) + else + hgp = hgp + end + return hgp-1 + end + + hbhunger.set_hunger_raw = function(player) + local inv = player:get_inventory() + local name = player:get_player_name() + local value = hbhunger.hunger[name] + if not inv or not value then return nil end + if value > hbhunger.SAT_MAX then value = hbhunger.SAT_MAX end + if value < 0 then value = 0 end + + inv:set_stack("hunger", 1, ItemStack({name=":", count=value+1})) + + return true + end + + -- Load hunger management function for food and mod handling + dofile(minetest.get_modpath("hudbars").."/hunger.lua") + dofile(minetest.get_modpath("hudbars").."/register_foods.lua") + +end + local function player_exists(player) - return player ~= nil and player:is_player() + return player ~= nil and (type(player) == "userdata") +end + +local must_hide = function(playername, arm) + if modarmors then + return ((not armor.def[playername].count or armor.def[playername].count == 0 or not hb.settings.forceload_default_hudbars) and arm == 0) + end + return modarmors +end + +local arm_printable = function(arm) + return math.ceil(math.floor(arm+0.5)) +end + +local function checksupportmax(player) + local statusinfo = minetest.get_server_status() + if string.find(statusinfo,"0.4.1") and not string.find(statusinfo,"0.4.18") and not string.find(statusinfo,"0.4.17.3") then + hb.settings.hp_player_maximun = 20 + hb.settings.br_player_maximun = 10 + if player_exists(player) then + player:set_properties({hp_max = 20}) + else + minetest.log("error","[hudbars] WARNING! minetest version do not support customization of hp_max healt player values") + end + end end local function make_label(format_string, format_string_config, label, start_value, max_value) @@ -103,9 +195,6 @@ local function make_label(format_string, format_string_config, label, start_valu return ret end --- Table which contains all players with active default HUD bars (only for internal use) -hb.players = {} - function hb.value_to_barlength(value, max) if max == 0 then return 0 @@ -143,6 +232,7 @@ function hb.get_hudbar_position_index(identifier) end function hb.register_hudbar(identifier, text_color, label, textures, default_start_value, default_start_max, default_start_hidden, format_string, format_string_config) + checksupportmax() minetest.log("action", "hb.register_hudbar: "..tostring(identifier)) local hudtable = {} local pos, offset @@ -220,7 +310,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta hud_elem_type = "image", position = pos, scale = bgscale, - text = "hudbars_bar_background.png", + text = "", alignment = {x=1,y=1}, offset = { x = offset.x - 1, y = offset.y - 1 }, z_index = 0, @@ -331,6 +421,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta end function hb.init_hudbar(player, identifier, start_value, start_max, start_hidden) + checksupportmax(player) if not player_exists(player) then return false end local hudtable = hb.get_hudtable(identifier) hb.hudtables[identifier].add_all(player, hudtable, start_value, start_max, start_hidden) @@ -441,6 +532,8 @@ function hb.hide_hudbar(player, identifier) local name = player:get_player_name() local hudtable = hb.get_hudtable(identifier) if hudtable == nil then return false end + if not hudtable.hudstate[name] then return false end + if not hudtable.hudstate[name].hidden then return false end if hudtable.hudstate[name].hidden == true then return true end if hb.settings.bar_type == "progress_bar" then if hudtable.hudids[name].icon ~= nil then @@ -460,7 +553,8 @@ function hb.unhide_hudbar(player, identifier) local name = player:get_player_name() local hudtable = hb.get_hudtable(identifier) if hudtable == nil then return false end - if hudtable.hudstate[name].hidden == false then return true end + if not hudtable.hudstate[name] then return false end + if not hudtable.hudstate[name].hidden then return false end local value = hudtable.hudstate[name].value local max = hudtable.hudstate[name].max if hb.settings.bar_type == "progress_bar" then @@ -503,10 +597,20 @@ function hb.get_hudbar_identifiers() return ids end ---register built-in HUD bars +--register built-in HUD bars and armor HUD bar if minetest.settings:get_bool("enable_damage") or hb.settings.forceload_default_hudbars then - hb.register_hudbar("health", 0xFFFFFF, S("Health"), { bar = "hudbars_bar_health.png", icon = "hudbars_icon_health.png", bgicon = "hudbars_bgicon_health.png" }, hb.settings.hp_player_maximun, hb.settings.hp_player_maximun, false) - hb.register_hudbar("breath", 0xFFFFFF, S("Breath"), { bar = "hudbars_bar_breath.png", icon = "hudbars_icon_breath.png", bgicon = "hudbars_bgicon_breath.png" }, hb.settings.br_player_maximun, hb.settings.br_player_maximun, true) + local hicon = "hudbars_icon_health.png" + local bicon = "hudbars_icon_breath.png" + local aicon = "hbarmor_icon.png" + local sicon = "hbhunger_icon.png" + hb.register_hudbar("health", 0xFFFFFF, S("Health"), { bar = "hudbars_bar_health.png", icon = hicon, bgicon = nil }, hb.settings.hp_player_maximun, hb.settings.hp_player_maximun, false) + hb.register_hudbar("breath", 0xFFFFFF, S("Breath"), { bar = "hudbars_bar_breath.png", icon = bicon, bgicon = nil }, hb.settings.br_player_maximun, hb.settings.br_player_maximun, false) + if not modhbarm then + hb.register_hudbar("armor", 0xFFFFFF, S("Armor"), { bar = "hbarmor_bar.png", icon = aicon, bgicon = nil }, 0, 100, hbarmor.autohide, N("@1: @2%"), { order = { "label", "value" } } ) + end + if not modhbhung then + hb.register_hudbar("satiation", 0xFFFFFF, S("Satiation"), { bar = "hbhunger_bar.png", icon = sicon, bgicon = nil }, hbhunger.SAT_INIT, hbhunger.SAT_MAX, false, nil, { format_value = "%02.0f", format_max_value = "%02.0f" }) + end end local function hide_builtin(player) @@ -516,27 +620,67 @@ local function hide_builtin(player) player:hud_set_flags(flags) end +if not modhbarm and modarmors then + + function hbarmor.get_armor(player) + if not player or not armor.def then + return false + end + local name = player:get_player_name() + + local def = armor.def[name] or nil + if def and def.state and def.count then + hbarmor.set_armor(name, def.state, def.count) + else + minetest.log("error", "[hudbars] Call to hbarmor.get_armor returned with false!") + return false + end + return true + end + + function hbarmor.set_armor(player_name, ges_state, items) + local max_items = 4 + if items == 5 then max_items = items end + local max = max_items * 65535 + local lvl = max - ges_state + lvl = lvl/max + if ges_state == 0 and items == 0 then lvl = 0 end + + hbarmor.armor[player_name] = math.max(0, math.min(lvl* (items * (100 / max_items)), 100)) + end + +end local function custom_hud(player) + local name = player:get_player_name() + if minetest.settings:get_bool("enable_damage") or hb.settings.forceload_default_hudbars then - local hide - if minetest.settings:get_bool("enable_damage") then - hide = false - else - hide = true - end + local hp = player:get_hp() local hp_max = hb.settings.hp_player_maximun - hb.init_hudbar(player, "health", math.min(hp, hp_max), hp_max, hide) + local hide_hp = not minetest.settings:get_bool("enable_damage") or true + if player:get_properties().hp_max then player:set_properties({hp_max = hb.settings.hp_player_maximun}) end + hb.init_hudbar(player, "health", math.min(hp, hp_max), hp_max, hide_hp) + local breath = player:get_breath() local breath_max = hb.settings.br_player_maximun local hide_breath - -- real honoring to configuration of max hp custom heal and breath - if player:get_properties().hp_max then player:set_properties({hp_max = hb.settings.hp_player_maximun}) end if player:get_properties().breath_max then player:set_properties({breath_max = hb.settings.br_player_maximun}) end - -- workaround bug https://github.com/minetest/minetest/issues/12350 if breath >= breath_max and hb.settings.autohide_breath == true then hide_breath = true else hide_breath = false end - hb.init_hudbar(player, "breath", math.min(breath, breath_max), breath_max, hide_breath or hide) + hb.init_hudbar(player, "breath", math.min(breath, breath_max), breath_max, hide_breath) + + if not modhbarm and modarmors then + local arm = tonumber(hbarmor.armor[name]) + if not arm then arm = 0 end + local hide_ar = hbarmor.autohide and must_hide(name, arm) + hbarmor.get_armor(player) + arm = tonumber(hbarmor.armor[name]) + hb.init_hudbar(player, "armor", arm_printable(arm), 100, hide_ar) + end + + if not modhbhung then + hb.init_hudbar(player, "satiation", hbhunger.get_hunger_raw(player), nil, (not hb.settings.forceload_default_hudbars) ) + end end end @@ -548,16 +692,18 @@ end -- update built-in HUD bars local function update_hud(player) - if not player_exists(player) then return end + + local name = player:get_player_name() -- player checks are already made before call this function + if not name then return end + + -- loading only if need or force loading if minetest.settings:get_bool("enable_damage") then if hb.settings.forceload_default_hudbars then hb.unhide_hudbar(player, "health") end --air local breath_max = player:get_properties().breath_max or hb.settings.br_player_maximun - -- workaround bug https://github.com/minetest/minetest/issues/12350 local breath = player:get_breath() - if breath >= breath_max and hb.settings.autohide_breath == true then hb.hide_hudbar(player, "breath") else @@ -566,10 +712,38 @@ local function update_hud(player) end --health update_health(player) + -- armor + if not modhbarm and modarmors then + local larmor = hbarmor.armor[name] + local arm = tonumber(larmor) + if not arm then arm = 0; hbarmor.armor[name] = 0 end + if hbarmor.autohide then + if must_hide(name, arm) then + hb.hide_hudbar(player, "armor") + else + hb.change_hudbar(player, "armor", arm_printable(arm)) + hb.unhide_hudbar(player, "armor") + end + else + hb.change_hudbar(player, "armor", arm_printable(arm)) + hb.unhide_hudbar(player, "armor") + end + end + -- hunger + if not modhbhung then + local h_out = tonumber(hbhunger.hunger_out[name]) + local h = tonumber(hbhunger.hunger[name]) + if h_out ~= h then + hbhunger.hunger_out[name] = h + hb.change_hudbar(player, "satiation", h) + end + end elseif hb.settings.forceload_default_hudbars then update_health(player) hb.hide_hudbar(player, "health") hb.hide_hudbar(player, "breath") + hb.hide_hudbar(player, "armor") + hb.hide_hudbar(player, "satiation") end end @@ -580,34 +754,122 @@ minetest.register_on_player_hpchange(function(player) end) minetest.register_on_respawnplayer(function(player) + if not player_exists(player) then return end + + local name = player:get_player_name() update_health(player) + if not modhbhung then + hbhunger.hunger[name] = hbhunger.SAT_INIT + hbhunger.set_hunger_raw(player) + hbhunger.exhaustion[name] = 0 + end hb.hide_hudbar(player, "breath") end) minetest.register_on_joinplayer(function(player) + if not player_exists(player) then return end + + local name = player:get_player_name() + local inv = player:get_inventory() + if not modhbhung then + inv:set_size("hunger",1) + hbhunger.hunger[name] = hbhunger.get_hunger_raw(player) + hbhunger.hunger_out[name] = hbhunger.hunger[name] + hbhunger.exhaustion[name] = 0 + hbhunger.poisonings[name] = 0 + end hide_builtin(player) custom_hud(player) - hb.players[player:get_player_name()] = player + hb.players[name] = player + if not modhbarm then + hbarmor.player_active[name] = true + end + if not modhbhung then + hbhunger.set_hunger_raw(player) + end end) minetest.register_on_leaveplayer(function(player) - hb.players[player:get_player_name()] = nil + if not player_exists(player) then return end + + local name = player:get_player_name() + hb.players[name] = nil + if not modhbarm then + hbarmor.player_active[name] = false + end end) +local modresult = "" + +if modhbarm then modresult = modresult .. " without build-in hbarmor" end +if modhbhung then modresult = modresult .. " without build-in hbhunger" end + +minetest.log("[MOD] hudbars"..modresult.." loaded" ) + + local main_timer = 0 local timer = 0 +local timer2 = 0 minetest.register_globalstep(function(dtime) main_timer = main_timer + dtime timer = timer + dtime + timer2 = timer2 + dtime + -- main timer are for healt and breath, separate satiation cos needs aditional timers if main_timer > hb.settings.tick or timer > 4 then if main_timer > hb.settings.tick then main_timer = 0 end -- only proceed if damage is enabled if minetest.settings:get_bool("enable_damage") or hb.settings.forceload_default_hudbars then + -- update hud for healt for _, player in pairs(hb.players) do - -- update all hud elements update_hud(player) end + if not modhbarm and modarmors then + -- update all hud elements + for _,player in ipairs(minetest.get_connected_players()) do + if player_exists(player) then + local name = player:get_player_name() + if hbarmor.player_active[name] == true then + hbarmor.get_armor(player) + update_hud(player) + end + end + end + end + end + end + if not modhbhung then + -- satiaton are internal properties, so update live (not hb) player properties + if timer > 4 or timer2 > hbhunger.HUNGER_TICK then + for _,player in ipairs(minetest.get_connected_players()) do + if player_exists(player) then + local name = player:get_player_name() + local h = tonumber(hbhunger.hunger[name]) + local hp = player:get_hp() + if timer > 4 then + if h > hbhunger.SAT_HEAL and hp > 0 and player:get_breath() > 0 then + player:set_hp(hp+1) -- heal player by 1 hp if not dead and satiation is > hbhunger.SAT_HEAL + elseif h <= 1 then + if hp-1 >= 0 then player:set_hp(hp-1) end -- or damage player by 1 hp if satiation is < 2 + end + end + if timer2 > hbhunger.HUNGER_TICK then + if h > 0 then + h = h-1 -- lower satiation by 1 point after xx seconds + hbhunger.hunger[name] = h + hbhunger.set_hunger_raw(player) + end + end + -- still do not update all hud elements cos we have 2 loops + local controls = player:get_player_control() + if controls.up or controls.down or controls.left or controls.right then + hbhunger.handle_node_actions(nil, nil, player) -- Determine if the player is walking + end + end + end end end if timer > 4 then timer = 0 end + if timer2 > hbhunger.HUNGER_TICK then timer2 = 0 end end) + + diff --git a/mods/hudbars/locale/hudbars.de.tr b/mods/hudbars/locale/hudbars.de.tr index 3d1e697..2c4c0c1 100644 --- a/mods/hudbars/locale/hudbars.de.tr +++ b/mods/hudbars/locale/hudbars.de.tr @@ -2,3 +2,11 @@ Health=Leben Breath=Atem @1: @2/@3=@1: @2/@3 +Armor=Panzerung +@1: @2%=@1: @2% +Satiation=Sättigung +Set satiation of player or yourself=Sättigung von Spieler oder Ihnen selbst setzen +Not possible, damage is disabled.=Nicht möglich, Schaden ist deaktiviert. +Invalid satiation!=Ungültige Sättigung! +Player @1 does not exist.=Spieler @1 existiert nicht. +[] =[] diff --git a/mods/hudbars/locale/hudbars.es.tr b/mods/hudbars/locale/hudbars.es.tr index bbf0279..288d2e7 100644 --- a/mods/hudbars/locale/hudbars.es.tr +++ b/mods/hudbars/locale/hudbars.es.tr @@ -2,3 +2,10 @@ Health=Salud Breath=Aliento @1: @2/@3=@1: @2/@3 +Armor=Armado +@1: @2%=@1:@2% +Satiation=Saciado +Set satiation of player or yourself=Establece la saciedad en el jugador o en si mismo +Not possible, damage is disabled.=No es posible, daño esta desactivado. +Invalid satiation!=Satisfaccion invalida! +Player @1 does not exist.=El jugador @1 no existe. diff --git a/mods/hudbars/locale/hudbars.fr.tr b/mods/hudbars/locale/hudbars.fr.tr new file mode 100644 index 0000000..0a8a382 --- /dev/null +++ b/mods/hudbars/locale/hudbars.fr.tr @@ -0,0 +1,2 @@ +# textdomain:hbhunger +Satiation=Satiété diff --git a/mods/hudbars/locale/hudbars.it.tr b/mods/hudbars/locale/hudbars.it.tr index 3ada5b6..c974141 100644 --- a/mods/hudbars/locale/hudbars.it.tr +++ b/mods/hudbars/locale/hudbars.it.tr @@ -1,6 +1,7 @@ # textdomain: hudbars Health=Salute Breath=Ossigeno - -# Default format string for progress bar-style HUD bars, e.g. “Health 5/20” @1: @2/@3=@1: @2/@3 +Armor=Armatura +@1: @2%=@1:@2% +Satiation=Sazietà diff --git a/mods/hudbars/locale/hudbars.ms.tr b/mods/hudbars/locale/hudbars.ms.tr index eb811ab..a0f4b5a 100644 --- a/mods/hudbars/locale/hudbars.ms.tr +++ b/mods/hudbars/locale/hudbars.ms.tr @@ -2,3 +2,4 @@ Health=Kesihatan Breath=Nafas @1: @2/@3=@1: @2/@3 +Satiation=Kekenyangan diff --git a/mods/hudbars/locale/hudbars.pt.tr b/mods/hudbars/locale/hudbars.pt.tr index a818f09..e57a8b2 100644 --- a/mods/hudbars/locale/hudbars.pt.tr +++ b/mods/hudbars/locale/hudbars.pt.tr @@ -1,6 +1,7 @@ # textdomain: hudbars Health=Saude Breath=Folego - -# Formato de string padrão para progresso bar-style de barras do HUD, por exemplo “Saude 5/20” @1: @2/@3=@1: @2/@3 +Armor=Armado +@1: @2%=@1: @2% +Satiation=Saciedade diff --git a/mods/hudbars/locale/hudbars.ru.tr b/mods/hudbars/locale/hudbars.ru.tr index 2d278e3..cc39433 100644 --- a/mods/hudbars/locale/hudbars.ru.tr +++ b/mods/hudbars/locale/hudbars.ru.tr @@ -1,4 +1,7 @@ # textdomain: hudbars -Health=HP +Health=Здоровье Breath=дыхание @1: @2/@3=@1: @2/@3 +Armor=Доспехи +@1: @2%=@1: @2% +Satiation=голод diff --git a/mods/hudbars/locale/template.txt b/mods/hudbars/locale/template.txt index 37b0559..253d574 100644 --- a/mods/hudbars/locale/template.txt +++ b/mods/hudbars/locale/template.txt @@ -1,6 +1,10 @@ # textdomain: hudbars Health= Breath= +Armor= -# Default format string for progress bar-style HUD bars, e.g. “Health 5/20” +# Default format string for progress bar-style HUD bars, e.g. “Health 05/20” @1: @2/@3= + +# Format string for displaying the armor. E.g. "Armor: 100%" +@1: @2%= diff --git a/mods/hudbars/mod.conf b/mods/hudbars/mod.conf index d6a0571..e07285d 100644 --- a/mods/hudbars/mod.conf +++ b/mods/hudbars/mod.conf @@ -1,2 +1,3 @@ name = hudbars -description = HUD mod to display as bars and API for +description = HUD mod to display as bars and API for with satiaton/stamina features and armor status +optional_depends = 3d_armor, default, flowers, animalmaterials, bucket, bushes, bushes_classic, cooking, creatures, docfarming, dwarves, ethereal, farming, farming_plus, ferns, fishing, fruit, glooptest, jkanimals, jkfarming, jkwine, kpgmobs, mobfcooking, mobs, moretrees, mtfoods, mush45, mushroom, seaplants, pizza, nssm diff --git a/mods/hudbars/register_foods.lua b/mods/hudbars/register_foods.lua new file mode 100644 index 0000000..c7dd5b0 --- /dev/null +++ b/mods/hudbars/register_foods.lua @@ -0,0 +1,331 @@ +if minetest.get_modpath("default") ~= nil then + hbhunger.register_food("default:apple", 2) + hbhunger.register_food("default:blueberries", 2) +end +if minetest.get_modpath("flowers") ~= nil then + hbhunger.register_food("flowers:mushroom_brown", 1) + hbhunger.register_food("flowers:mushroom_red", 1, "", 3) +end +if minetest.get_modpath("farming") ~= nil then + hbhunger.register_food("farming:bread", 5) +end + +if minetest.get_modpath("mobs") ~= nil then + if mobs.mod ~= nil and mobs.mod == "redo" then + hbhunger.register_food("mobs:cheese", 4) + hbhunger.register_food("mobs:meat", 8) + hbhunger.register_food("mobs:meat_raw", 4) + hbhunger.register_food("mobs:rat_cooked", 4) + hbhunger.register_food("mobs:honey", 2) + hbhunger.register_food("mobs:pork_raw", 3, "", 3) + hbhunger.register_food("mobs:pork_cooked", 8) + hbhunger.register_food("mobs:chicken_cooked", 6) + hbhunger.register_food("mobs:chicken_raw", 2, "", 3) + hbhunger.register_food("mobs:chicken_egg_fried", 2) + if minetest.get_modpath("bucket") then + hbhunger.register_food("mobs:bucket_milk", 3, "bucket:bucket_empty") + end + else + hbhunger.register_food("mobs:meat", 6) + hbhunger.register_food("mobs:meat_raw", 3) + hbhunger.register_food("mobs:rat_cooked", 5) + end +end + +if minetest.get_modpath("moretrees") ~= nil then + hbhunger.register_food("moretrees:coconut_milk", 1) + hbhunger.register_food("moretrees:raw_coconut", 2) + hbhunger.register_food("moretrees:acorn_muffin", 3) + hbhunger.register_food("moretrees:spruce_nuts", 1) + hbhunger.register_food("moretrees:pine_nuts", 1) + hbhunger.register_food("moretrees:fir_nuts", 1) +end + +if minetest.get_modpath("dwarves") ~= nil then + hbhunger.register_food("dwarves:beer", 2) + hbhunger.register_food("dwarves:apple_cider", 1) + hbhunger.register_food("dwarves:midus", 2) + hbhunger.register_food("dwarves:tequila", 2) + hbhunger.register_food("dwarves:tequila_with_lime", 2) + hbhunger.register_food("dwarves:sake", 2) +end + +if minetest.get_modpath("animalmaterials") ~= nil then + hbhunger.register_food("animalmaterials:milk", 2) + hbhunger.register_food("animalmaterials:meat_raw", 3) + hbhunger.register_food("animalmaterials:meat_pork", 3) + hbhunger.register_food("animalmaterials:meat_beef", 3) + hbhunger.register_food("animalmaterials:meat_chicken", 3) + hbhunger.register_food("animalmaterials:meat_lamb", 3) + hbhunger.register_food("animalmaterials:meat_venison", 3) + hbhunger.register_food("animalmaterials:meat_undead", 3, "", 3) + hbhunger.register_food("animalmaterials:meat_toxic", 3, "", 5) + hbhunger.register_food("animalmaterials:meat_ostrich", 3) + hbhunger.register_food("animalmaterials:fish_bluewhite", 2) + hbhunger.register_food("animalmaterials:fish_clownfish", 2) +end + +if minetest.get_modpath("fishing") ~= nil then + hbhunger.register_food("fishing:fish_raw", 2) + hbhunger.register_food("fishing:fish_cooked", 5) + hbhunger.register_food("fishing:sushi", 6) + hbhunger.register_food("fishing:shark", 4) + hbhunger.register_food("fishing:shark_cooked", 8) + hbhunger.register_food("fishing:pike", 4) + hbhunger.register_food("fishing:pike_cooked", 8) +end + +if minetest.get_modpath("glooptest") ~= nil then + hbhunger.register_food("glooptest:kalite_lump", 1) +end + +if minetest.get_modpath("bushes") ~= nil then + hbhunger.register_food("bushes:sugar", 1) + hbhunger.register_food("bushes:strawberry", 2) + hbhunger.register_food("bushes:berry_pie_raw", 3) + hbhunger.register_food("bushes:berry_pie_cooked", 4) + hbhunger.register_food("bushes:basket_pies", 15) +end + +if minetest.get_modpath("bushes_classic") then + -- bushes_classic mod, as found in the plantlife modpack + local berries = { + "strawberry", + "blackberry", + "blueberry", + "raspberry", + "gooseberry", + "mixed_berry"} + for _, berry in ipairs(berries) do + if berry ~= "mixed_berry" then + hbhunger.register_food("bushes:"..berry, 1) + end + hbhunger.register_food("bushes:"..berry.."_pie_raw", 2) + hbhunger.register_food("bushes:"..berry.."_pie_cooked", 5) + hbhunger.register_food("bushes:basket_"..berry, 15) + end +end + +if minetest.get_modpath("mushroom") ~= nil then + hbhunger.register_food("mushroom:brown", 1) + hbhunger.register_food("mushroom:red", 1, "", 3) + -- mushroom potions: red = strong poison, brown = light restorative + if minetest.get_modpath("vessels") then + hbhunger.register_food("mushroom:brown_essence", 1, "vessels:glass_bottle", nil, 4) + hbhunger.register_food("mushroom:poison", 1, "vessels:glass_bottle", 10) + end +end + +if minetest.get_modpath("docfarming") ~= nil then + hbhunger.register_food("docfarming:carrot", 3) + hbhunger.register_food("docfarming:cucumber", 2) + hbhunger.register_food("docfarming:corn", 3) + hbhunger.register_food("docfarming:potato", 4) + hbhunger.register_food("docfarming:bakedpotato", 5) + hbhunger.register_food("docfarming:raspberry", 3) +end + +if minetest.get_modpath("farming_plus") ~= nil then + hbhunger.register_food("farming_plus:carrot_item", 3) + hbhunger.register_food("farming_plus:banana", 2) + hbhunger.register_food("farming_plus:orange_item", 2) + hbhunger.register_food("farming:pumpkin_bread", 4) + hbhunger.register_food("farming_plus:strawberry_item", 2) + hbhunger.register_food("farming_plus:tomato_item", 2) + hbhunger.register_food("farming_plus:potato_item", 4) + hbhunger.register_food("farming_plus:rhubarb_item", 2) +end + +if minetest.get_modpath("mtfoods") ~= nil then + hbhunger.register_food("mtfoods:dandelion_milk", 1) + hbhunger.register_food("mtfoods:sugar", 1) + hbhunger.register_food("mtfoods:short_bread", 4) + hbhunger.register_food("mtfoods:cream", 1) + hbhunger.register_food("mtfoods:chocolate", 2) + hbhunger.register_food("mtfoods:cupcake", 2) + hbhunger.register_food("mtfoods:strawberry_shortcake", 2) + hbhunger.register_food("mtfoods:cake", 3) + hbhunger.register_food("mtfoods:chocolate_cake", 3) + hbhunger.register_food("mtfoods:carrot_cake", 3) + hbhunger.register_food("mtfoods:pie_crust", 3) + hbhunger.register_food("mtfoods:apple_pie", 3) + hbhunger.register_food("mtfoods:rhubarb_pie", 2) + hbhunger.register_food("mtfoods:banana_pie", 3) + hbhunger.register_food("mtfoods:pumpkin_pie", 3) + hbhunger.register_food("mtfoods:cookies", 2) + hbhunger.register_food("mtfoods:mlt_burger", 5) + hbhunger.register_food("mtfoods:potato_slices", 2) + hbhunger.register_food("mtfoods:potato_chips", 3) + --mtfoods:medicine + hbhunger.register_food("mtfoods:casserole", 3) + hbhunger.register_food("mtfoods:glass_flute", 2) + hbhunger.register_food("mtfoods:orange_juice", 2) + hbhunger.register_food("mtfoods:apple_juice", 2) + hbhunger.register_food("mtfoods:apple_cider", 2) + hbhunger.register_food("mtfoods:cider_rack", 2) +end + +if minetest.get_modpath("fruit") ~= nil then + hbhunger.register_food("fruit:apple", 2) + hbhunger.register_food("fruit:pear", 2) + hbhunger.register_food("fruit:bananna", 3) + hbhunger.register_food("fruit:orange", 2) +end + +if minetest.get_modpath("mush45") ~= nil then + hbhunger.register_food("mush45:meal", 4) +end + +if minetest.get_modpath("seaplants") ~= nil then + hbhunger.register_food("seaplants:kelpgreen", 1) + hbhunger.register_food("seaplants:kelpbrown", 1) + hbhunger.register_food("seaplants:seagrassgreen", 1) + hbhunger.register_food("seaplants:seagrassred", 1) + hbhunger.register_food("seaplants:seasaladmix", 6) + hbhunger.register_food("seaplants:kelpgreensalad", 1) + hbhunger.register_food("seaplants:kelpbrownsalad", 1) + hbhunger.register_food("seaplants:seagrassgreensalad", 1) + hbhunger.register_food("seaplants:seagrassgreensalad", 1) +end + +if minetest.get_modpath("mobfcooking") ~= nil then + hbhunger.register_food("mobfcooking:cooked_pork", 6) + hbhunger.register_food("mobfcooking:cooked_ostrich", 6) + hbhunger.register_food("mobfcooking:cooked_beef", 6) + hbhunger.register_food("mobfcooking:cooked_chicken", 6) + hbhunger.register_food("mobfcooking:cooked_lamb", 6) + hbhunger.register_food("mobfcooking:cooked_venison", 6) + hbhunger.register_food("mobfcooking:cooked_fish", 6) +end + +if minetest.get_modpath("creatures") ~= nil then + hbhunger.register_food("creatures:meat", 6) + hbhunger.register_food("creatures:flesh", 3) + hbhunger.register_food("creatures:rotten_flesh", 3, "", 3) +end + +if minetest.get_modpath("ethereal") then + hbhunger.register_food("ethereal:strawberry", 1) + hbhunger.register_food("ethereal:banana", 4) + hbhunger.register_food("ethereal:pine_nuts", 1) + hbhunger.register_food("ethereal:bamboo_sprout", 0, "", 3) + hbhunger.register_food("ethereal:fern_tubers", 1) + hbhunger.register_food("ethereal:banana_bread", 7) + hbhunger.register_food("ethereal:mushroom_plant", 2) + hbhunger.register_food("ethereal:coconut_slice", 2) + hbhunger.register_food("ethereal:golden_apple", 4, "", nil, 10) + hbhunger.register_food("ethereal:wild_onion_plant", 2) + hbhunger.register_food("ethereal:mushroom_soup", 4, "ethereal:bowl") + hbhunger.register_food("ethereal:mushroom_soup_cooked", 6, "ethereal:bowl") + hbhunger.register_food("ethereal:hearty_stew", 6, "ethereal:bowl") + hbhunger.register_food("ethereal:hearty_stew_cooked", 10, "ethereal:bowl") + if minetest.get_modpath("bucket") then + hbhunger.register_food("ethereal:bucket_cactus", 2, "bucket:bucket_empty") + end + hbhunger.register_food("ethereal:fish_raw", 2) + hbhunger.register_food("ethereal:fish_cooked", 5) + hbhunger.register_food("ethereal:seaweed", 1) + hbhunger.register_food("ethereal:yellowleaves", 1, "", nil, 1) + hbhunger.register_food("ethereal:sashimi", 4) + hbhunger.register_food("ethereal:orange", 2) +end + +if minetest.get_modpath("farming") and farming.mod == "redo" then + hbhunger.register_food("farming:bread", 6) + hbhunger.register_food("farming:potato", 1) + hbhunger.register_food("farming:baked_potato", 6) + hbhunger.register_food("farming:cucumber", 4) + hbhunger.register_food("farming:tomato", 4) + hbhunger.register_food("farming:carrot", 3) + hbhunger.register_food("farming:carrot_gold", 6, "", nil, 8) + hbhunger.register_food("farming:corn", 3) + hbhunger.register_food("farming:corn_cob", 5) + hbhunger.register_food("farming:melon_slice", 2) + hbhunger.register_food("farming:pumpkin_slice", 1) + hbhunger.register_food("farming:pumpkin_bread", 9) + hbhunger.register_food("farming:coffee_cup", 2, "farming:drinking_cup") + hbhunger.register_food("farming:coffee_cup_hot", 3, "farming:drinking_cup", nil, 2) + hbhunger.register_food("farming:cookie", 2) + hbhunger.register_food("farming:chocolate_dark", 3) + hbhunger.register_food("farming:donut", 4) + hbhunger.register_food("farming:donut_chocolate", 6) + hbhunger.register_food("farming:donut_apple", 6) + hbhunger.register_food("farming:raspberries", 1) + hbhunger.register_food("farming:blueberries", 1) + hbhunger.register_food("farming:muffin_blueberry", 4) + if minetest.get_modpath("vessels") then + hbhunger.register_food("farming:smoothie_raspberry", 2, "vessels:drinking_glass") + end + hbhunger.register_food("farming:rhubarb", 1) + hbhunger.register_food("farming:rhubarb_pie", 6) + hbhunger.register_food("farming:beans", 1) +end + +if minetest.get_modpath("kpgmobs") ~= nil then + hbhunger.register_food("kpgmobs:uley", 3) + hbhunger.register_food("kpgmobs:meat", 6) + hbhunger.register_food("kpgmobs:rat_cooked", 5) + hbhunger.register_food("kpgmobs:med_cooked", 4) + if minetest.get_modpath("bucket") then + hbhunger.register_food("kpgmobs:bucket_milk", 4, "bucket:bucket_empty") + end +end + +if minetest.get_modpath("jkfarming") ~= nil then + hbhunger.register_food("jkfarming:carrot", 3) + hbhunger.register_food("jkfarming:corn", 3) + hbhunger.register_food("jkfarming:melon_part", 2) + hbhunger.register_food("jkfarming:cake", 3) +end + +if minetest.get_modpath("jkanimals") ~= nil then + hbhunger.register_food("jkanimals:meat", 6) +end + +if minetest.get_modpath("jkwine") ~= nil then + hbhunger.register_food("jkwine:grapes", 2) + hbhunger.register_food("jkwine:winebottle", 1) +end + +if minetest.get_modpath("cooking") ~= nil then + hbhunger.register_food("cooking:meat_beef_cooked", 4) + hbhunger.register_food("cooking:fish_bluewhite_cooked", 3) + hbhunger.register_food("cooking:fish_clownfish_cooked", 1) + hbhunger.register_food("cooking:meat_chicken_cooked", 2) + hbhunger.register_food("cooking:meat_cooked", 2) + hbhunger.register_food("cooking:meat_pork_cooked", 3) + hbhunger.register_food("cooking:meat_toxic_cooked", -3) + hbhunger.register_food("cooking:meat_venison_cooked", 3) + hbhunger.register_food("cooking:meat_undead_cooked", 1) +end + +-- ferns mod of plantlife_modpack +if minetest.get_modpath("ferns") ~= nil then + hbhunger.register_food("ferns:fiddlehead", 1, "", 1) + hbhunger.register_food("ferns:fiddlehead_roasted", 3) + hbhunger.register_food("ferns:ferntuber_roasted", 3) + hbhunger.register_food("ferns:horsetail_01", 1) +end + +if minetest.get_modpath("pizza") ~= nil then + hbhunger.register_food("pizza:pizza", 30, "", nil, 30) + hbhunger.register_food("pizza:pizzaslice", 5, "", nil, 5) +end + +if minetest.get_modpath("nssm") then + hbhunger.register_food("nssm:werewolf_leg", 3) + hbhunger.register_food("nssm:heron_leg", 2) + hbhunger.register_food("nssm:chichibios_heron_leg", 4) + hbhunger.register_food("nssm:crocodile_tail", 3) + hbhunger.register_food("nssm:duck_legs", 1) + hbhunger.register_food("nssm:ant_leg", 1) + hbhunger.register_food("nssm:spider_leg", 1) + hbhunger.register_food("nssm:tentacle", 2) + hbhunger.register_food("nssm:worm_flesh", 2, "", 2) -- poisonous + hbhunger.register_food("nssm:amphibian_heart", 1) + hbhunger.register_food("nssm:raw_scrausics_wing", 1) + -- superfoods + hbhunger.register_food("nssm:phoenix_nuggets", 20, "", nil, 20) + hbhunger.register_food("nssm:phoenix_tear", 20, "", nil, 20) +end + diff --git a/mods/hudbars/screenshot.png b/mods/hudbars/screenshot.png index 88ee3238dbaac6e7d3769e212c0ccd4eed023b96..82531efed29cd6a2f2bfd2fb66d4cb7da5a14ca4 100644 GIT binary patch literal 24726 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 p?GNni>~y(Y`f)8~9^ literal 9556 zcmaKSRahKNur_W%7x%^8-4|HgZ3z-AcyNMSHY^@wk>C=X;2t2jdw^iU6Wrb9=R4=> z-24|kJ=I-L$#nHp^}G|Mt*L~AMS+EYfPkZ-4AwMF@0 zR83Iry%Lyi%0`|D2)KR!HN+GST*}u$^p7eU3h3)^kV)_nGcu%p2*_j*R@m| z86MZwpXu3tYc~(iW<_mRyBb~yNXDQu1gLhOQj=i+8*D{t+C|lVe(5?Pld(W+4w9(5 zAqYKOSN1cCJ1VB>bVLB;4;u>7h9MA>0E3YZ3Cait;w#IcAgM%xfC(@R@D2=v7BTy?|3`?W@~0Am zoc}KqT^PR_CuZTuhyNVlMQm1lqiS9H5$dC78_09SXc=8Wkt+w3o1KG|e3x7@RAb#N z+9t;G)iHo%#+IOS!cXfYGN$ZL8&m<=bF6<<%!5~%Lh!O#-d27EwwmOSMebst40TQP zf?#;Sl#xJLIfA)j3>YmJT?jTn7C zXpI7>12*aq2wb87{1K*|8Iu4t6Ablep-)gltDZ9f#rU;3(+vK7JJzt4+oa5DZzDqp z1$EguY#-dIGVwpVWR`T3=mUio>BNnd`*f2QcTvSgIFMtR<+WRN>dtXmw4)2c1u0c^QrUkj=Rq#3zIL>6orra=Oo+}&A4K2-3Hk6B1ovhIUbOM zWX^{_c*20s1?T-i&MN1MLx4R{g9^yU0dqy4b~0gaW1)=$Un9^KAG#Y!PmCgjJcZp< zmfsJ(WmO7Ig-Y{=?&8zm($ih50P&sm3-f_C7WQe~d9%Rdllh648lJT;ob^k7=9kLs zDHob@YYU+Iu$$N)_8C5v+(Z~KB+R;2jf~jhCyAb!4=HW^oQ|ST{H#H8wEBh^;F^0F z-9N1RE^PYK_JCYiho!|(nk?Nl)knx%3UNJI2yS36NH8=quK~8e0tGcpl3{(0gxaGK z&>111boX@OBa6c#*Do-qu<7Lt;NA^m-^jtY6IQ=I+CNw2Sy)6~O%#wQH2<0MGE6XF(k#JU)S#x??039JFH;{VXR0~Wm~KnvegU?nTqnc|6_Yd;;)f%v#&JQf5z_B6j)A~!X!Nca4-FH`omZx?)0v<&q);CD$7&6lT=ZkY0zdZq_$}7 zPJ80q$gM0x)!BJI`)5G_fzUt{x~X>vB=wKz;ila2u`x*;yAAVNc?hMK z*8;~jB4#ePI6*gxAkh^hbrs*YbQdhi`ab$TDnHo5Dln9@zU6T>pz&b7P0@C4_Fbkx z$+P*(-?P2Kq9S5qVkL#e{e#+yh7~j<7g{OD>-QJzv7Zy!gJS1&jdTo*AnxmJjkAW) zW3~n6f6CvTZGV{Qygdg6cl&8+5nqT znWFr=*jV1n3om+KO$Uyzr6Z)kf-BP7yD1egrl4SGH|`OuK0GNxBjJ4nSNh{qu%@RE zP{6r+SaWV{%wSSe-V9;G`X061v;{n#{uY)=I6W;~?f-ATU(Yt_n+lEe#pXgqg)cxjW6Z$dN`{vGPwkAvIL^O8 z9A2_9Qy0<++RBR3m^c-O(H6cbOF|axk%?$hHQ1Jo(2_Tm%>AhArgr@C@Xkc)$y!^- z%O^hi+Rbis7Ya$EGc3LWGZ3dNb)^XPbr4q*1O>B-z1w$9u&f-W8FVCklZx&>ZoU61Qq8RT6 zX|IHY${((S*!bLUnw)Fbf&+vE2yy$XOxccSKggS{{{8Yrs?A%$dBvDomI#4qa zq_O~aj~9&mE?162Gf#=aOGQgA0d}jBYDSAhmBP+b^sL-F5qR?~%-@UE@17?^q zvMDr1@)eS&-uk~hDHf|5exdTSdbm#Z&RQ~pCua#h)QX*1MvHl_zF2QbMyB7L2AsO< zckhf|yDrP*xn4)A#48ta5$Eov{g#yvo-d!Io)sdPXLqD$=qH}%mV1o$vBjaD-U|h!W;W>m-3QXcNvSG6J%?8if?a^5C85r zp%0=7O`7}szQKe?zV=Yg?aXGgSuP^m$X>xI=B?H2+P* ztfL+qw)i`oWY}_5)WgkA`E0ES_V``!Qtf2t?ZDNtTcZ`|<%^GD1s5l$s_I^92>5;N z+j;>;NO_AF;4|%8di<_zUF}AnBh_9J7zaoD`S-uwZ833XB7wL0KYpCdRmCnf>^T}| zgvxLjI*yJSTH8Ev@zt)MZVbgzj=nSQ!d(gUylU~xB;oWG7QU8e-ri=(m3-NVpzZ4q z5()|49OcP9T1+aeC@STlFq?9zP1DMK&NjnqOh8(oBxNCr5hCT;N5_R_d^nkuS?e2e zVq2J#kC+a}kwA7p!wZjY2g=CIUU*7y(f2TXADb3Qt=J*k^=~+Ja)A97w|Aq3gR%RY ziDwyz@hJZYv8z7KXx;fs{nQ!rQxh<8y@VYQ>D>SMG=B^OSOqRg-{+-G_LZXWYaU z3Fqawmu;R>l_lwc0xe3MV8I-zS;EQNESkwz1<)Yo% zo-_X`ia2s9aq@dS%SgbpIB+UIkxu@3JZ*6g|K)6OWRP|(H(l&(S&SQ*_&wCMuvB&| zw=?i+wj*0YNn8K#cZ1*Pw8=O7#6jnbLLcVhn1hJJ*>Q&%Nd~LmnKTClY#gr?*p1iC z%`S3&MXADR&8HV<_y;UdC=a>qcB$_dz?&`beE0|fWQ=W(8dKgvW63c}tLFZ2dDqH; zMAkt5N~^J_bXyBfO%)G+I|sG0MvjEDd})>9v)Ng1#Te>CAQ0o!Ls)u!PNyy;Jzc2q zH0wxrxG`si{ybj4^Lcwasq;8-)Zks)imva3=oXDv&=YD{T`riOFovnDOo}kcg9-;r zhH9ZDNXcI@cbY>tbG%B|c%*7B==yH;%}%^vN4dcV@5vm$-nydR^?^(Of0=48L066j zldDgyK5Ei_`}yOJhTo}Nl$}h&O=-6M^HrGy$i6_z4az*e5BXQ}F*6&NR~DC!&6y~5 zR+TFAaBJFfitr{#2d4E=lBK#T#8eir%vBgI)>v+*KL-9SjrOGGV#CW7`)5qZOfB=w zp|IjVqoMVDRXyDigi1i5y-Zy#%UtgK%uXB@b}FhDRVhHm$WQ*(vD8noIS=;lFF@F- zCR4qfSwrJ~!=S&8;xzDnO-tgkq5#x+NL zmV#ThwoRUSZ%){T;XsBkIbSh1J@1088^WD`MrO8QQe=_f&hNe+B}7KuDv+xfmmVmhND_~f;)Uo zay?h?{MU>>B7LD_0_ddjn1`qnHP+%(7Y4}lf08PrzbW)daF?|%>?kgVj;7}1G&nD% z%$7Gxo)7h(pVwq%-3`V|&}d(zA_x#q{hDk1c@SObbJE9U;@IqDba(r&p`V{-IyE)s zw_`%8_JMdh31vACPilA=RLTDqimodq(=2e(j25k!U+UV~OboM6*5&|2 z8DC=x)ZYvA&tK<`E9LlG{T(b9F74rua!yuFVMJIfP}HifcI~R7k-C4fJlBr;q zPtQ>%K15Kem9`xOOOK?|@|n>sUAXeDBP9n11yLeI{Gj>sBL_!Yy(MI1jWK?2bn(LBj*ylz$FE}aih9o*sXQy5_YUOexS)v*tSD%cut$i0*(FJ}P``4?#j z+)AnDUaW=7Rf`aI1J<9?h4mqw*tKsPe9tI76r8*#Vi{ca#!Crp3uCAw(P<_2cIyQ~ zJhFqm2NP%ll8~(qH79Ghg@Q`88NC`XMm7OuoI)B9gLmforVHgSM?{9n{f7*2(Vl)o z_Vpeqf7_*g;RsFqUq0OPuC6k^m}=-UoYZvW)7zcTy@I;%<34Kl8aL^N!c1L3+`>2 zq;NPLezRa))83rUH(r;cKj-n%#+c|@)_ zsPZ~!-QG%ZUBf*wKe}s)%3c7>&CgZ%UKxE`T=02}3=Z|Ar>BOfeM{zkS9?_Q@~(_8 z&C9@$MXR;Bs;X)Bn2EJoMFswT@REm;GeK^Yv1ZVPpObkOSl6uc6b&6=o8tm{xu>>AX*p)EU=OB2GYF3Uzd9rYf) z`((Ajrj4Dmweo9%6|0@-;o%wz+A-B`7?j^Yz>eZ8_fbngvp%;-u7pqUaAF8Ck?7&k zD34aaOHdg&|Ka&TUck1n(n#RpwNz72@5z39@%#{E9#A>?yNqdXk84xQSn0$o3Xu}E z%2s!+LoFxZ*uM@>`iHQO%WRg|ee>#m>-z|PPW6!8U)xg!<5yQ~etvD+lUg6VU?Bi0eIl`Dk8jX0X}mvT2#V|GEC& z(n;XeuL_+P->XHN(ax3jld-c8UIQ^IRn@rT9KhdF0a-@(WV znHPtA)gtx|U$2drlYN{4Zoc99qhQq~Wufa+%nUkfPfS(ZTsP`2oKF6qI>?y#$j3fJ zORe>p`P{tR<|qRAC8UHQ3He_cr71*0 z(>8r$GHi}0|6-2wN=L#OQA}-*N7{)~Tdm z_%5oX!TD7|k(rUnhvDf#2}`)d?)rTzBAI~=-@De^az#DcW}|MyFKR<^v0lF?Qq{D~ zxjGS$1SBP;xe6x3E|eTURN45DI|(1~ypzQIUgNs<^Yv)aYP&TgR-pA!{m(1M)xEJH zK)mS3w~oze73ZMFS=%rQI=V(Ref9IG0tvn807XTyS-eLFLHl=;(NSuXL&xa0kGf~o zLKz$7-kmr#<36%X>{|Xnm5v#;I`9AA3LAz+!G#d#6*mfrZ#FosCQ-Ou<2rP^_(H0@kVTGyw!OU_9ww%UMur{NqY-`-wFu9J zl+W7Mcjqp%{Cb6 zn;wQp6?VGX9srNPFqbRUjJ|1obt60?qI}j7h^dXFo}kYjrdu`Z2*oZcDl#xI5YNU{ zmE`-#oHRUu;EO~O?5ISc zvVxgiUO5<6hpV2X%!rS0j^B$)^~nQI5=zD^UDX4yTIW>O8d4P7b`k&0R#;{SN_3|n z=4WK1qooJa;eY|MZ_X?ZfFf3B>-n#rUnc4};P&L8BLu2&!VPHwe*QkINnuJ*#IF}y zF!0naq}_0Hw~+7OpP)L8rH=%XKLS|j@I<{}To$Qamxwq(G+acfNGlXMk1wbo$undX z>_WOKiarFBSKrmnVXm3)RlGR9;p=?I$J?N=?UAPXjPUwQmYoyiv&vQeMloOwN4kfj zBrQFv9}1f%oO<{zLO&xl4^g7ws77nyrz4jq?PbQAEL(-+k|!sVO&%yX=X8eQP>P7e zWeI+3H`Q*M1qi2WHrQUV93>;(+lKhftM6Rmvu>#t@w1QcwV)$e6y)W_kb}r>k-_v5 zSfH+yEHDTV=f27?q|?LA>(eKhDA-3P$G9M(ta7XFf}qJl-ea(i&lf+>p;HV;!*wTR zI{P5)a3N6Jc>Spz8uo^inT5G(Z8~omo1E9}>~Ft!Xs$-B_F^81uiN$*&YH-NN!i{9 zuHY*Jvy*P!oipXLH5t*11J~z&6rPhSohFUnvy;TYmed|t;Ew?@aqa!9=vL#OkPCl> zhWvOcp~a(-B-5U~uCeU>)VfmNmcUG9#Z~D{`{23*_l*Q1{YIkRu#^bufuJG~eW+1m zREJrC9*E`WT1@iuYxU{=KsS|kTKbcNZ)waKFO@&bZ=jK@_`l*dU_ernkzqT<`e_@9 zf^UgsI1lo8Lm2{c_YeXyApn4s1?|K3??K>{#5jSw{l&JE7-`N;@twj>+#Uq_ljK}$ z0r5Xw+R?B;f4WZ$%#NakDzzq?CniWE)I>uo&P)xZ9Q<^QQ9hGqobKT0swZK8x)ed_ zpbC4?FP|;6qa{%H;O6`hffIG#AKs`C=AXqQFUh(Fl4D&oRdYc2Tp20+c|JcpZP1CAzWX%% z87}D7nV4OO;G--@m=hYY+gzyqF@W7aPNxV&GLCDicGKf#=s_as0=Z}!YcDv1F-COc zjq0;~cP<)_CjK~YMS_}OraTG<&C$lc%Xg)NCAGv}TxW{o?56dOmTlNJIv$jPDM#IZ zN$xtQOFx*69dJ-On|(P%0a&S^*Y zw(1!y6ey1)-_eCIP+}&uD7zdQ6#Qb zk7jlt*1&$TQ`##=CG9z&xsPjCx7olg3(gJ|HQpqdu~tPw<&bX4&9{5vq@&#MD9*n;5Ir~)-N*!94?~o0=yLBh*v$;jqH_L%h^a~ZU7#g?N8J1S_oEh1cEJR$ zZ*W91Xa02FQKP-|V9=vh$XvnD?;c_x5jho4G!Y0i# z!W**XKeNXi4(#d5E!RA**^(6~RUqhSf~~SI$|BYTgCxuJql*wXXaR9!Dswd-rgE#k z-#|M0Mv-Ebkg%H4S$SoPi4vK*YSn?FMD_c8pS^Us9Rw%%dsSJ~{>|xlAC{&sdUqRy zWh~6t9Nve1Z53a&(-Gxid$YSDH=Ls_YKlgn>me8kVt-=+G~#Hi)gsfzr4x<~2Vzc| zcMN#VdB)}|jW|kV@cbi8Y)7G^8d41Bgdu+>&*}wII7gf!;_5>ZK{Vwwc!pvD=$x^} zQjUv$THD4fK`0fGTUJg^G9AigjEF1!F@eK6f3c~EWz^echh=fCrsfx97e&ryF+3ow(W zCLGCf;D+uyBcmjya>Cf-s_{aCO_t*_S^lh$IoRmUpv~UBum(Q){ZEuArZ54v(eVN zmJ9+t!&3<6$5Hh#mlRZQ&07RBBkJEVcR!#Xm^IQb&;gn1L_6F7(}L3DL{AA!m#Uz>h?B-yK$Y>s-eg2DN#u$WCb+csfC_7&{b%B_>w3;> zId*U*OQ%%!$-IQ@6}&19HMFW-Iwh^~T0hsw|R@6 zSo?Ha)fVP$PlBpEUYo>{eueg@_9*5y$tzc@BVc;v-vF1?1xXrFwk9djKVB6rsSO%# zSAxqt2X->Xv=tkbDO@(jp)+<1?!+UX$R}R*Y>G zQ=Ieq8w}zG(4MQOv+HLhmxoMIEBoAw8Uqn^&>Md0@X&we?$01tsQ`h}c6xKp0H zKpDpv^TnHs+@nNzi}j*z(y*lG{Uu`1gH-dWUzHmngZ%a$s=j8Q&1W-B zg~v~LN)S!8HP2|gZ`(eIi8fAYq!ApWT4^@d^YA+mp`?2>vDDGnOYt!aDL8bzgFO^) zeH@nl8E{e^fg9U)P{lS=aPD>gB=}m-&M$cJFV>DEXDG$?^=){fvRt$8GLM zNDXc;D+&7Tc?9q^i!cNdw#7bOVbJ!Hva`Gev;8K0MJHWxQCAYFw!{zEDpN~V0bCU8 zdg+n+1N|WctE8pQH<))b`9y7tZ-J8lk4j*T1JOo6Bnh|a?v;Ay^QN9*L;_hl6HljZ zKf+I*`o)TwJ!~{&DueP_e0gtv#wYRw(eOP7I=;rnMmK$W_z*eherQNJk|iDA95+sm zAE2qF6=7W!!#OuUe~`{3wdpkKY-3ZTSWs3~#k|Itn1v*1`oluj;tm_>Ue%9qNmjbk z;#-Jo#o6ilqj{XLCW-yzjC=0j^2vpVANktN;<7T0&R)uB$K7IKB(j#HqoZ>3w@AcU zw|`i5vDmfBrX`2of5&Jq$GALrybxduk z9!H8*+pP_Us-Tp#x({3E@g#!W$5Cfz!5#IAMf>Y;=3@ai>FyJex&0uyFL=i@b3_EM z6@=6EeM%yjKh76~%z9wGjGfl)k7oU%t$RsFQ;N!$MP8V8G=lLS3awhD=<8yu`u#cC z%gf99l!Y(tHG4>B73r2?a7E1)Ed=|Cg0XoRA?zue#*BRAvaK6!_5D`5k!Bx>tSVq#on)~;;~%z? zaE}>a5=X1Z6rzr7qU8S~IwC9GC1QxylPgTZcyWI2Q8fYre$IqZ;jOf;e4+ti&odJO z8I>d_%Koj-O-(YbYdRc*l|jt9?jq}Rhl|!Bz%=`IGjm%Jt6I?M{J`8>__IvykjADO TgAVF{e>kZqXo9QcEI$7~BOnZ3 diff --git a/mods/hudbars/settingtypes.txt b/mods/hudbars/settingtypes.txt index 6ce1385..4a491ad 100644 --- a/mods/hudbars/settingtypes.txt +++ b/mods/hudbars/settingtypes.txt @@ -19,7 +19,7 @@ hudbars_bar_type (HUD bars style) enum progress_bar progress_bar,statbar_classic # If enabled (default), the breath indicators in the HUD will be automatically hidden shortly # after the breath has been filled up. Otherwise, the breath will always be displayed. -hudbars_autohide_breath (Automatically hide breath indicators) bool true +hudbars_autohide_breath (Automatically hide breath indicators) bool false # This setting changes the way the HUD bars are ordered on the display. You can choose # between a zig-zag pattern (default) or a vertically stacked pattern. @@ -120,8 +120,21 @@ hudbars_tick (Default HUD bars update interval) float 0.3 0.0 4.0 [player values defaults] # set a default value for max hp healt of player, if you customized and need on older engines -hudbars_hp_player_maximun (maximun value of heal of player) int 20 +hudbars_hp_player_maximun (maximun value of heal of player) int 40 # set a default value for max breath of player, if you customized and need on older engines -hudbars_br_player_maximun (maximun value of braeth of player) int 10 +hudbars_br_player_maximun (maximun value of braeth of player) int 20 +#If true, automatically hides the armor HUD bar when the player wears no +#armor. Otherwise, the armor bar shows “0%”. +hbarmor_autohide (Automatically hide armor HUD bar) bool false + +hbhunger_satiation_tick (Time in seconds after which 1 saturation point is taken) float 800 + +hbhunger_satiation_sprint_dig (exhaustion increased this value after digged node) float 3 + +hbhunger_satiation_sprint_place (exhaustion increased this value after placed) float 1 + +hbhunger_satiation_sprint_move (exhaustion increased this value if player movement detected) float 0.3 + +hbhunger_satiation_sprint_lvl (at what exhaustion player satiation gets lowerd) float 160 diff --git a/mods/hudbars/sounds/hbhunger_eat_generic.ogg b/mods/hudbars/sounds/hbhunger_eat_generic.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b6acd078464cbf4e9de256721af41ea459b4f41f GIT binary patch literal 61040 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 z zZtg*i7(X|Ah%r`6XMZm_y|*56Bp}0geeYW?q9R|T9o7GX8P9x(5ELTy=}H#@rw4N= z(=bTLRKdIUeQnwNEvop5= znxqcnO1tqyHnz2K+S%}MzS~Z8V#WHm+B&{m*Q?UsvmS7Bhr!+Ey>cY<5TO>UDjcr(1Kxy}9G7+MIX4B_<*Eh|;{><0iMVhVT2?UYERB z38~;%H5cwFlR39jL;Tm@)%?Pno%q(p?T{%b&@8QrG-}E-fT=yqmRbKBKI5UPNMGzv zwePU6L0KOjJ%=&{wV7uJKjb&Gpig=}yt61njoE|kqnux@A& zSHCoG>Rv-la?>a0&l;EOk6p!ZRH`il+^?cg;<+3(N;CYy)a}*tX_t_v-@+sXQVUqh zhCUVn+qRECc*u2FAs>^*Me0#s~izuxwUra zZX00pXGEKy@G0jPo6s*^Mys8HLbQW9*u-~aJhNnRBwheaCon1o1B6QnSvESk!}P(o9RMF*kOEOcU25$YsdB_T~4MUwjRBFFzTwh zW+v>5JSmX$2`r$t62U1|P2FG$o3}RQ>k){FW7OKt!&60GH({LUVKN|b-BTl@1Kvy71L49E7;7}r?ES09k^0DHt+7qt~w z#`KiA)1o7}s?^wxy!Hev?FooAJKG zZgJnUXXXdYm_JXn%WXVLzZ;&y9%b)13-s)*;fY8PYTp4Cgn!vG0pEf*&-4%G9}xZ9 zzD-Qe_|?Yf!>wnHU3ayn7M+30Ppzn>RMj$NWj9MbPAg)J0e6w`gzaFtmUzb6E*S&$ ziGN&Ae}L@1X(UQodQ4<#;hXSiq)MpID!7XE(YQ8!HBdt$l_vYj-Q8LB+VFB$lG8>u z;ksjhBP~DFoY78{RfKmYP6kX9K6l4JO5U`z@C*E3u{XgTiv_virBQ|%i=6A(eSloj z(?%}b*@o2R>DKw|@5;mTAQCiej_IE{k}LAi>3-x^7)4#P`FvM=q=g!0AQz z!)In4S>@G$Q?{UlI5QFu&;EPN+l3vz} zMnBLH`Zcm!^5A#u*8Nl-oZ5i2Qm*u|_d$)Qn~Q6|2*^--Fpa@2AwR$nZ4*zo*(jq} zqZG+?r<4Y__iUyyg3F>35hQJPQ5_DY=NpAtLFPoDU9OTdr#vW@XtT$)Zm-F=)V(Fo z$I4(y`+QW@Vt<+of3Jm1{A1W=n-QQ;X*xkJDFJ92!f**2{ zjCsS2W5ZnmG7t&jA7p~B=aZVq1d8-O9$baxEmNkN2q2eF>@q?xj%a#}7)raWdc0!L zw^trVj^HUWmbLAaiM(RyrFzv?xiwA~Y_}06im`yqn%zXMq=AgTdqGs&kW6NE%{jsJ zLj32Ygg*-{X2tKQDi|`@%MxL9qa{a}vC}X3HGKzz>T(~2Tg`o@n14t5kd7=6_Ga(U zz}~}z-3EtuZr|QUl3`@>wuXN1l=V||pFVoVf|c77KrRZXToWP!JnMX5dts+&#CPZD zBHbiBO7>gk;11yvqSA`3V_J=-F{-b3QyP>pO39`*vijH7RvVGXAUf)>FxJp%L(v}8 zX7g*wtot^>o%#-bFA)ci2kD|$+x4SyZ!AiVR9uN#6@+|{>#@mp)SItY;XSf#TtJHsvfrd z+QE|@7q6L84)fcahu@~ZlmGKZ=AmM%w+0E|@OEae41un&^8ymsoi%+)S4B}QFE?$e zMd;;RKf#%+anwdiNi)>6<^!wq4$Qs+bO93fw^5kC?<_4VU15o^EG;wW%o`_+nu%YZ z7k8|LT?S{qm#QdTxKW46u@cxuXFAPImXsLT-x#Kw3(-j^P8i9Gmp2cHQa^h~zEg{l*RE>Mg& ze*kn)Q1hs^Umy2#yHbAYDbW@-Bh}a@j~QX->B8`oJ4h;dm{U(0<=YOWSOGTZ)zPZE z=8~QVSFZjKY3Ps~MHE0PaacfS!>0C(`rO8w$y*L#uD zi~NY{v8+mVt3APON{3FrS>_Kd{c+`gX!VS4nS(~T^{g;~n|6NBarI#P5hZY>K2j+0 z*T{qg6%ps+E23aKYlm3c9uQQX2>(7*Rrt2v6e$vVqusDmVJPRSCg;dPJizDNG_Pi@ zqqY#O7{$!K5M!XL3Jft~nG%Uo1_|tKEX4KQAJlyb^q!X-SWAoJ6o1{f5-^A_+gkt(mG^(7$g~=-ztM zT`hyJ&bRHp7pxbPEa$yvS|vp{abxlInLD*54<{<6uP;7dTP-#}%9N`#b_ zS-T5nh{nj=cW--zwpf46`{T#&Ph%Wi3&6%P-XTvUJdl~Zitw&Pc)?D>%-G$cE4blM zZl~~=2R3z^-Up&l5zKtI|8CXm<43DmG{q&jPPiqla`79ktEJUz@zu=xxR%k@d+)%$ zhejHde+da?=C$}vw2*Z!u{)Rv&6 zYr_k%f}ORC2Um%xw$QLHM!%3zX~CL;aB5d4#43OeA-03sclDOzk? zvN1%+vTU7%Tsl&&-liXZ{UyTSS7MGHy-OdcKb_2&>Lnrhzb+2{;K~2I|FI+epIi|m z8-3Xq)2PMO&B4EOD@*7V)bjG`=C2v`w=xfztXe-=sLT(nE}oQ_ z?Dh2xv8VKzW3IBw+{KlZbr>^5-g&B)c#}AJz%x^u?S0K7O-%{YimD2g`~A4y!zFOe zuMp+GnfrIy z-C6m?Qu!U}Mo~qPP4Mo~Nqpd5NiOBzzGnzKQ&I4D)*6d4lPlq%SvTpg_Qj@cUGEnZ zNL5By|C$|Y)`^1RhZn*w8?$( z1u@ksTXAECfCwh5GnV_(Yk_oVsEPk;Zmhu1&Lu_wJ7Iks`P0D)1J$?V{p8cnw&%q+ z-!uU*f&9Zd438PM#ncB{AL*bogo#m(!4_W$2p_0 zB)5DpveMYjwtB_?&s&;u3z$zaJz&&fxddICNYpc)UU5$zY+Jl8#lkO_CcQ*cV>_6im{Thc!}kA`&3kQ1y{ zPv8IN!jLhXOfJ&*JoG<-HrA&ajqmvJ9(|mDPz@_m-;Gcn({aiu$~?oR71=i}HX9Sp zbz)oM4J)s#=W7K~>HNJMilN^e_M0kSId>|JwO{g&9J3egqGu9x(~RR??yg6_*>$1y zm^|Z-)N5wQ?Pl_p6@9nvYFKh_4#{2@Du{2L$}Y_3aJ&7QdK~7sJg&{#5PrArd+#sC zET8zsie~Ej>GC_6%e96ZuB`15y4!LlJmJIY+WV5%qC>=vOMuFSWf_C zE~j{9haWm}nA)%5hNht4^U9Wb%;fz6V8-u{D6-{Vgc7ML{e(^8<=dy(m6wVyQ$U;m zw+EMYOU{?`fyFF=G)(&n}`KP+8T?yG6mF>@QIQlb}TzBgXRaO%6`lnD6Fg==mWnujBU?wVtC(i1Tvc-sF_)MVHTuH%u--mmc)DCj&0sq!!w ziG)u`4AUb)@HQx8=ybLl_<&!mWypC8hFx;DVxYEAAj%h%tn997y>48PtugdIa|(0! z%*>8@Y35M2@4^`?0ou51t~D`e;WbUaJMT4FB_>5o64Yew?XE|o*;K3;`Vq;NuO#GQ zc`@h|6$A@yvlYMfyF4qlJX(^&eDV*V=Syb?-|eNLYEwb`4k|XDnbTHif{mt69vL1+ z%X%dqbC=rq2o-n6G(PkDvlQ-UE1C^p!auLX+=fQ>_5rz#T zft<^1_@L>y(Kw1DWcQ4X55jkS>hsm++7uzU%nXY>oJVSu{2hNoSGaik=3qirhT?8w zvbOSyomq{KV%OE7ETsh8{kx0SFhBKn^h-&Yi1AIoobqvcQsmWakbRk3ik{$MAR6v+ zw^yrt&SoAm7zDoUGEr{(UE%0GUh>VFAM>YujH!Zu$EPpXdI#F_-=belPrblHh1-yz zwAaJMJ(Jag96Hl!6^>MCf{KrGB)Rr`os4r`dAM1@_VF#H^kC-}Ur0=b(8YBd;`?5j z9dFOTK~apV#C~HQdU^i#Kf;>w@iCx#Hk4$5*1{+VX4ybeyP}#B_A=AI^)=V^j0cZQ zr;~|z>k;&79-UUX2fB5y``We%p8mCLqS^4sf*v!T4me?1T;5A*n)P)!pQ2v(OqTLS z)UvRCHsy_vp6v`)Dqv2ELfg|TSO)%aT9Ct_6;w;Xv5hIL+ENk23Q1s`ZEj@ z30lu26Rx`}How@WO~GK4zw4~AE0lRD4Y z5=+Hus5d}~bYtwGXPdaYD9ti@P!`A~R)}b>v0$Oh7g$|O*AxifW?a=-;`LZqiYm|h z8hjO9mcC`iX*+$oW)l`$Kq^RQi5?93RqMUscF*|H z0!N8(LhMyw6<=BD_p3=hdmoqg5#k9Hq@k6+EpzFuEW$WCgtQS2;Gv1q_|oHVcQhUP zwe=4tiN!Hk*_(_w)cb>EfbX@d;Mmqc6Xof1;J8dB#n5La+`lT$cKjb7s+vtKU4cvK ziVcA}K*7r&=hou{f_lwO%K4dWc$q!I;8FKvO}QU33@iLt7oxgmtB~mcc4)wYLQ-%XOnMd4~@*v5}d!?PtqUHz(mO zQG6}#V~28M`~L8g5y7(j(|MJz$BDy(i&RKw1Gy-J_KN#u-;?Q>6D9fyJf9&lIfVy! zR|#YDU8{f?0RXRP?KT9NQN}d>%dbiS#H1;Q_wx^R(uZ0iYwQvU;$o)e(v$UpA#Sd-qrx;zq8b|#)_qeNQ(IY6YigLLxuAWZyf zy9eLmez(_EYC?eTk%xQe#-1*L&X`<0MFz}|=Phw~%p|2*%&x%Rk|QPUU6SNPdwEoY zs*eDnSVY_AnA902PuA)>Ojm7W@2zK$=d^_<+B6K7FK^`iN|<)LofXBVQ)pQCIQ>W@6`kW#d+j92T&2a^>7Ve0aT2^B1Fz@Lh$O;&bWmX zDqWZld)_lZHB~5?l}lY^4s+V~Ml1jBsiHV;>zb~a$M0fu7KBKc{`x$K3uyHTt@Xal z%1&7s{|IlZe)g4d{Nvh_&Ah7CYSh;u{pT*t!EiDe)A@;qJnJ>no|A|5g(9ENvxlbV z+RIvhZjoGh1qgXg5GyT)f_^MWLIAZZ8NPp%Wuk(fQ6uLqq z4n5^@TK*?2cWhuGs4N6$ualdNudYD|6d2^~nJziG`1w-x(*ntdO6!II!zE}lZg7?3 ziE~Q!fz1K5zz`@|gX9cVia={vxe?4v#(ZGv^~g^6dhcqvrgR-UdyV;sY`yO}hqeaR z=DF^t++8Z&XV)p_d)u1T5M=i02XirlNi0HNFMWF4P`kmiB7xc`SF2DLvFpUDo2-s7 zYZ40n;dUig))$yqze)~hHe#u59oNhqwa71j|F}_Ma49BC=>+|BDsJz=~ zM1>*a0i)76(Oh6PsHoB_o8bVpb8QmCt(Yc8B6HgFx?}7A@)MNe7j^XQ)X|$C_WhOG z(k2rmQzZa*6jyt-oBGawtK}gHk`|u#;O>6H+;Q=nkX$O{_jma`_TOH3ur)gE;Qqc9 z)KuS~^3A81=d>g(@c%ei{xm+)ouI3$WaFdNGP(4w;98k%Z~UH9B$#n~?Q|3EN>LTT z%`bl+Il42b$6kE!{Lc7(b`4hr;@KKYE;cPVz?Ek7p2CHBEn255V>?LNnwifz{Jvb1jgYn>J)DP>sbQcfd$)6>n=o%+m$Ioj30koRXn3A0^f zw-HO+Oh|dV-s)69P1YnBL^|=0E@%9mR_beTXRBpNOJUL z5Au+^=s(ey8CG<4PF|^kus;-vp^NnThtD6A0hkDk+8$Ec_DlXq&{KMgd{>!8O`h7! zz(0^a1vUIL`(5|hj59QiYvvUb${K|M4hyxIUA3M#0}e@h}ra~eJiw898j?FB@K zJokSd8ger6G2`aLdxv>DpV`1ds|i1H;UsA_;CvPhr*;YrjiKq&k z>nyB&jv!4wmQb{?tQt;HE#u6cm(C*=9ZtqID~aKjcZ=#;k|5 zU3aJ*w;N9e(tZVU(LXixD5N9Qef=pVRemetPc?v0Fz5sMX_L7$cC+&rP4^T3WaV8O zW2Kwk@k!@3lhE9|j+(lWgFf*UHNmPr$&+wIi1n2z!L^}xlU-Ap7BG)N`kW!&lg6>;J$8Jk|fr8vZwI_@6XM1Ow;Ji|v)w_3h=&g^j-9m9^#m z#jV*j0P?2LIv|Esl4%B+E_8}SqfIx#JH1&w#_=k(ot+@DT$J0Yzj z7^R`S!6_4e)P1ej!VB{|)MEhZS4Xx*>Z@JMSg4ixE}AJ(YfT%3d$I(NoqA$BP-z}+yFYI;BOUS$rOgI(l7wl=0xgtH8Vv7H3J1GhDr zwHRd{tXQ_6Iyi)3?sLK-YZ0Wco}-{zqZSX;f1OCa1ah&_rG1c<`R6?pazZoEzh~zv z=Zhnrsz%k=oA!X(sj&vw4B2i?2z?QjQ?+M5nrB1FL=+&QODD+qo$3V#1ykW-KY&_ zIJki6vCsV0SWwiym41@6m&-hMZJ1TViR-&{C5lYbs{;AU{Y>drZf0ML2Y{pQ48r?V z+@fSz1aYI)baY~T$GeS_yv%ouqFe=9&tey0`v!UzBzdefSdkXGeFuEN+==Dn8{+uK zT5oj-q<%=myAcR9o!Fj;GE;RU3K-G1ByQ&);wNv-`xb2vTg=lgjl@nfna%8&8l-xb zLE#0Hs43Dv&P9HNX(FgC^J61;9%9l%CDK!CQ5@+qfxZv4nPc|QE_$w5=iNGb?-6+X z+uRB&%$e~`Q4YyO^cEDyiH;KO~NW^-o!mo2ProINN zAJ%M1Fr}G1ssA$NrAbfqDS?`@3pTBqt92w?Kf}U%i10cH=A_*0LPyI(eet-4Gp^xsSxW2qkc*}&Fh_G)3rg`T# zk99WYMVZD^@Q1|em>NdSU${@{rt=!4G}MKjgY8n{YL-ka_Var5!lbSKI2q~$v-D6- z3KZRhd2BiY_CSv6jFxK~Q2mK^@j8jJM?m6hdiDgXDkv4pA~M2gz5imd_H71}&6v4f zwn@fi5KG5NIKK(<-NhlnQ5ge=#-$RDr~MPPETP*Bkv(Psi^R7!ErzL!Jvx7H;?qS$ zV;`L)3xOjf@~3U-rTm<|ub`1Hckbk}!fd2dTqkZgwGns?>fLhatWI-!7n27>7|Fv$FgPJoFxG{UA%$rJ?^P4+R^oXP#3uj zo)AKvCJVkl= zG{iAOmt@^Zab|9c?1)KIQQ5cF9!?mWA-UU4pOR_#ymCc|sY{u3ciLB9pPW7uRb*1g zb=^t2FyI|um&in-Fa2qmK+C zC}Vl9Qe61Zv296io*Oq0BL^Su#ijo%`Drg4PBZ> zs4|~iRS}bDB4X=#RIKkI)!AA1tv(gfK*pm7g_#!x1NGX3 zU3$26txD!cBP=dK)2|-_Kazgs0d@9cnqr#p znS18P$22)#e(KtWeJP{!2ZWC`FR%OAnME*|$7K^3y9vbGe*95xp{{q22|-xluH@A3 zT3h6kIni+81Nt)e0_oHhVE)TAvnymgVL(YV3cQ%>KAD}bC6=To zxY4LH(6$r&e9fw_qZTY5bTjz^6~F=S#x`!vj-}@Y-IDyStOb`4RF(KT;(z^h@G+(07>Skv?j zE<8475a#n_Md>6BR7?E~Us*^%#SwFGylV$P)e4PI4KRVH++xbm>U z*$(EUVv=H`sJZy1Mx@sGJH?=`9|-_*1%BNm;3@*TyqUzlG1!NIzFn z0QV}t*1twX%WzKT23hVN_w4~{fN+srwu-XKDb;*tBCN@ySv428;!w~QQZ)|JJPjAbys;MqY~AZJIR=1>yjDs-KD#e+2sY^ z%MfYg3G)X!psl7pqKIJfJNxV6@w=!(!)R&!D`caqFPESJ-5m9~w$cn5HP2IzO!|25 zpWYD!lZEz<9IxkG=9$|-`HFPFq)j(AOW!=D(&f%tP=^%e5t$=yjQ8`5Lhk~WZA)S9 zjifuV0qt`WOWg=6>0rey)HRRiZFpXqARPbU4Ba71y-7okkXX^ozFYFGg@)i*ro981 zw+uJKUAN7s3_Puqx^iu4CPUS`aZ8=RVGs1q{U0To+qt-u!ZvKC4qX#LN%7Qw`7oQ9 zB7_wKk^&XUowbzkuEvgI!}?3KZ}`R9%1#KADAdazz#rZ8ZLikuS&K}xOnLDK zaCSj_LQxRrIZN?g6@cfvO@OAPFQKMg+)wtm1v3rv_~e?U538omakvg?h&?lfH`7LHLUPiV!Dnif zWIDf%z|3DQ8>$&?WgUxOQtu9d`x~Tm&ju<(+c;#?^E5M7RjtM zkLTo`El}8I5u%*kaF-7?)Ae~L&41!p2;OHry4_- zm1!YPs**I+9Fy+auieR&%KB_(gW57zUf&J~`T=esX|HFte>E-(MQz1HDg za;0J{&Cj9Z+jRuP&MsM4m}Mq6S@newyEF*7Z%ew^81#?xiVz{vr70^Z8b@DO5NXIo z^i8QHf9++gG|}#CI8Xn3J!p`UBUDQ2psu# z+4qH>!X=HqVD*v3_R$b|4M&mg*|a{7@QKiyw106WW(JC}^%?foz=rBnUG{xciGB(N1Zj?LcNS0Qhqpj|?mSK* zISz^xqa|fXgRc3ci5oy(RCh;8s>kO5RBJ`&tJ^E&dB<18pGt@ z>Kn51d0{-K;Cef`1gx{nazyMfnjA)Xma~zRksgJyQmJb;hbk~Vjr$p0mTH7QjAz)4 zZ;XTe=2R1<{u-|H)MOKpLB8RhpaV!VcbWIqUhBBGv0!jw^_(VySk2AD7igDg7u%ms zOq6(A*6q|;75mtKGiH(+2yDoRa|Al?&1YqCB%agBLr4czCQb3hf+f0Y`Ugg#Cz>xd z|3=P@i8pLV(}uJ zKM#xB76ZqOdRsPrRtlDI&ZaPF9b3o|rTD1ZD!zmP-e&v@8W~WVV!1M#I;X&x|MK~y zjrWN=gZW<=@%#e;jRs>PsZi+bMSeC-$H4wpaPcaE6i$D4nOV%sboT(~u&)f6bPo$A zAJd##E;X$wLkzAMk4y@+(^Rpx(T`%Kbt{(Xm4Is+nFcO0E;+>576;4f`);mi@6+Fd zzEFU(XMmS&^k9!xrc%#$NG@P;u!ZXIw_}1Bmet4s9kn>%cKA_&j0iRsF|Iu^;8|f` z_9aYu2N%jrIS+0a0e3J5AZ4=|opc$iuWIZ&nsAZUxCgplGu56(?<>{4GX+~k?Z{Oz zi@&C+&#K5r;$-4?ur>`$6)a73hUrl-5j(=_!%gH0E6E`QktiQdla`UqSt_h&wavot9G}D{JqmPJv zl7kDBo~5J?;Hh$Gm=zoxY#H58BW_r6 z&n@L}@CQotDk8Q?`rqAUoKsiGoRLcv1OC4w>v}>C;v;+Wnvijb@WVEI9A1VYa2kaY zqoV@(0wR9lSV!DE=H1Gjg4`Mg2UW`YGre3xZ}tK$Al~1QDE3XTn@rDgzuwfV*lO%_ zyRo77eEX1eVHZ6N9N&z1GpNcqfTDRP*l}w#(!Ot>o0x_GwEzXxRo#JDGtr%KYNe^3v+xHS|rhpH15EQ#N9vwqbc#IiA%^D8B0`|7&Un z2>)v>lw_oXOom(skrxDkXYFE2P&GD%I`-u<5si$~VECs4yJL7wT{Q2}XWY_$*4ojD z)%WBCYe!M?t8|;4k=P+d|liYFXe(vk{ zW+C5MZs4#NG<9EniZx^5)OD@muKPCSFYRd={bI?)J@?{L(3^Mgs&f{zt(A(Jwrlg@ z1lj?SHlGudeGV!K_y0xISw%(p#cLP?Q6!b_Qlz^}|D<$xNW)OlJ*XfZ(mhCbGYpMN zx8wlB3=+f8HS{oWIBT7?&Uf?e+kLn9Z@=&Jm`up=a)weF=u*PYgsi`Mx0~%BYV!=8 zpE4FqNn#=kYm26zxVE2>Et(r@Q+Jp@=-F{@vRYr->lC)U1Nic2ZLNNOU8i-iz~Rv8q`DNN_VWe-bX99(BPIO|C5PTPJ#JXH1;7~4G&{1*S&eH~7|5V?#? z=Yqo-83!wW;?x=q=b<3-JtCWlmEYe7ib(TZGrVPaWH%wKGpO?M6YFidy4K4~(?@*E zkAy9%X)YFc91;%&MyUdu3f#`;o2*1?F4m*=gz^lhV26+~GDc{o2XrX;)4PS=XEldA zomG4s{5&k?mk`f6uUN9Y)CQM}n^6;&#N*)hnm$57jF!f` z>Q)to-zaNF5#Gqo6*kHey7fMHf}sjpk3jha{piL}Ox^YN2dT{1aLslC z6ZJzv`12jVirv;d^&$&a5m`IUh*|Ym{X$+$p&+W~=>740XVtc1v?w$zVZ%AFW>j=@ zZILq#u9EEj(mCiibL7D1WNy6HUtcY$?I-cySVgv#?yy$RJNP^embyJCxNeM=h)g^c zqPLHC=)OhN`G##q9@w5EmzH_Tx~;)kn7z-Ek~RVuFRzYJZkSna!cp?2NBG)CP;!!# z(A*Qdee(GpD+_uE>jp)wJHJ}bsFRfw9|^;CP_GyaSk>mfIM(y~k|g_Xg;Z598O!K? zsaMfa9{4cVpWid?HLCv2_4m({tqa%Tf0ql*kQV<;B*67wVp*LR8nXW`Yn$)7}dBdckzN2AV`A) zMflRoV)e_86s!vmaO;qZT$}yP>R<(>yrXs+{^sU+Gpj+op5+@qMN=vp;{3v6GL@mT zu8t07k5(iC3Qlo(cbrj~Vr`sS`}b^K?(X{un`*n?@@aP`O{*-|IQsoTy)b2qL<5v< zglI)mk}a6GZ`>WiWaOA|D@(1GX(fX|rbr55W)fzEF;CUOA@A{Um_8aj@NVBreK94} zl--n9NaZQ+Ck3z%Bf6pW#rht?Y6CnG{{de@Z{ewc z>^gFYAX zYIiT*YcEnRoUIYPL*JOUu9GmNusvM5!MFQ144ZpjFJ18X?*7tl2X8%KhxN2YrUb>i z;;J7}nzDZ4#8e*{a0@SRxb9P+Qrhckn^EB2OcLoqFk(r+vSnxh<&RlObC`VHC7y}HoYHfOqIc9*8PYK%JMuPpF35HaJ;riod} zW)@-#`>nIE82GPfPAf~&!Juvu)E7KU=iLXpa-Q%C-=sz=K#7F zIv|`mK!>i(R_60QRLII`Ybs3(D9-V&d`00?sINLYNXutID_=>+=HDFO*9E-NNz7{C zThBv2b?4c^R8EU}em@zb^YmHv1!{OjtpfA}71dQ)%zvHjr*j2(dfZNWgy|l7tKxpg zUy)=u5^A!;T>gYF#K1;cO^a)OqNiD(Hq&SyiAan z{)k(Y_Htl4=T6XAV4nQWMv&*Jugg!JUahIV&!)%Mc)BH-Z&6#ryGa`|waKy~+Z+xx zwvsK}9clMzFFAwkk5;qfgxxPHH)2j3m8g0}Mi|L*{+ylIH^I zi}!2mxMnp{-6Hny z*DEvmF8OB2gJRnGA{m*^1EzC;wlu{{QsWI5UU%Pw_LJ0X4BzL(lckd7sd~Jif+)|) z$=b1tPV6B_#=+b8spB;+%U#F2y#uHid}vU8?X}A(norA?GEX;e9*lODL^OC&@{x44 zmRB1U{JY1A7$KQfWUf-v`)}07_-s0W>0``U)biKl+MoZH%n0J>mbniO52MlWcs-Ytzvw>8hFW39LrF)YzhOzHdA)~;&7esjIbJY4G4 zmZ7PMkDbJsYt!yZfaE>$qx6@Gw!%C2tmmY_$tM}lOZfW+?_M5<9#+i1(Sn7RSge+_ zFjNvbdQ{TasUFC8P?orC{ot}v-rAB=bo|c=+~B%w-{lYfbM1pBFHEEpV$nJJZJ{^S zK0;;t%Z)X&IJz3|X?)??4;Z0-yEGX`DMtX&pCWTv)mK%f7dX~fw`aAAIwiG*CHaQ7 zeVh-1qTUhVNTA|GLQ7-4Gx&y<5+t;!OsAR`a#WaRJR!)1Z06Q-%Lpgnajbp4sq^MQ z&rl4WpuND3%l_25ZVniXNd|NOnDNV{m@loOQM5GXj;_hO+Fxlj6-@oTCiqCFVn|z{ z4-~ok-Q$#^9EBbx&hsvIK*5vX!AoXQdnSWRVCpqr7?BwtOX^NbkpXMQ@e%gT} z9fTB@tC{&ZuWM^TMZN$0O^9CY4?+>xjl|jJGK%WtoE} zbG^Q}Qnvj6EQ?_BcAn88@t8{8%Q&h8m) zoq5G`nwQ3ZiGJ8X)(lQ;y?y3|k2@E${0<8T2N#aNN~ngk!YA^#)-wVRTkmqx=LO5A zp0Pwy#EM)GA=8{p)?r751?*cH4i=ehCenz+ zN&+oRTWb@DRgBkh=HIKKjtMrA(wQTwEc2-mIii45w#lVM_8yKr@tXCos}kEMdh7?^ zALYBhmvw@8Ba`X_<8OGT@P0&7O9Oow28dx#+m}S{e*s%`M^ipVSsAMp_uN2w50eV~ z+irn33^)&C8C(a|GDA*l9nPfp^rep@z)#{8l^|JfY5n31dzX9It#*Y*LEh-W$Q_!i zI_nJ~-Q7>FPGA^XPoAKerq5*7HC+SRkw-1zn%zvNP?ZeL(2|LIH$S!tVmo~YDxMOT zg}c;W-m>Imn~ii5nUoaU|0rDRo-|YR3{Q3>#!VOMs@uBy5b;bP#+-4VW`D}4Ja{#j zcD-fg-grJxCTt-!(PAvZ!Y2Mj*7*6=Ke5!az(QJ+E0@>7GzO+QGP{?6@U8ce#vTFA zBlT0BQ})T0NVJNOM=W}Az~YH(ceJv`f+z>o<5cq?!skhePv7@m1;#s>Yy;;S9c;lj zWiZ3)HW}#_*e82)8$DC?ID434lwn2_l~km?>5!90N6vi58sT>>5p2QE+WmM}=lOWe zM!7_uoH!=MW6)h~Y;DMeXn^5|3O;)HZafxfby$snR-2Uh52hl*l6B z#mhO;;^q_JmUVqUD7@kE*N;JZCSuG68G_HubKduvKWBRpH>8`y6!+Cp zZ>)j%y!sgwIGQyw8QZ&2TTwQ8-pl$|32=3l;5?tm{-ZU9gYN z7A_p%*ra)qzy$otXP;$iFEgnzco%!qszW)ct8}T?#sZKHhqX?-aj=7L9tU%H#rE0r z-zMy9wTa8`PA4pk>htArqeE91o+%IDg*OQW=wNpaae}8czi8Ed-yQ0f3Jad7X@nmp zQRPrlpNMcZr%#tZ7l4k^b-egXm5QLR91rj^{1{BtXs~dmoJOq{45oUKzuaMNgN8BP zNFe7PlWk_?y5x_aXF+7LFe`@p?7X<&_{-lvP3Qwe9;OU-@YDm_9Ft9}> z+?zRXsrd3d1DPBgh*qi7`#xbb7n9byww1MVwBI?SuHz_?W~8;O^;E{DRFQ^ax1^7* z7I(2?-LIl_4BGujNI9A@VM3cB+peYPT*&chl#^J0$cfJAlq>=IgMVePfMCJv+yh>D zC1o0EK54tr2%YeizKkKf>`>4&+?{6zpTXtnI~5gXxE9A^`S;5blogemaalC(A{WfP zvIY%#|G9fcyZmT$+CoUx%vK|AzWj!& zb^Yq?4CtRgp#3u1JbGk zn$M94rK|=?GAk9!zC)>gYD!!;d)a<<);gx_zsFd(*FSgbNo#yne;R=Vl_dJ-7C zAN}bh^j3_oxM3%}kJ~>EYf31fYcR08PMrIUGj~ZYRoOtzb0Kw&4qTHwX8-r?Nqq!C z!ZZ~&HN`YE7tmu47?DuFJR@gj8Bf&KYYcdPtNjf)W+wpJiz`(x;+2uo@TlLqKs_Hl zS`}Vp^f<}-t&@xjGNuc&Ied+3-X;`6w`2Yw|EjZ3N@fvA^$xlilHGaUoA7>l)iolg z$lsYFK~a3JlRW8ASLp+dtef5QF{XreP;-HgCUIOxm^3n5>>uqneTsfx&j0j_-xsd~ zjjLSN_BGQ3M2RPX3)l?Syl6?N7Q34GyS}=tQQ~8>c(v}0-GDaq*Liwecd3O{|GzLI zN5iU`!H1Y8U~7zZEEM|NS$Z@R=<~65OVwI77Wrlrp=;AI&|lg1CSob*dwith^10L% zKR7;`HOw+pCiZ!cAt+5%-~P*aUaNF=_jd5+eo*jXmydjL=){XzEOKsSMc&>RWf<$N zkktI~P+8P|y&q0_B68;e+)E&Dm>>ZX4t*L!{+tQ=J{8y*MlY7RuN~rZ2~_auj-LE( zNA9Z7V?Ms2$Vntxbbtf2c_0$x_`y>tX6vowSBA23Ki(W|%wM1@wkn$$ZPt3$g8ODO0r7OWO>>M~5nm{j1If<%kY#Q~?3qaXQWHd^cWj*PIJ^~5S zS{Vw>(rqY#QU_pHK+#8qj6R4?q2+-Cf05in6_8C2Z-l{*p#ySMxq4(3Ddsk435F4o z-E)wduYY!vX` z0dXVBowQqL9l)F^q@Wb-RM_()G3@PoBMnNDZUL`eVP99#N3A=@&guc2%I&!INpbc0 zgC9c=Cpv>?k|YX8Apm=U8%;t0q)hEr&q%gVdOR6h(G^oOo3*LBTHV5ceEH0;37``e z@6SB2Nm=LNoIQlb#rPZbHp8mg&`ze83^?lD+A>b+&$Wxp)9}bdpPB%saHbX!4Hb*7 zyV1V!WsI`&p|a~x`bNv@O4bY0SX)xavYG6}2suH&jqyH7%s_pD2e|W$;H$}>acl#9 z@WhUwb{(2uw|Q;{GW91UwwOj_il%yAbRW8Apr{vpzoQ{v_PFF$`9rspD;>B0Gri=E z*$z&kxc>^`i15^9G@uOo!M_^h0)fkXnq5L&zkYe~qy@t!h1TlBZ6V(kjveQ}*O>7x z4w2w}ixl{-{(2Ld9V5ZP>punB?7F2tS+p##vm}O2xcPUbm4Z*sjtKN?eQ09vO$tCi z1t>WGnvcv8KLknUfNG6>gUfnpbz>&b;vUci>N8!G&8i0mfsN-DWq~|agID$wGx{4Le=e@$27aJ-0$&5;SB4063|7Z7Oj@ig zP1B!%5X_1dlEB9nE3dC?RcALC9?k zVYiDDys(h6==d$Z^`j%9tWjh~;Q_495G=N@{d$k;0+_%xX>@dymXo9!$Rni~0VW7AO+x2SR!y8&mQ!pbw^JKQ*FlD_y$p z{kwVXH;vsyN4f_`4xstkcNwm=^rpUO?bT@#`{9F}?4pC_ybR^ZIMyBZ92nb~;m|;T ze%urk3z);S-Al4wv`L-%O!So;9Fa^joN?V(z+KKU#{k!0vkL~h?gk@pI8BJT5BR6% z(D8eQBKm(HhnSpC`gY@X{Et0N9~${8T}4+2jRe%=4CeS} zb=@mpS=Le%oEX*G=YhtdWo5Y?e4fUTAWARkiVE#Ku)#FQV%`AFj!Gti%-Z{?$%P*p zZ36)rs0hyK(3Rl%fiC!4f|lO*J)s~|AJ&O-qg5FGVC$CFFUO{0hjL8v0$t?)2H_uIRK8n zeejl?b>S;A$>5Mij6`pJA}EU;cfz~6YAsG6mMz2XmM3;s0^;q@NWEt#(&JpfWdqP? zE$2nzRz^XDVeR@SPdso%Hf?){Zit6O`IJ?p3vj(n&M-Jw)b2#Txyuk5{dr8rcj4wU znG6kMN1!iW$B*u=C571conzXZPQ0R!qv)ZT&E*j`kCTIu5+_ErBxXZI@LOIWx#_8v zoH+C>y8R)d86NF5K1$3C3wV*T6D2KISskzQvpxvubM+|zL5tSvQYsG;b11VN?*E|< z&+$Dba*(Cgk6L!PWQgtC?Ft_5_O2$nZHQH%4+s~Ut|PDVW{rv1XR4$B7p`M{a?#*V7v9Z1Nnq@8ULGjzY_11G5lR!Nm($tNq%x2jIxwBpjTS)MM zPpa-bmYR}SX&L$Mzr1_4&$$k=>pla?_c!Df@~4!Y!WN_NKTb^s{RWxcf9r6M8?T>U zK<3%qM?dK}0Ul8_ZaCoeh)C^TLf`dH#{zYyWP zzrRyI^deMSb#SI~6M?+=?XmbKffn0M>@v!FF;7Jxr@BWqM5k5CD5N{HyOvOSK^vEe z`N13-Uwg4-UFESyOZ+-{z<8yWpt!tYi9oG)QkTpbxRo04`HC9v((^O=<{O{s_+r!v zRzFFONKJfdf!54}H9frN_wUsss0PD@bQbrUfG+({8*io^#u2Mit5(Mr(kY=O^-@)# zsWa*C=@*2$gnM;GN((4r6HZ;n>qX8s!87zy-+iwYQG3fO9e z@hcy{?=)qe^Zvn3`F#2zYpCan4H7sj{aiS4#CV)Jc6`a<#>nf-4eJRasdh0dGY-m=#dB5)n}};{cqt?Z)sN z_o)+aFeaaJdq8)RSDh_>-^+;IFxpL+w!~hYCP6N|{qK0}&e31&qBfkTpmmt}Lq|XO zb#pKZEOSI)4kr2c80V)O`FE1=$F0T><}!cp*8+yYON(q;0F&j#{GQn+iTjObqVT2+=o<|nr=&f7I1Xu)R}A#EvarJp94xmxC|1vWZ7RYae;5{EnfqnYY4^X-fRL3Z&7em{Huj>M#PG{b)L zpu`+;X@}|TLG}&UMbV41EgmwLfV@XGD7rQfSm{mv$x`t;EtgC;QRo#Z(!$)WTGW5( zqn4nOID8MB*bsqFptuU0*vxQwFaFcb2JODh)8)MPXjkJ;Ea5+sEaB{?qmL#|GW5+RQi8ntnLKBp@rTF_zq#{VHk zMd}OVIxC{A6pM7VFv7rF1fU?SSbKQ092*2k#~6=m3DpZ`FZC8Qf@DB5Dz_uYOWu-evS^ax0|A!Uw2HuBsch%#yo`v z>ztkcnI9TRV9=ohZc1>=@;xbnNHA7iIzYJd!f(y3s>PRmAY)r^wKPK%x)rjxx&Wt`610gPu5++}|7S|w z2vLb;WGx1|8-sus+VHw$)Dzit#A(_!jR^(E>jV+2wA0mR<&kLT0FCpkjv)2;t0D~N z%w67*3HT_MjyiF3+{Y9}W1}}yltYKDS4y(|&a!4DB+{AVhcE1~3y=G@EIx_|eT>KW zuhqDOrYD=Np$wj=K4#E-Ln% z5dl^2GF`1htS)nVD1MThV|33Qe#C2Q4JBc`IbNe{V0$!?C}mF_dC2Rl{>z`d?V8h7 zR~vu10c!)X6JLPC05sZt%G^taL%wXbIXF@%(DXCH_5@(eyOFw=+RD=q``LR`1i4EK z+V$@J&gP71As}(XYgk@1Rd1xxDjLkPzA+cdyBn~&udj5F--vzMnHL?7)_EBnZSCGIS{3mMNBR03-qcvRrkhPrk0uMD$)z87${ic}uy z+_YJk8I}Gc;wVp&l2jMz1*b*R`=Ps3p751VoQB=T#L$`*7F{_<#dw;H{<&z%s0pg4 zgRDPEIxHk9@If{0pKEC4!uIYH|BrV0#o_;l7B3%`qhH38UoY<Q`SN-ovC)LzE>By(Rg?=d-uu!?kRC$MR@j;_sVMWy6wIuX=k znB+~0$0&(xHvTmXo~njT&;^Ht2HRNvt`&?g42hOcG_{x&UmsuU*?M04(PjUnI_Zrp zdpQ?}tWpF8I!x4YZ-&n(t~jh@5B6VdmEX^74~pF31ksxW5r3y5%j;)dGw1^p1dxqV=gv8&b4pPkF}dQCoA}u9NZW1wiUoPUa$JfOu7ixUqr*IqXWA zxg;w}3l^>xiJjnxG!lw0I`b;KZFc}0*T{p-b6`#BFs*Y87bNUF14*ehSFt(>+EZc% ztcR2_h{;)5OmO{YdZwB;6QnS$VRzzTcUHg8;&(PTs~Ho!mNhGR^WsDIv|CcXQF185 z_UYQKi3kJ3l_~`E!_mnj_jC?ou&@rqB>UgvzjvAT~N%frP;1}zYZm4 zB20}aCGqquU#ru)_q<`kR%JY=nKpA1MB_D2@`W~HMWHPWkJ7+o$U(sC;~7((vuqpl z$6bCnP+B;7-wLm?iq|6s8v@!TlQiC#8I|+0=B&s8+?3z2E2px|VCj?4DhX!+t9;6tq>U;F258z< zeGi+A!NBlD?xkIV?B|B8_C>L^5TU-gYYbg@X2tz8vdg2v<9}9X{A`{Jb4Fw_c&YJ_n_i&fyM@O5ds(4sm70yx5HLt@^Uw9~tFa|nusuAgFlZX)hN17^jE>q~_&lF!-Q2?yYdR+T+%E^ld!(K$L?!=C{F#Pn z4I%6cgGji`rOGfo@~LfeAhn|ue;Z%g((rEDf??4QXUzUw#)}HbH`ID=wqw$zBe9Y) zfX%gB8w+zm96$3+5G=m3#8llg;KA?-9Cs&eM;@NO^LoEo4z(DM+KWW(b*G)C)$GK2 z0~TnIKrb_}5@m1^c~ln#Ju+!aO6n%|d(NO&P-ZQ-q-8*_cg-s4f-C0ymFtHgWL<_k z$Hfck6uTss6Jg_`3|9MwUhLPP1iFOJFq=mJJjVXGk{pQ2yv6>VB8_+Ix4iC?Q#1GU zp9dSd7YXv|YDP8VpY2=nMJ^1ts*n7LR(J3T8oNlI^WyyJF@8Gz+FaoUsjJm5!uWWn zMNB6UYz^%fFJx2#PDz#ti;fW`b8iC=FxTmp1E6(HHmSv@C5$h}#GdVPTkgeLcLG5Axt{)PDM_`RflKFu`YS>KKE) zDQr~pun66no&{sr?DJKKPAGA40$t?6fs4Ws*dp}7{Nb|WPyf;pdN(Zi#sUE5w^Ns& zAxY0m3Ca&P78=y{7x`Wguwe*G@lc}~o6GFHgI@yO`Ia2y9b3RY>FO|*lz)l)1(mmUf6FJ#9X=$^ zx?~$jt@Ns2$Jy2&-%H{Kx-(ih(Ws3@nEBj7!|ud#OL@1#dY1BsC@qD}8}p2`OLD^B z3JtJGGG&84s!IJznr*S2Y4fCQ+}>uDU&Kr>BC>)RqdJY_>Bg&-$^nUH03^Cbyz{~) zhgGCir3%6wS!FPrKUEoxxm|IOsg0dtxW5on>u2Uo%=F=od^R5ZLLsNOZ)2dY4_dz> zsh&imZ!>-YES#sj;wX%1%_0jjEY_)Z9CYFD~(ld%)Ja*~+ zN9-t;I;t;EfMvOQ>az7`CRKHRV!&G(*$l-@>}?iN@Q6Ui(zDY%GP&haFDaJ~%ATm# zl9<9D+2OSCkUxG104+S}XM)CFd}3U^%j{m0p|uxjmEBC7X%?>e?i@D!ng!aU;~qA~ z+00iXTUP%y30&{d1$s9GY_E3=tR_MM%%#im=PSSZ>kXa!s25DMMo4ikk#@u1q_U6= z2oN!POY~7w$K3S9NCgq<7P0i%`|xkX-2Uz7_;0zYY*c;+`id+Md8tnt7=FQx8l6-8mfyLn9v`WesD&>>eX z%Y|BByu*LatA}?6(OXl8?pW(*WVQGu_EI>M7Tgh?NH&3l)E}~R!R@=#fwZk<%f{#P zoUDDdj-t6Y0)u~RbY?kX%Z3FVT2s3Egg>xasVO%MiV+=u@#t;55g_^P$Q^&wK3H;(t)E>G{5 zTk6CG?jbbLu`oH6WMs0eBEEqPh#@3Sq9vZ1laez zFbkICf~S`Ud^SRKIwdNZ4N1wv3JJ6uwN|4&OlelxxFO6i5jpApXNT@VKB3=gm({Zi z)Li?G`3CiTzqmj#^a8aLTdxJEF^vrv0a~LbDZagIAH?O#2$Fu3j!7n=Bu!Tx^OhQM8oo-)R8gurY^C^N8Zewc(2Vl-0RJo-6IF|%M4 zy-){@RnHvH^wEc^5N(3}1G`oM0LQ2I4h2)Me^9Wrjb^vnQ1uj=bPt(>F%u z{eFrJzb~zGqPDEZQK3b&lo5^Uq>wSSUB%RZ9 zTzBuzOOtZLIJZ3nP~ci!*fur{v%<>^0E+YrYn?Ks6w#QT-&loO632w*`0$i}9qM3c z`%I$R7BqHi(lk&tZEi{YT2xGbz5uZhEWZnX#*)v(V4aMss(TXdEPBBJpJE(;FP^hL z($h-27@1_4!S)uFIb$k2#nqo^7Ubt_R8Sok3HM*xGH6~nUz&_jcdNirXlzjFd{h2# z66R5E|FN(Coc#c2LAL*})wkz&b^k+xX+RDlvu7OodRK1RLh*nH}+6mgrw$|8x_wf{t}N? zgAZEIQBogDIS6URga%(yz`GSg#8A{FHE%7TiE>0@L)`)I?mBy?-h31!uh%&K=zBP% z=CeP(@2q}Z&z5&bUi)< zhJ#qVVku4Bqp^V;R;|Ozc+Gi#!(u`k0>gi|n2ByLyNKZF#je)EH?&ub@gM!3=**LP zIYbSYKI+-G^kLCLynRG-dQ~v^s?*O!w}Ur|Qi*EiT1_YHF41!uarguf#9Z}q$go>Z zXrQe}bc$KF?k;Xs)-a?t4Uu5?_Di$jTwvqA0kb~r(PuaEI7j#yq+*BqS!d9!0k*ls(j2+OKi#S66cbsy?vkAD^&N5&rKLbs2+R^z`G>wP zaOK}wWNcy-I}Au<%gU&R^X$pU|Dty)z|F!hiQC^Q%(cg~{X7Ut^K0F2SSs-5s1-tF zcNA`WWTJOJ@A_wYNS)<4{io4PMx06q{ z`Bt8uXVvT%J@IaPWyR^+N<1NRsQrhsXgaTFLP)1iARel7w!!MzYESpZ9pVD3Fj}i+ zFoj;IE%2BM=AMdj?VHaV;|_BW3bWFb1=MM(8+7}6yy$?{-kLttx5b^#I)IK0v3O(q z>4!J41+zWu^FUhPsjm*r+OdZycQY#tV8TU&LY+ii9jjSyS~YJ577ZAZn)3J;sES%K)b|0YZyBH8VQG zp`g(84SI;j#Wi92q=ouY9-<|`^7rqe&{~ww1gqiPPdW7N zgW;AR1DI2`52fn)@8;d+=#OMVLn4VqBKIc4G%mf--|pVAT=|Ehscz0tFjVk-mfm9N-o|dvnxvE z^v>p?(5oLMp+3o#Kt*CW66Z(R%lO4WXWNjmCCvuWtcdGFHBWG1@||eDM$6Hxh3*-< z4CGWI@lIT0c7RR%bK7#ig?IjyhZKNg8Fs~RBg&<@sXT?w?hn!-bS`MNdh6#w)T5bj zKVp6fX{{aaE9mnj{=dk?Lr>{{zyGCT5IF8iGQyQV_49)Z{J2^+ zp*qd#CUF*fe|7!XT}FHBHh@=6H=&O9Cfsv!wo?$IJv!B(9xUhxoX!I_)!;G;jFzrm zl4XnN3T6wIQaTB^Lp17qNodgLay(|d`@jdVVLz(|X#de<nDhTo~e;@p= z@aCd4v;N~x2WCRD(mwi%pyZmli~Y8)a)6VeVefOV-nqZ{nfETzmqf_pr*aL<&_INM zTaxCkNI~06diISw=(^7M0X%G`3Q>!T;1U?(|KWiE%?~|rQW)@!CS(`}U3lb-=iSuV z3J?w2mb8J-*g@z%|JHYN)16iPz+nDQy#?0DK=;WRi$$>=#bX8u?A-I!m0&PDz*?=P zO$%NfWW}ieO;0)D*wg9PH_x1yoy?i8+)oY1BCU(P7W{|(?6gT=12$JRGl?+^)qITA z1G4C@8;>T33R%}ial_ZY7*@D56aqiGYS3EN-$V z6=#fluv>ElVQ{6tnMiL9UD94bOhFak=T;A$Wk=r_;Z$2J_Fa89Ww=~lk6kWN%1~1M zF2hci3ng2t;V&cBhXQ zR3=tiZkKW2945uX$9M%Sm&YqY)0!>IXN^LQt$qVSKqZ+4Sz!=o8~au7%vKcYg^0I2FB21 zg-I)I+f`41Zu6tif&*ZIjBA*cay*zDDWHz|I0rb*+kWRGEv?IhJLo(8Rgz>by7Y3r#cT>h}E!F#up-h z>Cd`4GDUEnLuQe~e(iHLpX}4g%NJ7W7+y-onPAb(D~M7BdKLL49v) zWIHGRvHHm|y3RIXTPqc><~p|ytz5QpZ>Cy$IMC&YvN$P#y_MCUO9H+vW>{Fi89H2K(Ru0%GK+BmEvryF$oQivBJdg)iJ;eF`5gjW1 zhHvBfKbbFmcJOig@qJK^tmF%Kjm(kZ-+Y!U1>-Va(^|(l6SaxeGMX#g54h8?RzU;P z$(eN2#e_c@F4YJ8`!7H92DiI<$H^Jomo1L~o9*)kLq~zj^}W5`LQ1ReAe}howQWCH zzl668G!^-OdHqm}i>I-7G411THC7D^3xirY@OgOH9oB+!w)p90h1=b!)RyuQlJ$Fo zyBoIdc{_U0{7~Kt1ZL^3d1!BMqp{8sQR0a4zm;atikqz;TCGl?6u^f|msQR@XTj~G z=sRaTW*IEc51Wa*>oXw|eH+oU!7^qx+17)5Z<$KVqueZbb|>?QrCVY_!y zitFl^S`3fkyR#-msL0>n1PLU$s8JAYD@(_lf46ic714;}pj~J^d2w6IX_L5B?%N5~ zp$L=eb6`MbSc(X%!Ge-cHPvDy7F*oFCbf}S`+asbWiIAjP)s1Edw;8~CNtL|&xdcY z2f$&&AUUXGAveb!;UKBnKp!fT^jwXBzOLM>BktpD8a06 zmsZhB#v&!s0wHO#O?XFgfyxAVWRXCMQ6=^i6wxyyC$v&Vf6TCl+Nv~uS}27gd)$JL z=|3v^4~*9T+rufXoQ-D=Cfj8pP5#wwgUh^p;3O8%SCKUP^=s}mXS}*7D}pJ5#{sSY zv2IM;Ff4dr4arGzO9s>>b+a8izuF~bX*;-@OGt4Em~d#bn@^3myt=iz-fJq*_!!TB zA3sx<>kgt>ib5e<9rHPNAu~J)NZa(g-o=wa=J%XTe@gzWKG7v~un&c~lafuqaDnHe zI+9`my$^Ee1UI`5+bmugb4Zw!RSu%SPO6+S++xLrf#$_XM)Q_a7@w{|huqe|lq^ln z=NI$oo~*fDlbNqfIE_W$Y`OJ4x^44O7{-12A3yTXU;DSuA4*dW&JaGtK%_*6N3ShH zS!}5GD*g|TnjLH`MtTe+OKIftiwBEU9BR?)5*bTN-Yuew3csEW97ipUJ1wD2Xlkhn zT^7cFyMyMybL?bg5_C>r(}eo28ASz>^TR1WrH27*@`jD-n8x4Qet-}7zRC!sqH>uL zk~MVW(T0fOrGdR(kX)-nQSLqM{#YbhO6(}AVdUbt817;cKFF1N9E1Fp=}|Os-SPZ> zRF@@V6Mtgn>-S<#Sv0(LulgM)XhT4)srr$0qtp81#>dYSy>$M@{VRV^p8ZQo8n7|- zVeG4wr5FNy;5LLd!`E5MqS?!=h)spLyMxM}AKW0F7eqVV?J5s#It0#{!YLI)73NZU z_k${p+!{H_z=4I0ajFYjJi)SMF84zhE0WYEiM;>q%39nTa?=#29<20nqWE?qylu=P zdL-8yvg8~P7(TE}W^X0o;&*>1@0Z+LNi-cDi3grrwtu^1jHJ6xM?cF>(yEZBy+Y8o z?b&P^^@!^QENxy3Q8-R=>P`jT{SDdJyq69Ip1T8PU#Pc}?YbLO{wBT9t9w^vr^QYp zXG;7T6!>v`BaN0j6g)seOKV$G&tv6LYDVMwF|)Q=*tszl>2u)K&pn^l4b~4PdAqT* zPglC-XhDnOmy0w)UeS4<5BOkqylx7kh|yGvea?5reuC)gNSwb3Q3L5y=6K5qa@4r$MJb z8Y4mw3ihK3m4fVp+o=_=&`SuVSl3ylL8rRX%Hs9_1`h35RrAEmt_Kh6QET0Ss0qd41OG8$$54!`@nUmqCoL^Scg~qE zAqBlaXBotE*n&OmNhzWl|c{Ym>nE<{k~ zV>-j$ZBWnO)CTjfy)sv~BX<$+G;uVtl?oE2Xq5i5ZHhUgl$9#q`gyrX&nH*jZ&Iv` z+Kz0oujbR*x!CYN6L)+GkL)HokyH-Mhr7c;YVE|(qAGaX4aQ6m+H~ZEF4TDB)A%Zf zEXBAC&ujo+pN*&4j+F)c*zjVi1pt$oRy_< z%tQA7URr0^j9=V+jqjVNvG8p&T`z9(a8jP&Vv!cXQ-rE@cz1a*%Uaa+dp${<@qM z0!xhCi1%)DC~vF3K%j2YW6CAVRcd_KiDXMJHifPTa6P^2GzU@H%_A~XTfc`&@~y(S z?QgrP+dDgqZhB#!*CybadOkd(N)f}&I7RNPniI?|>b6>K-J~_S2y#+O$h=r%u8mEn0wx*BUd!6Tr2 zd(fs7NGm2>zy_)N%|UrYuu;{aq???&u{cGSk21>E9FPFexX5(%OwJDKdRQQ3DwBNH zeFH-{6c~9|Xd~8(^;iGEJ1Ea{WI0+2!^VMW-6s|3{!7BQmK&(+Yk(_z(~q^;R4$WE z<9&7e86 z>md8z>E6868#duMn?UBGrUh9VVK$6P4Z>rMt@E&OJnj`VKn={>T>Wc6FYJcNJ0S0& zP*h2zW_yM9HUs6{y_pV!3;$H9ygAD|_{Qn9))Dbo{j4prddhk?-9F~7)TVnggl|*8 zue1vWncZ_W8{D1hr@zL^)E83=gQ@tFn;tVm=2Fr=u3LXIR+st(){%*eXzw;qpY3fB zs>x5 zWEm)AdQi|5#xsB#gNYdQR6Ai;i7rb={7oNHLM2KcQ+${*6&l-y8)JQ#*uhWIMAto> za^e!CY$nbim3|YhaiJ#ju2yyVZkUi5#kdZIZb9`S#En~J>i-n=)j@4VP5U*VrG*-< zr4)DfP>Qukad&rjZ%c6krMMJ|O9&Q1AV??>98xqm#oZxDfPB2~_xsJaXXf6WxikCU z-E;OiyU$~3Fs8A+x7AF%)+V+AhJ$*@11T%=b3^pi!i0!a1PJ(01S4c})_ka*RV4`7 zhCo$@yWZdX^)XUAH#259erZImiND4d6I5@o|E4QP_R8gi7xRjrc^na7a-H$Ef(F0; z4U^A%JGHC)@OKnjBAA7%aLb@mYFrO!UXu2FPdFrUSm}g=*@TWhtN}DtZF*aO3E05@ ze|SOQf8m1v;sr!^?xGG?1j)q6-wD*n$SA6%zrS~6W@ccp3q{geq!ESBH6`9zYN}x< z%V@&gAkgq|Do&4hO+W93Z1S;D(uj+1=i&Z>Z$k#71Ul{Y$}3Bil!iXm|$EqE5vFS67 zhX;U_n+EREOxFH$q@(FfM-YjGtK@IgHS7joet)p)8tL8i$ILcsWy`|IoV?l6Vczo} zw~w_jnX)th|Gs31=J2l)fV1eM|)8_gpE1RmGGco`|h~*wlD`)+SpPMSX zfL1Er!jA=B<$iaYT(wc0!-+PID34Ad?`DS?Kg{W_4M2Fsvi_>e=9Dh{`vkip2npVS zT^o#blQDYh?^rgf_A~=n?fE8<)U|=5dvu!iaW6?p>m1v<&lvdqEXvKxuA!P50ncv| zWf3$@#)nd;061t?lRN5{)4)RuhcRJauJ8#(r^;z9Z|SNruSV9}=q(9+zDriNnJS8sIl(n9&axsXIT2bll+K)M^Ag9@tEz^u6-nr!cK+k(LO{|**N04^i zCW?dsR>#O%+V<@+GMFK_*d@u)>1@~x6#yI?EglL9{v38*2k__@yc?N_)}J((oytwn z-J5`+(7|-K4T%C~-xqG?%O{(G8Io=x5lxxpa(AN$@_U54t}A}UvC;=3Z&wlIOVb)I(siYbX^;Uj*VgRiFEKR=o{tfD=bk9hQ`QRGI*Xu!6 zJ`Bkg=%%3(G%zJd+N}%mWQN0Dy}MznIDUZn;bX1J(z*v>%X*&Z##%F(S$W>D482+0 z(Mee&a;@mq#dV*VT1>aJFx%2^YlV1jO@PFlA+uq)wuTM2);8op0)P_#9W>*yam9VH z+fqEi-zwEVLTB$^KMpGN77=Oyr;ur>cBUibqyFf{6l(}^@O=htIB!&dn zfZGKclu%X1CQTBN;dRAI02vAJ#J6Vtipw=LBS4t@Z2Dml*NAsWDe*Xgze2Of8`YcY zX}!1Q!!PFC(Eas4=Kl>|g+@j@#MNDB3+LkEF6S0jjf&=s6Hj>e`t(mml7|FE4hmmgDcO+sdm;vV7uqF9f5O6Ylz$D)A1*;Zx^ePW~D*BEDm_!_0>~G z+Xl%8V(MVR0y7QuKt;VJR&@3VwP$$v0>r%Ok#%-rb{&HnqS`3u`?k?yn#nG)B=lX) zJ?_;^z15C(nXfD7vvrpj|sHM>P@1M}R*6=-B>HuDM-3oQFyu z?%||RV=+ZduhDj6s0iqT^G{H18|5driP(ZqEP{Y%LosDg2%x*AZqICsjY1nX#K`Ix|CF|9j*0tp5nV z-18dOtWSUR;O!`xxq(-GmYjLgs zh8GmvBdG4}b z{nuo!i7Gv$NmKQ9X0hkS?v+X-EmWakv}T>;4~fUaq=);KPsnP?`|fCOJRAuQJ152K z9b&kOaeyp%+w&Q}%t+TROa}7=e9vlJaovQsbgfq+Ou#}if8`< z3x7=giOU}zt8^GVaUyTaIhVJt{+cw4p!`GqcO~vKFNgG!&phnXa3B*lzE9X;Jupnq zR|Bwf?GC{Cd0i?uu;vAOulAY{<}_aG_ZTi^bhvIs7_e(&$}%kx(&yhe^^7A&t zdYfFfg}>fbLNyCE+UyIb!6s!~HA#pgx(!|`J)78wd4`b`Sgzz~%U&`Qr*oBHFP{yQ zC6N^5u9@XoJC@Aa%R6rz1V9ExczQV5#g!x>oNjV}lN59`Y3;~^_ zk>qJi0biVb85nAEBs^_VU%Qv_Jy#Hi}cpF_{ z3ZFH~Nf8fqBA)bhv3`y=CKo=3ieX&kH;i&J=(qM&3#y9Ww` zHAZq;MpHy0Ev@)CEqfKB8zUv!zH>xAX7B{JR6?h7B9=3_N+ulf46n}voQmR4S^q+B zf#V0TT%oKDs5_0lBb&{%AFdf%6@?qrp=+DrF z+*2Z^)PLvIvc8Y(h`B0$pC8!&a%<&#Fe8a#BUx{+zTH>K|#QPXvv=Q+HpE<@YQ$&bBHy z_Njqp>|Hfdkt*;g7(CS_7!v{s>14eXUsK23O5NhgT?ZSrIaBUHuBY8X(JA6Vub4On z7&X%p;tNboRZbSOxv@PWa`?z7q;@<<(7s<~YDf9k$IPnF=@%`T5??}Y5>w4d28wQ! z=8d22ShOZj$MpgB9w+g@qguaAm*%hEhx0WX0q%+FYWU*`iYkJdh zryvlSwCHturPAEP@(r4nn&7F{gU1h>QtH^hSD7$<`05xeaj&5v62UhPBtqyuEo@FQ zD#4li8HBRyI8nH6jh#s5E*V-Cqa!+xwq_FKHG=i4J)!d!zAL+lEKXh1k_+S;yeR>c z8y|%pn-=e%B{ha{2%OZcAXcTel6b4AbUp-Vnz^n5J%9b_E%Sd zIE6Q;mrmRi-`+f4%sBT-_=zk)c0FH-s< zsrbd`stxLr!6s%QYnQ^7RAQhxA;I{&1432D^Hl;~JlI_Tc(fOPo!HWL!!ELhoAS`s&lHS2m93G<#}dDf6w| zC&s+I1Eg~$SG#7wADid7H?H3wcmU36gQf4Uh?Kq`72$$}R2{w`FxsotpU(-~$0<1C zLKeE+;5Jev(e5~0!Ta+L8t13=E#6bucU_Vf9h_@xUni4aocv344%-h25^&b2>1CZw z!9XR9+lpd=@|B$wL)7|oe&YkO;2Ed%=+!z$3Q(LzS=L2d|Id)D?L@YHZ4+8u?am`# zoF+M+&Z&aXMF(cz+xeZeKz9XRVO~o*$aw>Cpx9BLVS2utqd2g5#SC&|n-@LOqj7Sw ze<#)bQc@5+<9k>*oV}rvu7$Dek5K#V3fW8N%fJf31JAbSxR&w>L3IK}J}Z1BH*SNg zh=IJRHi5Ksf7ovuPyF3_`+w9V)-MzcL&u>Ht$AXa9yh(GRSmj05Unj zqU+*TqDA$R8)xXWqcvO3agZh%y~Hfm{lYpGTKz5G|^p5oP4^DQs{y`#fcQ)}1nlaoFYg$|M_v1k6eb9oz zs7inXE;$Lr9Ym6;+gVUpV>YPalHrh)G%}r&F=<&jUSR@1sH~dmFnz^g)8Q)e>`xJ6 zcVQdSh^0Rh3KViP~0zh&RNBZa@q ze_=4O9_9OMlc02abb8|aOlQdL3Y;HMOvgA&S9O29MX=oU%d>^pfzAtj{onNuqaC8b z4C|5lL~b>FvXx}cMAMGZ4t$Echm_DhaZB$C2^adDxDzVhlj0(Fw%S)r&UbxQNB+%u znaU16s3hcK_A|wpm#fwGa<+o%P;22)@kf?}87&vf8q(yk*=C1EiK1qh_AQflYMvf0 zq6gE}hp=p$WwF1upNYKJ-yQ#59U|<;X8-Cev|fey2LQ1eL~_a!Ub$~E1=xX zLp|1hFjn~K$~j}$IoFlbrpf$D`AHBJLF4n>r4sIfDu-t$q{;RHXW~KN;aC=D0aRzITkF-;bnr!P9Bu}o13pZ-xAeHxFy zQe!v(lfN&%M~J?wOep0jergl-kG+AR{JI}RWk4nQ5wIh(t304BwUrg`+4k^8!8Ff<*{uZg$cBJyqQBE?u&2jUVyRcbXZ z($ig4N2O|oNv>}ZzIXvB!6EAE|79hMW=?$Jxx~ku_>GuCOli#qIEDyTCW>Q<4*O|) z$%R@_LBDBa>}Z#vxw>Y)`` z;aMJ{QWo;@;noSd3DsNPG-hUM$6YT9(?bvRbSH{T(E4-yT@7WsEVs>hiW) z?Gl$L;vw(dhochXrgLB6p9kf_0%&JvF=n*SFI#T_i&mFT4G2HG;xtI;sLiwZn&3d2 z`oWzS);wIl=pK7=#e0kszro-$>g-M-NwP<-$GR3=B{)A&lHojcl2hs1ipuL=ae$eJ zZ8$SEhXa(>jvA&246f40d7qWAtW0k}7wQ%RZA{|ph6=&mEua3{3G*kTC;R48xcA1& zH0S$uzc*e# zc(MB=Iusa3Hc>Fz`okE6yfD zi+MEKu`pd*vNJ)E2v{ophAOwGoj#)!U(od7ytUuH8t}0T7TK%8dv$oUwnw$m8vAK7 zO`Q6hS;3ur&E@<};(kF&%SZT7mN51HQN)-yR!J!MQ^jSgU7^ zr|Y5_ix;BbT6Z?xd->bkkSnrbsOE0&XXZQ91z-Ae_8*m~lS;GYL*uY>vq(ti;Kfq9 zP(P$Y7=|Vv&{qC z7hobW%^gcVq5Z0Ud{ItV&V~7jiC(iG`jIXyN@=&pF()<_AdG2OQZmr}Ob~~kp1+@_ zcRqHqN{Hhv&T%P%;_011N?CS}!)cpUR5Y%)Z|vr|sB_x8?1>t6oE0A`s>ZXDYl5}< z%f9U0vzi&Vt)#D;(7cGJ@v(B6#&CtES3Y+R5ftsX@-*eb8AA*`6@KY%32-=dRZ90C z_;7*TiGLCgNetxqiJka3J0|4$xNG?ojzwNvai6J3Cm1szKg8KU4N8Xx*k0C#GYadZkxX<3-Mb;aF z`)?!59EL_Mtvo72FP4JTI5C*2k6UK3fdJ~YJsY;N&pC}zNJrGqP)IH~I1SU1V$)>y zd_6GNW_<6Z)-3NcuW<&WBT25%?ze9(#q9N%bC*{$60naFV=h+Sou25X(2ls*{N2i_ zrR%&Ik3dXK?;I;`Q@rD?wYw7k4)nTsnUCvi^?ZyD?-1txNf)7oIcVaciXX<#EPWl( zNO}qiB*5a@mND1PZ6OBE*v{<}v0s+VXk18x9h3aXfY^hS7VjUFc$AbKZL7tMgOAlS zW*&&9)kzqfU*Jx-Z_^HUck5w@?M?GE-~^op#IaoOyv2^rHh)xEtbVpQ-fKRUYk*Vh zXE(@29Si&&-CR(6wl6bVe^j8_Gtk(@&d;C26BTZ3LhKN_#T>aOru!0v$nBPSmXU^o36KCj@E`7?gZrj-zvg6rIx-LRI?Y;CSOtN*mJfl&#+mJ#e&3KPngOMjdz^y8HKa zHHk-(n;kNSX_BYT)>r0NJ<(WY7(?JhUpT4{Y&fIhRSr4+)j#($e%*@k__P$Grx}_c zw;pjaIyBzJ=>;#6GCz6+8Prx@zgmh1TAiEFiK0%VDmRSlf&%oFu~fH(6Bf0t-6;d1 zR2DV5CK4hAU4qb>su}QlRvqTmY0+mH@Jr7I^5e_h_!^O6sS=NsIjySDK7tg8mtSJ> z4$+BMo35#ircYZ>8w;v{n!RkvHMp~Uc*twpy2%5z$8w) zVz`GqZR+;%`r!sdB^GC^uA=S5jUbS*l{jeeZfyYc<4zY!@TJX59<{WnD4v)^1+|Mr$yK_b1E4+Sw?-W_Kc#(STq z>eMtZMKKd@W92TzCpGkR*MJ~t`bbIt*N-PvY-(QfMVJiTe~&zz2%$4CpjSOTnP$Dw zk~Zbor?sezNKt@OOm)~&d3gjl;X4y) z*1_(K#f%TxRz`jvTG(94Y;X#DHY1zOy|4U^l_=iV^<+{?JNqNWpN(a%#oIl^RD2@< z1F#Y)iiKTJtV8}RK4T;pz?RSZ8b+Q3h6KbrJ-gF{33p5hH#4Fh3QXu_q!Mo90#vai zjmW}vf%9*Tp5qgb;3OtNJld1x+q0hgAN-L+$m` zYUNb@$*_~!Nx;T7#*Q}tN_1vJbr(f*ppXDHFZc|s&joOEgJwi-(eqyjgG9@Z#+vEo-swUxY6Baw{@ z`ZKz|c!{y{ueu8^Gx&;xt)Cp%+TzuAGnDl)u8D-;3Dw5-qCgW#!N|32aQSfE`o)bf4!nVBWp`M#|Gccxf~S zd_9_?*^X4g$nlqcNY{VPY$}j=zx_J9nbeMW&D?r8nO3RkMotA2w?b`YrIJRYZk$Q% z+S;V$)bwn)QpGs%>HLxR-H=D4xj z-(Y$6VJE21n+!_pAf=51jZ?9)%Wa;1?T`w+r}%WmPHlq*T#Y6LVau+3=w{=Dl;#$j zt#f%!^>w;xxPe|zN@n@YaQ)Af|A)w|EadbhX>h&$_;)zEG zHb4*WoeAZg%s_(x$>OegM9~%;& zybRiy@?yr9EZ%tZls8@T;3WPy{bLui#M`VwzT}6QWV_dIpT^;i=PsYP{*3(>UgrKi z!VU+1(!C?zS_<-*k&KsAW_66>D_YOuiY1ZW&Aaf8U+n2DQJP+(6ig5c zKubhCT}NGbq9J^jF=N+B$22^P>F%o6Qpddo^RJ4?;z;CMq4VW|!Ut{}VPfLDSFQwK z(F;ZHc>%-(apjsXKUB^n<1OyD={IlAxN&uSs?}k{i~qQ3vj2G6M{z z*raAlv8J2ti%nAyI`7f`p%JI`>++z!AYIv{*bmZNiL<*QBGm^I)x7=8-@Nu@j?Q?h zib|!!l}nAuV|rLnHg0AK!+M1?zeq*_Ko&7J@In++o?YNvn%(wLrxdd4!jz(&V%0G1ozM!Rs`z0i(_SY^p9?3%gaV3v1W@N_&YZ{7I?kp2tD;`y@#onee26tXTRRHE1n0p{5No8x4AA;>>C($3 zo8Yfz%i~TD z<<&)3B?YS9Wo)X#$axE(ygU)9dZ*)-uFQLHq+@MtL8~h^ql&|@+CXEBSDr*BeX6Zw zU`w2D9zSG}h_tweSAN10mUtcuL9-V zJrC|K(au8_{o*FnUziv`^|?xTSq9KO3e>-iObniZkgjEfpfx?9hDN8L5+`#(bOj$< z8PYLhxL7&Wmz$6}uxNif5PnyKB-K%rXo!*@!K(zQ1?u6AOvCclH-@1=3of1I;6T<7 zJH?ZMKDuOmf8)oJLpXBcKEk@1cq{)~y&#t;3c*rmZw(U@Z!R09pJRJA77yl==+V|^ zwIk;v=OJM&=T~BZ3f)IP#_}I*`6ibP9Q{2PjeK;keX{Kbt*aiJhOYMTFs41QL6$6$ zP%kux@>S{HV}xq@h8@BuwLMbv3faU9PfB++ToE^vqP^=AD%=ylm1B(BJTPUn6mjJqZo0I74Za*sav z)=g!g9U<7zA;9Di?m#9`XwG97&5?6v67vLh*g8MFTU6`s)1@9G!rvvR3JL;aTW>^~x zd(xsq&u_;b-wc;!!WFo~iyrg1rz^E#4)uTo-KT z2N&Yh+X8RjIP-vB|Nb4oJBns2EYhV{{LbHJ{hH5=K&1D+vkO%pG+ffQ>wqmeHTNUH zU!3JD>LdAKAQ&Tj(vhcATrlBR%i7RFD2Ug0bYp!MNNtCZD1-`a9UD^r(kg61>ECip zhMkYJQWE<3N>~LiwDsF*3B?p|0C1tk0JLj28N5;iS1aJKtGtAHCFrKB11z^}RM8sz z{JGh{jtR!55}9RpZrir$&7}E2qz|Dk1OiznVLD4>n@VR4U!1v~`r{{(@Ez?cP&D)_-&V-+9(ARxFpI+3)`LZKP(T=70Wk z^9BWR31~xuX3v^u((gb@;Aj7(rWYjfY{uN_ak3&=qaADFzrf(ygWcV6n)~(iM+9co zmdKI;Vst0LU>9Gynhq literal 0 HcmV?d00001 diff --git a/mods/hudbars/textures/hbarmor_icon.png b/mods/hudbars/textures/hbarmor_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c6661388af2a39ed4a0b1b4a96f4135ab9169e79 GIT binary patch literal 2641 zcmV-X3a<5uP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1e^b_A=c{qHF55ClbZIDW2mXYhu9H(K3Eclsoq zypvifE0l%6W+TSU|NHN9|G`gSVHZVnDk*vV#1acvJY;`<%D$72`+k1{@D$5*LoL02LGmOI_htC=!r^WaKfciE+ZT7P-?c_wYaZ`v zOo(W@GHM6=79pDmB{A&J5-!EB;92)oaAjY82jm0!*Kl^iZrOwqPfRT9VSMe ztQeU)hb_xNxo|gNLbQt(Ybara49q%D2S8)syDhZWEqlFA87mLMR3<2+4fa1=?z@-2 zx!hVtHX@(zv4UM}c?~lRIlE&P0HJl^COg2l>w@2Z${(aE5R@I}3BLQ(W1dz~dnE6aGvLR=f`C?U07)FX=;|3XGfG|#CS#-zl z1G%?wbCTb}jekPU8Fc>!at_da#q9-ZqwdWyY}|~67E>R~?d4<9Qp9CTCrM6HDj4dO=*qM&bsi-4x0wR=$xK^1f;ZJ0? zj<$897$Zg~1r_tKehVgTbL?2;vKQu7!zewDW%ntq2bqKjA|a9f1;u`{oJ>SJ5mS$) z&q#BkEkTtCQINoeW9_-cIx2fJk4x^C^X~UyeLa3s)Jj^!DMadbd zgPqA^3u0|P%qB=jilrhck=fO?nY#u2Ie5Q~ojbA1_?V8{4a7W8*raW211uC8y|WBV zCO`7@_yTUA7E9U+T@q}XW0kN1tw~t?S>h#kTL4MX(37mWdRYZc0MvX)+$HkdlOa<# zEsA(uI^*gcWE1Fpl6Xp}QXm0Rv!kZ3=CFm&6cB@a6Maa0Lp~hae>B|PEWgF1cC6m2 z^xlO!8UoVLb&_a%_6*aF565d~ZRhjr@amHf-(Py}esKK_&jkc-VE-K0hmlM(7L-4Z z+J?|u^*~mHeR&BAm%46+L5kT7Qmw8PY1pPN+l;Uk)cqYgr_ZVNVsycZ_NHHM)U<)B)pQ82zBiedy#oD}W}uPgp!-YHSXOYzJ^hX*QGX+B^3SwC^D6-tmifcBk5r z!yV*ekjskHXNiNz?36&#Eun{4`l1ZZ2&hy3B59WTIDc&_e`sG<+KN}L$DY%K%JIy3>CdyY$+5(tpbbW>dxBH z@dpQs7b37w6;IqA-wBw926j%ghI3k1k8L1Wq4v#%YelstZlm|JbFW7CeiXhBg8PU9 zwl1XY40cC{0+QKQRHIV-H?($#r<3F-5ycbLkFdpY8+(VdO1XD9D~3(5!-3H6)BtxAUNs>9 z)lK&ykg2~1Wh$GIv&kT5! z2fAMLlmn$ORGedQF2P~j*W6I0eZo-;hg_!i&*kH-(f#HF zK&QEAk7#ylNHx$vh3aDeA#*WOFR0Ks#`QuYXHYy2oZlwe`vFvTx31`Q(aETu&eq>L zTRNRBG61^>1vE0KTZ*&fE@aD}vxx|L90ZN#VAgPKL!+I^j#7kAB95qF6gp;wqKva5 z0&Jj7f3QGRgf5wOM{c1fA&a7&#KuH*<)akG*8Ha!y%+3lQD`@d!nUZHMOLe6hbbdc z=Fd)Ic*HxqvYjH_K8*EQwLgU6N21Pgs=X!}>9GF~erRrT@*yE7|GD`8(wM&m`-L%o zsM*Juot?1q~8j=(jN5Qq=;KyRs!Nplu2UkH5`~Y!vaZ+@V691PJ zTEuv8+>dwn9(V5mp;2L))in-ix^1SD2{D^n6+^EGVGshM7?YW0%t=xTzT@j20lwbF zd6xgVKS!UMw-^u*iD#K%+Qb{g)0?)zd7n7KO0r6PPCRPT1&JTIu6X>$x#+UMGb3gu zJx?4V7K_14w3Vu2MI^!67hGr0jK{clUJm_V1Zie?NEqa;b9O-|hea01Qw} zR7C&)07r04!OhL+@bKXWlH33Q00DGTPE!Ct=GbNc0004EOGiWihy@);00009a7bBm z000XU000XU0RWnu7ytkO2XskIMF-~x7y=ssJ*^Fx0000iNklfos(Q28LA(5DWnTWNHkmDredD00000NkvXXu0mjf@}|`n literal 0 HcmV?d00001 diff --git a/mods/hudbars/textures/hbhunger_bar.png b/mods/hudbars/textures/hbhunger_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..c94bf528cffed7708a4150a498020dd3fbef492a GIT binary patch literal 80 zcmeAS@N?(olHy`uVBq!ia0vp^Oh7Ea!3HF4R;=3sq{Ka4978y+C)-Rs_hEh`5Ogwf cu}x!Suzkzq*Q+o09;k%D)78&qol`;+0I)9`=E{-7_*ONJTc~co4hc4t{!lvI6;x#X;^) z4C~IxyaaN10(?ST-3xqV_DTpA@pHJchcOijffSVl`2{mLJiCzwY;IuC-eziG;KOTu;J^nH=@qw(*gZbv hG6!jhf)`Pd79;w&XWe!*Y< zwz9Yht^Wt)TX?!ShHzX@{_+36{o(lbzdZ8cSBztNXPqrD&Ne!HGIX+}-`ZK{3Nk`1 p4lka1k*8kbwdB9%2mk*wBv?s2-Wb1N9ncI0Pgg&ebxuqPO#s#+Ic@*| delta 191 zcmV;w06_nl0nY)D7=Hu<0001_TS3$S001XYOjJeB=k=eX|3`34v()OhzWcby&D7xe zb&RZanaT0>`1}3-oyX{)vA|ixPbvTa019+cPE-4U0R569yHmYzi`XuA0000@NklM65CpVq4X6MB002ovPDHLkV1i?wPJI9X diff --git a/mods/hudbars/textures/hudbars_icon_health.png b/mods/hudbars/textures/hudbars_icon_health.png index f1c980f98c375640ffce0fbb77d787191b2651dc..d5302ec6fec6627d9de96544022d6fef7b64eb8b 100644 GIT binary patch delta 126 zcmZ3(*v~jYqMV7Dfq_9=dP@nA;tB8xadj{7dB)Dt#K`#D$K(6E<%fadj3q&S!3+-1 zZlnP@hMq2tAsp9}6BwA5En{OlcZP-S>S{rrSM`lQvRRtdCY%-B)zFxk#mszIYk?B) c1TQuQoZB@y5g;_6=DlfuBTnStRK2kR6jrr&m!w*@$VXQUMb z*=z@@VJr#q3ubV5b|VeQaq@I=4B@z*oY24|#xBOL@N~|j6s9K>@p3Mn~jI6_XY;CaNbvn%0m50k-U2~mcbQXCdSM{GHO#xZ!h`njxg HN@xNAkoPgI