landsandboat/scripts/quests/windurst/Rock_Racketeer.lua
2026-04-05 10:38:57 -05:00

204 lines
6.6 KiB
Lua

-----------------------------------
-- Rock Racketeer
-----------------------------------
-- Log ID: 2, Quest ID: 26
-- Nanaa Mihgo !pos 62 -4 240 241
-- Ardea !pos -198.231 -6 -71.379
-- Varun !pos 9.989 -2.5 -7.597
-- Mythril Seam !pos 210 -32 -63 143
-----------------------------------
local quest = Quest:new(xi.questLog.WINDURST, xi.quest.id.windurst.ROCK_RACKETEER)
quest.reward =
{
fame = 40,
fameArea = xi.fameArea.WINDURST,
}
quest.sections =
{
{
check = function(player, status, vars)
return status == xi.questStatus.QUEST_AVAILABLE and
player:hasCompletedQuest(xi.questLog.WINDURST, xi.quest.id.windurst.MIHGOS_AMIGO) and
player:getFameLevel(xi.fameArea.WINDURST) >= 3 and
not xi.quest.getMustZone(player, xi.questLog.WINDURST, xi.quest.id.windurst.MIHGOS_AMIGO)
end,
[xi.zone.WINDURST_WOODS] =
{
['Nanaa_Mihgo'] = quest:progressEvent(93),
onEventFinish =
{
[93] = function(player, csid, option, npc)
if option == 1 then
quest:begin(player)
npcUtil.giveKeyItem(player, xi.ki.SHARP_GRAY_STONE)
end
end,
},
},
},
{
check = function(player, status, vars)
return status == xi.questStatus.QUEST_ACCEPTED
end,
[xi.zone.WINDURST_WOODS] =
{
['Bopa_Greso'] =
{
onTrigger = function(player, npc)
-- Once the player gets the Sharp Stone, NPC goes back to default action until after the quest is complete
if quest:getVar(player, 'Prog') <= 2 then
return quest:event(96)
end
end,
},
['Cha_Lebagta'] =
{
onTrigger = function(player, npc)
-- Once the player gets the Sharp Stone, NPC goes back to default action until after the quest is complete
if quest:getVar(player, 'Prog') <= 2 then
return quest:event(97)
end
end,
},
['Nanaa_Mihgo'] =
{
onTrigger = function(player, npc)
local progress = quest:getVar(player, 'Prog')
if progress == 0 then
if quest:getVar(player, 'Option') == 0 then
return quest:event(94)
else
return quest:event(95)
end
elseif progress == 1 then
return quest:progressEvent(98)
elseif progress == 2 then
return quest:event(99)
end
end,
},
['Varun'] =
{
-- It was found in captures that the dialogue for Varun is not required to progress the quest
onTrigger = function(player, npc)
local progress = quest:getVar(player, 'Prog')
if progress == 2 then
if quest:getVar(player, 'Option') < 2 then
return quest:progressEvent(100) -- Optional Dialogue that only places once
else
return quest:event(101, 0, xi.item.SHARP_STONE)
end
end
end,
onTrade = function(player, npc, trade)
if npcUtil.tradeHas(trade, { { xi.item.SHARP_STONE } }) then
return quest:progressEvent(102, 2100)
end
end,
},
onEventFinish =
{
[98] = function(player, csid, option, npc)
quest:setVar(player, 'Prog', 2)
end,
[100] = function(player, csid, option, npc)
quest:setVar(player, 'Option', 2)
end,
[102] = function(player, csid, option, npc)
if quest:complete(player) then
player:confirmTrade()
player:addGil(2100) -- "Obtained X gil." Text is baked into the CS, so gil needs to be given outside of the quest rewards.
quest:setMustZone(player)
end
end,
},
},
[xi.zone.BASTOK_MARKETS] =
{
['Ardea'] =
{
onTrigger = function(player, npc)
local progress = quest:getVar(player, 'Prog')
if progress == 0 then
return quest:progressEvent(261)
elseif progress == 1 then
return quest:event(262)
else
return quest:event(263)
end
end,
},
onEventFinish =
{
[261] = function(player, csid, option, npc)
if option == 0 then
quest:setVar(player, 'Prog', 1)
player:delKeyItem(xi.ki.SHARP_GRAY_STONE) -- Silent
npcUtil.giveCurrency(player, 'gil', 10)
elseif option == 1 then
quest:setVar(player, 'Option', 1)
end
end,
},
},
},
{
check = function(player, status, vars)
return status == xi.questStatus.QUEST_COMPLETED
end,
[xi.zone.WINDURST_WOODS] =
{
['Bopa_Greso'] =
{
onTrigger = function(player, npc)
if quest:getMustZone(player) then
return quest:event(96)
end
end,
},
['Cha_Lebagta'] =
{
onTrigger = function(player, npc)
if quest:getMustZone(player) then
return quest:event(97)
end
end,
},
['Varun'] =
{
onTrigger = function(player, npc)
if quest:getMustZone(player) then
return quest:event(103)
else
return quest:event(104):replaceDefault()
end
end,
},
},
},
}
return quest