mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-12-23 00:19:32 +01:00
Added food poisoning and saturation effects
This commit is contained in:
parent
fce73ab2bf
commit
007500613a
3 changed files with 59 additions and 14 deletions
|
@ -525,6 +525,50 @@ mcl_potions.register_effect({
|
|||
timer_uses_factor = true,
|
||||
})
|
||||
|
||||
mcl_potions.register_effect({
|
||||
name = "food_poisoning",
|
||||
description = S("Food Poisoning"),
|
||||
get_tt = function(factor)
|
||||
return S("exhausts by @1 per second", factor)
|
||||
end,
|
||||
res_condition = function(object)
|
||||
return (not object:is_player())
|
||||
end,
|
||||
on_start = function(object, factor)
|
||||
hb.change_hudbar(object, "hunger", nil, nil, "mcl_hunger_icon_foodpoison.png", nil, "mcl_hunger_bar_foodpoison.png")
|
||||
if mcl_hunger.debug then
|
||||
hb.change_hudbar(object, "exhaustion", nil, nil, nil, nil, "mcl_hunger_bar_foodpoison.png")
|
||||
end
|
||||
end,
|
||||
on_step = function(dtime, object, factor, duration)
|
||||
mcl_hunger.exhaust(object:get_player_name(), dtime*factor)
|
||||
end,
|
||||
on_end = function(object)
|
||||
mcl_hunger.reset_bars_poison_hunger(object)
|
||||
end,
|
||||
particle_color = "#83A061",
|
||||
uses_factor = true,
|
||||
lvl1_factor = 100,
|
||||
lvl2_factor = 200,
|
||||
})
|
||||
|
||||
mcl_potions.register_effect({
|
||||
name = "saturation",
|
||||
description = S("Saturation"),
|
||||
get_tt = function(factor)
|
||||
return S("saturates by @1 per second", factor)
|
||||
end,
|
||||
res_condition = function(object)
|
||||
return (not object:is_player())
|
||||
end,
|
||||
on_step = function(dtime, object, factor, duration)
|
||||
mcl_hunger.set_hunger(object, math.min(mcl_hunger.get_hunger(object)+dtime*factor, 20))
|
||||
mcl_hunger.saturate(object:get_player_name(), dtime*factor)
|
||||
end,
|
||||
particle_color = "#CEAE29",
|
||||
uses_factor = true,
|
||||
})
|
||||
|
||||
|
||||
-- ██╗░░░██╗██████╗░██████╗░░█████╗░████████╗███████╗
|
||||
-- ██║░░░██║██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝██╔════╝
|
||||
|
@ -841,6 +885,14 @@ function mcl_potions.player_get_effect(player, effect_name)
|
|||
return EF[effect_name][player]
|
||||
end
|
||||
|
||||
function mcl_potions.player_get_effect_level(player, effect_name)
|
||||
if not EF[effect_name] then return end
|
||||
local effect = EF[effect_name][player]
|
||||
if not effect then return 0 end
|
||||
if not registered_effects[effect_name].uses_factor then return 1 end
|
||||
return registered_effects[effect_name].factor_to_level(effect.factor)
|
||||
end
|
||||
|
||||
function mcl_potions.player_clear_effect(player,effect)
|
||||
EF[effect][player] = nil
|
||||
potions_set_hud(player)
|
||||
|
|
|
@ -99,7 +99,7 @@ function mcl_hunger.reset_bars_poison_hunger(player)
|
|||
end
|
||||
end
|
||||
|
||||
-- Poison player
|
||||
-- Poison player TODO remove this function
|
||||
local function poisonp(tick, time, time_left, damage, exhaustion, name)
|
||||
if not mcl_hunger.active then
|
||||
return
|
||||
|
@ -186,15 +186,8 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso
|
|||
do_poison = true
|
||||
end
|
||||
if do_poison then
|
||||
-- Set food poison bars
|
||||
if exhaust and exhaust > 0 then
|
||||
hb.change_hudbar(user, "hunger", nil, nil, "mcl_hunger_icon_foodpoison.png", nil, "mcl_hunger_bar_foodpoison.png")
|
||||
if mcl_hunger.debug then
|
||||
hb.change_hudbar(user, "exhaustion", nil, nil, nil, nil, "mcl_hunger_bar_foodpoison.png")
|
||||
end
|
||||
mcl_hunger.poison_hunger[name] = mcl_hunger.poison_hunger[name] + 1
|
||||
end
|
||||
poisonp(1, poisontime, 0, poison, exhaust, user:get_player_name())
|
||||
local level = mcl_potions.player_get_effect_level(user, "food_poisoning")
|
||||
mcl_potions.give_effect_by_level("food_poisoning", user, level+exhaust, poisontime)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
-- Apply food poisoning effect as long there are no real status effect.
|
||||
-- TODO: Remove this when food poisoning a status effect in mcl_potions.
|
||||
-- TODO: Sanitize this now that Food Poisoning is now an effect in mcl_potions
|
||||
-- Normal poison damage is set to 0 because it's handled elsewhere.
|
||||
|
||||
mcl_hunger.register_food("mcl_mobitems:rotten_flesh", 4, "", 30, 0, 100, 80)
|
||||
mcl_hunger.register_food("mcl_mobitems:chicken", 2, "", 30, 0, 100, 30)
|
||||
mcl_hunger.register_food("mcl_fishing:pufferfish_raw", 1, "", 15, 0, 300)
|
||||
mcl_hunger.register_food("mcl_mobitems:rotten_flesh", 4, "", 30, 0, 1, 80)
|
||||
mcl_hunger.register_food("mcl_mobitems:chicken", 2, "", 30, 0, 1, 30)
|
||||
mcl_hunger.register_food("mcl_fishing:pufferfish_raw", 1, "", 15, 0, 3)
|
||||
|
|
Loading…
Reference in a new issue