1
Fork 0
mirror of https://bitbucket.org/Ioncannon/project-meteor-server.git synced 2025-04-23 13:17:45 +00:00

Added a buttload of side quests. This should mean all talky quests and 'kill x things' quests are done. Also updated the attention messages as they were using the wrong one for getting items or killing mobs. Fixed some journal issues on various quests as well.

This commit is contained in:
Filip Maj 2022-04-02 11:52:32 -04:00
parent 938cca0298
commit 6bbe272d48
35 changed files with 2171 additions and 182 deletions

View file

@ -4,9 +4,9 @@ require ("global")
Quest Script
Name: Small Talk
Code: DftFst
Id: 110542
Name: Small Talk
Code: DftFst
Id: 110542
Contains all default lines for talkable npcs in the Forest Region (aka Black Shroud).
* NOTE: This quest is active for all players at all times.
@ -19,13 +19,21 @@ local defaultTalkFst = {
[1000068] = "defaultTalkWithKain_001", -- Kain (Gridania: LTW Guild)
[1000069] = "defaultTalkWithJolline_001", -- Jolline (Gridania: LNC Guild)
[1000071] = "defaultTalkWithBertennant_001", -- Bertennant (Gridania: Blue Badger Gate)
[1000072] = "defaultTalkWithMitainie_001", -- <<<NOT IMPLEMENTED>>> Mitainie (Gridania: White Wolf Gate)
[1000074] = "defaultTalkWithOnguen_001", -- Onguen (Gridania: BTN Guild)
[1000230] = "defaultTalkWithMiounne_001", -- Miounne (Gridania: Adv. Guild)
[1000231] = "defaultTalkWithHereward_001", -- Hereward (Gridania: LTW Guild)
[1000234] = "defaultTalkWithSolieine_001", -- <<<NOT IMPLEMENTED>>> Soileine [function typo] (Gridania: CNJ Guild) Has Parley actor id: 1700030
[1000236] = "defaultTalkWithOpyltyl_001", -- Opyltyl (Gridania: BTN Guild)
[1000238] = "defaultTalkWithPowle_001", -- <<<NOT IMPLEMENTED>>> Powle (Gridania: Acorn Orchard) - Has many actorclass IDs, this is the first one.
[1000239] = "defaultTalkWithSansa_001", -- <<<NOT IMPLEMENTED>>> Sansa (Gridania: Acorn Orchard)
[1000242] = "defaultTalkWithWillelda_001", -- Willelda (Gridania: LNC Guild) defaultTalkWithWillelda_002 - After signing up to the guild?
[1000243] = "defaultTalkWithBurchard_001", -- Burchard (Gridania: LNC Guild)
[1000326] = "defaultTalkWithCicely_001", -- Cicely (Gridania: BTN Guild)
[1000409] = "defaultTalkWithNicoliaux_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Nicoliaux (Gridania: Acorn Orchard) [has multiple map markers, one might be regular idle location?]
[1000410] = "defaultTalkWithAunillie_001", -- <<<NOT IMPLEMENTED>>> Aunillie (Gridania: Acorn Orchard)
[1000411] = "defaultTalkWithElyn_001", -- <<<NOT IMPLEMENTED>>> Elyn (Gridania: Acorn Orchard)
[1000412] = "defaultTalkWithRyd_001", -- <<<NOT IMPLEMENTED>>> Ryd (Gridania: Acorn Orchard)
[1000427] = "defaultTalkWithAnene_001", -- Anene (Gridania: Adv. Guild) defaultTalkWithAnene_002 / 003 (PGL informant)
[1000428] = "defaultTalkWithSylbyrt_001", -- Sylbyrt (Gridania: Adv. Guild) defaultTalkWithSylbyrt_002 / 003 (MRD informant)
[1000429] = "defaultTalkWithHongavunga_001", -- Honga Vunga (Gridania: Adv. Guild) defaultTalkWithHongavunga_002 / 003 (WVR informant)
@ -33,19 +41,21 @@ local defaultTalkFst = {
[1000431] = "defaultTalkWithLtandhaa_001", -- L'tandhaa (Gridania: Adv. Guild) defaultTalkWithLtandhaa_002 / 003 (ALC informant)
[1000432] = "defaultTalkWithPofufu_001", -- Pofufu (Gridania: Adv. Guild) defaultTalkWithPofufu_002 / 003 (MIN informant)
[1000433] = "defaultTalkWithDrividot_001", -- Drividot (Gridania: Adv. Guild) defaultTalkWithDrividot_002 / 003 (FSH informant)
[1000435] = "defaultTalkWithBasewin_001", -- Basewin (Gridania: Adv. Guild) defaultTalkWithBasewin_002 / 003 (BSM informant)
[1000434] = "defaultTalkWithOdilie_001", -- Odilie (Gridania: Adv. Guild) defaultTalkWithOdilie_002 / 003 (CUL informant)
[1000435] = "defaultTalkWithBasewin_001", -- Basewin (Gridania: Adv. Guild) defaultTalkWithBasewin_002 / 003 (BSM informant)
[1000436] = "defaultTalkWithSeikfrae_001", -- Seikfrae (Gridania: Adv. Guild) defaultTalkWithSeikfrae_002 / 003 (GLD informant)
[1000437] = "defaultTalkWithEdasshym_001", -- E'dasshym (Gridania: Adv. Guild) defaultTalkWithEdasshym_002 / 003 (THM informant)
--[1000456] = "", -- Tierney (Gridania: Adv. Guild) Guildleve NPC - Will not fire, not PplStd.
--[1000457] = "", -- Gontrant (Gridania: Adv. Guild) Guildleve NPC - Will not fire, not PplStd.
[1000458] = "defaultTalkWithInn_Desk", -- V'korolon (Gridania: Adv. Guild) - defaultTalkWithVkorolon_001 - Pre-Inn unlocked dialog
--[1000459] = "", -- Gallia (Gridania: LTW Guild) Guildmark NPC - Will not fire, not PplStd.
--[1000461] = "", -- Kipopo (Gridania: BTN Guild) Guildmark NPC - Will not fire, not PplStd.
--[1000462] = "", -- Clarembald (Gridania: LNC Guild) Guildmark NPC - Will not fire, not PplStd.
[1000458] = "defaultTalkWithVkorolon_001", -- V'korolon (Gridania: Adv. Guild) - Inn NPC. defaultTalkWithInn_Desk used when Inn unlocked
--[1000460] = "defaultTalkWithHetzkin_001", -- Hetzkin (Gridania: CNJ Guild) Guildmark NPC - Will not fire, not PplStd.
[1000463] = "defaultTalkWithNonolato_001", -- Nonolato (Gridania: ARC Guild)
--[1000464] = "", -- Cassandra (Gridania: ARC Guild) Guildmark NPC - Will not fire, not PplStd.
[1000465] = "defaultTalkWithAnaidjaa_001", -- A'naidjaa (Gridania: CRP Guild)
--[1000466] = "", -- Frances (Gridania: CRP Guild) Guildmark NPC - Will not fire, not PplStd.
[1000504] = "defaultTalkWithTelent_001", -- <<<NOT IMPLEMENTED>>> Telent (Gridania: CNJ Guild) - Has map marker, but whole-numbered.
[1000509] = "defaultTalkWithKinborow_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Kinborow (Gridania: CNJ Guild)
[1000510] = "defaultTalkWithZerig_001", -- <<<NOT IMPLEMENTED>>> Zerig (Gridania: CNJ Guild) - Has map marker, but whole-numbered.
[1000511] = "defaultTalkWithConcessa_001", -- <<<NOT IMPLEMENTED>>> Concessa (Gridania: CNJ Guild)
[1000512] = "defaultTalkWithMaroile_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Maroile (Gridania: CNJ Guild)
[1000513] = "defaultTalkWithGugula_001", -- <<<NOT IMPLEMENTED>>> Gugula (Gridania: CNJ Guild)
[1000556] = "defaultTalkWithWybir_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Wybir (South Shroud: Quarrymill)
[1000565] = "defaultTalkWithCeinguled_001", -- Ceinguled (Gridania: LNC Guild)
[1000566] = "defaultTalkWithFrancis_001", -- Francis (Gridania: LNC Guild) arg1=1, npc recognizes you're in the LNC guild
[1000567] = "defaultTalkWithDhemdaeg_001", -- Dhemdaeg (Gridania: LNC Guild)
@ -61,172 +71,138 @@ local defaultTalkFst = {
[1000627] = "defaultTalkWithAerstsyn_001", -- Aerstsyn (Gridania: LNC Guild)
[1000629] = "defaultTalkWithEburhart_001", -- Eburhart (Gridania: BTN Guild)
[1000630] = "defaultTalkWithNoes_001", -- Noes (Gridania: Apkallus Falls)
[1000669] = "defaultTalkWithJajajbygo_001", -- <<<NOT IMPLEMENTED>>> Jajajbygo (Central Shroud: Camp Benchbranch) If Arg1 = 20 (SpecialEventWork correlation?), extra dialog about Atomos
[1000670] = "defaultTalkWithPepeli_001", -- <<<NOT IMPLEMENTED>>> Pepeli (Central Shroud: Camp Benchbranch) If Arg1 = 20 (SpecialEventWork correlation?), extra dialog about 7U Era starting
[1000671] = "defaultTalkWithMiraudont_001", -- Miraudont (North Shroud: Camp Emerald Moss) arg1=true - Mentions Atomos
[1000681] = "defaultTalkWithNuala_001", -- Nuala (Gridania: LNC Guild)
[1000701] = "defaultTalkWithZuzupoja_001", -- Zuzupoja (Gridania: CRP Guild)
[1000821] = "defaultTalkWithNellaure_001", -- Nellaure (Gridania: CRP Guild)
[1000737] = "defaultTalkWithBiddy_001", -- <<<NOT IMPLEMENTED>>> Biddy (Gridania: CNJ Guild) - Has map marker, but whole-numbered.
[1000821] = "defaultTalkWithNellaure_001", -- Nellaure (Gridania: CRP Guild)
[1000822] = "defaultTalkWithCaplan_001", -- Caplan (Gridania: CRP Guild)
[1000823] = "defaultTalkWithUlmhylt_001", -- Ulmhylt (Gridania: CRP Guild)
[1000829] = "defaultTalkWithOdhinek_001", -- O'dhinek (Gridania: ARC Guild)
[1000830] = "defaultTalkWithGeorjeaux_001", -- Georjeaux (Gridania: ARC Guild) defaultTalkWithGeorjeaux_002 - Dialog when you're part of the guild?
[1000831] = "defaultTalkWithAlaire_001", -- Alaire (Gridania: ARC Guild)
[1000832] = "defaultTalkWithMianne_001", -- Mianne (Gridania: ARC Guild)
[1000837] = "defaultTalkWithRdjongo_001", -- <<<NOT IMPLEMENTED>>> R'djongo (Gridania: Stillglade Fane)
[1000839] = "defaultTalkWithKhujazhwan_001", -- <<<NOT IMPLEMENTED>>> Khuja Zhwan (Gridania: Stillglade Fane)
[1000951] = "defaultTalkWithLonsygg_001", -- Lonsygg (Gridania: Blue Badger Gate)
[1000978] = "defaultTalkWithGylbart_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Gylbart (South Shroud: Quarrymill)
[1001071] = "defaultTalkWithTnbulea_001", -- <<<NOT IMPLEMENTED>>> T'nbulea (Gridania: CNJ Guild)
[1001072] = "defaultTalkWithFoforyo_001", -- <<<NOT IMPLEMENTED>>> Foforyo (Gridania: CNJ Guild)
[1001077] = "defaultTalkWithBeli_001", -- Beli (Gridania: LTW Guild)
[1001078] = "defaultTalkWithMaddeline_001", -- Maddeline (Gridania: LTW Guild)
[1001079] = "defaultTalkWithDyrstbrod_001", -- Dyrstbrod (Gridania: LTW Guild)
[1001080] = "defaultTalkWithTatagoi_001", -- Tatagoi (Gridania: LTW Guild)
[1001081] = "defaultTalkWithKhumamoshroca_001", -- Khuma Moshroca (Gridania: LTW Guild)
[1001081] = "defaultTalkWithKhumamoshroca_001", -- Khuma Moshroca (Gridania: LTW Guild)
[1001082] = "defaultTalkWithLuilda_001", -- Luilda (Gridania: LTW Guild)
[1001101] = "defaultTalkWithVnabyano_001", -- V'nabyano (Gridania: BTN Guild)
[1001102] = "defaultTalkWithSandre_001", -- Sandre (Gridania: BTN Guild)
[1001103] = "defaultTalkWithMestonnaux_001", -- Mestonnaux (Gridania: BTN Guild)
[1001103] = "defaultTalkWithMestonnaux_001", -- Mestonnaux (Gridania: BTN Guild)
[1001150] = "defaultTalkWithBloisirant_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Bloisirant (South Shroud: Silent Arbor) Instance queue NPC for Toto-Rak - Will not fire, not PplStd.
[1001151] = "defaultTalkWithBidelia_001", -- <<<NOT IMPLEMENTED>>> Bidelia - Entry Denier Guard?
[1001152] = "defaultTalkWithDadaneja_001", -- <<<NOT IMPLEMENTED>>> Dadaneja - Entry Denier Guard (West Shroud) - Guards fst_f0_dun06
[1001153] = "defaultTalkWithRimomo_001", -- <<<NOT IMPLEMENTED>>> Rimomo - Entry Denier Guard (North Shroud: 25,7) - Guards fst_f0_dun05
[1001175] = "defaultTalkWithChloe_001", -- Chloe (Gridania: ARC Guild)
--[1001183] = "", -- Emoni (Gridania: Adv. Guild) Linkshell NPC - Will not fire, not PplStd.
--[1001184] = "", -- Gyles (Gridania: Adv. Guild) Retainer NPC - Will not fire, not PplStd.
[1001188] = "defaultTalkWithGuildleveClientG_001", -- Maisenta (Gridania)
[1001189] = "defaultTalkWithGuildleveClientG_002", -- Pukiki (Gridania)
[1001396] = "defaultTalkWithLefwyne_001", -- Lefwyne (Gridania: Shaded Bower)
[1001430] = "defaultTalkWithKinnison_001", -- Kinnison - Two args (nil errors client). If either >= 0, dialog mentions you've met Kan-E-Senna. Position inaccurate?
[1001190] = "defaultTalkWithGuildleveClientG_003", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Eugenaire (Gridania: White Wolf Gate)
[1001294] = "defaultTalkWithIolaine_001", -- <<<NOT IMPLEMENTED>>> Iolaine - Entry Denier Guard (West Shroud) - Also guards fst_f0_dun06
[1001338] = "defaultTalkWithLivith_001", -- <<<NOT IMPLEMENTED>>> Livith (North Shroud: Hyrstmill)
[1001339] = "defaultTalkWithProscen_001", -- <<<NOT IMPLEMENTED>>> Proscen (North Shroud: Hyrstmill)
[1001340] = "defaultTalkWithTanguistl_001", -- <<<NOT IMPLEMENTED>>> Tanguistl (North Shroud: Hyrstmill)
[1001341] = "defaultTalkWithComoere_001", -- <<<NOT IMPLEMENTED>>> Comoere (North Shroud: Hyrstmill) [dialog doesn't match wiki, but matching dialog isn't called in any function]
[1001342] = "defaultTalkWithLougblaet_001", -- <<<NOT IMPLEMENTED>>> Lougblaet (North Shroud: Hyrstmill)
[1001343] = "defaultTalkWithFamushidumushi_001", -- <<<NOT IMPLEMENTED>>> Famushi Dumushi (North Shroud: Hyrstmill)
[1001344] = "defaultTalkWithDrystan_001", -- <<<NOT IMPLEMENTED>>> Drystan (North Shroud: Hyrstmill)
[1001345] = "defaultTalkWithEadbert_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Eadbert (North Shroud: Hyrstmill)
[1001346] = "defaultTalkWithKeketo_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Keketo (South Shroud: Quarrymill)
[1001347] = "defaultTalkWithRadianttear_001", -- <<<NOT IMPLEMENTED>>> Radiant Tear (South Shroud: Quarrymill)
[1001348] = "defaultTalkWithMyles_001", -- <<<NOT IMPLEMENTED>>> Myles (South Shroud: Quarrymill)
[1001349] = "defaultTalkWithNathaniel_001", -- <<<NOT IMPLEMENTED>>> Nathaniel (South Shroud: Quarrymill)
[1001350] = "defaultTalkWithEvrardoux_001", -- <<<NOT IMPLEMENTED>>> Evrardoux (South Shroud: Quarrymill)
[1001351] = "defaultTalkWithTsehpanipahr_001", -- <<<NOT IMPLEMENTED>>> Tseh Panipahr (South Shroud: Quarrymill)
[1001352] = "defaultTalkWithEthelinda_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Ethelinda (South Shroud: Quarrymill)
[1001353] = "defaultTalkWithHedheue_001", -- <<<NOT IMPLEMENTED>>> Hedheue (South Shroud: Quarrymill)
[1001396] = "defaultTalkWithLefwyne_001", -- Lefwyne (Gridania: Shaded Bower)
[1001430] = "defaultTalkWithKinnison_001", -- Kinnison (Gridania: Stillglade Fane) Two args (nil errors client). If either >= 0, mentions you've met Kan-E-Senna (joined a GC). Position inaccurate.
[1001431] = "defaultTalkWithGenna_001", -- Genna (Gridania: Mih Khetto's Amphitheatre)
[1001432] = "defaultTalkWithMathye_001", -- Mathye (Gridania: Blue Badger Gate)
[1001433] = "defaultTalkWithUlta_001", -- Ulta (Gridania: Blue Badger Gate)
[1000434] = "defaultTalkWithOdilie_001", -- Odilie (Gridania: Adv. Guild) defaultTalkWithOdilie_002 / 003 (CUL informant)
[1001434] = "defaultTalkWithNicia_001", -- <<<NOT IMPLEMENTED>>> Nicia (Gridania: White Wolf Gate)
[1001435] = "defaultTalkWithBlandie_001", -- <<<NOT IMPLEMENTED>>> Blandie (Gridania: White Wolf Gate)
[1001436] = "defaultTalkWithOwyne_001", -- Owyne (Gridania: Aetheryte Plaza)
[1001437] = "defaultTalkWithSybell_001", -- Sybell (Gridania: Aetheryte Plaza)
[1001437] = "defaultTalkWithSybell_001", -- Sybell (Gridania: Aetheryte Plaza)
[1001459] = "defaultTalkWithFlavielle_001", -- Flavielle (Gridania: Adv. Guild) defaultTalkWithFlavielle_002 / 003 (ARM informant)
[1001469] = "downTownTalk", -- Eldid (Gridania: Wards Entrance)
[1001470] = "defaultTalkWithYlessa_001", -- Ylessa
[1001570] = "defaultTalkWithRayao_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Raya-O-Senna (North Shroud: Emerald Moss) WHM Job NPC, defaultTalkWithRayao_002
[1001571] = "defaultTalkWithAruhnsenna_001", -- <<<NOT IMPLEMENTED>>> A-Ruhn-Senna (Inside Toto-Rak instance)
[1001582] = "defaultTalkWithSwaenhylt_001", -- Swaenhylt (Gridania)
[1001583] = "defaultTalkWithMarcette_001", -- Marcette (Gridania: The Knot)
[1001470] = "defaultTalkWithYlessa_001", -- Ylessa
[1001610] = "defaultTalkWithChamberliaux_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Chamberliaux (South Shroud: Buscarron's Fold)
[1001611] = "defaultTalkWithFraemhar_001", -- <<<NOT IMPLEMENTED>>> Fraemhar (East Shroud: Hawthorne Hut)
[1001612] = "defaultTalkWithLora_001", -- <<<NOT IMPLEMENTED>>> Lora (East Shroud: Hawthorne Hut)
[1001613] = "defaultTalkWithXbhowaqi_001", -- <<<NOT IMPLEMENTED>>> X'bhowaqi (South Shroud: Buscarron's Fold)
[1001614] = "defaultTalkWithWawaramu_001", -- <<<NOT IMPLEMENTED>>> Wawaramu (South Shroud: Buscarron's Fold)
[1001615] = "defaultTalkWithArnott_001", -- <<<NOT IMPLEMENTED>>> Arnott (East Shroud: Hawthorne Hut)
[1001620] = "talkIdayCap", -- <<<NOT IMPLEMENTED>>> Serpent Lieutenant Marette (Gridania: The Knot) - Foundation Day 2011 - OLD EVENT NPC: Replaced by 2012 version
[1001621] = "talkIday1", -- <<<NOT IMPLEMENTED>>> Serpent Sergeant Frilaix (Gridania: The Knot) - Foundation Day 2011 - OLD EVENT NPC: Replaced by 2012 version
[1001622] = "talkIday2", -- <<<NOT IMPLEMENTED>>> Serpent Private Tristelle (Gridania: The Knot) - Foundation Day 2011 - OLD EVENT NPC: Replaced by 2012 version
[1001628] = "defaultTalkWithAilith_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Ailith (South Shroud: Quarrymill)
[1001636] = "defaultTalkWithLhomujuuk_001", -- <<<NOT IMPLEMENTED>>> Lho Mujuuk (South Shroud: Silent Arbor) - Hangs outside Toto-Rak entrance
[1001637] = "defaultTalkWithSholnoralno_001", -- <<<NOT IMPLEMENTED>>> Sholno Ralno (South Shroud: Silent Arbor) - Hangs outside Toto-Rak entrance
[1001638] = "defaultTalkWithTuatkk_001", -- <<<NOT IMPLEMENTED>>> Tuatkk (South Shroud: Silent Arbor) - Hangs outside Toto-Rak entrance
[1001642] = "defaultTalkWithRonanKognan_001", -- <<<NOT IMPLEMENTED>>> Ronan Kognan (Gridania: 5,5) - Has a variety of functions, listed under onTalk()
[1001706] = "defaultTalkWithMemama_001", -- Memama (Gridania: Adv. Guild)
[1001707] = "defaultTalkWithPfarahr_001", -- Pfarahr (Gridania: Adv. Guild)
[1001708] = "defaultTalkWithBeaudonet_001", -- Beaudonet (Gridania: Adv. Guild)
[1001709] = "defaultTalkWithFryswyde_001", -- Fryswyde (Gridania: Adv. Guild)
[1001710] = "defaultTalkWithWillielmus_001", -- Willielmus (Gridania: Adv. Guild)
[1001711] = "defaultTalkWithQZamqo_001", -- <<<NOT IMPLEMENTED>>> Q'zamqo (Gridania: Airship Landing)
[1001806] = "defaultTalkEnie_001", -- Enie (Gridania: BTN Guild)
[1001835] = "defaultTalkWithVorsaile_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Serpent Commander Heuloix (North Shroud: Emerald Moss)
[1001836] = "defaultTalkWithPukwapika_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Pukwa Pika (West Shroud: Turning Leaf) - Involved in "A Feast of Fools", Thornmarch fight
[1001837] = "defaultTalkWithPurumoogle_001", -- <<<NOT IMPLEMENTED>>> Frightened Moogle (West Shroud: Turning Leaf) - Hangs out beside Pukwa Pika
[1001838] = "defaultTalkWithPirimoogle_001", -- <<<NOT IMPLEMENTED>>> Fretful Moogle (West Shroud: Turning Leaf) - Hangs out beside Pukwa Pika
[1001936] = "defaultTalkWithPukno_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Pukno Poki - defaultTalkWithPukno_002 - Used after unlocking BRD?
[1001937] = "defaultTalkWithMoogleA_001", -- <<<NOT IMPLEMENTED>>> Pukni Pakk (North Shroud: Emerald Moss) - Hangs with WHM Job NPC - defaultTalkWithMoogleA_002 - Post-WHM dialog?
[1001938] = "defaultTalkWithMppgleB_001", -- <<<NOT IMPLEMENTED>>> Kupcha Kupa (North Shroud: Emerald Moss) - Hangs with WHM Job NPC - defaultTalkWithMppgleB_002 - Post-WHM dialog?
[1001951] = "defaultTalkWithAnselm_001", -- Anselm (Gridania: Adv. Guild)
--[1002090] = "", -- Serpent Private Hodder (Gridania: Adv. Guild) - Will not fire, not PplStd.
--[1002091] = "", -- Serpent Private Daurement (Gridania: Adv. Guild) - Will not fire, not PplStd.
[1001957] = "defaultTalkWithPukumoogle_001", -- <<<NOT IMPLEMENTED>>> Plush Moogle (West Shroud: Crimson Bark)
--[1002090] = "defaultTalkWithStewart_001", -- Serpent Private Hodder (Gridania: Adv. Guild) defaultTalkWithStewart_002 (Post-Raid dialog?) - Will not fire, not PplStd.
--[1002091] = "defaultTalkWithTrisselle_001", -- Serpent Private Daurement (Gridania: Adv. Guild) defaultTalkWithTrisselle_002 (No idea for context) - Will not fire, not PplStd.
[1002106] = "processEventELNAURE", -- Serpent Lieutenant Marette (Gridania: The Knot) - Foundation Day 2012 - Spl000 staticactor
[1002107] = "processEventARISMONT", -- Serpent Sergeant Frilaix (Gridania: The Knot) - Foundation Day 2012 - Spl000 staticactor
[1002108] = "processEventMERLIE", -- Serpent Private Tristelle (Gridania: The Knot) - Foundation Day 2012 - Spl000 staticactor
--[1060022] = "", -- Louisoix (Gridania: Apkallus Falls) - Will not fire, not PplStd.
[1060039] = "defaultTalkWithJehantel_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Jehantel (South Shroud: Tranquil Paths) BRD Job NPC - defaultTalkWithJehantel_002
[1060043] = "defaultTalkWithLegendBsm_001", -- <<<NOT IMPLEMENTED, HAS MARKER>>> Gerolt (East Shroud: Hawthorne Hut) - Arg1 controls which line of dialog he plays, otherwise nothing shows
--[1060022] = "defaultTalkLouisoix_001", -- Louisoix (Gridania: Apkallus Falls) - Will not fire, not PplStd.
[1200121] = "bookTalk", -- <<<NOT IMPLEMENTED>>> Dusty Tomes (Gridania: CNJ Guild) - Will not fire since it isn't PplStd. Identical dialog regardless.
[1500055] = "defaultTalkWithLionnellais_001", -- Lionnellais (Gridania: Adv. Guild) - Will not fire, not PplStd. Pre-airship dialog?
[1500056] = "defaultTalkWithHida_001", -- Hida (Gridania: Adv. Guild) - Will not fire, not PplStd. Pre-airship dialog?
--[1500061] = "", -- Fruhdhem (Gridania) Chocobo Taxi - Will not fire, not PplStd.
[1500060] = "defaultTalkWithHonoroit_001", -- <<<NOT IMPLEMENTED>>> Honoroit (Central Shroud) - Hangs around (-200, 5, -810), has an untargetable chocobo carriage behind
--[1500061] = "defaultTalkWithFhrudhem_001", -- Fruhdhem [function typo] (Gridania) Chocobo Taxi - Will not fire, not PplStd.
[1500127] = "tribeTalk", -- Prosperlain (Gridania)
--[1500294] = "", -- Gagaroon (Gridania: Rosewood Stalls) Black Market - Will not fire, not PplStd.
[1700001] = "defaultTalkWithPenelope_001", -- Penelope (Gridania: Adv. Guild)
[1700038] = "defaultTalkWithAUBRENARD_100", -- Aubrenard (Gridania: Shaded Bower)
[1700038] = "defaultTalkWithAUBRENARD_100" -- Aubrenard (Gridania: Shaded Bower)
}
--[[ TO:DO - Map the remainder of these
defaultTalkWithStewart_001 -- Hodder line according to old script?
defaultTalkWithPowle_001
defaultTalkWithSansa_001
defaultTalkWithNicoliaux_001
defaultTalkWithAunillie_001
defaultTalkWithElyn_001
defaultTalkWithRyd_001
defaultTalkWithSolieine_001
defaultTalkWithHetzkin_001
defaultTalkWithTelent_001
defaultTalkWithKhujazhwan_001
defaultTalkWithZerig_001
defaultTalkWithYonariumnari_001
defaultTalkWithGugula_001
defaultTalkWithRdjongo_001
defaultTalkWithAstrelle_001
defaultTalkWithBiddy_001
defaultTalkWithConcessa_001
defaultTalkWithMaroile_001
defaultTalkWithKinborow_001
defaultTalkWithTnbulea_001
defaultTalkWithFoforyo_001
defaultTalkWithFhrudhem_001
defaultTalkWithMitainie_001
defaultTalkWithNicia_001
defaultTalkWithBlandie_001
defaultTalkWithLivith_001
defaultTalkWithProscen_001
defaultTalkWithTanguistl_001
defaultTalkWithComoere_001
defaultTalkWithLougblaet_001
defaultTalkWithFamushidumushi_001
defaultTalkWithDrystan_001
defaultTalkWithEadbert_001
defaultTalkWithWybir_001
defaultTalkWithKeketo_001
defaultTalkWithRadianttear_001
defaultTalkWithMyles_001
defaultTalkWithNathaniel_001
defaultTalkWithEvrardoux_001
defaultTalkWithTsehpanipahr_001
defaultTalkWithEthelinda_001
defaultTalkWithHedheue_001
defaultTalkWithJajajbygo_001 arg1 arg2
defaultTalkWithPepeli_001 arg1
defaultTalkWithBidelia_001
defaultTalkWithRimomo_001
defaultTalkWithDadaneja_001
defaultTalkWithIolaine_001
defaultTalkWithBloisirant_001
defaultTalkWithGylbart_001
defaultTalkWithHonoroit_001
defaultTalkWithGuildleveClientG_003
defQuest1g0_Bush
defQuest1g1_Bush
defaultTalkWithChamberliaux_001
defaultTalkWithFraemhar_001
defaultTalkWithXbhowaqi_001
defaultTalkWithLora_001
defaultTalkWithWawaramu_001
defaultTalkWithArnott_001
defaultTalkWithLhomujuuk_001
defaultTalkWithSholnoralno_001
defaultTalkWithTuatkk_001
defaultTalkWithAruhnsenna_001
defaultTalkWithMoogle010_001
defaultTalkWithMoogle002_001
defaultTalkWithAilith_001
defaultTalkWithQZamqo_001
defaultTalkLouisoix_001
defaultTalkWithRonanKognan_001
defaultTalkWithRonanKognan_002 arg1 arg2
defaultTalkWithRonanKognan_Hint_00 arg1
defaultTalkWithRonanKognan_Hint_01 arg1
defaultTalkWithRonanKognan_Hint_02 arg1
defaultTalkWithRonanKognan_Hint_03 arg1
defaultTalkWithRonanKognan_Hint_04 arg1
defaultTalkWithVorsaile_001 arg1
defaultTalkWithAstrelle_001 -- "Astrelle" actor/name exists (1000736), but function calls blank dialog. Unused? Perhaps Quest-only actor?
defQuest1g0_Bush -- Empty function, unused? Perhaps Quest-only actor?
defQuest1g1_Bush -- Empty function, unused? Perhaps Quest-only actor?
defaultTalkWithYonariumnari_001 -- "Yonari Umnari" actor/name exists (1000838), but cannot find existence of the npc or dialog on the internet.
defaultTalkWithMoogle010_001 -- No idea what moogles these are tied too.
defaultTalkWithMoogle002_001
defaultTalkCaravanChocoboGri_001
bookTalk
talkIdayCap
talkIday1
talkIday2
defaultTalkWithPukwapika_001
defaultTalkWithPurumoogle_001
defaultTalkWithPirimoogle_001
defaultTalkWithPukumoogle_001
defaultTalkWithJehantel_001
defaultTalkWithJehantel_002
defaultTalkWithPukno_001
defaultTalkWithPukno_002
defaultTalkWithRayao_001
defaultTalkWithRayao_002
defaultTalkWithMoogleA_001
defaultTalkWithMoogleA_002
defaultTalkWithMppgleB_001
defaultTalkWithMppgleB_002
defaultTalkWithStewart_001
defaultTalkWithStewart_002
defaultTalkWithTrisselle_001
defaultTalkWithTrisselle_002
defaultTalkWithInn_Desk
defaultTalkWithInn_ExitDoor
defaultTalkWithExit01
defaultTalkWithLegendBsm_001 arg1
defaultTalkWithMarketNpc
defaultTalkWithHamletGuardGri_001
--]]
@ -235,26 +211,72 @@ defaultTalkWithHamletGuardGri_001
function onTalk(player, quest, npc, eventName)
local npcId = npc:GetActorClassId();
local clientFunc = defaultTalkFst[npcId];
local clientFunc = defaultTalkFst[npcId];
if (npcId == 1000430) then -- Nonco Menanco
callClientFunction(player, "delegateEvent", player, quest, clientFunc, 21);
elseif (npcId == 1000458) then -- V'korolon (Inn NPC)
if (player:IsQuestCompleted(110828)) then -- "Waste Not Want Not" completed.
defaultTalkWithInn(player, quest, "defaultTalkWithInn_Desk");
else
callClientFunction(player, "delegateEvent", player, quest, clientFunc);
end
elseif (npcId == 1000669) then -- Jajajbygo
callClientFunction(player, "delegateEvent", player, quest, clientFunc, 20);
elseif (npcId == 1000670) then -- Pepeli
callClientFunction(player, "delegateEvent", player, quest, clientFunc, 20);
elseif (npcId == 1001430) then -- Kinnison
callClientFunction(player, "delegateEvent", player, quest, clientFunc, -1,-1);
elseif (npcId == 1001642) then -- Ronan Kognan
callClientFunction(player, "delegateEvent", player, quest, clientFunc) -- Called if no deaspected crystals on player?
--[[
defaultTalkWithRonanKognan_002(bool1, bool2) -- Called if any deaspected crystals on player? bool1=Has enough deaspected for buying helmet bool2=already has helmet dialog
defaultTalkWithRonanKognan_Hint_00 -- Lore dialog likely called in order as you make transactions with the npc?
defaultTalkWithRonanKognan_Hint_01
defaultTalkWithRonanKognan_Hint_02
defaultTalkWithRonanKognan_Hint_03
defaultTalkWithRonanKognan_Hint_04
--]]
elseif (npcId == 1001936) then -- Pukno Poki
callClientFunction(player, "delegateEvent", player, quest, clientFunc); --defaultTalkWithPukno_002 -- Used after unlocking BRD?
elseif (npcId == 1060039) then -- Jehantel
callClientFunction(player, "delegateEvent", player, quest, clientFunc); --defaultTalkWithJehantel_002 -- Post-BRD unlock?
elseif (npcId == 1060043) then -- Gerolt
callClientFunction(player, "delegateEvent", player, quest, clientFunc, 1);
elseif ((npcId >= 1002106) and (npcId <= 1002108)) then -- Foundation Day 2012 NPCs
talkWithSpecial(player, npcId, clientFunc)
else
callClientFunction(player, "delegateEvent", player, quest, clientFunc);
callClientFunction(player, "delegateEvent", player, quest, clientFunc);
end
player:EndEvent();
player:EndEvent();
end
function IsQuestENPC(player, quest, npc)
return defaultTalkFst[npc:GetActorClassId()] ~= nil;
return defaultTalkFst[npc:GetActorClassId()] ~= nil;
end
function defaultTalkWithInn(player, quest, clientFunc)
local choice = callClientFunction(player, "delegateEvent", player, quest, clientFunc);
if (choice == 1) then
GetWorldManager():DoZoneChange(player, 244, nil, 0, 15, 160.048, 0, 154.263, 0);
elseif (choice == 2) then
if (player:GetHomePointInn() ~= 2) then
player:SetHomePointInn(2);
player:SendGameMessage(GetWorldMaster(), 60019, 0x20, 2075); --Secondary homepoint set to the Roost
else
player:SendGameMessage(GetWorldMaster(), 51140, 0x20); --This inn is already your Secondary Homepoint
end
end
end
function talkWithSpecial(player, npcId, clientFunc)
local splQuest = GetStaticActor("Spl000");
local magickedPrism = 0;

View file

@ -0,0 +1,125 @@
require ("global")
--[[
Quest Script
Name: A Well-Balanced Diet
Code: Etc1g2
Id: 110656
Prereq: Level 25, Any DoW/DoM
]]
-- Sequence Numbers
SEQ_000 = 0; -- Talk to Mestonnaux.
SEQ_001 = 1; -- Kill Popoto-optos.
SEQ_002 = 2; -- Talk to V'nabyano.
-- Actor Class Ids
ENPC_VNABYANO = 1001101;
ENPC_MESTONNAUX = 1001103;
BNPC_POPOTO_OPTO = 2100509;
-- Quest Markers
MRKR_MESTONNAUX = 11065601;
MRKR_OPTO_AREA = 11065602;
MRKR_VNABYANO = 11065604;
-- Counters
COUNTER_QUESTITEM = 0;
-- Quest Details
OBJECTIVE_ITEMID = 11000142;
OBJECTIVE_AMOUNT = 8;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_VNABYANO, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_MESTONNAUX, QFLAG_PLATE);
quest:SetENpc(ENPC_VNABYANO);
elseif (sequence == SEQ_001) then
quest:SetENpc(ENPC_MESTONNAUX);
quest:SetENpc(ENPC_VNABYANO);
quest:SetENpc(BNPC_POPOTO_OPTO);
elseif (sequence == SEQ_002) then
quest:SetENpc(ENPC_VNABYANO, QFLAG_REWARD);
quest:SetENpc(ENPC_MESTONNAUX);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_VNABYANO and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventV_NabyanoStart", 1, OBJECTIVE_AMOUNT);
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_MESTONNAUX) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent00", 0);
quest:StartSequence(SEQ_001);
elseif (npcClassId == ENPC_VNABYANO) then
callClientFunction(player, "delegateEvent", player, quest, "processEventV_NabyanoStart00");
end
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_MESTONNAUX) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent005", 0);
elseif (npcClassId == ENPC_VNABYANO) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent005_1");
end
--Quest Complete
elseif (seq == SEQ_002) then
if (npcClassId == ENPC_VNABYANO) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent05_3");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
elseif (npcClassId == ENPC_MESTONNAUX) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent005_2");
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (quest:GetSequence() == SEQ_001 and bnpc == BNPC_POPOTO_OPTO) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_002);
end
end
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM), 0, 0, 0, OBJECTIVE_AMOUNT;
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_MESTONNAUX;
elseif (sequence == SEQ_001) then
return MRKR_OPTO_AREA;
elseif (sequence == SEQ_002) then
return MRKR_VNABYANO;
end
end

View file

@ -0,0 +1,104 @@
require ("global")
--[[
Quest Script
Name: The Penultimate Prank
Code: Etc1g4
Id: 110658
Prereq: Level 30, Any DoW/DoM
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill Aurora Anglers.
SEQ_001 = 1; -- Talk to Nicoliaux.
-- Actor Class Ids
ENPC_NICOLIAUX = 1000409;
BNPC_AURORA_ANGLER = 2104508;
-- Quest Markers
MRKR_ANGLER_AREA = 11065801;
MRKR_NICOLIAUX = 11065802;
-- Counters
COUNTER_QUESTITEM = 0;
-- Quest Details
OBJECTIVE_ITEMID = 11000143;
OBJECTIVE_AMOUNT = 8;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_NICOLIAUX, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_NICOLIAUX);
quest:SetENpc(BNPC_MUSK_ANGLER);
elseif (sequence == SEQ_001) then
quest:SetENpc(ENPC_NICOLIAUX, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_NICOLIAUX and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventNicoliauxStart", 0, OBJECTIVE_AMOUNT);
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_NICOLIAUX) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent010", 0, OBJECTIVE_AMOUNT);
end
--Quest Complete
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_NICOLIAUX) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent020");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_AURORA_ANGLER) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
end
end
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM), 0, 0, 0, OBJECTIVE_AMOUNT;
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_ANGLER_AREA;
elseif (sequence == SEQ_001) then
return MRKR_NICOLIAUX;
end
end

View file

@ -78,11 +78,10 @@ function onTalk(player, quest, npc, eventName)
player:EndEvent();
end
-- TODO FINISH THIS
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_BRISTLETAIL_MARMOT) then
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_BRISTLETAIL_MARMOT) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25246, OBJECTIVE_ITEMID, 1); -- You obtain <item>
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
@ -91,7 +90,7 @@ function onKillBNpc(player, quest, bnpc)
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM);
return quest:GetData():GetCounter(COUNTER_QUESTITEM), 0, 0, 0, OBJECTIVE_AMOUNT;
end
function getJournalMapMarkerList(player, quest)

View file

@ -0,0 +1,135 @@
require ("global")
--[[
Quest Script
Name: The Ultimate Prank
Code: Etc1g6
Id: 110660
Prereq: Level 35, Any DoW/DoM, Etc1g4 complete
]]
-- Sequence Numbers
SEQ_000 = 0; -- Talk to Sylbyrt.
SEQ_001 = 1; -- Kill Wandering Wights.
SEQ_002 = 2; -- Talk to Sylbyrt.
SEQ_003 = 3; -- Talk to Nicoliaux.
-- Actor Class Ids
ENPC_SYLBYRT = 1000428;
ENPC_NICOLIAUX = 1000409;
BNPC_WANDERING_WIGHT = 2101908;
-- Quest Markers
MRKR_WIGHT_AREA = 11066001;
MRKR_SYLBYRT = 11066002;
MRKR_NICOLIAUX = 11066004;
-- Counters
COUNTER_QUESTITEM = 0;
COUNTER_QUESTITEM2 = 1;
-- Quest Details
ITEM_CEDAR_MARIONETTE = 11000146;
OBJECTIVE_ITEMID = 11000145;
OBJECTIVE_AMOUNT = 3;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_NICOLIAUX, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_SYLBYRT, QFLAG_PLATE);
quest:SetENpc(ENPC_NICOLIAUX);
elseif (sequence == SEQ_001) then
quest:SetENpc(ENPC_SYLBYRT);
quest:SetENpc(BNPC_WANDERING_WIGHT);
elseif (sequence == SEQ_002) then
quest:SetENpc(ENPC_SYLBYRT, QFLAG_PLATE);
elseif (sequence == SEQ_003) then
quest:SetENpc(ENPC_SYLBYRT);
quest:SetENpc(ENPC_NICOLIAUX, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_NICOLIAUX and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventNicoliauxStart");
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_SYLBYRT) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000", 2, OBJECTIVE_AMOUNT);
quest:StartSequence(SEQ_001);
elseif (npcClassId == ENPC_NICOLIAUX) then
callClientFunction(player, "delegateEvent", player, quest, "followEvent000");
end
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_SYLBYRT) then
callClientFunction(player, "delegateEvent", player, quest, "followEvent010", 2, OBJECTIVE_AMOUNT);
end
elseif (seq == SEQ_002) then
if (npcClassId == ENPC_SYLBYRT) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent010", 2, OBJECTIVE_AMOUNT);
quest:GetData():IncCounter(COUNTER_QUESTITEM2);
quest:StartSequence(SEQ_003);
end
--Quest Complete
elseif (seq == SEQ_003) then
if (npcClassId == ENPC_NICOLIAUX) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent020");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
elseif (npcClassId == ENPC_SYLBYRT) then
callClientFunction(player, "delegateEvent", player, quest, "followEvent020");
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (quest:GetSequence() == SEQ_001 and bnpc == BNPC_WANDERING_WIGHT) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_002);
end
end
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM), quest:GetData():GetCounter(COUNTER_QUESTITEM2), 0, 0, OBJECTIVE_AMOUNT;
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_SYLBYRT;
elseif (sequence == SEQ_001) then
return MRKR_WIGHT_AREA;
elseif (sequence == SEQ_002) then
return MRKR_SYLBYRT;
elseif (sequence == SEQ_003) then
return MRKR_NICOLIAUX;
end
end

View file

@ -0,0 +1,120 @@
require ("global")
--[[
Quest Script
Name: Say it with Wolf Tails
Code: Etc1g8
Id: 110662
Prereq: Level 30, Any DoW/DoM, Etc1l7 complete
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill Gnawing Gnats.
SEQ_001 = 1; -- Talk to Francis.
SEQ_002 = 2; -- Talk to Imania.
-- Actor Class Ids
ENPC_FRANCIS = 1000566;
ENPC_IMANIA = 1001567;
BNPC_GNAWING_GNATS = 2100609;
-- Quest Markers
MRKR_FRANCIS = 11066201;
MRKR_IMANIA = 11066202;
MRKR_GNAT_AREA = 11066203;
-- Counters
COUNTER_KILLS = 0;
-- Quest Details
QUESTITEM_WOLFTAIL = 11000152;
OBJECTIVE_AMOUNT = 8;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_FRANCIS, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_FRANCIS);
quest:SetENpc(BNPC_GNAWING_GNATS);
elseif (sequence == SEQ_001) then
quest:SetENpc(ENPC_FRANCIS, QFLAG_PLATE);
elseif (sequence == SEQ_002) then
quest:SetENpc(ENPC_IMANIA, QFLAG_REWARD);
quest:SetENpc(ENPC_FRANCIS);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_FRANCIS and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventFrancisStart1g8", OBJECTIVE_AMOUNT);
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_FRANCIS) then
callClientFunction(player, "delegateEvent", player, quest, "processEventFrancisFree", 0, OBJECTIVE_AMOUNT);
end
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_FRANCIS) then
callClientFunction(player, "delegateEvent", player, quest, "processEventFrancisAfter", 0, OBJECTIVE_AMOUNT);
attentionMessage(player, 25246, QUESTITEM_WOLFTAIL, 1); -- You obtain <item>
quest:StartSequence(SEQ_002);
end
--Quest Complete
elseif (seq == SEQ_002) then
if (npcClassId == ENPC_IMANIA) then
callClientFunction(player, "delegateEvent", player, quest, "processEventImania");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
elseif (npcClassId == ENPC_FRANCIS) then
callClientFunction(player, "delegateEvent", player, quest, "processEventFrancisAfterFree", 0, OBJECTIVE_AMOUNT);
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_GNAWING_GNATS) then
local counterAmount = quest:GetData():IncCounter(COUNTER_KILLS);
attentionMessage(player, 50041, 3100611, counterAmount, OBJECTIVE_AMOUNT); -- The <dispName> has been defeated. (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
end
end
end
function getJournalInformation(player, quest)
return quest:GetSequence() == SEQ_002 and 1 or 0, 0, 0, 0, OBJECTIVE_AMOUNT;
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_GNAT_AREA;
elseif (sequence == SEQ_001) then
return MRKR_FRANCIS;
elseif (sequence == SEQ_002) then
return MRKR_IMANIA;
end
end

View file

@ -0,0 +1,104 @@
require ("global")
--[[
Quest Script
Name: Embarrassing Excerpts
Code: Etc1g9
Id: 110663
Prereq: Level 30, Any DoW/DoM
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill Opo Opos.
SEQ_001 = 1; -- Talk to Lonsygg.
-- Actor Class Ids
ENPC_LONSYGG = 1000951;
BNPC_OPO_OPO = 2100503;
-- Quest Markers
MRKR_OPO_OPO_AREA = 11066301;
MRKR_LONSYGG = 11066302;
-- Counters
COUNTER_QUESTITEM = 0;
-- Quest Details
OBJECTIVE_ITEMID = 11000160;
OBJECTIVE_AMOUNT = 5;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_LONSYGG, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_LONSYGG);
quest:SetENpc(BNPC_OPO_OPO);
elseif (sequence == SEQ_001) then
quest:SetENpc(ENPC_LONSYGG, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_LONSYGG and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventLonsyggStart");
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_LONSYGG) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent005_2");
end
--Quest Complete
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_LONSYGG) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent010");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_OPO_OPO) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
end
end
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM);
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_OPO_OPO_AREA;
elseif (sequence == SEQ_001) then
return MRKR_LONSYGG;
end
end

View file

@ -12,8 +12,8 @@ Prereq: Level 20, Any Class
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill Toll Puks.
SEQ_001 = 1; -- Talk to HALDBERK.
SEQ_000 = 0; -- Kill Jetsam Jellies.
SEQ_001 = 1; -- Talk to Haldberk.
-- Actor Class Ids
ENPC_HALDBERK = 1000160;
@ -79,9 +79,9 @@ function onTalk(player, quest, npc, eventName)
end
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_JETSAM_JELLIES) then
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_JETSAM_JELLIES) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25246, OBJECTIVE_ITEMID, 1); -- You obtain <item>
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
@ -90,7 +90,7 @@ function onKillBNpc(player, quest, bnpc)
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM);
return 0, quest:GetData():GetCounter(COUNTER_QUESTITEM);
end
function getJournalMapMarkerList(player, quest)

View file

@ -78,9 +78,9 @@ function onTalk(player, quest, npc, eventName)
end
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_TOLL_PUK) then
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_TOLL_PUK) then
local counterAmount = quest:GetData():IncCounter(COUNTER_KILLS);
attentionMessage(player, 25241, counterAmount); -- You have defeated X enemies.
attentionMessage(player, 50041, 3100116, counterAmount, OBJECTIVE_AMOUNT); -- The <dispName> has been defeated. (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
@ -88,10 +88,6 @@ function onKillBNpc(player, quest, bnpc)
end
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_KILLS);
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();

View file

@ -79,9 +79,9 @@ function onTalk(player, quest, npc, eventName)
end
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_MUSK_ROSELING) then
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_MUSK_ROSELING) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25246, OBJECTIVE_ITEMID, 1); -- You obtain <item>
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);

View file

@ -79,9 +79,9 @@ function onTalk(player, quest, npc, eventName)
end
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_BERYL_CRAB) then
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_BERYL_CRAB) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25246, OBJECTIVE_ITEMID, 1); -- You obtain <item>
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);

View file

@ -76,7 +76,7 @@ function onTalk(player, quest, npc, eventName)
if (npcClassId == ENPC_IMANIA) then
callClientFunction(player, "delegateEvent", player, quest, "processEventImaniaFree");
elseif (npcClassId == ENPC_YUYUBESU) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000");
callClientFunction(player, "delegateEvent", player, quest, "processEventYuyubesuStart", 0, OBJECTIVE_AMOUNT);
quest:StartSequence(SEQ_001);
end
--Quest Complete
@ -103,11 +103,10 @@ function onTalk(player, quest, npc, eventName)
player:EndEvent();
end
-- TODO FINISH THIS
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_BOMB_EMBER) then
if (quest:GetSequence() == SEQ_001 and bnpc == BNPC_BOMB_EMBER) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25246, OBJECTIVE_ITEMID, 1); -- You obtain <item>
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_002);
@ -116,7 +115,7 @@ function onKillBNpc(player, quest, bnpc)
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM);
return quest:GetData():GetCounter(COUNTER_QUESTITEM), 0, 0, 0, OBJECTIVE_AMOUNT;
end
function getJournalMapMarkerList(player, quest)

View file

@ -128,12 +128,15 @@ function onTalk(player, quest, npc, eventName)
player:EndEvent();
end
function onEmote(player, quest, npc, eventName)
functison onEmote(player, quest, npc, eventName)
print("TESSSSSSSSSSSSSSSSSSSSSST2");
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
local data = quest:GetData();
local incCounter = false;
print("TESSSSSSSSSSSSSSSSSSSSSST");
-- Play the emote
if (eventName == "emoteDefault1") then -- Psych
player:DoEmote(npc.Id, 30, 21291);

View file

@ -0,0 +1,104 @@
require ("global")
--[[
Quest Script
Name: A Knock in the Night
Code: Etc1u0
Id: 110675
Prereq: Level 35, Any DoW/DoM
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill Cursed Eyes.
SEQ_001 = 1; -- Talk to Eleanor.
-- Actor Class Ids
ENPC_ELEANOR = 1001565;
BNPC_CURSED_EYES = 2101711;
-- Quest Markers
MRKR_EYES_AREA = 11067501;
MRKR_ELEANOR = 11067502;
-- Counters
COUNTER_QUESTITEM = 0;
-- Quest Details
OBJECTIVE_ITEMID = 11000153;
OBJECTIVE_AMOUNT = 8;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_ELEANOR, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_ELEANOR);
quest:SetENpc(BNPC_CURSED_EYES);
elseif (sequence == SEQ_001) then
quest:SetENpc(ENPC_ELEANOR, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_ELEANOR and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventEleanorStart", OBJECTIVE_AMOUNT);
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_ELEANOR) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000", OBJECTIVE_AMOUNT);
end
--Quest Complete
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_ELEANOR) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent010");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_CURSED_EYES) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
end
end
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM), 0, 0, 0, OBJECTIVE_AMOUNT;
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_EYES_AREA;
elseif (sequence == SEQ_001) then
return MRKR_ELEANOR;
end
end

View file

@ -79,9 +79,9 @@ function onTalk(player, quest, npc, eventName)
end
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_NUTGRABBER_MARMOT) then
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_NUTGRABBER_MARMOT) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25246, OBJECTIVE_ITEMID, 1); -- You obtain <item>
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
@ -90,7 +90,7 @@ function onKillBNpc(player, quest, bnpc)
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM);
return quest:GetData():GetCounter(COUNTER_QUESTITEM), 0, 0, 0, OBJECTIVE_AMOUNT;
end
function getJournalMapMarkerList(player, quest)

View file

@ -0,0 +1,98 @@
require ("global")
--[[
Quest Script
Name: Dressed to Be Killed
Code: 110677
Id: 110638
Prereq: Level 45, Any DoW/DoM
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill Dapper Cadaver.
SEQ_001 = 1; -- Talk to Tutubuki.
-- Actor Class Ids
ENPC_TUTUBUKI = 1001141;
BNPC_DAPPER_CADAVER = 2101816;
-- Quest Markers
MRKR_CADAVER_AREA = 11067701;
MRKR_TUTUBUKI = 11067702;
-- Quest Details
OBJECTIVE_ITEMID = 11000155;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_TUTUBUKI, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_TUTUBUKI);
quest:SetENpc(BNPC_DAPPER_CADAVER);
elseif (sequence == SEQ_001) then
quest:SetENpc(ENPC_TUTUBUKI, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_TUTUBUKI and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventTutubukiStart", 0, OBJECTIVE_AMOUNT);
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_TUTUBUKI) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000_2", 0, OBJECTIVE_AMOUNT);
end
--Quest Complete
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_TUTUBUKI) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent010");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_DAPPER_CADAVER) then
player:SendGameMessage(GetWorldMaster(), 50041, 0x20, 3101818, 1, 1); -- The <dispName> has been defeated. (X of Y)
player:SendGameMessage(GetWorldMaster(), 25246, 0x20, OBJECTIVE_ITEMID, 1); -- You obtain <item>
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
end
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM);
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_CADAVER_AREA;
elseif (sequence == SEQ_001) then
return MRKR_TUTUBUKI;
end
end

View file

@ -0,0 +1,126 @@
require ("global")
--[[
Quest Script
Name: The Customer Comes First
Code: Etc1u4
Id: 110679
Prereq: Level 30, Any DoW/DoM
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill Stormcry monsters.
SEQ_001 = 1; -- Talk to Cahernaut.
SEQ_002 = 2; -- Talk to Cahernaut.
-- Actor Class Ids
ENPC_CAHERNAUT = 1000915;
ENPC_HALDBERK = 1000160;
BNPC_STORMCRY_QUARTERMASTER = 2180210;
BNPC_STORMCRY_BOATSWAIN = 2180211;
BNPC_STORMCRY_POWDER_MONKEY = 2180212;
-- Quest Markers
MRKR_HALDBERK = 11067901;
MRKR_STORMCRY = 11067902;
MRKR_HALDBERK2 = 11067903;
-- Counters
COUNTER_QUESTITEM = 0;
-- Quest Details
OBJECTIVE_ITEMID = 11000156;
OBJECTIVE_AMOUNT = 8;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_CAHERNAUT, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_HALDBERK, QFLAG_PLATE);
quest:SetENpc(ENPC_CAHERNAUT);
elseif (sequence == SEQ_001) then
quest:SetENpc(BNPC_STORMCRY_QUARTERMASTER);
quest:SetENpc(BNPC_STORMCRY_BOATSWAIN);
quest:SetENpc(BNPC_STORMCRY_POWDER_MONKEY);
quest:SetENpc(ENPC_HALDBERK);
quest:SetENpc(ENPC_CAHERNAUT);
elseif (sequence == SEQ_002) then
quest:SetENpc(ENPC_HALDBERK, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_CAHERNAUT and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventCahernautStart");
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_CAHERNAUT) then
callClientFunction(player, "delegateEvent", player, quest, "processEventCahernautFollow");
elseif (npcClassId == ENPC_HALDBERK) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent005_1", OBJECTIVE_AMOUNT);
quest:StartSequence(SEQ_001);
end
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_HALDBERK) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent005_1Follow");
elseif (npcClassId == ENPC_CAHERNAUT) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent005Cahernaut");
end
--Quest Complete
elseif (seq == SEQ_002) then
if (npcClassId == ENPC_HALDBERK) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent010_1");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (quest:GetSequence() == SEQ_001 and (bnpc == BNPC_STORMCRY_BOATSWAIN or bnpc == BNPC_STORMCRY_POWDER_MONKEY or bnpc == BNPC_STORMCRY_QUARTERMASTER)) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_002);
end
end
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM);
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_HALDBERK;
elseif (sequence == SEQ_001) then
return MRKR_STORMCRY;
elseif (sequence == SEQ_002) then
return MRKR_HALDBERK2;
end
end

View file

@ -78,9 +78,9 @@ function onTalk(player, quest, npc, eventName)
end
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_STUFFED_DODO) then
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_STUFFED_DODO) then
local counterAmount = quest:GetData():IncCounter(COUNTER_KILLS);
attentionMessage(player, 25241, counterAmount); -- You have defeated X enemies.
attentionMessage(player, 50041, 3102011, counterAmount, OBJECTIVE_AMOUNT); -- The <dispName> has been defeated. (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
@ -89,7 +89,7 @@ function onKillBNpc(player, quest, bnpc)
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_KILLS);
return quest:GetData():GetCounter(COUNTER_KILLS), 0, 0, 0, OBJECTIVE_AMOUNT;
end
function getJournalMapMarkerList(player, quest)

View file

@ -79,9 +79,9 @@ function onTalk(player, quest, npc, eventName)
end
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_MOILING_MOLE) then
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_MOILING_MOLE) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25246, OBJECTIVE_ITEMID, 1); -- You obtain <item>
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
@ -90,7 +90,7 @@ function onKillBNpc(player, quest, bnpc)
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_KILLS);
return quest:GetData():GetCounter(COUNTER_QUESTITEM), 0, 0, 0, OBJECTIVE_AMOUNT;
end
function getJournalMapMarkerList(player, quest)

View file

@ -0,0 +1,122 @@
require ("global")
--[[
Quest Script
Name: A Forbidden Love
Code: Etc2g0
Id: 110664
Prereq: Level 30, Any DoW/DoM, Etc1g9 completed
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill Mirror Roselets.
SEQ_001 = 1; -- Talk to Lonsygg.
SEQ_002 = 2; -- Talk to Ethelinda.
-- Actor Class Ids
ENPC_ETHELINDA = 1001352;
ENPC_LONSYGG = 1000951;
BNPC_MIRROR_ROSELET = 2102708;
-- Quest Markers
MRKR_ROSELET_AREA = 11066401;
MRKR_LONSYGG = 11066402;
MRKR_ETHELINDA = 11066403;
-- Counters
COUNTER_QUESTITEM = 0;
-- Quest Details
OBJECTIVE_ITEMID = 11000161;
OBJECTIVE_AMOUNT = 3;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_ETHELINDA, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_ETHELINDA);
quest:SetENpc(BNPC_MIRROR_ROSELET);
elseif (sequence == SEQ_001) then
quest:SetENpc(ENPC_LONSYGG, QFLAG_PLATE);
quest:SetENpc(ENPC_ETHELINDA);
elseif (sequence == SEQ_002) then
quest:SetENpc(ENPC_ETHELINDA, QFLAG_PLATE);
quest:SetENpc(ENPC_LONSYGG);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_ETHELINDA and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventEthelindaStart");
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_ETHELINDA) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000_2");
end
--Quest Complete
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_LONSYGG) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000");
quest:StartSequence(SEQ_002);
elseif (npcClassId == ENPC_ETHELINDA) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000_2");
end
elseif (seq == SEQ_002) then
if (npcClassId == ENPC_ETHELINDA) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent005");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
elseif (npcClassId == ENPC_LONSYGG) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent005_2");
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_MIRROR_ROSELET) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
end
end
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM);
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_ROSELET_AREA;
elseif (sequence == SEQ_001) then
return MRKR_LONSYGG;
elseif (sequence == SEQ_002) then
return MRKR_ETHELINDA;
end
end

View file

@ -0,0 +1,104 @@
require ("global")
--[[
Quest Script
Name: Last Respects
Code: Etc1g1
Id: 110665
Prereq: Level 40, Any DoW/DoM
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill Lemurs.
SEQ_001 = 1; -- Talk to Eadbert.
-- Actor Class Ids
ENPC_EADBERT = 1001345;
BNPC_LEMURS = 2100512;
-- Quest Markers
MRKR_LEMUR_AREA = 11066501;
MRKR_EADBERT = 11066502;
-- Counters
COUNTER_QUESTITEM = 0;
-- Quest Details
OBJECTIVE_ITEMID = 11000162;
OBJECTIVE_AMOUNT = 4;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_EADBERT, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_EADBERT);
quest:SetENpc(BNPC_LEMURS);
elseif (sequence == SEQ_001) then
quest:SetENpc(ENPC_EADBERT, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_EADBERT and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventEadbertStart");
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_EADBERT) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000");
end
--Quest Complete
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_EADBERT) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent005");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_LEMURS) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
end
end
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM);
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_LEMUR_AREA;
elseif (sequence == SEQ_001) then
return MRKR_EADBERT;
end
end

View file

@ -0,0 +1,104 @@
require ("global")
--[[
Quest Script
Name: Stone Deaf
Code: Etc2g2
Id: 110666
Prereq: Level 18, Any DoW/DoM
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill Canopy Galagos.
SEQ_001 = 1; -- Talk to Kinborow.
-- Actor Class Ids
ENPC_KINBOROW = 1000509;
BNPC_CANOPY_GALAGOS = 2100502;
-- Quest Markers
MRKR_GALAGOS_AREA = 11066602;
MRKR_KINBOROW = 11066601;
-- Counters
COUNTER_QUESTITEM = 0;
-- Quest Details
OBJECTIVE_ITEMID = 11000163;
OBJECTIVE_AMOUNT = 5;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_KINBOROW, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_KINBOROW);
quest:SetENpc(BNPC_CANOPY_GALAGOS);
elseif (sequence == SEQ_001) then
quest:SetENpc(ENPC_KINBOROW, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_KINBOROW and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventStart");
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_KINBOROW) then
callClientFunction(player, "delegateEvent", player, quest, "processEventFree");
end
--Quest Complete
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_KINBOROW) then
callClientFunction(player, "delegateEvent", player, quest, "processEventClear");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_CANOPY_GALAGOS) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
end
end
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM);
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_GALAGOS_AREA;
elseif (sequence == SEQ_001) then
return MRKR_KINBOROW;
end
end

View file

@ -0,0 +1,99 @@
require ("global")
--[[
Quest Script
Name: Counting Sheep
Code: Etc2i0
Id: 110706
Prereq: Level 25, Any DoW/DoM
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill Dreadwolves.
SEQ_001 = 1; -- Talk to Patrick.
-- Actor Class Ids
ENPC_PATRICK = 1001358;
BNPC_DREADWOLVES = 2101403;
-- Quest Markers
MRKR_WOLF_AREA = 11101901;
MRKR_PATRICK = 11101902;
-- Counters
COUNTER_KILLS = 0;
-- Quest Details
OBJECTIVE_AMOUNT = 4;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_PATRICK, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_PATRICK);
quest:SetENpc(BNPC_DREADWOLVES);
elseif (sequence == SEQ_001) then
quest:SetENpc(ENPC_PATRICK, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_PATRICK and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventPatrickStart");
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_PATRICK) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000");
end
--Quest Complete
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_PATRICK) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent010");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_DREADWOLVES) then
local counterAmount = quest:GetData():IncCounter(COUNTER_KILLS);
attentionMessage(player, 50041, 3101403, counterAmount, OBJECTIVE_AMOUNT); -- The <dispName> has been defeated. (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
end
end
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_WOLF_AREA;
elseif (sequence == SEQ_001) then
return MRKR_PATRICK;
end
end

View file

@ -0,0 +1,104 @@
require ("global")
--[[
Quest Script
Name: A Hypocritical Oath
Code: Etc2i1
Id: 110707
Prereq: Level 25, Any DoW/DoM
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill Antelope Does.
SEQ_001 = 1; -- Talk to Arscelin.
-- Actor Class Ids
ENPC_ARSCELIN = 1001574;
BNPC_ANTELOPE_DOES = 2100314;
-- Quest Markers
MRKR_ARSCELIN = 11102001;
MRKR_ANTELOPE_AREA = 11102002;
-- Counters
COUNTER_QUESTITEM = 0;
-- Quest Details
OBJECTIVE_ITEMID = 11000177;
OBJECTIVE_AMOUNT = 5
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_ARSCELIN, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_ARSCELIN);
quest:SetENpc(BNPC_ANTELOPE_DOES);
elseif (sequence == SEQ_001) then
quest:SetENpc(ENPC_ARSCELIN, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_ARSCELIN and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventArscelinStart");
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_ARSCELIN) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000");
end
--Quest Complete
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_ARSCELIN) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent010");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_ANTELOPE_DOES) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
end
end
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM);
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_ANTELOPE_AREA;
elseif (sequence == SEQ_001) then
return MRKR_ARSCELIN;
end
end

View file

@ -0,0 +1,99 @@
require ("global")
--[[
Quest Script
Name: Fishing for Answers
Code: Etc2l0
Id: 110643
Prereq: Level 25, Any DoW/DoM
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill Giant Crab.
SEQ_001 = 1; -- Talk to Robairlain.
-- Actor Class Ids
ENPC_ROBAIRLAIN = 1000050;
BNPC_GIANT_CRAB = 2107601;
-- Quest Markers
MRKR_CRAB_AREA = 11064301;
MRKR_ROBAIRLAIN = 11064302;
-- Counters
COUNTER_KILLS = 0;
-- Quest Details
OBJECTIVE_AMOUNT = 5;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_ROBAIRLAIN, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_ROBAIRLAIN);
quest:SetENpc(BNPC_GIANT_CRAB);
elseif (sequence == SEQ_001) then
quest:SetENpc(ENPC_ROBAIRLAIN, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_ROBAIRLAIN and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventEadbertStart");
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_ROBAIRLAIN) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000");
end
--Quest Complete
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_ROBAIRLAIN) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent005");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_GIANT_CRAB) then
local counterAmount = quest:GetData():IncCounter(COUNTER_KILLS);
attentionMessage(player, 50041, 3107601, counterAmount, OBJECTIVE_AMOUNT); -- The <dispName> has been defeated. (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
end
end
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_CRAB_AREA;
elseif (sequence == SEQ_001) then
return MRKR_ROBAIRLAIN;
end
end

View file

@ -0,0 +1,110 @@
require ("global")
--[[
Quest Script
Name: A Misty Past
Code: Etc2l3
Id: 110646
Prereq: Level 17, Any Class
]]
-- Sequence Numbers
SEQ_000 = 0; -- Talk to the ??? in Shposhae.
SEQ_005 = 5; -- Talk to F'ongho and think about what NM you saw.
SEQ_010 = 10; -- Talk to F'ongho and tell her what it was.
-- Actor Class Ids
QUEST_OBJECTIVE = 1000359;
FONGHO = 1000367;
-- Quest Markers
MRKR_OBJECTIVE = 11064601;
MRKR_FONGHO = 11064602;
-- Quest Misc
RING_ITEMID = 11000228;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(FONGHO, QFLAG_PLATE);
end
if (sequence == SEQ_000) then
quest:SetENpc(FONGHO);
quest:SetENpc(QUEST_OBJECTIVE, QFLAG_MAP);
elseif (sequence == SEQ_005) then
quest:SetENpc(QUEST_OBJECTIVE);
quest:SetENpc(FONGHO, QFLAG_PLATE);
elseif (sequence == SEQ_010) then
quest:SetENpc(FONGHO, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == FONGHO and not player:HasQuest(quest)) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventFONGHOStart");
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
end
-- Quest Progress
if (seq == SEQ_000) then
if (npcClassId == FONGHO) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent_000");
elseif (npcClassId == QUEST_OBJECTIVE) then
attentionMessage(player, 25246, RING_ITEMID, 1); -- You obtain <item>
quest:StartSequence(SEQ_005);
end
elseif (seq == SEQ_005) then
if (npcClassId == FONGHO) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent_015");
quest:StartSequence(SEQ_010);
end
elseif (seq == SEQ_010) then
--Quest Complete
if (npcClassId == FONGHO) then
local monsterChoice = callClientFunction(player, "delegateEvent", player, quest, "processEvent_020");
if (monsterChoice == 1) then
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
end
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function getJournalInformation(player, quest)
return quest:GetSequence() > SEQ_000 and 1 or 0;
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_OBJECTIVE;
elseif (sequence == SEQ_005) then
return MRKR_FONGHO;
elseif (sequence == SEQ_010) then
return MRKR_FONGHO;
end
end

View file

@ -0,0 +1,104 @@
require ("global")
--[[
Quest Script
Name: Freedom Isn't Free
Code: Etc2u1
Id: 110686
Prereq: Level 32, Any DoW/DoM
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill Amalj'aa Strikers.
SEQ_001 = 1; -- Talk to Halstein.
-- Actor Class Ids
ENPC_HALSTEIN = 1001007;
BNPC_AMALJAA_STRIKER = 2106541;
-- Quest Markers
MRKR_AMALJAA_AREA = 11068602;
MRKR_HALSTEIN = 11068601;
-- Counters
COUNTER_QUESTITEM = 0;
-- Quest Details
OBJECTIVE_ITEMID = 11000201;
OBJECTIVE_AMOUNT = 6;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_HALSTEIN, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_HALSTEIN);
quest:SetENpc(BNPC_AMALJAA_STRIKER);
elseif (sequence == SEQ_001) then
quest:SetENpc(ENPC_HALSTEIN, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_HALSTEIN and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventStart");
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_HALSTEIN) then
callClientFunction(player, "delegateEvent", player, quest, "processEventFree");
end
--Quest Complete
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_HALSTEIN) then
callClientFunction(player, "delegateEvent", player, quest, "processEventClear");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_AMALJAA_STRIKER) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
end
end
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM);
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_AMALJAA_AREA;
elseif (sequence == SEQ_001) then
return MRKR_HALSTEIN;
end
end

View file

@ -0,0 +1,104 @@
require ("global")
--[[
Quest Script
Name: Ore for an Ore
Code: Etc2u2
Id: 110687
Prereq: Level 28, Any DoW/DoM
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill Iron Coblyns.
SEQ_005 = 5; -- Talk to Pahja Zhwan.
-- Actor Class Ids
ENPC_PAHJA_ZHWAN = 1001840;
BNPC_IRON_COBLYN = 2102105;
-- Quest Markers
MRKR_COBLYN_AREA = 11068701;
MRKR_PAHJA_ZHWAN = 11068702;
-- Counters
COUNTER_QUESTITEM = 0;
-- Quest Details
OBJECTIVE_ITEMID = 11000226;
OBJECTIVE_AMOUNT = 10;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_PAHJA_ZHWAN, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_PAHJA_ZHWAN);
quest:SetENpc(BNPC_IRON_COBLYN);
elseif (sequence == SEQ_005) then
quest:SetENpc(ENPC_PAHJA_ZHWAN, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_PAHJA_ZHWAN and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventPAHJAZHWANStart");
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_PAHJA_ZHWAN) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000");
end
--Quest Complete
elseif (seq == SEQ_005) then
if (npcClassId == ENPC_PAHJA_ZHWAN) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent010");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_IRON_COBLYN) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_005);
end
end
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM);
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_COBLYN_AREA;
elseif (sequence == SEQ_005) then
return MRKR_PAHJA_ZHWAN;
end
end

View file

@ -0,0 +1,104 @@
require ("global")
--[[
Quest Script
Name: Monster of Maw Most Massive
Code: Etc3u9
Id: 110734
Prereq: Level 45, Any DoW/DoM
]]
-- Sequence Numbers
SEQ_000 = 0; -- Kill ?? ?? ??.
SEQ_001 = 1; -- Talk to Dural Tharal.
-- Actor Class Ids
ENPC_DURAL_THARAL = 1002101;
BNPC_MUSK_ROSELING = 2102717;
-- Quest Markers
MRKR_ROSELING_AREA = 11063801;
MRKR_DURAL_THARAL = 11063802;
-- Counters
COUNTER_QUESTITEM = 0;
-- Quest Details
OBJECTIVE_ITEMID = 11000149;
OBJECTIVE_AMOUNT = 8;
function onStart(player, quest)
quest:StartSequence(SEQ_000);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(ENPC_DURAL_THARAL, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(ENPC_DURAL_THARAL);
quest:SetENpc(BNPC_MUSK_ROSELING);
elseif (sequence == SEQ_001) then
quest:SetENpc(ENPC_DURAL_THARAL, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc, eventName)
local npcClassId = npc.GetActorClassId();
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == ENPC_DURAL_THARAL and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventStart", 0, OBJECTIVE_AMOUNT);
if (questAccepted == 1) then
player:AcceptQuest(quest);
end
player:EndEvent();
return;
-- Quest Progress
elseif (seq == SEQ_000) then
if (npcClassId == ENPC_DURAL_THARAL) then
callClientFunction(player, "delegateEvent", player, quest, "processEventFree", 0, OBJECTIVE_AMOUNT);
end
--Quest Complete
elseif (seq == SEQ_001) then
if (npcClassId == ENPC_DURAL_THARAL) then
callClientFunction(player, "delegateEvent", player, quest, "processEventClear");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);
end
end
quest:UpdateENPCs();
player:EndEvent();
end
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_MUSK_ROSELING) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);
end
end
end
function getJournalInformation(player, quest)
return quest:GetData():GetCounter(COUNTER_QUESTITEM);
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
if (sequence == SEQ_000) then
return MRKR_ROSELING_AREA;
elseif (sequence == SEQ_001) then
return MRKR_DURAL_THARAL;
end
end

View file

@ -79,9 +79,9 @@ function onTalk(player, quest, npc, eventName)
end
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_SABLETOOTH_SPRIGGAN) then
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_SABLETOOTH_SPRIGGAN) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25246, OBJECTIVE_ITEMID, 1); -- You obtain <item>
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);

View file

@ -79,9 +79,9 @@ function onTalk(player, quest, npc, eventName)
end
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_OILBUG) then
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_OILBUG) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25246, OBJECTIVE_ITEMID, 1); -- You obtain <item>
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);

View file

@ -79,9 +79,9 @@ function onTalk(player, quest, npc, eventName)
end
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_MATURE_FUNGUAR) then
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_MATURE_FUNGUAR) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25246, OBJECTIVE_ITEMID, 1); -- You obtain <item>
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);

View file

@ -36,7 +36,7 @@ function onStateChange(player, quest, sequence)
end
if (sequence == SEQ_000) then
quest:SetENpc(MRKR_TYAGO_MOUI);
quest:SetENpc(TYAGO_MOUI);
quest:SetENpc(LYNGWAEK, QFLAG_PLATE);
elseif (sequence == SEQ_001) then
quest:SetENpc(LYNGWAEK);
@ -49,7 +49,7 @@ function onTalk(player, quest, npc, eventName)
local seq = quest:GetSequence();
-- Offer the quest
if (npcClassId == MRKR_TYAGO_MOUI and seq == SEQ_ACCEPT) then
if (npcClassId == TYAGO_MOUI and seq == SEQ_ACCEPT) then
local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventTyagomouiStart");
if (questAccepted == 1) then
player:AcceptQuest(quest);
@ -60,7 +60,7 @@ function onTalk(player, quest, npc, eventName)
-- Quest Progress
if (seq == SEQ_000) then
if (npcClassId == MRKR_TYAGO_MOUI) then
if (npcClassId == TYAGO_MOUI) then
callClientFunction(player, "delegateEvent", player, quest, "followEvent005");
elseif (npcClassId == LYNGWAEK) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent010");
@ -68,7 +68,7 @@ function onTalk(player, quest, npc, eventName)
end
elseif (seq == SEQ_001) then
--Quest Complete
if (npcClassId == MRKR_TYAGO_MOUI) then
if (npcClassId == TYAGO_MOUI) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent020");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9);
player:CompleteQuest(quest);

View file

@ -79,9 +79,9 @@ function onTalk(player, quest, npc, eventName)
end
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_AMALJAA_GRUNTS) then
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_AMALJAA_GRUNTS) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25246, OBJECTIVE_ITEMID, 1); -- You obtain <item>
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);

View file

@ -79,9 +79,9 @@ function onTalk(player, quest, npc, eventName)
end
function onKillBNpc(player, quest, bnpc)
if (bnpc == BNPC_AMALJAA_DRUDGES) then
if (quest:GetSequence() == SEQ_000 and bnpc == BNPC_AMALJAA_DRUDGES) then
local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM);
attentionMessage(player, 25246, OBJECTIVE_ITEMID, 1); -- You obtain <item>
attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain <item> (X of Y)
if (counterAmount >= OBJECTIVE_AMOUNT) then
attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete!
quest:StartSequence(SEQ_001);