Added homepoint and aetheryte code. You can set the homepoint on an aetheryte or inn and the return menu will show the correct response. Added effects/msgs to teleport/return. Some sql changes I forgot.

This commit is contained in:
Filip Maj 2017-05-01 22:30:43 -04:00
parent 8c9ecebae6
commit 1516e0bc50
18 changed files with 481 additions and 140 deletions

113
data/scripts/aetheryte.lua Normal file
View file

@ -0,0 +1,113 @@
--[[
Aetheryte related info
--]]
aetheryteParentLinks = {
--La Noscea
[1280001] = nil,
[1280002] = {1280007, 1280008, 1280009, 0, 0},
[1280003] = {1280010, 0, 0, 0, 0},
[1280004] = {1280011, 1280018, 0, 0, 0},
[1280005] = {1280020, 1280012, 1280013, 1280014, 0},
[1280006] = {1280015, 1280016, 1280017, 0, 0},
--Thanalan
[1280031] = nil,
[1280032] = {1280037, 1280038, 1280052, 0, 0},
[1280033] = {1280039, 1280040, 1280041, 0, 0},
[1280034] = {1280042, 1280043, 1280044, 1280054, 0},
[1280035] = {1280045, 1280046, 1280047, 0, 0},
[1280036] = {1280048, 1280049, 1280050, 0, 0},
--Black Shroud
[1280061] = nil,
[1280062] = {1280067, 1280068, 1280069, 1280083, 0},
[1280063] = {1280070, 1280071, 1280072, 0, 0},
[1280064] = {1280073, 1280074, 1280075, 1280082, 0},
[1280065] = {1280076, 1280077, 1280078, 0, 0},
[1280066] = {1280079, 1280080, 1280081, 0, 0},
--Coerthas
[1280092] = {1280097, 1280098, 1280099, 0, 0},
[1280093] = {1280100, 1280101, 1280102, 0, 0},
[1280094] = {1280103, 1280104, 0, 0, 0},
[1280095] = {1280105, 1280106, 1280107, 0, 0},
[1280096] = {1280108, 1280109, 1280110, 0, 0},
--Mor Dhona
[1280121] = {1280124, 1280125, 0, 0, 0},
[1280122] = {1280123, 0, 0, 0, 0}
}
aetheryteChildLinks = {
--La Noscea
[1280007] = 1280002,
[1280008] = 1280002,
[1280009] = 1280002,
[1280010] = 1280003,
[1280011] = 1280004,
[1280012] = 1280005,
[1280013] = 1280005,
[1280014] = 1280005,
[1280015] = 1280006,
[1280016] = 1280006,
[1280017] = 1280006,
[1280018] = 1280004,
[1280020] = 1280005,
--Thanalan
[1280037] = 1280032,
[1280038] = 1280032,
[1280039] = 1280033,
[1280040] = 1280033,
[1280041] = 1280033,
[1280042] = 1280034,
[1280043] = 1280034,
[1280044] = 1280034,
[1280045] = 1280035,
[1280046] = 1280035,
[1280047] = 1280035,
[1280048] = 1280036,
[1280049] = 1280036,
[1280050] = 1280036,
[1280052] = 1280032,
[1280054] = 1280034,
--Black Shroud
[1280067] = 1280062,
[1280068] = 1280062,
[1280069] = 1280062,
[1280070] = 1280063,
[1280071] = 1280063,
[1280072] = 1280063,
[1280073] = 1280064,
[1280074] = 1280064,
[1280075] = 1280064,
[1280076] = 1280065,
[1280077] = 1280065,
[1280078] = 1280065,
[1280079] = 1280066,
[1280080] = 1280066,
[1280081] = 1280066,
[1280082] = 1280064,
[1280083] = 1280062,
--Coerthas
[1280097] = 1280092,
[1280098] = 1280092,
[1280099] = 1280092,
[1280100] = 1280093,
[1280101] = 1280093,
[1280102] = 1280093,
[1280103] = 1280094,
[1280104] = 1280094,
[1280105] = 1280095,
[1280106] = 1280095,
[1280107] = 1280095,
[1280108] = 1280096,
[1280109] = 1280096,
[1280110] = 1280096,
--Mor Dhona
[1280123] = 1280122,
[1280124] = 1280121,
[1280125] = 1280121
}
aetheryteTeleportPositions = {
[1280001] = {0.0, 0.0, 0.0}
}

View file

@ -6,35 +6,68 @@ Functions:
eventAetheryteChildSelect(showTeleport, parentAetheryteID, animaAmount, animaCost(always 1)): Opens menu
eventAetheryteChildDesion(aetheryteId): "Your homepoint is now X"
processGuildleveBoost(favourCost, currentFavour): Ask: "Invoke the aspect of your Guardian deity to gain a temporary boon for the duration of a levequest."
processGuildlevePlaying(??)
processGuildleveJoin() - Ask: "Do you wish to join your party leader's levequest?"
eventGLSelect(?) - Open GL selector
eventGLSelectDetail(glid, ?, reward, rewardQuantity, subreward, subrewardQuantity, faction, ?, completed) - Show GL details
eventGLDifficulty() - Open difficulty selector
eventGLStart(glId, difficulty, evaluatingFaction, areaFactionStanding, factionReward, warningBoundByDuty, warningTooFar, warningYouCannotRecieve, warningChangingClass) - Confirmation dialog
eventGLBoost(currentFavor, minNeeded) - Ask player for Guardian Aspect
eventGLPlay(??) - Open Menu (GL active version)
eventGLReward (glId, clearTime, missionBonus, difficultyBonus, factionNumber, factionBonus, factionCredit, reward, rewardQuantity, subreward, subrewardQuantity, difficulty) - Open reward window
eventGLJoin () - Ask to join party leader's leve
--]]
require ("global")
require ("aetheryte")
function init(npc)
return false, false, 0, 0;
end
function onEventStarted(player, npc, triggerName)
menuChoice = callClientFunction(player, "eventAetheryteChildSelect", true, 1280062, 4, 1);
function onEventStarted(player, aetheryte, triggerName)
aetheryteId = aetheryte:GetActorClassId();
parentNode = aetheryteParentLinks[aetheryteId];
menuChoice = callClientFunction(player, "eventAetheryteChildSelect", true, aetheryteChildLinks[aetheryteId], 100, 1);
--Teleport
if (menuChoice == 2) then
--Init Levequest
elseif (menuChoice == -1) then
callClientFunction(player, "eventGLSelect", 0);
doLevequestInit(player, aetheryte);
--Set Homepoint
elseif (menuChoice == -2) then
player:SetHomePoint(aetheryteId);
callClientFunction(player, "eventAetheryteChildDesion", aetheryteId);
--View Faction Standing
elseif (menuChoice == -3) then
player:SendGameMessage(player, aetheryte, 27, 0x20);
player:SendGameMessage(player, aetheryte, 28, 0x20, 1, 15);
player:SendGameMessage(player, aetheryte, 29, 0x20, 2, 10);
player:SendGameMessage(player, aetheryte, 30, 0x20, 3, 5);
end
player:EndEvent();
end
function doLevequestInit(player, aetheryte)
::SELECT_LOOP::
unknown, glId = callClientFunction(player, "eventGLSelect", 0x0);
if (glId ~= 0) then
::SELECT_DETAIL::
unknown, begin = callClientFunction(player, "eventGLSelectDetail", glId, 0xa, 0xf4241, 1000, 0, 0, 0, true, false);
if (begin) then
::SELECT_DIFFICULTY::
difficulty = callClientFunction(player, "eventGLDifficulty", glId);
if (difficulty == nil) then goto SELECT_DETAIL; end
confirmResult = callClientFunction(player, "eventGLStart", glId, difficulty, 1, 10, 20, 0, 0, 0, 0);
if (confirmResult == nil) then goto SELECT_DIFFICULTY; else
end
else
goto SELECT_LOOP;
end
end
end

View file

@ -4,21 +4,106 @@ AetheryteParent Script
Functions:
eventAetheryteParentSelect(0x0, false, 0x60, 0x138807,0,0,0,0)
eventAetheryteParentDesion(sheetId)
processGuildleveBoost(?, ?)
processGuildlevePlaying(??)
processGuildleveJoin() - Join party leader's levequest?
eventAetheryteParentSelect(showTeleportMenu, animaAmount, gate1, gate2, gate3, gate4, gate5) - Open Menu
eventAetheryteParentDesion(sheetId) - Show Homepoint Set Message
eventGLSelect(?) - Open GL selector
eventGLSelectDetail(glid, ?, reward, rewardQuantity, subreward, subrewardQuantity, faction, ?, completed) - Show GL details
eventGLDifficulty() - Open difficulty selector
eventGLStart(glId, difficulty, evaluatingFaction, areaFactionStanding, factionReward, warningBoundByDuty, warningTooFar, warningYouCannotRecieve, warningChangingClass) - Confirmation dialog
eventGLBoost(currentFavor, minNeeded) - Ask player for Guardian Aspect
eventGLPlay(??) - Open Menu (GL active version)
eventGLReward (glId, clearTime, missionBonus, difficultyBonus, factionNumber, factionBonus, factionCredit, reward, rewardQuantity, subreward, subrewardQuantity, difficulty) - Open reward window
eventGLJoin () - Ask to join party leader's leve
--callClientFunction(player, "eventGLBoost", 0xc8, 0xb);
--callClientFunction(player, "eventGLReward", 0x2a48, 120, 123, 125, 1, 111, 0, 0xf4241, 5, 0, 0, 3);
--]]
require ("global")
require ("aetheryte")
function init(npc)
return false, false, 0, 0;
end
function onEventStarted(player, npc, triggerName)
callClientFunction(player, "eventAetheryteParentSelect", 0x0, false, 0x61, 0x0,0,0,0,0);
function onEventStarted(player, aetheryte, triggerName)
local aetheryteId = aetheryte:GetActorClassId();
local childNodes = aetheryteParentLinks[aetheryteId];
local listPosition = 1;
local activeChildNodes = {0, 0, 0, 0, 0};
if (player:HasAetheryteNodeUnlocked(childNodes[1])) then
activeChildNodes[listPosition] = childNodes[1];
listPosition = listPosition+1;
end
if (player:HasAetheryteNodeUnlocked(childNodes[2])) then
activeChildNodes[listPosition] = childNodes[2];
listPosition = listPosition+1;
end
if (player:HasAetheryteNodeUnlocked(childNodes[3])) then
activeChildNodes[listPosition] = childNodes[3];
listPosition = listPosition+1;
end
if (player:HasAetheryteNodeUnlocked(childNodes[4])) then
activeChildNodes[listPosition] = childNodes[4];
listPosition = listPosition+1;
end
if (player:HasAetheryteNodeUnlocked(childNodes[5])) then
activeChildNodes[listPosition] = childNodes[5];
listPosition = listPosition+1;
end
local showTeleportOptions = true;
if (listPosition == 1) then
showTeleportOptions = false;
end
local choice = callClientFunction(player, "eventAetheryteParentSelect", showTeleportOptions, 100, activeChildNodes[1], activeChildNodes[2], activeChildNodes[3], activeChildNodes[4], activeChildNodes[5]);
if (choice ~= nil) then
--Init Leavequest
if (choice == -1) then
doLevequestInit(player, aetheryte);
--Set Homepoint
elseif (choice == -2) then
player:SetHomePoint(aetheryteId);
callClientFunction(player, "eventAetheryteParentDesion", aetheryteId);
--View Faction Standings
elseif (choice == -3) then
player:SendGameMessage(player, aetheryte, 124, 0x20);
player:SendGameMessage(player, aetheryte, 125, 0x20, 1, 15);
player:SendGameMessage(player, aetheryte, 126, 0x20, 2, 10);
player:SendGameMessage(player, aetheryte, 127, 0x20, 3, 5);
--Teleport to Gate
elseif (choice > 0) then
end
end
player:EndEvent();
end
end
function doLevequestInit(player, aetheryte)
::SELECT_LOOP::
unknown, glId = callClientFunction(player, "eventGLSelect", 0x0);
if (glId ~= 0) then
::SELECT_DETAIL::
unknown, begin = callClientFunction(player, "eventGLSelectDetail", glId, 0xa, 0xf4241, 1000, 0, 0, 0, true, false);
if (begin) then
::SELECT_DIFFICULTY::
difficulty = callClientFunction(player, "eventGLDifficulty", glId);
if (difficulty == nil) then goto SELECT_DETAIL; end
confirmResult = callClientFunction(player, "eventGLStart", glId, difficulty, 1, 10, 20, 0, 0, 0, 0);
if (confirmResult == nil) then goto SELECT_DIFFICULTY; else
end
else
goto SELECT_LOOP;
end
end
end

View file

@ -12,10 +12,10 @@ eventConfirm(isReturn, isInBattle, cityReturnNum, 138821, forceAskReturnOnly)
require ("global")
function doTeleport(region, aetheryte)
end
function onEventStarted(player, actor, triggerName, isTeleport)
local worldMaster = GetWorldMaster();
if (isTeleport == 0) then
while (true) do
regionChoice = callClientFunction(player, "delegateCommand", actor, "eventRegion", 100);
@ -27,45 +27,33 @@ function onEventStarted(player, actor, triggerName, isTeleport)
if (aetheryteChoice == nil) then break end
confirmChoice = callClientFunction(player, "delegateCommand", actor, "eventConfirm", false, false, 1, 138824, false);
player:PlayAnimation(0x4000FFA);
player:SendGameMessage(worldMaster, 34101, 0x20, 2, 0x13883d, 100, 100);
confirmChoice = callClientFunction(player, "delegateCommand", actor, "eventConfirm", false, false, 1, 138824, false);
if (confirmChoice == 1) then
doTeleport(regionChoice, aetheryteChoice);
player:PlayAnimation(0x4000FFB);
player:SendGameMessage(worldMaster, 34105, 0x20);
--Do teleport
end
player:endEvent();
return;
end
end
else
callClientFunction(player, "delegateCommand", actor, "eventConfirm", true, false, 1, 0x138824, false);
player:PlayAnimation(0x4000FFA);
local choice, wasMulti = callClientFunction(player, "delegateCommand", actor, "eventConfirm", true, false, player:GetHomePointInn(), player:GetHomePoint(), false);
if (wasMulti and choice == 1 or choice == 2) then
player:PlayAnimation(0x4000FFB);
player:SendGameMessage(worldMaster, 34104, 0x20);
--Do return
elseif (not wasMulti and choice == 1) then
player:PlayAnimation(0x4000FFB);
player:SendGameMessage(worldMaster, 34104, 0x20);
--Do return
end
end
player:endEvent();
end
function onEventUpdate(player, actor, step, arg1)
menuId = player:GetCurrentMenuId();
if (menuId == 0) then --Region
if (arg1 ~= nil and arg1 >= 1) then
player:SetCurrentMenuId(1);
player:RunEventFunction("delegateCommand", actor, "eventAetheryte", arg1, 2, 2, 2, 4, 4, 4);
else
player:EndCommand();
end
elseif (menuId == 1) then --Aetheryte
if (arg1 == nil) then
player:EndCommand();
return;
end
player:SetCurrentMenuId(2);
player:RunEventFunction("delegateCommand", actor, "eventConfirm", false, false, 1, 138824, false);
elseif (menuId == 2) then --Confirm
player:EndCommand();
end
end
end

View file

@ -0,0 +1,25 @@
function onCreate(starterPlayer, contentArea, contentGroup, director)
yshtola = contentArea:SpawnActor(2290001, "yshtola", -8, 16.35, 6, 0.5);
stahlmann = contentArea:SpawnActor(2290002, "stahlmann", 0, 16.35, 22, 3);
mob1 = contentArea:SpawnActor(2205403, "mob1", -3.02+3, 17.35, 14.24, -2.81);
mob2 = contentArea:SpawnActor(2205403, "mob2", -3.02, 17.35, 14.24, -2.81);
mob3 = contentArea:SpawnActor(2205403, "mob3", -3.02-3, 17.35, 14.24, -2.81);
contentGroup:AddMember(starterPlayer);
contentGroup:AddMember(director);
contentGroup:AddMember(yshtola);
contentGroup:AddMember(stahlmann);
contentGroup:AddMember(mob1);
contentGroup:AddMember(mob2);
contentGroup:AddMember(mob3);
end
function onDestroy()
end

View file

@ -2,21 +2,30 @@ require ("global")
require ("tutorial")
require ("quests/man/man0l0")
--processTtrBtl001: Active Mode Tutorial
--processTtrBtl002: Targetting Tutorial (After active mode done)
function init()
return "/Director/Quest/QuestDirectorMan0l001";
end
function onEventStarted(player, actor, triggerName)
function onCreateContentArea(players, director, contentArea, contentGroup)
contentGroup = GetWorldManager():CreateContentGroup(actor);
contentGroup:AddMember(director);
contentGroup:AddMember(GetWorldManager():GetActorInWorldByUniqueId("opening_jelly"));
contentGroup:AddMember(GetWorldManager():GetActorInWorldByUniqueId("opening_yshtola"));
contentGroup:AddMember(GetWorldManager():GetActorInWorldByUniqueId("opening_stahlmann"));
yshtola = contentArea:SpawnActor(2290001, "yshtola", -8, 16.35, 6, 0.5);
stahlmann = contentArea:SpawnActor(2290002, "stahlmann", 0, 16.35, 22, 3);
mob1 = contentArea:SpawnActor(2205403, "mob1", -3.02+3, 17.35, 14.24, -2.81);
mob2 = contentArea:SpawnActor(2205403, "mob2", -3.02, 17.35, 14.24, -2.81);
mob3 = contentArea:SpawnActor(2205403, "mob3", -3.02-3, 17.35, 14.24, -2.81);
contentGroup:AddMember(player);
contentGroup:AddMember(director);
contentGroup:AddMember(yshtola);
contentGroup:AddMember(stahlmann);
contentGroup:AddMember(mob1);
contentGroup:AddMember(mob2);
contentGroup:AddMember(mob3);
end
function onEventStarted(player, director, triggerName)
man0l0Quest = player:GetQuest("Man0l0");
startTutorialMode(player);
@ -24,7 +33,7 @@ function onEventStarted(player, actor, triggerName)
player:EndEvent();
waitForSignal("playerActive");
wait(1); --If this isn't here, the scripts bugs out. TODO: Find a better alternative.
kickEventContinue(player, actor, "noticeEvent", "noticeEvent");
kickEventContinue(player, director, "noticeEvent", "noticeEvent");
callClientFunction(player, "delegateEvent", player, man0l0Quest, "processTtrBtl002", nil, nil, nil);
player:EndEvent();
wait(4);
@ -45,7 +54,7 @@ function onEventStarted(player, actor, triggerName)
wait(7);
player:ChangeMusic(7);
player:ChangeState(0);
kickEventContinue(player, actor, "noticeEvent", "noticeEvent");
kickEventContinue(player, director, "noticeEvent", "noticeEvent");
callClientFunction(player, "delegateEvent", player, man0l0Quest, "processEvent000_3", nil, nil, nil);
--[[
@ -64,26 +73,7 @@ function onEventStarted(player, actor, triggerName)
man0l0Quest:NextPhase(10);
player:EndEvent();
player:GetZone():ContentFinished();
GetWorldManager():DoZoneChange(player, 230, "PrivateAreaMasterPast", 1, 15, -826.868469, 6, 193.745865, -0.008368492);
end
function onUpdate()
end
function onTalkEvent(player, npc)
end
function onPushEvent(player, npc)
end
function onCommandEvent(player, command)
end
function onEventUpdate(player, npc)
end
function onCommand(player, command)
end

View file

@ -30,8 +30,13 @@ function onEventStarted(player, npc)
if (choice == 1) then
GetWorldManager():DoZoneChange(player, 13);
elseif (choice == 2) then
--Do Set Homepoint
elseif (choice == 2) then
if (player:GetHomePointInn() ~= 2) then
player:SetHomePointInn(2);
player:SendGameMessage(GetWorldMaster(), 60019, 0x20, 2075); --Secondary homepoint set to the Roost
else
player:SendGameMessage(GetWorldMaster(), 51140, 0x20); --This inn is already your Secondary Homepoint
end
end
elseif (result == 1) then
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithVkorolon_001", -1, -1);

View file

@ -10,8 +10,8 @@ function onSpawn(player, npc)
player:SetEventStatus(npc, "pushDefault", true, 0x2);
npc:SetQuestGraphic(player, 0x3);
else
player:SetEventStatus(npc, "pushDefault", false, 0x2);
npc:SetQuestGraphic(player, 0x0);
player:SetEventStatus(npc, "pushDefault", true, 0x2);
npc:SetQuestGraphic(player, 0x3);
end
end
@ -27,16 +27,21 @@ function onEventStarted(player, npc, triggerName)
man0l0Quest:NextPhase(5);
worldMaster = GetWorldMaster();
player:SendGameMessage(player, worldMaster, 34108, 0x20);
player:SendGameMessage(player, worldMaster, 50011, 0x20);
director = player:GetZone():CreateDirector("Quest/QuestDirectorMan0l001");
contentArea = player:GetZone():CreateContentArea(player, "/Area/PrivateArea/Content/PrivateAreaMasterSimpleContent", "man0l01", "SimpleContent30002", "Quest/QuestDirectorMan0l001");
if (contentArea == nil) then
player:EndEvent();
return;
end
director = contentArea:GetContentDirector();
player:KickEvent(director, "noticeEvent", true);
player:AddDirector(director);
player:SetLoginDirector(director);
player:SetLoginDirector(director);
GetWorldManager():DoZoneChangeContent(player, contentArea, -5, 16.35, 6, 0.5, 16);
GetWorldManager():DoZoneChange(player, 9);
else
player:EndEvent();
end

View file

@ -7,7 +7,12 @@ function onEventStarted(player, npc)
if (choice == 1) then
GetWorldManager():DoZoneChange(player, 13);
elseif (choice == 2) then
--Do Set Homepoint
if (player:GetHomePointInn() ~= 1) then
player:SetHomePointInn(1);
player:SendGameMessage(GetWorldMaster(), 60019, 0x20, 1070); --Secondary homepoint set to the Mizzenmast
else
player:SendGameMessage(GetWorldMaster(), 51140, 0x20); --This inn is already your Secondary Homepoint
end
end
player:EndEvent();

View file

@ -1,7 +1,19 @@
require ("global")
function onEventStarted(player, npc)
defaultWil = GetStaticActor("DftWil");
result = player:RunEventFunction("delegateEvent", player, defaultWil, "defaultTalkWithInn_Desk_2", nil, nil, nil); --BTN
player:EndEvent();
defaultWil = GetStaticActor("DftWil");
choice = callClientFunction(player, "delegateEvent", player, defaultWil, "defaultTalkWithInn_Desk_2", nil, nil, nil);
if (choice == 1) then
GetWorldManager():DoZoneChange(player, 11);
elseif (choice == 2) then
if (player:GetHomePointInn() ~= 3) then
player:SetHomePointInn(3);
player:SendGameMessage(GetWorldMaster(), 60019, 0x20, 3071); --Secondary homepoint set to the Hourglass
else
player:SendGameMessage(GetWorldMaster(), 51140, 0x20); --This inn is already your Secondary Homepoint
end
end
player:EndEvent();
end