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

# Conflicts:
#	Data/scripts/player.lua  - Resolved.  Using theirs.
This commit is contained in:
CuriousJorge 2022-02-20 22:57:01 -05:00
commit fac8f269e7
8 changed files with 82 additions and 55 deletions

View file

@ -63,14 +63,16 @@ function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_000) then
if (sequence == SEQ_000) then
-- Setup states incase we loaded in.
local rostnsthalFlag = quest:GetFlag(FLAG_SEQ000_MINITUT1) and QFLAG_NONE or QFLAG_PLATE;
local vixenFlag = quest:GetFlag(FLAG_SEQ000_MINITUT2) and QFLAG_NONE or QFLAG_PLATE;
local babyfaceFlag = quest:GetFlag(FLAG_SEQ000_MINITUT3) and QFLAG_NONE or QFLAG_PLATE;
local rostnsthalCanPush = not quest:GetFlag(FLAG_SEQ000_MINITUT0);
local exitCanPush = quest:GetFlags() == 0xF;
local exitFlag = quest:GetFlags() == 0xF and QFLAG_MAP or QFLAG_NONE;
local data = quest:GetData();
local rostnsthalFlag = data:GetFlag(FLAG_SEQ000_MINITUT1) and QFLAG_NONE or QFLAG_PLATE;
local vixenFlag = data:GetFlag(FLAG_SEQ000_MINITUT2) and QFLAG_NONE or QFLAG_PLATE;
local babyfaceFlag = data:GetFlag(FLAG_SEQ000_MINITUT3) and QFLAG_NONE or QFLAG_PLATE;
local rostnsthalCanPush = not data:GetFlag(FLAG_SEQ000_MINITUT0);
local exitCanPush = data:GetFlags() == 0xF;
local exitFlag = data:GetFlags() == 0xF and QFLAG_MAP or QFLAG_NONE;
quest:SetENpc(WELLTRAVELED_MERCHANT);
quest:SetENpc(TIPSY_ADVENTURER);
@ -88,9 +90,10 @@ function onStateChange(player, quest, sequence)
quest:SetENpc(GRINNING_ADVENTURER);
quest:SetENpc(ROSTNSTHAL, rostnsthalFlag, true, rostnsthalCanPush);
quest:SetENpc(EXIT_TRIGGER, exitFlag, false, exitCanPush);
print(tostring(exitCanPush));
elseif (sequence == SEQ_005) then
elseif (sequence == SEQ_010) then
quest:SetENpc(HOB);
quest:SetENpc(HOB, QFLAG_PLATE);
quest:SetENpc(GERT);
quest:SetENpc(LORHZANT);
quest:SetENpc(MUSCLEBOUND_DECKHAND);
@ -144,8 +147,7 @@ end
function onNotice(player, quest, target)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
quest:ClearData();
if (sequence == SEQ_000) then
callClientFunction(player, "delegateEvent", player, quest, "processTtrNomal001withHQ");
end
@ -153,7 +155,9 @@ function onNotice(player, quest, target)
quest:UpdateENPCs();
end
function seq000_onTalk(player, quest, npc, classId)
function seq000_onTalk(player, quest, npc, classId)
local data = quest:GetData();
if (classId == WELLTRAVELED_MERCHANT) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000_4");
elseif (classId == TIPSY_ADVENTURER) then
@ -163,9 +167,9 @@ function seq000_onTalk(player, quest, npc, classId)
elseif (classId == ANXIOUS_ADVENTURER) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000_7");
elseif (classId == BABYFACED_ADVENTURER) then
if (not quest:GetFlag(FLAG_SEQ000_MINITUT3)) then
if (not data:GetFlag(FLAG_SEQ000_MINITUT3)) then
callClientFunction(player, "delegateEvent", player, quest, "processTtrMini003");
quest:SetFlag(FLAG_SEQ000_MINITUT3);
data:SetFlag(FLAG_SEQ000_MINITUT3);
else
callClientFunction(player, "delegateEvent", player, quest, "processEvent000_8");
end
@ -178,9 +182,9 @@ function seq000_onTalk(player, quest, npc, classId)
elseif (classId == ASTUTE_MERCHANT) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000_12");
elseif (classId == VOLUPTUOUS_VIXEN) then
if (not quest:GetFlag(FLAG_SEQ000_MINITUT2)) then
if (not data:GetFlag(FLAG_SEQ000_MINITUT2)) then
callClientFunction(player, "delegateEvent", player, quest, "processTtrMini002");
quest:SetFlag(FLAG_SEQ000_MINITUT2);
data:SetFlag(FLAG_SEQ000_MINITUT2);
else
callClientFunction(player, "delegateEvent", player, quest, "processEvent000_13");
end
@ -194,13 +198,13 @@ function seq000_onTalk(player, quest, npc, classId)
callClientFunction(player, "delegateEvent", player, quest, "processEvent000_17");
elseif (classId == ROSTNSTHAL) then
-- Handle the talk tutorial after the push one.
if (not quest:GetFlag(FLAG_SEQ000_MINITUT0)) then
if (not data:GetFlag(FLAG_SEQ000_MINITUT0)) then
callClientFunction(player, "delegateEvent", player, quest, "processTtrNomal003");
quest:SetFlag(FLAG_SEQ000_MINITUT0);
data:SetFlag(FLAG_SEQ000_MINITUT0);
else
callClientFunction(player, "delegateEvent", player, quest, "processTtrMini001");
if (not quest:GetFlag(FLAG_SEQ000_MINITUT1)) then
quest:SetFlag(FLAG_SEQ000_MINITUT1);
if (not data:GetFlag(FLAG_SEQ000_MINITUT1)) then
data:SetFlag(FLAG_SEQ000_MINITUT1);
end
end
end
@ -209,6 +213,8 @@ function seq000_onTalk(player, quest, npc, classId)
end
function seq010_onTalk(player, quest, npc, classId)
local data = quest:GetData();
if (classId == MUSCLEBOUND_DECKHAND) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent020_2");
elseif (classId == PEARLYTOOTHED_PORTER) then

