Use item meta to store effect information #1
|
@ -1,5 +0,0 @@
|
|||
mcl_core
|
||||
mcl_mushrooms
|
||||
mcl_flowers
|
||||
mcl_potions
|
||||
mcl_hunger
|
192
init.lua
192
init.lua
|
@ -4,129 +4,127 @@
|
|||
|
||||
local eat = minetest.item_eat(6, "mcl_core:bowl") --6 hunger points, player receives mcl_core:bowl after eating
|
||||
|
||||
local flower_effect = {
|
||||
[ "mcl_flowers:tulip_white" ] = "poison",
|
||||
[ "mcl_flowers:blue_orchid" ] = "hunger",
|
||||
[ "mcl_flowers:dandelion" ] = "hunger",
|
||||
[ "mcl_flowers:peony" ] = "jump",
|
||||
[ "mcl_flowers:oxeye_daisy" ] = "regeneration",
|
||||
[ "mcl_flowers:poppy" ] = "night_vision"
|
||||
}
|
||||
|
||||
local effects = {
|
||||
[ "poison" ] = function(itemstack, placer, pointed_thing)
|
||||
mcl_potions.poison_func(placer, 1, 12)
|
||||
return eat(itemstack, placer, pointed_thing)
|
||||
end,
|
||||
|
||||
local function poison(itemstack, placer, pointed_thing)
|
||||
local hunger = mcl_hunger.get_hunger(placer)
|
||||
if hunger < 20 then
|
||||
mcl_potions.poison_func(placer, 1, 12)
|
||||
return eat(itemstack, placer, pointed_thing)
|
||||
end
|
||||
[ "hunger" ] = function(itemstack, placer, pointed_thing, player)
|
||||
mcl_hunger.item_eat(6, "mcl_core:bowl", 3.5, 0, 100)
|
||||
return eat(itemstack, placer, pointed_thing)
|
||||
end,
|
||||
|
||||
["jump"] = function(itemstack, placer, pointed_thing)
|
||||
mcl_potions.leaping_func(placer, 1, 6)
|
||||
return eat(itemstack, placer, pointed_thing)
|
||||
end,
|
||||
|
||||
["regeneration"] = function(itemstack, placer, pointed_thing)
|
||||
mcl_potions.regeneration_func(placer, 1, 8)
|
||||
return eat(itemstack, placer, pointed_thing)
|
||||
end,
|
||||
|
||||
["night_vision"] = function(itemstack, placer, pointed_thing)
|
||||
mcl_potions.night_vision_func(placer, 1, 5)
|
||||
return eat(itemstack, placer, pointed_thing)
|
||||
end,
|
||||
}
|
||||
local function get_random_effect()
|
||||
local keys = {}
|
||||
for k in pairs(effects) do
|
||||
table.insert(keys, k)
|
||||
end
|
||||
return effects[keys[math.random(#keys)]]
|
||||
end
|
||||
|
||||
local function hunger(itemstack, placer, pointed_thing, player)
|
||||
local hunger = mcl_hunger.get_hunger(placer)
|
||||
if hunger < 20 then
|
||||
return eat(itemstack, placer, pointed_thing)
|
||||
end
|
||||
local function eat_stew(itemstack, placer, pointed_thing)
|
||||
local e = itemstack:get_meta():get_string("effect")
|
||||
local f = effects[e]
|
||||
if not f then
|
||||
f = get_random_effect()
|
||||
end
|
||||
if f(itemstack,placer,pointed_thing) then
|
||||
return "mcl_core:bowl"
|
||||
end
|
||||
end
|
||||
|
||||
local function jump_boost(itemstack, placer, pointed_thing)
|
||||
local hunger = mcl_hunger.get_hunger(placer)
|
||||
if hunger < 20 then
|
||||
mcl_potions.leaping_func(placer, 1, 6)
|
||||
return eat(itemstack, placer, pointed_thing)
|
||||
end
|
||||
end
|
||||
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
|
||||
if itemstack:get_name() ~= "mcl_sus_stew:stew" then return end
|
||||
for f,e in pairs(flower_effect) do
|
||||
for _,it in pairs(old_craft_grid) do
|
||||
if it:get_name() == f then
|
||||
itemstack:get_meta():set_string("effect",e)
|
||||
return itemstack
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
local function regeneration(itemstack, placer, pointed_thing)
|
||||
local hunger = mcl_hunger.get_hunger(placer)
|
||||
if hunger < 20 then
|
||||
mcl_potions.regeneration_func(placer, 1, 8)
|
||||
return eat(itemstack, placer, pointed_thing)
|
||||
end
|
||||
end
|
||||
|
||||
local function night_vision(itemstack, placer, pointed_thing)
|
||||
local hunger = mcl_hunger.get_hunger(placer)
|
||||
if hunger < 20 then
|
||||
mcl_potions.night_vision_func(placer, 1, 5)
|
||||
return eat(itemstack, placer, pointed_thing)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- ________________________
|
||||
--_________________________________________/ Item Regestration \_________________
|
||||
minetest.register_craftitem("mcl_sus_stew:poison_stew",{
|
||||
description = "Suspicious Stew",
|
||||
inventory_image = "sus_stew.png",
|
||||
stack_max = 1,
|
||||
on_place = poison,
|
||||
groups = { food = 2, eatable = 4, not_in_creative_inventory=1,},
|
||||
_mcl_saturation = 7.2,
|
||||
-- ________________________
|
||||
--_________________________________________/ Item Regestration \_________________
|
||||
minetest.register_craftitem("mcl_sus_stew:stew",{
|
||||
description = "Suspicious Stew",
|
||||
inventory_image = "sus_stew.png",
|
||||
stack_max = 1,
|
||||
on_place = eat_stew,
|
||||
groups = { food = 2, eatable = 4, can_eat_when_full = 1, not_in_creative_inventory=1,},
|
||||
_mcl_saturation = 7.2,
|
||||
})
|
||||
|
||||
minetest.register_craftitem("mcl_sus_stew:hunger_stew",{
|
||||
description = "Suspicious Stew",
|
||||
inventory_image = "sus_stew.png",
|
||||
stack_max = 1,
|
||||
on_place = hunger,
|
||||
groups = { food = 2, eatable = 4, not_in_creative_inventory=1,},
|
||||
_mcl_saturation = 7.2,
|
||||
})
|
||||
mcl_hunger.register_food("mcl_sus_stew:stew",6, "mcl_core:bowl")
|
||||
|
||||
minetest.register_craftitem("mcl_sus_stew:jump_boost_stew",{
|
||||
description = "Suspicious Stew",
|
||||
inventory_image = "sus_stew.png",
|
||||
stack_max = 1,
|
||||
on_place = jump_boost,
|
||||
groups = { food = 2, eatable = 4, not_in_creative_inventory=1,},
|
||||
_mcl_saturation = 7.2,
|
||||
})
|
||||
--compat with old (mcl5) sus_stew
|
||||
minetest.register_alias("mcl_sus_stew:poison_stew", "mcl_sus_stew:stew")
|
||||
minetest.register_alias("mcl_sus_stew:hunger_stew", "mcl_sus_stew:stew")
|
||||
minetest.register_alias("mcl_sus_stew:jump_boost_stew", "mcl_sus_stew:stew")
|
||||
minetest.register_alias("mcl_sus_stew:regneration_stew", "mcl_sus_stew:stew")
|
||||
minetest.register_alias("mcl_sus_stew:night_vision_stew", "mcl_sus_stew:stew")
|
||||
|
||||
minetest.register_craftitem("mcl_sus_stew:regneration_stew",{
|
||||
description = "Suspicious Stew",
|
||||
inventory_image = "sus_stew.png",
|
||||
stack_max = 1,
|
||||
on_place = regeneration,
|
||||
groups = { food = 2, eatable = 4, not_in_creative_inventory=1,},
|
||||
_mcl_saturation = 7.2,
|
||||
})
|
||||
|
||||
minetest.register_craftitem("mcl_sus_stew:night_vision_stew",{
|
||||
description = "Suspicious Stew",
|
||||
inventory_image = "sus_stew.png",
|
||||
stack_max = 1,
|
||||
on_place = night_vision,
|
||||
groups = { food = 2, eatable = 4, not_in_creative_inventory=1,},
|
||||
_mcl_saturation = 7.2,
|
||||
})
|
||||
|
||||
-- ____________________________
|
||||
--______________________________________/ Using mcl_hunger API \______________________
|
||||
mcl_hunger.register_food("mcl_sus_stew:hunger_stew",6, "mcl_core:bowl", 3.5, 0, 100) -- Register it using mcl_hunger so i can use its poison feature
|
||||
|
||||
|
||||
-- ______________
|
||||
--_________________________________________/ Crafts \________________________________
|
||||
-- ______________
|
||||
--_________________________________________/ Crafts \________________________________
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mcl_sus_stew:poison_stew",
|
||||
recipe = { {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"}, {"mcl_core:bowl", "mcl_flowers:tulip_white"} },
|
||||
type = "shapeless",
|
||||
output = "mcl_sus_stew:stew",
|
||||
recipe = {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown", "mcl_core:bowl", "mcl_flowers:tulip_white"},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mcl_sus_stew:hunger_stew",
|
||||
recipe = { {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"}, {"mcl_core:bowl", "mcl_flowers:blue_orchid"} },
|
||||
type = "shapeless",
|
||||
output = "mcl_sus_stew:stew",
|
||||
recipe = {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown", "mcl_core:bowl", "mcl_flowers:blue_orchid"},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mcl_sus_stew:hunger_stew",
|
||||
recipe = { {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"}, {"mcl_core:bowl", "mcl_flowers:dandelion"} },
|
||||
type = "shapeless",
|
||||
output = "mcl_sus_stew:stew",
|
||||
recipe = {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown", "mcl_core:bowl", "mcl_flowers:dandelion"} ,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mcl_sus_stew:jump_boost_stew",
|
||||
recipe = { {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"}, {"mcl_core:bowl", "mcl_flowers:peony"} },
|
||||
type = "shapeless",
|
||||
output = "mcl_sus_stew:stew",
|
||||
recipe = {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown", "mcl_core:bowl", "mcl_flowers:peony"},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mcl_sus_stew:regeneration_stew",
|
||||
recipe = { {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"}, {"mcl_core:bowl", "mcl_flowers:oxeye_daisy"} },
|
||||
type = "shapeless",
|
||||
output = "mcl_sus_stew:stew",
|
||||
recipe = {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown", "mcl_core:bowl", "mcl_flowers:oxeye_daisy"},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mcl_sus_stew:night_vision_stew",
|
||||
recipe = { {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"}, {"mcl_core:bowl", "mcl_flowers:poppy"} },
|
||||
type = "shapeless",
|
||||
output = "mcl_sus_stew:stew",
|
||||
recipe = {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown", "mcl_core:bowl", "mcl_flowers:poppy"},
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue