Quest Script Examples
Quest Script Examples
Someone recently asked for some examples of what the quest scripts look like, so I thought I'd paste some of the common types:
1. Warming Up - Isle of Dawn - Kill the Gataro Podlings:
2. They Hate The Smell - Isle of Dawn - Collect Carmellia Seeds
Those are the simpler, most common types. Then sometimes we have this madness:
3. Sanctuary of Ibuteon - Silverlake - Lots of objectives
1. Warming Up - Isle of Dawn - Kill the Gataro Podlings:
Code: Select all
local Quest_Report_to_Sixfish = 7778
local NPC_Gataro_Podlings = 10210
function init(Quest)
AddQuestPrereqQuest(Quest, Quest_Report_to_Sixfish)
AddQuestObjectiveKill(Quest, 1, "Kill Gataro Podlings", 5, NPC_Gataro_Podlings)
end
function accepted(Quest, Player)
end
function declined(Quest, Player)
end
function completed(Quest, Player)
end
function abandoned(Quest, Player)
end
Code: Select all
local Quest_Report_To_Sixfish = 7778
local Item_Carmellia_Seeds = 1422007
function init(Quest)
AddQuestPrereqQuest(Quest, Quest_Report_To_Sixfish)
AddQuestObjectiveObtainItem(Quest, 1, "Obtain Carmellia Seeds", 5, Item_Carmellia_Seeds)
HandleQuestItem(Quest, Item_Carmellia_Seeds, 0, 5)
end
function accepted(Quest, Player)
end
function declined(Quest, Player)
end
function completed(Quest, Player)
end
function abandoned(Quest, Player)
end3. Sanctuary of Ibuteon - Silverlake - Lots of objectives
Code: Select all
-- Local variables go here
local POI_Ruins_of_Ibuteon = 599 -- The Ruins
local POI_Griffon_Watch = 605 --Captain Drake's Location
local POI_Baroness_Melindra_Cuthdell = 3956
local POI_Sage_Transor_Kaul = 4293
local Quest_Sanctuary_of_Ibuteon = 9248 -- This Quest
local Item_Ibuteons_Notes_Page_1 = 1468188
local Item_Ibuteons_Notes_Page_2 = 1468189
local Item_Ibuteons_Notes_Page_3 = 1468190
local Item_Ibuteons_Notes_Page_4 = 1468191
function init(Quest)
AddQuestObjective(Quest, 1, "Ask Captain Drake about Ibuteon.")
AddHiddenQuestObjective(Quest, 2, "Investigate the ruins of Ibuteon's Sanctuary.") --This requires they get 4 pages of Ibuteon's Notes
AddHiddenQuestObjectiveObtainItem(Quest, 7, "Page 1 Found", 1, Item_Ibuteons_Notes_Page_1) --Each Page gets its own Objective for each object (So they stop sparkling when you find the Corresponding Page)
AddHiddenQuestObjectiveObtainItem(Quest, 8, "Page 2 Found", 1, Item_Ibuteons_Notes_Page_2) --Each Page gets its own Objective for each object (So they stop sparkling when you find the Corresponding Page)
AddHiddenQuestObjectiveObtainItem(Quest, 9, "Page 3 Found", 1, Item_Ibuteons_Notes_Page_3) --Each Page gets its own Objective for each object (So they stop sparkling when you find the Corresponding Page)
AddHiddenQuestObjectiveObtainItem(Quest, 10, "Page 4 Found", 1, Item_Ibuteons_Notes_Page_4) --Each Page gets its own Objective for each object (So they stop sparkling when you find the Corresponding Page)
AddHiddenQuestObjective(Quest, 11, "All Pages Found", 4) -- Need this to update the second objective without having a number on it.
AddHiddenQuestObjective(Quest, 3, "Speak to Captain Drake about your findings.")
AddHiddenQuestObjective(Quest, 4, "Ask Baroness Melindra Cuthdell about the orc wars.")
AddHiddenQuestObjective(Quest, 5, "Speak to Sage Transor Kaul.")
AddHiddenQuestObjective(Quest, 6, "Summon and speak to Templar Ibuteon.")
AddObjectiveCompleteAction(Quest, 1, "Objective1Complete")
AddObjectiveCompleteAction(Quest, 3, "Objective3Complete")
AddObjectiveCompleteAction(Quest, 4, "Objective4Complete")
AddObjectiveCompleteAction(Quest, 5, "Objective5Complete")
AddObjectiveCompleteAction(Quest, 11, "Objective2Complete")
end
function accepted(Quest, Player)
AddPOI(Player, POI_Griffon_Watch)
end
function declined(Quest, Player)
end
function completed(Quest, Player)
RemoveItem(Player, Item_Ibuteons_Notes_Page_1, 1)
RemoveItem(Player, Item_Ibuteons_Notes_Page_2, 1)
RemoveItem(Player, Item_Ibuteons_Notes_Page_3, 1)
RemoveItem(Player, Item_Ibuteons_Notes_Page_4, 1)
end
function abandoned(Quest, Player)
RemoveItem(Player, Item_Ibuteons_Notes_Page_1, 1)
RemoveItem(Player, Item_Ibuteons_Notes_Page_2, 1)
RemoveItem(Player, Item_Ibuteons_Notes_Page_3, 1)
RemoveItem(Player, Item_Ibuteons_Notes_Page_4, 1)
RemovePOI(Player, POI_Baroness_Melindra_Cuthdell)
RemovePOI(Player, POI_Ruins_of_Ibuteon)
RemovePOI(Player, POI_Griffon_Watch)
RemovePOI(Player, POI_Sage_Transor_Kaul)
end
function Objective1Complete(Quest, Player)
RemovePOI(Player, POI_Griffon_Watch)
SetObjectiveHiddenState(Player, Quest, 2, false)
AddPOI(Player, POI_Ruins_of_Ibuteon)
end
function Objective2Complete(Quest, Player)
RemovePOI(Player, POI_Ruins_of_Ibuteon)
AddPOI(Player, POI_Griffon_Watch)
SetObjectiveComplete(Player, Quest_Sanctuary_of_Ibuteon, 2, true)
SetObjectiveHiddenState(Player, Quest, 3, false)
end
function Objective3Complete(Quest, Player)
RemovePOI(Player, POI_Griffon_Watch)
SetObjectiveHiddenState(Player, Quest, 4, false)
AddPOI(Player, POI_Baroness_Melindra_Cuthdell)
end
function Objective4Complete(Quest, Player)
RemovePOI(Player, POI_Baroness_Melindra_Cuthdell)
SetObjectiveHiddenState(Player, Quest, 5, false)
AddPOI(Player, POI_Sage_Transor_Kaul)
end
function Objective5Complete(Quest, Player)
RemovePOI(Player, POI_Sage_Transor_Kaul)
SetObjectiveHiddenState(Player, Quest, 6, false)
AddPOI(Player, POI_Ruins_of_Ibuteon)
end