From 6bbe272d4829d5ecfaa787d86b377e2f70b8a934 Mon Sep 17 00:00:00 2001 From: Filip Maj Date: Sat, 2 Apr 2022 11:52:32 -0400 Subject: [PATCH] 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. --- Data/scripts/quests/dft/DftFst.lua | 290 ++++++++++++++++------------- Data/scripts/quests/etc/etc1g2.lua | 125 +++++++++++++ Data/scripts/quests/etc/etc1g4.lua | 104 +++++++++++ Data/scripts/quests/etc/etc1g5.lua | 7 +- Data/scripts/quests/etc/etc1g6.lua | 135 ++++++++++++++ Data/scripts/quests/etc/etc1g8.lua | 120 ++++++++++++ Data/scripts/quests/etc/etc1g9.lua | 104 +++++++++++ Data/scripts/quests/etc/etc1l0.lua | 10 +- Data/scripts/quests/etc/etc1l1.lua | 8 +- Data/scripts/quests/etc/etc1l5.lua | 4 +- Data/scripts/quests/etc/etc1l6.lua | 4 +- Data/scripts/quests/etc/etc1l7.lua | 9 +- Data/scripts/quests/etc/etc1l8.lua | 5 +- Data/scripts/quests/etc/etc1u0.lua | 104 +++++++++++ Data/scripts/quests/etc/etc1u1.lua | 6 +- Data/scripts/quests/etc/etc1u2.lua | 98 ++++++++++ Data/scripts/quests/etc/etc1u4.lua | 126 +++++++++++++ Data/scripts/quests/etc/etc1u5.lua | 6 +- Data/scripts/quests/etc/etc1u6.lua | 6 +- Data/scripts/quests/etc/etc2g0.lua | 122 ++++++++++++ Data/scripts/quests/etc/etc2g1.lua | 104 +++++++++++ Data/scripts/quests/etc/etc2g2.lua | 104 +++++++++++ Data/scripts/quests/etc/etc2i0.lua | 99 ++++++++++ Data/scripts/quests/etc/etc2i1.lua | 104 +++++++++++ Data/scripts/quests/etc/etc2l0.lua | 99 ++++++++++ Data/scripts/quests/etc/etc2l3.lua | 110 +++++++++++ Data/scripts/quests/etc/etc2u1.lua | 104 +++++++++++ Data/scripts/quests/etc/etc2u2.lua | 104 +++++++++++ Data/scripts/quests/etc/etc3u9.lua | 104 +++++++++++ Data/scripts/quests/wld/wld0g1.lua | 4 +- Data/scripts/quests/wld/wld0g3.lua | 4 +- Data/scripts/quests/wld/wld0g4.lua | 4 +- Data/scripts/quests/wld/wld0u1.lua | 8 +- Data/scripts/quests/wld/wld0u2.lua | 4 +- Data/scripts/quests/wld/wld0u4.lua | 4 +- 35 files changed, 2171 insertions(+), 182 deletions(-) create mode 100644 Data/scripts/quests/etc/etc1g2.lua create mode 100644 Data/scripts/quests/etc/etc1g4.lua create mode 100644 Data/scripts/quests/etc/etc1g6.lua create mode 100644 Data/scripts/quests/etc/etc1g8.lua create mode 100644 Data/scripts/quests/etc/etc1g9.lua create mode 100644 Data/scripts/quests/etc/etc1u0.lua create mode 100644 Data/scripts/quests/etc/etc1u2.lua create mode 100644 Data/scripts/quests/etc/etc1u4.lua create mode 100644 Data/scripts/quests/etc/etc2g0.lua create mode 100644 Data/scripts/quests/etc/etc2g1.lua create mode 100644 Data/scripts/quests/etc/etc2g2.lua create mode 100644 Data/scripts/quests/etc/etc2i0.lua create mode 100644 Data/scripts/quests/etc/etc2i1.lua create mode 100644 Data/scripts/quests/etc/etc2l0.lua create mode 100644 Data/scripts/quests/etc/etc2l3.lua create mode 100644 Data/scripts/quests/etc/etc2u1.lua create mode 100644 Data/scripts/quests/etc/etc2u2.lua create mode 100644 Data/scripts/quests/etc/etc3u9.lua diff --git a/Data/scripts/quests/dft/DftFst.lua b/Data/scripts/quests/dft/DftFst.lua index 8880442a..429128ca 100644 --- a/Data/scripts/quests/dft/DftFst.lua +++ b/Data/scripts/quests/dft/DftFst.lua @@ -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", -- <<>> 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", -- <<>> Soileine [function typo] (Gridania: CNJ Guild) Has Parley actor id: 1700030 [1000236] = "defaultTalkWithOpyltyl_001", -- Opyltyl (Gridania: BTN Guild) + [1000238] = "defaultTalkWithPowle_001", -- <<>> Powle (Gridania: Acorn Orchard) - Has many actorclass IDs, this is the first one. + [1000239] = "defaultTalkWithSansa_001", -- <<>> 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", -- <<>> Nicoliaux (Gridania: Acorn Orchard) [has multiple map markers, one might be regular idle location?] + [1000410] = "defaultTalkWithAunillie_001", -- <<>> Aunillie (Gridania: Acorn Orchard) + [1000411] = "defaultTalkWithElyn_001", -- <<>> Elyn (Gridania: Acorn Orchard) + [1000412] = "defaultTalkWithRyd_001", -- <<>> 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", -- <<>> Telent (Gridania: CNJ Guild) - Has map marker, but whole-numbered. + [1000509] = "defaultTalkWithKinborow_001", -- <<>> Kinborow (Gridania: CNJ Guild) + [1000510] = "defaultTalkWithZerig_001", -- <<>> Zerig (Gridania: CNJ Guild) - Has map marker, but whole-numbered. + [1000511] = "defaultTalkWithConcessa_001", -- <<>> Concessa (Gridania: CNJ Guild) + [1000512] = "defaultTalkWithMaroile_001", -- <<>> Maroile (Gridania: CNJ Guild) + [1000513] = "defaultTalkWithGugula_001", -- <<>> Gugula (Gridania: CNJ Guild) + [1000556] = "defaultTalkWithWybir_001", -- <<>> 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", -- <<>> Jajajbygo (Central Shroud: Camp Benchbranch) If Arg1 = 20 (SpecialEventWork correlation?), extra dialog about Atomos + [1000670] = "defaultTalkWithPepeli_001", -- <<>> 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", -- <<>> 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", -- <<>> R'djongo (Gridania: Stillglade Fane) + [1000839] = "defaultTalkWithKhujazhwan_001", -- <<>> Khuja Zhwan (Gridania: Stillglade Fane) [1000951] = "defaultTalkWithLonsygg_001", -- Lonsygg (Gridania: Blue Badger Gate) + [1000978] = "defaultTalkWithGylbart_001", -- <<>> Gylbart (South Shroud: Quarrymill) + [1001071] = "defaultTalkWithTnbulea_001", -- <<>> T'nbulea (Gridania: CNJ Guild) + [1001072] = "defaultTalkWithFoforyo_001", -- <<>> 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", -- <<>> Bloisirant (South Shroud: Silent Arbor) Instance queue NPC for Toto-Rak - Will not fire, not PplStd. + [1001151] = "defaultTalkWithBidelia_001", -- <<>> Bidelia - Entry Denier Guard? + [1001152] = "defaultTalkWithDadaneja_001", -- <<>> Dadaneja - Entry Denier Guard (West Shroud) - Guards fst_f0_dun06 + [1001153] = "defaultTalkWithRimomo_001", -- <<>> 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", -- <<>> Eugenaire (Gridania: White Wolf Gate) + [1001294] = "defaultTalkWithIolaine_001", -- <<>> Iolaine - Entry Denier Guard (West Shroud) - Also guards fst_f0_dun06 + [1001338] = "defaultTalkWithLivith_001", -- <<>> Livith (North Shroud: Hyrstmill) + [1001339] = "defaultTalkWithProscen_001", -- <<>> Proscen (North Shroud: Hyrstmill) + [1001340] = "defaultTalkWithTanguistl_001", -- <<>> Tanguistl (North Shroud: Hyrstmill) + [1001341] = "defaultTalkWithComoere_001", -- <<>> Comoere (North Shroud: Hyrstmill) [dialog doesn't match wiki, but matching dialog isn't called in any function] + [1001342] = "defaultTalkWithLougblaet_001", -- <<>> Lougblaet (North Shroud: Hyrstmill) + [1001343] = "defaultTalkWithFamushidumushi_001", -- <<>> Famushi Dumushi (North Shroud: Hyrstmill) + [1001344] = "defaultTalkWithDrystan_001", -- <<>> Drystan (North Shroud: Hyrstmill) + [1001345] = "defaultTalkWithEadbert_001", -- <<>> Eadbert (North Shroud: Hyrstmill) + [1001346] = "defaultTalkWithKeketo_001", -- <<>> Keketo (South Shroud: Quarrymill) + [1001347] = "defaultTalkWithRadianttear_001", -- <<>> Radiant Tear (South Shroud: Quarrymill) + [1001348] = "defaultTalkWithMyles_001", -- <<>> Myles (South Shroud: Quarrymill) + [1001349] = "defaultTalkWithNathaniel_001", -- <<>> Nathaniel (South Shroud: Quarrymill) + [1001350] = "defaultTalkWithEvrardoux_001", -- <<>> Evrardoux (South Shroud: Quarrymill) + [1001351] = "defaultTalkWithTsehpanipahr_001", -- <<>> Tseh Panipahr (South Shroud: Quarrymill) + [1001352] = "defaultTalkWithEthelinda_001", -- <<>> Ethelinda (South Shroud: Quarrymill) + [1001353] = "defaultTalkWithHedheue_001", -- <<>> 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", -- <<>> Nicia (Gridania: White Wolf Gate) + [1001435] = "defaultTalkWithBlandie_001", -- <<>> 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", -- <<>> Raya-O-Senna (North Shroud: Emerald Moss) WHM Job NPC, defaultTalkWithRayao_002 + [1001571] = "defaultTalkWithAruhnsenna_001", -- <<>> 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", -- <<>> Chamberliaux (South Shroud: Buscarron's Fold) + [1001611] = "defaultTalkWithFraemhar_001", -- <<>> Fraemhar (East Shroud: Hawthorne Hut) + [1001612] = "defaultTalkWithLora_001", -- <<>> Lora (East Shroud: Hawthorne Hut) + [1001613] = "defaultTalkWithXbhowaqi_001", -- <<>> X'bhowaqi (South Shroud: Buscarron's Fold) + [1001614] = "defaultTalkWithWawaramu_001", -- <<>> Wawaramu (South Shroud: Buscarron's Fold) + [1001615] = "defaultTalkWithArnott_001", -- <<>> Arnott (East Shroud: Hawthorne Hut) + [1001620] = "talkIdayCap", -- <<>> Serpent Lieutenant Marette (Gridania: The Knot) - Foundation Day 2011 - OLD EVENT NPC: Replaced by 2012 version + [1001621] = "talkIday1", -- <<>> Serpent Sergeant Frilaix (Gridania: The Knot) - Foundation Day 2011 - OLD EVENT NPC: Replaced by 2012 version + [1001622] = "talkIday2", -- <<>> Serpent Private Tristelle (Gridania: The Knot) - Foundation Day 2011 - OLD EVENT NPC: Replaced by 2012 version + [1001628] = "defaultTalkWithAilith_001", -- <<>> Ailith (South Shroud: Quarrymill) + [1001636] = "defaultTalkWithLhomujuuk_001", -- <<>> Lho Mujuuk (South Shroud: Silent Arbor) - Hangs outside Toto-Rak entrance + [1001637] = "defaultTalkWithSholnoralno_001", -- <<>> Sholno Ralno (South Shroud: Silent Arbor) - Hangs outside Toto-Rak entrance + [1001638] = "defaultTalkWithTuatkk_001", -- <<>> Tuatkk (South Shroud: Silent Arbor) - Hangs outside Toto-Rak entrance + [1001642] = "defaultTalkWithRonanKognan_001", -- <<>> 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", -- <<>> Q'zamqo (Gridania: Airship Landing) [1001806] = "defaultTalkEnie_001", -- Enie (Gridania: BTN Guild) + [1001835] = "defaultTalkWithVorsaile_001", -- <<>> Serpent Commander Heuloix (North Shroud: Emerald Moss) + [1001836] = "defaultTalkWithPukwapika_001", -- <<>> Pukwa Pika (West Shroud: Turning Leaf) - Involved in "A Feast of Fools", Thornmarch fight + [1001837] = "defaultTalkWithPurumoogle_001", -- <<>> Frightened Moogle (West Shroud: Turning Leaf) - Hangs out beside Pukwa Pika + [1001838] = "defaultTalkWithPirimoogle_001", -- <<>> Fretful Moogle (West Shroud: Turning Leaf) - Hangs out beside Pukwa Pika + [1001936] = "defaultTalkWithPukno_001", -- <<>> Pukno Poki - defaultTalkWithPukno_002 - Used after unlocking BRD? + [1001937] = "defaultTalkWithMoogleA_001", -- <<>> Pukni Pakk (North Shroud: Emerald Moss) - Hangs with WHM Job NPC - defaultTalkWithMoogleA_002 - Post-WHM dialog? + [1001938] = "defaultTalkWithMppgleB_001", -- <<>> 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", -- <<>> 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", -- <<>> Jehantel (South Shroud: Tranquil Paths) BRD Job NPC - defaultTalkWithJehantel_002 + [1060043] = "defaultTalkWithLegendBsm_001", -- <<>> 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", -- <<>> 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", -- <<>> 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; diff --git a/Data/scripts/quests/etc/etc1g2.lua b/Data/scripts/quests/etc/etc1g2.lua new file mode 100644 index 00000000..25e8466b --- /dev/null +++ b/Data/scripts/quests/etc/etc1g2.lua @@ -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 (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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc1g4.lua b/Data/scripts/quests/etc/etc1g4.lua new file mode 100644 index 00000000..ce030c9b --- /dev/null +++ b/Data/scripts/quests/etc/etc1g4.lua @@ -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 (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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc1g5.lua b/Data/scripts/quests/etc/etc1g5.lua index eb435c4f..5bc48b15 100644 --- a/Data/scripts/quests/etc/etc1g5.lua +++ b/Data/scripts/quests/etc/etc1g5.lua @@ -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 + attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain (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) diff --git a/Data/scripts/quests/etc/etc1g6.lua b/Data/scripts/quests/etc/etc1g6.lua new file mode 100644 index 00000000..80058818 --- /dev/null +++ b/Data/scripts/quests/etc/etc1g6.lua @@ -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 (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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc1g8.lua b/Data/scripts/quests/etc/etc1g8.lua new file mode 100644 index 00000000..a1ed8928 --- /dev/null +++ b/Data/scripts/quests/etc/etc1g8.lua @@ -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 + 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 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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc1g9.lua b/Data/scripts/quests/etc/etc1g9.lua new file mode 100644 index 00000000..2a23c4dd --- /dev/null +++ b/Data/scripts/quests/etc/etc1g9.lua @@ -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 (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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc1l0.lua b/Data/scripts/quests/etc/etc1l0.lua index 85fd53c4..d96041fd 100644 --- a/Data/scripts/quests/etc/etc1l0.lua +++ b/Data/scripts/quests/etc/etc1l0.lua @@ -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 + attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain (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) diff --git a/Data/scripts/quests/etc/etc1l1.lua b/Data/scripts/quests/etc/etc1l1.lua index 7347f7f1..d2ff15a6 100644 --- a/Data/scripts/quests/etc/etc1l1.lua +++ b/Data/scripts/quests/etc/etc1l1.lua @@ -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 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(); diff --git a/Data/scripts/quests/etc/etc1l5.lua b/Data/scripts/quests/etc/etc1l5.lua index 94810b0c..3f84111d 100644 --- a/Data/scripts/quests/etc/etc1l5.lua +++ b/Data/scripts/quests/etc/etc1l5.lua @@ -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 + attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain (X of Y) if (counterAmount >= OBJECTIVE_AMOUNT) then attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete! quest:StartSequence(SEQ_001); diff --git a/Data/scripts/quests/etc/etc1l6.lua b/Data/scripts/quests/etc/etc1l6.lua index 5f1211cf..8f51d8a4 100644 --- a/Data/scripts/quests/etc/etc1l6.lua +++ b/Data/scripts/quests/etc/etc1l6.lua @@ -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 + attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain (X of Y) if (counterAmount >= OBJECTIVE_AMOUNT) then attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete! quest:StartSequence(SEQ_001); diff --git a/Data/scripts/quests/etc/etc1l7.lua b/Data/scripts/quests/etc/etc1l7.lua index 158ba267..a31755f5 100644 --- a/Data/scripts/quests/etc/etc1l7.lua +++ b/Data/scripts/quests/etc/etc1l7.lua @@ -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 + attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain (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) diff --git a/Data/scripts/quests/etc/etc1l8.lua b/Data/scripts/quests/etc/etc1l8.lua index f6978629..94929869 100644 --- a/Data/scripts/quests/etc/etc1l8.lua +++ b/Data/scripts/quests/etc/etc1l8.lua @@ -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); diff --git a/Data/scripts/quests/etc/etc1u0.lua b/Data/scripts/quests/etc/etc1u0.lua new file mode 100644 index 00000000..39ed37f2 --- /dev/null +++ b/Data/scripts/quests/etc/etc1u0.lua @@ -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 (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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc1u1.lua b/Data/scripts/quests/etc/etc1u1.lua index ef3fb404..436495e4 100644 --- a/Data/scripts/quests/etc/etc1u1.lua +++ b/Data/scripts/quests/etc/etc1u1.lua @@ -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 + attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain (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) diff --git a/Data/scripts/quests/etc/etc1u2.lua b/Data/scripts/quests/etc/etc1u2.lua new file mode 100644 index 00000000..73d37ff9 --- /dev/null +++ b/Data/scripts/quests/etc/etc1u2.lua @@ -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 has been defeated. (X of Y) + player:SendGameMessage(GetWorldMaster(), 25246, 0x20, OBJECTIVE_ITEMID, 1); -- You obtain + 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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc1u4.lua b/Data/scripts/quests/etc/etc1u4.lua new file mode 100644 index 00000000..f72accfd --- /dev/null +++ b/Data/scripts/quests/etc/etc1u4.lua @@ -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 (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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc1u5.lua b/Data/scripts/quests/etc/etc1u5.lua index e6ef821c..703547fd 100644 --- a/Data/scripts/quests/etc/etc1u5.lua +++ b/Data/scripts/quests/etc/etc1u5.lua @@ -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 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) diff --git a/Data/scripts/quests/etc/etc1u6.lua b/Data/scripts/quests/etc/etc1u6.lua index b23f5807..52f7bf9e 100644 --- a/Data/scripts/quests/etc/etc1u6.lua +++ b/Data/scripts/quests/etc/etc1u6.lua @@ -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 + attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain (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) diff --git a/Data/scripts/quests/etc/etc2g0.lua b/Data/scripts/quests/etc/etc2g0.lua new file mode 100644 index 00000000..b13900fa --- /dev/null +++ b/Data/scripts/quests/etc/etc2g0.lua @@ -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 (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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc2g1.lua b/Data/scripts/quests/etc/etc2g1.lua new file mode 100644 index 00000000..2af5c206 --- /dev/null +++ b/Data/scripts/quests/etc/etc2g1.lua @@ -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 (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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc2g2.lua b/Data/scripts/quests/etc/etc2g2.lua new file mode 100644 index 00000000..8fa4383f --- /dev/null +++ b/Data/scripts/quests/etc/etc2g2.lua @@ -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 (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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc2i0.lua b/Data/scripts/quests/etc/etc2i0.lua new file mode 100644 index 00000000..13686ac6 --- /dev/null +++ b/Data/scripts/quests/etc/etc2i0.lua @@ -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 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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc2i1.lua b/Data/scripts/quests/etc/etc2i1.lua new file mode 100644 index 00000000..26cc6b23 --- /dev/null +++ b/Data/scripts/quests/etc/etc2i1.lua @@ -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 (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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc2l0.lua b/Data/scripts/quests/etc/etc2l0.lua new file mode 100644 index 00000000..b84822f2 --- /dev/null +++ b/Data/scripts/quests/etc/etc2l0.lua @@ -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 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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc2l3.lua b/Data/scripts/quests/etc/etc2l3.lua new file mode 100644 index 00000000..1a27703f --- /dev/null +++ b/Data/scripts/quests/etc/etc2l3.lua @@ -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 + 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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc2u1.lua b/Data/scripts/quests/etc/etc2u1.lua new file mode 100644 index 00000000..fe37d201 --- /dev/null +++ b/Data/scripts/quests/etc/etc2u1.lua @@ -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 (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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc2u2.lua b/Data/scripts/quests/etc/etc2u2.lua new file mode 100644 index 00000000..09bfd0a7 --- /dev/null +++ b/Data/scripts/quests/etc/etc2u2.lua @@ -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 (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 \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc3u9.lua b/Data/scripts/quests/etc/etc3u9.lua new file mode 100644 index 00000000..79804a3b --- /dev/null +++ b/Data/scripts/quests/etc/etc3u9.lua @@ -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 (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 \ No newline at end of file diff --git a/Data/scripts/quests/wld/wld0g1.lua b/Data/scripts/quests/wld/wld0g1.lua index d5cd5d42..b6871cf1 100644 --- a/Data/scripts/quests/wld/wld0g1.lua +++ b/Data/scripts/quests/wld/wld0g1.lua @@ -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 + attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain (X of Y) if (counterAmount >= OBJECTIVE_AMOUNT) then attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete! quest:StartSequence(SEQ_001); diff --git a/Data/scripts/quests/wld/wld0g3.lua b/Data/scripts/quests/wld/wld0g3.lua index a2b6f165..11aa2f4e 100644 --- a/Data/scripts/quests/wld/wld0g3.lua +++ b/Data/scripts/quests/wld/wld0g3.lua @@ -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 + attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain (X of Y) if (counterAmount >= OBJECTIVE_AMOUNT) then attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete! quest:StartSequence(SEQ_001); diff --git a/Data/scripts/quests/wld/wld0g4.lua b/Data/scripts/quests/wld/wld0g4.lua index a6c87c95..59c789bb 100644 --- a/Data/scripts/quests/wld/wld0g4.lua +++ b/Data/scripts/quests/wld/wld0g4.lua @@ -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 + attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain (X of Y) if (counterAmount >= OBJECTIVE_AMOUNT) then attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete! quest:StartSequence(SEQ_001); diff --git a/Data/scripts/quests/wld/wld0u1.lua b/Data/scripts/quests/wld/wld0u1.lua index 9e78fbfb..f90836d3 100644 --- a/Data/scripts/quests/wld/wld0u1.lua +++ b/Data/scripts/quests/wld/wld0u1.lua @@ -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); diff --git a/Data/scripts/quests/wld/wld0u2.lua b/Data/scripts/quests/wld/wld0u2.lua index 4fbd3b1d..6fd0e815 100644 --- a/Data/scripts/quests/wld/wld0u2.lua +++ b/Data/scripts/quests/wld/wld0u2.lua @@ -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 + attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain (X of Y) if (counterAmount >= OBJECTIVE_AMOUNT) then attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete! quest:StartSequence(SEQ_001); diff --git a/Data/scripts/quests/wld/wld0u4.lua b/Data/scripts/quests/wld/wld0u4.lua index 52d8d5c1..c50caa56 100644 --- a/Data/scripts/quests/wld/wld0u4.lua +++ b/Data/scripts/quests/wld/wld0u4.lua @@ -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 + attentionMessage(player, 25226, OBJECTIVE_ITEMID, 1, counterAmount, OBJECTIVE_AMOUNT); -- You obtain (X of Y) if (counterAmount >= OBJECTIVE_AMOUNT) then attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete! quest:StartSequence(SEQ_001);