You can no longer feed NPCs

This commit is contained in:
Wuzzy 2021-08-08 02:07:08 +02:00
parent c7e33f828f
commit 64d603ae0e
1 changed files with 24 additions and 67 deletions

View File

@ -22,31 +22,6 @@ local msgs = {
trade = { trade = {
S("If you want to trade, show me a trading book."), S("If you want to trade, show me a trading book."),
}, },
full_already = {
S("I don't want to eat anymore!"),
S("I'm not hungry!"),
S("I'm full already."),
S("I don't want food right now."),
},
eat_full = {
S("Ah, now I'm fully energized!"),
S("Thanks, now I'm filled up."),
S("Thank you, now I feel much better!"),
},
eat_normal = {
S("Munch-munch!"),
S("Yummies!"),
S("Yum-yum!"),
S("Chomp!"),
S("Thanks!"),
},
item_reject = {
S("I don't want this."),
},
hungry = {
S("I could use a snack."),
S("I'm a bit hungry."),
},
happy = { happy = {
S("Hello!"), S("Hello!"),
S("Nice to see you."), S("Nice to see you."),
@ -54,6 +29,12 @@ local msgs = {
S("I feel good."), S("I feel good."),
S("Have a nice day!"), S("Have a nice day!"),
}, },
exhausted = {
S("I'm not in a good mood."),
S("I'm tired."),
S("I need to rest."),
S("Life could be better."),
},
hurt = { hurt = {
S("I don't feel so good."), S("I don't feel so good."),
S("I ... I am hurt."), S("I ... I am hurt."),
@ -158,48 +139,8 @@ for _, npc_type_table in pairs(npc_types) do
achievements.trigger_achievement(clicker, "smalltalk") achievements.trigger_achievement(clicker, "smalltalk")
-- Feed to heal npc
local hp = self.object:get_hp() local hp = self.object:get_hp()
if minetest.get_item_group(iname, "food") > 0 and iname ~= "default:cactus" then do
-- Reject food that is not in this list
if iname ~= "mobs:meat" and iname ~= "mobs:pork"
and iname ~= "farming:bread" and iname ~= "default:apple"
and iname ~= "default:clam" then
say_random("item_reject", name)
return
end
-- return if full health
if hp >= self.hp_max then
say_random("full_already", name)
return
end
if iname == "default:apple" then
hp = hp + 1
elseif iname == "default:clam" then
hp = hp + 2
else
hp = hp + 4
end
if hp >= self.hp_max then
hp = self.hp_max
say_random("eat_full", name)
else
say_random("eat_normal", name)
end
self.object:set_hp(hp)
-- take item
if not minetest.settings:get_bool("creative_mode") then
item:take_item()
clicker:set_wielded_item(item)
end
-- Right clicking with trading book trades
-- Trading is done in the gold mod
else
-- No trading if low health -- No trading if low health
if hp < 5 then if hp < 5 then
say_random("hurt", name) say_random("hurt", name)
@ -235,6 +176,14 @@ for _, npc_type_table in pairs(npc_types) do
say(S("It's used to capture small animals."), name) say(S("It's used to capture small animals."), name)
elseif iname == "farming:wheat_1" then elseif iname == "farming:wheat_1" then
say(S("Every kid knows seeds need soil, water and sunlight."), name) say(S("Every kid knows seeds need soil, water and sunlight."), name)
elseif iname == "farming:wheat" then
if npc_type == "farmer" then
say(S("Sheep love to eat wheat. Give them enough wheat and they'll multiply!"), name)
else
say(S("We use wheat to make flour and bake bread."), name)
end
elseif iname == "farming:flour" then
say(S("Put it in a furnace to bake tasty bread."), name)
elseif iname == "farming:cotton_1" then elseif iname == "farming:cotton_1" then
if npc_type == "farmer" then if npc_type == "farmer" then
say(S("Did you know cotton seed not only grow on dirt, but also on sand? But it still needs water."), name) say(S("Did you know cotton seed not only grow on dirt, but also on sand? But it still needs water."), name)
@ -291,6 +240,14 @@ for _, npc_type_table in pairs(npc_types) do
else else
say(S("Sleeping makes the night go past in the blink of an eye."), name) say(S("Sleeping makes the night go past in the blink of an eye."), name)
end end
elseif iname == "default:apple" then
if npc_type == "farmer" then
say(S("Boars love to eat apples, too! If you feed enough of these to them, they will multiply."), name)
else
say(S("Apples are so tasty!"), name)
end
elseif minetest.get_item_group(iname, "food") > 0 then
say(S("Stay healthy!"), name)
else else
local r = math.random(1,3) local r = math.random(1,3)
if r == 1 then if r == 1 then
@ -302,7 +259,7 @@ for _, npc_type_table in pairs(npc_types) do
end end
end end
elseif hp >= 5 then elseif hp >= 5 then
say_random("hungry", name) say_random("exhausted", name)
else else
say_random("hurt", name) say_random("hurt", name)
end end