mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-06-08 21:44:35 +02:00
Updated Scripts, removed all the old unique ones for the opening quest.
This commit is contained in:
parent
2279ee7017
commit
958a87edf2
31 changed files with 985 additions and 792 deletions
|
@ -11,47 +11,36 @@ loadTextData()
|
|||
Params: None
|
||||
|
||||
start(facility, requestsMode, material1, material2, material3, material4, material5, material6, material7, material8)
|
||||
Desc: Opens the Craft Start widget, with any preloaded materials. Widget has two modes; one for normal synthesis and another
|
||||
for local leve "requested items" mode.
|
||||
Params: * facility/widgetMode - The current facility id buff the player may have. After opening a recipe tab, start() has to be called with this
|
||||
set to -1. After the player chooses a recipe, start() has to be called with this set to -2.
|
||||
* requestMode - If true, switches the UI to Requested Items mode otherwise it opens Normal Synthesis mode.
|
||||
* material1-8 - ItemID for each of the 8 material slots. If empty, they must be set to 0 or the client will crash.
|
||||
Desc: Opens the Craft Start widget, with any preloaded materials. Widget has two modes; one for normal synthesis and another
|
||||
for local leve "requested items" mode.
|
||||
Params: * facility - The current facility id buff the player may have.
|
||||
* requestMode - If true, switches the UI to Requested Items mode otherwise it opens Normal Synthesis mode.
|
||||
* material1-8 - ItemID for each of the 8 material slots. If empty, they must be set to 0 or the client will crash.
|
||||
|
||||
closeCraftStartWidget()
|
||||
Desc: Closes the Craft Start widget.
|
||||
Params: None
|
||||
|
||||
selectRcp(item1, item2, item3, item4, item5, item6, item7, item8)
|
||||
Desc: Opens a recipe selection window. If one recipe is provided, automatically selects that recipe.
|
||||
Params: * itemId1-8 - The itemIDs to show in the list. If only one provided, select it.
|
||||
selectRcp(itemId)
|
||||
Desc: Selects the recipe to be crafted. May be a legacy function but still required to properly initialize the UI. Requires start() to have
|
||||
been called.
|
||||
Params: * itemId - The itemID of the item to be crafted.
|
||||
|
||||
confirmRcp(craftedItem, quantity, crystalItem1, crystalQuantity1, crystalQuantity1, crystalItem2, crystalQuantity2, recommendedSkill, recommendedFacility)
|
||||
Desc: Opens the confirmation window, detailing what is needed and the item that will be created. Requires a selectRcp() call first.
|
||||
Params: * craftedItem - The itemID of the item to be crafted.
|
||||
* quantity - Quantity of crafted items.
|
||||
* crystalItem1 - The first required crystal itemID for crafting.
|
||||
* crystalQuantity1 - Quantity of the first crystal.
|
||||
* crystalItem2 - The second required crystal itemID for crafting.
|
||||
* crystalQuantity2 - Quantity of the second crystal.
|
||||
* recommendedSkill - Which itemID to display under the "Recommended Skill" panel.
|
||||
* recommendedFacility - Which facility to display under the "Recommended Facility" panel.
|
||||
Desc: Opens the confirmation window, detailing what is needed and the item that will be created. Requires a selectRcp() call first.
|
||||
Params: * craftedItem - The itemID of the item to be crafted.
|
||||
* quantity - Quantity of crafted items.
|
||||
* crystalItem1 - The first required crystal itemID for crafting.
|
||||
* crystalQuantity1 - Quantity of the first crystal.
|
||||
* crystalItem2 - The second required crystal itemID for crafting.
|
||||
* crystalQuantity2 - Quantity of the second crystal.
|
||||
* recommendedSkill - Which itemID to display under the "Recommended Skill" panel.
|
||||
* recommendedFacility - Which facility to display under the "Recommended Facility" panel.
|
||||
|
||||
selectCraftQuest()
|
||||
Desc: Opens the journal to select the local leve that the player would like to do.
|
||||
Params: None
|
||||
|
||||
confirmLeve()
|
||||
Desc: Opens the summery page for the local leve.
|
||||
Params: * localLeveID -
|
||||
* craftedItem -
|
||||
* ?
|
||||
* ?
|
||||
* itemsCompleted -
|
||||
* remainingMaterials -
|
||||
* ?
|
||||
* ?
|
||||
|
||||
askContinueLocalLeve(localLeveID, craftedItem, itemsCompleted, craftTotal, attempts)
|
||||
Desc: Opens the dialog to continue crafting for a local leve after an item was completed.
|
||||
Params: * localLeveID - The id of the current leve in progress.
|
||||
|
@ -79,7 +68,7 @@ craftCommandUI(classID, hasWait, command1, command2, command3, command4, command
|
|||
* command1-5 - Five possible crafting commands (crafting skills).
|
||||
|
||||
craftTuningUI(command1, command2, command3, command4, command5, command6, command7, command8)
|
||||
Desc: Displays only the provided commands for the "Double Down" phase that happens after crafting.
|
||||
Desc: Displays a full list of commands for the legacy "Tuning" phase that happens after crafting. Deprecated in 1.23b.
|
||||
Params: * command1-8 - The list of commands available.
|
||||
|
||||
updateInfo(progress, durability, quality, tuningItem, tuningItemQuality, tuningItemQuantity, hqChance)
|
||||
|
@ -100,6 +89,17 @@ cfmQst()
|
|||
Desc: Quest confirmation window for when starting a crafting quest from the journal.
|
||||
Params:
|
||||
|
||||
confirmLeve()
|
||||
Desc: Opens the summery page for the local leve.
|
||||
Params: * localLeveID - The quest id of the leve you are confirming.
|
||||
* difficulty - Changes the objective.
|
||||
* craftedItem? -
|
||||
* ? -
|
||||
* numSuccess - The number of successful crafts you did.
|
||||
* remainingMaterials - The number of materials you have left.
|
||||
* hasMaterials - Shows the in-progress panel of successes and attempts left.
|
||||
* ? -
|
||||
|
||||
startRepair(craftMode, item, quality, durability, hasMateria, spiritbind)
|
||||
Desc: Opens the repair item widget.
|
||||
Params: * craftMode - Either 0 or 1. Anything else crashes.
|
||||
|
@ -133,214 +133,289 @@ Class ID + Starting skill
|
|||
35 ALC = 22586
|
||||
36 CUL = 22592
|
||||
|
||||
Leve objectives/rewards are in passiveGL_craft.
|
||||
|
||||
* Index 1:
|
||||
* Index 2: Recommended Class
|
||||
* Index 3: Issuing Authority
|
||||
* Index 7: Levequest Location
|
||||
* Index 8: Deliver Display Name
|
||||
* Starts at index 14. Four sections for the four difficulties.
|
||||
* Required Item, Amount, ?, Recommended Level, , Reward Item, Reward Amount, |
|
||||
|
||||
--]]
|
||||
|
||||
require ("global")
|
||||
|
||||
|
||||
skillAnim = {
|
||||
local skillAnim = {
|
||||
[22553] = 0x10002000;
|
||||
[22554] = 0x10001000;
|
||||
[22555] = 0x10003000;
|
||||
[29531] = 0x10009002;
|
||||
}
|
||||
|
||||
|
||||
materialSlots = {0,0,0,0,0,0,0,0}; -- The 8 slots
|
||||
recentRecipe = {10008205, 4030706, 4070009} -- Recent Recipe list
|
||||
awardedRecipe = {7020105, 7030011} -- Awarded Recipe list
|
||||
|
||||
materialRecipe = { -- Always 8 params because we can't have any nils here for "start" command
|
||||
[6071007] = {4070402, 4070309,0,0,0,0,0,0},
|
||||
[10008205] = {10008005,10008005,0,0,0,0,0,0},
|
||||
[10009617] = {4040009, 4040010, 4040011,0,0,0,0,0},
|
||||
[4070009] = {4070006, 10005401, 10008203,0,0,0,0,0},
|
||||
[4070010] = {10008204,10008106,10005302,0,0,0,0,0}
|
||||
}
|
||||
|
||||
materialQuest = { -- What a quest or leve will preload slots with, in addition to any extras the player does manual
|
||||
[0] = {0,0,0,0,0,0,0,0},
|
||||
[1] = {0,0,0,0,0,0,0,0},
|
||||
[110442] = {11000075, 11000074, 0, 0, 0, 0, 0, 0}
|
||||
}
|
||||
|
||||
local craftStartWidgetOpen = false;
|
||||
|
||||
function onEventStarted(player, commandactor, triggerName, arg1, arg2, arg3, arg4, checkedActorId)
|
||||
|
||||
MENU_CANCEL, MENU_MAINHAND, MENU_OFFHAND, MENU_REQUEST = 0, 1, 2, 3;
|
||||
MENU_RECIPE, MENU_AWARDED, MENU_RECIPE_DETAILED, MENU_AWARDED_DETAILED = 7, 8, 9, 10;
|
||||
local MENU_CANCEL, MENU_MAINHAND, MENU_OFFHAND, MENU_REQUEST = 0, 1, 2, 3;
|
||||
local MENU_RECENT, MENU_AWARDED, MENU_RECENT_DETAILED, MENU_AWARDED_DETAILED = 7, 8, 9, 10;
|
||||
|
||||
debugMessage = false;
|
||||
local debugMessage = true;
|
||||
|
||||
isRecipeRecentSent = false;
|
||||
isRecipeAwardSent = false;
|
||||
detailWindow = true;
|
||||
isRequested = false; -- False = The default state. True = User picked a quest recipe/local leve
|
||||
facilityId = 0;
|
||||
chosenQuest = 0; -- Use this to store any chosen recipe/local leve
|
||||
recipeDetail = 0;
|
||||
detailWindowState = 0;
|
||||
|
||||
craftJudge = GetStaticActor("CraftJudge");
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "loadTextData", commandactor);
|
||||
|
||||
chosenOperation = -1;
|
||||
|
||||
local isRecipeRecentSent = false;
|
||||
local isRecipeAwardSent = false;
|
||||
|
||||
local craftJudge = GetStaticActor("CraftJudge");
|
||||
local recipeResolver = GetRecipeResolver();
|
||||
|
||||
while chosenOperation ~= 0 do
|
||||
|
||||
player:ChangeState(30);
|
||||
|
||||
if debugMessage then player:SendMessage(0x20, "", "[DEBUG] Menu ID: "..tostring(chosenOperation).." Recipe : "..tostring(recipeMode).." Quest : "..chosenQuest); end
|
||||
|
||||
|
||||
if materialQuest[chosenQuest] then
|
||||
if debugMessage then player:SendMessage(0x20, "", "Key is valid: "..chosenQuest); end
|
||||
materialSlots = materialQuest[chosenQuest];
|
||||
else
|
||||
if debugMessage then player:SendMessage(0x20, "", "Key is not valid: "..chosenQuest); end
|
||||
end
|
||||
local operationResult;
|
||||
local operationMode = -1;
|
||||
local recipeMode = -1;
|
||||
local chosenMaterials;
|
||||
|
||||
local facilityId = 0;
|
||||
local isRequestedItemsMode = false; -- False = The default state. True = User picked a quest recipe/local leve
|
||||
local recentRecipes;
|
||||
local awardedRecipes;
|
||||
|
||||
local currentCraftQuest = nil; -- Use this to store any chosen craft quest
|
||||
local currentCraftQuestGuildleve = nil; -- Use this to store any chosen local leve
|
||||
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "loadTextData", commandactor);
|
||||
|
||||
|
||||
if isRecipeRecentSent == false then -- If Recipe button not hit, aka default state.
|
||||
chosenOperation, recipeMode = callClientFunction(player, "delegateCommand", craftJudge, "start", commandactor, facilityId, isRequested, unpack(materialSlots)); -- Initial window
|
||||
player:ChangeState(30);
|
||||
|
||||
while operationMode ~= 0 do
|
||||
-- Figure out the prepped materials.
|
||||
local prepedMaterials = {0,0,0,0,0,0,0,0};
|
||||
-- Quest requested mode materials
|
||||
if (isRequestedItemsMode == true) then
|
||||
prepedMaterials = recipeResolver.RecipeToMatIdTable(currentCraftQuestGuildleve.getRecipe());
|
||||
-- Recent Recipes/Awarded recipes materials
|
||||
elseif ((operationMode == MENU_RECENT or operationMode == MENU_AWARDED) and recipeMode != 0) then
|
||||
if (operationMode == MENU_RECENT) then
|
||||
prepedMaterials = recipeResolver.RecipeToMatIdTable(recentRecipes[recipeMode]);
|
||||
else
|
||||
prepedMaterials = recipeResolver.RecipeToMatIdTable(awardedRecipes[recipeMode]);
|
||||
end
|
||||
end
|
||||
|
||||
-- Set this param correctly
|
||||
local facilityIdParam = facilityId;
|
||||
if ((operationMode == MENU_RECENT or operationMode == MENU_AWARDED) and recipeMode != 0) then
|
||||
facilityIdParam = -2;
|
||||
elseif (craftStartWidgetOpen == true) then
|
||||
craftStartWidgetOpen = true;
|
||||
facilityIdParam = -1;
|
||||
end
|
||||
|
||||
-- Run start and grab the result operation/recipeMode/prepped
|
||||
operationResult = {callClientFunction(player, "delegateCommand", craftJudge, "start", commandactor, facilityIdParam, isRequestedItemsMode, unpack(prepedMaterials))};
|
||||
operationMode = operationResult[1];
|
||||
recipeMode = operationResult[2];
|
||||
|
||||
if debugMessage then player:SendMessage(0x20, "", "[DEBUG] Menu ID: " .. tostring(operationMode) .. ", RecipeMode : " .. recipeMode); end
|
||||
|
||||
-- Operation
|
||||
if operationMode == MENU_CANCEL then
|
||||
closeCraftStartWidget(player, craftJudge, commandactor);
|
||||
elseif (operationMode == MENU_MAINHAND or operationMode == MENU_OFFHAND) then
|
||||
-- Recipe choosing loop
|
||||
while (true) do
|
||||
-- Figure out the number of preloaded mats
|
||||
local materials = {};
|
||||
|
||||
-- Handle the possible args returned: Either 0 player items, 1 player item, 2+ palyer items. The rest is always the remaining prepped items.
|
||||
if (type(operationResult[3]) == "number") then
|
||||
materials = {unpack(operationResult, 3)};
|
||||
elseif (type(operationResult[3]) ~= "number") then
|
||||
for i=1,8 do
|
||||
if (i - 1 < operationResult[3].numItems) then
|
||||
materials[i] = player:GetItemPackage(operationResult[3].itemPackages[i-1]):GetItemAtSlot(operationResult[3].itemSlots[i-1]).itemId;
|
||||
player:SendMessage(0x20, "", "[DEBUG] " .. tostring(materials[i]));
|
||||
else
|
||||
materials[i] = operationResult[3 + (i - operationResult[3].numItems)];
|
||||
player:SendMessage(0x20, "", "[DEBUG] " .. tostring(materials[i]));
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Choosing a recipe from the given materials
|
||||
local recipes = recipeResolver.GetRecipeFromMats(unpack(materials));
|
||||
local itemIds = recipeResolver.RecipesToItemIdTable(recipes);
|
||||
|
||||
-- No recipes found
|
||||
if (#itemIds == 0) then
|
||||
player:SendGameMessage(GetWorldMaster(), 40201, 0x20); -- You cannot synthesize with those materials.
|
||||
break;
|
||||
end
|
||||
|
||||
local chosenRecipeIndex = callClientFunction(player, "delegateCommand", craftJudge, "selectRcp", commandactor, unpack(itemIds));
|
||||
|
||||
-- Hit back on recipe list
|
||||
if (chosenRecipeIndex <= 0) then break end;
|
||||
|
||||
chosenRecipe = recipes[chosenRecipeIndex-1];
|
||||
|
||||
if (chosenRecipe ~= nil) then
|
||||
-- Player confirms recipe
|
||||
local recipeConfirmed = callClientFunction(player, "delegateCommand", craftJudge, "confirmRcp", commandactor,
|
||||
chosenRecipe.resultItemID,
|
||||
chosenRecipe.resultQuantity,
|
||||
chosenRecipe.crystalId1,
|
||||
chosenRecipe.crystalQuantity1,
|
||||
chosenRecipe.crystalId2,
|
||||
chosenRecipe.crystalQuantity2,
|
||||
0,
|
||||
0);
|
||||
|
||||
elseif isRecipeRecentSent == true and recipeMode == 0 then -- If recipe window/award tab was hit
|
||||
chosenOperation, recipeMode = callClientFunction(player, "delegateCommand", craftJudge, "start", commandactor, -1, isRequested, unpack(materialSlots)); -- Keep window going
|
||||
|
||||
elseif isRecipeRecentSent == true and recipeMode > 0 then -- If recipe item picked
|
||||
if recipeDetail then
|
||||
chosenOperation, recipeMode = callClientFunction(player, "delegateCommand", craftJudge, "start", commandactor, -2, isRequested, unpack(recipeDetail)); -- Item mat(s) for picked item.
|
||||
else
|
||||
chosenOperation, recipeMode = callClientFunction(player, "delegateCommand", craftJudge, "start", commandactor, -2, isRequested, 10009617,0,0,0,0,0,0,0); -- Show dummy info for unfilled item
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if chosenOperation == MENU_CANCEL then
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "closeCraftStartWidget", commandactor);
|
||||
|
||||
|
||||
elseif (chosenOperation == MENU_MAINHAND or chosenOperation == MENU_OFFHAND) then
|
||||
|
||||
if isRequested == true then
|
||||
recipeResult = callClientFunction(player, "delegateCommand", craftJudge, "selectRcp", commandactor, 10009617);
|
||||
else
|
||||
recipeResult = callClientFunction(player, "delegateCommand", craftJudge, "selectRcp", commandactor, 10009617,6071007,5030112,5030007,10009617,6071007,5030112,5030007);
|
||||
end
|
||||
|
||||
if recipeResult == 0 then -- Closed/Return hit.
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "closeCraftStartWidget", commandactor);
|
||||
currentlyCrafting = -1;
|
||||
|
||||
elseif (recipeResult >= 1 or recipeResult <= 8) then
|
||||
--item yld, xstal1, qty, xstal2, qty
|
||||
recipeConfirmed = callClientFunction(player, "delegateCommand", craftJudge, "confirmRcp", commandactor, 10009617, 1, 0xF4247, 1, 0xf4245, 1, 0, 0);
|
||||
|
||||
if recipeConfirmed then
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "closeCraftStartWidget", commandactor);
|
||||
isRecipeRecentSent = false;
|
||||
isRecipeAwardSent = false;
|
||||
currentlyCrafting = startCrafting(player, chosenOperation, isRequested, 80, 100, 50);
|
||||
end
|
||||
end
|
||||
|
||||
elseif chosenOperation == MENU_REQUEST then -- Conditional button label based on isRequested
|
||||
if isRequested == false then -- "Request Items" hit, close Start and open up the Quest select
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "closeCraftStartWidget", commandactor);
|
||||
if recipeConfirmed then
|
||||
closeCraftStartWidget(player, craftJudge, commandactor);
|
||||
isRecipeRecentSent = false;
|
||||
isRecipeAwardSent = false;
|
||||
|
||||
-- CRAFTING STARTED
|
||||
currentlyCrafting = startCrafting(player, commandactor, craftJudge, operationMode, chosenRecipe, currentCraftQuestGuildleve, 80, 100, 50);
|
||||
|
||||
--Once crafting is over, return to the original non-quest state.
|
||||
isRequestedItemsMode = false;
|
||||
currentCraftQuestGuildleve = nil;
|
||||
currentCraftQuest = nil;
|
||||
|
||||
break;
|
||||
end
|
||||
end
|
||||
end
|
||||
-- End of Recipe choosing loops
|
||||
elseif operationMode == MENU_REQUEST then -- Conditional button label based on isRequestedItemsMode
|
||||
closeCraftStartWidget(player, craftJudge, commandactor);
|
||||
|
||||
if isRequestedItemsMode == false then -- "Request Items" hit, close Start and open up the Quest select
|
||||
isRecipeRecentSent = false;
|
||||
isRecipeAwardSent = false;
|
||||
|
||||
local questConfirmed, returnedQuest = GetCraftQuest(player, craftjudge, commandactor);
|
||||
chosenQuest = tonumber(returnedQuest);
|
||||
|
||||
if debugMessage then player:SendMessage(0x20, "", "[DEBUG] Chosen Quest: "..tostring(chosenQuest)); end
|
||||
|
||||
if questConfirmed then
|
||||
isRequested = true;
|
||||
end
|
||||
|
||||
|
||||
elseif isRequested == true then -- "Normal Synthesis" button hit
|
||||
isRequested = false;
|
||||
chosenQuest = 0;
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "closeCraftStartWidget", commandactor);
|
||||
|
||||
end
|
||||
|
||||
elseif chosenOperation == MENU_RECIPE then -- "Recipes" button hit
|
||||
local quest = getCraftQuest(player, craftJudge, commandactor);
|
||||
if (quest ~= nil) then
|
||||
isRequestedItemsMode = true;
|
||||
if (quest.isCraftPassiveGuildleve()) then
|
||||
currentCraftQuestGuildleve = quest;
|
||||
else
|
||||
currentCraftQuest = quest;
|
||||
end
|
||||
end
|
||||
elseif isRequestedItemsMode == true then -- "Normal Synthesis" button hit
|
||||
isRequestedItemsMode = false;
|
||||
currentCraftQuestGuildleve = nil;
|
||||
currentCraftQuest = nil;
|
||||
end
|
||||
elseif operationMode == MENU_RECENT then -- "Recipes" button hit
|
||||
if isRecipeRecentSent == false then
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "selectRcp", commandactor, unpack(recentRecipe)); -- Load up recipe list
|
||||
recentRecipes = player.GetRecentRecipes();
|
||||
local itemIds = recipeResolver.RecipesToItemIdTable(recentRecipes);
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "selectRcp", commandactor, unpack(itemIds)); -- Load up recipe list
|
||||
isRecipeRecentSent = true;
|
||||
end
|
||||
|
||||
recipeDetail = materialRecipe[recentRecipe[recipeMode]];
|
||||
|
||||
elseif chosenOperation == MENU_AWARDED then -- "Awarded Recipes" tab hit
|
||||
elseif operationMode == MENU_AWARDED then -- "Awarded Recipes" tab hit
|
||||
if isRecipeAwardSent == false then
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "selectRcp", commandactor, unpack(awardedRecipe)); -- Load up Award list
|
||||
awardedRecipes = player.GetAwardedRecipes();
|
||||
local itemIds = recipeResolver.RecipesToItemIdTable(awardedRecipes);
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "selectRcp", commandactor, unpack(itemIds)); -- Load up Award list
|
||||
isRecipeAwardSent = true;
|
||||
end
|
||||
|
||||
recipeDetail = materialRecipe[awardedRecipe[recipeMode]];
|
||||
|
||||
elseif (chosenOperation == MENU_RECIPE_DETAILED or chosenOperation == MENU_AWARDED_DETAILED) and recipeMode > 0 then -- Pop-up for an item's stats/craft mats
|
||||
detailWindowState = callClientFunction(player, "delegateCommand", craftJudge, "confirmRcp", commandactor, 10009617, 1, 0xF4247, 1, 0xf4245, 1, 0, 0);
|
||||
|
||||
elseif ((operationMode == MENU_RECENT_DETAILED or operationMode == MENU_AWARDED_DETAILED) and recipeMode > 0) then -- Pop-up for an item's stats/craft mats on a recent recipe
|
||||
local chosenRecipe = operationMode == MENU_RECENT_DETAILED and recentRecipes[recipeMode-1] or recentRecipes[awardedMode-1];
|
||||
local recipeConfirmed = callClientFunction(player, "delegateCommand", craftJudge, "confirmRcp", commandactor,
|
||||
chosenRecipe.resultItemID,
|
||||
chosenRecipe.resultQuantity,
|
||||
chosenRecipe.crystalId1,
|
||||
chosenRecipe.crystalQuantity1,
|
||||
chosenRecipe.crystalId2,
|
||||
chosenRecipe.crystalQuantity2,
|
||||
0,
|
||||
0);
|
||||
|
||||
-- This should never call? The window with this button only appears when you select a recent recipe with not enough materials. Otherwise it just auto-fills your "table".
|
||||
if (recipeConfirmed) then
|
||||
closeCraftStartWidget(player, craftJudge, commandactor);
|
||||
isRecipeRecentSent = false;
|
||||
isRecipeAwardSent = false;
|
||||
currentlyCrafting = startCrafting(player, commandactor, craftJudge, operationMode, chosenRecipe, isRequestedItemsMode, 80, 100, 50);
|
||||
end
|
||||
else
|
||||
break;
|
||||
end
|
||||
end
|
||||
|
||||
player:ChangeMusic(7); -- Need way to reset music back to the zone's default
|
||||
player:ChangeState(0);
|
||||
player:EndEvent();
|
||||
end
|
||||
|
||||
player:ResetMusic();
|
||||
player:ChangeState(0);
|
||||
player:EndEvent();
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- Handles the menus to pick a crafter quest or local leve quest that run separate widgets from the Start command.
|
||||
-- Returns whether a quest was selected, and what id the quest is.
|
||||
function GetCraftQuest(player, craftjudge, commandactor);
|
||||
function getCraftQuest(player, craftJudge, commandactor);
|
||||
local questId = nil;
|
||||
|
||||
while (true) do
|
||||
local questCommandId = callClientFunction(player, "delegateCommand", craftJudge, "selectCraftQuest", commandactor);
|
||||
|
||||
if questCommandId then
|
||||
questId = questCommandId - 0xA0F00000;
|
||||
|
||||
-- Craft Quest Chosen
|
||||
if isCraftQuest(questId) then
|
||||
local quest = player.GetQuest(questId);
|
||||
local confirm = callClientFunction(player, "delegateCommand", craftJudge, "cfmQst", commandactor, quest.getQuestId(), 20, 1, 1, 1, 0, 0, "<Path Companion>");
|
||||
if confirm == true then
|
||||
player:SendGameMessage(craftJudge, 21, 0x20);
|
||||
return quest;
|
||||
end
|
||||
-- PassiveGL Quest Chosen
|
||||
elseif isLocalLeve(questId) then
|
||||
local difficulty = 0;
|
||||
local hasMaterials = 1;
|
||||
|
||||
local quest = player:getQuestGuildleve(questId);
|
||||
|
||||
if (quest ~= nil) then
|
||||
-- Did they pickup the materials?
|
||||
if (quest:hasMaterials() == false) then
|
||||
player:SendGameMessage(GetWorldMaster(), 40210, 0x20); -- You have not obtained the proper materials from the client.
|
||||
-- Did they use em all up?
|
||||
elseif (quest:getRemainingMaterials() == 0) then
|
||||
player:SendGameMessage(GetWorldMaster(), 40211, 0x20); -- You have used up all of the provided materials.
|
||||
-- Confirm dialog
|
||||
else
|
||||
local confirm = callClientFunction(player, "delegateCommand", craftJudge, "confirmLeve", commandactor,
|
||||
quest:getQuestId(),
|
||||
quest:getCurrentDifficulty() + 1, -- Lua, 1-indexed
|
||||
0,
|
||||
quest:getCurrentCrafted(),
|
||||
quest:getRemainingMaterials(),
|
||||
quest:hasMaterials() and 1 or 0, -- Fucked up way of doing terneries on Lua
|
||||
0
|
||||
);
|
||||
|
||||
local questOffset = 0xA0F00000;
|
||||
local questId = 0;
|
||||
local requestState = false;
|
||||
local requestedMenuChoice = callClientFunction(player, "delegateCommand", craftJudge, "selectCraftQuest", commandactor);
|
||||
|
||||
if requestedMenuChoice then
|
||||
questId = requestedMenuChoice - questOffset;
|
||||
|
||||
if isCraftQuest(questId) then
|
||||
confirm = callClientFunction(player, "delegateCommand", craftJudge, "cfmQst", commandactor, questId, 20, 1, 1, 1, 0, 0, "<Path Companion>");
|
||||
|
||||
if confirm == true then
|
||||
requestState = true;
|
||||
player:SendGameMessage(craftJudge, 21, 0x20);
|
||||
end
|
||||
|
||||
elseif isLocalLeve(questId) then
|
||||
confirm = callClientFunction(player, "delegateCommand", craftJudge, "confirmLeve", commandactor, questId, 0, 8030421, 5, 50, 0, 0);
|
||||
|
||||
if confirm == true then
|
||||
requestState = true;
|
||||
itemSlots = { unpack(materialRecipe[4070010])};
|
||||
end
|
||||
|
||||
elseif isScenarioQuest(questId) == true then
|
||||
-- TEMP for now. Cannot find source for what happens if you confirm a non-craft quest.
|
||||
player:SendGameMessage(GetWorldMaster(), 40209, 0x20);
|
||||
end
|
||||
end
|
||||
|
||||
return requestState, questId;
|
||||
-- Quest confirmed
|
||||
if (confirm == true) then
|
||||
return quest;
|
||||
end
|
||||
end
|
||||
else
|
||||
return nil; -- Shouldn't happen unless db fucked with
|
||||
end
|
||||
-- Scenario Quest Chosen
|
||||
else
|
||||
-- TEMP for now. Cannot find source for what happens if you confirm a non-craft quest.
|
||||
player:SendGameMessage(GetWorldMaster(), 40209, 0x20); -- You cannot undertake that endeavor.
|
||||
end
|
||||
else
|
||||
return nil;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function isScenarioQuest(id)
|
||||
|
||||
if (id >= 110001 and id <= 120026) then
|
||||
return true;
|
||||
else
|
||||
|
@ -359,7 +434,6 @@ end
|
|||
|
||||
|
||||
function isLocalLeve(id)
|
||||
|
||||
if (id >= 120001 and id <= 120452) then
|
||||
return true;
|
||||
else
|
||||
|
@ -367,58 +441,73 @@ function isLocalLeve(id)
|
|||
end
|
||||
end
|
||||
|
||||
function closeCraftStartWidget(player, craftJudge, commandactor)
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "closeCraftStartWidget", commandactor);
|
||||
craftStartWidgetOpen = false;
|
||||
end
|
||||
|
||||
-- No real logic in this function. Just smoke and mirrors to 'see' the minigame in action at the minimum level.
|
||||
function startCrafting(player, hand, quest, startDur, startQly, startHQ)
|
||||
function startCrafting(player, commandactor, craftJudge, hand, recipe, quest, startDur, startQly, startHQ)
|
||||
|
||||
local worldMaster = GetWorldMaster();
|
||||
local craftProg = 0;
|
||||
local progress = 0;
|
||||
local attempts = 5;
|
||||
local craftedCount = 0;
|
||||
local craftTotal = 2;
|
||||
local itemId = 10009617;
|
||||
|
||||
player:ChangeState(30+hand); -- Craft kneeling w/ appropriate tool out
|
||||
player:ChangeMusic(73);
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "openCraftProgressWidget", commandactor, startDur, startQly, startHQ);
|
||||
|
||||
while true do
|
||||
|
||||
local progDiff = math.random(25,25);
|
||||
while (true) do
|
||||
local progDiff = math.random(30,50);
|
||||
local duraDiff = math.random(1,3);
|
||||
local qltyDiff = math.random(0,2);
|
||||
|
||||
if craftProg >= 100 then
|
||||
|
||||
testChoice2 = callClientFunction(player, "delegateCommand", craftJudge, "updateInfo", commandactor, 100, 10, 20, 5020111, 69, 70, 75);
|
||||
|
||||
-- From Lodestone: If the HQ odds are 1% or better, players will have the option of selecting either Finish or Double Down.
|
||||
-- By electing to double down, the player takes a chance on creating an HQ item at the risk of losing the completed item if the attempt fails
|
||||
testChoice = callClientFunction(player, "delegateCommand", craftJudge, "craftTuningUI", commandactor, 22503, 22504);
|
||||
|
||||
player:SendGameMessage(GetWorldMaster(), 40111, 0x20, player, itemId, 3, 8); -- "You create <#3 quantity> <#1 item> <#2 quality>."
|
||||
if (progress >= 100) then
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "closeCraftProgressWidget", commandactor);
|
||||
|
||||
if quest then
|
||||
continueLeve = callClientFunction(player, "delegateCommand", craftJudge, "askContinueLocalLeve", 120001, itemId, craftedCount, craftTotal, attempts);
|
||||
-- Handle local levequest craft success
|
||||
if quest then
|
||||
quest:craftSuccess();
|
||||
|
||||
if (quest:getCurrentCrafted() >= quest:getObjectiveQuantity()) then
|
||||
attentionMessage(player, 40121, quest:getQuestId(), quest:getCurrentCrafted(), quest:getObjectiveQuantity()); -- "All items for <QuestId> complete!"
|
||||
else
|
||||
attentionMessage(player, 40119, quest:getQuestId(), quest:getCurrentCrafted(), quest:getObjectiveQuantity()); -- "<QuestId> Successfull. (<crafted> of <attempts>)"
|
||||
end
|
||||
|
||||
-- Continue local levequest (should this be in here??)
|
||||
if (quest:getRemainingMaterials() ~= 0) then
|
||||
continueLeve = callClientFunction(player, "delegateCommand", craftJudge, "askContinueLocalleve", commandactor,
|
||||
quest:getQuestId(),
|
||||
quest:getRecipe().resultItemID,
|
||||
quest:getCurrentCrafted(),
|
||||
quest:getObjectiveQuantity(),
|
||||
quest:getRemainingMaterials()
|
||||
);
|
||||
|
||||
if continueLeve == true then
|
||||
craftProg = 0;
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "openCraftProgressWidget", commandactor, startDur, startQly, startHQ);
|
||||
else
|
||||
break;
|
||||
end
|
||||
else
|
||||
break;
|
||||
if (continueLeve == 1) then
|
||||
progress = 0;
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "openCraftProgressWidget", commandactor, startDur, startQly, startHQ);
|
||||
else
|
||||
break;
|
||||
end
|
||||
else
|
||||
break;
|
||||
end
|
||||
-- Normal synth craft success
|
||||
else
|
||||
player:SendGameMessage(GetWorldMaster(), 40111, 0x20, player, recipe.resultItemID, 1, recipe.resultQuantity); -- "You create <#3 quantity> <#1 item> <#2 quality>."
|
||||
player:getItemPackage(location):addItem(recipe.resultItemID, recipe.resultQuantity, 1);
|
||||
break;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
choice = callClientFunction(player, "delegateCommand", craftJudge, "craftCommandUI", commandactor, 29, 2, 29530,29531,29532,29533,29534);
|
||||
--player:SendMessage(0x20, "", "[DEBUG] Command id selected: "..choice);
|
||||
|
||||
|
||||
|
||||
if choice then
|
||||
|
||||
if (choice) then
|
||||
|
||||
if skillAnim[choice] then
|
||||
player:PlayAnimation(skillAnim[choice]);
|
||||
|
@ -428,11 +517,11 @@ function startCrafting(player, hand, quest, startDur, startQly, startHQ)
|
|||
|
||||
player:SendGameMessage(worldMaster, 40108, 0x20, choice,2);
|
||||
|
||||
if choice ~= 29531 then
|
||||
craftProg = craftProg + progDiff;
|
||||
if (choice ~= 29531) then
|
||||
progress = progress + progDiff;
|
||||
|
||||
if craftProg >= 100 then
|
||||
craftProg = 100;
|
||||
if (progress >= 100) then
|
||||
progress = 100;
|
||||
end
|
||||
|
||||
startDur = startDur - duraDiff;
|
||||
|
@ -443,12 +532,9 @@ function startCrafting(player, hand, quest, startDur, startQly, startHQ)
|
|||
player:SendGameMessage(worldMaster, 40104, 0x20, qltyDiff);
|
||||
end
|
||||
--prg dur qly, ???, ???, ???, HQ
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "updateInfo", commandactor, craftProg, startDur, startQly, nil, nil, nil, nil, nil);
|
||||
callClientFunction(player, "delegateCommand", craftJudge, "updateInfo", commandactor, progress, startDur, startQly, nil, nil, nil, nil, nil);
|
||||
|
||||
--testChoice = callClientFunction(player, "delegateCommand", craftJudge, "craftTuningUI", commandactor, 29501, 24233, 29501,29501, 24223, 29501,12008,12004);
|
||||
end
|
||||
end
|
||||
|
||||
return -1;
|
||||
end
|
||||
|
||||
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue