Finished quest state system idea

This commit is contained in:
Filip Maj 2022-02-16 15:32:54 -05:00
parent aae051d73f
commit 1523ae200b
21 changed files with 720 additions and 373 deletions

View file

@ -62,7 +62,7 @@ end
function onFinish(player, quest)
end
function onSequence(player, quest, sequence)
function onStateChange(player, quest, sequence)
if (sequence == SEQ_000) then
-- Setup states incase we loaded in.
local rostnsthalFlag = quest:GetFlag(FLAG_SEQ000_MINITUT1) and QFLAG_NONE or QFLAG_PLATE;
@ -72,34 +72,34 @@ function onSequence(player, quest, sequence)
local exitCanPush = quest:GetFlags() == 0xF;
local exitFlag = quest:GetFlags() == 0xF and QFLAG_MAP or QFLAG_NONE;
quest:AddENpc(WELLTRAVELED_MERCHANT);
quest:AddENpc(TIPSY_ADVENTURER);
quest:AddENpc(CULTIVATED_TENDER);
quest:AddENpc(ANXIOUS_ADVENTURER);
quest:AddENpc(BABYFACED_ADVENTURER, babyfaceFlag);
quest:AddENpc(AUSTERE_ADVENTURER);
quest:AddENpc(UNDIGNIFIED_ADVENTURER);
quest:AddENpc(SHADOWY_TRAVELER);
quest:AddENpc(ASTUTE_MERCHANT);
quest:AddENpc(VOLUPTUOUS_VIXEN, vixenFlag);
quest:AddENpc(INDIFFERENT_PASSERBY);
quest:AddENpc(PRATTLING_ADVENTURER);
quest:AddENpc(LANKY_TRAVELER);
quest:AddENpc(GRINNING_ADVENTURER);
quest:AddENpc(ROSTNSTHAL, rostnsthalFlag, true, rostnsthalCanPush);
quest:AddENpc(EXIT_TRIGGER, exitFlag, false, exitCanPush);
quest:SetENpc(WELLTRAVELED_MERCHANT);
quest:SetENpc(TIPSY_ADVENTURER);
quest:SetENpc(CULTIVATED_TENDER);
quest:SetENpc(ANXIOUS_ADVENTURER);
quest:SetENpc(BABYFACED_ADVENTURER, babyfaceFlag);
quest:SetENpc(AUSTERE_ADVENTURER);
quest:SetENpc(UNDIGNIFIED_ADVENTURER);
quest:SetENpc(SHADOWY_TRAVELER);
quest:SetENpc(ASTUTE_MERCHANT);
quest:SetENpc(VOLUPTUOUS_VIXEN, vixenFlag);
quest:SetENpc(INDIFFERENT_PASSERBY);
quest:SetENpc(PRATTLING_ADVENTURER);
quest:SetENpc(LANKY_TRAVELER);
quest:SetENpc(GRINNING_ADVENTURER);
quest:SetENpc(ROSTNSTHAL, rostnsthalFlag, true, rostnsthalCanPush);
quest:SetENpc(EXIT_TRIGGER, exitFlag, false, exitCanPush);
elseif (sequence == SEQ_005) then
elseif (sequence == SEQ_010) then
quest:AddENpc(HOB);
quest:AddENpc(GERT);
quest:AddENpc(LORHZANT);
quest:AddENpc(MUSCLEBOUND_DECKHAND);
quest:AddENpc(PEARLYTOOTHED_PORTER);
quest:AddENpc(UNDIGNIFIED_ADVENTURER);
quest:AddENpc(WELLTRAVELED_MERCHANT);
quest:AddENpc(VOLUPTUOUS_VIXEN);
quest:AddENpc(LANKY_TRAVELER);
quest:AddENpc(PRIVAREA_PAST_EXIT, QFLAG_NONE, false, true);
quest:SetENpc(HOB);
quest:SetENpc(GERT);
quest:SetENpc(LORHZANT);
quest:SetENpc(MUSCLEBOUND_DECKHAND);
quest:SetENpc(PEARLYTOOTHED_PORTER);
quest:SetENpc(UNDIGNIFIED_ADVENTURER);
quest:SetENpc(WELLTRAVELED_MERCHANT);
quest:SetENpc(VOLUPTUOUS_VIXEN);
quest:SetENpc(LANKY_TRAVELER);
quest:SetENpc(PRIVAREA_PAST_EXIT, QFLAG_NONE, false, true);
end
end

View file

@ -85,56 +85,56 @@ end
function onFinish(player, quest)
end
function onSequence(player, quest, sequence)
function onStateChange(player, quest, sequence)
if (sequence == SEQ_000) then
quest:AddENpc(YSHTOLA);
quest:AddENpc(CRAPULOUS_ADVENTURER);
quest:AddENpc(DUPLICITOUS_TRADER);
quest:AddENpc(DEBONAIR_PIRATE);
quest:AddENpc(ONYXHAIRED_ADVENTURER);
quest:AddENpc(SKITTISH_ADVENTURER);
quest:AddENpc(RELAXING_ADVENTURER);
quest:AddENpc(BADERON, QFLAG_PLATE);
quest:AddENpc(MYTESYN);
quest:AddENpc(COCKAHOOP_COCKSWAIN);
quest:AddENpc(SENTENIOUS_SELLSWORD);
quest:AddENpc(SOLICITOUS_SELLSWORD);
quest:SetENpc(YSHTOLA);
quest:SetENpc(CRAPULOUS_ADVENTURER);
quest:SetENpc(DUPLICITOUS_TRADER);
quest:SetENpc(DEBONAIR_PIRATE);
quest:SetENpc(ONYXHAIRED_ADVENTURER);
quest:SetENpc(SKITTISH_ADVENTURER);
quest:SetENpc(RELAXING_ADVENTURER);
quest:SetENpc(BADERON, QFLAG_PLATE);
quest:SetENpc(MYTESYN);
quest:SetENpc(COCKAHOOP_COCKSWAIN);
quest:SetENpc(SENTENIOUS_SELLSWORD);
quest:SetENpc(SOLICITOUS_SELLSWORD);
elseif (sequence == SEQ_003) then
quest:AddENpc(BADERON);
quest:SetENpc(BADERON);
elseif (sequence == SEQ_005) then
quest:AddENpc(BADERON, QFLAG_PLATE);
quest:SetENpc(BADERON, QFLAG_PLATE);
elseif (sequence == SEQ_006) then
quest:AddENpc(BADERON, QFLAG_PLATE);
quest:SetENpc(BADERON, QFLAG_PLATE);
elseif (sequence == SEQ_007) then
local subseqCUL = quest:GetCounter(CNTR_SEQ7_CUL);
local subseqMRD = quest:GetCounter(CNTR_SEQ7_MRD);
-- Always active in this seqence
quest:AddENpc(BADERON);
quest:AddENpc(CHARLYS, subseqCUL == 0 and QFLAG_PLATE or QFLAG_NONE);
quest:SetENpc(BADERON);
quest:SetENpc(CHARLYS, subseqCUL == 0 and QFLAG_PLATE or QFLAG_NONE);
-- Down and Up the MSK guild
quest:AddENpc(ISANDOREL, (subseqMRD == 0 or subseqMRD == 2) and QFLAG_PLATE or QFLAG_NONE);
quest:SetENpc(ISANDOREL, (subseqMRD == 0 or subseqMRD == 2) and QFLAG_PLATE or QFLAG_NONE);
if (subseqMRD == 1) then
quest:AddENpc(MSK_TRIGGER, QFLAG_MAP, false, true);
quest:SetENpc(MSK_TRIGGER, QFLAG_MAP, false, true);
elseif (subseqMRD == 2) then
quest:AddENpc(MERLZIRN);
quest:SetENpc(MERLZIRN);
end
-- In Echo
quest:AddENpc(NERVOUS_BARRACUDA);
quest:AddENpc(INTIMIDATING_BARRACUDA);
quest:AddENpc(OVEREAGER_BARRACUDA);
quest:AddENpc(SOPHISTICATED_BARRACUDA);
quest:AddENpc(SMIRKING_BARRACUDA);
quest:AddENpc(MANNSKOEN);
quest:AddENpc(TOTORUTO);
quest:AddENpc(ADVENTURER1);
quest:AddENpc(ADVENTURER2);
quest:AddENpc(ADVENTURER3);
quest:AddENpc(ECHO_EXIT_TRIGGER, subseqMRD == 3 and QFLAG_MAP or QFLAG_NONE, false, subseqMRD == 3);
quest:SetENpc(NERVOUS_BARRACUDA);
quest:SetENpc(INTIMIDATING_BARRACUDA);
quest:SetENpc(OVEREAGER_BARRACUDA);
quest:SetENpc(SOPHISTICATED_BARRACUDA);
quest:SetENpc(SMIRKING_BARRACUDA);
quest:SetENpc(MANNSKOEN);
quest:SetENpc(TOTORUTO);
quest:SetENpc(ADVENTURER1);
quest:SetENpc(ADVENTURER2);
quest:SetENpc(ADVENTURER3);
quest:SetENpc(ECHO_EXIT_TRIGGER, subseqMRD == 3 and QFLAG_MAP or QFLAG_NONE, false, subseqMRD == 3);
if (subseqCUL == 1 and subseqMRD == 4) then
player:SetNpcLS(1, 1);

View file

