diff --git a/scripts/globals/quests.lua b/scripts/globals/quests.lua index fd8b7822a0a..0cba5a17a58 100644 --- a/scripts/globals/quests.lua +++ b/scripts/globals/quests.lua @@ -67,7 +67,7 @@ xi.quest.id = TROUBLE_AT_THE_SLUICE = 68, -- + Converted THE_MERCHANTS_BIDDING = 69, -- ± UNEXPECTED_TREASURE = 70, - BLACKMAIL = 71, -- + + BLACKMAIL = 71, -- + Converted THE_SETTING_SUN = 72, -- + DISTANT_LOYALTIES = 74, -- ± Converted THE_RIVALRY = 75, -- ± diff --git a/scripts/quests/sandoria/Blackmail.lua b/scripts/quests/sandoria/Blackmail.lua new file mode 100644 index 00000000000..7756e3f41a4 --- /dev/null +++ b/scripts/quests/sandoria/Blackmail.lua @@ -0,0 +1,182 @@ +----------------------------------- +-- Blackmail +----------------------------------- +-- Log ID: 0, Quest ID: 71 +----------------------------------- +-- Dauperiat : !pos -20 0 -26 231 +-- Halver : !pos 2 0 0 233 +----------------------------------- + +local quest = Quest:new(xi.questLog.SANDORIA, xi.quest.id.sandoria.A_KNIGHTS_TEST) + +quest.reward = +{ + gil = 900, +} + +quest.sections = +{ + { + check = function(player, status, vars) + return status == xi.questStatus.QUEST_AVAILABLE + end, + + [xi.zone.NORTHERN_SAN_DORIA] = + { + ['Dauperiat'] = + { + onTrigger = function(player, npc) + if + player:getFameLevel(xi.fameArea.SANDORIA) >= 3 and + player:getRank(player:getNation()) >= 3 + then + return quest:progressEvent(643) + else + if player:needToZone() then + return quest:event(642) + else + return quest:event(641) + end + end + end, + }, + + onEventFinish = + { + [641] = function(player, csid, option, npc) + player:needToZone(true) + end, + + [643] = function(player, csid, option, npc) + npcUtil.giveKeyItem(player, xi.ki.SUSPICIOUS_ENVELOPE) + quest:begin(player) + end, + }, + }, + }, + { + check = function(player, status, vars) + return status == xi.questStatus.QUEST_ACCEPTED and + player:hasKeyItem(xi.ki.SUSPICIOUS_ENVELOPE) + end, + + [xi.zone.NORTHERN_SAN_DORIA] = + { + ['Dauperiat'] = quest:event(645), + }, + + [xi.zone.CHATEAU_DORAGUILLE] = + { + ['Halver'] = quest:progressEvent(549), + + onEventFinish = + { + [549] = function(player, csid, option, npc) + player:delKeyItem(xi.ki.SUSPICIOUS_ENVELOPE) + quest:setVar(player, 'Prog', 1) + end, + }, + }, + }, + { + check = function(player, status, vars) + return status == xi.questStatus.QUEST_ACCEPTED and + vars.Prog == 1 + end, + + [xi.zone.NORTHERN_SAN_DORIA] = + { + ['Dauperiat'] = quest:progressEvent(646, { [1] = xi.item.COPY_OF_THE_CASTLE_FLOOR_PLANS }), + + onEventFinish = + { + [646] = function(player, csid, option, npc) + if option == 1 then + quest:setVar(player, 'Prog', 2) + end + end, + }, + }, + }, + { + check = function(player, status, vars) + return status == xi.questStatus.QUEST_ACCEPTED and + vars.Prog == 2 + end, + + [xi.zone.NORTHERN_SAN_DORIA] = + { + ['Dauperiat'] = + { + onTrade = function(player, npc, trade) + if npcUtil.tradeHas(trade, xi.item.COPY_OF_THE_CASTLE_FLOOR_PLANS) then + return quest:progressEvent(648, { [1] = xi.item.COPY_OF_THE_CASTLE_FLOOR_PLANS }) + end + end, + + onTrigger = quest:event(647, { [1] = xi.item.COPY_OF_THE_CASTLE_FLOOR_PLANS }), + }, + + onEventFinish = + { + [648] = function(player, csid, option, npc) + if quest:complete(player) then + player:confirmTrade() + end + end, + }, + }, + }, + { + check = function(player, status, vars) + return status == xi.questStatus.QUEST_COMPLETED and + vars.Prog == 0 + end, + + [xi.zone.NORTHERN_SAN_DORIA] = + { + ['Dauperiat'] = quest:progressEvent(650, { [1] = xi.item.COPY_OF_THE_CASTLE_FLOOR_PLANS }), + + onEventFinish = + { + [650] = function(player, csid, option, npc) + if option == 1 then + quest:setVar(player, 'Prog', 1) + end + end, + }, + }, + }, + { + check = function(player, status, vars) + return status == xi.questStatus.QUEST_COMPLETED and + vars.Prog == 1 + end, + + [xi.zone.NORTHERN_SAN_DORIA] = + { + ['Dauperiat'] = + { + onTrade = function(player, npc, trade) + if npcUtil.tradeHas(trade, xi.item.COPY_OF_THE_CASTLE_FLOOR_PLANS) then + return quest:progressEvent(648, { [1] = xi.item.COPY_OF_THE_CASTLE_FLOOR_PLANS }) + end + end, + + onTrigger = quest:event(647, { [1] = xi.item.COPY_OF_THE_CASTLE_FLOOR_PLANS }), + }, + + onEventFinish = + { + [648] = function(player, csid, option, npc) + quest:setVar(player, 'Prog', 0) + player:confirmTrade() + npcUtil.giveCurrency(player, 'gil', 900) + player:addFame(xi.quest.fameArea.SANDORIA, 5) + end, + }, + }, + }, +} + +return quest diff --git a/scripts/zones/Chateau_dOraguille/npcs/Halver.lua b/scripts/zones/Chateau_dOraguille/npcs/Halver.lua index ab0b0ff7d81..1b26951558a 100644 --- a/scripts/zones/Chateau_dOraguille/npcs/Halver.lua +++ b/scripts/zones/Chateau_dOraguille/npcs/Halver.lua @@ -20,14 +20,6 @@ entity.onTrigger = function(player, npc) not utils.mask.getBit(wildcatSandy, 16) then player:startEvent(558) - -- Blackmail quest - elseif - player:getQuestStatus(xi.questLog.SANDORIA, xi.quest.id.sandoria.BLACKMAIL) == xi.questStatus.QUEST_ACCEPTED and - player:hasKeyItem(xi.ki.SUSPICIOUS_ENVELOPE) - then - player:startEvent(549) - player:setCharVar('BlackMailQuest', 1) - player:delKeyItem(xi.ki.SUSPICIOUS_ENVELOPE) elseif pNation == xi.nation.SANDORIA then -- Rank 10 default dialogue if player:getRank(player:getNation()) == 10 then diff --git a/scripts/zones/Northern_San_dOria/npcs/Dauperiat.lua b/scripts/zones/Northern_San_dOria/npcs/Dauperiat.lua deleted file mode 100644 index bf0ad3c5215..00000000000 --- a/scripts/zones/Northern_San_dOria/npcs/Dauperiat.lua +++ /dev/null @@ -1,83 +0,0 @@ ------------------------------------ --- Area: Northern San d'Oria --- NPC: Dauperiat --- Starts and Finishes Quest: Blackmail (R) --- !zone 231 ------------------------------------ ----@type TNpcEntity -local entity = {} - -entity.onTrade = function(player, npc, trade) - local black = player:getQuestStatus(xi.questLog.SANDORIA, xi.quest.id.sandoria.BLACKMAIL) - local questState = player:getCharVar('BlackMailQuest') - - if - black == xi.questStatus.QUEST_ACCEPTED and - questState == 2 or - black == xi.questStatus.QUEST_COMPLETED - then - if - trade:hasItemQty(xi.item.COPY_OF_THE_CASTLE_FLOOR_PLANS, 1) and - trade:getItemCount() == 1 - then - player:startEvent(648, 0, xi.item.COPY_OF_THE_CASTLE_FLOOR_PLANS) - end - end -end - -entity.onTrigger = function(player, npc) - -- "Blackmail" quest status - local blackMail = player:getQuestStatus(xi.questLog.SANDORIA, xi.quest.id.sandoria.BLACKMAIL) - local sanFame = player:getFameLevel(xi.fameArea.SANDORIA) - local homeRank = player:getRank(player:getNation()) - local questState = player:getCharVar('BlackMailQuest') - - if - blackMail == xi.questStatus.QUEST_AVAILABLE and - sanFame >= 3 and - homeRank >= 3 - then - player:startEvent(643) -- 643 gives me letter - elseif - blackMail == xi.questStatus.QUEST_ACCEPTED and - player:hasKeyItem(xi.ki.SUSPICIOUS_ENVELOPE) - then - player:startEvent(645) -- 645 recap, take envelope! - - elseif blackMail == xi.questStatus.QUEST_ACCEPTED and questState == 1 then - player:startEvent(646, 0, xi.item.COPY_OF_THE_CASTLE_FLOOR_PLANS) - - elseif blackMail == xi.questStatus.QUEST_ACCEPTED and questState == 2 then - player:startEvent(647, 0, xi.item.COPY_OF_THE_CASTLE_FLOOR_PLANS) - - else - if player:needToZone() then - player:startEvent(642) --642 Quiet! - else - player:startEvent(641) --641 -- Quiet! leave me alone - player:needToZone(true) - end - end -end - -entity.onEventFinish = function(player, csid, option, npc) - if csid == 643 then - player:addQuest(xi.questLog.SANDORIA, xi.quest.id.sandoria.BLACKMAIL) - npcUtil.giveKeyItem(player, xi.ki.SUSPICIOUS_ENVELOPE) - elseif csid == 646 and option == 1 then - player:setCharVar('BlackMailQuest', 2) - elseif csid == 648 then - player:tradeComplete() - npcUtil.giveCurrency(player, 'gil', 900) - if player:getQuestStatus(xi.questLog.SANDORIA, xi.quest.id.sandoria.BLACKMAIL) == xi.questStatus.QUEST_ACCEPTED then - player:addFame(xi.fameArea.SANDORIA, 30) - player:completeQuest(xi.questLog.SANDORIA, xi.quest.id.sandoria.BLACKMAIL) - else - player:addFame(xi.fameArea.SANDORIA, 5) - end - elseif csid == 40 and option == 1 then - player:addQuest(xi.questLog.SANDORIA, xi.quest.id.sandoria.BLACKMAIL) - end -end - -return entity