2023-03-12 09:32:02 -07:00
2023-04-23 15:54:42 -07:00
2023-04-20 15:02:05 -07:00
2023-03-12 09:32:02 -07:00
2023-03-12 09:32:02 -07:00
2023-04-13 15:22:55 -07:00
2023-05-25 09:03:24 -07:00
2023-04-12 11:58:42 -07:00
2023-03-23 10:24:39 -07:00
2023-04-20 15:02:05 -07:00
2023-04-12 11:58:42 -07:00
2023-04-16 18:19:44 -07:00
2023-05-25 09:03:24 -07:00
2023-03-12 09:32:02 -07:00
2023-04-20 15:02:05 -07:00

balanced_diet

api for specifying multiple dimensions to eating

comes w/ submodule balanced_nutrients which provides one possible usage, and balanced_overridese, which applies attributes to common food items

local speed_monoid = player_monoids.speed
local health_max_monoid = ...
local health_regen_monoid = ...
local stamina_max_monoid = ...
local stamina_regen_monoid = ...

balanced_diet.register_nutrient("fat", { -- raises maximum health, makes you slower
    apply_value = function(player, value)
        if value > 0 then
            health_max_monoid:add_change(player, value / 2, "balanced_nutrients:fat")
            speed_monoid:add_change(player, - value / 8, "balanced_nutrients:fat")
        else
            health_max_monoid:del_change(player, "balanced_nutrients:fat")
            speed_monoid:del_change(player, "balanced_nutrients:fat")
        end
    end,
})

balanced_diet.register_nutrient("protein", { -- raises health regeneration, makes you stronger
    apply_value = function(player, value)
        if value > 0 then
            health_regen_monoid:add_change(player, value / 2, "balanced_nutrients:protein")
            player_attributes.set_value(player, "strength", "balanced_nutrients:protein", value / 2)
        else
            health_regen_monoid:del_change(player, "balanced_nutrients:protein")
            player_attributes.set_value(player, "strength", "balanced_nutrients:protein")
        end
    end,
})

balanced_diet.register_nutrient("carbohydrate", { -- raises maximum stamina
    apply_value = function(player, value)
        if value > 0 then
            stamina_max_monoid:add_change(player, value / 2, "balanced_nutrients:carbohydrate")
        else
            stamina_max_monoid:del_change(player, "balanced_nutrients:carbohydrate")
        end
    end,
})
balanced_diet.register_nutrient("vitamin", {  -- rises stamina regeneration
    apply_value = function(player, value)
        if value > 0 then
            stamina_regen_monoid:add_change(player, value / 2, "balanced_nutrients:vitamin")
        else
            stamina_regen_monoid:del_change(player, "balanced_nutrients:vitamin")
        end
    end,
})
balanced_diet.register_nutrient("raw_meat", { -- poison for regular players, raises stamina/stamina regen for werewolves
    on_eat = function(player, value)
        if not petz.is_werewolf(player) then
            poison(player, value)  -- TODO: how would this be implemented?
        end
    end,
    apply_value = function(player, value)
        if value > 0 and petz.is_werewolf(player) then
            stamina_max_monoid:add_change(player, value / 2, "balanced_nutrients:raw_meat")
            stamina_regen_monoid:add_change(player, value / 2, "balanced_nutrients:raw_meat")
        else
            stamina_max_monoid:del_change(player, "balanced_nutrients:raw_meat")
            stamina_regen_monoid:del_change(player, "balanced_nutrients:raw_meat")
        end
    end,
})

balanced_diet.register_food("default:apple", {
    saturation = 2,
    duration = 300,
    nutrients = {
        carbohydrate = 2,
        vitamin = 2,
    }
})

balanced_diet.register_food("mobs:meat_raw", {
    saturation = 3,
    duration = 600,
    nutrients = {
        fat = 2,
        protein = 4,
        raw_meat = 4,
    }
})

balanced_diet.register_food("mobs:meat", {
    saturation = 4,
    duration = 1200,
    nutrients = {
        fat = 2,
        protein = 6,
    }
})

balanced_diet.register_food("bbq:bacon_cheeseburger", {
    saturation = 8,
    duration = 1200,
    nutrients = {
        fat = 6,
        protein = 6,
        carbohydrate = 2,
        vitamin = 4,
    }
})

media sources

Description
No description provided
Readme 504 KiB
Languages
Lua 100%