Merge remote-tracking branch 'origin/ioncannon/quest_system' into Jorge/quest_system

This commit is contained in:
CuriousJorge 2022-02-20 15:10:49 -05:00
commit 594e08f990
84 changed files with 2660 additions and 1279 deletions

View file

@ -0,0 +1,58 @@
require("global");
properties = {
permissions = 0,
parameters = "dd",
description =
[[
Sets if a quest is completed.
!completedQuest <questId> true/false
]],
}
function onTrigger(player, argc, questId, flag)
print("HEY");
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local sender = "[completedQuest] ";
local message = "Error";
if (argc < 1) then
return;
end
local questId = tonumber(questId);
local flag = flag or nil;
-- Fail if not valid questId
if (questId < 110001 or questId > 110001 + 2048) then
player:SendMessage(messageID, sender, "Invalid questId entered");
return;
end
-- Getting
if (arc == 1) then
player:SendMessage(messageID, sender, string.format("Quest %d completion is set to: %s", questId, tostring(player:IsQuestCompleted(questId))));
return;
-- Setting
else
-- Fail if not valid flag
if (not flag == nil) then
player:SendMessage(messageID, sender, "Invalid flag entered");
else
local boolFlag = false;
if (flag == "true" or flag == "1" or flag == "on" or flag == "O") then
boolFlag = true;
elseif (flag == "false" or flag == "0" or flag == "off" or flag == "X") then
boolFlag = false;
elseif flag == "flip" or flag == "toggle" then
boolFlag = not player:IsQuestCompleted(questId);
end
player:SetQuestComplete(questId, boolFlag);
player:SendMessage(messageID, sender, string.format("Quest %d completion set to: %s", questId, tostring(player:IsQuestCompleted(questId))));
return;
end
end
end

View file

@ -66,7 +66,7 @@ function onTrigger(player, argc, command, var1, var2, var3)
local flagStr = "";
for i=0,31,1 do
if (quest:GetFlag(i)) then
if (quest:GetData():GetFlag(i)) then
flagStr = flagStr .. "O";
else
flagStr = flagStr .. "X";
@ -76,10 +76,12 @@ function onTrigger(player, argc, command, var1, var2, var3)
end
end
local data = quest:GetData();
message = string.format("\nInfo for quest %s [%d]\n", quest.Name, quest:GetQuestId());
message = message .. string.format("Current Sequence: %d\n", quest:getSequence());
message = message .. string.format("Flags: \n%s\n", flagStr)
message = message .. string.format("Counters: %d,%d,%d,%d", quest:getCounter(0), quest:getCounter(1), quest:getCounter(2), quest:getCounter(3));
message = message .. string.format("Counters: %d,%d,%d,%d", data:getCounter(0), data:getCounter(1), data:getCounter(2), data:getCounter(3));
else
message = ("Quest not active: "..var1);
end
@ -118,7 +120,7 @@ function onTrigger(player, argc, command, var1, var2, var3)
boolvar = false;
elseif var3 == "flip" or var3 == "toggle" then
if player:HasQuest(questvar) == true then
boolvar = not player:GetQuest(questvar):GetFlag(flagvar);
boolvar = not player:GetQuest(questvar):GetData():GetFlag(flagvar);
end
else
message = ("error: flag: boolean not recognized");
@ -126,13 +128,13 @@ function onTrigger(player, argc, command, var1, var2, var3)
return;
end
var4 = player:GetQuest(questvar):GetFlag(flagvar);
var4 = player:GetQuest(questvar):GetData():GetFlag(flagvar);
if var4 ~= boolvar then
if (boolvar == true) then
player:GetQuest(questvar):SetFlag(flagvar);
player:GetQuest(questvar):GetData():SetFlag(flagvar);
else
player:GetQuest(questvar):ClearFlag(flagvar);
player:GetQuest(questvar):GetData():ClearFlag(flagvar);
end
player:GetQuest(questvar):UpdateENPCs();
player:GetQuest(questvar):SaveData();
@ -152,7 +154,7 @@ function onTrigger(player, argc, command, var1, var2, var3)
questvar = tonumber(var1);
index = (tonumber(var2));
player:GetQuest(questvar):SetCounter(index, tonumber(var3));
player:GetQuest(questvar):GetData():SetCounter(index, tonumber(var3));
player:GetQuest(questvar):UpdateENPCs();
player:GetQuest(questvar):SaveData();
message = ("changing counter "..tonumber(var2).." to "..var3);