@ -103,7 +103,7 @@ end
function onFinish(player, quest)
end
function onSequence(player, quest, sequence)
function onStateChange(player, quest, sequence)
if (sequence == SEQ_000) then
-- Setup states incase we loaded in.
@ -119,34 +119,34 @@ function onSequence(player, quest, sequence)
gildiggingmistressFlag = QFLAG_NONE;
end
--AddENpc(classId, byte flagType=0,isTalkEnabled, isPushEnabled, isEmoteEnabled, isSpawned)
quest:AddENpc(ASCILIA, asciliaFlag, true, asciliaCanPush);
quest:AddENpc(WARBURTON);
quest:AddENpc(RURURAJI);
quest:AddENpc(BIG_BELLIED_BARKER);
quest:AddENpc(FRETFUL_FARMHAND, fretfulfarmhandFlag);
quest:AddENpc(DEBAUCHED_DEMONESS);
quest:AddENpc(DAPPER_DAN);
quest:AddENpc(LOUTISH_LAD);
quest:AddENpc(GIL_DIGGING_MISTRESS, gildiggingmistressFlag);
quest:AddENpc(TWITTERING_TOMBOY);
quest:AddENpc(STOCKY_STRANGER);
quest:AddENpc(EXIT_TRIGGER, exitFlag, false, true);
quest:AddENpc(OPENING_STOPER_ULDAH, QFLAG_NONE, false, false, true);
--SetENpc(classId, byte flagType=0,isTalkEnabled, isPushEnabled, isEmoteEnabled, isSpawned)
quest:SetENpc(ASCILIA, asciliaFlag, true, asciliaCanPush);
quest:SetENpc(WARBURTON);
quest:SetENpc(RURURAJI);
quest:SetENpc(BIG_BELLIED_BARKER);
quest:SetENpc(FRETFUL_FARMHAND, fretfulfarmhandFlag);
quest:SetENpc(DEBAUCHED_DEMONESS);
quest:SetENpc(DAPPER_DAN);
quest:SetENpc(LOUTISH_LAD);
quest:SetENpc(GIL_DIGGING_MISTRESS, gildiggingmistressFlag);
quest:SetENpc(TWITTERING_TOMBOY);
quest:SetENpc(STOCKY_STRANGER);
quest:SetENpc(EXIT_TRIGGER, exitFlag, false, true);
quest:SetENpc(OPENING_STOPER_ULDAH, QFLAG_NONE, false, false, true);
elseif (sequence == SEQ_010) then
local yayatokiFlag = quest:GetFlag(FLAG_SEQ010_TALK0) and QFLAG_NONE or QFLAG_PLATE;
local uldahopeningexitFlag = QFLAG_MAP;
quest:AddENpc(KEEN_EYED_MERCHANT);
quest:AddENpc(HIGH_SPIRITED_FELLOW);
quest:AddENpc(DISREPUTABLE_MIDLANDER);
quest:AddENpc(LONG_LEGGED_LADY);
quest:AddENpc(LARGE_LUNGED_LABORER);
quest:AddENpc(TOOTH_GRINDING_TRAVELER);
quest:AddENpc(FULL_LIPPED_FILLE);
quest:AddENpc(YAYATOKI, yayatokiFlag);
quest:AddENpc(BLOCKER, QFLAG_NONE, false, true);
quest:AddENpc(ULDAH_OPENING_EXIT, uldahopeningexitFlag, false, true);
quest:SetENpc(KEEN_EYED_MERCHANT);
quest:SetENpc(HIGH_SPIRITED_FELLOW);
quest:SetENpc(DISREPUTABLE_MIDLANDER);
quest:SetENpc(LONG_LEGGED_LADY);
quest:SetENpc(LARGE_LUNGED_LABORER);
quest:SetENpc(TOOTH_GRINDING_TRAVELER);
quest:SetENpc(FULL_LIPPED_FILLE);
quest:SetENpc(YAYATOKI, yayatokiFlag);
quest:SetENpc(BLOCKER, QFLAG_NONE, false, true);
quest:SetENpc(ULDAH_OPENING_EXIT, uldahopeningexitFlag, false, true);
end
end

View file

@ -127,17 +127,17 @@ end
function onFinish(player, quest)
end
function onSequence(player, quest, sequence)
function onStateChange(player, quest, sequence)
if (sequence == SEQ_000) then
-- Setup states incase we loaded in.
--AddENpc(classId, byte flagType=0,isTalkEnabled, isPushEnabled, isEmoteEnabled, isSpawned)
quest:AddENpc(MOMODI, QFLAG_PLATE);
quest:AddENpc(OTOPA_POTTOPA);
--SetENpc(classId, byte flagType=0,isTalkEnabled, isPushEnabled, isEmoteEnabled, isSpawned)
quest:SetENpc(MOMODI, QFLAG_PLATE);
quest:SetENpc(OTOPA_POTTOPA);
elseif (sequence == SEQ_005) then
quest:AddENpc(MOMODI);
quest:SetENpc(MOMODI);
end
end

View file

@ -7,7 +7,7 @@ end
function onFinish(player, quest)
end
function onSequence(player, quest, seqNum)
function onStateChange(player, quest, seqNum)
quest:ClearENpcs();
end