landsandboat/scripts/quests/hiddenQuests/Invitation_Cards.lua

128 lines
3.9 KiB
Lua

-----------------------------------
-- Lure of the Wildcat Invitation Cards
-- Naja: !pos 22.700 -8.804 -45.591 50
-----------------------------------
local quest = HiddenQuest:new('Invitation_Cards')
local invitationCards =
{
xi.ki.RED_INVITATION_CARD,
xi.ki.BLUE_INVITATION_CARD,
xi.ki.GREEN_INVITATION_CARD,
xi.ki.WHITE_INVITATION_CARD,
}
local rewards =
{
[0] = { coin = 0, amount = 0 },
[1] = { coin = xi.item.IMPERIAL_BRONZE_PIECE, amount = 1 },
[2] = { coin = xi.item.IMPERIAL_BRONZE_PIECE, amount = 2 },
[3] = { coin = xi.item.IMPERIAL_BRONZE_PIECE, amount = 3 },
[4] = { coin = xi.item.IMPERIAL_MYTHRIL_PIECE, amount = 1 },
}
local function getCards(player)
local numCards = 0
for _, tempKeyItem in pairs(invitationCards) do
if player:hasKeyItem(tempKeyItem) then
numCards = numCards + 1
end
end
return numCards, rewards[numCards].coin, rewards[numCards].amount
end
local function deleteCards(player)
for _, tempKeyItem in pairs(invitationCards) do
if player:hasKeyItem(tempKeyItem) then
player:delKeyItem(tempKeyItem)
end
end
end
quest.sections =
{
{
check = function(player, questVars, vars)
return getCards(player) > 0
end,
[xi.zone.AHT_URHGAN_WHITEGATE] =
{
['Naja_Salaheem'] =
{
onTrigger = function(player, npc)
if quest:getLocalVar(player, 'Option') == 0 then
if quest:getVar(player, 'Prog') == 0 then
return quest:progressEvent(74, { text_table = 0 })
else
return quest:progressEvent(75, { text_table = 0 })
end
end
end,
},
onEventUpdate =
{
[74] = function(player, csid, option, npc)
if option == 1 then
local cards, coin, amount = getCards(player)
player:updateEvent({ [0] = cards, [1] = coin, [2] = amount, text_table = 0 })
end
end,
[75] = function(player, csid, option, npc)
if option == 1 then
local cards, _, _ = getCards(player)
player:updateEvent({ [0] = cards, [1] = xi.item.IMPERIAL_BRONZE_PIECE, [2] = 1, text_table = 0 })
end
end,
},
onEventFinish =
{
[74] = function(player, csid, option, npc)
quest:setLocalVar(player, 'Option', 1)
if option == 3 then
local cards, coin, amount = getCards(player)
if npcUtil.giveItem(player, { { coin, amount } }) then
deleteCards(player)
if cards < 4 then
quest:setVar(player, 'Prog', cards)
end
end
end
end,
[75] = function(player, csid, option, npc)
quest:setLocalVar(player, 'Option', 1)
if option == 3 then
local cards, _, _ = getCards(player)
if npcUtil.giveItem(player, xi.item.IMPERIAL_BRONZE_PIECE) then
deleteCards(player)
local count = quest:getVar(player, 'Prog')
if cards + count >= 4 then
quest:complete(player)
else
quest:setVar(player, 'Prog', count + cards)
end
end
end
end,
},
},
},
}
return quest