From 5dfc7567c0a76af377291b59893f3d4a09dbdbba Mon Sep 17 00:00:00 2001 From: cale Date: Sat, 7 Jan 2017 10:13:24 +0100 Subject: [PATCH] updated npc mod --- mods/npcs/depends.txt | 1 + mods/npcs/init.lua | 38 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/mods/npcs/depends.txt b/mods/npcs/depends.txt index 01e8a73..0ba0507 100644 --- a/mods/npcs/depends.txt +++ b/mods/npcs/depends.txt @@ -1,2 +1,3 @@ default quests +dialogue diff --git a/mods/npcs/init.lua b/mods/npcs/init.lua index cb0f8bd..75c46eb 100644 --- a/mods/npcs/init.lua +++ b/mods/npcs/init.lua @@ -31,6 +31,23 @@ function npcs.register_npc(name, def) local name = player:get_player_name() quests.show_text(def.npc_text, name) end + elseif def.npc_type == "quests" then + def.on_rightclick = function(pos, node, player, itemstack, pt) + local d = dialogue.new(def.npc_text) + local my_quests = def.npc_get_quests(pos, player) + + + for i, q in ipairs(my_quests) do + print(q.title) + if not(quests.has_quest(player:get_player_name(), q.title)) then + d:add_option(q.title, function(name) + quests.add_quest(name, q) + end) + end + end + + d:show(player:get_player_name()) + end end minetest.register_node(name, def) @@ -38,12 +55,29 @@ end --TEST npcs.register_npc("npcs:farmer", { - npc_type = "text", + npc_type = "quests", npc_text = "Hi!", npc_quest_title = "Test", npc_get_quest = function(pos, player) local quest = quests.new(nil, "Test", "Test") - local goal_1 = quests.add_place_goal(quest, "Place dirt", {"default:dirt"}, 10, "Place some dirt!") + local goal_1 = quests.add_place_goal(quest, "Place dirt", {"default:dirt"}, 10, "Place some dirt blocks!") return quest end, + npc_get_quests = function(pos, player) + local my_quests = {} + + do + local quest = quests.new(nil, "Test 1", "Test 1") + local goal_1 = quests.add_place_goal(quest, "Place dirt", {"default:dirt"}, 10, "Place some dirt blocks!") + table.insert(my_quests, quest) + end + + do + local quest = quests.new(nil, "Test 2", "Test 2") + local goal_1 = quests.add_place_goal(quest, "Place stone", {"default:stone"}, 10, "Place some stone blocks!") + table.insert(my_quests, quest) + end + + return my_quests + end, })