View file

@ -86,6 +86,7 @@ function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
local data = quest:GetData();
if (sequence == SEQ_000) then
quest:SetENpc(YSHTOLA);
@ -107,8 +108,8 @@ function onStateChange(player, quest, sequence)
elseif (sequence == SEQ_006) then
quest:SetENpc(BADERON, QFLAG_PLATE);
elseif (sequence == SEQ_007) then
local subseqCUL = quest:GetCounter(CNTR_SEQ7_CUL);
local subseqMRD = quest:GetCounter(CNTR_SEQ7_MRD);
local subseqCUL = data:GetCounter(CNTR_SEQ7_CUL);
local subseqMRD = data:GetCounter(CNTR_SEQ7_MRD);
-- Always active in this seqence
quest:SetENpc(BADERON);
@ -220,8 +221,9 @@ function seq000_onTalk(player, quest, npc, classId)
end
function seq007_onTalk(player, quest, npc, classId)
local subseqCUL = quest:GetCounter(CNTR_SEQ7_CUL);
local subseqMRD = quest:GetCounter(CNTR_SEQ7_MRD);
local data = quest:GetData();
local subseqCUL = data:GetCounter(CNTR_SEQ7_CUL);
local subseqMRD = data:GetCounter(CNTR_SEQ7_MRD);
if (classId == BADERON) then
if (subseqCUL == 1) then
@ -234,7 +236,7 @@ function seq007_onTalk(player, quest, npc, classId)
elseif (classId == CHARLYS) then
if (subseqCUL == 0) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent030");
quest:IncCounter(CNTR_SEQ7_CUL);
data:IncCounter(CNTR_SEQ7_CUL);
--give 1000g
else
callClientFunction(player, "delegateEvent", player, quest, "processEvent030_2");
@ -242,11 +244,11 @@ function seq007_onTalk(player, quest, npc, classId)
elseif (classId == ISANDOREL) then
if (subseqMRD == 2) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent050");
quest:IncCounter(CNTR_SEQ7_MRD);
data:IncCounter(CNTR_SEQ7_MRD);
GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 3);
elseif (subseqMRD == 0) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent035");
quest:IncCounter(CNTR_SEQ7_MRD);
data:IncCounter(CNTR_SEQ7_MRD);
elseif (subseqMRD == 1) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent035_2");
end
@ -278,19 +280,20 @@ function seq007_onTalk(player, quest, npc, classId)
end
function onPush(player, quest, npc)
local data = quest:GetData();
local sequence = quest:getSequence();
local classId = npc:GetActorClassId();
if (sequence == SEQ_007) then
if (classId == MSK_TRIGGER) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent040");
quest:IncCounter(CNTR_SEQ7_MRD);
data:IncCounter(CNTR_SEQ7_MRD);
player:EndEvent();
quest:UpdateENPCs();
GetWorldManager():DoZoneChange(player, 230, nil, 0, 15, -620.0, 29.476, -70.050, 0.791);
elseif (classId == ECHO_EXIT_TRIGGER) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent060");
quest:IncCounter(CNTR_SEQ7_MRD);
data:IncCounter(CNTR_SEQ7_MRD);
player:EndEvent();
quest:UpdateENPCs();
GetWorldManager():WarpToPublicArea(player);
@ -327,7 +330,7 @@ function onNpcLS(player, quest, npcLSId)
end
function getJournalInformation(player, quest)
return 0, quest:GetCounter(CNTR_SEQ7_CUL) * 5, quest:GetCounter(CNTR_SEQ7_MRD) * 5;
return 0, quest:GetData():GetCounter(CNTR_SEQ7_CUL) * 5, quest:GetData():GetCounter(CNTR_SEQ7_MRD) * 5;
end

View file

@ -8,7 +8,6 @@ function onFinish(player, quest)
end
function onStateChange(player, quest, seqNum)
quest:ClearENpcs();
end
function onTalk(player, quest, npc)