From a1ebb9363e31ad449377a5794f1bf93d84e25bc8 Mon Sep 17 00:00:00 2001 From: Bardur Arantsson Date: Sun, 4 Mar 2012 15:53:46 +0100 Subject: Import Theme repository into main repository --- lib/mods/theme/core/quests.lua | 57 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 lib/mods/theme/core/quests.lua (limited to 'lib/mods/theme/core/quests.lua') diff --git a/lib/mods/theme/core/quests.lua b/lib/mods/theme/core/quests.lua new file mode 100644 index 00000000..dfe9db51 --- /dev/null +++ b/lib/mods/theme/core/quests.lua @@ -0,0 +1,57 @@ +-- Quest helper files + +-- Quest structs + +__quest_hook = {} +__quest_callbacks = {} +__quest_callbacks_max = 0 +__quest_dynamic_desc = {} + +function add_quest(q) + local i, index, d, z, qq + + assert(q.global, "No quest global name") + assert(q.name, "No quest name") + assert(q.desc, "No quest desc") + assert(q.level, "No quest level") + assert(q.hooks, "No quest hooks") + + i = new_quest(q.name); + setglobal(q.global, i) + + -- Make it save & load + add_loadsave("quest("..q.global..").status", QUEST_STATUS_UNTAKEN) + + if type(q.desc) == "table" then + z = 0 + for index, d in q.desc do + quest_desc(i, z, d); + z = z + 1 + end + else + __quest_dynamic_desc[i] = q.desc + quest(i).dynamic_desc = TRUE + end + quest(i).level = q.level + if not q.silent then + quest(i).silent = FALSE + else + quest(i).silent = q.silent + end + __quest_hook[i] = q.hooks + for index, d in q.hooks do + add_hook_script(index, "__lua__quest_callback"..__quest_callbacks_max, "__lua__quest_callback"..__quest_callbacks_max) + setglobal("__lua__quest_callback"..__quest_callbacks_max, d) + __quest_callbacks_max = __quest_callbacks_max + 1 + end + if q.data then + for index, d in q.data do + -- Besure it exists + setglobal(index, d) + + -- Make it save & load + add_loadsave(index, d) + end + end + return i +end -- cgit v1.2.3