diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..6d815d14 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "mods/quests"] + path = mods/quests + url = https://github.com/MinetestForFun/quests.git diff --git a/mods/quests b/mods/quests new file mode 160000 index 00000000..90bc0e3a --- /dev/null +++ b/mods/quests @@ -0,0 +1 @@ +Subproject commit 90bc0e3ad75f24b16ad886da61bfda67b4fabbb2 diff --git a/mods/quests/README b/mods/quests/README deleted file mode 100755 index d9ba3c7d..00000000 --- a/mods/quests/README +++ /dev/null @@ -1,82 +0,0 @@ -quests 1.1 - -quests is a simple quest framework for minetest that lets you define your own quests and handels the representation. - -Dependencies: -intllib (optional) -unified_inventory or inventory_plus (optional) -central_message (optional) - -License: WTFPL -Sounds: CC-BY -Textures: CC-BY - -------------------------------------------------------------------------------- - -You can see a full list of your active quests with the chatcommand /quests - -API: -quests.register_quest(questname,quest) --- registers a quest for later use --- --- questname is the name of the quest to identify it later --- it should follow the naming conventions: "modname:questname" --- quest is a table in the following format --- { --- title, -- is shown to the player and should contain usefull information about the quest. --- description, -- a small description of the mod. --- max, -- is the desired maximum. If max is 1, no maximum is displayed. defaults to 1 --- autoaccept, -- is true or false, wether the result of the quest should be dealt by this mode or the registering mod. --- callback -- when autoaccept is true, at the end of the quest, it gets removed and callback is called. --- -- function(playername, questname, metadata) --- } --- --- returns true, when the quest was successfully registered --- returns falls, when there was already such a quest - -quests.start_quest(playername, questname) --- starts a quest for a specified player --- --- playername - the name of the player --- questname - the name of the quest, which was registered with quests.register_quest --- metadata - optional additional data --- --- returns false on failure --- returns true if the quest was started - -quests.update_quest(playername, questname, value) --- when something happens that has effect on a quest, a mod should call this method --- playername is the name of the player --- questname is the quest which gets updated --- the quest gets updated by value --- this method calls a previously specified callback if autoaccept is true --- returns true if the quest is finished --- returns false if there is no such quest or the quest continues - -quests.accept_quest(playername, questname) --- When the mod handels the end of quests himself, e.g. you have to talk to somebody to finish the quest, --- you have to call this method to end a quest --- returns true, when the quest is completed --- returns false, when the quest is still ongoing - -quests.abort_quest(playername, questname) --- call this method, when you want to end a quest even when it was not finished --- example: the player failed --- --- returns false if the quest was not aborted --- returns true when the quest was aborted - -quests.show_hud(playername) --- shows the hud to player playername - -quests.hide_hud(playername) --- hides the hud for player playername - -quests.show_formspec(playername) --- shows the player playername his/her questlog - -quests.get_metadata(playername, questname) --- get metadata of the quest if the quest exists, else return nil - -quests.set_metadata(playername, questname, metadata) --- set metadata of the quest diff --git a/mods/quests/central_message.lua b/mods/quests/central_message.lua deleted file mode 100755 index 6a5f1bb9..00000000 --- a/mods/quests/central_message.lua +++ /dev/null @@ -1,12 +0,0 @@ -if rawget(_G, "cmsg") then - function quests.show_message(t, playername, text) - if (quests.hud[playername].central_message_enabled) then - local player = minetest.get_player_by_name(playername) - cmsg.push_message_player(player, text, quests.colors[t]) - minetest.sound_play("quests_" .. t, {to_player = playername}) - end - end -else - function quests.show_message(...) - end -end diff --git a/mods/quests/core.lua b/mods/quests/core.lua deleted file mode 100755 index 441f7c41..00000000 --- a/mods/quests/core.lua +++ /dev/null @@ -1,621 +0,0 @@ ---- Quests core. --- @module core - --- Boilerplate to support localized strings if intllib mod is installed. -local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - -- If you don't use insertions (@1, @2, etc) you can use this: - S = function(s) return s end -end -local empty_callback = function(...) end - -local function compute_tasks(playername, questname, nocallback) - local quest = quests.registered_quests[questname] - local plr_quest = quests.active_quests[playername][questname] - for taskname, task in pairs(quest.tasks) do - local plr_task = plr_quest[taskname] - if task.requires == nil then - plr_task.visible = true - else - plr_task.visible = false - local was_visible = task.visible - local final_enabler = "" - for _, enabler_name in ipairs(task.requires) do - if type(enabler_name) == "table" then - plr_task.visible = true - for _, subena_name in ipairs(plr_quest[enabler_name]) do - local plr_subena = plr_task[subena_name] - if plr_task.visible and plr_subena and (not plr_subena.visible or not plr_subena.finished) then - plr_task.visible = false - end - end - else - if plr_quest[enabler_name] then - plr_task.visible = plr_quest[enabler_name].finished or false - else - plr_task.visible = true - end - end - if plr_task.visible then - final_enabler = enabler_name - break - end - end - if plr_task.visible and not was_visible and not nocallback then - task.availablecallback(playername, questname, taskname, final_enabler, quest.metadata) - end - end - if task.disables_on ~= nil then - local was_disabled = task.disabled - local final_disabler = "" - for _, disabler_name in ipairs(task.disables_on) do - if type(disabler) == "table" then - plr_task.disabled = true - for _, subdis_name in ipairs(disabler) do - local plr_subdis = plr_quest[subdis_name] - if not plr_task.disabled and plr_subdis.visible and plr_subdis.finished then - plr_task.disabled = true - end - end - else - plr_task.disabled = plr_quest[disabler_name].finished - end - if plr_task.disabled then - final_disabler = disabler_name - break - end - end - if plr_task.disabled and not was_disabled and not nocallback then - task.disablecallback(playername, questname, taskname, final_disabler, quest.metadata) - end - end - end -end - ---- Registers a quest for later use. --- There are two types of quests: simple and tasked. --- --- * Simple quests are made of a single objective --- * Taked quests are made of tasks, allowing simultaneous progress --- within the quest as well as branching quest objectives --- --- Both quest types are defined by a table, and they share common information: --- { --- title, -- Self-explanatory. Should describe the objective for simple quests. --- description, -- Description/lore of the quest --- icon, -- Texture name of the quest's icon. If missing, a default icon is used. --- startcallback, -- Called upon quest start. function(playername, questname, metadata) --- autoaccept, -- If true, quest automatically becomes completed if its progress reaches the max. --- -- Defaults to true. --- completecallback, -- If autoaccept is true, gets called at quest completion. --- -- function(playername, questname, metadata) --- abortcallback, -- Called when a player cancels the quest. function(playername, questname, metadata) --- repeating -- Delay in seconds before the quest becomes available again. If nil, 0 or false, doesn't restart. --- } --- --- In addition, simple quests have a number-type `max` element indicating the max progress of the quest. --- As for tasked quests, they have a table-type `tasks` element which value is like this: --- tasks = { --- start = { --- title, --- description, --- icon, --- max -- Max task progress --- }, --- another_task = { --- [...], --- --- requires = {"start"}, --- -- Table of task names which one must be completed for this task to unlock. --- -- To to task completion groups (i.e. where ALL must be compileted), pass said names in a (sub)table. --- --- availablecallback, --- -- Called when the task becomes available. Not called when there are no task requirements (i.e. task is available from the start). --- -- function(playername, questname, taskname, enablingtaskname, metadata) --- -- enablingtaskname is a string or a table of strings, depending on the condition that unlocked the task --- --- completecallback, --- -- Called upon task completion. --- -- function(playername, questname, taskname, metadata) --- } --- something = { --- [...], --- requires = {"start"}, --- --- disables_on = {"another_task"}, --- -- Same as `requires`, but *disables* the task (it then does not count towards quest completion) --- --- disablecallback, --- -- Called when the task becomes disabled. Not called when the task is disabled upon quest start. --- -- function(playername, questname, taskname, disablingtaskname, metadata) --- -- disablingtaskname is a string or a table of strings, depending on the condition that locked the task --- } --- } --- In this previous example the 2 last tasks enables once the `start` one is completed, and the --- last one disables upon `another_task` completion, effectively making it optional if one --- completes `another_task` before it. --- Some task names are reserved and will be ignored: --- --- * `metadata` --- * `finished` --- * `value` --- --- Note: this function *copies* the `quest` table, keeping only what's needed. This way you can implement custom --- quest attributes in your mod and register the quest directly without worrying about keyvalue name collision. --- @param questname Name of the quest. Should follow the naming conventions: `modname:questname` --- @param quest Quest definition `table` --- @return `true` when the quest was successfully registered --- @return `false` when there was already such a quest, or if mandatory info was omitted/corrupt -function quests.register_quest(questname, quest) - if quests.registered_quests[questname] ~= nil then - return false -- The quest was not registered since there's already a quest with that name - end - quests.registered_quests[questname] = { - title = quest.title or S("missing title"), - description = quest.description or S("missing description"), - icon = quest.icon or "quests_default_quest_icon.png", - startcallback = quest.startcallback or empty_callback, - autoaccept = not(quest.autoaccept == false), - completecallback = quest.completecallback or empty_callback, - abortcallback = quest.abortcallback or empty_callback, - repeating = quest.repeating or 0 - } - local new_quest = quests.registered_quests[questname] - if quest.max ~= nil then -- Simple quest - new_quest.max = quest.max or 1 - new_quest.simple = true - else - if quest.tasks == nil or type(quest.tasks) ~= "table" then - quests.registered_quests[questname] = nil - return false - end - new_quest.tasks = {} - local tcount = 0 - for tname, task in pairs(quest.tasks) do - if tname ~= "metadata" and tname ~= "finished" and tname ~= "value" then - new_quest.tasks[tname] = { - title = task.title or S("missing title"), - description = task.description or S("missing description"), - icon = task.icon or "quests_default_quest_icon.png", - max = task.max or 1, - requires = task.requires, - availablecallback = task.availablecallback or empty_callback, - disables_on = task.disables_on, - disablecallback = task.disablecallback or empty_callback, - completecallback = task.completecallback or empty_callback - } - tcount = tcount + 1 - end - end - if tcount == 0 then -- No tasks! - quests.registered_quests[questname] = nil - return false - end - end - return true -end - ---- Starts a quest for a specified player. --- @param playername Name of the player --- @param questname Name of the quest, which was registered with @{quests.register_quest} --- @param metadata Optional additional data --- @return `false` on failure --- @return `true` if the quest was started -function quests.start_quest(playername, questname, metadata) - local quest = quests.registered_quests[questname] - if quest == nil then - return false - end - if quests.active_quests[playername] == nil then - quests.active_quests[playername] = {} - end - if quests.active_quests[playername][questname] ~= nil then - return false -- the player already has this quest - end - if quest.simple then - quests.active_quests[playername][questname] = {value = 0, metadata = metadata, finished = false} - else - quests.active_quests[playername][questname] = {metadata = metadata} - for tname, task in pairs(quest.tasks) do - quests.active_quests[playername][questname][tname] = { - value = 0, - visible = false, - disabled = false, - finished = false - } - end - compute_tasks(playername, questname) - end - - quests.update_hud(playername) - quests.show_message("new", playername, S("New quest:") .. " " .. quest.title) - return true -end - -local function check_active_quest(playername, questname) - return not( - playername == nil or - questname == nil or - quests.registered_quests[questname] == nil or -- Quest doesn't exist - quests.active_quests[playername] == nil or -- Player has no data - quests.active_quests[playername][questname] == nil -- Quest isn't active - ) -end -local function check_active_quest_task(playername, questname, taskname) - return not( - taskname == nil or - not check_active_quest(playername, questname) or - quests.registered_quests[questname].simple or -- Quest is simple (i.e. no tasks) - quests.registered_quests[questname].tasks == nil or -- Who knows? Avoid crash. - quests.registered_quests[questname].tasks[taskname] == nil or -- No such task - quests.active_quests[playername][questname][taskname] == nil -- Player quest data has no such task - ) -end - ---- Updates a *simple* quest's status. --- Calls the quest's `completecallback` if autoaccept is `true` and the quest reaches its max value. --- Has no effect on tasked quests. --- @param playername Name of the player --- @param questname Quest which gets updated --- @param value Value to add to the quest's progress (can be negative) --- @return `true` if the quest is finished --- @return `false` if the quest continues --- @return `nil` if there is no such quest, it is a tasked or non-active one, or no value was given --- @see quests.update_quest_task -function quests.update_quest(playername, questname, value) - if not check_active_quest(playername, questname) or not quests.registered_quests[questname].simple - or value == nil then - return nil - end - local plr_quest = quests.active_quests[playername][questname] - if plr_quest.finished then - return true -- The quest is already finished - end - local quest = quests.registered_quests[questname] - plr_quest.value = plr_quest.value + value - if plr_quest.value >= quest.max then - plr_quest.value = quest.max - if quest.autoaccept then - quest.completecallback(playername, questname, plr_quest.metadata) - quests.accept_quest(playername,questname) - quests.update_hud(playername) - end - return true -- the quest is finished - end - quests.update_hud(playername) - return false -- the quest continues -end - ---- Get a *simple* quest's progress. --- @param playername Name of the player --- @param questname Quest to get the progress value from --- @return `number` of the progress --- @return `nil` if there is no such quest, it is a tasked or non-active one --- @see quests.get_task_progress -function quests.get_quest_progress(playername, questname) - if not check_active_quest(playername, questname) or not quests.registered_quests[questname].simple then - return nil - end - local plr_quest = quests.active_quests[playername][questname] - if plr_quest.finished then - return nil - end - return plr_quest.value -end - ---- Updates a *tasked* quest task's status. --- Calls the quest's `completecallback` if autoaccept is `true` and all the quest's visible --- and non-disabled tasks reaches their max value. --- Also calls the task's `completecallback` it it gets completed. --- Has no effect on simple quests. --- @param playername Name of the player --- @param questname Quest which gets updated --- @param taskname Task to update --- @param value Value to add to the task's progress (can be negative) --- @return `true` if the task is finished --- @return `false` if it continues --- @return `nil` if there is no such quest/task, is a simple or non-active quest, or no value was given --- @see quests.update_quest -function quests.update_quest_task(playername, questname, taskname, value) - if not check_active_quest_task(playername, questname, taskname) or value == nil then - return nil - end - local plr_quest = quests.active_quests[playername][questname] - local plr_task = plr_quest[taskname] - if plr_task.finished then - return true -- The task is already finished - end - - local quest = quests.registered_quests[questname] - local task = quest.tasks[taskname] - local task_finished = false - plr_task.value = plr_task.value + value - if plr_task.value >= task.max then - plr_task.value = task.max - plr_task.finished = true - task.completecallback(playername, questname, taskname, quest.metadata) - task_finished = true - end - - compute_tasks(playername, questname) - -- Check for quest completion - local all_tasks_finished = true - for taskname, task in pairs(quest.tasks) do - local plr_task = plr_quest[taskname] - if plr_task.visible and not plr_task.disabled and not plr_task.finished then - all_tasks_finished = false - end - end - if all_tasks_finished then - if quest.autoaccept then - quest.completecallback(playername, questname, plr_quest.metadata) - quests.accept_quest(playername,questname) - quests.update_hud(playername) - end - -- If the update of this task ends the quest, it consequently *is* finished. - return true - end - quests.update_hud(playername) - return task_finished -end - ---- Get a task's progress. --- Returns the max progress value possible for the given task if it is complete. --- @param playername Name of the player --- @param questname Quest the task belongs to --- @param taskname Task to get the progress value from --- @return `number` of the progress --- @return `false` if the task has been disabled by another --- @return `nil` if there is no such quest/task, or is a simple or non-active quest --- @see quests.get_quest_progress -function quests.get_task_progress(playername, questname, taskname) - if not not check_active_quest_task(playername, questname, taskname) then - return nil - end - local plr_quest = quests.active_quests[playername][questname] - if plr_quest.finished then - return nil - end - local plr_task = plr_quest[taskname] - if not plr_task then - return nil - end - if plr_task.disabled then - return false - end - return plr_task.value -end - ---- Checks if a quest's task is visible to the player. --- @param playername Name of the player --- @param questname Quest which contains the task --- @param taskname Task to check visibility --- @return `true` if the task is visible --- @return `false` if it is not --- @return `nil` if the quest/task doesn't exist, is simple or isn't active -function quests.is_task_visible(playername, questname, taskname) - if not check_active_quest_task(playername, questname, taskname) then - return nil - end - return quests.active_quests[playername][questname][taskname].visible -end - ---- Checks if a quest's task is disabled to the player. --- @param playername Name of the player --- @param questname Quest which contains the task --- @param taskname Task to check if it is disabled --- @return `true` if the task is disabled --- @return `false` if it is not --- @return `nil` if the quest/task doesn't exist, is simple or isn't active -function quests.is_task_disabled(playername, questname, taskname) - if not check_active_quest_task(playername, questname, taskname) then - return nil - end - return quests.active_quests[playername][questname][taskname].disabled -end - ---- Gets the number of active (visible & non-disabled) tasks, and how many of them are completed --- @param playername Name of the player --- @param questname Quest name --- @return `number, number` pair, where the first is the number of active tasks, and the second how many of them are completed --- @return `nil` if the quest doesn't exist, is simple or isn't active -function quests.get_active_tasks_stats(playername, questname) - if not check_active_quest(playername, questname) or quests.registered_quests[questname].simple then - return nil - end - local plr_quest = quests.active_quests[playername][questname] - local active_tasks = 0 - local completed_active = 0 - for taskname, _ in pairs(quests.registered_quests[questname].tasks) do - local plr_task = plr_quest[taskname] - if plr_task.visible and not plr_task.disabled then - active_tasks = active_tasks + 1 - if plr_task.finished then - completed_active = completed_active + 1 - end - end - end - return active_tasks, completed_active -end - ---- Gets number of seconds before a quest can be done again. --- @param playername Player's name --- @param questname Quest name --- @return `number` of seconds before quests becomes available --- @return `nil` if the quest isn't repeating -function quests.quest_restarting_in(playername, questname) - if quests.info_quests[playername] and - quests.info_quests[playername][questname] and - quests.info_quests[playername][questname].restart_tstamp then - return quests.info_quests[playername][questname].restart_tstamp - os.time() - end - return nil -end - -local function restart_periodic_quest(playername, questname) - quests.start_quest(playername, questname) - if quests.info_quests[playername] and quests.info_quests[playername][questname] then - quests.info_quests[playername][questname].restart_tstamp = nil - end -end - -local function start_repeating_timer(playername, questname) - local delay = quests.quest_restarting_in(playername, questname) - if delay ~= nil then - minetest.after(delay, restart_periodic_quest, playername, questname) - end -end - -local function start_all_repeating_timers(playername) - local qinfos = quests.info_quests[playername] - if qinfos then - for questname, qinfo in pairs(qinfos) do - if qinfo.restart_tstamp then - start_repeating_timer(playername, questname) - end - end - end -end - --- Restart all stopped repeating quests' timers -for playername, _ in pairs(quests.info_quests) do - start_all_repeating_timers(playername) -end - -local function handle_quest_end(playername, questname) - local quest = quests.registered_quests[questname] - if quest.repeating ~= 0 then - quests.info_quests[playername] = quests.info_quests[playername] or {} - quests.info_quests[playername][questname] = quests.info_quests[playername][questname] or {} - local qinfo = quests.info_quests[playername][questname] - qinfo.restart_tstamp = os.time() + quest.repeating - start_repeating_timer(playername, questname) - end -end - ---- Confirms quest completion and ends it. --- When the mod handles the end of quests himself, e.g. you have to talk to somebody to finish the quest, --- you have to call this method to end a quest --- @param playername Player's name --- @param questname Quest name --- @return `true` when the quest is completed --- @return `false` when an error occured (the quest is still ongoing if it was) -function quests.accept_quest(playername, questname) - if check_active_quest(playername, questname) and not quests.active_quests[playername][questname].finished then - if quests.successfull_quests[playername] == nil then - quests.successfull_quests[playername] = {} - end - if quests.successfull_quests[playername][questname] ~= nil then - quests.successfull_quests[playername][questname].count = quests.successfull_quests[playername][questname].count + 1 - else - quests.successfull_quests[playername][questname] = {count = 1} - end - quests.active_quests[playername][questname].finished = true - for _,quest in ipairs(quests.hud[playername].list) do - if quest.name == questname then - local player = minetest.get_player_by_name(playername) - player:hud_change(quest.id, "number", quests.colors.success) - end - end - handle_quest_end(playername, questname) - quests.show_message("success", playername, S("Quest completed:") .. " " .. quests.registered_quests[questname].title) - minetest.after(3, function(playername, questname) - quests.active_quests[playername][questname] = nil - quests.update_hud(playername) - end, playername, questname) - return true -- the quest is finished, the mod can give a reward - end - return false -- the quest hasn't finished -end - ---- Aborts a quest. --- Call this method when you want to end a quest even when it was not finished. --- Example: the player failed. --- @param playername Player's name --- @param questname Quest name --- @return `true` when the quest was aborted --- @return `false` if there was an error (quest not aborted) -function quests.abort_quest(playername, questname) - if not check_active_quest(playername, questname) then - return false - end - if quests.failed_quests[playername] == nil then - quests.failed_quests[playername] = {} - end - if quests.failed_quests[playername][questname] ~= nil then - quests.failed_quests[playername][questname].count = quests.failed_quests[playername][questname].count + 1 - else - quests.failed_quests[playername][questname] = { count = 1 } - end - - quests.active_quests[playername][questname].finished = true - for _,quest in ipairs(quests.hud[playername].list) do - if quest.name == questname then - local player = minetest.get_player_by_name(playername) - player:hud_change(quest.id, "number", quests.colors.failed) - end - end - - local quest = quests.registered_quests[questname] - quest.abortcallback(playername, questname, quests.active_quests[playername][questname].metadata) - handle_quest_end(playername, questname) - quests.show_message("failed", playername, S("Quest failed:") .. " " .. quest.title) - minetest.after(3, function(playername, questname) - quests.active_quests[playername][questname] = nil - quests.update_hud(playername) - end, playername, questname) - return true -end - ---- Set quest HUD visibility. --- @param playername Player's name --- @param questname Quest name --- @param visible `bool` indicating if the quest should be visible --- @see quests.get_quest_hud_visibility -function quests.set_quest_hud_visibility(playername, questname, visible) - if not check_active_quest(playername, questname) then - return - end - quests.info_quests[playername] = quests.info_quests[playername] or {} - quests.info_quests[playername][questname] = quests.info_quests[playername][questname] or {} - quests.info_quests[playername][questname].hide_from_hud = not visible - quests.update_hud(playername) -end - ---- Get quest HUD visibility. --- @param playername Player's name --- @param questname Quest name --- @return `bool`: quest HUD visibility --- @see quests.set_quest_hud_visibility -function quests.get_quest_hud_visibility(playername, questname) - if not check_active_quest(playername, questname) then - return false - end - local plr_qinfos = quests.info_quests[playername] - return not(plr_qinfos and plr_qinfos[questname] and plr_qinfos[questname].hide_from_hud) -end - ---- Get quest metadata. --- @return Metadata of the quest, `nil` if there is none --- @return `nil, false` if the quest doesn't exist or isn't active --- @see quests.set_metadata -function quests.get_metadata(playername, questname) - if not check_active_quest(playername, questname) then - return nil, false - end - return quests.active_quests[playername][questname].metadata -end - ---- Set quest metadata. --- @return `false` if the quest doesn't exist or isn't active --- @return `nil` otherwise --- @see quests.get_metadata -function quests.set_metadata(playername, questname, metadata) - if not check_active_quest(playername, questname) then - return false - end - quests.active_quests[playername][questname].metadata = metadata -end - diff --git a/mods/quests/depends.txt b/mods/quests/depends.txt deleted file mode 100755 index 0650d900..00000000 --- a/mods/quests/depends.txt +++ /dev/null @@ -1,4 +0,0 @@ -intllib? -unified_inventory? -inventory_plus? -central_message? diff --git a/mods/quests/formspecs.lua b/mods/quests/formspecs.lua deleted file mode 100755 index ae3ef7c4..00000000 --- a/mods/quests/formspecs.lua +++ /dev/null @@ -1,387 +0,0 @@ --- Boilerplate to support localized strings if intllib mod is installed. -local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - -- If you don't use insertions (@1, @2, etc) you can use this: - S = function(s) return s end -end - --- construct the questlog -function quests.create_formspec(playername, tab, integrated) - local queststringlist = {} - local questlist = {} - quests.formspec_lists[playername] = quests.formspec_lists[playername] or { - id = 1 - } - quests.formspec_lists[playername].list = {} - tab = tab or quests.formspec_lists[playername].tab or "1" - if tab == "1" then - questlist = quests.active_quests[playername] or {} - elseif tab == "2" then - questlist = quests.successfull_quests[playername] or {} - elseif tab == "3" then - questlist = quests.failed_quests[playername] or {} - end - quests.formspec_lists[playername].tab = tab - - local quest_count = 0 - for questname,questspecs in quests.sorted_pairs(questlist) do - if not questspecs.finished then - local quest = quests.registered_quests[questname] - if quest then -- Quest might have been deleted - local queststring = quest.title - if questspecs.count then - if questspecs.count > 1 then - queststring = queststring .. " - " .. questspecs.count - end - local restart_remaining = quests.quest_restarting_in(playername, questname) - if restart_remaining ~= nil then - queststring = queststring .. " (" .. S("restarts in %ds"):format(restart_remaining) .. ")" - end - elseif not questspecs.count and quest.max ~= 1 then - if quest.simple then - queststring = queststring .. " (" .. quests.round(questspecs.value, 2) .. "/" .. quest.max .. ")" - else - local active_tasks, active_completed = quests.get_active_tasks_stats(playername, questname) - if active_tasks and active_completed then - queststring = queststring .. " (" .. S("%d/%d tasks done"):format(active_completed, active_tasks) .. ")" - else - -- Kind of an error - queststring = queststring .. " (...)" - end - end - end - table.insert(queststringlist, queststring) - table.insert(quests.formspec_lists[playername].list, questname) - quest_count = quest_count + 1 - end - end - end - if quest_count ~= 0 and quests.formspec_lists[playername].id > quest_count then - quests.formspec_lists[playername].id = quest_count - end - local formspec = "" - if not integrated then - formspec = formspec .. "size[7,9]" - end - formspec = formspec .. "tabheader[0,0;quests_header;" .. S("Open quests") .. "," .. S("Finished quests") .. "," .. S("Failed quests") .. ";" .. tab .. "]" - if quest_count == 0 then - formspec = formspec .. "label[0.25,0.25;" .. S("There are no quests in this category.") .. "]" - else - formspec = formspec .. "textlist[0.25,0.25;6.5,6;quests_questlist;"..table.concat(queststringlist, ",") .. ";" .. tostring(quests.formspec_lists[playername].id) .. ";false]" - end - if quests.formspec_lists[playername].tab == "1" then - local hud_display = "true" - if quests.formspec_lists[playername].id then - local questname = quests.formspec_lists[playername].list[quests.formspec_lists[playername].id] - if not quests.get_quest_hud_visibility(playername, questname) then - hud_display = "false" - end - end - formspec = formspec .."button[0.25,7.1;3,.7;quests_abort;" .. S("Abort quest") .. "]" .. - "checkbox[.25,6.2;quests_show_quest_in_hud;" .. S("Show in HUD") .. ";" .. hud_display .. "]" - end - formspec = formspec .. "button[3.75,7.1;3,.7;quests_config;" .. S("Configure") .. "]".. - "button[.25,8;3,.7;quests_info;" .. S("Info") .. "]".. - "button_exit[3.75,8;3,.7;quests_exit;" .. S("Exit") .. "]" - return formspec -end - --- construct the configuration -function quests.create_config(playername, integrated) - local formspec = "" - if (not integrated) then - formspec = formspec .. "size[7,3]" - end - formspec = formspec .. "checkbox[.25,.25;quests_config_enable;" .. S("Enable HUD") .. ";" - if(quests.hud[playername] ~= nil and quests.hud[playername].list ~= nil) then - formspec = formspec .. "true" - else - formspec = formspec .. "false" - end - formspec = formspec .. "]checkbox[.25,.75;quests_config_autohide;" .. S("Autohide HUD") .. ";" - if(quests.hud[playername] ~= nil and quests.hud[playername].autohide) then - formspec = formspec .. "true" - else - formspec = formspec .. "false" - end - formspec = formspec .. "]checkbox[.25,1.25;quests_config_central_message;" .. S("Central messages") .. ";" - if(quests.hud[playername] ~= nil and quests.hud[playername].central_message_enabled) then - formspec = formspec .. "true" - else - formspec = formspec .. "false" - end - formspec = formspec .. "]" .. - "button[.25,2.25;3,.7;quests_config_return;" .. S("Return") .. "]" - return formspec -end - -local function wordwrap(text, linelength) - local lines = text:split("\n") - local ret = "" - for i = 1,#lines do - local line = lines[i] - while (#line > linelength) do - local split = false - local j = linelength - while (not split) do - if (string.sub(line, j, j) == " ") then - split = true - ret = ret .. string.sub(line, 1, j) .. "\n" - line = string.sub(line, j + 1) - end - if (j <= 1) then - break - end - j = j - 1 - end - if (not split) then - ret = ret .. string.sub(line, 1, linelength) .. "\n" - line = string.sub(line, linelength); - end - end - ret = ret .. line .. "\n" - end - return ret -end - --- construct the info formspec -function quests.create_info(playername, questname, taskid, integrated) - local formspec = "" - if not integrated then - formspec = formspec .. "size[7.5,9]" - end - - if questname then - local restart_remaining = quests.quest_restarting_in(playername, questname) - local quest = quests.registered_quests[questname] - formspec = formspec .. "image[0,0;0.8,0.8;" .. quest.icon .. "]" - if restart_remaining ~= nil then - formspec = formspec .. "label[0.8,0;" .. quest.title .. "]" .. - "label[0.8,0.3;" .. S("%ds seconds remaining"):format(restart_remaining) .. "]" - else - formspec = formspec .. "label[0.8,0.1;" .. quest.title .. "]" - end - - if quest.simple then - formspec = formspec .. "textarea[.4,1;7.2,7;_;;" .. minetest.formspec_escape(quest.description) .. "]" - else - quests.formspec_lists[playername].taskid = nil - local taskidlist = {} - local taskstringlist = {} - for taskname, task in pairs(quest.tasks) do - local plr_task = nil - if quests.active_quests[playername] and quests.active_quests[playername][questname] then - plr_task = quests.active_quests[playername][questname][taskname] - end - if not plr_task or (plr_task and plr_task.visible) then - -- not plr_task => quest is finished, display all tasks - table.insert(taskidlist, taskname) - local color = "" - local suffix = "" - if plr_task then - if plr_task.finished then - color = "#00BB00" - end - if plr_task.disabled then - color = "#AAAAAA" - end - suffix = " - " .. quests.round(plr_task.value, 2) .. "/" .. task.max - end - table.insert(taskstringlist, color .. task.title .. suffix) - end - end - local task = false - if taskid ~= nil then - task = quest.tasks[taskidlist[taskid]] - end - task = task or {title=S("No task selected"), description=""} - formspec = formspec .. "textarea[.4,1;7.2,2;_;;" .. minetest.formspec_escape(quest.description) .. "]" .. - "textlist[0.1,2.9;7,2;quest_info_tasklist;" .. table.concat(taskstringlist, ",") .. "]" .. - "label[0.8,5.2;" .. task.title .. "]" .. - "textarea[.4,6;7.2,2;__;;" .. minetest.formspec_escape(task.description) .. "]" - if task.icon then - formspec = formspec .. "image[0,5.1;0.8,0.8;" .. task.icon .. "]" - end - end - - if quests.formspec_lists[playername].tab == "1" then - formspec = formspec .. "button[3.6,8;3,.7;quests_info_abort;" .. S("Abort quest") .. "]" - end - else - formspec = formspec .. "label[0.8,0.1;" .. S("No quest specified.") .. "]" - end - formspec = formspec .. "button[.4,8;3,.7;quests_info_return;" .. S("Return") .. "]" - return formspec -end - --- show the player playername his/her questlog -function quests.show_formspec(playername) - minetest.show_formspec(playername, "quests:questlog", quests.create_formspec(playername)) -end - --- chatcommand to see a full list of quests: -minetest.register_chatcommand("quests", { - params = "", - description = S("Show all open quests"), - func = function(name, param) - minetest.show_formspec(name, "quests:questlog", quests.create_formspec(name)) - return true - end -}) - --- Handle the return fields of the questlog -minetest.register_on_player_receive_fields(function(player, formname, fields) - if player == nil then - return - end - local playername = player:get_player_name() - if playername == "" then - return - end - --- questlog - if fields.quests_header then - if formname == "quests:questlog" then - minetest.show_formspec(playername, "quests:questlog", quests.create_formspec(playername, fields.quests_header)) - else - if fields.quests_header == "1" then - unified_inventory.set_inventory_formspec(player, "quests") - elseif fields.quests_header == "2" then - unified_inventory.set_inventory_formspec(player, "quests_successfull") - return - else - unified_inventory.set_inventory_formspec(player, "quests_failed") - return - end - end - return - end - if fields.quests_questlist then - local event = minetest.explode_textlist_event(fields.quests_questlist) - if event.type == "CHG" then - quests.formspec_lists[playername].id = event.index - if formname == "quests:questlog" then - minetest.show_formspec(playername, "quests:questlog", quests.create_formspec(playername)) - else - unified_inventory.set_inventory_formspec(player, "quests") - end - end - end - if fields.quests_abort then - if quests.formspec_lists[playername].id == nil then - return - end - quests.abort_quest(playername, quests.formspec_lists[playername].list[quests.formspec_lists[playername].id]) - if formname == "quests:questlog" then - minetest.show_formspec(playername, "quests:questlog", quests.create_formspec(playername)) - else - unified_inventory.set_inventory_formspec(player, "quests") - end - end - if fields.quests_config then - if formname == "quests:questlog" then - minetest.show_formspec(playername, "quests:config", quests.create_config(playername)) - else - unified_inventory.set_inventory_formspec(player, "quests_config") - end - end - if fields.quests_info then - if formname == "quests:questlog" then - minetest.show_formspec(playername, "quests:info", quests.create_info(playername, quests.formspec_lists[playername].list[quests.formspec_lists[playername].id], nil, false)) - else - unified_inventory.set_inventory_formspec(player, "quests_info") - end - end - if fields.quests_show_quest_in_hud ~= nil then - local questname = quests.formspec_lists[playername].list[quests.formspec_lists[playername].id] - if questname then - quests.set_quest_hud_visibility(playername, questname, fields.quests_show_quest_in_hud == "true") - if formname == "quests:questlog" then - minetest.show_formspec(playername, "quests:questlog", quests.create_formspec(playername)) - else - unified_inventory.set_inventory_formspec(player, "quests") - end - end - end - --- config - if (fields["quests_config_enable"]) then - quests.hud[playername].autohide = false - if (fields["quests_config_enable"] == "true") then - quests.show_hud(playername) - else - quests.hide_hud(playername) - end - if (formname == "quests:config") then - minetest.show_formspec(playername, "quests:config", quests.create_config(playername)) - else - unified_inventory.set_inventory_formspec(player, "quests_config") - end - end - if (fields["quests_config_autohide"]) then - if (fields["quests_config_autohide"] == "true") then - quests.hud[playername].autohide = true - quests.update_hud(playername) - else - quests.hud[playername].autohide = false - end - if (formname == "quests:config") then - minetest.show_formspec(playername, "quests:config", quests.create_config(playername)) - else - unified_inventory.set_inventory_formspec(player, "quests_config") - end - end - if (fields["quests_config_central_message"]) then - if (fields["quests_config_central_message"] == "true") then - quests.hud[playername].central_message_enabled = true - else - quests.hud[playername].central_message_enabled = false - end - if (formname == "quests:config") then - minetest.show_formspec(playername, "quests:config", quests.create_config(playername)) - else - unified_inventory.set_inventory_formspec(player, "quests_config") - end - end - - if (fields["quests_config_return"]) then - if (formname == "quests:config") then - minetest.show_formspec(playername, "quests:questlog", quests.create_formspec(playername)) - else - unified_inventory.set_inventory_formspec(player, "quests") - end - end - --- info - if fields.quest_info_tasklist then - local event = minetest.explode_textlist_event(fields.quest_info_tasklist) - if event.type == "CHG" then - if formname == "quests:info" then - minetest.show_formspec(playername, "quests:info", quests.create_info(playername, quests.formspec_lists[playername].list[quests.formspec_lists[playername].id], event.index, false)) - else - quests.formspec_lists[playername].taskid = event.index - unified_inventory.set_inventory_formspec(player, "quests_info") - end - end - end - if fields.quests_info_abort then - if quests.formspec_lists[playername].id == nil then - return - end - quests.abort_quest(playername, quests.formspec_lists[playername].list[quests.formspec_lists[playername].id]) - if formname == "quests:info" then - minetest.show_formspec(playername, "quests:questlog", quests.create_formspec(playername)) - else - unified_inventory.set_inventory_formspec(player, "quests") - end - end - if fields.quests_info_return then - if formname == "quests:info" then - minetest.show_formspec(playername, "quests:questlog", quests.create_formspec(playername)) - else - unified_inventory.set_inventory_formspec(player, "quests") - end - end -end) diff --git a/mods/quests/hud.lua b/mods/quests/hud.lua deleted file mode 100755 index b1f28798..00000000 --- a/mods/quests/hud.lua +++ /dev/null @@ -1,304 +0,0 @@ ---- Quests HUD. --- @module hud - --- Boilerplate to support localized strings if intllib mod is installed. -local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - -- If you don't use insertions (@1, @2, etc) you can use this: - S = function(s) return s end -end - -local show_max = 10 -- the maximum visible quests. - -local hud_config = { position = {x = 1, y = 0.2}, - offset = { x = -200, y = 0}, - number = quests.colors.new } - ---- Show quests HUD to player. --- The HUD can only show up to `show_max` quests --- @param playername Player whose quests HUD must be shown --- @param autohide Whether to automatically hide the HUD once it's empty -function quests.show_hud(playername, autohide) - if quests.hud[playername] == nil then - quests.hud[playername] = { autohide = autohide } - end - if quests.hud[playername].list ~= nil then - return - end - local player = minetest.get_player_by_name(playername) - if player == nil then - return false - end - quests.hud[playername].header = player:hud_add({ - hud_elem_type = "text", - alignment = {x=1, y=1}, - position = {x = hud_config.position.x, y = hud_config.position.y}, - offset = {x = hud_config.offset.x, y = hud_config.offset.y - 20}, - number = hud_config.number, - text = S("Quests:") - }) - - quests.hud[playername].list = {} - minetest.after(0, quests.update_hud, playername) -end - ---- Hide quests HUD to player. --- @param playername Player whose quests HUD must be hidden -function quests.hide_hud(playername) - local player = minetest.get_player_by_name(playername) - if player == nil or quests.hud[playername] == nil or quests.hud[playername].list == nil then - return - end - for _,quest in pairs(quests.hud[playername].list) do - player:hud_remove(quest.id) - if (quest.id_background ~= nil) then - player:hud_remove(quest.id_background) - end - if (quest.id_bar ~= nil) then - player:hud_remove(quest.id_bar) - end - end - quests.hud[playername].list = nil -end - - -local function get_quest_hud_string(title, value, max) - return title .. "\n ("..quests.round(value, 2).."/"..max..")" -end - -local function get_hud_list(playername) - local deftable = {} - local counter = 0 - for questname, plr_quest in quests.sorted_pairs(quests.active_quests[playername]) do - local quest = quests.registered_quests[questname] - local hide_from_hud - if quests.info_quests[playername] and quests.info_quests[playername][questname] then - hide_from_hud = quests.info_quests[playername][questname].hide_from_hud - else - hide_from_hud = false - end - if quest and not hide_from_hud then -- Quest might have been deleted - local function get_table(name, value, max) - local def = { - text = { - hud_elem_type = "text", - alignment = { x=1, y= 1 }, - position = {x = hud_config.position.x, y = hud_config.position.y}, - offset = {x = hud_config.offset.x, y = hud_config.offset.y + counter * 40}, - number = hud_config.number, - text = name - } - } - if plr_quest.finished then - if quests.failed_quests[playername] and quests.failed_quests[playername][questname] then - def.text.number = quests.colors.failed - else - def.text.number = quests.colors.success - end - else - def.text.number = hud_config.number - end - if value and max then - def.bar = { - hud_elem_type = "image", - scale = { x = math.floor(20 * value / max), y = 1 }, - alignment = { x = 1, y = 1 }, - position = { x = hud_config.position.x, y = hud_config.position.y }, - offset = { x = hud_config.offset.x + 2, y = hud_config.offset.y + counter * 40 + 24 }, - text = "quests_questbar.png" - } - def.background = { - hud_elem_type = "image", - scale = { x = 1, y = 1 }, - size = { x = 2, y = 4 }, - alignment = { x = 1, y = 1 }, - position = { x = hud_config.position.x, y = hud_config.position.y }, - offset = { x = hud_config.offset.x, y = hud_config.offset.y + counter * 40 + 22 }, - text = "quests_questbar_background.png" - } - end - return def - end - if quest.simple then - deftable[questname] = get_table(get_quest_hud_string(quest.title, plr_quest.value, quest.max), plr_quest.value, quest.max) - counter = counter + 1 - else - deftable[questname] = get_table(quest.title, plr_quest.value, quest.max) - counter = counter + 0.5 - for taskname, task in pairs(quest.tasks) do - local plr_task = quests.active_quests[playername][questname][taskname] - if plr_task.visible and not plr_task.disabled and not plr_task.finished then - deftable[questname .. "#" .. taskname] = get_table("- " .. get_quest_hud_string(task.title, plr_task.value, task.max), plr_task.value, task.max) - counter = counter + 1 - if counter >= show_max + 1 then - break - end - end - end - counter = counter + 0.1 - end - if counter >= show_max + 1 then - break - end - end - end - return deftable -end - -local DELETED = {} --- only for internal use --- updates the hud -function quests.update_hud(playername) - if quests.hud[playername] == nil or quests.active_quests[playername] == nil then - return - end - if quests.hud[playername].list == nil then - if quests.hud[playername].autohide and next(quests.active_quests[playername]) ~= nil then - quests.show_hud(playername) - end - return - end - local player = minetest.get_player_by_name(playername) - if player == nil then - return - end - - if quests.hud[playername].autohide then - if next(quests.active_quests[playername]) == nil then - player:hud_change(quests.hud[playername].header, "text", S("No more Quests")) - minetest.after(3, function(playername) - if next(quests.active_quests[playername]) ~= nil then - player:hud_change(quests.hud[playername].header, "text", S("Quests:")) - quests.update_hud(playername) - else - quests.hide_hud(playername) - end - end, playername) - end - end - - -- Check for changes in the hud - local function table_diff(tab1, tab2) - local result_tab - for k, v in pairs(tab2) do - if not tab1[k] or tab1[k] ~= v then - if type(tab1[k]) == "table" and type(v) == "table" then - local diff = table_diff(tab1[k], v) - if diff ~= nil then - if not result_tab then - result_tab = {} - end - result_tab[k] = diff - end - else - if not result_tab then - result_tab = {} - end - result_tab[k] = v - end - end - end - for k, _ in pairs(tab1) do - if tab2[k] == nil then - if not result_tab then - result_tab = {} - end - result_tab[k] = DELETED - end - end - return result_tab - end - -- Merge `from` into table `into` - local function table_merge(from, into) - for k, v in pairs(from) do - if type(v) == "table" and type(into[k]) == "table" then - table_merge(v, into[k]) - else - into[k] = v - end - end - end - local old_hud = quests.hud[playername].list - local new_hud = get_hud_list(playername) - local diff = table_diff(old_hud, new_hud) - -- Copy the HUD IDs from the old table to the new one, to avoid loosing them - for questname, hud_elms in pairs(old_hud) do - for elm_name, elm_def in pairs(hud_elms) do - if new_hud[questname] and new_hud[questname][elm_name] then - new_hud[questname][elm_name].id = elm_def.id - end - end - end - if diff ~= nil then - for questname, hud_elms in pairs(diff) do - if hud_elms == DELETED then - for elm_name, elm_def in pairs(old_hud[questname]) do - player:hud_remove(elm_def.id) - end - else - for elm_name, elm_def in pairs(hud_elms) do - if not old_hud[questname] or not old_hud[questname][elm_name] or not old_hud[questname][elm_name].id then - new_hud[questname][elm_name].id = player:hud_add(elm_def) - else - for elm_prop_name, elm_prop in pairs(elm_def) do - if elm_prop_name ~= "id" then - if type(elm_prop) == "table" then - -- For table-based properties, MT expects a full table to be specified, - -- so we must create a merged table. Just merge the changes with the old - -- HUD table, since it will disappear. - table_merge(elm_prop, old_hud[questname][elm_name][elm_prop_name]) - else - old_hud[questname][elm_name][elm_prop_name] = elm_prop - end - player:hud_change(new_hud[questname][elm_name].id, elm_prop_name, old_hud[questname][elm_name][elm_prop_name]) - end - end - end - end - end - end - end - quests.hud[playername].list = new_hud -end - - - --- show the HUDs ---for playername,id in pairs(quests.hud) do --- if (id ~= nil) then --- quests.hud[playername] = nil --- minetest.after(10, function(playername) --- quests.show_hud(playername) --- quests.update_hud(playername) --- end, playername) --- end ---end - -minetest.register_on_joinplayer(function(player) - local playername = player:get_player_name() - if (quests.hud[playername] ~= nil) then - if (not(quests.hud[playername].first)) then - return - end - local list = quests.hud[playername].list - local autohide = quests.hud[playername].autohide - local central_message_enabled = quests.hud[playername].central_message_enabled - quests.hud[playername] = { - autohide = autohide, - central_message_enabled = central_message_enabled - } - if (list ~= nil) then - minetest.after(1, function(playername) - quests.show_hud(playername) - end, playername) - end - else -- new player - quests.hud[playername] = { - autohide = true, - central_message_enabled = true - } - quests.active_quests[playername] = {} - end -end) diff --git a/mods/quests/init.lua b/mods/quests/init.lua deleted file mode 100755 index 2556f1fa..00000000 --- a/mods/quests/init.lua +++ /dev/null @@ -1,84 +0,0 @@ --- reading previous quests -local file = io.open(minetest.get_worldpath().."/quests", "r") -if file then - minetest.log("action", "Reading quests...") - quests = minetest.deserialize(file:read("*all")) - file:close() -end -quests = quests or {} -quests.registered_quests = {} -quests.active_quests = quests.active_quests or {} -quests.successfull_quests = quests.successfull_quests or {} -quests.failed_quests = quests.failed_quests or {} -quests.info_quests = quests.info_quests or {} -quests.hud = quests.hud or {} -for idx,_ in pairs(quests.hud) do - quests.hud[idx].first = true -end - - -quests.formspec_lists = {} -function quests.round(num, n) - local mult = 10^(n or 0) - return math.floor(num * mult + .5) / mult -end - -quests.colors = { - new = "0xAAAA00", - success = "0x00AD00", - failed = "0xAD0000", -} - - -local MP = minetest.get_modpath("quests") - -function quests.sorted_pairs(t) - local a = {} - for n in pairs(t) do table.insert(a, n) end - table.sort(a) - local i = 0 -- iterator variable - local iter = function () -- iterator function - i = i + 1 - if a[i] == nil then return nil - else return a[i], t[a[i]] - end - end - return iter -end - -dofile(MP .. "/central_message.lua") -dofile(MP .. "/core.lua") -dofile(MP .. "/hud.lua") -dofile(MP .. "/formspecs.lua") - --- support for unified_inventory -if (minetest.get_modpath("unified_inventory") ~= nil) then - dofile(minetest.get_modpath("quests") .. "/unified_inventory.lua") -elseif (minetest.get_modpath("inventory_plus") ~= nil) then - dofile(minetest.get_modpath("quests") .. "/inventory_plus.lua") -end - - --- write the quests to file -minetest.register_on_shutdown(function() - for playername, quest in pairs(quests.active_quests) do - for questname, questspecs in pairs(quest) do - if questspecs.finished then - quests.active_quests[playername][questname] = nil -- make sure no finished quests are saved as unfinished - end - end - end - local file, err = io.open(minetest.get_worldpath().."/quests", "w") - if file then - file:write(minetest.serialize({ - active_quests = quests.active_quests, - successfull_quests = quests.successfull_quests, - failed_quests = quests.failed_quests, - info_quests = quests.info_quests, - hud = quests.hud})) - file:close() - minetest.log("action", "Wrote quests to file") - else - minetest.log("action", "Failed writing quests to file: open failed: " .. err) - end -end) diff --git a/mods/quests/inventory_plus.lua b/mods/quests/inventory_plus.lua deleted file mode 100755 index 11ebfd04..00000000 --- a/mods/quests/inventory_plus.lua +++ /dev/null @@ -1,9 +0,0 @@ -minetest.register_on_joinplayer(function(player) - inventory_plus.register_button(player, "quests") -end) - -minetest.register_on_player_receive_fields(function(player, formname, fields) - if (fields.quests) then - quests.show_formspec(player:get_player_name()) - end -end) diff --git a/mods/quests/locale/de.txt b/mods/quests/locale/de.txt deleted file mode 100755 index 10ca0d57..00000000 --- a/mods/quests/locale/de.txt +++ /dev/null @@ -1,20 +0,0 @@ -missing description = fehlende Beschreibung -missing title = fehlender Titel -Quests: = Quests: -No more Quests = Keine weiteren Quests -Abort quest = Quest abbrechen -Configure = Konfigurieren -Enable HUD = HUD einschalten -Autohide HUD = HUD automatisch verstecken -Exit = Verlassen -Failed quests = Gescheiterte Quests -Finished quests = Beendete Quests -Info = Info -No quest specified. = Keine Quest ausgewählt. -Open quests = Offene Quests -Return = Zurück -Show all open quests = Zeige alle offenen Quests -There are no quests in this category. = Es gibt keine Quests in dieser Kategorie. -New quest: = Neue Quest: -Quest completed: = Quest beendet: -Quest failed: = Quest gescheitert: diff --git a/mods/quests/locale/template.txt b/mods/quests/locale/template.txt deleted file mode 100755 index 76e1b77b..00000000 --- a/mods/quests/locale/template.txt +++ /dev/null @@ -1,20 +0,0 @@ -missing description = -missing title = -Quests: = -No more Quests = -Abort quest = -Configure = -Enable HUD = -Autohide HUD = -Exit = -Failed quests = -Finished quests = -Info = -No quest specified. = -Open quests = -Return = -Show all open quests = -There are no quests in this category. = -New quest: = -Quest completed: = -Quest failed: = diff --git a/mods/quests/sounds/quests_failed.ogg b/mods/quests/sounds/quests_failed.ogg deleted file mode 100755 index ce2970d5..00000000 Binary files a/mods/quests/sounds/quests_failed.ogg and /dev/null differ diff --git a/mods/quests/sounds/quests_new.ogg b/mods/quests/sounds/quests_new.ogg deleted file mode 100755 index c71a67d6..00000000 Binary files a/mods/quests/sounds/quests_new.ogg and /dev/null differ diff --git a/mods/quests/sounds/quests_success.ogg b/mods/quests/sounds/quests_success.ogg deleted file mode 100755 index 270972fe..00000000 Binary files a/mods/quests/sounds/quests_success.ogg and /dev/null differ diff --git a/mods/quests/textures/inventory_plus_quests.png b/mods/quests/textures/inventory_plus_quests.png deleted file mode 100755 index 05363b5a..00000000 Binary files a/mods/quests/textures/inventory_plus_quests.png and /dev/null differ diff --git a/mods/quests/textures/quests_default_quest_icon.png b/mods/quests/textures/quests_default_quest_icon.png deleted file mode 100755 index eb25506f..00000000 Binary files a/mods/quests/textures/quests_default_quest_icon.png and /dev/null differ diff --git a/mods/quests/textures/quests_questbar.png b/mods/quests/textures/quests_questbar.png deleted file mode 100755 index bc63aaa5..00000000 Binary files a/mods/quests/textures/quests_questbar.png and /dev/null differ diff --git a/mods/quests/textures/quests_questbar_background.png b/mods/quests/textures/quests_questbar_background.png deleted file mode 100755 index ef980c9b..00000000 Binary files a/mods/quests/textures/quests_questbar_background.png and /dev/null differ diff --git a/mods/quests/unified_inventory.lua b/mods/quests/unified_inventory.lua deleted file mode 100755 index 847d00d2..00000000 --- a/mods/quests/unified_inventory.lua +++ /dev/null @@ -1,48 +0,0 @@ -unified_inventory.register_button("quests", { - type = "image", - image = "inventory_plus_quests.png", - tooltip = "Show the questlog", --- action = function(player) --- quests.show_formspec(player:get_player_name()) --- end -}) - -unified_inventory.register_page("quests", { - get_formspec = function(player) - local playername = player:get_player_name() - local formspec = quests.create_formspec(playername, "1", true) - return {formspec = formspec, draw_inventory=false} - end -}) - -unified_inventory.register_page("quests_successfull", { - get_formspec = function(player) - local playername = player:get_player_name() - local formspec = quests.create_formspec(playername, "2", true) - return {formspec = formspec, draw_inventory=false} - end -}) - -unified_inventory.register_page("quests_failed", { - get_formspec = function(player) - local playername = player:get_player_name() - local formspec = quests.create_formspec(playername, "3", true) - return {formspec = formspec, draw_inventory=false} - end -}) - -unified_inventory.register_page("quests_config", { - get_formspec = function(player) - local playername = player:get_player_name() - local formspec = quests.create_config(playername, true) - return {formspec = formspec, draw_inventory = false } - end -}) -unified_inventory.register_page("quests_info", { - get_formspec = function(player) - local playername = player:get_player_name() - local formspec = quests.create_info(playername, quests.formspec_lists[playername].list[quests.formspec_lists[playername].id], - quests.formspec_lists[playername].taskid, true) - return {formspec = formspec, draw_inventory = false } - end -})