mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-06-10 22:44:36 +02:00
- man0g0 - Majority of the work ported from the old quest system. Still polish to be had and fringe cases to deal with (especially relogging)
- man0g1 - Initial privateArea mostly scripted. - SimpleContent30010 - Fixed Yda/Papalymo Id being backwards, added Active states to match retail - QuestDirectorMan0g001- Updated to play itself out (this is a mess to wrap my head around). Mostly sorta kinda working on both DoW & DoM tutorials. End cutscene on DoW not firing currently, will fix later.
This commit is contained in:
parent
682ddd9cae
commit
a87244d13b
5 changed files with 582 additions and 164 deletions
171
Data/scripts/quests/man/man0g1.lua
Normal file
171
Data/scripts/quests/man/man0g1.lua
Normal file
|
@ -0,0 +1,171 @@
|
|||
require("global");
|
||||
|
||||
--[[
|
||||
|
||||
Quest Script
|
||||
|
||||
Name: Souls Gone Wild
|
||||
Code: Man0g1
|
||||
Id: 110006
|
||||
Prereq: Sundered Skies (Man0g0 - 110005)
|
||||
Notes:
|
||||
|
||||
|
||||
|
||||
]]
|
||||
|
||||
|
||||
-- Sequence Numbers
|
||||
SEQ_000 = 0;
|
||||
|
||||
|
||||
-- Actor Class Ids
|
||||
MIOUNNE = 1000230;
|
||||
VKOROLON = 1000458;
|
||||
WISPILY_WHISKERED_WOODWORKER = 1000562;
|
||||
AMIABLE_ADVENTURER = 1001057;
|
||||
MOROSE_MERCHANT = 1001058;
|
||||
NARROW_EYED_ADVENTURER = 1001059;
|
||||
BEAMING_ADVENTURER = 1001062;
|
||||
WELL_BUNDLED_ADVENTURER = 1001060;
|
||||
UNCONCERNED_PASSERBY = 1001648; -- I don't think this was used?
|
||||
|
||||
-- Quest Markers
|
||||
MRKR_MIOUNNE = 11000601;
|
||||
|
||||
-- Quest Items
|
||||
ITEM_VELODYNA_COSMOS = 0; -- Seq_000 : 2nd journal arg. >=5 doesn't have.
|
||||
|
||||
|
||||
-- Quest Flags
|
||||
FLAG_SEQ000 = 0;
|
||||
|
||||
function onStart(player, quest)
|
||||
quest:StartSequence(SEQ_000);
|
||||
|
||||
-- Immediately move to the Adventurer's Guild private area
|
||||
callClientFunction(player, "delegateEvent", player, quest, "processEvent100");
|
||||
GetWorldManager():DoZoneChange(player, 155, "PrivateAreaMasterPast", 2, 15, 67.034, 4, -1205.6497, -1.074);
|
||||
player:endEvent();
|
||||
end
|
||||
|
||||
function onFinish(player, quest)
|
||||
end
|
||||
|
||||
function onStateChange(player, quest, sequence)
|
||||
|
||||
if (sequence == SEQ_000) then
|
||||
-- Setup states incase we loaded in.
|
||||
|
||||
--SetENpc(classId, byte flagType=0,isTalkEnabled, isPushEnabled, isEmoteEnabled, isSpawned)
|
||||
quest:SetENpc(MIOUNNE, QFLAG_PLATE);
|
||||
-- quest:SetENpc(VKOROLON);
|
||||
quest:SetENpc(WISPILY_WHISKERED_WOODWORKER);
|
||||
quest:SetENpc(AMIABLE_ADVENTURER);
|
||||
quest:SetENpc(MOROSE_MERCHANT);
|
||||
quest:SetENpc(NARROW_EYED_ADVENTURER);
|
||||
quest:SetENpc(BEAMING_ADVENTURER);
|
||||
quest:SetENpc(WELL_BUNDLED_ADVENTURER);
|
||||
quest:SetENpc(UNCONCERNED_PASSERBY);
|
||||
|
||||
elseif (sequence == SEQ_005) then
|
||||
quest:SetENpc(MIOUNNE);
|
||||
end
|
||||
end
|
||||
|
||||
function onTalk(player, quest, npc)
|
||||
local sequence = quest:getSequence();
|
||||
local classId = npc:GetActorClassId();
|
||||
|
||||
if (sequence == SEQ_000) then
|
||||
seq000_onTalk(player, quest, npc, classId);
|
||||
elseif (sequence == SEQ_005) then
|
||||
seq005_onTalk(player, quest, npc, classId);
|
||||
end
|
||||
quest:UpdateENPCs();
|
||||
end
|
||||
|
||||
function onPush(player, quest, npc)
|
||||
|
||||
local sequence = quest:getSequence();
|
||||
local classId = npc:GetActorClassId();
|
||||
player:SendMessage(0x20, "", "Sequence: "..sequence.." Class Id: "..classId);
|
||||
if (sequence == SEQ_000) then
|
||||
|
||||
elseif (sequence == SEQ_010) then
|
||||
|
||||
end
|
||||
quest:UpdateENPCs();
|
||||
end
|
||||
|
||||
|
||||
function onNotice(player, quest, target)
|
||||
callClientFunction(player, "delegateEvent", player, quest, "processEvent000_1"); -- Describes what an Instance is
|
||||
player:EndEvent();
|
||||
quest:UpdateENPCs();
|
||||
end
|
||||
|
||||
|
||||
|
||||
function seq000_onTalk(player, quest, npc, classId)
|
||||
|
||||
if (classId == MOMODI) then
|
||||
callClientFunction(player, "delegateEvent", player, quest, "processEvent010");
|
||||
player:EndEvent();
|
||||
quest:StartSequence(SEQ_005);
|
||||
GetWorldManager():DoZoneChange(player, 175, nil, 0, 15, player.positionX, player.positionY, player.positionZ, player.rotation);
|
||||
return;
|
||||
elseif (classId == BEAMING_ADVENTURER) then
|
||||
callClientFunction (player, "delegateEvent", player, quest, "processEvent100_6");
|
||||
elseif (classId == AMIABLE_ADVENTURER) then
|
||||
callClientFunction (player, "delegateEvent", player, quest, "processEvent100_3");
|
||||
elseif (classId == MOROSE_MERCHANT) then
|
||||
callClientFunction (player, "delegateEvent", player, quest, "processEvent100_2");
|
||||
elseif (classId == NARROW_EYED_ADVENTURER) then
|
||||
callClientFunction(player, "delegateEvent", player, quest, "processEvent100_7");
|
||||
elseif (classId == UNCONCERNED_PASSERBY) then
|
||||
callClientFunction(player, "delegateEvent", player, quest, "processTtrBlkNml001"); --"processEvent100_9");
|
||||
elseif (classId == VKOROLON) then
|
||||
callClientFunction(player, "delegateEvent", player, quest, "defaultTalkWithVkorolon_001");
|
||||
elseif (classId == WELL_BUNDLED_ADVENTURER) then
|
||||
callClientFunction(player, "delegateEvent", player, quest, "processEvent100_4");
|
||||
elseif (classId == WISPILY_WHISKERED_WOODWORKER) then
|
||||
callClientFunction(player, "delegateEvent", player, quest, "processEvent100_8");
|
||||
elseif (classId == MIOUNNE) then
|
||||
callClientFunction(player, "delegateEvent", player, quest, "processEvent110");
|
||||
player:EndEvent();
|
||||
quest:StartSequence(SEQ_005);
|
||||
GetWorldManager():DoZoneChange(player, 155, nil, 0, 15, player.positionX, player.positionY, player.positionZ, player.rotation);
|
||||
end
|
||||
|
||||
player:EndEvent();
|
||||
end
|
||||
|
||||
function seq005_onTalk(player, quest, npc, classId)
|
||||
if (classId == MOMODI) then
|
||||
callClientFunction(player, "delegateEvent", player, quest, "processEvent010_2");
|
||||
end
|
||||
|
||||
player:EndEvent();
|
||||
end
|
||||
|
||||
|
||||
function getJournalInformation(player, quest)
|
||||
return 0, ITEM_VELODYNA_COSMOS, ITEM_COLISEUM_PASS;
|
||||
end
|
||||
|
||||
|
||||
function getJournalMapMarkerList(player, quest)
|
||||
local sequence = quest:getSequence();
|
||||
local possibleMarkers = {};
|
||||
|
||||
if (sequence == SEQ_000) then
|
||||
table.insert(possibleMarkers, MRKR_MIOUNNE);
|
||||
elseif (sequence == SEQ_010) then
|
||||
|
||||
end
|
||||
|
||||
return unpack(possibleMarkers)
|
||||
end
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue