Fix bugs
This commit is contained in:
parent
64a87f4d14
commit
7225027879
26
core.lua
26
core.lua
@ -19,23 +19,27 @@ local function compute_tasks(playername, questname, nocallback)
|
|||||||
if task.requires == nil then
|
if task.requires == nil then
|
||||||
plr_task.visible = true
|
plr_task.visible = true
|
||||||
else
|
else
|
||||||
|
plr_task.visible = false
|
||||||
local was_visible = task.visible
|
local was_visible = task.visible
|
||||||
local final_enabler = ""
|
local final_enabler = ""
|
||||||
for _, enabler_name in ipairs(task.requires) do
|
for _, enabler_name in ipairs(task.requires) do
|
||||||
if type(enabler_name) == "table" then
|
if type(enabler_name) == "table" then
|
||||||
plr_task.visible = true
|
plr_task.visible = true
|
||||||
for _, subena_name in ipairs(plr_task[enabler_name]) do
|
for _, subena_name in ipairs(plr_quest[enabler_name]) do
|
||||||
local plr_subena = plr_task[subena_name]
|
local plr_subena = plr_task[subena_name]
|
||||||
if not plr_subena.visible or not plr_subena.finished then
|
if plr_task.visible and plr_subena and (not plr_subena.visible or not plr_subena.finished) then
|
||||||
plr_task.visible = false
|
plr_task.visible = false
|
||||||
break
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
plr_task.visible = plr_task[enabler_name].finished
|
if plr_quest[enabler_name] then
|
||||||
|
plr_task.visible = plr_quest[enabler_name].finished or false
|
||||||
|
else
|
||||||
|
plr_task.visible = true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if plr_task.visible then
|
if plr_task.visible then
|
||||||
final_enabler = enabler
|
final_enabler = enabler_name
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -50,17 +54,16 @@ local function compute_tasks(playername, questname, nocallback)
|
|||||||
if type(disabler) == "table" then
|
if type(disabler) == "table" then
|
||||||
plr_task.disabled = true
|
plr_task.disabled = true
|
||||||
for _, subdis_name in ipairs(disabler) do
|
for _, subdis_name in ipairs(disabler) do
|
||||||
local plr_subdis = plr_task[subdis_name]
|
local plr_subdis = plr_quest[subdis_name]
|
||||||
if plr_subdis.visible and plr_subdis.finished then
|
if not plr_task.disabled and plr_subdis.visible and plr_subdis.finished then
|
||||||
plr_task.disabled = false
|
plr_task.disabled = true
|
||||||
break
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
plr_task.disabled = plr_task[disabler_name].finished
|
plr_task.disabled = plr_quest[disabler_name].finished
|
||||||
end
|
end
|
||||||
if plr_task.disabled then
|
if plr_task.disabled then
|
||||||
final_disabler = disabler
|
final_disabler = disabler_name
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -313,6 +316,7 @@ function quests.update_quest_task(playername, questname, taskname, value)
|
|||||||
-- Check for quest completion
|
-- Check for quest completion
|
||||||
local all_tasks_finished = true
|
local all_tasks_finished = true
|
||||||
for taskname, task in pairs(quest.tasks) do
|
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
|
if plr_task.visible and not plr_task.disabled and not plr_task.finished then
|
||||||
all_tasks_finished = false
|
all_tasks_finished = false
|
||||||
end
|
end
|
||||||
|
@ -29,6 +29,7 @@ function quests.create_formspec(playername, tab, integrated)
|
|||||||
for questname,questspecs in pairs(questlist) do
|
for questname,questspecs in pairs(questlist) do
|
||||||
if not questspecs.finished then
|
if not questspecs.finished then
|
||||||
local quest = quests.registered_quests[questname]
|
local quest = quests.registered_quests[questname]
|
||||||
|
if quest then -- Quest might have been deleted
|
||||||
local queststring = quest.title
|
local queststring = quest.title
|
||||||
if quest.simple then
|
if quest.simple then
|
||||||
if questspecs.count and questspecs.count > 1 then
|
if questspecs.count and questspecs.count > 1 then
|
||||||
@ -48,6 +49,7 @@ function quests.create_formspec(playername, tab, integrated)
|
|||||||
no_quests = false
|
no_quests = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
local formspec = ""
|
local formspec = ""
|
||||||
if not integrated then
|
if not integrated then
|
||||||
formspec = formspec .. "size[7,9]"
|
formspec = formspec .. "size[7,9]"
|
||||||
@ -56,12 +58,13 @@ function quests.create_formspec(playername, tab, integrated)
|
|||||||
if no_quests then
|
if no_quests then
|
||||||
formspec = formspec .. "label[0.25,0.25;" .. S("There are no quests in this category.") .. "]"
|
formspec = formspec .. "label[0.25,0.25;" .. S("There are no quests in this category.") .. "]"
|
||||||
else
|
else
|
||||||
formspec = formspec .. "textlist[0.25,0.25;6.5,6.5;quests_questlist;"..table.concat(queststringlist, ",") .. ";1;false]"
|
formspec = formspec .. "textlist[0.25,0.25;6.5,6;quests_questlist;"..table.concat(queststringlist, ",") .. ";1;false]"
|
||||||
end
|
end
|
||||||
if quests.formspec_lists[playername].tab == "1" then
|
if quests.formspec_lists[playername].tab == "1" then
|
||||||
formspec = formspec .."button[0.25,7;3,.7;quests_abort;" .. S("Abort quest") .. "]"
|
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") .. ";" .. "false" .. "]"
|
||||||
end
|
end
|
||||||
formspec = formspec .. "button[3.75,7;3,.7;quests_config;" .. S("Configure") .. "]"..
|
formspec = formspec .. "button[3.75,7.1;3,.7;quests_config;" .. S("Configure") .. "]"..
|
||||||
"button[.25,8;3,.7;quests_info;" .. S("Info") .. "]"..
|
"button[.25,8;3,.7;quests_info;" .. S("Info") .. "]"..
|
||||||
"button_exit[3.75,8;3,.7;quests_exit;" .. S("Exit") .. "]"
|
"button_exit[3.75,8;3,.7;quests_exit;" .. S("Exit") .. "]"
|
||||||
return formspec
|
return formspec
|
||||||
@ -145,11 +148,15 @@ function quests.create_info(playername, questname, taskid, integrated)
|
|||||||
local taskidlist = {}
|
local taskidlist = {}
|
||||||
local taskstringlist = {}
|
local taskstringlist = {}
|
||||||
for taskname, task in pairs(quest.tasks) do
|
for taskname, task in pairs(quest.tasks) do
|
||||||
local plr_task = quests.active_quests[playername][questname][taskname]
|
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
|
if not plr_task or (plr_task and plr_task.visible) then
|
||||||
-- not plr_task => quest is finished, display all tasks
|
-- not plr_task => quest is finished, display all tasks
|
||||||
table.insert(taskidlist, taskname)
|
table.insert(taskidlist, taskname)
|
||||||
local color = ""
|
local color = ""
|
||||||
|
local suffix = ""
|
||||||
if plr_task then
|
if plr_task then
|
||||||
if plr_task.finished then
|
if plr_task.finished then
|
||||||
color = "#00BB00"
|
color = "#00BB00"
|
||||||
@ -157,8 +164,9 @@ function quests.create_info(playername, questname, taskid, integrated)
|
|||||||
if plr_task.disabled then
|
if plr_task.disabled then
|
||||||
color = "#AAAAAA"
|
color = "#AAAAAA"
|
||||||
end
|
end
|
||||||
|
suffix = " - " .. quests.round(plr_task.value, 2) .. "/" .. task.max
|
||||||
end
|
end
|
||||||
table.insert(taskstringlist, color .. task.title .. " - " .. quests.round(plr_task.value, 2) .. "/" .. task.max)
|
table.insert(taskstringlist, color .. task.title .. suffix)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local task = false
|
local task = false
|
||||||
@ -311,8 +319,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||||||
if fields.quest_info_tasklist then
|
if fields.quest_info_tasklist then
|
||||||
local event = minetest.explode_textlist_event(fields.quest_info_tasklist)
|
local event = minetest.explode_textlist_event(fields.quest_info_tasklist)
|
||||||
if event.type == "CHG" then
|
if event.type == "CHG" then
|
||||||
if formname == "quests:questlog" 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)
|
minetest.show_formspec(playername, "quests:info", quests.create_info(playername, quests.formspec_lists[playername].list[quests.formspec_lists[playername].id], event.index, false))
|
||||||
else
|
else
|
||||||
quests.formspec_lists[playername].taskid = event.index
|
quests.formspec_lists[playername].taskid = event.index
|
||||||
unified_inventory.set_inventory_formspec(player, "quests_info")
|
unified_inventory.set_inventory_formspec(player, "quests_info")
|
||||||
@ -320,7 +328,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
if fields.quests_info_abort then
|
if fields.quests_info_abort then
|
||||||
if (quests.formspec_lists[playername].id == nil) then
|
if quests.formspec_lists[playername].id == nil then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
quests.abort_quest(playername, quests.formspec_lists[playername].list[quests.formspec_lists[playername].id])
|
quests.abort_quest(playername, quests.formspec_lists[playername].list[quests.formspec_lists[playername].id])
|
||||||
|
2
hud.lua
2
hud.lua
@ -150,6 +150,7 @@ function quests.update_hud(playername)
|
|||||||
for questname,questspecs in pairs(quests.active_quests[playername]) do
|
for questname,questspecs in pairs(quests.active_quests[playername]) do
|
||||||
if not visible[questname] then
|
if not visible[questname] then
|
||||||
local quest = quests.registered_quests[questname]
|
local quest = quests.registered_quests[questname]
|
||||||
|
if quest then -- Quest might have been deleted
|
||||||
if quest.simple then
|
if quest.simple then
|
||||||
local id = player:hud_add({ hud_elem_type = "text",
|
local id = player:hud_add({ hud_elem_type = "text",
|
||||||
alignment = { x=1, y= 1 },
|
alignment = { x=1, y= 1 },
|
||||||
@ -190,6 +191,7 @@ function quests.update_hud(playername)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if quests.hud[playername].autohide then
|
if quests.hud[playername].autohide then
|
||||||
if (next(quests.active_quests[playername]) == nil) then
|
if (next(quests.active_quests[playername]) == nil) then
|
||||||
|
Loading…
Reference in New Issue
Block a user