From 8616765eeddc84fb4405a501a89044267c3c7331 Mon Sep 17 00:00:00 2001 From: Xurkon <36556990+Xurkon@users.noreply.github.com> Date: Tue, 24 Feb 2026 20:52:12 -0600 Subject: [PATCH] Update custom DB quests and bump version to 9.8.5 --- .history/CHANGELOG_20260222013922.md | 153 + .history/CHANGELOG_20260222033457.md | 166 + .history/CHANGELOG_20260222033525.md | 164 + .history/CHANGELOG_20260222101554.md | 169 + .../wotlkQuestFixes_20260222013915.lua | 7087 ++++++++++++++++ .../wotlkQuestFixes_20260222014150.lua | 7087 ++++++++++++++++ .../wotlkQuestFixes_20260222020249.lua | 7087 ++++++++++++++++ .../wotlkQuestFixes_20260222030234.lua | 7087 ++++++++++++++++ .../wotlkQuestFixes_20260222031841.lua | 7088 +++++++++++++++++ .../wotlkQuestFixes_20260222033512.lua | 7088 +++++++++++++++++ .../Database/QuestieDB_20260222020255.lua | 1872 +++++ .../Database/QuestieDB_20260222030203.lua | 1875 +++++ .../Arrow/QuestieArrow_20260222020313.lua | 765 ++ .../QuestEventHandler_20260222101028.lua | 718 ++ .../Quest/QuestieQuest_20260222020307.lua | 1755 ++++ .../Quest/QuestieQuest_20260222022818.lua | 1760 ++++ .../Quest/QuestieQuest_20260222030217.lua | 1769 ++++ .history/Questie-335_20260222013933.toc | 250 + .history/Questie-335_20260222101628.toc | 250 + CHANGELOG.md | 6 + Database/Corrections/wotlkQuestFixes.lua | 5 +- Database/Ebonhold/Ebonhold/EbonholdNpcDB.lua | 17 +- .../Ebonhold/Ebonhold/EbonholdQuestDB.lua | 60 +- Database/QuestieDB.lua | 10 +- Modules/Arrow/QuestieArrow.lua | 4 + Modules/Quest/QuestieQuest.lua | 38 +- Questie-335.toc | 2 +- 27 files changed, 54322 insertions(+), 10 deletions(-) create mode 100644 .history/CHANGELOG_20260222013922.md create mode 100644 .history/CHANGELOG_20260222033457.md create mode 100644 .history/CHANGELOG_20260222033525.md create mode 100644 .history/CHANGELOG_20260222101554.md create mode 100644 .history/Database/Corrections/wotlkQuestFixes_20260222013915.lua create mode 100644 .history/Database/Corrections/wotlkQuestFixes_20260222014150.lua create mode 100644 .history/Database/Corrections/wotlkQuestFixes_20260222020249.lua create mode 100644 .history/Database/Corrections/wotlkQuestFixes_20260222030234.lua create mode 100644 .history/Database/Corrections/wotlkQuestFixes_20260222031841.lua create mode 100644 .history/Database/Corrections/wotlkQuestFixes_20260222033512.lua create mode 100644 .history/Database/QuestieDB_20260222020255.lua create mode 100644 .history/Database/QuestieDB_20260222030203.lua create mode 100644 .history/Modules/Arrow/QuestieArrow_20260222020313.lua create mode 100644 .history/Modules/Quest/QuestEventHandler_20260222101028.lua create mode 100644 .history/Modules/Quest/QuestieQuest_20260222020307.lua create mode 100644 .history/Modules/Quest/QuestieQuest_20260222022818.lua create mode 100644 .history/Modules/Quest/QuestieQuest_20260222030217.lua create mode 100644 .history/Questie-335_20260222013933.toc create mode 100644 .history/Questie-335_20260222101628.toc diff --git a/.history/CHANGELOG_20260222013922.md b/.history/CHANGELOG_20260222013922.md new file mode 100644 index 0000000..ff84ff7 --- /dev/null +++ b/.history/CHANGELOG_20260222013922.md @@ -0,0 +1,153 @@ +# Changelog + +## v9.8.2 + +### Fixes +- **[Quest]** Updated the objective tooltip for "Forging an Alliance" (12924) at King Jokkum to explicitly instruct players to pick up the breadcrumb quest "You Can't Miss Him" (12966). + +## v9.8.1 + +### Fixes +- **[Quest]** Fixed QuestieArrow direction for "Forging an Alliance" (12924). Added an extra objective to speak with King Jokkum, ensuring the arrow points toward the breadcrumb quest start at the beginning of the quest. + +## v9.8.0 + +### Fixes +- **[Quest]** Modified `BAG_UPDATE_DELAYED` to trigger a quest log update and instantly refresh the tracker when items are deposited directly into bags by autoloot bots that bypass standard item events. +- **[Map]** Fixed an issue where "Special Objectives" (e.g., source item drops) failed to check player bag contents upon completion, causing their map icons to linger indefinitely until the main quest was turned in. + +## v9.7.12 + +### Fixes +- **[Quest]** Fixed an issue where tracking icons for dynamically updated custom quests like Peak Predators would prematurely disappear due to sync delays on WotLK servers. +- **[Map]** Resolved a frame pool leak that prevented the yellow Finisher icon from appearing immediately on the map after turning in or completing a quest. + + +## v9.7.11 + +### Fixes +- **[Quest]** Fixed an issue where quest objective icons and waypoints failed to clear from the map after a quest was completed or abandoned. +- **[Tracker]** Prevented quests from falsely flagging as complete and wiping tracking data when the World of Warcraft server drops its objective arrays. Fixes "Peak Predators" icons disappearing randomly. +- **[Database]** Corrected an error that improperly identified Item Finishers as GameObject Finishers on custom servers, causing map pinpointing errors (e.g. `[QuestieDB:GetObject] rawdata is nil for objectID:`). +- **[Database]** Appended correct fallback spawn data for the "Thorim" listen bunny (`NPC 30514`) so Sibling Rivalry's turn in/listen point functions correctly on WotLK clients. + +## v9.7.10 + +### Fixes +- **[Arrow]** Refactored Arrow logic to drastically improve target distance calculations and prioritize targets correctly based on the player's current zone. +- **[Arrow]** Fixed a bug where the Arrow would mistakenly point to previously completed objective locations instead of the Quest Finisher's exact location. +- **[Tracker]** Fixed `QuestieDB.IsComplete` edge case returning incomplete incorrectly; now verifies `numFulfilled == numRequired` to immediately acknowledge completed quests while awaiting the server flag. +- **[Tracker]** Resolved false-positive "broken quest log" errors spamming chat on WotLK servers by correctly handling API responses for trackable objectives. +- **[Tracker]** Demoted harmless WotLK objective cache count mismatches from Error to Debug visibility level to eliminate chat spam on login. +- **[Quest]** Fixed quest arrow pointing to the key-drop NPC after using all consumable quest keys (e.g. Cold Iron Key for "They Took Our Men!" quest 12843). When a quest uses a key item that is consumed on interaction, it leaves the bag and `CheckQuestSourceItem` returns false, incorrectly triggering a quest reset that re-drew the key source NPC on the map. Now checks if all tracked objectives are already `Completed=true` before applying the reset, preventing the spurious icon. + +## v9.7.9 + +### Fixes +- **[Quest]** Fixed tracker objective count staying stale (e.g. stuck at 14/16 when quest is complete) when an autoloot bot bypasses the standard loot frame. Registered `BAG_UPDATE_DELAYED` event to force a full quest log scan on bag changes, catching progress updates that `QUEST_WATCH_UPDATE` would normally fire for manual looting. + +## v9.7.8 + +### Fixes +- **[Quest]** Fixed "There was an error populating objectives" error in chat for `triggerEnd` quests with no map coordinates (e.g., "complete N quests in zone"). `_RegisterObjectiveTooltips` now silently returns for `event`-type objectives with no `spawnList` — these have nothing to register a tooltip for. + +## v9.7.7 + +### Fixes +- **[Quest]** Fixed "Missing event data for Objective" error appearing in chat for all `triggerEnd` quests with no map coordinates (e.g., "complete N quests in zone" types). Nil coordinates are valid for server-tracked objectives with no pin — the handler now returns silently instead of logging a visible error. + +## v9.7.6 + +### Fixes +- **[Database]** Fixed "Missing objective data" error for all "complete N quests in zone" quest types (IDs 50151, 50145, 50098, 50100, 50149, 50099, 50108, 50111, 50150). Added `triggerEnd` (`[9]`) field so Questie correctly registers the server-tracked objective without drawing map pins. + +## v9.7.5 + +### Fixes +- **[Quest]** Fixed objective pins/icons persisting on the map after a quest is completed or abandoned. Added `CleanupRemovedQuestsFallback` which diffs Questie's quest log against the game's actual quest log on every `QUEST_LOG_UPDATE` and correctly calls `CompleteQuest` or `AbandonedQuest` for any quest that silently disappeared, ensuring map icons are removed. +- **[Quest]** Fixed re-accepted repeatable custom quests (e.g., Stormforged Scales) not showing objective icons on the map after being accepted a second time. + +### New Quests +- **[Database]** Added **Storm Peak Orders** (ID 50150) - *The Storm Peaks* + - Objective: Complete any 6 quests in The Storm Peaks. +- **[Database]** Added **Wild Basin** (ID 50094) - *Sholazar Basin* + - Objective: Kill 75 Beasts. Includes 29 Beast NPC types with full spawn coordinates. + - NPCs: King Krush, Shardhorn Rhino, Aotona, Pitch, Serfex the Reaver, Dreadsaber, Hardknuckle Matriarch, Shango, Venomtip, Bushwhacker, Hardknuckle Charger, Ravenous Mangal Crocolisk, Farunn, Zeptek the Destroyer, Goretalon Matriarch, Sapphire Hive Wasp, Emperor Cobra, Sapphire Hive Drone, Shattertusk Bull, Siltslither Eel, Spirit of Atha, Stranded Thresher, Mangal Crocolisk, Spirit of Koosu, Longneck Grazer, Goretalon Roc, Sapphire Hive Queen, Spirit of Ha-Khalan, Bittertide Hydra + +## v9.7.4 + +### Fixes +- **[Tooltips]** Fixed "attempt to concatenate local 'name' (a nil value)" error when quest starters/finishers have missing names in the database. +- **[Database]** Added missing spawn coordinates for Quest 50031 "Stormbound" elementals in Storm Peaks (zone 67). +- **[Database]** Fixed "Unknown Zone" issue for custom quests by correcting Zone ID index usage (swapped `[6]` RequiredRaces for `[17]` ZoneID). +- **[Database]** Corrected Dragonblight Zone ID in custom quest definitions. + +### New Quests +- **[Database]** Added **Morogh Missions** (ID 50098) - *Dun Morogh* + - Objective: Complete any 6 quests in Dun Morogh. Auto-completes upon reaching the objective. +- **[Database]** Added **Azuremyst Aid** (ID 50100) - *Azuremyst Isle* + - Objective: Complete any 6 quests in Azuremyst Isle. Auto-completes upon reaching the objective. +- **[Database]** Added **Stormforged Scales** (ID 50066) - *The Storm Peaks* + - Objective: Kill 30 Dragonkin. Includes 8 Dragonkin NPC types with full spawn coordinates. +- **[Database]** Added **Peak Predators** (ID 50095) - *The Storm Peaks* + - Objective: Kill 75 Beasts. Includes 24 Beast NPC types with full spawn coordinates. +- **[Database]** Added **Peak Predators** (ID 50096) - *Icecrown* + - Objective: Kill 75 Beasts. Includes 12 Beast NPC types with full spawn coordinates. +- **[Database]** Added **Icecrown Advance** (ID 50151) - *Icecrown* + - Objective: Complete any 6 quests in Icecrown. Auto-completes upon reaching the objective. +- **[Database]** Added **Storm Peaks Trophy** (ID 50205) - *The Storm Peaks* + - Objective: Kill 1 Rare in The Storm Peaks. Includes 4 Rare NPC types (Skoll, Time-Lost Proto-Drake, Vyragosa, Dirkee) with full spawn coordinates. + +## v9.7.3 + +### New Features +- **[Database]** Implemented **Ebonhold Database Module**. + - Created dedicated `Database/Ebonhold/` structure for custom server data. + - Added `EbonholdLoader` to inject custom Quests, NPCs, Objects, and Items as overrides. + - **Note:** This structure preserves custom data during upstream Questie updates. +- **[Objectives]** Implemented **Automated Text Retrieval**. + - Questie now attempts to fetch quest text from the server at runtime for custom quests that are missing from the database. + - Added "Objectives Board" (ID 600600) as a global quest starter. + +### Quests (Custom Content) +- **[New]** Added **Heart of the Dragonflights** (ID 50064) - *Dragonblight* + - Objective: Kill 30 Dragonkin. Includes 49 Dragonkin NPC types. +- **[New]** Added **Skies of Blade's Edge** (ID 50060) - *Blade's Edge Mountains* + - Objective: Kill 75 Dragonkin. Includes 17 Dragonkin NPC types. +- **[New]** Added **Shadowed Beasts** (ID 50087) - *Shadowmoon Valley* + - Objective: Kill 75 Beasts. Includes 25 Beast NPC types. +- **[New]** Added **Forest Stalkers** (ID 50083) - *Terokkar Forest* + - Objective: Kill 75 Beasts. Includes 53 Beast NPC types. +- **[New]** Added **Savage Heights** (ID 50085) - *Blade's Edge Mountains* + - Objective: Kill 75 Beasts. Includes 47 Beast NPC types. +- **[New]** Added **Unstable Fauna** (ID 50086) - *Netherstorm* + - Objective: Kill 75 Beasts. Includes 18 Beast NPC types. +- **[New]** Added **Elemental Balance** (ID 50026) - *Nagrand* + - Objective: Kill 30 Elementals. Includes 12 Elemental NPC types. +- **[New]** Added **Redridge Trophy** (ID 50160) and **Zangarmarsh Trophy** (ID 50192). + +### New Ascension Quests +- **Westfall**: Agria's Medicine, Seven Years of Bad Luck, Worm-Eaten Apple, Goldshire's Generosity, Bookworm, Knowledge Corrupts, The Ruins of Northshire, Accursed Sisterhood, Words That Shepherd Madness, Oracular Idol, A Betrayal Within, The Maid I Left Behind, The Saddest Among Us, The Threat Swept Downstream, Stay a While, Defias Disruption. +- **Dun Morogh**: A Small Mistake, We Found Her!, The Scout's Favor, Old Mirsinth, Smoke on the Wind, A Promising Path, A Fitting Disguise, His Radiant Majesty, Deciphering Radiation, Soaking the Masses, Sever the Right Hand, A Growing Business, Thunderbrew's Hop, Stay a While, Live-Fire Demo, Bots on Strike, A Brother's Betrayal, The True Story, Timber for the Coldhewn, Icehide the Unbroken. +- **Teldrassil**: The Carrion Road, The Sister Who Never Returned, Finding the Good Meat, Transsubstantiating the Flesh, Communion Banquet, A Trail of Petals, Restless entrails, A Dark Warning, The Aid of Theren-Dion, No Place for Scavengers, Termites in Teldrassil, Stay a While, Elydna's Heirloom. +- **Durotar**: To Find a Cure, A Dangerous Sample, Knowledge of the Centaurs, Those Who Fell, The Way is Shut, The Sinister Triad, So That He May Hear Again, A Sinister Ritual, Innocents for Sinners, Unease Makes Tongues Wag, A Door Left Ajar, Esgramor's Master, Shinies!, Echoes of Hirsutta, Auction the Past, Stay a While, Durotar's Dire Drought, The Queen's Decree, Avianna's Rose, The Last Piece, Reversion. +- **Tirisfal Glades**: Rude Awakening, Marla's Last Wish, Monsters With Noble Intentions, Restless Family Members, An Unspeakable Secret, A Noble Heritage, The True Heir of the Cains, The Friends We Make Along the Way, I'm Home, Apothecary Flemer, The Nature of Freedom, Spotless Standing, Stay a While, More Than the Sum of its Parts, Scarlet Correspondence, A Humble Duty, The Balnirs' Rest, Brewing Disarray, This Is Justice. +- **Mulgore**: Death and Tribute, Death and Exile, Death and Dishonor, Death and Justice, Death by Laughter, To Whom I Devote, Fighting Over Carrion, Smoke on the Horizon, Amphora of Sacred Water, Stay a While, Exile of Embers, The Smoke that Remembers, The Circle’s Rite. + +### New Ebonhold Quests +- **Outland**: Elemental Balance, Savage Heights, Unstable Fauna, Forest Stalkers, Marsh Predators, Skies of Blade's Edge, Shadowed Beasts, Zangarmarsh Trophy. +- **Northrend**: Tundra Turbulence, Stormbound, Dragonblight Trophy, Heart of the Dragonflights, Peak Predators, Icecrown Advance, Storm Peaks Trophy, Stormforged Scales, Fjord Front, Wild Basin, Grizzly Trophy, Zul'Drak Trophy, Basin Expeditions. +- **Azeroth**: Redridge Trophy, Morogh Missions, Azuremyst Aid, Shadow of Teldrassil, Trials of Durotar, Song of the Woods, Morogh Trophy, Tirisfal Trophy. + +### Fixes +- **[Tracker]** **Combat Update Fix**: Tracker now updates objectives immediately during combat without causing Lua errors or taint. +- **[Tracker]** **Bag Update Fix**: Quest progress now updates immediately when looting items (fixes delay with loot bots). +- **[Arrow]** **Refined Visibility Logic**: + - **Auto Nearby**: Arrow correctly defaults to showing the nearest quest when no quests are tracked. + - **Zone Filter**: In "Auto Mode", the arrow hides if the nearest quest is in a different zone. + - **Instance Filter**: Arrow explicitly hides if the target is in a different instance. +- **[Map]** Fixed an issue where completed quest icons would persist on the map (`RequestMapUpdate` logic). +- **[Database]** Updated `wotlkNpcDB.lua` with scraped spawn data for 12 key beast NPCs in Terokkar Forest to ensure accuracy. +- **[Arrow]** Fixed a nil function error for `_CollectObjective` when processing incomplete quests. +- **[Arrow]** Fixed syntax issues that prevented `QuestieArrow` module from initializing correctly. +- **[Database]** Fixed a runtime crash in `ZoneDB` when encountering maps with no AreaId mapping (e.g., Kalimdor). diff --git a/.history/CHANGELOG_20260222033457.md b/.history/CHANGELOG_20260222033457.md new file mode 100644 index 0000000..d2665c4 --- /dev/null +++ b/.history/CHANGELOG_20260222033457.md @@ -0,0 +1,166 @@ +# Changelog + +## v9.8.3 + +### Fixes +- **[Quest]** Extended `HideCondition` support to regular monster, object, and item objectives in the database. +- **[Quest]** Added `hideIfQuestActive` conditions to quest 13010 objectives to resolve icon overlap at King Jokkum. +- **[Database]** Corrected the finisher for "You Can't Miss Him" (12966) to NPC 30127, properly moving the arrow to Fjorn's Anvil. +- **[Arrow]** Implemented immediate arrow refreshing upon quest acceptance to provide seamless transitions between objective phases. + +## v9.8.2 + +### Fixes +- **[Quest]** Updated the objective tooltip for "Forging an Alliance" (12924) at King Jokkum to explicitly instruct players to pick up the breadcrumb quest "You Can't Miss Him" (12966). + +## v9.8.1 + +### Fixes +- **[Quest]** Fixed QuestieArrow direction for "Forging an Alliance" (12924). Added an extra objective to speak with King Jokkum, ensuring the arrow points toward the breadcrumb quest start at the beginning of the quest. + +## v9.8.0 + +### Fixes +- **[Quest]** Modified `BAG_UPDATE_DELAYED` to trigger a quest log update and instantly refresh the tracker when items are deposited directly into bags by autoloot bots that bypass standard item events. +- **[Map]** Fixed an issue where "Special Objectives" (e.g., source item drops) failed to check player bag contents upon completion, causing their map icons to linger indefinitely until the main quest was turned in. + +## v9.7.12 + +### Fixes +- **[Quest]** Fixed an issue where tracking icons for dynamically updated custom quests like Peak Predators would prematurely disappear due to sync delays on WotLK servers. +- **[Map]** Resolved a frame pool leak that prevented the yellow Finisher icon from appearing immediately on the map after turning in or completing a quest. + +### Completion State Evaluation (`QuestieDB.IsComplete`) +* **Server vs Client State:** The `finished` flag on quest objectives is governed by server `GetQuestLogTitle` packets. Because quests consuming items (e.g. freeing prisoners with keys) update numeric counts instantly but delay the `finished` flag until turn-in time, Questie manually evaluates completeness. +* **Logical Evaluation Bug**: When implementing loops iterating numerical objectives, never use inline ternary operators like `(object[1] and 0)` right at the start, as Lua will evaluate existency strings as truthy and short-circuit return 0 regardless of actually finishing the `numFulfilled == numRequired` checks. Iterate the full list and verify `allDone` instead. +- **[Database]** Corrected an error that improperly identified Item Finishers as GameObject Finishers on custom servers, causing map pinpointing errors (e.g. `[QuestieDB:GetObject] rawdata is nil for objectID:`). +- **[Database]** Appended correct fallback spawn data for the "Thorim" listen bunny (`NPC 30514`) so Sibling Rivalry's turn in/listen point functions correctly on WotLK clients. + +## v9.7.11 + +### Fixes +- **[Quest]** Fixed an issue where quest objective icons and waypoints failed to clear from the map after a quest was completed or abandoned. +- **[Tracker]** Prevented quests from falsely flagging as complete and wiping tracking data when the World of Warcraft server drops its objective arrays. Fixes "Peak Predators" icons disappearing randomly. +- **[Database]** Corrected an error that improperly identified Item Finishers as GameObject Finishers on custom servers, causing map pinpointing errors (e.g. `[QuestieDB:GetObject] rawdata is nil for objectID:`). +- **[Database]** Appended correct fallback spawn data for the "Thorim" listen bunny (`NPC 30514`) so Sibling Rivalry's turn in/listen point functions correctly on WotLK clients. + +## v9.7.10 + +### Fixes +- **[Arrow]** Refactored Arrow logic to drastically improve target distance calculations and prioritize targets correctly based on the player's current zone. +- **[Arrow]** Fixed a bug where the Arrow would mistakenly point to previously completed objective locations instead of the Quest Finisher's exact location. +- **[Tracker]** Fixed `QuestieDB.IsComplete` edge case returning incomplete incorrectly; now verifies `numFulfilled == numRequired` to immediately acknowledge completed quests while awaiting the server flag. +- **[Tracker]** Resolved false-positive "broken quest log" errors spamming chat on WotLK servers by correctly handling API responses for trackable objectives. +- **[Tracker]** Demoted harmless WotLK objective cache count mismatches from Error to Debug visibility level to eliminate chat spam on login. +- **[Quest]** Fixed quest arrow pointing to the key-drop NPC after using all consumable quest keys (e.g. Cold Iron Key for "They Took Our Men!" quest 12843). When a quest uses a key item that is consumed on interaction, it leaves the bag and `CheckQuestSourceItem` returns false, incorrectly triggering a quest reset that re-drew the key source NPC on the map. Now checks if all tracked objectives are already `Completed=true` before applying the reset, preventing the spurious icon. + +## v9.7.9 + +### Fixes +- **[Quest]** Fixed tracker objective count staying stale (e.g. stuck at 14/16 when quest is complete) when an autoloot bot bypasses the standard loot frame. Registered `BAG_UPDATE_DELAYED` event to force a full quest log scan on bag changes, catching progress updates that `QUEST_WATCH_UPDATE` would normally fire for manual looting. + +## v9.7.8 + +### Fixes +- **[Quest]** Fixed "There was an error populating objectives" error in chat for `triggerEnd` quests with no map coordinates (e.g., "complete N quests in zone"). `_RegisterObjectiveTooltips` now silently returns for `event`-type objectives with no `spawnList` — these have nothing to register a tooltip for. + +## v9.7.7 + +### Fixes +- **[Quest]** Fixed "Missing event data for Objective" error appearing in chat for all `triggerEnd` quests with no map coordinates (e.g., "complete N quests in zone" types). Nil coordinates are valid for server-tracked objectives with no pin — the handler now returns silently instead of logging a visible error. + +## v9.7.6 + +### Fixes +- **[Database]** Fixed "Missing objective data" error for all "complete N quests in zone" quest types (IDs 50151, 50145, 50098, 50100, 50149, 50099, 50108, 50111, 50150). Added `triggerEnd` (`[9]`) field so Questie correctly registers the server-tracked objective without drawing map pins. + +## v9.7.5 + +### Fixes +- **[Quest]** Fixed objective pins/icons persisting on the map after a quest is completed or abandoned. Added `CleanupRemovedQuestsFallback` which diffs Questie's quest log against the game's actual quest log on every `QUEST_LOG_UPDATE` and correctly calls `CompleteQuest` or `AbandonedQuest` for any quest that silently disappeared, ensuring map icons are removed. +- **[Quest]** Fixed re-accepted repeatable custom quests (e.g., Stormforged Scales) not showing objective icons on the map after being accepted a second time. + +### New Quests +- **[Database]** Added **Storm Peak Orders** (ID 50150) - *The Storm Peaks* + - Objective: Complete any 6 quests in The Storm Peaks. +- **[Database]** Added **Wild Basin** (ID 50094) - *Sholazar Basin* + - Objective: Kill 75 Beasts. Includes 29 Beast NPC types with full spawn coordinates. + - NPCs: King Krush, Shardhorn Rhino, Aotona, Pitch, Serfex the Reaver, Dreadsaber, Hardknuckle Matriarch, Shango, Venomtip, Bushwhacker, Hardknuckle Charger, Ravenous Mangal Crocolisk, Farunn, Zeptek the Destroyer, Goretalon Matriarch, Sapphire Hive Wasp, Emperor Cobra, Sapphire Hive Drone, Shattertusk Bull, Siltslither Eel, Spirit of Atha, Stranded Thresher, Mangal Crocolisk, Spirit of Koosu, Longneck Grazer, Goretalon Roc, Sapphire Hive Queen, Spirit of Ha-Khalan, Bittertide Hydra + +## v9.7.4 + +### Fixes +- **[Tooltips]** Fixed "attempt to concatenate local 'name' (a nil value)" error when quest starters/finishers have missing names in the database. +- **[Database]** Added missing spawn coordinates for Quest 50031 "Stormbound" elementals in Storm Peaks (zone 67). +- **[Database]** Fixed "Unknown Zone" issue for custom quests by correcting Zone ID index usage (swapped `[6]` RequiredRaces for `[17]` ZoneID). +- **[Database]** Corrected Dragonblight Zone ID in custom quest definitions. + +### New Quests +- **[Database]** Added **Morogh Missions** (ID 50098) - *Dun Morogh* + - Objective: Complete any 6 quests in Dun Morogh. Auto-completes upon reaching the objective. +- **[Database]** Added **Azuremyst Aid** (ID 50100) - *Azuremyst Isle* + - Objective: Complete any 6 quests in Azuremyst Isle. Auto-completes upon reaching the objective. +- **[Database]** Added **Stormforged Scales** (ID 50066) - *The Storm Peaks* + - Objective: Kill 30 Dragonkin. Includes 8 Dragonkin NPC types with full spawn coordinates. +- **[Database]** Added **Peak Predators** (ID 50095) - *The Storm Peaks* + - Objective: Kill 75 Beasts. Includes 24 Beast NPC types with full spawn coordinates. +- **[Database]** Added **Peak Predators** (ID 50096) - *Icecrown* + - Objective: Kill 75 Beasts. Includes 12 Beast NPC types with full spawn coordinates. +- **[Database]** Added **Icecrown Advance** (ID 50151) - *Icecrown* + - Objective: Complete any 6 quests in Icecrown. Auto-completes upon reaching the objective. +- **[Database]** Added **Storm Peaks Trophy** (ID 50205) - *The Storm Peaks* + - Objective: Kill 1 Rare in The Storm Peaks. Includes 4 Rare NPC types (Skoll, Time-Lost Proto-Drake, Vyragosa, Dirkee) with full spawn coordinates. + +## v9.7.3 + +### New Features +- **[Database]** Implemented **Ebonhold Database Module**. + - Created dedicated `Database/Ebonhold/` structure for custom server data. + - Added `EbonholdLoader` to inject custom Quests, NPCs, Objects, and Items as overrides. + - **Note:** This structure preserves custom data during upstream Questie updates. +- **[Objectives]** Implemented **Automated Text Retrieval**. + - Questie now attempts to fetch quest text from the server at runtime for custom quests that are missing from the database. + - Added "Objectives Board" (ID 600600) as a global quest starter. + +### Quests (Custom Content) +- **[New]** Added **Heart of the Dragonflights** (ID 50064) - *Dragonblight* + - Objective: Kill 30 Dragonkin. Includes 49 Dragonkin NPC types. +- **[New]** Added **Skies of Blade's Edge** (ID 50060) - *Blade's Edge Mountains* + - Objective: Kill 75 Dragonkin. Includes 17 Dragonkin NPC types. +- **[New]** Added **Shadowed Beasts** (ID 50087) - *Shadowmoon Valley* + - Objective: Kill 75 Beasts. Includes 25 Beast NPC types. +- **[New]** Added **Forest Stalkers** (ID 50083) - *Terokkar Forest* + - Objective: Kill 75 Beasts. Includes 53 Beast NPC types. +- **[New]** Added **Savage Heights** (ID 50085) - *Blade's Edge Mountains* + - Objective: Kill 75 Beasts. Includes 47 Beast NPC types. +- **[New]** Added **Unstable Fauna** (ID 50086) - *Netherstorm* + - Objective: Kill 75 Beasts. Includes 18 Beast NPC types. +- **[New]** Added **Elemental Balance** (ID 50026) - *Nagrand* + - Objective: Kill 30 Elementals. Includes 12 Elemental NPC types. +- **[New]** Added **Redridge Trophy** (ID 50160) and **Zangarmarsh Trophy** (ID 50192). + +### New Ascension Quests +- **Westfall**: Agria's Medicine, Seven Years of Bad Luck, Worm-Eaten Apple, Goldshire's Generosity, Bookworm, Knowledge Corrupts, The Ruins of Northshire, Accursed Sisterhood, Words That Shepherd Madness, Oracular Idol, A Betrayal Within, The Maid I Left Behind, The Saddest Among Us, The Threat Swept Downstream, Stay a While, Defias Disruption. +- **Dun Morogh**: A Small Mistake, We Found Her!, The Scout's Favor, Old Mirsinth, Smoke on the Wind, A Promising Path, A Fitting Disguise, His Radiant Majesty, Deciphering Radiation, Soaking the Masses, Sever the Right Hand, A Growing Business, Thunderbrew's Hop, Stay a While, Live-Fire Demo, Bots on Strike, A Brother's Betrayal, The True Story, Timber for the Coldhewn, Icehide the Unbroken. +- **Teldrassil**: The Carrion Road, The Sister Who Never Returned, Finding the Good Meat, Transsubstantiating the Flesh, Communion Banquet, A Trail of Petals, Restless entrails, A Dark Warning, The Aid of Theren-Dion, No Place for Scavengers, Termites in Teldrassil, Stay a While, Elydna's Heirloom. +- **Durotar**: To Find a Cure, A Dangerous Sample, Knowledge of the Centaurs, Those Who Fell, The Way is Shut, The Sinister Triad, So That He May Hear Again, A Sinister Ritual, Innocents for Sinners, Unease Makes Tongues Wag, A Door Left Ajar, Esgramor's Master, Shinies!, Echoes of Hirsutta, Auction the Past, Stay a While, Durotar's Dire Drought, The Queen's Decree, Avianna's Rose, The Last Piece, Reversion. +- **Tirisfal Glades**: Rude Awakening, Marla's Last Wish, Monsters With Noble Intentions, Restless Family Members, An Unspeakable Secret, A Noble Heritage, The True Heir of the Cains, The Friends We Make Along the Way, I'm Home, Apothecary Flemer, The Nature of Freedom, Spotless Standing, Stay a While, More Than the Sum of its Parts, Scarlet Correspondence, A Humble Duty, The Balnirs' Rest, Brewing Disarray, This Is Justice. +- **Mulgore**: Death and Tribute, Death and Exile, Death and Dishonor, Death and Justice, Death by Laughter, To Whom I Devote, Fighting Over Carrion, Smoke on the Horizon, Amphora of Sacred Water, Stay a While, Exile of Embers, The Smoke that Remembers, The Circle’s Rite. + +### New Ebonhold Quests +- **Outland**: Elemental Balance, Savage Heights, Unstable Fauna, Forest Stalkers, Marsh Predators, Skies of Blade's Edge, Shadowed Beasts, Zangarmarsh Trophy. +- **Northrend**: Tundra Turbulence, Stormbound, Dragonblight Trophy, Heart of the Dragonflights, Peak Predators, Icecrown Advance, Storm Peaks Trophy, Stormforged Scales, Fjord Front, Wild Basin, Grizzly Trophy, Zul'Drak Trophy, Basin Expeditions. +- **Azeroth**: Redridge Trophy, Morogh Missions, Azuremyst Aid, Shadow of Teldrassil, Trials of Durotar, Song of the Woods, Morogh Trophy, Tirisfal Trophy. + +### Fixes +- **[Tracker]** **Combat Update Fix**: Tracker now updates objectives immediately during combat without causing Lua errors or taint. +- **[Tracker]** **Bag Update Fix**: Quest progress now updates immediately when looting items (fixes delay with loot bots). +- **[Arrow]** **Refined Visibility Logic**: + - **Auto Nearby**: Arrow correctly defaults to showing the nearest quest when no quests are tracked. + - **Zone Filter**: In "Auto Mode", the arrow hides if the nearest quest is in a different zone. + - **Instance Filter**: Arrow explicitly hides if the target is in a different instance. +- **[Map]** Fixed an issue where completed quest icons would persist on the map (`RequestMapUpdate` logic). +- **[Database]** Updated `wotlkNpcDB.lua` with scraped spawn data for 12 key beast NPCs in Terokkar Forest to ensure accuracy. +- **[Arrow]** Fixed a nil function error for `_CollectObjective` when processing incomplete quests. +- **[Arrow]** Fixed syntax issues that prevented `QuestieArrow` module from initializing correctly. +- **[Database]** Fixed a runtime crash in `ZoneDB` when encountering maps with no AreaId mapping (e.g., Kalimdor). diff --git a/.history/CHANGELOG_20260222033525.md b/.history/CHANGELOG_20260222033525.md new file mode 100644 index 0000000..d8f00e8 --- /dev/null +++ b/.history/CHANGELOG_20260222033525.md @@ -0,0 +1,164 @@ +# Changelog + +## v9.8.3 + +### Fixes +- **[Quest]** Extended `HideCondition` support to regular monster, object, and item objectives in the database. +- **[Quest]** Added `hideIfQuestActive` conditions to quest 13010 objectives to resolve icon overlap at King Jokkum. +- **[Database]** Corrected the finisher for "You Can't Miss Him" (12966) to NPC 30127, properly moving the arrow to Fjorn's Anvil. +- **[Arrow]** Implemented immediate arrow refreshing upon quest acceptance to provide seamless transitions between objective phases. + +## v9.8.2 + +### Fixes +- **[Quest]** Updated the objective tooltip for "Forging an Alliance" (12924) at King Jokkum to explicitly instruct players to pick up the breadcrumb quest "You Can't Miss Him" (12966). + +## v9.8.1 + +### Fixes +- **[Quest]** Fixed QuestieArrow direction for "Forging an Alliance" (12924). Added an extra objective to speak with King Jokkum, ensuring the arrow points toward the breadcrumb quest start at the beginning of the quest. + +## v9.8.0 + +### Fixes +- **[Quest]** Modified `BAG_UPDATE_DELAYED` to trigger a quest log update and instantly refresh the tracker when items are deposited directly into bags by autoloot bots that bypass standard item events. +- **[Map]** Fixed an issue where "Special Objectives" (e.g., source item drops) failed to check player bag contents upon completion, causing their map icons to linger indefinitely until the main quest was turned in. + +## v9.7.12 + +### Fixes +- **[Quest]** Fixed an issue where tracking icons for dynamically updated custom quests like Peak Predators would prematurely disappear due to sync delays on WotLK servers. +- **[Map]** Resolved a frame pool leak that prevented the yellow Finisher icon from appearing immediately on the map after turning in or completing a quest. + + +- **[Database]** Corrected an error that improperly identified Item Finishers as GameObject Finishers on custom servers, causing map pinpointing errors (e.g. `[QuestieDB:GetObject] rawdata is nil for objectID:`). +- **[Database]** Appended correct fallback spawn data for the "Thorim" listen bunny (`NPC 30514`) so Sibling Rivalry's turn in/listen point functions correctly on WotLK clients. + +## v9.7.11 + +### Fixes +- **[Quest]** Fixed an issue where quest objective icons and waypoints failed to clear from the map after a quest was completed or abandoned. +- **[Tracker]** Prevented quests from falsely flagging as complete and wiping tracking data when the World of Warcraft server drops its objective arrays. Fixes "Peak Predators" icons disappearing randomly. +- **[Database]** Corrected an error that improperly identified Item Finishers as GameObject Finishers on custom servers, causing map pinpointing errors (e.g. `[QuestieDB:GetObject] rawdata is nil for objectID:`). +- **[Database]** Appended correct fallback spawn data for the "Thorim" listen bunny (`NPC 30514`) so Sibling Rivalry's turn in/listen point functions correctly on WotLK clients. + +## v9.7.10 + +### Fixes +- **[Arrow]** Refactored Arrow logic to drastically improve target distance calculations and prioritize targets correctly based on the player's current zone. +- **[Arrow]** Fixed a bug where the Arrow would mistakenly point to previously completed objective locations instead of the Quest Finisher's exact location. +- **[Tracker]** Fixed `QuestieDB.IsComplete` edge case returning incomplete incorrectly; now verifies `numFulfilled == numRequired` to immediately acknowledge completed quests while awaiting the server flag. +- **[Tracker]** Resolved false-positive "broken quest log" errors spamming chat on WotLK servers by correctly handling API responses for trackable objectives. +- **[Tracker]** Demoted harmless WotLK objective cache count mismatches from Error to Debug visibility level to eliminate chat spam on login. +- **[Quest]** Fixed quest arrow pointing to the key-drop NPC after using all consumable quest keys (e.g. Cold Iron Key for "They Took Our Men!" quest 12843). When a quest uses a key item that is consumed on interaction, it leaves the bag and `CheckQuestSourceItem` returns false, incorrectly triggering a quest reset that re-drew the key source NPC on the map. Now checks if all tracked objectives are already `Completed=true` before applying the reset, preventing the spurious icon. + +## v9.7.9 + +### Fixes +- **[Quest]** Fixed tracker objective count staying stale (e.g. stuck at 14/16 when quest is complete) when an autoloot bot bypasses the standard loot frame. Registered `BAG_UPDATE_DELAYED` event to force a full quest log scan on bag changes, catching progress updates that `QUEST_WATCH_UPDATE` would normally fire for manual looting. + +## v9.7.8 + +### Fixes +- **[Quest]** Fixed "There was an error populating objectives" error in chat for `triggerEnd` quests with no map coordinates (e.g., "complete N quests in zone"). `_RegisterObjectiveTooltips` now silently returns for `event`-type objectives with no `spawnList` — these have nothing to register a tooltip for. + +## v9.7.7 + +### Fixes +- **[Quest]** Fixed "Missing event data for Objective" error appearing in chat for all `triggerEnd` quests with no map coordinates (e.g., "complete N quests in zone" types). Nil coordinates are valid for server-tracked objectives with no pin — the handler now returns silently instead of logging a visible error. + +## v9.7.6 + +### Fixes +- **[Database]** Fixed "Missing objective data" error for all "complete N quests in zone" quest types (IDs 50151, 50145, 50098, 50100, 50149, 50099, 50108, 50111, 50150). Added `triggerEnd` (`[9]`) field so Questie correctly registers the server-tracked objective without drawing map pins. + +## v9.7.5 + +### Fixes +- **[Quest]** Fixed objective pins/icons persisting on the map after a quest is completed or abandoned. Added `CleanupRemovedQuestsFallback` which diffs Questie's quest log against the game's actual quest log on every `QUEST_LOG_UPDATE` and correctly calls `CompleteQuest` or `AbandonedQuest` for any quest that silently disappeared, ensuring map icons are removed. +- **[Quest]** Fixed re-accepted repeatable custom quests (e.g., Stormforged Scales) not showing objective icons on the map after being accepted a second time. + +### New Quests +- **[Database]** Added **Storm Peak Orders** (ID 50150) - *The Storm Peaks* + - Objective: Complete any 6 quests in The Storm Peaks. +- **[Database]** Added **Wild Basin** (ID 50094) - *Sholazar Basin* + - Objective: Kill 75 Beasts. Includes 29 Beast NPC types with full spawn coordinates. + - NPCs: King Krush, Shardhorn Rhino, Aotona, Pitch, Serfex the Reaver, Dreadsaber, Hardknuckle Matriarch, Shango, Venomtip, Bushwhacker, Hardknuckle Charger, Ravenous Mangal Crocolisk, Farunn, Zeptek the Destroyer, Goretalon Matriarch, Sapphire Hive Wasp, Emperor Cobra, Sapphire Hive Drone, Shattertusk Bull, Siltslither Eel, Spirit of Atha, Stranded Thresher, Mangal Crocolisk, Spirit of Koosu, Longneck Grazer, Goretalon Roc, Sapphire Hive Queen, Spirit of Ha-Khalan, Bittertide Hydra + +## v9.7.4 + +### Fixes +- **[Tooltips]** Fixed "attempt to concatenate local 'name' (a nil value)" error when quest starters/finishers have missing names in the database. +- **[Database]** Added missing spawn coordinates for Quest 50031 "Stormbound" elementals in Storm Peaks (zone 67). +- **[Database]** Fixed "Unknown Zone" issue for custom quests by correcting Zone ID index usage (swapped `[6]` RequiredRaces for `[17]` ZoneID). +- **[Database]** Corrected Dragonblight Zone ID in custom quest definitions. + +### New Quests +- **[Database]** Added **Morogh Missions** (ID 50098) - *Dun Morogh* + - Objective: Complete any 6 quests in Dun Morogh. Auto-completes upon reaching the objective. +- **[Database]** Added **Azuremyst Aid** (ID 50100) - *Azuremyst Isle* + - Objective: Complete any 6 quests in Azuremyst Isle. Auto-completes upon reaching the objective. +- **[Database]** Added **Stormforged Scales** (ID 50066) - *The Storm Peaks* + - Objective: Kill 30 Dragonkin. Includes 8 Dragonkin NPC types with full spawn coordinates. +- **[Database]** Added **Peak Predators** (ID 50095) - *The Storm Peaks* + - Objective: Kill 75 Beasts. Includes 24 Beast NPC types with full spawn coordinates. +- **[Database]** Added **Peak Predators** (ID 50096) - *Icecrown* + - Objective: Kill 75 Beasts. Includes 12 Beast NPC types with full spawn coordinates. +- **[Database]** Added **Icecrown Advance** (ID 50151) - *Icecrown* + - Objective: Complete any 6 quests in Icecrown. Auto-completes upon reaching the objective. +- **[Database]** Added **Storm Peaks Trophy** (ID 50205) - *The Storm Peaks* + - Objective: Kill 1 Rare in The Storm Peaks. Includes 4 Rare NPC types (Skoll, Time-Lost Proto-Drake, Vyragosa, Dirkee) with full spawn coordinates. + +## v9.7.3 + +### New Features +- **[Database]** Implemented **Ebonhold Database Module**. + - Created dedicated `Database/Ebonhold/` structure for custom server data. + - Added `EbonholdLoader` to inject custom Quests, NPCs, Objects, and Items as overrides. + - **Note:** This structure preserves custom data during upstream Questie updates. +- **[Objectives]** Implemented **Automated Text Retrieval**. + - Questie now attempts to fetch quest text from the server at runtime for custom quests that are missing from the database. + - Added "Objectives Board" (ID 600600) as a global quest starter. + +### Quests (Custom Content) +- **[New]** Added **Heart of the Dragonflights** (ID 50064) - *Dragonblight* + - Objective: Kill 30 Dragonkin. Includes 49 Dragonkin NPC types. +- **[New]** Added **Skies of Blade's Edge** (ID 50060) - *Blade's Edge Mountains* + - Objective: Kill 75 Dragonkin. Includes 17 Dragonkin NPC types. +- **[New]** Added **Shadowed Beasts** (ID 50087) - *Shadowmoon Valley* + - Objective: Kill 75 Beasts. Includes 25 Beast NPC types. +- **[New]** Added **Forest Stalkers** (ID 50083) - *Terokkar Forest* + - Objective: Kill 75 Beasts. Includes 53 Beast NPC types. +- **[New]** Added **Savage Heights** (ID 50085) - *Blade's Edge Mountains* + - Objective: Kill 75 Beasts. Includes 47 Beast NPC types. +- **[New]** Added **Unstable Fauna** (ID 50086) - *Netherstorm* + - Objective: Kill 75 Beasts. Includes 18 Beast NPC types. +- **[New]** Added **Elemental Balance** (ID 50026) - *Nagrand* + - Objective: Kill 30 Elementals. Includes 12 Elemental NPC types. +- **[New]** Added **Redridge Trophy** (ID 50160) and **Zangarmarsh Trophy** (ID 50192). + +### New Ascension Quests +- **Westfall**: Agria's Medicine, Seven Years of Bad Luck, Worm-Eaten Apple, Goldshire's Generosity, Bookworm, Knowledge Corrupts, The Ruins of Northshire, Accursed Sisterhood, Words That Shepherd Madness, Oracular Idol, A Betrayal Within, The Maid I Left Behind, The Saddest Among Us, The Threat Swept Downstream, Stay a While, Defias Disruption. +- **Dun Morogh**: A Small Mistake, We Found Her!, The Scout's Favor, Old Mirsinth, Smoke on the Wind, A Promising Path, A Fitting Disguise, His Radiant Majesty, Deciphering Radiation, Soaking the Masses, Sever the Right Hand, A Growing Business, Thunderbrew's Hop, Stay a While, Live-Fire Demo, Bots on Strike, A Brother's Betrayal, The True Story, Timber for the Coldhewn, Icehide the Unbroken. +- **Teldrassil**: The Carrion Road, The Sister Who Never Returned, Finding the Good Meat, Transsubstantiating the Flesh, Communion Banquet, A Trail of Petals, Restless entrails, A Dark Warning, The Aid of Theren-Dion, No Place for Scavengers, Termites in Teldrassil, Stay a While, Elydna's Heirloom. +- **Durotar**: To Find a Cure, A Dangerous Sample, Knowledge of the Centaurs, Those Who Fell, The Way is Shut, The Sinister Triad, So That He May Hear Again, A Sinister Ritual, Innocents for Sinners, Unease Makes Tongues Wag, A Door Left Ajar, Esgramor's Master, Shinies!, Echoes of Hirsutta, Auction the Past, Stay a While, Durotar's Dire Drought, The Queen's Decree, Avianna's Rose, The Last Piece, Reversion. +- **Tirisfal Glades**: Rude Awakening, Marla's Last Wish, Monsters With Noble Intentions, Restless Family Members, An Unspeakable Secret, A Noble Heritage, The True Heir of the Cains, The Friends We Make Along the Way, I'm Home, Apothecary Flemer, The Nature of Freedom, Spotless Standing, Stay a While, More Than the Sum of its Parts, Scarlet Correspondence, A Humble Duty, The Balnirs' Rest, Brewing Disarray, This Is Justice. +- **Mulgore**: Death and Tribute, Death and Exile, Death and Dishonor, Death and Justice, Death by Laughter, To Whom I Devote, Fighting Over Carrion, Smoke on the Horizon, Amphora of Sacred Water, Stay a While, Exile of Embers, The Smoke that Remembers, The Circle’s Rite. + +### New Ebonhold Quests +- **Outland**: Elemental Balance, Savage Heights, Unstable Fauna, Forest Stalkers, Marsh Predators, Skies of Blade's Edge, Shadowed Beasts, Zangarmarsh Trophy. +- **Northrend**: Tundra Turbulence, Stormbound, Dragonblight Trophy, Heart of the Dragonflights, Peak Predators, Icecrown Advance, Storm Peaks Trophy, Stormforged Scales, Fjord Front, Wild Basin, Grizzly Trophy, Zul'Drak Trophy, Basin Expeditions. +- **Azeroth**: Redridge Trophy, Morogh Missions, Azuremyst Aid, Shadow of Teldrassil, Trials of Durotar, Song of the Woods, Morogh Trophy, Tirisfal Trophy. + +### Fixes +- **[Tracker]** **Combat Update Fix**: Tracker now updates objectives immediately during combat without causing Lua errors or taint. +- **[Tracker]** **Bag Update Fix**: Quest progress now updates immediately when looting items (fixes delay with loot bots). +- **[Arrow]** **Refined Visibility Logic**: + - **Auto Nearby**: Arrow correctly defaults to showing the nearest quest when no quests are tracked. + - **Zone Filter**: In "Auto Mode", the arrow hides if the nearest quest is in a different zone. + - **Instance Filter**: Arrow explicitly hides if the target is in a different instance. +- **[Map]** Fixed an issue where completed quest icons would persist on the map (`RequestMapUpdate` logic). +- **[Database]** Updated `wotlkNpcDB.lua` with scraped spawn data for 12 key beast NPCs in Terokkar Forest to ensure accuracy. +- **[Arrow]** Fixed a nil function error for `_CollectObjective` when processing incomplete quests. +- **[Arrow]** Fixed syntax issues that prevented `QuestieArrow` module from initializing correctly. +- **[Database]** Fixed a runtime crash in `ZoneDB` when encountering maps with no AreaId mapping (e.g., Kalimdor). diff --git a/.history/CHANGELOG_20260222101554.md b/.history/CHANGELOG_20260222101554.md new file mode 100644 index 0000000..dcb52a8 --- /dev/null +++ b/.history/CHANGELOG_20260222101554.md @@ -0,0 +1,169 @@ +# Changelog + +## v9.8.4 + +### Fixes +- **[Quest]** Fixed a Lua crash ("attempt to index global 'QuestiePlayer'") occurring during chat message processing for auto-completing quests, by explicitly requiring the `QuestiePlayer` module in `QuestEventHandler`. + +## v9.8.3 + +### Fixes +- **[Quest]** Extended `HideCondition` support to regular monster, object, and item objectives in the database. +- **[Quest]** Added `hideIfQuestActive` conditions to quest 13010 objectives to resolve icon overlap at King Jokkum. +- **[Database]** Corrected the finisher for "You Can't Miss Him" (12966) to NPC 30127, properly moving the arrow to Fjorn's Anvil. +- **[Arrow]** Implemented immediate arrow refreshing upon quest acceptance to provide seamless transitions between objective phases. + +## v9.8.2 + +### Fixes +- **[Quest]** Updated the objective tooltip for "Forging an Alliance" (12924) at King Jokkum to explicitly instruct players to pick up the breadcrumb quest "You Can't Miss Him" (12966). + +## v9.8.1 + +### Fixes +- **[Quest]** Fixed QuestieArrow direction for "Forging an Alliance" (12924). Added an extra objective to speak with King Jokkum, ensuring the arrow points toward the breadcrumb quest start at the beginning of the quest. + +## v9.8.0 + +### Fixes +- **[Quest]** Modified `BAG_UPDATE_DELAYED` to trigger a quest log update and instantly refresh the tracker when items are deposited directly into bags by autoloot bots that bypass standard item events. +- **[Map]** Fixed an issue where "Special Objectives" (e.g., source item drops) failed to check player bag contents upon completion, causing their map icons to linger indefinitely until the main quest was turned in. + +## v9.7.12 + +### Fixes +- **[Quest]** Fixed an issue where tracking icons for dynamically updated custom quests like Peak Predators would prematurely disappear due to sync delays on WotLK servers. +- **[Map]** Resolved a frame pool leak that prevented the yellow Finisher icon from appearing immediately on the map after turning in or completing a quest. + + +- **[Database]** Corrected an error that improperly identified Item Finishers as GameObject Finishers on custom servers, causing map pinpointing errors (e.g. `[QuestieDB:GetObject] rawdata is nil for objectID:`). +- **[Database]** Appended correct fallback spawn data for the "Thorim" listen bunny (`NPC 30514`) so Sibling Rivalry's turn in/listen point functions correctly on WotLK clients. + +## v9.7.11 + +### Fixes +- **[Quest]** Fixed an issue where quest objective icons and waypoints failed to clear from the map after a quest was completed or abandoned. +- **[Tracker]** Prevented quests from falsely flagging as complete and wiping tracking data when the World of Warcraft server drops its objective arrays. Fixes "Peak Predators" icons disappearing randomly. +- **[Database]** Corrected an error that improperly identified Item Finishers as GameObject Finishers on custom servers, causing map pinpointing errors (e.g. `[QuestieDB:GetObject] rawdata is nil for objectID:`). +- **[Database]** Appended correct fallback spawn data for the "Thorim" listen bunny (`NPC 30514`) so Sibling Rivalry's turn in/listen point functions correctly on WotLK clients. + +## v9.7.10 + +### Fixes +- **[Arrow]** Refactored Arrow logic to drastically improve target distance calculations and prioritize targets correctly based on the player's current zone. +- **[Arrow]** Fixed a bug where the Arrow would mistakenly point to previously completed objective locations instead of the Quest Finisher's exact location. +- **[Tracker]** Fixed `QuestieDB.IsComplete` edge case returning incomplete incorrectly; now verifies `numFulfilled == numRequired` to immediately acknowledge completed quests while awaiting the server flag. +- **[Tracker]** Resolved false-positive "broken quest log" errors spamming chat on WotLK servers by correctly handling API responses for trackable objectives. +- **[Tracker]** Demoted harmless WotLK objective cache count mismatches from Error to Debug visibility level to eliminate chat spam on login. +- **[Quest]** Fixed quest arrow pointing to the key-drop NPC after using all consumable quest keys (e.g. Cold Iron Key for "They Took Our Men!" quest 12843). When a quest uses a key item that is consumed on interaction, it leaves the bag and `CheckQuestSourceItem` returns false, incorrectly triggering a quest reset that re-drew the key source NPC on the map. Now checks if all tracked objectives are already `Completed=true` before applying the reset, preventing the spurious icon. + +## v9.7.9 + +### Fixes +- **[Quest]** Fixed tracker objective count staying stale (e.g. stuck at 14/16 when quest is complete) when an autoloot bot bypasses the standard loot frame. Registered `BAG_UPDATE_DELAYED` event to force a full quest log scan on bag changes, catching progress updates that `QUEST_WATCH_UPDATE` would normally fire for manual looting. + +## v9.7.8 + +### Fixes +- **[Quest]** Fixed "There was an error populating objectives" error in chat for `triggerEnd` quests with no map coordinates (e.g., "complete N quests in zone"). `_RegisterObjectiveTooltips` now silently returns for `event`-type objectives with no `spawnList` — these have nothing to register a tooltip for. + +## v9.7.7 + +### Fixes +- **[Quest]** Fixed "Missing event data for Objective" error appearing in chat for all `triggerEnd` quests with no map coordinates (e.g., "complete N quests in zone" types). Nil coordinates are valid for server-tracked objectives with no pin — the handler now returns silently instead of logging a visible error. + +## v9.7.6 + +### Fixes +- **[Database]** Fixed "Missing objective data" error for all "complete N quests in zone" quest types (IDs 50151, 50145, 50098, 50100, 50149, 50099, 50108, 50111, 50150). Added `triggerEnd` (`[9]`) field so Questie correctly registers the server-tracked objective without drawing map pins. + +## v9.7.5 + +### Fixes +- **[Quest]** Fixed objective pins/icons persisting on the map after a quest is completed or abandoned. Added `CleanupRemovedQuestsFallback` which diffs Questie's quest log against the game's actual quest log on every `QUEST_LOG_UPDATE` and correctly calls `CompleteQuest` or `AbandonedQuest` for any quest that silently disappeared, ensuring map icons are removed. +- **[Quest]** Fixed re-accepted repeatable custom quests (e.g., Stormforged Scales) not showing objective icons on the map after being accepted a second time. + +### New Quests +- **[Database]** Added **Storm Peak Orders** (ID 50150) - *The Storm Peaks* + - Objective: Complete any 6 quests in The Storm Peaks. +- **[Database]** Added **Wild Basin** (ID 50094) - *Sholazar Basin* + - Objective: Kill 75 Beasts. Includes 29 Beast NPC types with full spawn coordinates. + - NPCs: King Krush, Shardhorn Rhino, Aotona, Pitch, Serfex the Reaver, Dreadsaber, Hardknuckle Matriarch, Shango, Venomtip, Bushwhacker, Hardknuckle Charger, Ravenous Mangal Crocolisk, Farunn, Zeptek the Destroyer, Goretalon Matriarch, Sapphire Hive Wasp, Emperor Cobra, Sapphire Hive Drone, Shattertusk Bull, Siltslither Eel, Spirit of Atha, Stranded Thresher, Mangal Crocolisk, Spirit of Koosu, Longneck Grazer, Goretalon Roc, Sapphire Hive Queen, Spirit of Ha-Khalan, Bittertide Hydra + +## v9.7.4 + +### Fixes +- **[Tooltips]** Fixed "attempt to concatenate local 'name' (a nil value)" error when quest starters/finishers have missing names in the database. +- **[Database]** Added missing spawn coordinates for Quest 50031 "Stormbound" elementals in Storm Peaks (zone 67). +- **[Database]** Fixed "Unknown Zone" issue for custom quests by correcting Zone ID index usage (swapped `[6]` RequiredRaces for `[17]` ZoneID). +- **[Database]** Corrected Dragonblight Zone ID in custom quest definitions. + +### New Quests +- **[Database]** Added **Morogh Missions** (ID 50098) - *Dun Morogh* + - Objective: Complete any 6 quests in Dun Morogh. Auto-completes upon reaching the objective. +- **[Database]** Added **Azuremyst Aid** (ID 50100) - *Azuremyst Isle* + - Objective: Complete any 6 quests in Azuremyst Isle. Auto-completes upon reaching the objective. +- **[Database]** Added **Stormforged Scales** (ID 50066) - *The Storm Peaks* + - Objective: Kill 30 Dragonkin. Includes 8 Dragonkin NPC types with full spawn coordinates. +- **[Database]** Added **Peak Predators** (ID 50095) - *The Storm Peaks* + - Objective: Kill 75 Beasts. Includes 24 Beast NPC types with full spawn coordinates. +- **[Database]** Added **Peak Predators** (ID 50096) - *Icecrown* + - Objective: Kill 75 Beasts. Includes 12 Beast NPC types with full spawn coordinates. +- **[Database]** Added **Icecrown Advance** (ID 50151) - *Icecrown* + - Objective: Complete any 6 quests in Icecrown. Auto-completes upon reaching the objective. +- **[Database]** Added **Storm Peaks Trophy** (ID 50205) - *The Storm Peaks* + - Objective: Kill 1 Rare in The Storm Peaks. Includes 4 Rare NPC types (Skoll, Time-Lost Proto-Drake, Vyragosa, Dirkee) with full spawn coordinates. + +## v9.7.3 + +### New Features +- **[Database]** Implemented **Ebonhold Database Module**. + - Created dedicated `Database/Ebonhold/` structure for custom server data. + - Added `EbonholdLoader` to inject custom Quests, NPCs, Objects, and Items as overrides. + - **Note:** This structure preserves custom data during upstream Questie updates. +- **[Objectives]** Implemented **Automated Text Retrieval**. + - Questie now attempts to fetch quest text from the server at runtime for custom quests that are missing from the database. + - Added "Objectives Board" (ID 600600) as a global quest starter. + +### Quests (Custom Content) +- **[New]** Added **Heart of the Dragonflights** (ID 50064) - *Dragonblight* + - Objective: Kill 30 Dragonkin. Includes 49 Dragonkin NPC types. +- **[New]** Added **Skies of Blade's Edge** (ID 50060) - *Blade's Edge Mountains* + - Objective: Kill 75 Dragonkin. Includes 17 Dragonkin NPC types. +- **[New]** Added **Shadowed Beasts** (ID 50087) - *Shadowmoon Valley* + - Objective: Kill 75 Beasts. Includes 25 Beast NPC types. +- **[New]** Added **Forest Stalkers** (ID 50083) - *Terokkar Forest* + - Objective: Kill 75 Beasts. Includes 53 Beast NPC types. +- **[New]** Added **Savage Heights** (ID 50085) - *Blade's Edge Mountains* + - Objective: Kill 75 Beasts. Includes 47 Beast NPC types. +- **[New]** Added **Unstable Fauna** (ID 50086) - *Netherstorm* + - Objective: Kill 75 Beasts. Includes 18 Beast NPC types. +- **[New]** Added **Elemental Balance** (ID 50026) - *Nagrand* + - Objective: Kill 30 Elementals. Includes 12 Elemental NPC types. +- **[New]** Added **Redridge Trophy** (ID 50160) and **Zangarmarsh Trophy** (ID 50192). + +### New Ascension Quests +- **Westfall**: Agria's Medicine, Seven Years of Bad Luck, Worm-Eaten Apple, Goldshire's Generosity, Bookworm, Knowledge Corrupts, The Ruins of Northshire, Accursed Sisterhood, Words That Shepherd Madness, Oracular Idol, A Betrayal Within, The Maid I Left Behind, The Saddest Among Us, The Threat Swept Downstream, Stay a While, Defias Disruption. +- **Dun Morogh**: A Small Mistake, We Found Her!, The Scout's Favor, Old Mirsinth, Smoke on the Wind, A Promising Path, A Fitting Disguise, His Radiant Majesty, Deciphering Radiation, Soaking the Masses, Sever the Right Hand, A Growing Business, Thunderbrew's Hop, Stay a While, Live-Fire Demo, Bots on Strike, A Brother's Betrayal, The True Story, Timber for the Coldhewn, Icehide the Unbroken. +- **Teldrassil**: The Carrion Road, The Sister Who Never Returned, Finding the Good Meat, Transsubstantiating the Flesh, Communion Banquet, A Trail of Petals, Restless entrails, A Dark Warning, The Aid of Theren-Dion, No Place for Scavengers, Termites in Teldrassil, Stay a While, Elydna's Heirloom. +- **Durotar**: To Find a Cure, A Dangerous Sample, Knowledge of the Centaurs, Those Who Fell, The Way is Shut, The Sinister Triad, So That He May Hear Again, A Sinister Ritual, Innocents for Sinners, Unease Makes Tongues Wag, A Door Left Ajar, Esgramor's Master, Shinies!, Echoes of Hirsutta, Auction the Past, Stay a While, Durotar's Dire Drought, The Queen's Decree, Avianna's Rose, The Last Piece, Reversion. +- **Tirisfal Glades**: Rude Awakening, Marla's Last Wish, Monsters With Noble Intentions, Restless Family Members, An Unspeakable Secret, A Noble Heritage, The True Heir of the Cains, The Friends We Make Along the Way, I'm Home, Apothecary Flemer, The Nature of Freedom, Spotless Standing, Stay a While, More Than the Sum of its Parts, Scarlet Correspondence, A Humble Duty, The Balnirs' Rest, Brewing Disarray, This Is Justice. +- **Mulgore**: Death and Tribute, Death and Exile, Death and Dishonor, Death and Justice, Death by Laughter, To Whom I Devote, Fighting Over Carrion, Smoke on the Horizon, Amphora of Sacred Water, Stay a While, Exile of Embers, The Smoke that Remembers, The Circle’s Rite. + +### New Ebonhold Quests +- **Outland**: Elemental Balance, Savage Heights, Unstable Fauna, Forest Stalkers, Marsh Predators, Skies of Blade's Edge, Shadowed Beasts, Zangarmarsh Trophy. +- **Northrend**: Tundra Turbulence, Stormbound, Dragonblight Trophy, Heart of the Dragonflights, Peak Predators, Icecrown Advance, Storm Peaks Trophy, Stormforged Scales, Fjord Front, Wild Basin, Grizzly Trophy, Zul'Drak Trophy, Basin Expeditions. +- **Azeroth**: Redridge Trophy, Morogh Missions, Azuremyst Aid, Shadow of Teldrassil, Trials of Durotar, Song of the Woods, Morogh Trophy, Tirisfal Trophy. + +### Fixes +- **[Tracker]** **Combat Update Fix**: Tracker now updates objectives immediately during combat without causing Lua errors or taint. +- **[Tracker]** **Bag Update Fix**: Quest progress now updates immediately when looting items (fixes delay with loot bots). +- **[Arrow]** **Refined Visibility Logic**: + - **Auto Nearby**: Arrow correctly defaults to showing the nearest quest when no quests are tracked. + - **Zone Filter**: In "Auto Mode", the arrow hides if the nearest quest is in a different zone. + - **Instance Filter**: Arrow explicitly hides if the target is in a different instance. +- **[Map]** Fixed an issue where completed quest icons would persist on the map (`RequestMapUpdate` logic). +- **[Database]** Updated `wotlkNpcDB.lua` with scraped spawn data for 12 key beast NPCs in Terokkar Forest to ensure accuracy. +- **[Arrow]** Fixed a nil function error for `_CollectObjective` when processing incomplete quests. +- **[Arrow]** Fixed syntax issues that prevented `QuestieArrow` module from initializing correctly. +- **[Database]** Fixed a runtime crash in `ZoneDB` when encountering maps with no AreaId mapping (e.g., Kalimdor). diff --git a/.history/Database/Corrections/wotlkQuestFixes_20260222013915.lua b/.history/Database/Corrections/wotlkQuestFixes_20260222013915.lua new file mode 100644 index 0000000..f9da9f4 --- /dev/null +++ b/.history/Database/Corrections/wotlkQuestFixes_20260222013915.lua @@ -0,0 +1,7087 @@ +---@class QuestieWotlkQuestFixes +local QuestieWotlkQuestFixes = QuestieLoader:CreateModule("QuestieWotlkQuestFixes") +local _QuestieWotlkQuestFixes = {} + +---@type QuestieDB +local QuestieDB = QuestieLoader:ImportModule("QuestieDB") +---@type ZoneDB +local ZoneDB = QuestieLoader:ImportModule("ZoneDB") +---@type QuestieProfessions +local QuestieProfessions = QuestieLoader:ImportModule("QuestieProfessions") +---@type QuestieCorrections +local QuestieCorrections = QuestieLoader:ImportModule("QuestieCorrections") +---@type l10n +local l10n = QuestieLoader:ImportModule("l10n") + + +QuestieCorrections.killCreditObjectiveFirst[11652] = true +QuestieCorrections.killCreditObjectiveFirst[12100] = true +QuestieCorrections.killCreditObjectiveFirst[12546] = true +QuestieCorrections.killCreditObjectiveFirst[12561] = true +QuestieCorrections.killCreditObjectiveFirst[12762] = true +QuestieCorrections.killCreditObjectiveFirst[12919] = true +QuestieCorrections.killCreditObjectiveFirst[13086] = true +QuestieCorrections.killCreditObjectiveFirst[13373] = true +QuestieCorrections.killCreditObjectiveFirst[13376] = true +QuestieCorrections.killCreditObjectiveFirst[13380] = true +QuestieCorrections.killCreditObjectiveFirst[13382] = true +QuestieCorrections.killCreditObjectiveFirst[13404] = true +QuestieCorrections.killCreditObjectiveFirst[13406] = true +QuestieCorrections.killCreditObjectiveFirst[24498] = true +QuestieCorrections.killCreditObjectiveFirst[24507] = true + +function QuestieWotlkQuestFixes:Load() + _QuestieWotlkQuestFixes:InsertMissingQuestIds() + + local questKeys = QuestieDB.questKeys + local raceIDs = QuestieDB.raceKeys + local classIDs = QuestieDB.classKeys + local factionIDs = QuestieDB.factionIDs + local zoneIDs = ZoneDB.zoneIDs + local sortKeys = QuestieDB.sortKeys + local profKeys = QuestieProfessions.professionKeys + local specKeys = QuestieProfessions.specializationKeys + + return { + [55] = { + [questKeys.objectives] = {{{1200}}}, + }, + [75] = { + [questKeys.specialFlags] = 0, + }, + [171] = { + [questKeys.startedBy] = {{14305},nil,nil}, + [questKeys.questLevel] = -1, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [172] = { + [questKeys.questLevel] = -1, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [176] = { + [questKeys.startedBy] = {nil,{68,156561}}, + }, + [236] = { + [questKeys.finishedBy] = {{31108}}, + [questKeys.exclusiveTo] = {13153,13154,13156,13195,13196,13197,13198}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [403] = { + [questKeys.startedBy] = {nil,{269}}, + }, + [434] = { + [questKeys.triggerEnd] = {"Overhear Lescovar and Marzon's Conversation", {[zoneIDs.STORMWIND_CITY]={{72.22,35.37}}}}, + }, + [508] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [558] = { + [questKeys.questLevel] = -1, + [questKeys.parentQuest] = 0, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [648] = { + [questKeys.triggerEnd] = {"Escort OOX-17/TN to safety", {[zoneIDs.TANARIS]={{61,53}}}}, + }, + [768] = { + [questKeys.requiredSkill] = {393,1}, + }, + [836] = { + [questKeys.triggerEnd] = {"Escort OOX-09/HL to safety", {[zoneIDs.THE_HINTERLANDS]={{57.81,50.2}}}}, + }, + [910] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [911] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [915] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [925] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1056] = { + [questKeys.nextQuestInChain] = 1057, + }, + [1132] = { + [questKeys.startedBy] = {{4455}}, + [questKeys.finishedBy] = {{4456}}, + }, + [1135] = { + [questKeys.startedBy] = {{4456}}, + [questKeys.finishedBy] = {{4456}}, + }, + [1198] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1252] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1253] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1284] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1361] = { + [questKeys.startedBy] = {{2229,4485,10540}}, + }, + [1468] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1479] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1558] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1678] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1679] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1680] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1681] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1682] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1687] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1716] = { + [questKeys.preQuestSingle] = {}, + }, + [1800] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1885] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [2204] = { + [questKeys.startedBy] = {nil,{112877}}, + }, + [2279] = { + [questKeys.preQuestSingle] = {2278}, + }, + [2358] = { + [questKeys.startedBy] = {{7009}}, + }, + [2701] = { + [questKeys.finishedBy] = {nil,{141980}}, + }, + [2767] = { + [questKeys.triggerEnd] = {"Escort OOX-22/FE to safety", {[zoneIDs.FERALAS]={{55.63,51.35}}}}, + }, + [2879] = { + [questKeys.requiredSourceItems] = {9255,9256,9257,9258}, + }, + [3602] = { + [questKeys.requiredSourceItems] = {}, + }, + [3641] = { + [questKeys.preQuestSingle] = {}, + }, + [3763] = { + [questKeys.startedBy] = {{6735}}, + [questKeys.exclusiveTo] = {3789,3790}, + }, + [3789] = { + [questKeys.startedBy] = {{6740}}, + [questKeys.exclusiveTo] = {3763,3790}, + }, + [3790] = { + [questKeys.startedBy] = {{5111}}, + [questKeys.exclusiveTo] = {3763,3789}, + }, + [4127] = { + [questKeys.startedBy] = {nil,{164909,186419}}, + }, + [4144] = { + [questKeys.specialFlags] = nil, + }, + [4362] = { + [questKeys.preQuestSingle] = {4361}, + }, + [4363] = { + [questKeys.preQuestSingle] = {4362}, + }, + [4485] = { + [questKeys.startedBy] = {{6179}}, + }, + [4486] = { + [questKeys.startedBy] = {{5149}}, + }, + [4740] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [4763] = { + [questKeys.objectives] = {nil,nil,{{12355}}}, + }, + [4771] = { + [questKeys.preQuestSingle] = {5522}, + }, + [4822] = { + [questKeys.questLevel] = -1, + [questKeys.parentQuest] = 0, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [5057] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [5305] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5306] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5307] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5502] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + [questKeys.preQuestGroup] = {915,925}, + }, + [5505] = { + [questKeys.startedBy] = {{11056}}, + [questKeys.finishedBy] = {{11056}}, + }, + [5531] = { + [questKeys.nextQuestInChain] = nil, + }, + [5721] = { + [questKeys.extraObjectives] = {{{[zoneIDs.EASTERN_PLAGUELANDS]={{35.01,84.05}}}, Questie.ICON_TYPE_EVENT, l10n("Place the Relic Bundle in the Town Square."),}}, + }, + [6185] = { + [questKeys.triggerEnd] = {"The Blightcaller Uncovered", {[zoneIDs.EASTERN_PLAGUELANDS]={{23.4,67.8}}}}, + }, + [6521] = { + [questKeys.startedBy] = {{36273}}, + [questKeys.finishedBy] = {{36273}}, + }, + [6522] = { + [questKeys.startedBy] = {{4421},nil,{17008}}, + [questKeys.finishedBy] = {{36273}}, + }, + [6963] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [6983] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [7023] = { + [questKeys.startedBy] = {{13435,23010}}, + }, + [7042] = { + [questKeys.startedBy] = {{13433}}, + }, + [7641] = { + [questKeys.preQuestSingle] = {7638,7670}, + }, + [7643] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {7642,7648}, + }, + [7704] = { + [questKeys.startedBy] = {nil,{179832},{18950}}, + }, + [8149] = { + [questKeys.objectives] = {nil,{{180204,"Place a tribute at Uther's Tomb"}}}, + [questKeys.extraObjectives] = {}, + }, + [8150] = { + [questKeys.objectives] = {nil,{{180205,"Place a tribute at Grom's Monument"}}}, + [questKeys.extraObjectives] = {}, + }, + [8166] = { + [questKeys.requiredMaxLevel] = 49, + }, + [8167] = { + [questKeys.requiredMaxLevel] = 39, + }, + [8168] = { + [questKeys.requiredMaxLevel] = 29, + }, + [8169] = { + [questKeys.requiredMaxLevel] = 49, + }, + [8170] = { + [questKeys.requiredMaxLevel] = 39, + }, + [8171] = { + [questKeys.requiredMaxLevel] = 29, + }, + [8346] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{15274},15274,"Mana Tap creature"}}}, + }, + [8551] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8552] = { + [questKeys.specialFlags] = 0, + }, + [8553] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8554] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8746] = { + [questKeys.objectives] = {{{15664,"Find Metzen the Reindeer and rescue him"}},nil,{{21211}}}, + }, + [8762] = { + [questKeys.objectives] = {{{15664,"Find Metzen the Reindeer and rescue him"}},nil,{{21211}}}, + }, + [8767] = { + [questKeys.requiredClasses] = classIDs.ROGUE + classIDs.WARRIOR + classIDs.HUNTER + classIDs.PALADIN + classIDs.DEATH_KNIGHT, + }, + [8871] = { + [questKeys.startedBy] = {}, + }, + [8872] = { + [questKeys.startedBy] = {}, + }, + [8874] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.startedBy] = {}, + }, + [8875] = { + [questKeys.startedBy] = {}, + }, + [8892] = { + [questKeys.preQuestSingle] = {}, + }, + [9078] = { + [questKeys.requiredClasses] = classIDs.ROGUE, + }, + [9154] = { + [questKeys.startedBy] = {{16241,16255}}, + [questKeys.finishedBy] = {{16281}}, + [questKeys.questLevel] = -1, + }, + [9189] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [9211] = { + [questKeys.specialFlags] = 1, + }, + [9213] = { + [questKeys.specialFlags] = 1, + }, + [9221] = { + [questKeys.specialFlags] = 1, + }, + [9222] = { + [questKeys.specialFlags] = 1, + }, + [9223] = { + [questKeys.specialFlags] = 1, + }, + [9224] = { + [questKeys.specialFlags] = 1, + }, + [9225] = { + [questKeys.specialFlags] = 1, + }, + [9226] = { + [questKeys.specialFlags] = 1, + }, + [9227] = { + [questKeys.specialFlags] = 1, + }, + [9228] = { + [questKeys.specialFlags] = 1, + }, + [9247] = { + [questKeys.finishedBy] = {{16281}}, + }, + [9358] = { + [questKeys.exclusiveTo] = {9252}, + }, + [9361] = { + [questKeys.requiredSourceItems] = {23270}, + }, + [9425] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [9467] = { + [questKeys.sourceItemId] = 24335, + [questKeys.requiredSourceItems] = {23682,24335}, + }, + [9629] = { + [questKeys.objectives] = {{{17326}}}, + }, + [9648] = { + [questKeys.name] = "Maatparm Mushroom Menagerie", + [questKeys.objectivesText] = {"Maatparm at Blood Watch wants 1 Aquatic Stinkhorn, 1 Blood Mushroom, 1 Ruinous Polyspore, and 1 Fel Cone Fungus."}, + }, + [9681] = { + [questKeys.startedBy] = {{17717,17718}}, + }, + [9876] = { + [questKeys.nextQuestInChain] = 9738, + }, + [10110] = { + [questKeys.preQuestSingle] = {13409}, + }, + [10173] = { + [questKeys.requiredSourceItems] = {}, + }, + [10180] = { + [questKeys.nextQuestInChain] = 10097, + }, + [10445] = { + [questKeys.exclusiveTo] = {13432}, + }, + [10464] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10465] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10466] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10467] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10468] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10469] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10470] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10471] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10472] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10473] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10474] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10475] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10667] = { + [questKeys.preQuestSingle] = {}, + }, + [10670] = { + [questKeys.preQuestSingle] = {}, + }, + [10702] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{21864,21878,21879,23020,21978},21978,},},}, + }, + [10703] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{21864,21878,21879,23020,21978},21978,},},}, + }, + [10769] = { + [questKeys.objectives] = {{{19823}},nil,{{31108}}}, + }, + [10776] = { + [questKeys.objectives] = {{{19823}},nil,{{31310}}}, + }, + [10888] = { + [questKeys.exclusiveTo] = {13430}, + }, + [10900] = { + [questKeys.requiredMaxLevel] = 70, + }, + [10901] = { + [questKeys.exclusiveTo] = {13431}, + }, + [10958] = { + [questKeys.preQuestSingle] = {10949}, + }, + [10985] = { + [questKeys.exclusiveTo] = {13429}, + }, + [11010] = { + [questKeys.requiredClasses] = classIDs.WARLOCK + classIDs.ROGUE + classIDs.MAGE + classIDs.PRIEST + classIDs.WARRIOR + classIDs.PALADIN + classIDs.HUNTER + classIDs.SHAMAN + classIDs.DEATH_KNIGHT, + }, + [11117] = { + [questKeys.startedBy] = {{23486}}, + [questKeys.finishedBy] = {{23486}}, + }, + [11118] = { + [questKeys.startedBy] = {{23486}}, + [questKeys.finishedBy] = {{23486}}, + }, + [11120] = { + [questKeys.startedBy] = {{24657}}, + [questKeys.finishedBy] = {{24657}}, + }, + [11122] = { + [questKeys.objectives] = {{{24468,"Kegs Delivered"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab a keg"), 0, {{"monster", 24364}}}}, + }, + [11137] = { + [questKeys.preQuestSingle] = {}, + }, + [11140] = { + [questKeys.requiredSourceItems] = {33040,33044}, + }, + [11153] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HOWLING_FJORD]={{28.1,42.2}}}, Questie.ICON_TYPE_EVENT, l10n("Wait for Harrowmeiser's zeppelin to dock"),}}, + }, + [11154] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Throw the firecrackers up to 20 yards away underneath a darkclaw bat to scare it"), 0, {{"monster", 23959}}}}, + }, + [11157] = { + [questKeys.objectives] = {{{23777,"Proto-Drake Egg destroyed"}},nil,nil,nil,{{{23688,23750},23688}}}, + }, + [11170] = { + [questKeys.objectives] = {{{24120,"North Fleet Reservist Infected"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Bat Handler Camille"), 0, {{"monster", 23816}}}}, + }, + [11175] = { + [questKeys.exclusiveTo] = {11176}, + }, + [11231] = { + [questKeys.sourceItemId] = 33284, + }, + [11238] = { + [questKeys.sourceItemId] = 33282, + }, + [11241] = { + [questKeys.triggerEnd] = {"Rescue Apothecary Hanes",{[zoneIDs.HOWLING_FJORD]={{78.72,37.23,},},},}, + }, + [11245] = { + [questKeys.requiredSourceItems] = {33311}, + }, + [11246] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23661,23662,23663,23664,23665,23666,23667,23668,23669,23670},23661,"Winterskorn Vrykul Dismembered"}}}, + [questKeys.requiredSourceItems] = {33311}, + }, + [11247] = { + [questKeys.requiredSourceItems] = {33311}, + }, + [11249] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Present the Vrykul Scroll of Ascension"), 0, {{"object", 186586}}}}, + }, + [11252] = { + [questKeys.preQuestSingle] = {}, + }, + [11257] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23661,23662,23663,23664,23665,23666,23667,23668,23669,23670},23661,"Winterskorn Vrykul Dismembered"}}}, + [questKeys.requiredSourceItems] = {33340}, + }, + [11258] = { + [questKeys.requiredSourceItems] = {33340}, + }, + [11259] = { + [questKeys.requiredSourceItems] = {33340}, + }, + [11260] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Present the Vrykul Scroll of Ascension"), 0, {{"object", 186586}}}}, + }, + [11265] = { + [questKeys.sourceItemId] = 33284, + }, + [11267] = { + [questKeys.sourceItemId] = 33282, + }, + [11279] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Spray Proto-Drake Egg"), 0, {{"monster", 23777}}}}, + }, + [11280] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Place Tillinghast's Plagued Meat on the ground"), 0, {{"monster", 24170}}}}, + }, + [11281] = { + [questKeys.objectives] = {{{24173}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Carved Horn"), 0, {{"object", 186599}}}}, + }, + [11282] = { + [questKeys.objectives] = {{{24161,"Oric the Baleful's Corpse Impaled"},{24016,"Ulf the Bloodletter's Corpse Impaled"},{24162,"Gunnar Thorvardsson's Corpse Impaled"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Slay Vrykul across the Forsaken blockade until they appear"), 0, {{"monster", 24015}}}}, + }, + [11284] = { + [questKeys.sourceItemId] = 33352, + }, + [11286] = { + [questKeys.preQuestSingle] = {}, + }, + [11296] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Break Riven Widow Cocoons to free captives"), 0, {{"monster", 24210}}}}, + }, + [11297] = { + [questKeys.nextQuestInChain] = 11298, + }, + [11298] = { + [questKeys.preQuestSingle] = {}, + }, + [11300] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill gladiators at the Ring of Judgement until Oluf the Violent appears"), 0, {{"monster", 24213},{"monster", 24214},{"monster", 24215}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Oluf the Violent"), 0, {{"monster", 23931}}} + }, + }, + [11301] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Use Grick's Bonesaw on corpses of Deranged Explorers"), 0, {{"monster", 23967}}}}, + }, + [11302] = { + [questKeys.preQuestSingle] = {11284}, + }, + [11306] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Fill the Empty Apothecary's Flask at the Cauldron of Vrykul Blood"),0,{{"object", 186656}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mix the Flask of Vrykul Blood with Harris's Plague Samples"),1,{{"object", 186657}}}, + }, + }, + [11307] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23564,24198,24199},23564,"Plagued Vrykul Sprayed"}}}, + }, + [11310] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23564,24198,24199},23564,"Plagued Vrykul exterminated"}}}, + }, + [11314] = { + [questKeys.objectives] = {{{23678,"Chill Nymphs Freed"}}}, + }, + [11317] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Meditate"), 0, {{"object", 186649}}}}, + }, + [11318] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{80001},{80002},{80003}}}, + }, + [11319] = { + [questKeys.objectives] = {{{23876,"Spores frozen"}}}, + }, + [11322] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Meditate"), 0, {{"object", 186649}}}}, + }, + [11329] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Search for Northern Barbfish"), 0, {{"object", 186659}}}}, + }, + [11332] = { + [questKeys.sourceItemId] = 33634, + [questKeys.preQuestSingle] = {11331}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Get a gryphon to ride and some bombs"), 0, {{"monster", 23859}}}}, + }, + [11335] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.exclusiveTo] = {11336,11337,11338,13405,14163}, + [questKeys.questFlags] = 4226, + }, + [11336] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.exclusiveTo] = {11335,11337,11338,13405,14163}, + }, + [11337] = { + [questKeys.triggerEnd] = {"Victory in the Eye of the Storm", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11338,13405,14163}, + }, + [11338] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,13405,14163}, + }, + [11339] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11340,11341,11342,13407,14164}, + }, + [11340] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11341,11342,13407,14164}, + }, + [11341] = { + [questKeys.triggerEnd] = {"Victory in Eye of the Storm", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11342,13407,14164}, + }, + [11342] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,13407,14164}, + }, + [11343] = { + [questKeys.triggerEnd] = {"Secrets of Wyrmskull Uncovered",{[zoneIDs.HOWLING_FJORD]={{60.13,50.8,},},},}, + }, + [11344] = { + [questKeys.triggerEnd] = {"Secrets of Nifflevar Uncovered",{[zoneIDs.HOWLING_FJORD]={{69.04,54.79,},},},}, + }, + [11346] = { + [questKeys.preQuestSingle] = {11284}, + [questKeys.sourceItemId] = 33778, + }, + [11348] = { + [questKeys.objectives] = {{{23725,"Test Rune of Command on normal Stone Giants"},{24334}}}, + }, + [11350] = { + [questKeys.sourceItemId] = 33778, + }, + [11352] = { + [questKeys.objectives] = {{{23725,"Test Rune of Command on normal Stone Giants"},{24334}}}, + }, + [11355] = { + [questKeys.preQuestSingle] = {11284}, + [questKeys.objectives] = {{{23725,"Runed Stone Giant Corpse Analyzed"},},nil,nil,nil,}, + }, + [11358] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Rune Sample"), 0, {{"object", 186718},}}}, + }, + [11365] = { + [questKeys.objectives] = {{{23725,"Runed Stone Giant Corpse Analyzed"},},nil,nil,nil,}, + }, + [11366] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Rune Sample"), 0, {{"object", 186718},}}}, + }, + [11390] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 24418},}}}, + }, + [11391] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 24418},}}}, + }, + [11392] = { + [questKeys.startedBy] = {nil,{186267}}, + [questKeys.finishedBy] = {nil,{186314}}, + }, + [11393] = { + [questKeys.exclusiveTo] = {11394,}, + }, + [11394] = { + [questKeys.preQuestSingle] = {}, + }, + [11401] = { + [questKeys.startedBy] = {nil,{186267}}, + [questKeys.finishedBy] = {nil,{186314}}, + }, + [11409] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{80004},{80005},{80006}}}, + }, + [11410] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Fresh Barbfish Bait"), 0, {{"object", 186770},}}}, + }, + [11412] = { + [questKeys.objectives] = {{{24510,"Kegs Delivered"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab a keg"), 0, {{"monster", 24527}}}}, + }, + [11414] = { + [questKeys.sourceItemId] = 33618, + }, + [11415] = { + [questKeys.sourceItemId] = 33618, + }, + [11416] = { + [questKeys.requiredSourceItems] = {33618}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Touch Talonshrike's Egg"), 0, {{"object", 186814},{"object", 190283},{"object", 190284}}}}, + }, + [11417] = { + [questKeys.requiredSourceItems] = {33618}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Touch Talonshrike's Egg"), 0, {{"object", 186814},{"object", 190283},{"object", 190284}}}}, + }, + [11418] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Feathered Charm on Steelfeather"), 0, {{"monster", 24514},}}}, + }, + [11421] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Commandeer Crykul Harpoon Gun"),0,{{"object",190512}}}}, + }, + [11428] = { + [questKeys.preQuestSingle] = {11316}, + }, + [11429] = { + [questKeys.objectives] = {nil,{{186863,"Alliance Banner Placed"}},nil,nil,{{{24640},24640,"Alliance Banner Defended"}}}, + }, + [11431] = { + [questKeys.startedBy] = {{24657}}, + [questKeys.finishedBy] = {{24657}}, + }, + [11436] = { + [questKeys.triggerEnd] = {"Go Harpoon Surfing",{[zoneIDs.HOWLING_FJORD]={{60.08,62.06,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Go Harpoon Surfing"),0,{{"object",186894}}}}, + }, + [11448] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Ask McGoyver for a ride to the Explorers' League Outpost"),0,{{"monster",24040}}}}, + }, + [11452] = { + [questKeys.startedBy] = {{24018},nil,{34090}}, + }, + [11453] = { + [questKeys.startedBy] = {{24018},nil,{34091}}, + }, + [11460] = { + [questKeys.objectives] = {{{24752,"Fjord Rock Falcon Fed"}}}, + }, + [11465] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Send your Trained Rock Falcon after it"), 0, {{"monster", 24746}}}}, + }, + [11466] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Olga"), 0, {{"monster", 24639}}}}, + }, + [11467] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Search for treasure"), 0, {{"object", 186944}}}}, + }, + [11468] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Send your Trained Rock Falcon after it"), 0, {{"monster", 24747}}}}, + }, + [11470] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Release the Trained Rock Falcon"), 0, {{"object", 190222}}}}, + }, + [11471] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Fight Jonah"), 0, {{"monster", 24742}}}}, + }, + [11472] = { + [questKeys.objectives] = {{{24797,"Reef Bull led to a Reef Cow"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Lure Reef Bull with Tasty Reef Fish"), 0, {{"monster", 24786},{"monster", 24804}}}}, + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11475] = { + [questKeys.preQuestSingle] = {11244}, + }, + [11478] = { + [questKeys.exclusiveTo] = {11448}, + }, + [11485] = { + [questKeys.triggerEnd] = {"Rocket Jump Mastered",{[zoneIDs.HOWLING_FJORD]={{75.08,64.55,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Rocket Jump standing on the rune next to it"),0,{{"object", 186958}}}}, + }, + [11489] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Collect Data near the blue relic near Gwendolyn's cart"),0,{{"object", 186958}}}}, + }, + [11491] = { + [questKeys.objectives] = {{{24718,"Lebronski Bluffed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Bluff on Lebronski after you've walked on his rug"),0,{{"object", 186958}}}}, + }, + [11494] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Put on the Golem suit"),0,{{"object", 186958}}}}, + }, + [11495] = { + [questKeys.objectives] = {{{24847,"Thundering Cave investigated"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Put on the Golem suit"),0,{{"object", 186958}}}}, + }, + [11528] = { + [questKeys.exclusiveTo] = {13203,13966}, + }, + [11529] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HOWLING_FJORD]={{37.2,74.8}}}, Questie.ICON_TYPE_OBJECT, l10n("Use The Big Gun at the front of the ship to slay Sorlof"),0,{{"monster", 24992}}}}, + }, + [11531] = { + [questKeys.specialFlags] = 1, + }, + [11567] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask Alanya for transportation"),0,{{"monster", 27933}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("After acquiring the Armor, get a ride back"),0,{{"monster", 28277}}}, + }, + }, + [11569] = { + [questKeys.preQuestSingle] = {11571}, + }, + [11570] = { + [questKeys.triggerEnd] = {"Escort Lurgglbr to safety",{[zoneIDs.BOREAN_TUNDRA]={{41.35,16.29,},},},}, + }, + [11574] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + [questKeys.exclusiveTo] = {11587}, + }, + [11575] = { + [questKeys.exclusiveTo] = {11587}, + }, + [11587] = { + [questKeys.preQuestSingle] = {}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Open the prison"),0,{{"object", 187561}}}}, + }, + [11590] = { + [questKeys.objectives] = {{{25316,"Captured Beryl Sorcerer"},},nil,nil,nil,}, + }, + [11591] = { + [questKeys.exclusiveTo] = {11592,11593,11594,}, + }, + [11592] = { + [questKeys.triggerEnd] = {"Successfully assisted Longrunner Proudhoof's assault.",{[zoneIDs.BOREAN_TUNDRA]={{49.45,26.49,},},},}, + }, + [11594] = { + [questKeys.preQuestSingle] = {}, + }, + [11596] = { + [questKeys.preQuestSingle] = {11585,11586}, + }, + [11606] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [11610] = { + [questKeys.objectives] = {nil,{{191088,"Elder Kesuk's ceremony completed"},{191089,"Elder Sagani's ceremony completed"},{191090,"Elder Takret's ceremony completed"}}}, + }, + [11611] = { + [questKeys.objectives] = {{{25284,"Warsong Peon Freed"}}}, + }, + [11631] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Imperean's Primal on Snarlfang's Totem"),0,{{"monster", 25455}}}}, + }, + [11632] = { + [questKeys.startedBy] = {nil,{187674},{34777}}, + }, + [11636] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to Garrosh's Landing"),0,{{"monster", 25459}}}}, + }, + [11637] = { + [questKeys.sourceItemId] = 34781, + }, + [11652] = { + [questKeys.objectives] = {{{25465}},nil,nil,nil,{{{27106,27107,27108,27110},27106,"Injured Warsong Soldier rescued"},{{25332,25333,25469,},25333,"Scourge Unit obliterated"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drive a tank"),0,{{"monster", 25334}}}}, + }, + [11653] = { + [questKeys.objectives] = {{{25432,"Crafty's Blaster Tested"},{25434,"Crafty's Blaster Tested"},},nil,nil,nil,}, + }, + [11654] = { + [questKeys.startedBy] = {{26115},nil,{34815}}, + [questKeys.preQuestSingle] = {11633}, + }, + [11656] = { + [questKeys.objectives] = {nil,{{188656,"The Serpent's Maw destroyed"},{188655,"The Kur Drakkar destroyed"},{188653,"Bor's Hammer destroyed"},{188657,"Bor's Anvil destroyed"}}}, + }, + [11664] = { + [questKeys.triggerEnd] = {"Mootoo Saved",{[zoneIDs.BOREAN_TUNDRA]={{31.19,54.44,},},},}, + }, + [11670] = { + [questKeys.objectives] = {{{25430,"Warsong Banner Planted in Magmothregar"},},nil,{{34870,nil},},nil,}, + [questKeys.requiredSourceItems] = {34869}, + }, + [11671] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Inquisitor Salrand"), 0, {{"monster", 25584}}}, + {{[zoneIDs.BOREAN_TUNDRA]={{41.8,39.1}}}, Questie.ICON_TYPE_EVENT, l10n("Use Beryl Shield Detonator"),}, + }, + }, + [11673] = { + [questKeys.triggerEnd] = {"Bonker Togglevolt escorted to safety.",{[zoneIDs.BOREAN_TUNDRA]={{53.84,13.85,},},},}, + }, + [11677] = { + [questKeys.objectives] = {nil,{{187879,"Plague Cauldron Neutralized"}}}, + }, + [11686] = { + [questKeys.objectives] = {nil,{{191697,"Scout Warsong Granary"},{191698,"Scout Torp's Farm"},{191699,"Scout Warsong Slaughterhouse"}}}, + }, + [11688] = { + [questKeys.preQuestSingle] = {}, + }, + [11690] = { + [questKeys.objectives] = {{{25596,"Kodo rescued"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the kodos to Farmer Torp"), 0, {{"monster", 25607}}}}, + }, + [11694] = { + [questKeys.objectives] = {nil,{{187879,"Plague Cauldron Neutralized"}}}, + }, + [11704] = { + [questKeys.preQuestSingle] = {11708}, + }, + [11705] = { + [questKeys.objectives] = {{{25618,"Varidus the Flenser Defeated"}}}, + }, + [11706] = { + [questKeys.objectives] = {{{25768},{25768,"Nerubian tunnels collapsed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use The Horn of Elemental Fury near the southern sinkhole"),0,{{"monster", 25664}}}}, + }, + [11708] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{25590,"Fizzcrank's tale listened to."}}}, + }, + [11711] = { + [questKeys.extraObjectives] = {{{[zoneIDs.BOREAN_TUNDRA]={{55.28,50.86}}}, Questie.ICON_TYPE_EVENT, l10n("Alliance Deserter Delivered")}}, + [questKeys.objectives] = {{{25761,"Alliance Deserter Delivered"}}}, + }, + [11712] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25814},25814,"Fizzcrank Gnome cursed & ported"}}}, + }, + [11713] = { + [questKeys.preQuestSingle] = {11796}, + }, + [11719] = { + [questKeys.triggerEnd] = {"Bloodspore Flower Used",{[zoneIDs.BOREAN_TUNDRA]={{52.07,52.46,},},},}, + }, + [11723] = { + [questKeys.objectives] = {{{25768},{25794,"Deploy the Shake-n-Quake 5000"}}}, + }, + [11728] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Throw Wolf Bait"),0,{{"monster", 25791}}}}, + }, + [11730] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25753,25758,25752},25753,"Robots reprogrammed"}}}, + }, + [11788] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),1,{{"object", 187984}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),2,{{"object", 187985}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),3,{{"object", 187986}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),4,{{"object", 187987}}}, + }, + }, + [11798] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use The Gearmaster's Manual"),0,{{"object", 190334}}}}, + }, + [11855] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [11865] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place fake fur near Caribou Traps"),0,{{"object", 187995},{"object", 187996},{"object", 187997},{"object", 187998},{"object", 187999},{"object", 188000},{"object", 188001},{"object", 188002},{"object", 188003},{"object", 188004},{"object", 188005},{"object", 188006},{"object", 188007},{"object", 188008}}}, + }, + }, + [11878] = { + [questKeys.objectives] = {{{25862,"Orphaned Mammoth Calf Delivered to Khu'nok"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver the orphan to Khu'nok"),0,{{"monster", 25861}}}}, + }, + [11879] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Wooly Mammoth Bull to assist in killing Kaw the Mammoth Destroyer"),0,{{"monster", 25743}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Kaw the Mammoth Destroyer"), 0, {{"monster", 25802}}}, + }, + }, + [11880] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [11881] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Jenny's Whistle near a crashed flying machine"),0,{{"object", 188019}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Return Jenny to safety without losing cargo"),0,{{"monster", 25849},}}, + }, + }, + [11887] = { + [questKeys.objectives] = {nil,nil,{{35276}}}, + }, + [11888] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [11890] = { + [questKeys.triggerEnd] = {"Fizzcrank Pumping Station environs inspected.",{[zoneIDs.BOREAN_TUNDRA]={{64.38,23.81}}}}, + }, + [11893] = { + [questKeys.objectives] = {{{24601}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Windsoul Totem to collect energy from killing Steam Ragers"),0,{{"monster", 24601}}}}, + }, + [11894] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Uncured Caribou Hide"),0,{{"object", 188086}}}}, + }, + [11895] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Storm Totem to summon Storm Tempest"),0,{{"monster", 26048}}}}, + }, + [11896] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25752,25753,25758},26082,}}}, + }, + [11898] = { + [questKeys.extraObjectives] = { + {{[zoneIDs.BOREAN_TUNDRA]={{86.55,28.59}}}, Questie.ICON_TYPE_EVENT, l10n("Enter teleporter to access Naxxanar"),}, + {{[zoneIDs.BOREAN_TUNDRA]={{86.80,30.12}}}, Questie.ICON_TYPE_EVENT, l10n("Use Naxxanar teleporters"),}, + }, + }, + [11899] = { + [questKeys.objectives] = {{{25814,"Gnome soul captured"},},nil,nil,nil,}, + [questKeys.preQuestSingle] = {11895}, + }, + [11905] = { + [questKeys.extraObjectives] = {{{[zoneIDs.THE_NEXUS_MAP]={{64.9,21.6}},[zoneIDs.THE_NEXUS]={{-1,-1}}}, Questie.ICON_TYPE_EVENT, l10n("Use Interdimensional Refabricator")}}, + }, + [11906] = { + [questKeys.preQuestSingle] = {11895}, + }, + [11907] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),1,{{"object", 187984}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),2,{{"object", 187985}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),3,{{"object", 187986}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),4,{{"object", 187987}}}, + }, + }, + [11908] = { + [questKeys.preQuestSingle] = {11902}, + }, + [11909] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Research the Gearmaster's Manual"),0,{{"object", 190334},{"object", 190335}}}}, + }, + [11913] = { + [questKeys.objectives] = {nil,{{188112,"Farshire Grain burnt"}}}, + }, + [11919] = { + [questKeys.objectives] = {{{26127,"Captured Nexus Drake"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the captured drake to Raelorasz"),0,{{"monster", 26117}}}}, + }, + [11930] = { + [questKeys.triggerEnd] = {"Secure Passage to Dragonblight",{[zoneIDs.DRAGONBLIGHT]={{10.29,53.83,},},},}, + }, + [11938] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25378,25383,25386,25387,25393,25609},25378,"En'kilah Casualty"}}}, + }, + [11940] = { + [questKeys.objectives] = {{{26127,"Captured Nexus Drake"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the captured drake to Raelorasz"),0,{{"monster", 26117}}}}, + }, + [11945] = { + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11946] = { + [questKeys.requiredSourceItems] = {35671}, + }, + [11951] = { + [questKeys.requiredSourceItems] = {35671}, + }, + [11956] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ride Dusk"),0,{{"monster", 26191}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Open the phylactery"),0,{{"object", 188141}}}, + }, + }, + [11957] = { + [questKeys.requiredSourceItems] = {35671,35690}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Keristrasza"),0,{{"monster", 26206}}}, + {{[zoneIDs.BOREAN_TUNDRA]={{22,22.6}}}, Questie.ICON_TYPE_EVENT, l10n("Use Arcane Power Focus"),}, + }, + }, + [11959] = { + [questKeys.objectives] = {{{26196,"Loguhn's Blood Smeared"}}}, + }, + [11960] = { + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11967] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Keristrasza"),0,{{"monster", 26206}}}}, + }, + [11969] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Raelorasz' Spark"),0,{{"object", 194151}}}}, + }, + [11982] = { + [questKeys.objectives] = {{{26270,"Iron Dwarf Operations Disrupted"}}}, + [questKeys.preQuestSingle] = {}, + }, + [11984] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Enlist Budd's help"), 0, {{"monster", 26422}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Escort Budd to the Drak'Zin Ruins"), 0, {{"monster", 32663}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Budd's Tag Troll spell to stun Drakkari trolls"), 0, {{"monster", 26425}, {"monster", 26447}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Capture stunned Drakkari trolls with Bounty Hunter's Cage"), 0, {{"monster", 26425}, {"monster", 26447}}}, + }, + }, + [11989] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Dull Carving Knife near Drakuru"),0,{{"monster", 26423}}}}, + }, + [11991] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Frozen Mojo"),0,{{"object", 188287}}}}, + [questKeys.requiredSourceItems] = {35797,35799}, + }, + [11995] = { + [questKeys.exclusiveTo] = {12439}, + }, + [12000] = { + [questKeys.preQuestSingle] = {}, + }, + [12007] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering Zim'bo's Mojo"),0,{{"object", 400047}}}}, + [questKeys.requiredSourceItems] = {35797,35836}, + }, + [12014] = { + [questKeys.sourceItemId] = 35837, + }, + [12017] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Tu'u'gwar's Bait"),0,{{"object", 188370}}}}, + }, + [12019] = { + [questKeys.finishedBy] = {{26170,198875}}, + [questKeys.extraObjectives] = { + {{[zoneIDs.BOREAN_TUNDRA]={{86.6,28.6}}}, Questie.ICON_TYPE_EVENT, l10n("Teleport to the top of Naxxanar"),}, + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Thassarian"), 0, {{"monster", 198875}}}, + }, + }, + [12020] = { + [questKeys.preQuestSingle] = {}, + }, + [12022] = { + [questKeys.preQuestSingle] = {}, + [questKeys.requiredSourceItems] = {33096}, + }, + [12027] = { + [questKeys.triggerEnd] = {"Help Emily and Mr. Floppy return to the camp",{[zoneIDs.GRIZZLY_HILLS]={{53.81,33.33,},},},}, + }, + [12028] = { + [questKeys.objectives] = {nil,{{188416}}}, + }, + [12029] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26458,26570,26582,26583},26612,}}}, + }, + [12032] = { + [questKeys.objectives] = {{{26648,"Oacha'noa's compulsion obeyed."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Commune with Oacha'noa"),0,{{"object", 188422}}}}, + }, + [12033] = { + [questKeys.preQuestSingle] = {11916}, + [questKeys.objectives] = {nil,{{188423,}},nil,nil,}, + }, + [12034] = { + [questKeys.preQuestSingle] = {12008}, + }, + [12035] = { + [questKeys.objectives] = {{{25623,"Harvest Collector Rewired"},},nil,nil,nil,}, + }, + [12036] = { + [questKeys.triggerEnd] = {"Pit of Narjun Explored",{[zoneIDs.DRAGONBLIGHT]={{26.26,50.01,},},},}, + }, + [12037] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Search for Kurzel"),0,{{"monster", 27909}}}}, -- to use -1 instead of 0 when questie supports showing extraobjectives when quest complete + }, + [12038] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26458,26570,26582,26583},26612,}}}, + }, + [12039] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12049] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Throw the Explosive Charges when it opens its mouth wide"),0,{{"monster", 26293}}}}, + }, + [12050] = { + [questKeys.preQuestGroup] = {12046,12047}, + }, + [12052] = { + [questKeys.preQuestGroup] = {12046,12047}, + }, + [12053] = { + [questKeys.objectives] = {{{26678,"Warsong Battle Standard Defended"}}}, + }, + [12055] = { + [questKeys.startedBy] = {{26349},nil,{36742}}, + [questKeys.preQuestSingle] = {12000}, + }, + [12056] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12059] = { + [questKeys.startedBy] = {{26349},nil,{36746}}, + [questKeys.preQuestSingle] = {11999}, + }, + [12063] = { + [questKeys.preQuestSingle] = {12036}, + }, + [12065] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188445}}}, + }, + }, + [12066] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188445}}}, + }, + }, + [12067] = { + [questKeys.startedBy] = {{26762},nil,{36756}}, + }, + [12068] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Sacred Mojo"),0,{{"object", 400066}}}}, + [questKeys.requiredSourceItems] = {35797,36758}, + }, + [12069] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free Roanauk Icemist"),0,{{"object", 188463}}}}, + }, + [12075] = { + [questKeys.preQuestSingle] = {}, + }, + [12076] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Zort's Scraper when covered in Corrosive Spit"),0,{{"monster", 26358},{"monster", 26359}}}}, + }, + [12078] = { + [questKeys.preQuestSingle] = {12077}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Sturdy Crates to capture the worm spawn"),0,{{"monster", 26359}}}}, + }, + [12079] = { + [questKeys.preQuestSingle] = {12075}, + }, + [12080] = { + [questKeys.preQuestSingle] = {12076}, + }, + [12082] = { + [questKeys.triggerEnd] = {"Harrison has escorted you to safety.",{[zoneIDs.GRIZZLY_HILLS]={{73.51,24.02,},},},}, + }, + [12083] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188474}}}, + }, + }, + [12084] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188474}}}, + }, + }, + [12085] = { + [questKeys.startedBy] = {{26815},nil,{36780}}, + }, + [12092] = { + [questKeys.preQuestSingle] = {12065}, + }, + [12095] = { + [questKeys.preQuestGroup] = {12089,12090,12091}, + }, + [12096] = { + [questKeys.preQuestSingle] = {12066}, + }, + [12097] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rokhan to call down Sarathstra"), 0, {{"monster", 26859}}},}, + }, + [12099] = { + [questKeys.objectives] = {{{26417,"Runed Giants Freed"}}}, + }, + [12100] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12105] = { + [questKeys.startedBy] = {{27547},nil,{36940}}, + }, + [12107] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Ley Line Focus Control Talisman"),1,{{"object", 188491}}}, + }, + }, + [12110] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Ley Line Focus Control Talisman"),1,{{"object", 188491}}}, + }, + }, + [12111] = { + [questKeys.objectives] = {{{26615,},{26482,}}}, + }, + [12112] = { + [questKeys.preQuestGroup] = {12050,12052}, + }, + [12117] = { + [questKeys.nextQuestInChain] = 11958, + }, + [12118] = { + [questKeys.nextQuestInChain] = 11958, + }, + [12121] = { + [questKeys.objectives] = {{{27199,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ring the gong outside Drakil'jin to summon Warlord Jin'arrak"),0,{{"object", 188510}}}, + }, + }, + [12124] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a drake to the top of the temple"),1,{{"monster", 26443}}}}, + }, + [12125] = { + [questKeys.objectives] = {{{26411}},nil,{{36828}}}, + }, + [12126] = { + [questKeys.objectives] = {{{26926}},nil,{{36836}}}, + }, + [12127] = { + [questKeys.objectives] = {{{26283}},nil,{{36846}}}, + }, + [12129] = { + [questKeys.sourceItemId] = 36849, + }, + [12132] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12125,12126,12127}, + }, + [12137] = { + [questKeys.sourceItemId] = 36859, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Speak with Gan'jo to return to life"),0,{{"monster", 26924}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Snow of Eternal Slumber on ancient Drakkari spirits"),0,{{"monster", 26811},{"monster", 26812}}}, + }, + }, + [12138] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26407,27017},26407,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Fight Lightning Sentries with Depleted War Golem deployed nearby"),0,{{"monster", 26407}}}, + }, + }, + [12146] = { + [questKeys.startedBy] = {{27004,27005},nil,{36855}}, + }, + [12147] = { + [questKeys.startedBy] = {{27004,27005},nil,{36856}}, + }, + [12150] = { + [questKeys.objectives] = {{{27003,}}}, + }, + [12151] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{57.09,76.26}}}, Questie.ICON_TYPE_EVENT, l10n("Blow the horn"),0}}, + }, + [12152] = { + [questKeys.requiredSourceItems] = {36870,36873,37063}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Place the Infused Drakkari Offering at the gongs outside Drakil'jin"),0,{{"object", 188510}}}, + }, + }, + [12157] = { + [questKeys.exclusiveTo] = {12171,12235,12297}, + }, + [12159] = { + [questKeys.objectives] = {{{26891,"Miner at Rest"}}}, + }, + [12165] = { + [questKeys.sourceItemId] = 36849, + }, + [12166] = { + [questKeys.objectives] = {{{26616,"Blighted Elk's corpse cleansed"},{26643,"Rabid Grizzly's corpse cleansed"},},nil,nil,nil,}, + }, + [12171] = { + [questKeys.exclusiveTo] = {12235,12297}, + }, + [12174] = { + [questKeys.exclusiveTo] = {12235,12298}, + }, + [12180] = { + [questKeys.preQuestSingle] = {12014}, + }, + [12181] = { + [questKeys.exclusiveTo] = {12188}, + }, + [12182] = { + [questKeys.exclusiveTo] = {}, + [questKeys.nextQuestInChain] = 12188, + }, + [12184] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26408,26409,26410,26414,27177},26408,}}}, + }, + [12185] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Intercept the message from Loken"),1,{{"object", 188596}}}, + }, + }, + [12188] = { + [questKeys.preQuestSingle] = {}, + }, + [12191] = { + [questKeys.preQuestSingle] = {}, + [questKeys.requiredSourceItems] = {33096}, + }, + [12198] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26407,27017},26407,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Fight Lightning Sentries with Depleted War Golem deployed nearby"),0,{{"monster", 26407}}}, + }, + }, + [12202] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26408,26409,26410,26414,27177},26408,}}}, + }, + [12203] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Intercept the message from Loken"),1,{{"object", 188596}}}, + }, + }, + [12204] = { + [questKeys.preQuestSingle] = {12099,12058}, + [questKeys.preQuestGroup] = {}, + }, + [12206] = { + [questKeys.objectives] = {{{27349,"Flask of Blight tested"}}}, + }, + [12207] = { + [questKeys.preQuestSingle] = {12413}, + }, + [12208] = { + [questKeys.preQuestSingle] = {12412}, + }, + [12210] = { + [questKeys.preQuestSingle] = {12212}, + }, + [12211] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27202,27203,27206,27207,27209,27210,27211,27232,27233,27234,27235,27236,27237,27246,27247},27203,"Scarlet Onslaught corpses picked clean"}}}, + }, + [12213] = { + [questKeys.preQuestSingle] = {12413}, + }, + [12214] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27206,27213,27296,27028},27296,}}}, + }, + [12218] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Commandeer a Forsaken Blight Spreader"),1,{{"monster", 26523}}}, + }, + }, + [12222] = { + [questKeys.preQuestSingle] = {12294}, + }, + [12223] = { + [questKeys.preQuestSingle] = {12294}, + }, + [12224] = { + [questKeys.preQuestGroup] = {12221,12140,12072}, + }, + [12229] = { + [questKeys.preQuestGroup] = {12207,12213}, + }, + [12231] = { + [questKeys.objectives] = {{{27274,"Orsonn's Story"},{27275,"Kodian's Story"}}}, + [questKeys.preQuestGroup] = {12207,12213}, + }, + [12232] = { + [questKeys.objectives] = {nil,{{188673,}}}, + }, + [12236] = { + [questKeys.preQuestGroup] = {12241,12242}, + [questKeys.objectives] = {{{26633,}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tur Ragepaw to summon Ursoc"),0,{{"monster", 27328}}}}, + }, + [12237] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27315,27336,27345,27341},27315,"Helpless Villager Rescued"}}}, + }, + [12238] = { + [questKeys.requiredSourceItems] = {35797,38303}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Enduring Mojo"),0,{{"object", 190629}}}}, + }, + [12240] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{68.29,74.29}}}, Questie.ICON_TYPE_EVENT, l10n("Release the termites"),0}}, + }, + [12241] = { + [questKeys.preQuestGroup] = {12229,12231}, + }, + [12242] = { + [questKeys.preQuestGroup] = {12229,12231}, + }, + [12244] = { + [questKeys.objectives] = {{{27354}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Shredder"),0,{{"monster", 27371}}}}, + }, + [12247] = { + [questKeys.objectives] = {{{27274,"Orsonn's Story"},{27275,"Kodian's Story"}}}, + }, + [12249] = { + [questKeys.objectives] = {{{26633,}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tur Ragepaw to summon Ursoc"),0,{{"monster", 27328}}}}, + }, + [12252] = { + [questKeys.objectives] = {{{27209,"Torturer LeCraft fully questioned"},{27209}}} + }, + [12255] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride Flamebringer"),0,{{"monster", 27292}}}}, + }, + [12256] = { + [questKeys.preQuestSingle] = {12468}, + }, + [12258] = { + [questKeys.preQuestSingle] = {12251}, + }, + [12259] = { + [questKeys.preQuestGroup] = {12256,12257}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride Flamebringer"),0,{{"monster", 27292}}}}, + }, + [12260] = { + [questKeys.objectives] = {{{27202,}}}, + }, + [12261] = { + [questKeys.preQuestSingle] = {12447}, + [questKeys.objectives] = {{{27430,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Destructive Ward"),0,{{"object", 188707}}}, + }, + }, + [12262] = { + [questKeys.preQuestSingle] = {12447}, + }, + [12263] = { + [questKeys.triggerEnd] = {"Uncover the Magmawyrm Resurrection Chamber",{[zoneIDs.DRAGONBLIGHT]={{31.76,30.46,},},},}, + }, + [12264] = { + [questKeys.preQuestSingle] = {12263}, + [questKeys.objectives] = {{{27358},{27362},{27363}}}, + }, + [12265] = { + [questKeys.preQuestSingle] = {12263}, + }, + [12269] = { + [questKeys.preQuestSingle] = {12275}, + }, + [12270] = { + [questKeys.objectives] = {{{27354}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Shredder"),0,{{"monster", 27423}}}}, + }, + [12271] = { + [questKeys.startedBy] = {{27209},nil,{37432}}, + [questKeys.preQuestSingle] = {12245}, + }, + [12272] = { + [questKeys.preQuestSingle] = {12275}, + }, + [12273] = { + [questKeys.objectives] = {{{27237,},{27235,},{27234,},{27236,}}}, + }, + [12274] = { + [questKeys.objectives] = {nil,{{188713,"Abbey bell rung"}},nil,nil,{{{27245},27245,"High Abbot spoken with"}}}, + }, + [12277] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the Mine Bomb here"),0,{{"object", 188711}}}}, + }, + [12284] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27475,27482,},27475,"Alliance units eliminated"}}}, + }, + [12288] = { + [questKeys.objectives] = {{{27463,"Wounded Skirmishers Healed"}}}, + }, + [12289] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27456,27463},27456,"Horde units eliminated"}}}, + }, + [12291] = { + [questKeys.objectives] = {{{27226,"Forgotten Peasant Questioned"},{27225,"Forgotten Rifleman Questioned"},{27224,"Forgotten Knight Questioned"},{27229,"Forgotten Footman Questioned"}}}, + }, + [12296] = { + [questKeys.objectives] = {{{27482,"Westfall Infantry Healed"}}}, + }, + [12297] = { + [questKeys.preQuestSingle] = {11250}, + [questKeys.exclusiveTo] = {12171,12235}, + }, + [12298] = { + [questKeys.exclusiveTo] = {12174,12235}, + }, + [12301] = { + [questKeys.objectives] = {nil,{{189304,"The Forgotten Redeemed"}}}, + }, + [12307] = { + [questKeys.preQuestSingle] = {}, + }, + [12308] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"),0,{{"monster", 27409}}}}, + [questKeys.triggerEnd] = {"Escape from Silverbrook",{[zoneIDs.GRIZZLY_HILLS]={{32.37,59.14}}}}, + [questKeys.objectives] = {}, + }, + [12316] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27500,27550},27550,"Horde killed in Venture Bay"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in the shredder if you have the key"),0,{{"monster", 27496}}}}, + }, + [12317] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27501,27549},27549,"Alliance killed in Venture Bay"}}}, + }, + [12323] = { + [questKeys.objectives] = {{{27570,"Venture Company Stragglers smoked out"}}}, + }, + [12324] = { + [questKeys.objectives] = {{{27570,"Venture Company Stragglers smoked out"}}}, + }, + [12321] = { + [questKeys.objectives] = {{{27577,"Righteous Sermon Heard"}}}, + }, + [12325] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get a ride to Thorson's Post"),0,{{"monster", 27661}}}}, + }, + [12326] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in"),0,{{"monster", 27587}}}}, + [questKeys.objectives] = {{{27607,"Plague Wagon Sabotaged"},{27588,"7th Legion Elite Safely Dropped Off"}}}, + }, + [12327] = { + [questKeys.triggerEnd] = {"Vision from the Past",{[zoneIDs.SILVERPINE_FOREST]={{46.53,76.18,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Gossamer Potion"),0,{{"object", 189972}}}}, + }, + [12330] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Tranquilizer Dart on Tatjana"),0,{{"monster", 27627}}}}, + [questKeys.triggerEnd] = {"Tatjana Delivered",{[zoneIDs.GRIZZLY_HILLS]={{57.77,41.7,},},},}, + }, + [12372] = { + [questKeys.objectivesText] = {"Devrestrasz at Wyrmrest Temple has asked you to slay 3 Azure Dragons, slay 5 Azure Drakes, and to destabilize the Azure Dragonshrine while riding a Wyrmrest Defender into battle."}, -- #4675 + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ride a Wyrmrest Defender to defend the Temple"), 0, {{"monster", 27629}}}, + }, + }, + [12412] = { + [questKeys.preQuestSingle] = {12259}, + }, + [12414] = { + [questKeys.objectives] = {{{26472,"Highland Mustangs returned"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the mustangs to Squire Percy"), 0, {{"monster", 26377}}}}, + }, + [12415] = { + [questKeys.objectives] = {{{26472,}}}, + }, + [12419] = { + [questKeys.startedBy] = {{27680},nil,{37833}}, + }, + [12423] = { + [questKeys.startedBy] = {{27547},nil,{37830}}, + }, + [12427] = { + [questKeys.preQuestSingle] = {12413}, + [questKeys.triggerEnd] = {"Ironhide defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.2,64.68,},},},}, + [questKeys.objectives] = {{{27715,}}}, + }, + [12428] = { + [questKeys.triggerEnd] = {"Torgg Thundertotem defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.05,64.55,},},},}, + [questKeys.objectives] = {{{27716,}}}, + }, + [12429] = { + [questKeys.triggerEnd] = {"Rustblood defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.12,64.62,},},},}, + [questKeys.objectives] = {{{27717,}}}, + }, + [12430] = { + [questKeys.triggerEnd] = {"Horgrenn Hellcleave defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.11,64.6,},},},}, + [questKeys.objectives] = {{{27718,}}}, + }, + [12431] = { + [questKeys.objectives] = {{{27727,}}}, + }, + [12432] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride the rocket!"), 0, {{"monster", 27593}}}}, + }, + [12434] = { + [questKeys.specialFlags] = 1, + [questKeys.preQuestSingle] = {12433}, + [questKeys.startedBy] = {{27565}}, + [questKeys.finishedBy] = {{27565}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12435] = { -- #4675 + [questKeys.name] = "Report to Lord Devrestrasz", + [questKeys.objectivesText] = {"Speak with Lord Devrestrasz at Wyrmrest Temple."}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a drake to the middle of the temple"), 0, {{"monster", 26949}}}}, + }, + [12437] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride the rocket!"), 0, {{"monster", 27593}}}}, + }, + [12439] = { + [questKeys.exclusiveTo] = {11995,12000}, + }, + [12446] = { + [questKeys.specialFlags] = 1, + [questKeys.preQuestSingle] = {12443}, + [questKeys.startedBy] = {{27495}}, + [questKeys.finishedBy] = {{27495}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12453] = { + [questKeys.preQuestSingle] = {12412}, + [questKeys.objectives] = {{{26369,}}}, + }, + [12456] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{64.6,77}}}, Questie.ICON_TYPE_EVENT, l10n("Use Skytalon Molts"),0}}, + }, + [12457] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Man the Chain Gun"),0,{{"monster", 27714}}},}, + }, + [12459] = { + [questKeys.objectives] = {{{26841,nil},{27808,nil},{27122,nil},},nil,nil,nil,}, + }, + [12462] = { + [questKeys.preQuestSingle] = {12326}, + }, + [12464] = { + [questKeys.preQuestSingle] = {}, + }, + [12467] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Wyrmbait"),0,{{"monster", 27843}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Destroy Icestorm"),0,{{"monster", 26287}}}, + }, + }, + [12468] = { + [questKeys.preQuestSingle] = {}, + }, + [12470] = { + [questKeys.objectives] = {{{27840,"Hourglass of Eternity protected"}}}, + }, + [12473] = { + [questKeys.objectives] = {{{27383,"Thel'zan the Duskbringer Defeated"}}}, + }, + [12478] = { + [questKeys.objectives] = {nil,{{190191,"Secrets of the Past Revealed"}}}, + }, + [12481] = { + [questKeys.objectives] = {{{24238,"Bjorn Halgurdsson insulted"},{24238,"Bjorn Halgurdsson defeated"}}}, + }, + [12484] = { + [questKeys.extraObjectives] = {{{[zoneIDs.GRIZZLY_HILLS]={{16.84,48.34}}}, Questie.ICON_TYPE_EVENT, l10n("Place Scourged Troll Mummy in the fire"),0}}, + }, + [12486] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [12491] = { + [questKeys.startedBy] = {{23872},nil,{38280}}, + }, + [12492] = { + [questKeys.startedBy] = {{23872},nil,{38281}}, + }, + [12498] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Slay Antiok's mount to make him vulnerable"),0,{{"monster", 28018}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Slay Grand Necrolord Antiok"),0,{{"monster", 28006}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"),0,{{"monster", 27996}}}, + }, + }, + [12500] = { + [questKeys.preQuestSingle] = {12498}, + }, + [12501] = { + [questKeys.finishedBy] = {{28039}}, + [questKeys.exclusiveTo] = {12563,12587}, + [questKeys.childQuests] = {12502,12509,12519,12541}, + }, + [12502] = { + [questKeys.parentQuest] = 12501, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Plant the Argent Crusade Banner"), 0, {{"object", 190522}}}}, + }, + [12503] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28023,28026,28246,28669,28022},28022,"Scourge at The Argent Stand destroyed"}}}, + }, + [12506] = { + [questKeys.triggerEnd] = {"Main building at the Altar of Sseratus investigated.",{[zoneIDs.ZUL_DRAK]={{40.32,39.46,},},},}, + }, + [12509] = { + [questKeys.parentQuest] = 12501, + }, + [12510] = { + [questKeys.sourceItemId] = 38323, + }, + [12512] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28133,28136},28133},{{28141,28142},28141},{{28143,28148},28143}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Escort rescued Crusaders to Dr. Rogers"), 0, {{"monster", 28125}}}}, + }, + [12516] = { + [questKeys.objectives] = {{{28068}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Muddled Mojo on Prophet of Sseratus before killing it"), 0, {{"monster", 28068}}}}, + }, + [12519] = { + [questKeys.parentQuest] = 12501, + }, + [12520] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + }, + [12521] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Take a ride to Sholazar Basin"), 0, {{"monster", 28160}}}}, + }, + [12527] = { + [questKeys.requiredSourceItems] = {38380}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Feed with Zul'Drak Rat"), 0, {{"monster", 28145}}}}, + }, + [12529] = { + [questKeys.requiredSourceItems] = {38619}, + }, + [12530] = { + [questKeys.requiredSourceItems] = {38619,38467}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Softknuckle Poker on Softknuckles"), 0, {{"monster", 28127}}}}, + }, + [12531] = { + [questKeys.requiredSourceItems] = {38621}, + }, + [12532] = { + [questKeys.requiredSourceItems] = {38621,38689}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12533,12534}, + }, + [12533] = { + [questKeys.requiredSourceItems] = {38621}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12529,12530}, + }, + [12534] = { + [questKeys.requiredSourceItems] = {38621}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12529,12530}, + }, + [12536] = { + [questKeys.requiredSourceItems] = {38512}, + [questKeys.triggerEnd] = {"Travel to Mistwhisper Refuge.",{[zoneIDs.SHOLAZAR_BASIN]={{46.31,39.88,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Captive Crocolisk"), 0, {{"monster", 28298}}}}, + }, + [12537] = { + [questKeys.requiredSourceItems] = {38510,38512}, + [questKeys.objectives] = {nil,{{190502,"Sabotage the Mistwhisper Weather Shrine"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the Skyreach Crystal Clusters"), 0, {{"object", 300213}}}}, + }, + [12538] = { + [questKeys.requiredSourceItems] = {38512}, + }, + [12539] = { + [questKeys.requiredSourceItems] = {38512}, + }, + [12540] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Injured Rainspeaker Oracle"), 0, {{"monster", 28217}}}}, + }, + [12541] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12544] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Soo-rahm's Incense"), 0, {{"object", 190507}}}}, + }, + [12545] = { + [questKeys.preQuestSingle] = {}, + }, + [12548] = { + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{40.35,83.08,}}}, Questie.ICON_TYPE_EVENT, l10n("Travel through the Waygate"),}}, + }, + [12549] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + }, + [12551] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12520,12549}, + }, + [12555] = { + [questKeys.objectives] = {{{28274,"Plague Sprayers webbed and destroyed"}}}, + }, + [12557] = { + [questKeys.objectives] = {nil,nil,{{38386},{38339},{38340},{38346}}}, + }, + [12561] = { + [questKeys.requiredSpell] = 54197, + }, + [12563] = { + [questKeys.finishedBy] = {{28039}}, + [questKeys.exclusiveTo] = {12501,12587}, + [questKeys.childQuests] = {12541,12564,12568,12585}, + }, + [12564] = { + [questKeys.parentQuest] = 12563, + }, + [12568] = { + [questKeys.parentQuest] = 12563, + [questKeys.objectives] = {nil,nil,nil,nil,{{{28260,28156},28260,"Argent Footman Corpse Incinerated"}}}, + }, + [12569] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Sandfern Disguise near the fallen log"), 0, {{"object", 190545}}}}, + }, + [12570] = { + [questKeys.triggerEnd] = {"Escort the Injured Rainspeaker Oracle to Rainspaker Canopy",{[zoneIDs.SHOLAZAR_BASIN]={{52.79,59.36}}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Start the escort"), 0, {{"monster", 28217}}}}, + }, + [12571] = { + [questKeys.requiredSourceItems] = {38622}, + }, + [12572] = { + [questKeys.requiredSourceItems] = {38622}, + }, + [12573] = { + [questKeys.sourceItemId] = 38622, + [questKeys.requiredSourceItems] = {38622,40364}, + [questKeys.objectives] = {{{28315,"Extend Peace Offering to Shaman Vekjik"}}}, + }, + [12574] = { + [questKeys.requiredSourceItems] = {38623}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12572,12573}, + }, + [12575] = { + [questKeys.requiredSourceItems] = {38623}, + }, + [12576] = { + [questKeys.requiredSourceItems] = {38623}, + }, + [12577] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12575,12576}, + }, + [12578] = { + [questKeys.requiredSourceItems] = {38624}, + [questKeys.triggerEnd] = {"Travel to Mosswalker Village.",{[zoneIDs.SHOLAZAR_BASIN]={{75.07,51.88,},},},}, + }, + [12579] = { + [questKeys.requiredSourceItems] = {38624}, + }, + [12580] = { + [questKeys.requiredSourceItems] = {38624}, + [questKeys.objectives] = {{{28113,"Mosswalker Victims Rescued"}}}, + }, + [12584] = { + [questKeys.preQuestGroup] = {12552}, + }, + [12585] = { + [questKeys.parentQuest] = 12563, + }, + [12587] = { + [questKeys.exclusiveTo] = {12501,12563}, + [questKeys.childQuests] = {12541,12588,12591,12594}, + }, + [12588] = { + [questKeys.objectives] = {nil,{{190550,"Ancient Dirt Mounds Investigated"}}}, + }, + [12589] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + [questKeys.objectives] = {{{28054,"Shot apple on Lucky Wilhelm's Head"}}}, + }, + [12591] = { + [questKeys.objectives] = {nil,{{190555,"Nerubian Tunnels Collapsed"}}}, + }, + [12595] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + }, + [12596] = { + [questKeys.preQuestSingle] = {12740}, + [questKeys.preQuestGroup] = {}, + }, + [12598] = { + [questKeys.objectives] = {nil,{{190555,"Nerubian Tunnels Sealed"}}}, + }, + [12601] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12602] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12603] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + }, + [12604] = { + [questKeys.preQuestSingle] = {12501,12563,12587}, + }, + [12605] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Break the egg"), 0, {{"monster", 28408}}}}, + }, + [12606] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28415,28413},28415}}}, + }, + [12607] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28379,28374},28379,}}}, + }, + [12615] = { + [questKeys.preQuestSingle] = {12516}, + }, + [12620] = { + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{49.64,37.41,}}}, Questie.ICON_TYPE_EVENT, l10n("Use Freya's Horn atop of the Glimmering Pillar"),}}, + }, + [12621] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Listen to what the Avatar of Freya has to say"), 0, {{"monster", 27801}}}}, + }, + [12622] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Kill Jin'Alai Trolls until their leaders appear"), 0, {{"monster", 28388},{"monster", 28504},{"object", 193768},{"object", 193769},{"object", 193770}}}}, + }, + [12629] = { + [questKeys.preQuestSingle] = {12637}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12643}, + [questKeys.nextQuestInChain] = 12648, + }, + [12630] = { + [questKeys.objectives] = {{{28519,"Hair Samples Collected"},},nil,nil,nil,}, + }, + [12631] = { + [questKeys.startedBy] = {nil,nil,{38660}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12633}, + [questKeys.nextQuestInChain] = 12637, + }, + [12632] = { + [questKeys.objectives] = {{{28404}}}, + }, + [12633] = { + [questKeys.startedBy] = {nil,nil,{38673}}, + [questKeys.preQuestSingle] = {12238}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12631}, + [questKeys.nextQuestInChain] = 12638, + }, + [12634] = { + [questKeys.preQuestGroup] = {12520,12549}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Pull Sturdy Vines to reveal fruit"), 0, {{"object", 190622}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Ask for a spare fruit"), 0, {{"monster", 28604}}}, + }, + }, + [12637] = { + [questKeys.preQuestSingle] = {12631}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12638}, + [questKeys.nextQuestInChain] = 12629, + }, + [12638] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12633,12238}, + [questKeys.exclusiveTo] = {12637}, + [questKeys.nextQuestInChain] = 12643, + }, + [12641] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Eye of Acherus Control Mechanism"), 0, {{"object", 191609}}}}, + }, + [12643] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12638,12238}, + [questKeys.exclusiveTo] = {12629}, + [questKeys.nextQuestInChain] = 12649, + }, + [12644] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Begin the distillation process"), 0, {{"monster", 28566}}}}, + }, + [12648] = { + [questKeys.preQuestSingle] = {12629}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12649}, + [questKeys.nextQuestInChain] = 12661, + }, + [12649] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12643,12238}, + [questKeys.exclusiveTo] = {12648}, + [questKeys.nextQuestInChain] = 12661, + }, + [12651] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12558,12556,12592}, + [questKeys.exclusiveTo] = {12654}, + [questKeys.nextQuestInChain] = 12654, + }, + [12652] = { + [questKeys.requiredRaces] = 2047, + [questKeys.preQuestSingle] = {12629,12643}, + [questKeys.exclusiveTo] = {12713}, + [questKeys.objectives] = {{{28565,}}}, + }, + [12659] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28465,28600},28622}}}, + }, + [12661] = { + [questKeys.preQuestSingle] = {12648,12649}, + [questKeys.preQuestGroup] = {}, + [questKeys.childQuests] = {12663,12664}, + [questKeys.exclusiveTo] = {}, + [questKeys.nextQuestInChain] = 12669, + [questKeys.requiredSourceItems] = {41390,38699}, + [questKeys.objectives] = {{{28503,"Overlord Drakuru's task complete"}}}, + [questKeys.extraObjectives] = {{{[zoneIDs.ZUL_DRAK]={{28.38,44.85}}}, Questie.ICON_TYPE_EVENT, l10n("Infiltrate Voltarus using Ensorcelled Choker")}}, + }, + [12662] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Heb'Jin's Drum to summon Heb'Jin"), 0, {{"object", 190695}}}}, + }, + [12663] = { + [questKeys.preQuestSingle] = {12649}, + [questKeys.exclusiveTo] = {12664,12648}, + [questKeys.parentQuest] = 12661, + [questKeys.objectives] = {{{28666,"Tour of Zul'Drak complete"}}}, + }, + [12664] = { + [questKeys.preQuestSingle] = {12648}, + [questKeys.exclusiveTo] = {12663,12649}, + [questKeys.parentQuest] = 12661, + [questKeys.objectives] = {{{28666,"Tour of Zul'Drak complete"}}}, + }, + [12665] = { + [questKeys.objectives] = {{{28671,"Quetz'lun's fate revealed."}}}, + }, + [12668] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28747,28748},28747,"Trolls killed near a Soul Font"}}}, + }, + [12669] = { + [questKeys.objectives] = {{{28503,"Drakuru's task complete"},{28739,"Blight Cauldrons diluted"}}}, + [questKeys.requiredSourceItems] = {39154,38699,41390}, + }, + [12671] = { + [questKeys.triggerEnd] = {"Reconnaissance Flight",{[zoneIDs.SHOLAZAR_BASIN]={{50.04,61.43,},},},}, + }, + [12673] = { + [questKeys.objectives] = {nil,{{190716}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Suggestion to mind control Blight Geist"), 0, {{"monster", 28750}}}}, + }, + [12674] = { + [questKeys.objectives] = {{{28752,"High Priest Mu'funu hexed at death"},{28754,"High Priestess Tua-Tua hexed at death"},{28756,"High Priest Hawinni hexed at death"}}}, + }, + [12676] = { + [questKeys.requiredSourceItems] = {39165,41390,38699}, + [questKeys.objectives] = {nil,{{190731,"Scourgewagons destroyed"}},nil,nil,{{{28503},28503,"Drakuru's task complete"}}}, + [questKeys.triggerEnd] = {"Learn Drakuru's secret",{[zoneIDs.ZUL_DRAK]={{27.07,46.16}}}}, + }, + [12677] = { + [questKeys.sourceItemId] = 38699, + [questKeys.requiredSourceItems] = {41390,38699}, + [questKeys.objectives] = {{{28503,"Drakuru's task complete"}},nil,{{39159}}}, + }, + [12680] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28605,28606,28607},28605,"Horse Successfully Stolen"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Stolen Horse"), 0, {{"monster", 28653}}}}, + }, + [12683] = { + [questKeys.objectives] = {{{28003,},{28003}}}, + [questKeys.preQuestSingle] = {}, + }, + [12685] = { + [questKeys.objectives] = {{{28671}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Quetz'lun's Ritual"), 0, {{"monster", 28672}}}}, + }, + [12686] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Empowerment to mind control Servant of Drakuru"), 0, {{"monster", 28802}}}, + }, + }, + [12687] = { + [questKeys.triggerEnd] = {"The Horseman's Challenge",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{52.41,34.59,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Dark Rider of Acherus and take his horse"), 0, {{"monster", 28768},{"monster", 28782}}}}, + }, + [12688] = { + [questKeys.triggerEnd] = {"Escort Engineer Helice out of Swindlegrin's Dig",{[zoneIDs.SHOLAZAR_BASIN]={{37.29,50.59,},},},}, + }, + [12690] = { + [questKeys.exclusiveTo] = {12710}, + [questKeys.requiredSourceItems] = {39238,38699}, + [questKeys.objectives] = {{{28844,"Drakkari Skullcrushers Slain"},{28873,"Drakkari Chieftain Lured"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Command"), 0, {{"monster", 28843}}}}, + }, + [12692] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12695] = { + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12697] = { + [questKeys.preQuestGroup] = {12678,12679,12687,12733,}, + }, + [12698] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28819,28822,28891},28819,"Scarlet Ghoul Returned"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Return Scarlet Ghouls"), 0, {{"monster", 28658}}}}, + }, + [12699] = { + [questKeys.preQuestSingle] = {12523}, + }, + [12701] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Climb inside the Inconspicuous Mine Car"), 0, {{"object", 190767}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Scarlet Cannon"), 0, {{"monster", 28833}}}, + }, + }, + [12702] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12703] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the blood at the Shrine of Kartak"), 0, {{"object", 190782}}}}, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12704] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to High-Oracle Soo-say to retrieve a Gorloc companion"), 0, {{"monster", 28027}}}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.requiredSourceItems] = {38622,38623,38624}, + }, + [12705] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use the Tainted Crystal at the Great Lightning Stone"), 0, {{"object", 190781}}}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12707] = { + [questKeys.objectives] = {{{28861,"Mam'toth Disciples trampled to death"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Medallion of Mam'toth to calm and ride an Enraged Mammoth"),0,{{"monster", 28851}}}, + }, + }, + [12710] = { + [questKeys.sourceItemId] = 38699, + [questKeys.requiredSourceItems] = {38699,39319}, + [questKeys.objectives] = {{{28948,"Drakuru's upper chamber explored"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Open the coffin"), 0, {{"object", 190948}}}, + {{[zoneIDs.ZUL_DRAK]={{28.38,44.85}}}, Questie.ICON_TYPE_EVENT, l10n("Take the teleporter to Drakuru's upper chamber")}, + }, + }, + [12712] = { + [questKeys.sourceItemId] = 39313, + [questKeys.requiredSourceItems] = {39313,39314,39315,39316}, + }, + [12713] = { + [questKeys.objectives] = {nil,nil,{{40425,"Overlord Drakuru Defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use the Scepter of Domination to control it"), 0, {{"monster", 28931}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Go on top of the ziggurat with Drakuru"), 0, {{"monster", 28503}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Defeat Drakuru"), 0, {{"monster", 28998}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("After defeating Drakuru, go back down using this portal"), 0, {{"object", 202357}}}, + }, + }, + [12720] = { + [questKeys.triggerEnd] = {"\"Crimson Dawn\" Revealed",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{55.09,66.12},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Equip Keleseth's Persuaders and persuade Scarlet Crusaders"), 0, {{"monster", 28610},{"monster", 28936},{"monster", 28939},{"monster", 28940},}}}, + }, + [12721] = { + [questKeys.objectives] = {{{28952,"Akali unfettered from his chains."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Release Akali from his chains"), 0, {{"object", 191018}}}}, + }, + [12723] = { + [questKeys.preQuestGroup] = {12717,12720,12722}, + }, + [12726] = { + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.objectives] = {{{28862,},{28858,}}}, + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{26.51,35.63}}}, Questie.ICON_TYPE_EVENT, l10n("Use Drums of the Tempest at Stormwright's Shelf"),}}, + }, + [12730] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Prophet of Akali Convocation"), 0, {{"object", 191123}}}}, + }, + [12732] = { + [questKeys.requiredMinRep] = {1104,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Fill Rejek's Vial"), 0, {{"object", 191122}}}}, + }, + [12733] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28391,28394,28406},28391,"Death Knights defeated in a duel"}}}, + }, + [12734] = { + [questKeys.objectives] = {{{28086,"Blade blooded on Sapphire Hive Wasp"},{28096,"Blade blooded on Hardknuckle Charger"}},nil,nil,nil,{{{28109,28110},28109,"Blade Blooded on Mistwhisper members"}}}, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12735] = { + [questKeys.extraObjectives] = { + {{[zoneIDs.SHOLAZAR_BASIN]={{43,42}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Atha"), 1}, + {{[zoneIDs.SHOLAZAR_BASIN]={{49,63}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Ha-Khalan"), 2}, + {{[zoneIDs.SHOLAZAR_BASIN]={{46,74}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Koosu"), 3}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12736] = { + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12737] = { + [questKeys.objectives] = {nil,{{191136,}}}, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12740] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28028,28029},28028,}}}, + }, + [12741] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12752] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12753] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12754] = { + [questKeys.extraObjectives] = {{{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{60.9,75.5}}}, Questie.ICON_TYPE_EVENT, l10n("Use the Makeshift Cover"),}}, + }, + [12758] = { + [questKeys.requiredMinRep] = {1104,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Venture Co. Explosive on dead Stonewatcher"),0,{{"monster", 28877}}}}, + }, + [12759] = { + [questKeys.sourceItemId] = 39697, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12760] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12761] = { + [questKeys.sourceItemId] = 39693, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12762] = { + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Charge the Dormant Polished Crystal at the exposed Lifeblood Pillar"),2,{{"object", 300224}}}}, + }, + [12771] = { + [questKeys.preQuestSingle] = {12753}, + }, + [12772] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12773] = { + [questKeys.preQuestSingle] = {12772}, + }, + [12774] = { + [questKeys.preQuestSingle] = {12775}, + }, + [12775] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12776] = { + [questKeys.preQuestSingle] = {12777}, + }, + [12777] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12779] = { + [questKeys.extraObjectives] = {{{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{53.5,36.7}}}, Questie.ICON_TYPE_EVENT, l10n("Use the Horn of the Frostbrood"),}}, + }, + [12782] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12783] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12784] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12785] = { + [questKeys.preQuestSingle] = {12783}, + }, + [12786] = { + [questKeys.preQuestSingle] = {12784}, + }, + [12787] = { + [questKeys.preQuestSingle] = {12752}, + }, + [12788] = { + [questKeys.preQuestSingle] = {12782}, + }, + [12797] = { + [questKeys.extraObjectives] = {{{[zoneIDs.UN_GORO_CRATER]={{50.54,7.74,}}}, Questie.ICON_TYPE_EVENT, l10n("Travel through the Waygate"),}}, + }, + [12801] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Highlord Darion Mograine"), 0, {{"monster", 29173}}}, + {{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{38.8,38.4}}}, Questie.ICON_TYPE_EVENT, l10n("The Light of Dawn Uncovered"),}, + }, + }, + [12802] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Desperate Mojo"),0,{{"object", 188358}}}}, + [questKeys.requiredSourceItems] = {35797,36739,36743}, + }, + [12803] = { + [questKeys.requiredSpell] = 54197, + }, + [12804] = { + [questKeys.preQuestSingle] = {12520}, + }, + [12805] = { + [questKeys.objectives] = {{{29124,}}}, + }, + [12807] = { + [questKeys.objectives] = {{{29344,}}}, + }, + [12808] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12809] = { + [questKeys.preQuestSingle] = {12808}, + }, + [12810] = { + [questKeys.objectives] = {{{29392,}}}, + }, + [12811] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12812] = { + [questKeys.preQuestSingle] = {12811}, + }, + [12813] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29329,29330,29333,29338},29398}}}, + [questKeys.preQuestSingle] = {12807}, + }, + [12814] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29406,29405},29406}}}, + }, + [12815] = { + [questKeys.preQuestSingle] = {12814}, + }, + [12816] = { + [questKeys.triggerEnd] = {"Investigate a circle",{[zoneIDs.EVERSONG_WOODS]={{56.5,52,},},},}, + }, + [12817] = { + [questKeys.triggerEnd] = {"Investigate a circle",{[zoneIDs.AZUREMYST_ISLE]={{34.9,45.5,},},},}, + }, + [12821] = { + [questKeys.name] = "Cell Block Tango", + [questKeys.triggerEnd] = {"Garm Teleporter Activated",{[zoneIDs.STORM_PEAKS]={{50.7,81.9,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Activate the teleporter"), 0, {{"object", 191574}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12820,12828,12832}, + [questKeys.sourceItemId] = 40731, + }, + [12823] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place Hardpacked Explosive Bundle at Frostgut's Altar"), 0, {{"object", 191842}}}}, + }, + [12828] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Retrieve U.D.E.D."), 0, {{"object", 191553}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Use U.D.E.D on Ironwool Mammoth"), 0, {{"monster", 29402}}}, + }, + }, + [12831] = { + [questKeys.preQuestSingle] = {}, + }, + [12832] = { + [questKeys.triggerEnd] = {"Escort the Injured Goblin Miner to K3.",{[zoneIDs.STORM_PEAKS]={{40.2,79,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Start the escort"), 0, {{"monster", 29434}}}}, + }, + [12838] = { + [questKeys.preQuestSingle] = {12807}, + }, + [12842] = { + [questKeys.triggerEnd] = {"Weapon emblazoned",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{47.28,31.36},{47.82,27.42},{50.43,28.17},},},}, + }, + [12847] = { + [questKeys.triggerEnd] = {"Arete's Gate summoned",{[zoneIDs.ICECROWN]={{9.53,47.01}}}}, + }, + [12851] = { + [questKeys.name] = "Bearly Hanging On", + [questKeys.objectives] = {{{29358},{29351}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount Icefang"), 0, {{"monster", 29598}}}, + }, + }, + [12852] = { + [questKeys.objectives] = {{{29621,}}}, + }, + [12855] = { + [questKeys.requiredSourceItems] = {40971,41430}, + [questKeys.preQuestSingle] = {12854}, + [questKeys.extraObjectives] = {{{[zoneIDs.STORM_PEAKS]={{36.4,64.2}}}, Questie.ICON_TYPE_EVENT, l10n("Use Frosthound's Collar at the Abandoned Camp")}}, + }, + [12856] = { + [questKeys.objectives] = {{{29639,"Rescued Brunnhildar Prisoners"},{29708,"Freed Proto-Drakes"}}}, + [questKeys.extraObjectives] = { + {{[zoneIDs.STORM_PEAKS]={{62.00,59.50}}}, Questie.ICON_TYPE_EVENT, l10n("Fly freed Proto-Drakes to safety while carrying rescued Brunnhildar Prisoners"),}, + }, + }, + [12858] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {40971,41130}, + }, + [12860] = { + [questKeys.requiredSourceItems] = {40971,41179}, + [questKeys.objectives] = {{{29746,"Hidden Data gathered"}}}, + }, + [12862] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Ricket for transportation"), 0, {{"monster", 29428}}}}, + }, + [12864] = { + [questKeys.objectives] = {{{29811,"Locate Missing Scout"}}}, + }, + [12865] = { + [questKeys.objectives] = {{{29854,"Stormcrest Eagles fed"}}}, + [questKeys.preQuestSingle] = {12863}, + }, + [12869] = { + [questKeys.preQuestGroup] = {12867,13417}, + }, + [12871] = { + [questKeys.requiredSourceItems] = {40971,41258}, + [questKeys.preQuestSingle] = {12872}, + }, + [12872] = { + [questKeys.requiredSourceItems] = {40971,44704}, + }, + [12874] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Fjorlin Frostbrow"), 0, {{"monster", 29732}}}}, + }, + [12876] = { + [questKeys.preQuestSingle] = {12874}, + }, + [12885] = { + [questKeys.preQuestSingle] = {12872}, + [questKeys.exclusiveTo] = {12930}, + [questKeys.sourceItemId] = 40971, + }, + [12886] = { + [questKeys.objectives] = {{{29694}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Hyldnir Harpoon to land on nearby Proto-Drakes"), 0, {{"monster", 29625}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Hyldnir Harpoon on Column Ornaments to dismount"), 0, {{"monster", 29754}}}, + }, + }, + [12887] = { + [questKeys.objectives] = {{{29747,"The Ocular has been destroyed"}}}, + }, + [12889] = { + [questKeys.requiredSkill] = {202,400}, + }, + [12892] = { + [questKeys.objectives] = {{{29747,"The Ocular has been destroyed"}}}, + }, + [12893] = { + [questKeys.objectives] = {{{29769},{29770},{29840}}}, + }, + [12896] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Tamper with General's Weapon Rack to summon General Lightsbane"), 0, {{"object", 191778},{"object", 191779}}}, + }, + }, + [12897] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Tamper with General's Weapon Rack to summon General Lightsbane"), 0, {{"object", 191778},{"object", 191779}}}, + }, + }, + [12906] = { + [questKeys.objectives] = {{{30146,"Exhausted Vrykul Disciplined"}}}, + }, + [12910] = { + [questKeys.sourceItemId] = 40971, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount Frostbite to track scent"), 0, {{"monster", 29857}}}, + }, + }, + [12913] = { + [questKeys.sourceItemId] = 40971, + }, + [12916] = { + [questKeys.objectives] = {nil,{{400065,"Scourge Enclosure Blown Up"}}}, + }, + [12919] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Let Gymer know you're ready"), 0, {{"monster", 29647}}}, + {{[zoneIDs.ZUL_DRAK]={{26.71,57.29}}}, Questie.ICON_TYPE_EVENT, l10n("Slay Scourge while riding Gymer"),}, + }, + }, + [12920] = { + [questKeys.preQuestSingle] = {12917}, + }, + [12924] = { + [questKeys.objectives] = {{{30099,"Fjorn's Anvil Brought to Dun Niffelem"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask King Jokkum to allow Thorim's armor to be reforged and pick up 'You Can't Miss Him' (12966)"), 0, {{"monster", 30105}}}, + }, + }, + [12925] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12926] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {40971,41130}, + }, + [12927] = { + [questKeys.requiredSourceItems] = {40971,41179}, + [questKeys.objectives] = {{{29746,"Hidden Data gathered"}}}, + }, + [12928] = { + [questKeys.requiredSourceItems] = {40971,44704}, + }, + [12929] = { + [questKeys.preQuestSingle] = {12928}, + [questKeys.exclusiveTo] = {12930}, + [questKeys.sourceItemId] = 40971, + }, + [12932] = { -- This is the version of the quest you get if you have NOT completed 9977 + [questKeys.objectives] = {{{30014,"Yggdras Defeated"}}}, + [questKeys.exclusiveTo] = {12954,9977}, + [questKeys.nextQuestInChain] = 12933, + }, + [12933] = { + [questKeys.objectives] = {{{30017,"Stinkbeard Defeated"}}}, + [questKeys.preQuestSingle] = {12932,12954}, + }, + [12934] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30019,30024,30025,30026},30019,"Elemental Lord Defeated"}}}, + }, + [12935] = { + [questKeys.objectives] = {{{30020,"Orinoko Tuskbreaker Defeated"}}}, + }, + [12936] = { + [questKeys.objectives] = {{{30023,"Korrak the Bloodrager Defeated"}}}, + }, + [12939] = { + [questKeys.objectives] = {{{30037,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Challenge Flag on sparring Mjordin Combatants"), 0, {{"monster", 30037}}}, + }, + }, + [12940] = { + [questKeys.startedBy] = {nil,{400017}}, + [questKeys.finishedBy] = {nil,{400017}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12941] = { + [questKeys.startedBy] = {nil,{400016}}, + [questKeys.finishedBy] = {nil,{400016}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12942] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12944] = { + [questKeys.startedBy] = {nil,{400038}}, + [questKeys.finishedBy] = {nil,{400038}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12945] = { + [questKeys.startedBy] = {nil,{400039}}, + [questKeys.finishedBy] = {nil,{400039}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12946] = { + [questKeys.startedBy] = {nil,{400019}}, + [questKeys.finishedBy] = {nil,{400019}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12947] = { + [questKeys.startedBy] = {nil,{400018}}, + [questKeys.finishedBy] = {nil,{400018}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12948] = { + [questKeys.objectives] = {{{30022,"Vladof the Butcher Defeated"}}}, + }, + [12950] = { + [questKeys.startedBy] = {nil,{400032}}, + [questKeys.finishedBy] = {nil,{400032}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12953] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Harpoon Guns to burn Dry Haystacks"), 0, {{"monster", 30066}}}, + }, + }, + [12954] = { + [questKeys.objectives] = {{{30014,"Yggdras Defeated"}}}, + [questKeys.preQuestSingle] = {9977}, + [questKeys.exclusiveTo] = {12932}, + [questKeys.nextQuestInChain] = 12933, + }, + [12957] = { + [questKeys.objectives] = {{{29384},{29369}}}, + }, + [12966] = { + [questKeys.preQuestGroup] = {12915,12956}, + [questKeys.requiredMinRep] = {1119,0}, + }, + [12967] = { + [questKeys.objectives] = {{{30120}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Ride Snorri"), 0, {{"monster", 30123}}}}, + }, + [12968] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12970] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Listen to Lok'lira's proposal"), 0, {{"monster", 29975}}}, + }, + }, + [12973] = { + [questKeys.objectives] = {{{30405,"Accompany Brann Bronzebeard to Frosthold."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in Brann's Flying Machine"), 0, {{"monster", 30134}}}}, + [questKeys.preQuestSingle] = {12880}, + }, + [12974] = { + [questKeys.exclusiveTo] = {12932,12954}, + }, + [12975] = { + [questKeys.preQuestSingle] = {12924}, + }, + [12977] = { + [questKeys.name] = "Hodir's Call", + [questKeys.objectives] = {{{29974,"Niffelem Forefather freed"},},nil,nil,nil,{{{30144,30135},30144,},},}, + [questKeys.preQuestSingle] = {12976}, + }, + [12978] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29370,29374,29380},29370,"Nidavelir Stormforged slain"}}}, + }, + [12979] = { + [questKeys.objectives] = {nil,nil,{{42204},},nil,nil,}, + }, + [12981] = { + [questKeys.preQuestSingle] = {12967}, + }, + [12982] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30186,30194,30195,30196},30186,"Ebon Blade Prisoners set free"}}}, + }, + [12985] = { + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Diamond Tipped Pick on the corpses of Dead Iron Giants"), 0, {{"monster", 29914},{"monster", 30163}}}}, + }, + [12987] = { + [questKeys.name] = "Placing Hodir's Helm", + [questKeys.requiredMinRep] = {1119,3000}, + }, + [12994] = { + [questKeys.requiredMinRep] = {1119,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Ethereal Worg's Fang"), 0, {{"monster", 32569}}}}, + }, + [12995] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29915,29919,30037,30243,30250,30409,30475,30483,30484,30632,30725,30751,29880},29880,"Ebon Blade Banner planted near vrykul corpse"}}}, + }, + [12996] = { + [questKeys.objectives] = {{{29352,"Kirgaraak Defeated"}}}, + }, + [12998] = { + [questKeys.objectives] = {nil,{{192181,"Attempt to secure the Heart of the Storm"}}}, + }, + [13001] = { + [questKeys.name] = "Forging Hodir's Spear", + [questKeys.requiredMinRep] = {1119,9000}, + }, + [13003] = { + [questKeys.name] = "How To Slay Your Dragon", + [questKeys.objectives] = {{{30275,"Wild Wyrm Slain"}}}, + [questKeys.preQuestSingle] = {13001}, + }, + [13005] = { + [questKeys.objectives] = {{{29984,"Iron Sentinel slain"},{29978,"Iron Dwarf Assailant slain"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Use the Horn of the Peaks and call on the Earthen to defeat Iron Dwarves and Iron Sentinels"), 0, {{"monster", 29984},{"monster",29978}}}}, + [questKeys.preQuestSingle] = {13057}, + }, + [13006] = { + [questKeys.name] = "A Viscous Cleaning", + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.preQuestSingle] = {12987}, + }, + [13007] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount Tamed Jormungar to fight Iron Colossus"),0,{{"monster", 30301},{"object", 192262}}},}, + }, + [13008] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30273,30268,30274},30273,}}}, + }, + [13010] = { + [questKeys.objectives] = {{{30105}},nil,nil,{1119,3000}}, + }, + [13011] = { + [questKeys.name] = "Culling Jorcuttar", + [questKeys.objectivesText] = {"King Jokkum in Dun Niffelem wants you to slay Jorcuttar in Hibernal Cavern."}, + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.requiredSourceItems] = {42733}, + [questKeys.extraObjectives] = {{{[zoneIDs.STORM_PEAKS]={{54.71,60.79}}}, Questie.ICON_TYPE_EVENT, l10n("Place Icemaw Bear Flank"), 0}} + }, + [13012] = { + [questKeys.startedBy] = {{30348}}, + [questKeys.finishedBy] = {{30348}}, + }, + [13013] = { + [questKeys.startedBy] = {{30357}}, + [questKeys.finishedBy] = {{30357}}, + }, + [13014] = { + [questKeys.startedBy] = {{30358}}, + [questKeys.finishedBy] = {{30358}}, + }, + [13015] = { + [questKeys.startedBy] = {{30359}}, + [questKeys.finishedBy] = {{30359}}, + }, + [13016] = { + [questKeys.startedBy] = {{30360}}, + [questKeys.finishedBy] = {{30360}}, + }, + [13017] = { + [questKeys.startedBy] = {{30531}}, + [questKeys.finishedBy] = {{30531}}, + }, + [13018] = { + [questKeys.startedBy] = {{30362}}, + [questKeys.finishedBy] = {{30362}}, + }, + [13019] = { + [questKeys.startedBy] = {{30363}}, + [questKeys.finishedBy] = {{30363}}, + }, + [13020] = { + [questKeys.startedBy] = {{30375}}, + [questKeys.finishedBy] = {{30375}}, + }, + [13021] = { + [questKeys.startedBy] = {{30536}}, + [questKeys.finishedBy] = {{30536}}, + }, + [13022] = { + [questKeys.startedBy] = {{30533}}, + [questKeys.finishedBy] = {{30533}}, + }, + [13023] = { + [questKeys.startedBy] = {{30534}}, + [questKeys.finishedBy] = {{30534}}, + }, + [13024] = { + [questKeys.startedBy] = {{30365}}, + [questKeys.finishedBy] = {{30365}}, + }, + [13025] = { + [questKeys.startedBy] = {{30367}}, + [questKeys.finishedBy] = {{30367}}, + }, + [13026] = { + [questKeys.startedBy] = {{30368}}, + [questKeys.finishedBy] = {{30368}}, + }, + [13027] = { + [questKeys.startedBy] = {{30369}}, + [questKeys.finishedBy] = {{30369}}, + }, + [13028] = { + [questKeys.startedBy] = {{30370}}, + [questKeys.finishedBy] = {{30370}}, + }, + [13029] = { + [questKeys.startedBy] = {{30371}}, + [questKeys.finishedBy] = {{30371}}, + }, + [13030] = { + [questKeys.startedBy] = {{30372}}, + [questKeys.finishedBy] = {{30372}}, + }, + [13031] = { + [questKeys.startedBy] = {{30373}}, + [questKeys.finishedBy] = {{30373}}, + }, + [13032] = { + [questKeys.startedBy] = {{30374}}, + [questKeys.finishedBy] = {{30374}}, + }, + [13033] = { + [questKeys.startedBy] = {{30364}}, + [questKeys.finishedBy] = {{30364}}, + }, + [13034] = { + [questKeys.preQuestSingle] = {}, + }, + [13035] = { + [questKeys.preQuestSingle] = {13057}, + }, + [13037] = { + [questKeys.objectives] = {{{30395}}}, + }, + [13038] = { + [questKeys.objectives] = {{{30448}}}, + [questKeys.preQuestSingle] = {13034}, + }, + [13039] = { + [questKeys.preQuestSingle] = {13036}, + }, + [13040] = { + [questKeys.preQuestSingle] = {13036}, + }, + [13042] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.objectives] = {{{30409,"Information beaten out of Apprentice Osterkilgr"},{30409}}}, + }, + [13043] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.startedBy] = {{30409},nil,{42772}}, + [questKeys.requiredSourceItems] = {}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Nergeld"), 0, {{"monster", 30403}}}, + }, + }, + [13044] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13008,13039,13040}, + }, + [13045] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Argent Skytalon"), 0, {{"monster", 30500}}}, + {{[zoneIDs.ICECROWN]={{86.85,76.61}}}, Questie.ICON_TYPE_EVENT, l10n("Drop Off Captured Crusader"), 0}, + }, + }, + [13046] = { + [questKeys.objectives] = {{{30422}}}, + [questKeys.requiredMinRep] = {1119,21000}, + }, + [13047] = { + [questKeys.preQuestGroup] = {13035,13005}, + [questKeys.objectives] = {{{30399,"Witness the Reckoning"}}}, + }, + [13048] = { + [questKeys.objectives] = {{{80000}}}, + [questKeys.preQuestGroup] = {13037,13038}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Attune the Lorehammer"), 0, {{"object", 192541},{"object", 192542},{"object", 192543},{"object", 192544},{"object", 192545},{"object", 192546}}}, + }, + }, + [13049] = { + [questKeys.preQuestGroup] = {13037,13038}, + }, + [13058] = { + [questKeys.preQuestGroup] = {13048,13049}, + [questKeys.extraObjectives] = { + {{[zoneIDs.STORM_PEAKS]={{64.4,46.7}}}, Questie.ICON_TYPE_OBJECT, l10n("Use the Lorehammer to travel back in time"), 0}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Defeat the North Wind"), 0, {{"monster", 30474}}}, + }, + }, + [13059] = { + [questKeys.objectives] = {nil,{{192560}},nil,nil,{{{30475},32821,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Volgur"), 0, {{"monster", 30483}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Brita"), 0, {{"monster", 30484}}}, + }, + }, + [13060] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Ricket for transportation"), 0, {{"monster", 29428}}}, + }, + }, + [13064] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Listen to Thorim's history"), 0, {{"monster", 29445}}}, + }, + }, + [13065] = { + [questKeys.startedBy] = {{30537}}, + [questKeys.finishedBy] = {{30537}}, + }, + [13066] = { + [questKeys.startedBy] = {{30535}}, + [questKeys.finishedBy] = {{30535}}, + }, + [13067] = { + [questKeys.startedBy] = {{30538}}, + [questKeys.finishedBy] = {{30538}}, + }, + [13068] = { + [questKeys.preQuestSingle] = {13141}, + }, + [13069] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 30337}}}}, + }, + [13071] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 30272}}}}, + }, + [13073] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Speak to Arch Druid Lilliandra for transportation to Moonglade"), 0, {{"monster", 30630}}}}, + }, + [13086] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Argent Cannon"), 0, {{"monster", 30236}}}, + }, + }, + [13091] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30725,29880,30632,30243,30250},30644,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Possess a Water Terror"), 0, {{"object", 192774}}}, + }, + }, + [13092] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.specialFlags] = 0, + }, + [13093] = { + [questKeys.preQuestSingle] = {13092}, + }, + [13098] = { + [questKeys.preQuestSingle] = {}, + }, + [13106] = { + [questKeys.preQuestSingle] = {12896,12897}, + [questKeys.exclusiveTo] = {13119,13120}, + }, + [13109] = { + [questKeys.preQuestSingle] = {13047}, + }, + [13110] = { + [questKeys.objectives] = {{{30202}}}, + [questKeys.preQuestSingle] = {13104}, + }, + [13117] = { + [questKeys.preQuestSingle] = {}, + }, + [13118] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13121] = { + [questKeys.objectives] = {nil,{{192861}}}, + }, + [13122] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13125] = { + [questKeys.preQuestGroup] = {13122,13118}, + }, + [13129] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Dip Kurzel's Blouse Scrap on the remains of Novos the Summoner"), 0, {{"monster", 26631}}}}, + }, + [13130] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13133] = { + [questKeys.objectives] = {{{30886}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Wake Slumbering Mjordin until you find Iskalder"), 0, {{"monster", 30718}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Iskalder delivered to The Bone Witch"), 0, {{"monster", 30232}}}, + }, + }, + [13134] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13135] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13136] = { + [questKeys.startedBy] = {{30597},nil,{43242}}, + [questKeys.objectives] = {nil,nil,{{43259}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13137] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Battlescar Signal Fire to summon Iskalder"), 0, {{"object", 193024}}}, + }, + }, + [13138] = { + [questKeys.preQuestSingle] = {13136}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Bag of Jagged Shards near Malykriss Furnace"), 0, {{"object", 193004}}}}, + }, + [13139] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13125,13130,13135}, + }, + [13140] = { + [questKeys.preQuestSingle] = {13136}, + }, + [13141] = { + [questKeys.objectives] = {{{30989,"Battle for Crusaders' Pinnacle"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Plant the Blessed Banner of the Crusade"), 0, {{"object", 193003}}}}, + }, + [13142] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Blow the War Horn of Jotunheim to challenge Overthane Balargarde"), 0, {{"object", 193028}}}, + }, + }, + [13143] = { + [questKeys.objectives] = {{{30894}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Lead a subdued Lithe Stalker to the cliff above Vereth the Cunning"), 0, {{"monster", 31049}}}}, + }, + [13144] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30689,31048},30689,}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13152,13211}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Free Burning Skeletons to destroy Chained Abominations"), 0, {{"object", 193060}}}}, + }, + [13145] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13146] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Drag Scourge Bombs to Lumbering Atrocities"), 0, {{"monster", 30920}}}, + }, + }, + [13147] = { + [questKeys.objectives] = {{{30922}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13149] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Plagued Grain Crates Dispelled: 0/1"), 0, {{"object", 190094}}}}, + }, + [13151] = { + [questKeys.objectives] = {{{26533,"Mal'Ganis Defeated"}}}, + }, + [13152] = { + [questKeys.preQuestSingle]= {}, + [questKeys.preQuestGroup] = {13134,13138,13140}, + [questKeys.objectives] = {{{30993,"Patches freed"},{30992,"Help Patches kill Doctor Sabnok"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Free Patches"), 0, {{"object", 193025}}}}, + }, + [13153] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13154,13156,13195,13196,13197,13198}, + }, + [13154] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13153,13156,13195,13196,13197,13198}, + }, + [13155] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13172,13174}, + }, + [13156] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13153,13154,13195,13196,13197,13198}, + }, + [13160] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13164] = { + [questKeys.preQuestSingle]= {}, + [questKeys.preQuestGroup] = {13161,13162,13163}, + }, + [13168] = { + [questKeys.triggerEnd] = {"Seize Control of an Eidolon Watcher", {[zoneIDs.ICECROWN]={{44.19,24.69}}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Eye of Dominion"), 0, {{"object", 193058}}}}, + }, + [13169] = { + [questKeys.objectives] = {{{30952,"Hungering Plaguehounds fed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13170] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13171] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13172] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13169,13170,13171}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Speak to Keritose Bloodblade to secure a Skeletal Gryphon"), 0, {{"monster", 30946}}}}, + }, + [13174] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13169,13170,13171}, + }, + [13177] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13179}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{30739,39019},39019,"Horde members slain"}}}, + }, + [13178] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13180}, + }, + [13179] = { + [questKeys.exclusiveTo] = {13177}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{30739,39019},39019,"Horde members slain"}}}, + }, + [13180] = { + [questKeys.exclusiveTo] = {13178}, + }, + [13181] = { + [questKeys.triggerEnd] = {"Victory in Lake Wintergrasp", {[zoneIDs.DALARAN]={{33,67.2}}}}, + }, + [13183] = { + [questKeys.triggerEnd] = {"Victory in Lake Wintergrasp", {[zoneIDs.DALARAN]={{58.2,25.6}}}}, + }, + [13185] = { + [questKeys.exclusiveTo] = {13223}, + }, + [13186] = { + [questKeys.exclusiveTo] = {13222}, + }, + [13190] = { + [questKeys.requiredSourceItems] = {43494}, + [questKeys.objectives] = {nil,{{193057,"Ahn'kahar Watcher Corpse Burned"}}}, + }, + [13191] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {{31106}}, + [questKeys.exclusiveTo] = {13192,13193,13194,13199,13200,13201,13202}, + }, + [13192] = { + [questKeys.exclusiveTo] = {13191,13193,13194,13199,13200,13201,13202}, + }, + [13193] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13191,13192,13194,13199,13200,13201,13202}, + }, + [13194] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13191,13192,13193,13199,13200,13201,13202}, + }, + [13195] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13196,13197,13198}, + }, + [13196] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13197,13198}, + }, + [13197] = { + [questKeys.finishedBy] = {{31108}}, + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13196,13198}, + }, + [13198] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13196,13197}, + }, + [13199] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13200,13201,13202}, + }, + [13200] = { + [questKeys.finishedBy] = {{31106}}, + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13201,13202}, + }, + [13201] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13200,13202}, + }, + [13202] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13200,13201}, + }, + [13203] = { + [questKeys.exclusiveTo] = {11528,13966}, + }, + [13204] = { + [questKeys.startedBy] = {{30329},nil,{43512}}, + }, + [13211] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13134,13138,13140}, + }, + [13214] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31191,31192,31193,31194,31195,31196,},31191}}}, + }, + [13215] = { + [questKeys.objectives] = {{{31222}}}, + }, + [13216] = { + [questKeys.objectives] = {{{31242}}}, + }, + [13217] = { + [questKeys.objectives] = {{{31271}}}, + }, + [13218] = { + [questKeys.objectives] = {{{31277}}}, + }, + [13219] = { + [questKeys.objectives] = {{{14688}}}, + }, + [13220] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Crusader Olakin's Remains at the Sanctum of Reanimation Slab"), 0, {{"object", 193090}}}}, + }, + [13221] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13222] = { + [questKeys.exclusiveTo] = {13186}, + }, + [13223] = { + [questKeys.exclusiveTo] = {13185}, + }, + [13226] = { + [questKeys.nextQuestInChain] = 13036, + }, + [13227] = { + [questKeys.nextQuestInChain] = 13036, + }, + [13228] = { + [questKeys.objectives] = {{{31273,"Dying Berserker Questioned"}}}, + [questKeys.childQuests] = {13230}, + [questKeys.preQuestSingle] = {13224}, + }, + [13229] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13230] = { + [questKeys.parentQuest] = 13228, + [questKeys.preQuestSingle] = {13228}, + }, + [13231] = { + [questKeys.objectives] = {{{31304,"Dying Soldier Questioned"}}}, + [questKeys.childQuests] = {13232}, + [questKeys.preQuestSingle] = {13225}, + }, + [13232] = { + [questKeys.objectives] = {{{31304,"Dying Soldiers Slain"}}}, + [questKeys.parentQuest] = 13231, + [questKeys.preQuestSingle] = {13231}, + }, + [13233] = { + [questKeys.triggerEnd] = {"Kill horde players in Icecrown", {[zoneIDs.ICECROWN]={{60.9,41.3}}}}, + [questKeys.preQuestSingle] = {13231}, + }, + [13234] = { + [questKeys.preQuestSingle] = {13228}, + [questKeys.triggerEnd] = {"Kill alliance players in Icecrown", {[zoneIDs.ICECROWN]={{60.9,41.3}}}}, + }, + [13235] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Margrave Dhakar to fight Morbidus"), 0, {{"monster", 31306}}}}, + }, + [13236] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31254,32414,31276},31329}}}, + }, + [13238] = { + [questKeys.preQuestSingle] = {13228}, + }, + [13239] = { + [questKeys.preQuestSingle] = {13238}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13240] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13241,13243,13244}, + }, + [13241] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13243,13244}, + }, + [13242] = { + [questKeys.preQuestSingle] = {12500}, + }, + [13243] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13241,13244}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{27744,28341},27744}}}, + }, + [13244] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13241,13243}, + }, + [13245] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13246] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13247] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13248] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13249] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13250] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13251,13252,13253,13254,13255,13256,14199}, + }, + [13251] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13252,13253,13254,13255,13256,14199}, + }, + [13252] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13253,13254,13255,13256,14199}, + }, + [13253] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13254,13255,13256,14199}, + }, + [13254] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13255,13256,14199}, + }, + [13255] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13256,14199}, + }, + [13256] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,14199}, + }, + [13258] = { + [questKeys.preQuestGroup] = {12938,13224}, + }, + [13260] = { + [questKeys.preQuestSingle] = {13228}, + }, + [13261] = { + [questKeys.preQuestSingle] = {13239}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13264] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13237}, + }, + [13265] = { + [questKeys.requiredSpell] = -59390, + }, + [13267] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Begin the assault!"), 0, {{"monster", 31650}}}}, + }, + [13268] = { + [questKeys.requiredSpell] = -59390, + }, + [13269] = { + [questKeys.requiredSpell] = -59390, + }, + [13270] = { + [questKeys.requiredSpell] = -59390, + }, + [13272] = { + [questKeys.requiredSpell] = -59390, + }, + [13273] = { + [questKeys.preQuestSingle] = {12928}, + [questKeys.sourceItemId] = 40971, + }, + [13274] = { + [questKeys.sourceItemId] = 40971, + }, + [13276] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13264}, + }, + [13277] = { + [questKeys.preQuestSingle] = {13237}, + }, + [13278] = { + [questKeys.preQuestSingle] = {13277}, + }, + [13279] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + }, + [13280] = { + [questKeys.preQuestSingle] = {13296}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Plant Alliance Battle Standard"), 0, {{"object", 193565}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get in the Jumpbot"), 0, {{"monster", 31736}}}, + }, + }, + [13281] = { + [questKeys.sourceItemId] = 44010, + [questKeys.preQuestSingle] = {13279}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + }, + [13283] = { + [questKeys.preQuestSingle] = {13293}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Plant Horde Battle Standard"), 0, {{"object", 193565}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get in the Jumpbot"), 0, {{"monster", 31770}}}, + }, + }, + [13284] = { + [questKeys.preQuestSingle] = {13341}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31701,31737},31701,"Alliance troops escorted to Ymirheim"}}}, + }, + [13285] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {}, + }, + [13286] = { + [questKeys.preQuestSingle] = {13231}, + }, + [13288] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13287}, + }, + [13289] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13288}, + }, + [13290] = { + [questKeys.preQuestSingle] = {13231}, + }, + [13291] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13292] = { + [questKeys.preQuestSingle] = {13291}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Frostbrood Skytalons Destroyed"}}}, + }, + [13293] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13294] = { + [questKeys.preQuestSingle] = {13287}, + }, + [13295] = { + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + }, + [13296] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13297] = { + [questKeys.sourceItemId] = 44010, + [questKeys.preQuestSingle] = {13295}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + }, + [13298] = { + [questKeys.preQuestSingle] = {13294}, + }, + [13300] = { + [questKeys.objectives] = {{{31397,"Saronite Mine Slave rescued"}}}, + [questKeys.preQuestSingle] = {13225}, + }, + [13301] = { + [questKeys.preQuestSingle] = {13340}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31832,31833},31832,"Horde troops escorted to Ymirheim"}}}, + }, + [13302] = { + [questKeys.objectives] = {{{31397,"Saronite Mine Slave rescued"}}}, + [questKeys.preQuestSingle] = {13224}, + }, + [13305] = { + [questKeys.preQuestSingle] = {13304}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Board Refurbished Demolisher"), 0, {{"monster", 32370}}}}, + }, + [13306] = { + [questKeys.preQuestSingle] = {13366}, + }, + [13307] = { + [questKeys.preQuestSingle] = {13306}, + }, + [13308] = { + [questKeys.preQuestSingle] = {13224,13225}, + }, + [13309] = { + [questKeys.preQuestSingle] = {13341}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Hop on the turret"), 0, {{"monster", 32227}}}}, + [questKeys.objectives] = {{{32222,"Skybreaker Infiltrators dropped"}}}, + }, + [13310] = { + [questKeys.preQuestSingle] = {13340}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Hop on the turret"), 0, {{"monster", 31884}}}}, + [questKeys.objectives] = {{{31882,"Skybreaker Infiltrators dropped"}}}, + }, + [13312] = { + [questKeys.preQuestGroup] = {13306,13367}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Rune of Distortion near Grimkor's Orb to summon Grimkor the Wicked"), 0, {{"object", 193622}}}}, + }, + [13313] = { + [questKeys.preQuestSingle] = {13306}, + }, + [13314] = { + [questKeys.preQuestSingle] = {13332}, + }, + [13315] = { + [questKeys.preQuestSingle] = {13288}, + }, + [13316] = { + [questKeys.preQuestSingle] = {13329}, + }, + [13318] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13315}, + }, + [13319] = { + [questKeys.preQuestSingle] = {13315}, + }, + [13320] = { + [questKeys.preQuestSingle] = {13315}, + }, + [13321] = { + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13322] = { + [questKeys.preQuestSingle] = {13321}, + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13323] = { + [questKeys.preQuestSingle] = {13318}, + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + }, + [13328] = { + [questKeys.preQuestSingle] = {13329}, + }, + [13329] = { + [questKeys.objectives] = {{{32467,"Skeletal Reaver bones dissolved"}}}, + [questKeys.preQuestGroup] = {13307,13312}, + }, + [13330] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13331] = { + [questKeys.preQuestSingle] = {13313}, + }, + [13332] = { + [questKeys.preQuestSingle] = {13345}, + }, + [13333] = { + [questKeys.preQuestSingle] = {13314}, + }, + [13334] = { + [questKeys.preQuestSingle] = {13332}, + }, + [13335] = { + [questKeys.objectives] = {{{32467,"Skeletal Reaver bones dissolved"}}}, + [questKeys.preQuestGroup] = {13334,13337}, + }, + [13336] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13337] = { + [questKeys.preQuestGroup] = {13332,13346}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Rune of Distortion near Grimkor's Orb to summon Grimkor the Wicked"), 0, {{"object", 193622}}}}, + }, + [13338] = { + [questKeys.preQuestSingle] = {13335}, + }, + [13339] = { + [questKeys.preQuestSingle] = {13335}, + }, + [13340] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13341] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13342] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13318}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13343] = { + [questKeys.objectives] = {{{32327,"Hourglass of Eternity protected from the Infinite Dragonflight."}}}, + }, + [13344] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13342}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13345] = { + [questKeys.sourceItemId] = 44459, + [questKeys.preQuestSingle] = {13318}, + }, + [13346] = { + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13347] = { + [questKeys.preQuestSingle] = {12499}, + }, + [13350] = { + [questKeys.preQuestSingle] = {13346}, + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13351] = { + [questKeys.preQuestSingle] = {13264}, + }, + [13352] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13351}, + }, + [13353] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13352}, + }, + [13354] = { + [questKeys.preQuestSingle] = {13351}, + }, + [13355] = { + [questKeys.preQuestSingle] = {13351}, + }, + [13356] = { + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13357] = { + [questKeys.preQuestSingle] = {13356}, + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13358] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13352}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13359] = { + [questKeys.preQuestSingle] = {13348}, + [questKeys.nextQuestInChain] = 13360, + }, + [13360] = { + [questKeys.preQuestSingle] = {13359}, + }, + [13361] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31395,32587,32588},32588,"The Prince's Destiny"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Pick it up"), 0, {{"object", 193980},{"object", 194023},{"object", 194024}}}}, + }, + [13363] = { + [questKeys.preQuestSingle] = {13362}, + }, + [13364] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tirion while wearing a Cultist Acolyte's Hood"), 0, {{"monster", 32239}}}}, + }, + [13365] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13358}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13366] = { + [questKeys.sourceItemId] = 44459, + [questKeys.preQuestSingle] = {13352}, + }, + [13367] = { + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13368] = { + [questKeys.preQuestSingle] = {13367}, + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13369] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Request a portal to Orgrimmar"), 0, {{"monster", 32346}}}}, + }, + [13372] = { + [questKeys.startedBy] = {{15989},nil,{44569}}, + }, + [13373] = { + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 0, {{"monster", 31839}}}}, + }, + [13375] = { + [questKeys.startedBy] = {{15989},nil,{44577}}, + }, + [13376] = { + [questKeys.preQuestSingle] = {13373}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 1, {{"monster", 31839}}}}, + [questKeys.objectives] = {{{32188},{32154},{31721}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13377] = { + [questKeys.objectives] = {{{32518,"Assist King Varian Wrynn"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Begin the assault!"), 0, {{"monster", 32401}}}}, + }, + [13379] = { + [questKeys.preQuestSingle] = {13239}, + }, + [13380] = { + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Karen No"), 0, {{"monster", 31648}}}}, + }, + [13382] = { + [questKeys.preQuestSingle] = {13380}, + [questKeys.objectives] = {{{32188},{32154},{31721}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13383] = { + [questKeys.preQuestSingle] = {13291}, + }, + [13386] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13225,12898}, + }, + [13390] = { + [questKeys.startedBy] = {{31237},{193195}}, + }, + [13394] = { + [questKeys.preQuestSingle] = {13393}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Board Refurbished Demolisher"), 0, {{"monster", 32370}}}}, + }, + [13395] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31254,32414,31276},31329}}}, + }, + [13398] = { + [questKeys.preQuestSingle] = {13396}, + }, + [13400] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31395,32587,32588},32588,"The Prince's Destiny"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Pick it up"), 0, {{"object", 193980},{"object", 194023},{"object", 194024}}}}, + }, + [13403] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tirion while wearing a Cultist Acolyte's Hood"), 0, {{"monster", 32239}}}}, + }, + [13404] = { + [questKeys.preQuestSingle] = {13380}, + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13405] = { + [questKeys.triggerEnd] = {"Victory in Strand of the Ancients", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,11338,14163}, + }, + [13406] = { + [questKeys.preQuestSingle] = {13373}, + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 1, {{"monster", 31839}}}}, + }, + [13407] = { + [questKeys.triggerEnd] = {"Victory in Strand of the Ancients", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,11342,14164}, + }, + [13408] = { + [questKeys.preQuestSingle] = {10143,10483}, + }, + [13409] = { + [questKeys.preQuestSingle] = {10124}, + }, + [13410] = { + [questKeys.preQuestSingle] = {10143,10483}, + }, + [13411] = { + [questKeys.preQuestSingle] = {10124}, + }, + [13413] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 1, {{"monster", 32548}}}}, + }, + [13414] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 1, {{"monster", 32548}}}}, + }, + [13415] = { + [questKeys.requiredSourceItems] = {41197,40971}, + }, + [13416] = { + [questKeys.requiredSourceItems] = {41197,40971}, + }, + [13418] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to the ship"), 1, {{"monster", 31081}}}}, + }, + [13419] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to the ship"), 1, {{"monster", 31085}}}}, + }, + [13420] = { + [questKeys.startedBy] = {nil,{193997},{44725}}, + [questKeys.requiredMinRep] = {1119,3000}, + }, + [13422] = { + [questKeys.preQuestSingle] = {12906}, + [questKeys.objectives] = {{{30146,"Exhausted Vrykul Disciplined"}}}, + [questKeys.exclusiveTo] = {13423,13424,13425}, + }, + [13423] = { + [questKeys.preQuestSingle] = {12971}, + [questKeys.exclusiveTo] = {13422,13424,13425}, + }, + [13424] = { + [questKeys.preQuestSingle] = {12997}, + [questKeys.exclusiveTo] = {13422,13423,13425}, + }, + [13425] = { + [questKeys.preQuestSingle] = {12925}, + [questKeys.exclusiveTo] = {13422,13423,13424}, + }, + [13426] = { + [questKeys.preQuestSingle] = {13285}, + [questKeys.nextQuestInChain] = 13034, + }, + [13427] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,14180}, + }, + [13428] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14181,14182,14183}, + }, + [13429] = { + [questKeys.triggerEnd] = {"Help Akama and Maiev enter the Black Temple.", {[zoneIDs.SHADOWMOON_VALLEY]={{71.05,46.11},{66.29,44.06}}}}, + [questKeys.exclusiveTo] = {10985}, + [questKeys.startedBy] = {{18528}}, + [questKeys.finishedBy] = {{18528}}, + [questKeys.preQuestSingle] = {10949}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Let Xi'ri know you're ready to battle"), 1, {{"monster", 18528}}}}, + }, + [13430] = { + [questKeys.exclusiveTo] = {10888}, + [questKeys.preQuestGroup] = {10884,10885,10886}, + }, + [13431] = { + [questKeys.exclusiveTo] = {10901}, + }, + [13432] = { + [questKeys.exclusiveTo] = {10445}, + }, + [13433] = { + [questKeys.startedBy] = {nil,{400041}}, + [questKeys.finishedBy] = {nil,{400041}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13434] = { + [questKeys.startedBy] = {nil,{400042}}, + [questKeys.finishedBy] = {nil,{400042}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13435] = { + [questKeys.startedBy] = {nil,{400040}}, + [questKeys.finishedBy] = {nil,{400040}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13436] = { + [questKeys.startedBy] = {nil,{400046}}, + [questKeys.finishedBy] = {nil,{400046}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13437] = { + [questKeys.startedBy] = {nil,{400045}}, + [questKeys.finishedBy] = {nil,{400045}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13438] = { + [questKeys.startedBy] = {nil,{400043}}, + [questKeys.finishedBy] = {nil,{400043}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13439] = { + [questKeys.startedBy] = {nil,{400044}}, + [questKeys.finishedBy] = {nil,{400044}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13440] = { + [questKeys.startedBy] = {nil,{194032}}, + [questKeys.finishedBy] = {nil,{194032}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13441] = { + [questKeys.startedBy] = {nil,{194033}}, + [questKeys.finishedBy] = {nil,{194033}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13442] = { + [questKeys.startedBy] = {nil,{194035}}, + [questKeys.finishedBy] = {nil,{194035}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13443] = { + [questKeys.startedBy] = {nil,{194036}}, + [questKeys.finishedBy] = {nil,{194036}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13444] = { + [questKeys.startedBy] = {nil,{194038}}, + [questKeys.finishedBy] = {nil,{194038}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13445] = { + [questKeys.startedBy] = {nil,{194040}}, + [questKeys.finishedBy] = {nil,{194040}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13446] = { + [questKeys.startedBy] = {nil,{194044}}, + [questKeys.finishedBy] = {nil,{194044}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13447] = { + [questKeys.startedBy] = {nil,{194045}}, + [questKeys.finishedBy] = {nil,{194045}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13448] = { + [questKeys.startedBy] = {nil,{400037}}, + [questKeys.finishedBy] = {nil,{400037}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13449] = { + [questKeys.startedBy] = {nil,{194049}}, + [questKeys.finishedBy] = {nil,{194049}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13450] = { + [questKeys.startedBy] = {nil,{194034}}, + [questKeys.finishedBy] = {nil,{194034}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13451] = { + [questKeys.startedBy] = {nil,{194037}}, + [questKeys.finishedBy] = {nil,{194037}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13452] = { + [questKeys.startedBy] = {nil,{400023}}, + [questKeys.finishedBy] = {nil,{400023}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13453] = { + [questKeys.startedBy] = {nil,{194039}}, + [questKeys.finishedBy] = {nil,{194039}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13454] = { + [questKeys.startedBy] = {nil,{194042}}, + [questKeys.finishedBy] = {nil,{194042}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13455] = { + [questKeys.startedBy] = {nil,{194043}}, + [questKeys.finishedBy] = {nil,{194043}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13456] = { + [questKeys.startedBy] = {nil,{400025}}, + [questKeys.finishedBy] = {nil,{400025}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13457] = { + [questKeys.startedBy] = {nil,{194046}}, + [questKeys.finishedBy] = {nil,{194046}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13458] = { + [questKeys.startedBy] = {nil,{194048}}, + [questKeys.finishedBy] = {nil,{194048}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13459] = { + [questKeys.startedBy] = {nil,{400026}}, + [questKeys.finishedBy] = {nil,{400026}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13460] = { + [questKeys.startedBy] = {nil,{400028}}, + [questKeys.finishedBy] = {nil,{400028}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13461] = { + [questKeys.startedBy] = {nil,{400033}}, + [questKeys.finishedBy] = {nil,{400033}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13462] = { + [questKeys.startedBy] = {nil,{400034}}, + [questKeys.finishedBy] = {nil,{400034}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13464] = { + [questKeys.startedBy] = {nil,{400020}}, + [questKeys.finishedBy] = {nil,{400020}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13465] = { + [questKeys.startedBy] = {nil,{400022}}, + [questKeys.finishedBy] = {nil,{400022}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13466] = { + [questKeys.startedBy] = {nil,{400021}}, + [questKeys.finishedBy] = {nil,{400021}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13467] = { + [questKeys.startedBy] = {nil,{400029}}, + [questKeys.finishedBy] = {nil,{400029}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13468] = { + [questKeys.startedBy] = {nil,{400030}}, + [questKeys.finishedBy] = {nil,{400030}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13469] = { + [questKeys.startedBy] = {nil,{400027}}, + [questKeys.finishedBy] = {nil,{400027}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13470] = { + [questKeys.startedBy] = {nil,{400024}}, + [questKeys.finishedBy] = {nil,{400024}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13471] = { + [questKeys.startedBy] = {nil,{400035}}, + [questKeys.finishedBy] = {nil,{400035}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13473] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13474] = { + [questKeys.startedBy] = {nil,{194081}}, + [questKeys.finishedBy] = {nil,{194081}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13481] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + }, + [13482] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + }, + [13485] = { + [questKeys.startedBy] = {{32801}}, + [questKeys.finishedBy] = {{32801}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13486] = { + [questKeys.startedBy] = {{32802}}, + [questKeys.finishedBy] = {{32802}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13487] = { + [questKeys.startedBy] = {{32803}}, + [questKeys.finishedBy] = {{32803}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13488] = { + [questKeys.startedBy] = {{32804}}, + [questKeys.finishedBy] = {{32804}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13489] = { + [questKeys.startedBy] = {{32805}}, + [questKeys.finishedBy] = {{32805}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13490] = { + [questKeys.startedBy] = {{32806}}, + [questKeys.finishedBy] = {{32806}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13491] = { + [questKeys.startedBy] = {{32807}}, + [questKeys.finishedBy] = {{32807}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13492] = { + [questKeys.startedBy] = {{32808}}, + [questKeys.finishedBy] = {{32808}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13493] = { + [questKeys.startedBy] = {{32809}}, + [questKeys.finishedBy] = {{32809}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13494] = { + [questKeys.startedBy] = {{32810}}, + [questKeys.finishedBy] = {{32810}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13495] = { + [questKeys.startedBy] = {{32811}}, + [questKeys.finishedBy] = {{32811}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13496] = { + [questKeys.startedBy] = {{32812}}, + [questKeys.finishedBy] = {{32812}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13497] = { + [questKeys.startedBy] = {{32813}}, + [questKeys.finishedBy] = {{32813}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13498] = { + [questKeys.startedBy] = {{32814}}, + [questKeys.finishedBy] = {{32814}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13499] = { + [questKeys.startedBy] = {{32815}}, + [questKeys.finishedBy] = {{32815}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13500] = { + [questKeys.startedBy] = {{32816}}, + [questKeys.finishedBy] = {{32816}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13501] = { + [questKeys.startedBy] = {nil,{400031}}, + [questKeys.finishedBy] = {nil,{400031}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13548] = { + [questKeys.startedBy] = {nil,{400036}}, + [questKeys.finishedBy] = {nil,{400036}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13549] = { + [questKeys.objectives] = {{{29327,"Female Frost Leopards recovered"},{29319,"Female Icepaw Bears recovered"},},nil,nil,nil,}, + }, + [13559] = { + [questKeys.preQuestSingle] = {12924}, + }, + [13592] = { -- HUMAN A Valiant's Field Training + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13744,13749,13760,13755}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13593] = { -- HUMAN Valiant Of Stormwind + [questKeys.preQuestSingle] = {13725,13713,13723,13724}, + [questKeys.exclusiveTo] = {13684,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13600] = { -- HUMAN A Worthy Weapon + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13603] = { -- HUMAN A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13600,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13604] = { + [questKeys.startedBy] = {{32867,32927},nil,{45506}}, + }, + [13607] = { + [questKeys.triggerEnd] = {"Entrance to Celestial Planetarium located",{[zoneIDs.THE_ARCHIVUM]={{60,46.3}},[zoneIDs.ULDUAR]={{-1,-1}}}}, + [questKeys.preQuestSingle] = {13604}, + }, + [13616] = { -- HUMAN The Edge Of Winter + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13600,13603,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13625] = { + [questKeys.objectives] = {{{33229,"Use Thrust on Melee Target"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"},{33272,"Use Charge on vulnerable Charge Target"}}}, + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13627] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {}, + }, + [13631] = { + [questKeys.startedBy] = {{32871},nil,{46052}}, + }, + [13633] = { + [questKeys.preQuestSingle] = {13667}, + }, + [13634] = { + [questKeys.preQuestSingle] = {13668}, + }, + [13662] = { + [questKeys.preQuestSingle] = {7722}, + [questKeys.requiredMinRep] = {59,3000}, + [questKeys.requiredMaxRep] = {59,9000}, + }, + [13663] = { + [questKeys.objectives] = {{{33513,"Black Knight's Gryphon taken"}},nil,{{45121},{45122}}}, + }, + [13664] = { + [questKeys.preQuestSingle] = {13700,13701}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33870}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Cavin"), 0, {{"monster", 33522}}}, + }, + }, + [13665] = { -- HUMAN The Grand Melee + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13745,13750,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33800}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13666] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13669,13670}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + }, + [13669] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13666,13670}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + }, + [13670] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13666,13669}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + }, + [13671] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679}, + [questKeys.parentQuest] = 0, + }, + [13672] = { + [questKeys.childQuests] = {}, + }, + [13673] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13674,13675,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + }, + [13674] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13673,13675,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + }, + [13675] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13673,13674,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + }, + [13676] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13680}, + [questKeys.parentQuest] = 0, + }, + [13677] = { + [questKeys.objectives] = {{{33229,"Use Thrust on Melee Target"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"},{33272,"Use Charge on vulnerable Charge Target"}}}, + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13678] = { + [questKeys.childQuests] = {}, + }, + [13679] = { + [questKeys.objectives] = {{{33448,"Argent Valiant defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire David"), 0, {{"monster", 33447}}}, + }, + }, + [13680] = { + [questKeys.objectives] = {{{33448,"Argent Valiant defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire David"), 0, {{"monster", 33447}}}, + }, + }, + [13681] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {}, + }, + [13682] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13697] = { -- ORC The Valiant's Charge + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13699] = { -- HUMAN The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33800}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13703] = { -- DWARF Valiant Of Ironforge + [questKeys.preQuestSingle] = {13699,13725,13724,13723}, + [questKeys.exclusiveTo] = {13685,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13704] = { -- GNOME Valiant Of Gnomeregan + [questKeys.preQuestSingle] = {13699,13725,13713,13724}, + [questKeys.exclusiveTo] = {13688,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13705] = { -- DRAENEI Valiant Of The Exodar + [questKeys.preQuestSingle] = {13699,13725,13713,13723}, + [questKeys.exclusiveTo] = {13690,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13706] = { -- NIGHT ELF Valiant Of Darnassus + [questKeys.preQuestSingle] = {13699,13724,13713,13723}, + [questKeys.exclusiveTo] = {13689,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13707] = { -- ORC Valiant Of Orgrimmar + [questKeys.preQuestSingle] = {13727,13728,13729,13731}, + [questKeys.exclusiveTo] = {13691,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13708] = { -- TROLL Valiant Of Sen'jin + [questKeys.preQuestSingle] = {13726,13728,13729,13731}, + [questKeys.exclusiveTo] = {13693,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13709] = { -- TAUREN Valiant Of Thunder Bluff + [questKeys.preQuestSingle] = {13726,13727,13729,13731}, + [questKeys.exclusiveTo] = {13694,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13710] = { -- UNDEAD Valiant Of Undercity + [questKeys.preQuestSingle] = {13726,13727,13728,13731}, + [questKeys.exclusiveTo] = {13695,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13711] = { -- BLOOD ELF Valiant Of Silvermoon + [questKeys.preQuestSingle] = {13726,13727,13728,13729}, + [questKeys.exclusiveTo] = {13696,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13713] = { -- DWARF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33795}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13714] = { -- DWARF The Valiant's Charge + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13715] = { -- GNOME The Valiant's Charge + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13716] = { -- DRAENEI The Valiant's Charge + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13717] = { -- NIGHT ELF The Valiant's Charge + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13718] = { -- HUMAN The Valiant's Charge + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13719] = { -- TROLL The Valiant's Charge + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13720] = { -- TAUREN The Valiant's Charge + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13721] = { -- UNDEAD The Valiant's Charge + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13722] = { -- BLOOD ELF The Valiant's Charge + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13723] = { -- GNOME The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33793}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13724] = { -- DRAENEI The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33790}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13725] = { -- NIGHT ELF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13726] = { -- ORC The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33799}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13727] = { -- TROLL The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13728] = { -- TAUREN The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33792}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13729] = { -- UNDEAD The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33798}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13731] = { -- BLOOD ELF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33791}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13741] = { -- DWARF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13742] = { -- DWARF A Worthy Weapon + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13741,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13743] = { -- DWARF The Edge Of Winter + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13741,13742,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13744] = { -- DWARF A Valiant's Field Training + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13592,13749,13755,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13745] = { -- DWARF The Grand Melee + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13665,13750,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33795}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13746] = { -- GNOME A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13747] = { -- GNOME A Worthy Weapon + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13746,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13748] = { -- GNOME The Edge Of Winter + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13746,13747,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13749] = { -- GNOME A Valiant's Field Training + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13592,13744,13755,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13750] = { -- GNOME The Grand Melee + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13665,13745,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33793}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13752] = { -- DRAENEI A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13753] = { -- DRAENEI A Worthy Weapon + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13754] = { -- DRAENEI The Edge Of Winter + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13755] = { -- DRAENEI A Valiant's Field Training + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13592,13744,13749,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13756] = { -- DRAENEI The Grand Melee + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13665,13745,13750,13761}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33790}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13757] = { -- NIGHT ELF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13758] = { -- NIGHT ELF A Worthy Weapon + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13759] = { -- NIGHT ELF The Edge Of Winter + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13760] = { -- NIGHT ELF A Valiant's Field Training + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13592,13744,13749,13755}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13761] = { -- NIGHT ELF The Grand Melee + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13665,13745,13750,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13762] = { -- ORC A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13763] = { -- ORC A Worthy Weapon + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13762,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13764] = { -- ORC The Edge Of Winter + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13762,13763,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13765] = { -- ORC A Valiant's Field Training + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13771,13776,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13767] = { -- ORC The Grand Melee + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13772,13777,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33799}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13768] = { -- TROLL A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13769] = { -- TROLL A Worthy Weapon + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13768,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13770] = { -- TROLL The Edge Of Winter + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13768,13769,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13771] = { -- TROLL A Valiant's Field Training + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13765,13776,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13772] = { -- TROLL The Grand Melee + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13767,13777,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13773] = { -- TAUREN A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13774] = { -- TAUREN A Worthy Weapon + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13773,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13775] = { -- TAUREN The Edge Of Winter + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13773,13774,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13776] = { -- TAUREN A Valiant's Field Training + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13765,13771,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13777] = { -- TAUREN The Grand Melee + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13767,13772,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33792}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13778] = { -- UNDEAD A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13779] = { -- UNDEAD A Worthy Weapon + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13780] = { -- UNDEAD The Edge Of Winter + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13781] = { -- UNDEAD A Valiant's Field Training + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13765,13771,13776,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13782] = { -- UNDEAD The Grand Melee + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13767,13772,13777,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33798}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13783] = { -- BLOOD ELF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13784] = { -- BLOOD ELF A Worthy Weapon + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13785] = { -- BLOOD ELF The Edge Of Winter + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13786] = { -- BLOOD ELF A Valiant's Field Training + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13765,13771,13776,13781}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13787] = { -- BLOOD ELF The Grand Melee + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13767,13772,13777,13782}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33791}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13788] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13789] = { + [questKeys.preQuestSingle] = {13700}, + }, + [13790] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794},{"monster", 33800},{"monster", 33793},{"monster", 33795},{"monster", 33790}}}}, + }, + [13791] = { + [questKeys.preQuestSingle] = {13700}, + }, + [13793] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794},{"monster", 33800},{"monster", 33793},{"monster", 33795},{"monster", 33790}}}}, + }, + [13795] = { + [questKeys.preQuestSingle] = {13702,13732,13733,13734,13735,13736,13737,13738,13739,13740}, + }, + [13809] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13810] = { + [questKeys.preQuestSingle] = {13701}, + }, + [13811] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796},{"monster", 33798},{"monster", 33799},{"monster", 33791},{"monster", 33792}}}}, + }, + [13812] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13813] = { + [questKeys.preQuestSingle] = {13701}, + }, + [13814] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796},{"monster", 33798},{"monster", 33799},{"monster", 33791},{"monster", 33792}}}}, + }, + [13816] = { + [questKeys.triggerEnd] = {"Entrance to Celestial Planetarium located",{[zoneIDs.THE_ARCHIVUM]={{60,46.3}},[zoneIDs.ULDUAR]={{-1,-1}}}}, + [questKeys.preQuestSingle] = {13817}, + }, + [13817] = { + [questKeys.preQuestSingle] = {}, + [questKeys.startedBy] = {{32867,32927},nil,{45857}}, + }, + [13819] = { + [questKeys.startedBy] = {{32871},nil,{46053}}, + }, + [13820] = { + [questKeys.startedBy] = {{33817}}, + [questKeys.finishedBy] = {{33434}}, + [questKeys.exclusiveTo] = {13627}, + }, + [13825] = { + [questKeys.startedBy] = {{8125}}, + [questKeys.finishedBy] = {{8125}}, + -- [questKeys.exclusiveTo] = {6610}, -- This is not ideal. You can only do 13825 if you completed 6610 prior to Wotlk. But now with Wotlk you do 6610 and then can not do 13825 + [questKeys.requiredSkill] = {185,225}, + }, + [13826] = { + [questKeys.startedBy] = {{12919}}, + [questKeys.finishedBy] = {{12919}}, + -- [questKeys.exclusiveTo] = {6607}, -- This is not ideal. You can only do 13826 if you completed 6607 prior to Wotlk. But now with Wotlk you do 6607 and then can not do 13826 + [questKeys.requiredSkill] = {356,225}, + }, + [13828] = { + [questKeys.objectives] = {{{33973,"Jeran Lockwood's advice"},{33229,"Use Thrust on Melee Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13829] = { + [questKeys.objectives] = {{{33973,"Jeran Lockwood's advice"},{33229,"Use Thrust on Melee Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13830] = { + [questKeys.triggerEnd] = {"Discover the Ghostfish mystery",{[zoneIDs.SHOLAZAR_BASIN]={{48.89,62.29,},},},}, + }, + [13832] = { + [questKeys.extraObjectives] = {{{[zoneIDs.THE_UNDERBELLY]={{46,68}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Corroded Jewelry")}}, + }, + [13833] = { + [questKeys.extraObjectives] = {{{[zoneIDs.BOREAN_TUNDRA]={{57.5,33.2},{62.2,64.2},{45,45}}}, Questie.ICON_TYPE_SLAY, l10n("Slay any beast, jump in any water location and fish in the Pool of Blood"), 0}}, + }, + [13834] = { + [questKeys.extraObjectives] = {{{[zoneIDs.WINTERGRASP]={{70,36},{63,60},{50,44},{37.6,36},{56,66},{42,75},{34.7,19.5}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Terror Fish"), 0}}, + }, + [13835] = { + [questKeys.objectives] = {{{33974,"Valis Windchaser's advice"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13836] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DALARAN]={{64,64}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Severed Arm")}}, + }, + [13837] = { + [questKeys.objectives] = {{{33972,"Rugan Steelbelly's advice"},{33272,"Charge vulnerable Charge Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13838] = { + [questKeys.objectives] = {{{33974,"Valis Windchaser's advice"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13839] = { + [questKeys.objectives] = {{{33972,"Rugan Steelbelly's advice"},{33272,"Charge vulnerable Charge Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13843] = { + [questKeys.startedBy] = {nil,{191761}}, + [questKeys.finishedBy] = {nil,{191761}}, + [questKeys.preQuestSingle] = {12889}, + [questKeys.requiredSpell] = -55252, + [questKeys.requiredSkill] = {profKeys.ENGINEERING,400}, + }, + [13846] = { + [questKeys.preQuestSingle] = {13700,13701}, + [questKeys.requiredMaxRep] = {1106,42000}, + }, + [13847] = { -- HUMAN At The Enemy's Gates + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13851,13852,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13850] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Melee attack Venomhide Ravasaur"), 0, {{"monster", 6508}}}}, + }, + [13851] = { -- DWARF At The Enemy's Gates + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13847,13852,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13852] = { -- GNOME At The Enemy's Gates + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13847,13851,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13854] = { -- DRAENEI At The Enemy's Gates + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13847,13851,13852,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13855] = { -- NIGHT ELF At The Enemy's Gates + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13847,13851,13852,13854}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13856] = { -- ORC At The Enemy's Gates + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13857,13858,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13857] = { -- TROLL At The Enemy's Gates + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13856,13858,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13858] = { -- TAUREN At The Enemy's Gates + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13856,13857,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13859] = { -- BLOOD ELF At The Enemy's Gates + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13856,13857,13858,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13860] = { -- UNDEAD At The Enemy's Gates + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13856,13857,13858,13859}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13861] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13862] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13863] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13864] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13887] = { + [questKeys.preQuestSingle] = {13850}, + }, + [13906] = { + [questKeys.preQuestSingle] = {13887}, + }, + [13929] = { + [questKeys.triggerEnd] = {"Roo taken to visit Grizzlemaw", {[zoneIDs.GRIZZLY_HILLS]={{50.7,43.9}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13930] = { + [questKeys.triggerEnd] = {"Keken taken to visit Grizzlemaw", {[zoneIDs.GRIZZLY_HILLS]={{50.7,43.9}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13931] = { + [questKeys.preQuestSingle] = {11409}, + }, + [13932] = { + [questKeys.preQuestSingle] = {11318}, + }, + [13933] = { + [questKeys.triggerEnd] = {"Roo taken to visit Bronze Dragonshrine", {[zoneIDs.DRAGONBLIGHT]={{72,39}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13934] = { + [questKeys.triggerEnd] = {"Keken taken to visit Bronze Dragonshrine", {[zoneIDs.DRAGONBLIGHT]={{72,39}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13937] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Buy a Small Paper Zeppelin"), 0, {{"monster", 29478}}}}, + [questKeys.objectives] = {{{33533,"Throw Small Paper Zeppelin to Roo"},},nil,nil,nil,}, + [questKeys.preQuestGroup] = {13954,13956}, + [questKeys.nextQuestInChain] = 13959, + [questKeys.exclusiveTo] = {13927}, + }, + [13938] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Buy a Small Paper Zeppelin"), 0, {{"monster", 29478}}}}, + [questKeys.objectives] = {{{33532,"Throw Small Paper Zeppelin to Kekek"},},nil,nil,nil,}, + [questKeys.preQuestGroup] = {13955,13957}, + [questKeys.nextQuestInChain] = 13960, + [questKeys.exclusiveTo] = {13926}, + }, + [13950] = { + [questKeys.triggerEnd] = {"Roo taken to visit Winterfin Retreat", {[zoneIDs.BOREAN_TUNDRA]={{43.5,13.6}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13951] = { + [questKeys.triggerEnd] = {"Keken taken to visit Snowfall Glade", {[zoneIDs.DRAGONBLIGHT]={{46,61},{44,70}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13954] = { + [questKeys.triggerEnd] = {"Roo taken to visit Alexstrasza the Life-Binder", {[zoneIDs.DRAGONBLIGHT]={{59.8,54.5}}}}, -- oracle orphan + [questKeys.preQuestGroup] = {13929,13933,13950}, + [questKeys.exclusiveTo] = {13927}, + }, + [13955] = { + [questKeys.triggerEnd] = {"Keken taken to visit Alexstrasza the Life-Binder", {[zoneIDs.DRAGONBLIGHT]={{59.8,54.5}}}}, -- wolvar orphan + [questKeys.preQuestGroup] = {13930,13934,13951}, + [questKeys.exclusiveTo] = {13926}, + }, + [13956] = { + [questKeys.triggerEnd] = {"Roo taken to visit The Etymidian", {[zoneIDs.UN_GORO_CRATER]={{47.38,9.21}}}}, -- oracle orphan + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{40.3,83.3}}}, Questie.ICON_TYPE_EVENT, l10n("Use the waygate to teleport to Un'goro Crater")}}, + [questKeys.preQuestGroup] = {13929,13933,13950}, + [questKeys.exclusiveTo] = {13927}, + }, + [13957] = { + [questKeys.triggerEnd] = {"Keken taken to visit Hemet Nesingwary", {[zoneIDs.SHOLAZAR_BASIN]={{27.1,58.8}}}}, -- wolvar orphan + [questKeys.preQuestGroup] = {13930,13934,13951}, + [questKeys.exclusiveTo] = {13926}, + }, + [13959] = { + [questKeys.preQuestSingle] = {13937}, + [questKeys.exclusiveTo] = {13927}, + }, + [13960] = { + [questKeys.preQuestSingle] = {13938}, + [questKeys.exclusiveTo] = {13926}, + }, + [13966] = { + [questKeys.exclusiveTo] = {11528,13203}, + }, + [14016] = { + [questKeys.specialFlags] = nil, + [questKeys.questFlags] = 128, + [questKeys.objectives] = {nil,nil,nil,nil,{{{35127},35127,"Investigate the Black Knight's Grave"}}}, + }, + [14023] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14024, + }, + [14024] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14028, + [questKeys.preQuestSingle] = {14023}, + }, + [14028] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14030, + [questKeys.preQuestSingle] = {14024}, + }, + [14030] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14033, + [questKeys.preQuestSingle] = {14028}, + }, + [14033] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14035, + [questKeys.preQuestSingle] = {14030}, + }, + [14035] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.preQuestSingle] = {14033}, + }, + [14037] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14040, + }, + [14040] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14041, + [questKeys.preQuestSingle] = {14037}, + }, + [14041] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14043, + [questKeys.preQuestSingle] = {14040}, + }, + [14043] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14044, + [questKeys.preQuestSingle] = {14041}, + }, + [14044] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14047, + [questKeys.preQuestSingle] = {14043}, + }, + [14047] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.preQuestSingle] = {14044}, + }, + [14048] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14051] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14053] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14054] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14055] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14058] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14059] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14060] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14061] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14062] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14064] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14065] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14076] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use your drum near a Mysterious Snow Mound"), 0, {{"object", 195309}}}}, + }, + [14079] = { + [questKeys.requiredRaces] = raceIDs.HUMAN, + }, + [14081] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [14082] = { + [questKeys.requiredRaces] = raceIDs.DRAENEI, + }, + [14083] = { + [questKeys.requiredRaces] = raceIDs.DWARF, + }, + [14084] = { + [questKeys.requiredRaces] = raceIDs.GNOME, + }, + [14085] = { + [questKeys.requiredRaces] = raceIDs.NIGHT_ELF, + }, + [14086] = { + [questKeys.requiredRaces] = raceIDs.ORC, + }, + [14087] = { + [questKeys.requiredRaces] = raceIDs.TAUREN, + }, + [14088] = { + [questKeys.requiredRaces] = raceIDs.TROLL, + }, + [14089] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14090] = { + [questKeys.objectives] = {{{29618,"Snowblind Follower captured"}}}, + }, + [14092] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use your drum near a Mysterious Snow Mound"), 0, {{"object", 195309}}}}, + }, + [14101] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{50.4,15.6}}}, Questie.ICON_TYPE_EVENT, l10n("Summon Drottinn Hrothgar using the Kvaldir War Horn")}}, + }, + [14102] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{43.8,24.6}}}, Questie.ICON_TYPE_EVENT, l10n("Summon Mistcaller Yngvar using the Mistcaller's Charm")}}, + }, + [14103] = { + [questKeys.specialFlags] = 1, + [questKeys.startedBy] = {{28701}}, + [questKeys.finishedBy] = {{28701}}, + }, + [14104] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{58.59,31.72}}}, Questie.ICON_TYPE_EVENT, l10n("Provoke Ornolf the Scarred using the Captured Kvaldir Banner")}}, + }, + [14107] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{32149},32149,"Fallen Hero's Spirit blessed"}}}, + }, + [14108] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 35117}}}}, + [questKeys.objectives] = {{{34925,"Hurl Spears at North Sea Kraken"},{35092}}}, + }, + [14112] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Take chum"), 0, {{"object", 195352}}}}, + }, + [14141] = { + [questKeys.objectives] = {{{29618,"Snowblind Follower captured"}}}, + }, + [14145] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Take chum"), 0, {{"object", 195353}}}}, + }, + [14151] = { + [questKeys.objectives] = {}, + [questKeys.requiredSpell] = -66659, + [questKeys.requiredSkill] = {171,450}, + [questKeys.triggerEnd] = {"Epic Gem Transmutes", {[zoneIDs.DALARAN]={{42.25,32.06}}}}, + }, + [14163] = { + [questKeys.triggerEnd] = {"Victory in the Isle of Conquest", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,11338,13405}, + }, + [14164] = { + [questKeys.triggerEnd] = {"Victory in the Isle of Conquest", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,11342,13407}, + }, + [14178] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14179,14180,13427}, + }, + [14179] = { + [questKeys.triggerEnd] = {"Victory in the Eye of the Storm", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,13427}, + }, + [14180] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,13427}, + }, + [14181] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14182,14183}, + }, + [14182] = { + [questKeys.triggerEnd] = {"Victory in Eye of the Storm", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14181,14183}, + }, + [14183] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14181,14182}, + }, + [14199] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256}, + }, + [14352] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [14349] = { + [questKeys.preQuestGroup] = {6022,6042,6133,6135,6136}, + }, + [14418] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14419] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14420] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14421] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14444] = { + [questKeys.objectives] = {{{27990,"Ask Krasus about the hilt's origins"}}}, + }, + [14483] = { + [questKeys.startedBy] = {{36296},nil,{49641}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [20438] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ask Shandy Glossgleam to lend you a tabard"), 0, {{"monster", 36856}}}}, + }, + [24216] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24221}, + }, + [24217] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 20, + }, + [24218] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24220}, + }, + [24219] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 20, + }, + [24220] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24218}, + }, + [24221] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24216}, + }, + [24223] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24224,24427}, + }, + [24224] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24223,24427}, + }, + [24225] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24226,24426}, + }, + [24226] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24225,24426}, + }, + [24426] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24225,24226}, + }, + [24427] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24223,24224}, + }, + [24428] = { + [questKeys.startedBy] = {{10184},nil,{49644}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24429] = { + [questKeys.startedBy] = {{10184},nil,{49643}}, + }, + [24431] = { + [questKeys.specialFlags] = 1, + }, + [24461] = { + [questKeys.sourceItemId] = 49723, + }, + [24498] = { + [questKeys.objectives] = {{{36494}},nil,nil,nil,{{{36764,36765,36766,36767},36764,"Alliance Slaves freed"}}}, + [questKeys.preQuestSingle] = {24683}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free the slave"), 1, {{"object", 202168}}}}, + }, + [24499] = { + [questKeys.objectives] = {{{36497},{36502}}}, + }, + [24500] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.finishedBy] = {{36955}}, + [questKeys.objectives] = {{{36955,"Find Jaina Proudmoore"},{36954,"Escape the Lich King"}}}, + }, + [24507] = { + [questKeys.objectives] = {{{36494}},nil,nil,nil,{{{36770,36771,36772,36773},36770,"Horde Slaves freed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free the slave"), 1, {{"object", 202168}}}}, + }, + [24510] = { + [questKeys.reputationReward] = {{1050,25}}, + }, + [24511] = { + [questKeys.objectives] = {{{36497},{36502}}}, + }, + [24535] = { + [questKeys.objectives] = {{{37205,"Thalorien's Blessing obtained"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Examine the remains"), 0, {{"monster", 37552}}}}, + }, + [24536] = { + [questKeys.objectives] = {{{3296}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Snagglebolt's Air Analyzer on perfumed guards"), 0, {{"monster", 3296}}}}, + }, + [24541] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab the package"), 0, {{"monster", 37671}}}}, + [questKeys.sourceItemId] = 49867, + }, + [24545] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.DEATH_KNIGHT, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {nil,{201742}}, + [questKeys.nextQuestInChain] = 24743, + [questKeys.requiredMinRep] = {1156,3000}, + }, + [24547] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24743}, + }, + [24548] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24757}, + [questKeys.nextQuestInChain] = 24912, + }, + [24549] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24912}, + [questKeys.nextQuestInChain] = 24748, + }, + [24553] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.requiredSourceItems] = {49879}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24555] = { + [questKeys.objectives] = {{{27990,"Ask Krasus about the hilt's origins"}}}, + }, + [24556] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ask Shandy Glossgleam to lend you a tabard"), 0, {{"monster", 36856}}}}, + }, + [24559] = { + [questKeys.sourceItemId] = 49723, + }, + [24563] = { + [questKeys.objectives] = {{{37205,"Thalorien's Blessing obtained"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Examine the remains"), 0, {{"monster", 37552}}}}, + }, + [24564] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24579] = { + [questKeys.exclusiveTo] = {24580,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24580] = { + [questKeys.exclusiveTo] = {24579,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24581] = { + [questKeys.exclusiveTo] = {24579,24580,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24582] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24583] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24584,24585,24586,24587,24588,24589,24590}, + }, + [24584] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24585,24586,24587,24588,24589,24590}, + }, + [24585] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24586,24587,24588,24589,24590}, + }, + [24586] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24587,24588,24589,24590}, + }, + [24587] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24588,24589,24590}, + }, + [24588] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24589,24590}, + }, + [24589] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24590}, + }, + [24590] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24589}, + }, + [24594] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24595] = { + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.requiredSourceItems] = {49879}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24596] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24597] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24598] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24609] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24610] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24611] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24612] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24613] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24614] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24615] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + -- Hackfix to hide the other two as a available once one of the random three dailies has been accepted + [24629] = { + [questKeys.exclusiveTo] = {24635, 24636}, + }, + [24635] = { + [questKeys.exclusiveTo] = {24629, 24636}, + }, + [24636] = { + [questKeys.exclusiveTo] = {24629, 24635}, + }, + [24638] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24645, 24647, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400048,"Chemical Wagon Destroyed"}},nil,nil,{{{37214},37214}}}, + [questKeys.requiredMaxLevel] = 13, + }, + [24645] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24647, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400049,"Chemical Wagon Destroyed"}},nil,nil,{{{37917},37917}}}, + [questKeys.requiredMaxLevel] = 22, + }, + [24647] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400052,"Chemical Wagon Destroyed"}},nil,nil,{{{37984},37984}}}, + [questKeys.requiredMaxLevel] = 31, + }, + [24648] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400053,"Chemical Wagon Destroyed"}},nil,nil,{{{38006},38006}}}, + [questKeys.requiredMaxLevel] = 40, + }, + [24649] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400054,"Chemical Wagon Destroyed"}},nil,nil,{{{38016},38016}}}, + [questKeys.requiredMaxLevel] = 50, + }, + [24650] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24651, 24652}, + [questKeys.objectives] = {nil,{{400055,"Chemical Wagon Destroyed"}},nil,nil,{{{38023},38023}}}, + [questKeys.requiredMaxLevel] = 60, + }, + [24651] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24650, 24652}, + [questKeys.objectives] = {nil,{{400056,"Chemical Wagon Destroyed"}},nil,nil,{{{38030},38030}}}, + [questKeys.requiredMaxLevel] = 70, + }, + [24652] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24650, 24651}, + [questKeys.objectives] = {nil,{{400057,"Chemical Wagon Destroyed"}},nil,nil,{{{38032},38032}}}, + }, + [24655] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{68,1976},1976}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Snagglebolt's Air Analyzer on perfumed guards"), 0, {{"monster", 68},{"monster", 1976}}}}, + }, + [24656] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab the package"), 0, {{"monster", 38065}}}}, + [questKeys.sourceItemId] = 49867, + }, + [24658] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24659, 24660, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400050,"Chemical Wagon Destroyed"}},nil,nil,{{{37214},37214}}}, + [questKeys.requiredMaxLevel] = 13, + }, + [24659] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24660, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400051,"Chemical Wagon Destroyed"}},nil,nil,{{{37917},37917}}}, + [questKeys.requiredMaxLevel] = 22, + }, + [24660] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400052,"Chemical Wagon Destroyed"}},nil,nil,{{{37984},37984}}}, + [questKeys.requiredMaxLevel] = 31, + }, + [24662] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400053,"Chemical Wagon Destroyed"}},nil,nil,{{{38006},38006}}}, + [questKeys.requiredMaxLevel] = 40, + }, + [24663] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400054,"Chemical Wagon Destroyed"}},nil,nil,{{{38016},38016}}}, + [questKeys.requiredMaxLevel] = 50, + }, + [24664] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24665, 24666}, + [questKeys.objectives] = {nil,{{400055,"Chemical Wagon Destroyed"}},nil,nil,{{{38023},38023}}}, + [questKeys.requiredMaxLevel] = 60, + }, + [24665] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24664, 24666}, + [questKeys.objectives] = {nil,{{400056,"Chemical Wagon Destroyed"}},nil,nil,{{{38030},38030}}}, + [questKeys.requiredMaxLevel] = 70, + }, + [24666] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24664, 24665}, + [questKeys.objectives] = {nil,{{400057,"Chemical Wagon Destroyed"}},nil,nil,{{{38032},38032}}}, + }, + [24683] = { + [questKeys.preQuestSingle] = {24499}, + }, + [24710] = { + [questKeys.preQuestSingle] = {24498}, + }, + [24711] = { + [questKeys.preQuestSingle] = {24710}, + }, + [24743] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24545}, + [questKeys.nextQuestInChain] = 24547, + }, + [24745] = { + [questKeys.startedBy] = {{36296},nil,{50320}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24748] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24549}, + [questKeys.objectives] = {{{36597,"Lich King Defeated"}}}, + }, + [24749] = { + [questKeys.preQuestSingle] = {24547}, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{36678,"Infuse Shadow's Edge with Unholy power then slay Putricide."}}}, + }, + [24756] = { + [questKeys.preQuestSingle] = {24749}, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{37955,"Infuse Shadow's Edge with Blood then defeat Lana'thel."}}}, + }, + [24757] = { + [questKeys.preQuestSingle] = {24756}, + [questKeys.nextQuestInChain] = 24548, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{36853,"Infuse Shadow's Edge with Frost then slay Sindragosa."}}}, + }, + [24792] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + }, + [24793] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + }, + [24795] = { + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24796] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24798] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24799] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24800] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24801] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24802] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.finishedBy] = {{37554}}, + [questKeys.objectives] = {{{37554,"Find Sylvanas Windrunner"},{36954,"Escape the Lich King"}}}, + }, + [24803] = { + [questKeys.specialFlags] = 1, + }, + [24815] = { + [questKeys.requiredMinRep] = {1156,3000}, + }, + [24819] = { -- A Change of Heart - Destruction friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24811}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24820] = { -- A Change of Heart - Vengeance friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24810}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24821] = { -- A Change of Heart - Courage friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24808}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24822] = { -- A Change of Heart - Wisdom friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24809}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24823] = { -- Path of Destruction - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24828,24811}, + }, + [24825] = { -- Path of Wisdom - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24809}, + }, + [24826] = { -- Path of Vengeance - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24810}, + }, + [24827] = { -- Path of Courage - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24808}, + }, + [24828] = { -- Path of Destruction - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24811}, + }, + [24829] = { -- Path of Destruction - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24823,24811}, + }, + [24830] = { -- Path of Wisdom - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24825,24809}, + }, + [24831] = { -- Path of Wisdom - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24830,24809}, + }, + [24832] = { -- Path of Vengeance - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24826,24810}, + }, + [24833] = { -- Path of Vengeance - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24832,24810}, + }, + [24834] = { -- Path of Courage - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24827,24808}, + }, + [24835] = { -- Path of Courage - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24834,24808}, + }, + [24836] = { -- A Change of Heart - Destruction honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24828,24811}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24837] = { -- A Change of Heart - wisdom honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24825,24809}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24838] = { -- A Change of Heart - vengeance honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24826,24810}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24839] = { -- A Change of Heart - courage honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24827,24808}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24840] = { -- A Change of Heart - Destruction revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24823,24811}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24841] = { -- A Change of Heart - Wisdom revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24830,24809}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24842] = { -- A Change of Heart - Vengeance revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24832,24810}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24843] = { -- A Change of Heart - Courage revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24834,24808}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24844] = { -- A Change of Heart - Destruction exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24829,24811}, + }, + [24845] = { -- A Change of Heart - Wisdom exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24831,24809}, + }, + [24846] = { -- A Change of Heart - Vengeance exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24833,24810}, + }, + [24847] = { -- A Change of Heart - Courage exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24835,24808}, + }, + [24857] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24869] = { -- 10man + [questKeys.startedBy] = {{38471}}, + [questKeys.finishedBy] = {{38471}}, + [questKeys.exclusiveTo] = {24870,24871,24872,24873,24874}, + }, + [24870] = { -- 10man + [questKeys.startedBy] = {{38491}}, + [questKeys.finishedBy] = {{38491}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.exclusiveTo] = {24869,24872,24873,24874}, + }, + [24871] = { -- 10man + [questKeys.startedBy] = {{38492}}, + [questKeys.finishedBy] = {{38492}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.exclusiveTo] = {24869,24872,24873,24874}, + }, + [24872] = { -- 10man + [questKeys.startedBy] = {{38589}}, + [questKeys.finishedBy] = {{38017}}, + [questKeys.exclusiveTo] = {24869,24870,24871,24873,24874}, + }, + [24873] = { -- 10man + [questKeys.startedBy] = {{38501}}, + [questKeys.finishedBy] = {{38501}}, + [questKeys.objectives] = {{{38501,"Return with two strains of Blight"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Slime Spray to get the Green Blight strain"), 0, {{"monster", 36627}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Gaseous Blight to get the Orange Blight strain"), 0, {{"monster", 36626}}}, + }, + [questKeys.exclusiveTo] = {24869,24870,24871,24872,24874}, + }, + [24874] = { -- 10man + [questKeys.startedBy] = {{38551}}, + [questKeys.finishedBy] = {{38558}}, + [questKeys.exclusiveTo] = {24869,24870,24871,24872,24873}, + }, + [24875] = { -- 25man + [questKeys.startedBy] = {{38471}}, + [questKeys.finishedBy] = {{38471}}, + [questKeys.exclusiveTo] = {24876,24877,24878,24879,24880}, + }, + [24876] = { -- 25man + [questKeys.startedBy] = {{38492}}, + [questKeys.finishedBy] = {{38492}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.exclusiveTo] = {24875,24878,24879,24880}, + }, + [24877] = { -- 25man + [questKeys.startedBy] = {{38491}}, + [questKeys.finishedBy] = {{38491}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.exclusiveTo] = {24875,24878,24879,24880}, + }, + [24878] = { -- 25man + [questKeys.startedBy] = {{38501}}, + [questKeys.finishedBy] = {{38501}}, + [questKeys.objectives] = {{{38501,"Return with two strains of Blight"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Slime Spray to get the Green Blight strain"), 0, {{"monster", 36627}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Gaseous Blight to get the Orange Blight strain"), 0, {{"monster", 36626}}}, + }, + [questKeys.exclusiveTo] = {24875,24876,24877,24879,24880}, + }, + [24879] = { -- 25man + [questKeys.startedBy] = {{38551}}, + [questKeys.finishedBy] = {{38558}}, + [questKeys.exclusiveTo] = {24875,24876,24877,24878,24880}, + }, + [24880] = { -- 25man + [questKeys.startedBy] = {{38589}}, + [questKeys.finishedBy] = {{38017}}, + [questKeys.exclusiveTo] = {24875,24876,24877,24878,24879}, + }, + [24912] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24548}, + [questKeys.nextQuestInChain] = 24549, + }, + [24914] = { + [questKeys.startedBy] = {{36597},nil,{53135}}, + [questKeys.preQuestSingle] = {24549}, + }, + [24915] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24916] = { + [questKeys.startedBy] = {{38606}}, + [questKeys.finishedBy] = {{38606}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24917] = { + [questKeys.startedBy] = {{38607}}, + [questKeys.finishedBy] = {{38607}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24918] = { + [questKeys.startedBy] = {{38609}}, + [questKeys.finishedBy] = {{38609}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24919] = { + [questKeys.startedBy] = {{38608}}, + [questKeys.finishedBy] = {{38608}}, + [questKeys.preQuestSingle] = {24914}, + }, + [25199] = { + [questKeys.preQuestSingle] = {25229}, + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.objectives] = {{{39368,"Salute the Drill Sergeant"},{39368,"Roar with the Drill Sergeant"},{39368,"Cheer with the Drill Sergeant"},{39368,"Dance with the Drill Sergeant"}}}, + }, + [25212] = { + [questKeys.startedBy] = {{39386}}, + [questKeys.finishedBy] = {{39386}}, + [questKeys.preQuestSingle] = {25199}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Board the Flying Machine"), 0, {{"monster", 39396}}}}, + }, + [25229] = { + [questKeys.requiredLevel] = 1, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39253,39623},39623,"Gnomes Motivated"},{{39624,39466,39675},39466,"Motivated Gnomes Brought to Captain Sparknozzle"}}}, + }, + [25239] = { -- Path of Might - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,25238}, + }, + [25240] = { -- Path of Might - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25239,25238}, + }, + [25242] = { -- Path of Might - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25240,25238}, + }, + [25246] = { -- A Change of Heart - might exalted - aronen + [questKeys.preQuestGroup] = {25242,25238}, + }, + [25247] = { -- A Change of Heart - might friendly - aronen + [questKeys.preQuestGroup] = {24815,25238}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [25248] = { -- A Change of Heart - might honored - aronen + [questKeys.preQuestGroup] = {25238,25239}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [25249] = { -- A Change of Heart - might revered - aronen + [questKeys.preQuestGroup] = {25240,25238}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [25283] = { + [questKeys.startedBy] = {{39678}}, + [questKeys.finishedBy] = {{39678}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25212,25295}, + [questKeys.nextQuestInChain] = 25500, + }, + [25285] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25199}, + [questKeys.nextQuestInChain] = 25289, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39715}}}}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39682,39715},39715,"Ejection System Tested"}}}, + }, + [25286] = { + [questKeys.preQuestSingle] = {25283}, + [questKeys.exclusiveTo] = {25500}, + [questKeys.questLevel] = -1, + }, + [25287] = { + [questKeys.questLevel] = -1, + }, + [25289] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25285}, + [questKeys.nextQuestInChain] = 25295, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39716}}}}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39713,39716},39716,"Left Leg Servos Tested"},{{39713,39716},39716,"Right Leg Servos Tested"},{{39713,39716},39716,"Evasive Maneuver System Tested"}}}, + }, + [25295] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25289}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39717}}}}, + [questKeys.objectives] = {{{39711,"Weapon System Tested"}}}, + }, + [25393] = { + [questKeys.requiredLevel] = 75, + [questKeys.questLevel] = -1, + }, + [25444] = { -- Da Perfect Spies + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Attune a Captured Frog"), 0, {{"monster", 40187}}}}, + }, + [25445] = { -- Zalazane's Fall + [questKeys.objectives] = {{{40502,"Zalazane Killed"}}}, + [questKeys.requiredLevel] = 75, + [questKeys.questLevel] = -1, + }, + [25446] = { -- Frogs Away! + [questKeys.nextQuestInChain] = 25461, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek and deploy the frogs on the white smoke"), 0, {{"monster", 40204}}}}, + }, + [25461] = { -- Trollin' For Volunteers + [questKeys.preQuestSingle] = {25446}, + [questKeys.nextQuestInChain] = 25470, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek for a ride"), 0, {{"monster", 40204}}}}, + }, + [25470] = { -- Lady Of Da Tigers + [questKeys.preQuestSingle] = {25461}, + }, + [25480] = { -- Dance Of De Spirits + [questKeys.nextQuestInChain] = 25495, + [questKeys.objectives] = {{{40352,"Dance of the Spirits"}}}, + }, + [25495] = { -- Preparin' For Battle + [questKeys.preQuestSingle] = {25480}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek for a ride"), 0, {{"monster", 40204}}}}, + }, + [25500] = { + [questKeys.preQuestSingle] = {25283}, + [questKeys.requiredMaxLevel] = 74, + [questKeys.exclusiveTo] = {25286}, + [questKeys.nextQuestInChain] = 25287, + }, + [26034] = { + [questKeys.preQuestSingle] = {26013}, + }, + [64845] = { + [questKeys.triggerEnd] = {"Victory in a battleground match", { + [zoneIDs.ALTERAC_MOUNTAINS] = {{39.4,82.2}}, + [zoneIDs.ARATHI_HIGHLANDS] = {{45.6,45.8}}, + [zoneIDs.ASHENVALE] = {{61.8,83.8}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + }, + + ----- Boosted character quests ----- + [70395] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Meet with your class trainer in Stormwind."}, + [questKeys.zoneOrSort] = 1519, + }, + [70396] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Meet with your class trainer in Orgrimmar."}, + [questKeys.zoneOrSort] = 1637, + }, + [70397] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400009, "Open the Survival Kit"}, {400010, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70398] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400011, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70401] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70411] = { + [questKeys.name] = "To the Dockmaster", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{26546,26548},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Use a scroll of teleportation from your inventory to reach the harbor and speak to the dock master."}, + [questKeys.requiredSourceItems] = {199335,199336}, + [questKeys.zoneOrSort] = 150, + }, + [70734] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400001, "Open the Survival Kit"}, {400002, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70735] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400005, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70736] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70737] = { + [questKeys.name] = "To the Zeppelin Master", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{26537,26539},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Use a scroll of teleportation from your inventory to reach the zeppelin tower and speak to the zeppelin master."}, + [questKeys.requiredSourceItems] = {199777,199778}, + [questKeys.zoneOrSort] = 1637, + }, + [70761] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400003, "Open the Survival Kit"}, {400004, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70762] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Meet with your Druid trainer in Thunder Bluff."}, + [questKeys.zoneOrSort] = 1638, + }, + [70764] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400006, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70765] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400008, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70865] = { + [questKeys.name] = "To Shattrath City", + [questKeys.startedBy] = {{376,914,928,3036,3324,3328,3344,3406,5495,5497,5505,5515,5885,5994,13283,20407,23128},nil,nil}, + [questKeys.finishedBy] = {{19684},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Shattrath City and speak to the mysterious Haggard War Veteran."}, + [questKeys.requiredSourceItems] = {200068}, + [questKeys.zoneOrSort] = 3897, + }, + [70869] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70870] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78136] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Meet with your class trainer in Stormwind."}, + [questKeys.zoneOrSort] = 1519, + }, + [78137] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Meet with your class trainer in Orgrimmar."}, + [questKeys.zoneOrSort] = 1637, + }, + [78138] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Meet with your Druid trainer in Thunder Bluff."}, + [questKeys.zoneOrSort] = 1638, + }, + [78140] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400009, "Open the Survival Kit"}, {400010, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78151] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400001, "Open the Survival Kit"}, {400002, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [78157] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400011, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78158] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400006, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [78164] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78166] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{26673},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Modera."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78167] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [78168] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil,nil}, + [questKeys.finishedBy] = {{26471},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Aethas Sunreaver."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78219] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Meet with your Death Knight trainer in Acherus: The Ebon Hold."}, + [questKeys.zoneOrSort] = 4281, + }, + [78220] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400062, "Open the Survival Kit"}, {400063, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78221] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400064, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78222] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400061, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78223] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{26673},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Modera."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78224] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400061, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78225] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{26471},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Aethas Sunreaver."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78752] = { + [questKeys.name] = "Proof of Demise: Titan Rune Protocol Gamma", + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"The Lich King's presence mustn't extend any further!","","The Council of Six has decreed that any strong enough fighter should take up arms and aid in keeping Azeroth safe!"}, + [questKeys.objectives] = {nil,nil,{{211206}}}, + [questKeys.zoneOrSort] = 4395, + [questKeys.questFlags] = 4232, + [questKeys.specialFlags] = 1, + [questKeys.reputationReward] = {{factionIDs.KIRIN_TOR,75}}, + }, + [78753] = { + [questKeys.name] = "Proof of Demise: Threats to Azeroth", + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"We must continue putting pressure on all fronts!","","The Council of Six has decreed that any willing fighter should take up arms and aid in keeping Azeroth safe!"}, + [questKeys.objectives] = {nil,nil,{{211207}}}, + [questKeys.zoneOrSort] = 4395, + [questKeys.questFlags] = 4232, + [questKeys.specialFlags] = 1, + [questKeys.reputationReward] = {{factionIDs.KIRIN_TOR,75}}, + }, + } +end + +function _QuestieWotlkQuestFixes:InsertMissingQuestIds() + + -- Alliance boosted quests + QuestieDB.questData[70395] = {} -- A New Beginning + QuestieDB.questData[70397] = {} -- Tools for Survival + QuestieDB.questData[70398] = {} -- Combat Training + QuestieDB.questData[70401] = {} -- Talented + QuestieDB.questData[70411] = {} -- To the Dockmaster + QuestieDB.questData[70870] = {} -- Talented + QuestieDB.questData[78136] = {} -- A New Beginning + QuestieDB.questData[78140] = {} -- Tools for Survival + QuestieDB.questData[78157] = {} -- Combat Training + QuestieDB.questData[78164] = {} -- Talented + QuestieDB.questData[78166] = {} -- To Northrend + QuestieDB.questData[78222] = {} -- Talented DK + QuestieDB.questData[78223] = {} -- To Northrend DK + + -- Horde boosted quests + QuestieDB.questData[70396] = {} -- A New Beginning + QuestieDB.questData[70734] = {} -- Tools for Survival + QuestieDB.questData[70735] = {} -- Combat Training + QuestieDB.questData[70736] = {} -- Talented + QuestieDB.questData[70737] = {} -- To the Zeppelin Master + QuestieDB.questData[70761] = {} -- Tools for Survival + QuestieDB.questData[70762] = {} -- A New Beginning + QuestieDB.questData[70764] = {} -- Combat Training + QuestieDB.questData[70765] = {} -- Talented + QuestieDB.questData[70869] = {} -- Talented + QuestieDB.questData[78137] = {} -- A New Beginning + QuestieDB.questData[78138] = {} -- A New Beginning + QuestieDB.questData[78151] = {} -- Tools for Survival + QuestieDB.questData[78158] = {} -- Combat Training + QuestieDB.questData[78167] = {} -- Talented + QuestieDB.questData[78168] = {} -- To Northrend + QuestieDB.questData[78224] = {} -- Talented DK + QuestieDB.questData[78225] = {} -- To Northrend DK + + -- Neutral boosted quests + QuestieDB.questData[70865] = {} -- To Shattrath City + QuestieDB.questData[78219] = {} -- A New Beginning + QuestieDB.questData[78220] = {} -- Tools for Survival + QuestieDB.questData[78221] = {} -- Combat Training + + -- P4 quests + QuestieDB.questData[78752] = {} -- Proof of Demise: Titan Rune Protocol Gamma + QuestieDB.questData[78753] = {} -- Proof of Demise: Threats to Azeroth +end diff --git a/.history/Database/Corrections/wotlkQuestFixes_20260222014150.lua b/.history/Database/Corrections/wotlkQuestFixes_20260222014150.lua new file mode 100644 index 0000000..f0491f1 --- /dev/null +++ b/.history/Database/Corrections/wotlkQuestFixes_20260222014150.lua @@ -0,0 +1,7087 @@ +---@class QuestieWotlkQuestFixes +local QuestieWotlkQuestFixes = QuestieLoader:CreateModule("QuestieWotlkQuestFixes") +local _QuestieWotlkQuestFixes = {} + +---@type QuestieDB +local QuestieDB = QuestieLoader:ImportModule("QuestieDB") +---@type ZoneDB +local ZoneDB = QuestieLoader:ImportModule("ZoneDB") +---@type QuestieProfessions +local QuestieProfessions = QuestieLoader:ImportModule("QuestieProfessions") +---@type QuestieCorrections +local QuestieCorrections = QuestieLoader:ImportModule("QuestieCorrections") +---@type l10n +local l10n = QuestieLoader:ImportModule("l10n") + + +QuestieCorrections.killCreditObjectiveFirst[11652] = true +QuestieCorrections.killCreditObjectiveFirst[12100] = true +QuestieCorrections.killCreditObjectiveFirst[12546] = true +QuestieCorrections.killCreditObjectiveFirst[12561] = true +QuestieCorrections.killCreditObjectiveFirst[12762] = true +QuestieCorrections.killCreditObjectiveFirst[12919] = true +QuestieCorrections.killCreditObjectiveFirst[13086] = true +QuestieCorrections.killCreditObjectiveFirst[13373] = true +QuestieCorrections.killCreditObjectiveFirst[13376] = true +QuestieCorrections.killCreditObjectiveFirst[13380] = true +QuestieCorrections.killCreditObjectiveFirst[13382] = true +QuestieCorrections.killCreditObjectiveFirst[13404] = true +QuestieCorrections.killCreditObjectiveFirst[13406] = true +QuestieCorrections.killCreditObjectiveFirst[24498] = true +QuestieCorrections.killCreditObjectiveFirst[24507] = true + +function QuestieWotlkQuestFixes:Load() + _QuestieWotlkQuestFixes:InsertMissingQuestIds() + + local questKeys = QuestieDB.questKeys + local raceIDs = QuestieDB.raceKeys + local classIDs = QuestieDB.classKeys + local factionIDs = QuestieDB.factionIDs + local zoneIDs = ZoneDB.zoneIDs + local sortKeys = QuestieDB.sortKeys + local profKeys = QuestieProfessions.professionKeys + local specKeys = QuestieProfessions.specializationKeys + + return { + [55] = { + [questKeys.objectives] = {{{1200}}}, + }, + [75] = { + [questKeys.specialFlags] = 0, + }, + [171] = { + [questKeys.startedBy] = {{14305},nil,nil}, + [questKeys.questLevel] = -1, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [172] = { + [questKeys.questLevel] = -1, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [176] = { + [questKeys.startedBy] = {nil,{68,156561}}, + }, + [236] = { + [questKeys.finishedBy] = {{31108}}, + [questKeys.exclusiveTo] = {13153,13154,13156,13195,13196,13197,13198}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [403] = { + [questKeys.startedBy] = {nil,{269}}, + }, + [434] = { + [questKeys.triggerEnd] = {"Overhear Lescovar and Marzon's Conversation", {[zoneIDs.STORMWIND_CITY]={{72.22,35.37}}}}, + }, + [508] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [558] = { + [questKeys.questLevel] = -1, + [questKeys.parentQuest] = 0, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [648] = { + [questKeys.triggerEnd] = {"Escort OOX-17/TN to safety", {[zoneIDs.TANARIS]={{61,53}}}}, + }, + [768] = { + [questKeys.requiredSkill] = {393,1}, + }, + [836] = { + [questKeys.triggerEnd] = {"Escort OOX-09/HL to safety", {[zoneIDs.THE_HINTERLANDS]={{57.81,50.2}}}}, + }, + [910] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [911] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [915] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [925] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1056] = { + [questKeys.nextQuestInChain] = 1057, + }, + [1132] = { + [questKeys.startedBy] = {{4455}}, + [questKeys.finishedBy] = {{4456}}, + }, + [1135] = { + [questKeys.startedBy] = {{4456}}, + [questKeys.finishedBy] = {{4456}}, + }, + [1198] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1252] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1253] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1284] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1361] = { + [questKeys.startedBy] = {{2229,4485,10540}}, + }, + [1468] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1479] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1558] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1678] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1679] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1680] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1681] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1682] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1687] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1716] = { + [questKeys.preQuestSingle] = {}, + }, + [1800] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1885] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [2204] = { + [questKeys.startedBy] = {nil,{112877}}, + }, + [2279] = { + [questKeys.preQuestSingle] = {2278}, + }, + [2358] = { + [questKeys.startedBy] = {{7009}}, + }, + [2701] = { + [questKeys.finishedBy] = {nil,{141980}}, + }, + [2767] = { + [questKeys.triggerEnd] = {"Escort OOX-22/FE to safety", {[zoneIDs.FERALAS]={{55.63,51.35}}}}, + }, + [2879] = { + [questKeys.requiredSourceItems] = {9255,9256,9257,9258}, + }, + [3602] = { + [questKeys.requiredSourceItems] = {}, + }, + [3641] = { + [questKeys.preQuestSingle] = {}, + }, + [3763] = { + [questKeys.startedBy] = {{6735}}, + [questKeys.exclusiveTo] = {3789,3790}, + }, + [3789] = { + [questKeys.startedBy] = {{6740}}, + [questKeys.exclusiveTo] = {3763,3790}, + }, + [3790] = { + [questKeys.startedBy] = {{5111}}, + [questKeys.exclusiveTo] = {3763,3789}, + }, + [4127] = { + [questKeys.startedBy] = {nil,{164909,186419}}, + }, + [4144] = { + [questKeys.specialFlags] = nil, + }, + [4362] = { + [questKeys.preQuestSingle] = {4361}, + }, + [4363] = { + [questKeys.preQuestSingle] = {4362}, + }, + [4485] = { + [questKeys.startedBy] = {{6179}}, + }, + [4486] = { + [questKeys.startedBy] = {{5149}}, + }, + [4740] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [4763] = { + [questKeys.objectives] = {nil,nil,{{12355}}}, + }, + [4771] = { + [questKeys.preQuestSingle] = {5522}, + }, + [4822] = { + [questKeys.questLevel] = -1, + [questKeys.parentQuest] = 0, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [5057] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [5305] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5306] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5307] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5502] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + [questKeys.preQuestGroup] = {915,925}, + }, + [5505] = { + [questKeys.startedBy] = {{11056}}, + [questKeys.finishedBy] = {{11056}}, + }, + [5531] = { + [questKeys.nextQuestInChain] = nil, + }, + [5721] = { + [questKeys.extraObjectives] = {{{[zoneIDs.EASTERN_PLAGUELANDS]={{35.01,84.05}}}, Questie.ICON_TYPE_EVENT, l10n("Place the Relic Bundle in the Town Square."),}}, + }, + [6185] = { + [questKeys.triggerEnd] = {"The Blightcaller Uncovered", {[zoneIDs.EASTERN_PLAGUELANDS]={{23.4,67.8}}}}, + }, + [6521] = { + [questKeys.startedBy] = {{36273}}, + [questKeys.finishedBy] = {{36273}}, + }, + [6522] = { + [questKeys.startedBy] = {{4421},nil,{17008}}, + [questKeys.finishedBy] = {{36273}}, + }, + [6963] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [6983] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [7023] = { + [questKeys.startedBy] = {{13435,23010}}, + }, + [7042] = { + [questKeys.startedBy] = {{13433}}, + }, + [7641] = { + [questKeys.preQuestSingle] = {7638,7670}, + }, + [7643] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {7642,7648}, + }, + [7704] = { + [questKeys.startedBy] = {nil,{179832},{18950}}, + }, + [8149] = { + [questKeys.objectives] = {nil,{{180204,"Place a tribute at Uther's Tomb"}}}, + [questKeys.extraObjectives] = {}, + }, + [8150] = { + [questKeys.objectives] = {nil,{{180205,"Place a tribute at Grom's Monument"}}}, + [questKeys.extraObjectives] = {}, + }, + [8166] = { + [questKeys.requiredMaxLevel] = 49, + }, + [8167] = { + [questKeys.requiredMaxLevel] = 39, + }, + [8168] = { + [questKeys.requiredMaxLevel] = 29, + }, + [8169] = { + [questKeys.requiredMaxLevel] = 49, + }, + [8170] = { + [questKeys.requiredMaxLevel] = 39, + }, + [8171] = { + [questKeys.requiredMaxLevel] = 29, + }, + [8346] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{15274},15274,"Mana Tap creature"}}}, + }, + [8551] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8552] = { + [questKeys.specialFlags] = 0, + }, + [8553] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8554] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8746] = { + [questKeys.objectives] = {{{15664,"Find Metzen the Reindeer and rescue him"}},nil,{{21211}}}, + }, + [8762] = { + [questKeys.objectives] = {{{15664,"Find Metzen the Reindeer and rescue him"}},nil,{{21211}}}, + }, + [8767] = { + [questKeys.requiredClasses] = classIDs.ROGUE + classIDs.WARRIOR + classIDs.HUNTER + classIDs.PALADIN + classIDs.DEATH_KNIGHT, + }, + [8871] = { + [questKeys.startedBy] = {}, + }, + [8872] = { + [questKeys.startedBy] = {}, + }, + [8874] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.startedBy] = {}, + }, + [8875] = { + [questKeys.startedBy] = {}, + }, + [8892] = { + [questKeys.preQuestSingle] = {}, + }, + [9078] = { + [questKeys.requiredClasses] = classIDs.ROGUE, + }, + [9154] = { + [questKeys.startedBy] = {{16241,16255}}, + [questKeys.finishedBy] = {{16281}}, + [questKeys.questLevel] = -1, + }, + [9189] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [9211] = { + [questKeys.specialFlags] = 1, + }, + [9213] = { + [questKeys.specialFlags] = 1, + }, + [9221] = { + [questKeys.specialFlags] = 1, + }, + [9222] = { + [questKeys.specialFlags] = 1, + }, + [9223] = { + [questKeys.specialFlags] = 1, + }, + [9224] = { + [questKeys.specialFlags] = 1, + }, + [9225] = { + [questKeys.specialFlags] = 1, + }, + [9226] = { + [questKeys.specialFlags] = 1, + }, + [9227] = { + [questKeys.specialFlags] = 1, + }, + [9228] = { + [questKeys.specialFlags] = 1, + }, + [9247] = { + [questKeys.finishedBy] = {{16281}}, + }, + [9358] = { + [questKeys.exclusiveTo] = {9252}, + }, + [9361] = { + [questKeys.requiredSourceItems] = {23270}, + }, + [9425] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [9467] = { + [questKeys.sourceItemId] = 24335, + [questKeys.requiredSourceItems] = {23682,24335}, + }, + [9629] = { + [questKeys.objectives] = {{{17326}}}, + }, + [9648] = { + [questKeys.name] = "Maatparm Mushroom Menagerie", + [questKeys.objectivesText] = {"Maatparm at Blood Watch wants 1 Aquatic Stinkhorn, 1 Blood Mushroom, 1 Ruinous Polyspore, and 1 Fel Cone Fungus."}, + }, + [9681] = { + [questKeys.startedBy] = {{17717,17718}}, + }, + [9876] = { + [questKeys.nextQuestInChain] = 9738, + }, + [10110] = { + [questKeys.preQuestSingle] = {13409}, + }, + [10173] = { + [questKeys.requiredSourceItems] = {}, + }, + [10180] = { + [questKeys.nextQuestInChain] = 10097, + }, + [10445] = { + [questKeys.exclusiveTo] = {13432}, + }, + [10464] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10465] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10466] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10467] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10468] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10469] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10470] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10471] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10472] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10473] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10474] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10475] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10667] = { + [questKeys.preQuestSingle] = {}, + }, + [10670] = { + [questKeys.preQuestSingle] = {}, + }, + [10702] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{21864,21878,21879,23020,21978},21978,},},}, + }, + [10703] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{21864,21878,21879,23020,21978},21978,},},}, + }, + [10769] = { + [questKeys.objectives] = {{{19823}},nil,{{31108}}}, + }, + [10776] = { + [questKeys.objectives] = {{{19823}},nil,{{31310}}}, + }, + [10888] = { + [questKeys.exclusiveTo] = {13430}, + }, + [10900] = { + [questKeys.requiredMaxLevel] = 70, + }, + [10901] = { + [questKeys.exclusiveTo] = {13431}, + }, + [10958] = { + [questKeys.preQuestSingle] = {10949}, + }, + [10985] = { + [questKeys.exclusiveTo] = {13429}, + }, + [11010] = { + [questKeys.requiredClasses] = classIDs.WARLOCK + classIDs.ROGUE + classIDs.MAGE + classIDs.PRIEST + classIDs.WARRIOR + classIDs.PALADIN + classIDs.HUNTER + classIDs.SHAMAN + classIDs.DEATH_KNIGHT, + }, + [11117] = { + [questKeys.startedBy] = {{23486}}, + [questKeys.finishedBy] = {{23486}}, + }, + [11118] = { + [questKeys.startedBy] = {{23486}}, + [questKeys.finishedBy] = {{23486}}, + }, + [11120] = { + [questKeys.startedBy] = {{24657}}, + [questKeys.finishedBy] = {{24657}}, + }, + [11122] = { + [questKeys.objectives] = {{{24468,"Kegs Delivered"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab a keg"), 0, {{"monster", 24364}}}}, + }, + [11137] = { + [questKeys.preQuestSingle] = {}, + }, + [11140] = { + [questKeys.requiredSourceItems] = {33040,33044}, + }, + [11153] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HOWLING_FJORD]={{28.1,42.2}}}, Questie.ICON_TYPE_EVENT, l10n("Wait for Harrowmeiser's zeppelin to dock"),}}, + }, + [11154] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Throw the firecrackers up to 20 yards away underneath a darkclaw bat to scare it"), 0, {{"monster", 23959}}}}, + }, + [11157] = { + [questKeys.objectives] = {{{23777,"Proto-Drake Egg destroyed"}},nil,nil,nil,{{{23688,23750},23688}}}, + }, + [11170] = { + [questKeys.objectives] = {{{24120,"North Fleet Reservist Infected"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Bat Handler Camille"), 0, {{"monster", 23816}}}}, + }, + [11175] = { + [questKeys.exclusiveTo] = {11176}, + }, + [11231] = { + [questKeys.sourceItemId] = 33284, + }, + [11238] = { + [questKeys.sourceItemId] = 33282, + }, + [11241] = { + [questKeys.triggerEnd] = {"Rescue Apothecary Hanes",{[zoneIDs.HOWLING_FJORD]={{78.72,37.23,},},},}, + }, + [11245] = { + [questKeys.requiredSourceItems] = {33311}, + }, + [11246] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23661,23662,23663,23664,23665,23666,23667,23668,23669,23670},23661,"Winterskorn Vrykul Dismembered"}}}, + [questKeys.requiredSourceItems] = {33311}, + }, + [11247] = { + [questKeys.requiredSourceItems] = {33311}, + }, + [11249] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Present the Vrykul Scroll of Ascension"), 0, {{"object", 186586}}}}, + }, + [11252] = { + [questKeys.preQuestSingle] = {}, + }, + [11257] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23661,23662,23663,23664,23665,23666,23667,23668,23669,23670},23661,"Winterskorn Vrykul Dismembered"}}}, + [questKeys.requiredSourceItems] = {33340}, + }, + [11258] = { + [questKeys.requiredSourceItems] = {33340}, + }, + [11259] = { + [questKeys.requiredSourceItems] = {33340}, + }, + [11260] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Present the Vrykul Scroll of Ascension"), 0, {{"object", 186586}}}}, + }, + [11265] = { + [questKeys.sourceItemId] = 33284, + }, + [11267] = { + [questKeys.sourceItemId] = 33282, + }, + [11279] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Spray Proto-Drake Egg"), 0, {{"monster", 23777}}}}, + }, + [11280] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Place Tillinghast's Plagued Meat on the ground"), 0, {{"monster", 24170}}}}, + }, + [11281] = { + [questKeys.objectives] = {{{24173}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Carved Horn"), 0, {{"object", 186599}}}}, + }, + [11282] = { + [questKeys.objectives] = {{{24161,"Oric the Baleful's Corpse Impaled"},{24016,"Ulf the Bloodletter's Corpse Impaled"},{24162,"Gunnar Thorvardsson's Corpse Impaled"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Slay Vrykul across the Forsaken blockade until they appear"), 0, {{"monster", 24015}}}}, + }, + [11284] = { + [questKeys.sourceItemId] = 33352, + }, + [11286] = { + [questKeys.preQuestSingle] = {}, + }, + [11296] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Break Riven Widow Cocoons to free captives"), 0, {{"monster", 24210}}}}, + }, + [11297] = { + [questKeys.nextQuestInChain] = 11298, + }, + [11298] = { + [questKeys.preQuestSingle] = {}, + }, + [11300] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill gladiators at the Ring of Judgement until Oluf the Violent appears"), 0, {{"monster", 24213},{"monster", 24214},{"monster", 24215}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Oluf the Violent"), 0, {{"monster", 23931}}} + }, + }, + [11301] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Use Grick's Bonesaw on corpses of Deranged Explorers"), 0, {{"monster", 23967}}}}, + }, + [11302] = { + [questKeys.preQuestSingle] = {11284}, + }, + [11306] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Fill the Empty Apothecary's Flask at the Cauldron of Vrykul Blood"),0,{{"object", 186656}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mix the Flask of Vrykul Blood with Harris's Plague Samples"),1,{{"object", 186657}}}, + }, + }, + [11307] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23564,24198,24199},23564,"Plagued Vrykul Sprayed"}}}, + }, + [11310] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23564,24198,24199},23564,"Plagued Vrykul exterminated"}}}, + }, + [11314] = { + [questKeys.objectives] = {{{23678,"Chill Nymphs Freed"}}}, + }, + [11317] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Meditate"), 0, {{"object", 186649}}}}, + }, + [11318] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{80001},{80002},{80003}}}, + }, + [11319] = { + [questKeys.objectives] = {{{23876,"Spores frozen"}}}, + }, + [11322] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Meditate"), 0, {{"object", 186649}}}}, + }, + [11329] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Search for Northern Barbfish"), 0, {{"object", 186659}}}}, + }, + [11332] = { + [questKeys.sourceItemId] = 33634, + [questKeys.preQuestSingle] = {11331}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Get a gryphon to ride and some bombs"), 0, {{"monster", 23859}}}}, + }, + [11335] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.exclusiveTo] = {11336,11337,11338,13405,14163}, + [questKeys.questFlags] = 4226, + }, + [11336] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.exclusiveTo] = {11335,11337,11338,13405,14163}, + }, + [11337] = { + [questKeys.triggerEnd] = {"Victory in the Eye of the Storm", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11338,13405,14163}, + }, + [11338] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,13405,14163}, + }, + [11339] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11340,11341,11342,13407,14164}, + }, + [11340] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11341,11342,13407,14164}, + }, + [11341] = { + [questKeys.triggerEnd] = {"Victory in Eye of the Storm", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11342,13407,14164}, + }, + [11342] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,13407,14164}, + }, + [11343] = { + [questKeys.triggerEnd] = {"Secrets of Wyrmskull Uncovered",{[zoneIDs.HOWLING_FJORD]={{60.13,50.8,},},},}, + }, + [11344] = { + [questKeys.triggerEnd] = {"Secrets of Nifflevar Uncovered",{[zoneIDs.HOWLING_FJORD]={{69.04,54.79,},},},}, + }, + [11346] = { + [questKeys.preQuestSingle] = {11284}, + [questKeys.sourceItemId] = 33778, + }, + [11348] = { + [questKeys.objectives] = {{{23725,"Test Rune of Command on normal Stone Giants"},{24334}}}, + }, + [11350] = { + [questKeys.sourceItemId] = 33778, + }, + [11352] = { + [questKeys.objectives] = {{{23725,"Test Rune of Command on normal Stone Giants"},{24334}}}, + }, + [11355] = { + [questKeys.preQuestSingle] = {11284}, + [questKeys.objectives] = {{{23725,"Runed Stone Giant Corpse Analyzed"},},nil,nil,nil,}, + }, + [11358] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Rune Sample"), 0, {{"object", 186718},}}}, + }, + [11365] = { + [questKeys.objectives] = {{{23725,"Runed Stone Giant Corpse Analyzed"},},nil,nil,nil,}, + }, + [11366] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Rune Sample"), 0, {{"object", 186718},}}}, + }, + [11390] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 24418},}}}, + }, + [11391] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 24418},}}}, + }, + [11392] = { + [questKeys.startedBy] = {nil,{186267}}, + [questKeys.finishedBy] = {nil,{186314}}, + }, + [11393] = { + [questKeys.exclusiveTo] = {11394,}, + }, + [11394] = { + [questKeys.preQuestSingle] = {}, + }, + [11401] = { + [questKeys.startedBy] = {nil,{186267}}, + [questKeys.finishedBy] = {nil,{186314}}, + }, + [11409] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{80004},{80005},{80006}}}, + }, + [11410] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Fresh Barbfish Bait"), 0, {{"object", 186770},}}}, + }, + [11412] = { + [questKeys.objectives] = {{{24510,"Kegs Delivered"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab a keg"), 0, {{"monster", 24527}}}}, + }, + [11414] = { + [questKeys.sourceItemId] = 33618, + }, + [11415] = { + [questKeys.sourceItemId] = 33618, + }, + [11416] = { + [questKeys.requiredSourceItems] = {33618}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Touch Talonshrike's Egg"), 0, {{"object", 186814},{"object", 190283},{"object", 190284}}}}, + }, + [11417] = { + [questKeys.requiredSourceItems] = {33618}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Touch Talonshrike's Egg"), 0, {{"object", 186814},{"object", 190283},{"object", 190284}}}}, + }, + [11418] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Feathered Charm on Steelfeather"), 0, {{"monster", 24514},}}}, + }, + [11421] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Commandeer Crykul Harpoon Gun"),0,{{"object",190512}}}}, + }, + [11428] = { + [questKeys.preQuestSingle] = {11316}, + }, + [11429] = { + [questKeys.objectives] = {nil,{{186863,"Alliance Banner Placed"}},nil,nil,{{{24640},24640,"Alliance Banner Defended"}}}, + }, + [11431] = { + [questKeys.startedBy] = {{24657}}, + [questKeys.finishedBy] = {{24657}}, + }, + [11436] = { + [questKeys.triggerEnd] = {"Go Harpoon Surfing",{[zoneIDs.HOWLING_FJORD]={{60.08,62.06,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Go Harpoon Surfing"),0,{{"object",186894}}}}, + }, + [11448] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Ask McGoyver for a ride to the Explorers' League Outpost"),0,{{"monster",24040}}}}, + }, + [11452] = { + [questKeys.startedBy] = {{24018},nil,{34090}}, + }, + [11453] = { + [questKeys.startedBy] = {{24018},nil,{34091}}, + }, + [11460] = { + [questKeys.objectives] = {{{24752,"Fjord Rock Falcon Fed"}}}, + }, + [11465] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Send your Trained Rock Falcon after it"), 0, {{"monster", 24746}}}}, + }, + [11466] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Olga"), 0, {{"monster", 24639}}}}, + }, + [11467] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Search for treasure"), 0, {{"object", 186944}}}}, + }, + [11468] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Send your Trained Rock Falcon after it"), 0, {{"monster", 24747}}}}, + }, + [11470] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Release the Trained Rock Falcon"), 0, {{"object", 190222}}}}, + }, + [11471] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Fight Jonah"), 0, {{"monster", 24742}}}}, + }, + [11472] = { + [questKeys.objectives] = {{{24797,"Reef Bull led to a Reef Cow"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Lure Reef Bull with Tasty Reef Fish"), 0, {{"monster", 24786},{"monster", 24804}}}}, + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11475] = { + [questKeys.preQuestSingle] = {11244}, + }, + [11478] = { + [questKeys.exclusiveTo] = {11448}, + }, + [11485] = { + [questKeys.triggerEnd] = {"Rocket Jump Mastered",{[zoneIDs.HOWLING_FJORD]={{75.08,64.55,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Rocket Jump standing on the rune next to it"),0,{{"object", 186958}}}}, + }, + [11489] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Collect Data near the blue relic near Gwendolyn's cart"),0,{{"object", 186958}}}}, + }, + [11491] = { + [questKeys.objectives] = {{{24718,"Lebronski Bluffed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Bluff on Lebronski after you've walked on his rug"),0,{{"object", 186958}}}}, + }, + [11494] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Put on the Golem suit"),0,{{"object", 186958}}}}, + }, + [11495] = { + [questKeys.objectives] = {{{24847,"Thundering Cave investigated"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Put on the Golem suit"),0,{{"object", 186958}}}}, + }, + [11528] = { + [questKeys.exclusiveTo] = {13203,13966}, + }, + [11529] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HOWLING_FJORD]={{37.2,74.8}}}, Questie.ICON_TYPE_OBJECT, l10n("Use The Big Gun at the front of the ship to slay Sorlof"),0,{{"monster", 24992}}}}, + }, + [11531] = { + [questKeys.specialFlags] = 1, + }, + [11567] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask Alanya for transportation"),0,{{"monster", 27933}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("After acquiring the Armor, get a ride back"),0,{{"monster", 28277}}}, + }, + }, + [11569] = { + [questKeys.preQuestSingle] = {11571}, + }, + [11570] = { + [questKeys.triggerEnd] = {"Escort Lurgglbr to safety",{[zoneIDs.BOREAN_TUNDRA]={{41.35,16.29,},},},}, + }, + [11574] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + [questKeys.exclusiveTo] = {11587}, + }, + [11575] = { + [questKeys.exclusiveTo] = {11587}, + }, + [11587] = { + [questKeys.preQuestSingle] = {}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Open the prison"),0,{{"object", 187561}}}}, + }, + [11590] = { + [questKeys.objectives] = {{{25316,"Captured Beryl Sorcerer"},},nil,nil,nil,}, + }, + [11591] = { + [questKeys.exclusiveTo] = {11592,11593,11594,}, + }, + [11592] = { + [questKeys.triggerEnd] = {"Successfully assisted Longrunner Proudhoof's assault.",{[zoneIDs.BOREAN_TUNDRA]={{49.45,26.49,},},},}, + }, + [11594] = { + [questKeys.preQuestSingle] = {}, + }, + [11596] = { + [questKeys.preQuestSingle] = {11585,11586}, + }, + [11606] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [11610] = { + [questKeys.objectives] = {nil,{{191088,"Elder Kesuk's ceremony completed"},{191089,"Elder Sagani's ceremony completed"},{191090,"Elder Takret's ceremony completed"}}}, + }, + [11611] = { + [questKeys.objectives] = {{{25284,"Warsong Peon Freed"}}}, + }, + [11631] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Imperean's Primal on Snarlfang's Totem"),0,{{"monster", 25455}}}}, + }, + [11632] = { + [questKeys.startedBy] = {nil,{187674},{34777}}, + }, + [11636] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to Garrosh's Landing"),0,{{"monster", 25459}}}}, + }, + [11637] = { + [questKeys.sourceItemId] = 34781, + }, + [11652] = { + [questKeys.objectives] = {{{25465}},nil,nil,nil,{{{27106,27107,27108,27110},27106,"Injured Warsong Soldier rescued"},{{25332,25333,25469,},25333,"Scourge Unit obliterated"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drive a tank"),0,{{"monster", 25334}}}}, + }, + [11653] = { + [questKeys.objectives] = {{{25432,"Crafty's Blaster Tested"},{25434,"Crafty's Blaster Tested"},},nil,nil,nil,}, + }, + [11654] = { + [questKeys.startedBy] = {{26115},nil,{34815}}, + [questKeys.preQuestSingle] = {11633}, + }, + [11656] = { + [questKeys.objectives] = {nil,{{188656,"The Serpent's Maw destroyed"},{188655,"The Kur Drakkar destroyed"},{188653,"Bor's Hammer destroyed"},{188657,"Bor's Anvil destroyed"}}}, + }, + [11664] = { + [questKeys.triggerEnd] = {"Mootoo Saved",{[zoneIDs.BOREAN_TUNDRA]={{31.19,54.44,},},},}, + }, + [11670] = { + [questKeys.objectives] = {{{25430,"Warsong Banner Planted in Magmothregar"},},nil,{{34870,nil},},nil,}, + [questKeys.requiredSourceItems] = {34869}, + }, + [11671] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Inquisitor Salrand"), 0, {{"monster", 25584}}}, + {{[zoneIDs.BOREAN_TUNDRA]={{41.8,39.1}}}, Questie.ICON_TYPE_EVENT, l10n("Use Beryl Shield Detonator"),}, + }, + }, + [11673] = { + [questKeys.triggerEnd] = {"Bonker Togglevolt escorted to safety.",{[zoneIDs.BOREAN_TUNDRA]={{53.84,13.85,},},},}, + }, + [11677] = { + [questKeys.objectives] = {nil,{{187879,"Plague Cauldron Neutralized"}}}, + }, + [11686] = { + [questKeys.objectives] = {nil,{{191697,"Scout Warsong Granary"},{191698,"Scout Torp's Farm"},{191699,"Scout Warsong Slaughterhouse"}}}, + }, + [11688] = { + [questKeys.preQuestSingle] = {}, + }, + [11690] = { + [questKeys.objectives] = {{{25596,"Kodo rescued"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the kodos to Farmer Torp"), 0, {{"monster", 25607}}}}, + }, + [11694] = { + [questKeys.objectives] = {nil,{{187879,"Plague Cauldron Neutralized"}}}, + }, + [11704] = { + [questKeys.preQuestSingle] = {11708}, + }, + [11705] = { + [questKeys.objectives] = {{{25618,"Varidus the Flenser Defeated"}}}, + }, + [11706] = { + [questKeys.objectives] = {{{25768},{25768,"Nerubian tunnels collapsed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use The Horn of Elemental Fury near the southern sinkhole"),0,{{"monster", 25664}}}}, + }, + [11708] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{25590,"Fizzcrank's tale listened to."}}}, + }, + [11711] = { + [questKeys.extraObjectives] = {{{[zoneIDs.BOREAN_TUNDRA]={{55.28,50.86}}}, Questie.ICON_TYPE_EVENT, l10n("Alliance Deserter Delivered")}}, + [questKeys.objectives] = {{{25761,"Alliance Deserter Delivered"}}}, + }, + [11712] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25814},25814,"Fizzcrank Gnome cursed & ported"}}}, + }, + [11713] = { + [questKeys.preQuestSingle] = {11796}, + }, + [11719] = { + [questKeys.triggerEnd] = {"Bloodspore Flower Used",{[zoneIDs.BOREAN_TUNDRA]={{52.07,52.46,},},},}, + }, + [11723] = { + [questKeys.objectives] = {{{25768},{25794,"Deploy the Shake-n-Quake 5000"}}}, + }, + [11728] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Throw Wolf Bait"),0,{{"monster", 25791}}}}, + }, + [11730] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25753,25758,25752},25753,"Robots reprogrammed"}}}, + }, + [11788] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),1,{{"object", 187984}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),2,{{"object", 187985}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),3,{{"object", 187986}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),4,{{"object", 187987}}}, + }, + }, + [11798] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use The Gearmaster's Manual"),0,{{"object", 190334}}}}, + }, + [11855] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [11865] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place fake fur near Caribou Traps"),0,{{"object", 187995},{"object", 187996},{"object", 187997},{"object", 187998},{"object", 187999},{"object", 188000},{"object", 188001},{"object", 188002},{"object", 188003},{"object", 188004},{"object", 188005},{"object", 188006},{"object", 188007},{"object", 188008}}}, + }, + }, + [11878] = { + [questKeys.objectives] = {{{25862,"Orphaned Mammoth Calf Delivered to Khu'nok"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver the orphan to Khu'nok"),0,{{"monster", 25861}}}}, + }, + [11879] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Wooly Mammoth Bull to assist in killing Kaw the Mammoth Destroyer"),0,{{"monster", 25743}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Kaw the Mammoth Destroyer"), 0, {{"monster", 25802}}}, + }, + }, + [11880] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [11881] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Jenny's Whistle near a crashed flying machine"),0,{{"object", 188019}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Return Jenny to safety without losing cargo"),0,{{"monster", 25849},}}, + }, + }, + [11887] = { + [questKeys.objectives] = {nil,nil,{{35276}}}, + }, + [11888] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [11890] = { + [questKeys.triggerEnd] = {"Fizzcrank Pumping Station environs inspected.",{[zoneIDs.BOREAN_TUNDRA]={{64.38,23.81}}}}, + }, + [11893] = { + [questKeys.objectives] = {{{24601}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Windsoul Totem to collect energy from killing Steam Ragers"),0,{{"monster", 24601}}}}, + }, + [11894] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Uncured Caribou Hide"),0,{{"object", 188086}}}}, + }, + [11895] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Storm Totem to summon Storm Tempest"),0,{{"monster", 26048}}}}, + }, + [11896] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25752,25753,25758},26082,}}}, + }, + [11898] = { + [questKeys.extraObjectives] = { + {{[zoneIDs.BOREAN_TUNDRA]={{86.55,28.59}}}, Questie.ICON_TYPE_EVENT, l10n("Enter teleporter to access Naxxanar"),}, + {{[zoneIDs.BOREAN_TUNDRA]={{86.80,30.12}}}, Questie.ICON_TYPE_EVENT, l10n("Use Naxxanar teleporters"),}, + }, + }, + [11899] = { + [questKeys.objectives] = {{{25814,"Gnome soul captured"},},nil,nil,nil,}, + [questKeys.preQuestSingle] = {11895}, + }, + [11905] = { + [questKeys.extraObjectives] = {{{[zoneIDs.THE_NEXUS_MAP]={{64.9,21.6}},[zoneIDs.THE_NEXUS]={{-1,-1}}}, Questie.ICON_TYPE_EVENT, l10n("Use Interdimensional Refabricator")}}, + }, + [11906] = { + [questKeys.preQuestSingle] = {11895}, + }, + [11907] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),1,{{"object", 187984}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),2,{{"object", 187985}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),3,{{"object", 187986}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),4,{{"object", 187987}}}, + }, + }, + [11908] = { + [questKeys.preQuestSingle] = {11902}, + }, + [11909] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Research the Gearmaster's Manual"),0,{{"object", 190334},{"object", 190335}}}}, + }, + [11913] = { + [questKeys.objectives] = {nil,{{188112,"Farshire Grain burnt"}}}, + }, + [11919] = { + [questKeys.objectives] = {{{26127,"Captured Nexus Drake"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the captured drake to Raelorasz"),0,{{"monster", 26117}}}}, + }, + [11930] = { + [questKeys.triggerEnd] = {"Secure Passage to Dragonblight",{[zoneIDs.DRAGONBLIGHT]={{10.29,53.83,},},},}, + }, + [11938] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25378,25383,25386,25387,25393,25609},25378,"En'kilah Casualty"}}}, + }, + [11940] = { + [questKeys.objectives] = {{{26127,"Captured Nexus Drake"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the captured drake to Raelorasz"),0,{{"monster", 26117}}}}, + }, + [11945] = { + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11946] = { + [questKeys.requiredSourceItems] = {35671}, + }, + [11951] = { + [questKeys.requiredSourceItems] = {35671}, + }, + [11956] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ride Dusk"),0,{{"monster", 26191}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Open the phylactery"),0,{{"object", 188141}}}, + }, + }, + [11957] = { + [questKeys.requiredSourceItems] = {35671,35690}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Keristrasza"),0,{{"monster", 26206}}}, + {{[zoneIDs.BOREAN_TUNDRA]={{22,22.6}}}, Questie.ICON_TYPE_EVENT, l10n("Use Arcane Power Focus"),}, + }, + }, + [11959] = { + [questKeys.objectives] = {{{26196,"Loguhn's Blood Smeared"}}}, + }, + [11960] = { + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11967] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Keristrasza"),0,{{"monster", 26206}}}}, + }, + [11969] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Raelorasz' Spark"),0,{{"object", 194151}}}}, + }, + [11982] = { + [questKeys.objectives] = {{{26270,"Iron Dwarf Operations Disrupted"}}}, + [questKeys.preQuestSingle] = {}, + }, + [11984] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Enlist Budd's help"), 0, {{"monster", 26422}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Escort Budd to the Drak'Zin Ruins"), 0, {{"monster", 32663}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Budd's Tag Troll spell to stun Drakkari trolls"), 0, {{"monster", 26425}, {"monster", 26447}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Capture stunned Drakkari trolls with Bounty Hunter's Cage"), 0, {{"monster", 26425}, {"monster", 26447}}}, + }, + }, + [11989] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Dull Carving Knife near Drakuru"),0,{{"monster", 26423}}}}, + }, + [11991] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Frozen Mojo"),0,{{"object", 188287}}}}, + [questKeys.requiredSourceItems] = {35797,35799}, + }, + [11995] = { + [questKeys.exclusiveTo] = {12439}, + }, + [12000] = { + [questKeys.preQuestSingle] = {}, + }, + [12007] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering Zim'bo's Mojo"),0,{{"object", 400047}}}}, + [questKeys.requiredSourceItems] = {35797,35836}, + }, + [12014] = { + [questKeys.sourceItemId] = 35837, + }, + [12017] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Tu'u'gwar's Bait"),0,{{"object", 188370}}}}, + }, + [12019] = { + [questKeys.finishedBy] = {{26170,198875}}, + [questKeys.extraObjectives] = { + {{[zoneIDs.BOREAN_TUNDRA]={{86.6,28.6}}}, Questie.ICON_TYPE_EVENT, l10n("Teleport to the top of Naxxanar"),}, + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Thassarian"), 0, {{"monster", 198875}}}, + }, + }, + [12020] = { + [questKeys.preQuestSingle] = {}, + }, + [12022] = { + [questKeys.preQuestSingle] = {}, + [questKeys.requiredSourceItems] = {33096}, + }, + [12027] = { + [questKeys.triggerEnd] = {"Help Emily and Mr. Floppy return to the camp",{[zoneIDs.GRIZZLY_HILLS]={{53.81,33.33,},},},}, + }, + [12028] = { + [questKeys.objectives] = {nil,{{188416}}}, + }, + [12029] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26458,26570,26582,26583},26612,}}}, + }, + [12032] = { + [questKeys.objectives] = {{{26648,"Oacha'noa's compulsion obeyed."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Commune with Oacha'noa"),0,{{"object", 188422}}}}, + }, + [12033] = { + [questKeys.preQuestSingle] = {11916}, + [questKeys.objectives] = {nil,{{188423,}},nil,nil,}, + }, + [12034] = { + [questKeys.preQuestSingle] = {12008}, + }, + [12035] = { + [questKeys.objectives] = {{{25623,"Harvest Collector Rewired"},},nil,nil,nil,}, + }, + [12036] = { + [questKeys.triggerEnd] = {"Pit of Narjun Explored",{[zoneIDs.DRAGONBLIGHT]={{26.26,50.01,},},},}, + }, + [12037] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Search for Kurzel"),0,{{"monster", 27909}}}}, -- to use -1 instead of 0 when questie supports showing extraobjectives when quest complete + }, + [12038] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26458,26570,26582,26583},26612,}}}, + }, + [12039] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12049] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Throw the Explosive Charges when it opens its mouth wide"),0,{{"monster", 26293}}}}, + }, + [12050] = { + [questKeys.preQuestGroup] = {12046,12047}, + }, + [12052] = { + [questKeys.preQuestGroup] = {12046,12047}, + }, + [12053] = { + [questKeys.objectives] = {{{26678,"Warsong Battle Standard Defended"}}}, + }, + [12055] = { + [questKeys.startedBy] = {{26349},nil,{36742}}, + [questKeys.preQuestSingle] = {12000}, + }, + [12056] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12059] = { + [questKeys.startedBy] = {{26349},nil,{36746}}, + [questKeys.preQuestSingle] = {11999}, + }, + [12063] = { + [questKeys.preQuestSingle] = {12036}, + }, + [12065] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188445}}}, + }, + }, + [12066] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188445}}}, + }, + }, + [12067] = { + [questKeys.startedBy] = {{26762},nil,{36756}}, + }, + [12068] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Sacred Mojo"),0,{{"object", 400066}}}}, + [questKeys.requiredSourceItems] = {35797,36758}, + }, + [12069] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free Roanauk Icemist"),0,{{"object", 188463}}}}, + }, + [12075] = { + [questKeys.preQuestSingle] = {}, + }, + [12076] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Zort's Scraper when covered in Corrosive Spit"),0,{{"monster", 26358},{"monster", 26359}}}}, + }, + [12078] = { + [questKeys.preQuestSingle] = {12077}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Sturdy Crates to capture the worm spawn"),0,{{"monster", 26359}}}}, + }, + [12079] = { + [questKeys.preQuestSingle] = {12075}, + }, + [12080] = { + [questKeys.preQuestSingle] = {12076}, + }, + [12082] = { + [questKeys.triggerEnd] = {"Harrison has escorted you to safety.",{[zoneIDs.GRIZZLY_HILLS]={{73.51,24.02,},},},}, + }, + [12083] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188474}}}, + }, + }, + [12084] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188474}}}, + }, + }, + [12085] = { + [questKeys.startedBy] = {{26815},nil,{36780}}, + }, + [12092] = { + [questKeys.preQuestSingle] = {12065}, + }, + [12095] = { + [questKeys.preQuestGroup] = {12089,12090,12091}, + }, + [12096] = { + [questKeys.preQuestSingle] = {12066}, + }, + [12097] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rokhan to call down Sarathstra"), 0, {{"monster", 26859}}},}, + }, + [12099] = { + [questKeys.objectives] = {{{26417,"Runed Giants Freed"}}}, + }, + [12100] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12105] = { + [questKeys.startedBy] = {{27547},nil,{36940}}, + }, + [12107] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Ley Line Focus Control Talisman"),1,{{"object", 188491}}}, + }, + }, + [12110] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Ley Line Focus Control Talisman"),1,{{"object", 188491}}}, + }, + }, + [12111] = { + [questKeys.objectives] = {{{26615,},{26482,}}}, + }, + [12112] = { + [questKeys.preQuestGroup] = {12050,12052}, + }, + [12117] = { + [questKeys.nextQuestInChain] = 11958, + }, + [12118] = { + [questKeys.nextQuestInChain] = 11958, + }, + [12121] = { + [questKeys.objectives] = {{{27199,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ring the gong outside Drakil'jin to summon Warlord Jin'arrak"),0,{{"object", 188510}}}, + }, + }, + [12124] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a drake to the top of the temple"),1,{{"monster", 26443}}}}, + }, + [12125] = { + [questKeys.objectives] = {{{26411}},nil,{{36828}}}, + }, + [12126] = { + [questKeys.objectives] = {{{26926}},nil,{{36836}}}, + }, + [12127] = { + [questKeys.objectives] = {{{26283}},nil,{{36846}}}, + }, + [12129] = { + [questKeys.sourceItemId] = 36849, + }, + [12132] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12125,12126,12127}, + }, + [12137] = { + [questKeys.sourceItemId] = 36859, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Speak with Gan'jo to return to life"),0,{{"monster", 26924}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Snow of Eternal Slumber on ancient Drakkari spirits"),0,{{"monster", 26811},{"monster", 26812}}}, + }, + }, + [12138] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26407,27017},26407,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Fight Lightning Sentries with Depleted War Golem deployed nearby"),0,{{"monster", 26407}}}, + }, + }, + [12146] = { + [questKeys.startedBy] = {{27004,27005},nil,{36855}}, + }, + [12147] = { + [questKeys.startedBy] = {{27004,27005},nil,{36856}}, + }, + [12150] = { + [questKeys.objectives] = {{{27003,}}}, + }, + [12151] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{57.09,76.26}}}, Questie.ICON_TYPE_EVENT, l10n("Blow the horn"),0}}, + }, + [12152] = { + [questKeys.requiredSourceItems] = {36870,36873,37063}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Place the Infused Drakkari Offering at the gongs outside Drakil'jin"),0,{{"object", 188510}}}, + }, + }, + [12157] = { + [questKeys.exclusiveTo] = {12171,12235,12297}, + }, + [12159] = { + [questKeys.objectives] = {{{26891,"Miner at Rest"}}}, + }, + [12165] = { + [questKeys.sourceItemId] = 36849, + }, + [12166] = { + [questKeys.objectives] = {{{26616,"Blighted Elk's corpse cleansed"},{26643,"Rabid Grizzly's corpse cleansed"},},nil,nil,nil,}, + }, + [12171] = { + [questKeys.exclusiveTo] = {12235,12297}, + }, + [12174] = { + [questKeys.exclusiveTo] = {12235,12298}, + }, + [12180] = { + [questKeys.preQuestSingle] = {12014}, + }, + [12181] = { + [questKeys.exclusiveTo] = {12188}, + }, + [12182] = { + [questKeys.exclusiveTo] = {}, + [questKeys.nextQuestInChain] = 12188, + }, + [12184] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26408,26409,26410,26414,27177},26408,}}}, + }, + [12185] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Intercept the message from Loken"),1,{{"object", 188596}}}, + }, + }, + [12188] = { + [questKeys.preQuestSingle] = {}, + }, + [12191] = { + [questKeys.preQuestSingle] = {}, + [questKeys.requiredSourceItems] = {33096}, + }, + [12198] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26407,27017},26407,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Fight Lightning Sentries with Depleted War Golem deployed nearby"),0,{{"monster", 26407}}}, + }, + }, + [12202] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26408,26409,26410,26414,27177},26408,}}}, + }, + [12203] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Intercept the message from Loken"),1,{{"object", 188596}}}, + }, + }, + [12204] = { + [questKeys.preQuestSingle] = {12099,12058}, + [questKeys.preQuestGroup] = {}, + }, + [12206] = { + [questKeys.objectives] = {{{27349,"Flask of Blight tested"}}}, + }, + [12207] = { + [questKeys.preQuestSingle] = {12413}, + }, + [12208] = { + [questKeys.preQuestSingle] = {12412}, + }, + [12210] = { + [questKeys.preQuestSingle] = {12212}, + }, + [12211] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27202,27203,27206,27207,27209,27210,27211,27232,27233,27234,27235,27236,27237,27246,27247},27203,"Scarlet Onslaught corpses picked clean"}}}, + }, + [12213] = { + [questKeys.preQuestSingle] = {12413}, + }, + [12214] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27206,27213,27296,27028},27296,}}}, + }, + [12218] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Commandeer a Forsaken Blight Spreader"),1,{{"monster", 26523}}}, + }, + }, + [12222] = { + [questKeys.preQuestSingle] = {12294}, + }, + [12223] = { + [questKeys.preQuestSingle] = {12294}, + }, + [12224] = { + [questKeys.preQuestGroup] = {12221,12140,12072}, + }, + [12229] = { + [questKeys.preQuestGroup] = {12207,12213}, + }, + [12231] = { + [questKeys.objectives] = {{{27274,"Orsonn's Story"},{27275,"Kodian's Story"}}}, + [questKeys.preQuestGroup] = {12207,12213}, + }, + [12232] = { + [questKeys.objectives] = {nil,{{188673,}}}, + }, + [12236] = { + [questKeys.preQuestGroup] = {12241,12242}, + [questKeys.objectives] = {{{26633,}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tur Ragepaw to summon Ursoc"),0,{{"monster", 27328}}}}, + }, + [12237] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27315,27336,27345,27341},27315,"Helpless Villager Rescued"}}}, + }, + [12238] = { + [questKeys.requiredSourceItems] = {35797,38303}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Enduring Mojo"),0,{{"object", 190629}}}}, + }, + [12240] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{68.29,74.29}}}, Questie.ICON_TYPE_EVENT, l10n("Release the termites"),0}}, + }, + [12241] = { + [questKeys.preQuestGroup] = {12229,12231}, + }, + [12242] = { + [questKeys.preQuestGroup] = {12229,12231}, + }, + [12244] = { + [questKeys.objectives] = {{{27354}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Shredder"),0,{{"monster", 27371}}}}, + }, + [12247] = { + [questKeys.objectives] = {{{27274,"Orsonn's Story"},{27275,"Kodian's Story"}}}, + }, + [12249] = { + [questKeys.objectives] = {{{26633,}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tur Ragepaw to summon Ursoc"),0,{{"monster", 27328}}}}, + }, + [12252] = { + [questKeys.objectives] = {{{27209,"Torturer LeCraft fully questioned"},{27209}}} + }, + [12255] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride Flamebringer"),0,{{"monster", 27292}}}}, + }, + [12256] = { + [questKeys.preQuestSingle] = {12468}, + }, + [12258] = { + [questKeys.preQuestSingle] = {12251}, + }, + [12259] = { + [questKeys.preQuestGroup] = {12256,12257}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride Flamebringer"),0,{{"monster", 27292}}}}, + }, + [12260] = { + [questKeys.objectives] = {{{27202,}}}, + }, + [12261] = { + [questKeys.preQuestSingle] = {12447}, + [questKeys.objectives] = {{{27430,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Destructive Ward"),0,{{"object", 188707}}}, + }, + }, + [12262] = { + [questKeys.preQuestSingle] = {12447}, + }, + [12263] = { + [questKeys.triggerEnd] = {"Uncover the Magmawyrm Resurrection Chamber",{[zoneIDs.DRAGONBLIGHT]={{31.76,30.46,},},},}, + }, + [12264] = { + [questKeys.preQuestSingle] = {12263}, + [questKeys.objectives] = {{{27358},{27362},{27363}}}, + }, + [12265] = { + [questKeys.preQuestSingle] = {12263}, + }, + [12269] = { + [questKeys.preQuestSingle] = {12275}, + }, + [12270] = { + [questKeys.objectives] = {{{27354}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Shredder"),0,{{"monster", 27423}}}}, + }, + [12271] = { + [questKeys.startedBy] = {{27209},nil,{37432}}, + [questKeys.preQuestSingle] = {12245}, + }, + [12272] = { + [questKeys.preQuestSingle] = {12275}, + }, + [12273] = { + [questKeys.objectives] = {{{27237,},{27235,},{27234,},{27236,}}}, + }, + [12274] = { + [questKeys.objectives] = {nil,{{188713,"Abbey bell rung"}},nil,nil,{{{27245},27245,"High Abbot spoken with"}}}, + }, + [12277] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the Mine Bomb here"),0,{{"object", 188711}}}}, + }, + [12284] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27475,27482,},27475,"Alliance units eliminated"}}}, + }, + [12288] = { + [questKeys.objectives] = {{{27463,"Wounded Skirmishers Healed"}}}, + }, + [12289] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27456,27463},27456,"Horde units eliminated"}}}, + }, + [12291] = { + [questKeys.objectives] = {{{27226,"Forgotten Peasant Questioned"},{27225,"Forgotten Rifleman Questioned"},{27224,"Forgotten Knight Questioned"},{27229,"Forgotten Footman Questioned"}}}, + }, + [12296] = { + [questKeys.objectives] = {{{27482,"Westfall Infantry Healed"}}}, + }, + [12297] = { + [questKeys.preQuestSingle] = {11250}, + [questKeys.exclusiveTo] = {12171,12235}, + }, + [12298] = { + [questKeys.exclusiveTo] = {12174,12235}, + }, + [12301] = { + [questKeys.objectives] = {nil,{{189304,"The Forgotten Redeemed"}}}, + }, + [12307] = { + [questKeys.preQuestSingle] = {}, + }, + [12308] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"),0,{{"monster", 27409}}}}, + [questKeys.triggerEnd] = {"Escape from Silverbrook",{[zoneIDs.GRIZZLY_HILLS]={{32.37,59.14}}}}, + [questKeys.objectives] = {}, + }, + [12316] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27500,27550},27550,"Horde killed in Venture Bay"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in the shredder if you have the key"),0,{{"monster", 27496}}}}, + }, + [12317] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27501,27549},27549,"Alliance killed in Venture Bay"}}}, + }, + [12323] = { + [questKeys.objectives] = {{{27570,"Venture Company Stragglers smoked out"}}}, + }, + [12324] = { + [questKeys.objectives] = {{{27570,"Venture Company Stragglers smoked out"}}}, + }, + [12321] = { + [questKeys.objectives] = {{{27577,"Righteous Sermon Heard"}}}, + }, + [12325] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get a ride to Thorson's Post"),0,{{"monster", 27661}}}}, + }, + [12326] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in"),0,{{"monster", 27587}}}}, + [questKeys.objectives] = {{{27607,"Plague Wagon Sabotaged"},{27588,"7th Legion Elite Safely Dropped Off"}}}, + }, + [12327] = { + [questKeys.triggerEnd] = {"Vision from the Past",{[zoneIDs.SILVERPINE_FOREST]={{46.53,76.18,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Gossamer Potion"),0,{{"object", 189972}}}}, + }, + [12330] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Tranquilizer Dart on Tatjana"),0,{{"monster", 27627}}}}, + [questKeys.triggerEnd] = {"Tatjana Delivered",{[zoneIDs.GRIZZLY_HILLS]={{57.77,41.7,},},},}, + }, + [12372] = { + [questKeys.objectivesText] = {"Devrestrasz at Wyrmrest Temple has asked you to slay 3 Azure Dragons, slay 5 Azure Drakes, and to destabilize the Azure Dragonshrine while riding a Wyrmrest Defender into battle."}, -- #4675 + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ride a Wyrmrest Defender to defend the Temple"), 0, {{"monster", 27629}}}, + }, + }, + [12412] = { + [questKeys.preQuestSingle] = {12259}, + }, + [12414] = { + [questKeys.objectives] = {{{26472,"Highland Mustangs returned"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the mustangs to Squire Percy"), 0, {{"monster", 26377}}}}, + }, + [12415] = { + [questKeys.objectives] = {{{26472,}}}, + }, + [12419] = { + [questKeys.startedBy] = {{27680},nil,{37833}}, + }, + [12423] = { + [questKeys.startedBy] = {{27547},nil,{37830}}, + }, + [12427] = { + [questKeys.preQuestSingle] = {12413}, + [questKeys.triggerEnd] = {"Ironhide defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.2,64.68,},},},}, + [questKeys.objectives] = {{{27715,}}}, + }, + [12428] = { + [questKeys.triggerEnd] = {"Torgg Thundertotem defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.05,64.55,},},},}, + [questKeys.objectives] = {{{27716,}}}, + }, + [12429] = { + [questKeys.triggerEnd] = {"Rustblood defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.12,64.62,},},},}, + [questKeys.objectives] = {{{27717,}}}, + }, + [12430] = { + [questKeys.triggerEnd] = {"Horgrenn Hellcleave defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.11,64.6,},},},}, + [questKeys.objectives] = {{{27718,}}}, + }, + [12431] = { + [questKeys.objectives] = {{{27727,}}}, + }, + [12432] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride the rocket!"), 0, {{"monster", 27593}}}}, + }, + [12434] = { + [questKeys.specialFlags] = 1, + [questKeys.preQuestSingle] = {12433}, + [questKeys.startedBy] = {{27565}}, + [questKeys.finishedBy] = {{27565}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12435] = { -- #4675 + [questKeys.name] = "Report to Lord Devrestrasz", + [questKeys.objectivesText] = {"Speak with Lord Devrestrasz at Wyrmrest Temple."}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a drake to the middle of the temple"), 0, {{"monster", 26949}}}}, + }, + [12437] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride the rocket!"), 0, {{"monster", 27593}}}}, + }, + [12439] = { + [questKeys.exclusiveTo] = {11995,12000}, + }, + [12446] = { + [questKeys.specialFlags] = 1, + [questKeys.preQuestSingle] = {12443}, + [questKeys.startedBy] = {{27495}}, + [questKeys.finishedBy] = {{27495}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12453] = { + [questKeys.preQuestSingle] = {12412}, + [questKeys.objectives] = {{{26369,}}}, + }, + [12456] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{64.6,77}}}, Questie.ICON_TYPE_EVENT, l10n("Use Skytalon Molts"),0}}, + }, + [12457] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Man the Chain Gun"),0,{{"monster", 27714}}},}, + }, + [12459] = { + [questKeys.objectives] = {{{26841,nil},{27808,nil},{27122,nil},},nil,nil,nil,}, + }, + [12462] = { + [questKeys.preQuestSingle] = {12326}, + }, + [12464] = { + [questKeys.preQuestSingle] = {}, + }, + [12467] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Wyrmbait"),0,{{"monster", 27843}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Destroy Icestorm"),0,{{"monster", 26287}}}, + }, + }, + [12468] = { + [questKeys.preQuestSingle] = {}, + }, + [12470] = { + [questKeys.objectives] = {{{27840,"Hourglass of Eternity protected"}}}, + }, + [12473] = { + [questKeys.objectives] = {{{27383,"Thel'zan the Duskbringer Defeated"}}}, + }, + [12478] = { + [questKeys.objectives] = {nil,{{190191,"Secrets of the Past Revealed"}}}, + }, + [12481] = { + [questKeys.objectives] = {{{24238,"Bjorn Halgurdsson insulted"},{24238,"Bjorn Halgurdsson defeated"}}}, + }, + [12484] = { + [questKeys.extraObjectives] = {{{[zoneIDs.GRIZZLY_HILLS]={{16.84,48.34}}}, Questie.ICON_TYPE_EVENT, l10n("Place Scourged Troll Mummy in the fire"),0}}, + }, + [12486] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [12491] = { + [questKeys.startedBy] = {{23872},nil,{38280}}, + }, + [12492] = { + [questKeys.startedBy] = {{23872},nil,{38281}}, + }, + [12498] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Slay Antiok's mount to make him vulnerable"),0,{{"monster", 28018}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Slay Grand Necrolord Antiok"),0,{{"monster", 28006}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"),0,{{"monster", 27996}}}, + }, + }, + [12500] = { + [questKeys.preQuestSingle] = {12498}, + }, + [12501] = { + [questKeys.finishedBy] = {{28039}}, + [questKeys.exclusiveTo] = {12563,12587}, + [questKeys.childQuests] = {12502,12509,12519,12541}, + }, + [12502] = { + [questKeys.parentQuest] = 12501, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Plant the Argent Crusade Banner"), 0, {{"object", 190522}}}}, + }, + [12503] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28023,28026,28246,28669,28022},28022,"Scourge at The Argent Stand destroyed"}}}, + }, + [12506] = { + [questKeys.triggerEnd] = {"Main building at the Altar of Sseratus investigated.",{[zoneIDs.ZUL_DRAK]={{40.32,39.46,},},},}, + }, + [12509] = { + [questKeys.parentQuest] = 12501, + }, + [12510] = { + [questKeys.sourceItemId] = 38323, + }, + [12512] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28133,28136},28133},{{28141,28142},28141},{{28143,28148},28143}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Escort rescued Crusaders to Dr. Rogers"), 0, {{"monster", 28125}}}}, + }, + [12516] = { + [questKeys.objectives] = {{{28068}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Muddled Mojo on Prophet of Sseratus before killing it"), 0, {{"monster", 28068}}}}, + }, + [12519] = { + [questKeys.parentQuest] = 12501, + }, + [12520] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + }, + [12521] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Take a ride to Sholazar Basin"), 0, {{"monster", 28160}}}}, + }, + [12527] = { + [questKeys.requiredSourceItems] = {38380}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Feed with Zul'Drak Rat"), 0, {{"monster", 28145}}}}, + }, + [12529] = { + [questKeys.requiredSourceItems] = {38619}, + }, + [12530] = { + [questKeys.requiredSourceItems] = {38619,38467}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Softknuckle Poker on Softknuckles"), 0, {{"monster", 28127}}}}, + }, + [12531] = { + [questKeys.requiredSourceItems] = {38621}, + }, + [12532] = { + [questKeys.requiredSourceItems] = {38621,38689}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12533,12534}, + }, + [12533] = { + [questKeys.requiredSourceItems] = {38621}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12529,12530}, + }, + [12534] = { + [questKeys.requiredSourceItems] = {38621}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12529,12530}, + }, + [12536] = { + [questKeys.requiredSourceItems] = {38512}, + [questKeys.triggerEnd] = {"Travel to Mistwhisper Refuge.",{[zoneIDs.SHOLAZAR_BASIN]={{46.31,39.88,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Captive Crocolisk"), 0, {{"monster", 28298}}}}, + }, + [12537] = { + [questKeys.requiredSourceItems] = {38510,38512}, + [questKeys.objectives] = {nil,{{190502,"Sabotage the Mistwhisper Weather Shrine"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the Skyreach Crystal Clusters"), 0, {{"object", 300213}}}}, + }, + [12538] = { + [questKeys.requiredSourceItems] = {38512}, + }, + [12539] = { + [questKeys.requiredSourceItems] = {38512}, + }, + [12540] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Injured Rainspeaker Oracle"), 0, {{"monster", 28217}}}}, + }, + [12541] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12544] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Soo-rahm's Incense"), 0, {{"object", 190507}}}}, + }, + [12545] = { + [questKeys.preQuestSingle] = {}, + }, + [12548] = { + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{40.35,83.08,}}}, Questie.ICON_TYPE_EVENT, l10n("Travel through the Waygate"),}}, + }, + [12549] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + }, + [12551] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12520,12549}, + }, + [12555] = { + [questKeys.objectives] = {{{28274,"Plague Sprayers webbed and destroyed"}}}, + }, + [12557] = { + [questKeys.objectives] = {nil,nil,{{38386},{38339},{38340},{38346}}}, + }, + [12561] = { + [questKeys.requiredSpell] = 54197, + }, + [12563] = { + [questKeys.finishedBy] = {{28039}}, + [questKeys.exclusiveTo] = {12501,12587}, + [questKeys.childQuests] = {12541,12564,12568,12585}, + }, + [12564] = { + [questKeys.parentQuest] = 12563, + }, + [12568] = { + [questKeys.parentQuest] = 12563, + [questKeys.objectives] = {nil,nil,nil,nil,{{{28260,28156},28260,"Argent Footman Corpse Incinerated"}}}, + }, + [12569] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Sandfern Disguise near the fallen log"), 0, {{"object", 190545}}}}, + }, + [12570] = { + [questKeys.triggerEnd] = {"Escort the Injured Rainspeaker Oracle to Rainspaker Canopy",{[zoneIDs.SHOLAZAR_BASIN]={{52.79,59.36}}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Start the escort"), 0, {{"monster", 28217}}}}, + }, + [12571] = { + [questKeys.requiredSourceItems] = {38622}, + }, + [12572] = { + [questKeys.requiredSourceItems] = {38622}, + }, + [12573] = { + [questKeys.sourceItemId] = 38622, + [questKeys.requiredSourceItems] = {38622,40364}, + [questKeys.objectives] = {{{28315,"Extend Peace Offering to Shaman Vekjik"}}}, + }, + [12574] = { + [questKeys.requiredSourceItems] = {38623}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12572,12573}, + }, + [12575] = { + [questKeys.requiredSourceItems] = {38623}, + }, + [12576] = { + [questKeys.requiredSourceItems] = {38623}, + }, + [12577] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12575,12576}, + }, + [12578] = { + [questKeys.requiredSourceItems] = {38624}, + [questKeys.triggerEnd] = {"Travel to Mosswalker Village.",{[zoneIDs.SHOLAZAR_BASIN]={{75.07,51.88,},},},}, + }, + [12579] = { + [questKeys.requiredSourceItems] = {38624}, + }, + [12580] = { + [questKeys.requiredSourceItems] = {38624}, + [questKeys.objectives] = {{{28113,"Mosswalker Victims Rescued"}}}, + }, + [12584] = { + [questKeys.preQuestGroup] = {12552}, + }, + [12585] = { + [questKeys.parentQuest] = 12563, + }, + [12587] = { + [questKeys.exclusiveTo] = {12501,12563}, + [questKeys.childQuests] = {12541,12588,12591,12594}, + }, + [12588] = { + [questKeys.objectives] = {nil,{{190550,"Ancient Dirt Mounds Investigated"}}}, + }, + [12589] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + [questKeys.objectives] = {{{28054,"Shot apple on Lucky Wilhelm's Head"}}}, + }, + [12591] = { + [questKeys.objectives] = {nil,{{190555,"Nerubian Tunnels Collapsed"}}}, + }, + [12595] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + }, + [12596] = { + [questKeys.preQuestSingle] = {12740}, + [questKeys.preQuestGroup] = {}, + }, + [12598] = { + [questKeys.objectives] = {nil,{{190555,"Nerubian Tunnels Sealed"}}}, + }, + [12601] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12602] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12603] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + }, + [12604] = { + [questKeys.preQuestSingle] = {12501,12563,12587}, + }, + [12605] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Break the egg"), 0, {{"monster", 28408}}}}, + }, + [12606] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28415,28413},28415}}}, + }, + [12607] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28379,28374},28379,}}}, + }, + [12615] = { + [questKeys.preQuestSingle] = {12516}, + }, + [12620] = { + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{49.64,37.41,}}}, Questie.ICON_TYPE_EVENT, l10n("Use Freya's Horn atop of the Glimmering Pillar"),}}, + }, + [12621] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Listen to what the Avatar of Freya has to say"), 0, {{"monster", 27801}}}}, + }, + [12622] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Kill Jin'Alai Trolls until their leaders appear"), 0, {{"monster", 28388},{"monster", 28504},{"object", 193768},{"object", 193769},{"object", 193770}}}}, + }, + [12629] = { + [questKeys.preQuestSingle] = {12637}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12643}, + [questKeys.nextQuestInChain] = 12648, + }, + [12630] = { + [questKeys.objectives] = {{{28519,"Hair Samples Collected"},},nil,nil,nil,}, + }, + [12631] = { + [questKeys.startedBy] = {nil,nil,{38660}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12633}, + [questKeys.nextQuestInChain] = 12637, + }, + [12632] = { + [questKeys.objectives] = {{{28404}}}, + }, + [12633] = { + [questKeys.startedBy] = {nil,nil,{38673}}, + [questKeys.preQuestSingle] = {12238}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12631}, + [questKeys.nextQuestInChain] = 12638, + }, + [12634] = { + [questKeys.preQuestGroup] = {12520,12549}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Pull Sturdy Vines to reveal fruit"), 0, {{"object", 190622}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Ask for a spare fruit"), 0, {{"monster", 28604}}}, + }, + }, + [12637] = { + [questKeys.preQuestSingle] = {12631}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12638}, + [questKeys.nextQuestInChain] = 12629, + }, + [12638] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12633,12238}, + [questKeys.exclusiveTo] = {12637}, + [questKeys.nextQuestInChain] = 12643, + }, + [12641] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Eye of Acherus Control Mechanism"), 0, {{"object", 191609}}}}, + }, + [12643] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12638,12238}, + [questKeys.exclusiveTo] = {12629}, + [questKeys.nextQuestInChain] = 12649, + }, + [12644] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Begin the distillation process"), 0, {{"monster", 28566}}}}, + }, + [12648] = { + [questKeys.preQuestSingle] = {12629}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12649}, + [questKeys.nextQuestInChain] = 12661, + }, + [12649] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12643,12238}, + [questKeys.exclusiveTo] = {12648}, + [questKeys.nextQuestInChain] = 12661, + }, + [12651] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12558,12556,12592}, + [questKeys.exclusiveTo] = {12654}, + [questKeys.nextQuestInChain] = 12654, + }, + [12652] = { + [questKeys.requiredRaces] = 2047, + [questKeys.preQuestSingle] = {12629,12643}, + [questKeys.exclusiveTo] = {12713}, + [questKeys.objectives] = {{{28565,}}}, + }, + [12659] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28465,28600},28622}}}, + }, + [12661] = { + [questKeys.preQuestSingle] = {12648,12649}, + [questKeys.preQuestGroup] = {}, + [questKeys.childQuests] = {12663,12664}, + [questKeys.exclusiveTo] = {}, + [questKeys.nextQuestInChain] = 12669, + [questKeys.requiredSourceItems] = {41390,38699}, + [questKeys.objectives] = {{{28503,"Overlord Drakuru's task complete"}}}, + [questKeys.extraObjectives] = {{{[zoneIDs.ZUL_DRAK]={{28.38,44.85}}}, Questie.ICON_TYPE_EVENT, l10n("Infiltrate Voltarus using Ensorcelled Choker")}}, + }, + [12662] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Heb'Jin's Drum to summon Heb'Jin"), 0, {{"object", 190695}}}}, + }, + [12663] = { + [questKeys.preQuestSingle] = {12649}, + [questKeys.exclusiveTo] = {12664,12648}, + [questKeys.parentQuest] = 12661, + [questKeys.objectives] = {{{28666,"Tour of Zul'Drak complete"}}}, + }, + [12664] = { + [questKeys.preQuestSingle] = {12648}, + [questKeys.exclusiveTo] = {12663,12649}, + [questKeys.parentQuest] = 12661, + [questKeys.objectives] = {{{28666,"Tour of Zul'Drak complete"}}}, + }, + [12665] = { + [questKeys.objectives] = {{{28671,"Quetz'lun's fate revealed."}}}, + }, + [12668] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28747,28748},28747,"Trolls killed near a Soul Font"}}}, + }, + [12669] = { + [questKeys.objectives] = {{{28503,"Drakuru's task complete"},{28739,"Blight Cauldrons diluted"}}}, + [questKeys.requiredSourceItems] = {39154,38699,41390}, + }, + [12671] = { + [questKeys.triggerEnd] = {"Reconnaissance Flight",{[zoneIDs.SHOLAZAR_BASIN]={{50.04,61.43,},},},}, + }, + [12673] = { + [questKeys.objectives] = {nil,{{190716}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Suggestion to mind control Blight Geist"), 0, {{"monster", 28750}}}}, + }, + [12674] = { + [questKeys.objectives] = {{{28752,"High Priest Mu'funu hexed at death"},{28754,"High Priestess Tua-Tua hexed at death"},{28756,"High Priest Hawinni hexed at death"}}}, + }, + [12676] = { + [questKeys.requiredSourceItems] = {39165,41390,38699}, + [questKeys.objectives] = {nil,{{190731,"Scourgewagons destroyed"}},nil,nil,{{{28503},28503,"Drakuru's task complete"}}}, + [questKeys.triggerEnd] = {"Learn Drakuru's secret",{[zoneIDs.ZUL_DRAK]={{27.07,46.16}}}}, + }, + [12677] = { + [questKeys.sourceItemId] = 38699, + [questKeys.requiredSourceItems] = {41390,38699}, + [questKeys.objectives] = {{{28503,"Drakuru's task complete"}},nil,{{39159}}}, + }, + [12680] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28605,28606,28607},28605,"Horse Successfully Stolen"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Stolen Horse"), 0, {{"monster", 28653}}}}, + }, + [12683] = { + [questKeys.objectives] = {{{28003,},{28003}}}, + [questKeys.preQuestSingle] = {}, + }, + [12685] = { + [questKeys.objectives] = {{{28671}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Quetz'lun's Ritual"), 0, {{"monster", 28672}}}}, + }, + [12686] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Empowerment to mind control Servant of Drakuru"), 0, {{"monster", 28802}}}, + }, + }, + [12687] = { + [questKeys.triggerEnd] = {"The Horseman's Challenge",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{52.41,34.59,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Dark Rider of Acherus and take his horse"), 0, {{"monster", 28768},{"monster", 28782}}}}, + }, + [12688] = { + [questKeys.triggerEnd] = {"Escort Engineer Helice out of Swindlegrin's Dig",{[zoneIDs.SHOLAZAR_BASIN]={{37.29,50.59,},},},}, + }, + [12690] = { + [questKeys.exclusiveTo] = {12710}, + [questKeys.requiredSourceItems] = {39238,38699}, + [questKeys.objectives] = {{{28844,"Drakkari Skullcrushers Slain"},{28873,"Drakkari Chieftain Lured"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Command"), 0, {{"monster", 28843}}}}, + }, + [12692] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12695] = { + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12697] = { + [questKeys.preQuestGroup] = {12678,12679,12687,12733,}, + }, + [12698] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28819,28822,28891},28819,"Scarlet Ghoul Returned"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Return Scarlet Ghouls"), 0, {{"monster", 28658}}}}, + }, + [12699] = { + [questKeys.preQuestSingle] = {12523}, + }, + [12701] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Climb inside the Inconspicuous Mine Car"), 0, {{"object", 190767}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Scarlet Cannon"), 0, {{"monster", 28833}}}, + }, + }, + [12702] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12703] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the blood at the Shrine of Kartak"), 0, {{"object", 190782}}}}, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12704] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to High-Oracle Soo-say to retrieve a Gorloc companion"), 0, {{"monster", 28027}}}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.requiredSourceItems] = {38622,38623,38624}, + }, + [12705] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use the Tainted Crystal at the Great Lightning Stone"), 0, {{"object", 190781}}}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12707] = { + [questKeys.objectives] = {{{28861,"Mam'toth Disciples trampled to death"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Medallion of Mam'toth to calm and ride an Enraged Mammoth"),0,{{"monster", 28851}}}, + }, + }, + [12710] = { + [questKeys.sourceItemId] = 38699, + [questKeys.requiredSourceItems] = {38699,39319}, + [questKeys.objectives] = {{{28948,"Drakuru's upper chamber explored"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Open the coffin"), 0, {{"object", 190948}}}, + {{[zoneIDs.ZUL_DRAK]={{28.38,44.85}}}, Questie.ICON_TYPE_EVENT, l10n("Take the teleporter to Drakuru's upper chamber")}, + }, + }, + [12712] = { + [questKeys.sourceItemId] = 39313, + [questKeys.requiredSourceItems] = {39313,39314,39315,39316}, + }, + [12713] = { + [questKeys.objectives] = {nil,nil,{{40425,"Overlord Drakuru Defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use the Scepter of Domination to control it"), 0, {{"monster", 28931}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Go on top of the ziggurat with Drakuru"), 0, {{"monster", 28503}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Defeat Drakuru"), 0, {{"monster", 28998}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("After defeating Drakuru, go back down using this portal"), 0, {{"object", 202357}}}, + }, + }, + [12720] = { + [questKeys.triggerEnd] = {"\"Crimson Dawn\" Revealed",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{55.09,66.12},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Equip Keleseth's Persuaders and persuade Scarlet Crusaders"), 0, {{"monster", 28610},{"monster", 28936},{"monster", 28939},{"monster", 28940},}}}, + }, + [12721] = { + [questKeys.objectives] = {{{28952,"Akali unfettered from his chains."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Release Akali from his chains"), 0, {{"object", 191018}}}}, + }, + [12723] = { + [questKeys.preQuestGroup] = {12717,12720,12722}, + }, + [12726] = { + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.objectives] = {{{28862,},{28858,}}}, + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{26.51,35.63}}}, Questie.ICON_TYPE_EVENT, l10n("Use Drums of the Tempest at Stormwright's Shelf"),}}, + }, + [12730] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Prophet of Akali Convocation"), 0, {{"object", 191123}}}}, + }, + [12732] = { + [questKeys.requiredMinRep] = {1104,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Fill Rejek's Vial"), 0, {{"object", 191122}}}}, + }, + [12733] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28391,28394,28406},28391,"Death Knights defeated in a duel"}}}, + }, + [12734] = { + [questKeys.objectives] = {{{28086,"Blade blooded on Sapphire Hive Wasp"},{28096,"Blade blooded on Hardknuckle Charger"}},nil,nil,nil,{{{28109,28110},28109,"Blade Blooded on Mistwhisper members"}}}, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12735] = { + [questKeys.extraObjectives] = { + {{[zoneIDs.SHOLAZAR_BASIN]={{43,42}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Atha"), 1}, + {{[zoneIDs.SHOLAZAR_BASIN]={{49,63}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Ha-Khalan"), 2}, + {{[zoneIDs.SHOLAZAR_BASIN]={{46,74}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Koosu"), 3}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12736] = { + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12737] = { + [questKeys.objectives] = {nil,{{191136,}}}, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12740] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28028,28029},28028,}}}, + }, + [12741] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12752] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12753] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12754] = { + [questKeys.extraObjectives] = {{{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{60.9,75.5}}}, Questie.ICON_TYPE_EVENT, l10n("Use the Makeshift Cover"),}}, + }, + [12758] = { + [questKeys.requiredMinRep] = {1104,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Venture Co. Explosive on dead Stonewatcher"),0,{{"monster", 28877}}}}, + }, + [12759] = { + [questKeys.sourceItemId] = 39697, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12760] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12761] = { + [questKeys.sourceItemId] = 39693, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12762] = { + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Charge the Dormant Polished Crystal at the exposed Lifeblood Pillar"),2,{{"object", 300224}}}}, + }, + [12771] = { + [questKeys.preQuestSingle] = {12753}, + }, + [12772] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12773] = { + [questKeys.preQuestSingle] = {12772}, + }, + [12774] = { + [questKeys.preQuestSingle] = {12775}, + }, + [12775] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12776] = { + [questKeys.preQuestSingle] = {12777}, + }, + [12777] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12779] = { + [questKeys.extraObjectives] = {{{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{53.5,36.7}}}, Questie.ICON_TYPE_EVENT, l10n("Use the Horn of the Frostbrood"),}}, + }, + [12782] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12783] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12784] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12785] = { + [questKeys.preQuestSingle] = {12783}, + }, + [12786] = { + [questKeys.preQuestSingle] = {12784}, + }, + [12787] = { + [questKeys.preQuestSingle] = {12752}, + }, + [12788] = { + [questKeys.preQuestSingle] = {12782}, + }, + [12797] = { + [questKeys.extraObjectives] = {{{[zoneIDs.UN_GORO_CRATER]={{50.54,7.74,}}}, Questie.ICON_TYPE_EVENT, l10n("Travel through the Waygate"),}}, + }, + [12801] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Highlord Darion Mograine"), 0, {{"monster", 29173}}}, + {{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{38.8,38.4}}}, Questie.ICON_TYPE_EVENT, l10n("The Light of Dawn Uncovered"),}, + }, + }, + [12802] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Desperate Mojo"),0,{{"object", 188358}}}}, + [questKeys.requiredSourceItems] = {35797,36739,36743}, + }, + [12803] = { + [questKeys.requiredSpell] = 54197, + }, + [12804] = { + [questKeys.preQuestSingle] = {12520}, + }, + [12805] = { + [questKeys.objectives] = {{{29124,}}}, + }, + [12807] = { + [questKeys.objectives] = {{{29344,}}}, + }, + [12808] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12809] = { + [questKeys.preQuestSingle] = {12808}, + }, + [12810] = { + [questKeys.objectives] = {{{29392,}}}, + }, + [12811] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12812] = { + [questKeys.preQuestSingle] = {12811}, + }, + [12813] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29329,29330,29333,29338},29398}}}, + [questKeys.preQuestSingle] = {12807}, + }, + [12814] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29406,29405},29406}}}, + }, + [12815] = { + [questKeys.preQuestSingle] = {12814}, + }, + [12816] = { + [questKeys.triggerEnd] = {"Investigate a circle",{[zoneIDs.EVERSONG_WOODS]={{56.5,52,},},},}, + }, + [12817] = { + [questKeys.triggerEnd] = {"Investigate a circle",{[zoneIDs.AZUREMYST_ISLE]={{34.9,45.5,},},},}, + }, + [12821] = { + [questKeys.name] = "Cell Block Tango", + [questKeys.triggerEnd] = {"Garm Teleporter Activated",{[zoneIDs.STORM_PEAKS]={{50.7,81.9,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Activate the teleporter"), 0, {{"object", 191574}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12820,12828,12832}, + [questKeys.sourceItemId] = 40731, + }, + [12823] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place Hardpacked Explosive Bundle at Frostgut's Altar"), 0, {{"object", 191842}}}}, + }, + [12828] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Retrieve U.D.E.D."), 0, {{"object", 191553}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Use U.D.E.D on Ironwool Mammoth"), 0, {{"monster", 29402}}}, + }, + }, + [12831] = { + [questKeys.preQuestSingle] = {}, + }, + [12832] = { + [questKeys.triggerEnd] = {"Escort the Injured Goblin Miner to K3.",{[zoneIDs.STORM_PEAKS]={{40.2,79,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Start the escort"), 0, {{"monster", 29434}}}}, + }, + [12838] = { + [questKeys.preQuestSingle] = {12807}, + }, + [12842] = { + [questKeys.triggerEnd] = {"Weapon emblazoned",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{47.28,31.36},{47.82,27.42},{50.43,28.17},},},}, + }, + [12847] = { + [questKeys.triggerEnd] = {"Arete's Gate summoned",{[zoneIDs.ICECROWN]={{9.53,47.01}}}}, + }, + [12851] = { + [questKeys.name] = "Bearly Hanging On", + [questKeys.objectives] = {{{29358},{29351}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount Icefang"), 0, {{"monster", 29598}}}, + }, + }, + [12852] = { + [questKeys.objectives] = {{{29621,}}}, + }, + [12855] = { + [questKeys.requiredSourceItems] = {40971,41430}, + [questKeys.preQuestSingle] = {12854}, + [questKeys.extraObjectives] = {{{[zoneIDs.STORM_PEAKS]={{36.4,64.2}}}, Questie.ICON_TYPE_EVENT, l10n("Use Frosthound's Collar at the Abandoned Camp")}}, + }, + [12856] = { + [questKeys.objectives] = {{{29639,"Rescued Brunnhildar Prisoners"},{29708,"Freed Proto-Drakes"}}}, + [questKeys.extraObjectives] = { + {{[zoneIDs.STORM_PEAKS]={{62.00,59.50}}}, Questie.ICON_TYPE_EVENT, l10n("Fly freed Proto-Drakes to safety while carrying rescued Brunnhildar Prisoners"),}, + }, + }, + [12858] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {40971,41130}, + }, + [12860] = { + [questKeys.requiredSourceItems] = {40971,41179}, + [questKeys.objectives] = {{{29746,"Hidden Data gathered"}}}, + }, + [12862] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Ricket for transportation"), 0, {{"monster", 29428}}}}, + }, + [12864] = { + [questKeys.objectives] = {{{29811,"Locate Missing Scout"}}}, + }, + [12865] = { + [questKeys.objectives] = {{{29854,"Stormcrest Eagles fed"}}}, + [questKeys.preQuestSingle] = {12863}, + }, + [12869] = { + [questKeys.preQuestGroup] = {12867,13417}, + }, + [12871] = { + [questKeys.requiredSourceItems] = {40971,41258}, + [questKeys.preQuestSingle] = {12872}, + }, + [12872] = { + [questKeys.requiredSourceItems] = {40971,44704}, + }, + [12874] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Fjorlin Frostbrow"), 0, {{"monster", 29732}}}}, + }, + [12876] = { + [questKeys.preQuestSingle] = {12874}, + }, + [12885] = { + [questKeys.preQuestSingle] = {12872}, + [questKeys.exclusiveTo] = {12930}, + [questKeys.sourceItemId] = 40971, + }, + [12886] = { + [questKeys.objectives] = {{{29694}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Hyldnir Harpoon to land on nearby Proto-Drakes"), 0, {{"monster", 29625}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Hyldnir Harpoon on Column Ornaments to dismount"), 0, {{"monster", 29754}}}, + }, + }, + [12887] = { + [questKeys.objectives] = {{{29747,"The Ocular has been destroyed"}}}, + }, + [12889] = { + [questKeys.requiredSkill] = {202,400}, + }, + [12892] = { + [questKeys.objectives] = {{{29747,"The Ocular has been destroyed"}}}, + }, + [12893] = { + [questKeys.objectives] = {{{29769},{29770},{29840}}}, + }, + [12896] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Tamper with General's Weapon Rack to summon General Lightsbane"), 0, {{"object", 191778},{"object", 191779}}}, + }, + }, + [12897] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Tamper with General's Weapon Rack to summon General Lightsbane"), 0, {{"object", 191778},{"object", 191779}}}, + }, + }, + [12906] = { + [questKeys.objectives] = {{{30146,"Exhausted Vrykul Disciplined"}}}, + }, + [12910] = { + [questKeys.sourceItemId] = 40971, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount Frostbite to track scent"), 0, {{"monster", 29857}}}, + }, + }, + [12913] = { + [questKeys.sourceItemId] = 40971, + }, + [12916] = { + [questKeys.objectives] = {nil,{{400065,"Scourge Enclosure Blown Up"}}}, + }, + [12919] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Let Gymer know you're ready"), 0, {{"monster", 29647}}}, + {{[zoneIDs.ZUL_DRAK]={{26.71,57.29}}}, Questie.ICON_TYPE_EVENT, l10n("Slay Scourge while riding Gymer"),}, + }, + }, + [12920] = { + [questKeys.preQuestSingle] = {12917}, + }, + [12924] = { + [questKeys.objectives] = {{{30099,"Fjorn's Anvil Brought to Dun Niffelem"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Pick up 'You Can't Miss Him' (12966)"), 0, {{"monster", 30105}}}, + }, + }, + [12925] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12926] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {40971,41130}, + }, + [12927] = { + [questKeys.requiredSourceItems] = {40971,41179}, + [questKeys.objectives] = {{{29746,"Hidden Data gathered"}}}, + }, + [12928] = { + [questKeys.requiredSourceItems] = {40971,44704}, + }, + [12929] = { + [questKeys.preQuestSingle] = {12928}, + [questKeys.exclusiveTo] = {12930}, + [questKeys.sourceItemId] = 40971, + }, + [12932] = { -- This is the version of the quest you get if you have NOT completed 9977 + [questKeys.objectives] = {{{30014,"Yggdras Defeated"}}}, + [questKeys.exclusiveTo] = {12954,9977}, + [questKeys.nextQuestInChain] = 12933, + }, + [12933] = { + [questKeys.objectives] = {{{30017,"Stinkbeard Defeated"}}}, + [questKeys.preQuestSingle] = {12932,12954}, + }, + [12934] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30019,30024,30025,30026},30019,"Elemental Lord Defeated"}}}, + }, + [12935] = { + [questKeys.objectives] = {{{30020,"Orinoko Tuskbreaker Defeated"}}}, + }, + [12936] = { + [questKeys.objectives] = {{{30023,"Korrak the Bloodrager Defeated"}}}, + }, + [12939] = { + [questKeys.objectives] = {{{30037,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Challenge Flag on sparring Mjordin Combatants"), 0, {{"monster", 30037}}}, + }, + }, + [12940] = { + [questKeys.startedBy] = {nil,{400017}}, + [questKeys.finishedBy] = {nil,{400017}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12941] = { + [questKeys.startedBy] = {nil,{400016}}, + [questKeys.finishedBy] = {nil,{400016}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12942] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12944] = { + [questKeys.startedBy] = {nil,{400038}}, + [questKeys.finishedBy] = {nil,{400038}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12945] = { + [questKeys.startedBy] = {nil,{400039}}, + [questKeys.finishedBy] = {nil,{400039}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12946] = { + [questKeys.startedBy] = {nil,{400019}}, + [questKeys.finishedBy] = {nil,{400019}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12947] = { + [questKeys.startedBy] = {nil,{400018}}, + [questKeys.finishedBy] = {nil,{400018}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12948] = { + [questKeys.objectives] = {{{30022,"Vladof the Butcher Defeated"}}}, + }, + [12950] = { + [questKeys.startedBy] = {nil,{400032}}, + [questKeys.finishedBy] = {nil,{400032}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12953] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Harpoon Guns to burn Dry Haystacks"), 0, {{"monster", 30066}}}, + }, + }, + [12954] = { + [questKeys.objectives] = {{{30014,"Yggdras Defeated"}}}, + [questKeys.preQuestSingle] = {9977}, + [questKeys.exclusiveTo] = {12932}, + [questKeys.nextQuestInChain] = 12933, + }, + [12957] = { + [questKeys.objectives] = {{{29384},{29369}}}, + }, + [12966] = { + [questKeys.preQuestGroup] = {12915,12956}, + [questKeys.requiredMinRep] = {1119,0}, + }, + [12967] = { + [questKeys.objectives] = {{{30120}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Ride Snorri"), 0, {{"monster", 30123}}}}, + }, + [12968] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12970] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Listen to Lok'lira's proposal"), 0, {{"monster", 29975}}}, + }, + }, + [12973] = { + [questKeys.objectives] = {{{30405,"Accompany Brann Bronzebeard to Frosthold."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in Brann's Flying Machine"), 0, {{"monster", 30134}}}}, + [questKeys.preQuestSingle] = {12880}, + }, + [12974] = { + [questKeys.exclusiveTo] = {12932,12954}, + }, + [12975] = { + [questKeys.preQuestSingle] = {12924}, + }, + [12977] = { + [questKeys.name] = "Hodir's Call", + [questKeys.objectives] = {{{29974,"Niffelem Forefather freed"},},nil,nil,nil,{{{30144,30135},30144,},},}, + [questKeys.preQuestSingle] = {12976}, + }, + [12978] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29370,29374,29380},29370,"Nidavelir Stormforged slain"}}}, + }, + [12979] = { + [questKeys.objectives] = {nil,nil,{{42204},},nil,nil,}, + }, + [12981] = { + [questKeys.preQuestSingle] = {12967}, + }, + [12982] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30186,30194,30195,30196},30186,"Ebon Blade Prisoners set free"}}}, + }, + [12985] = { + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Diamond Tipped Pick on the corpses of Dead Iron Giants"), 0, {{"monster", 29914},{"monster", 30163}}}}, + }, + [12987] = { + [questKeys.name] = "Placing Hodir's Helm", + [questKeys.requiredMinRep] = {1119,3000}, + }, + [12994] = { + [questKeys.requiredMinRep] = {1119,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Ethereal Worg's Fang"), 0, {{"monster", 32569}}}}, + }, + [12995] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29915,29919,30037,30243,30250,30409,30475,30483,30484,30632,30725,30751,29880},29880,"Ebon Blade Banner planted near vrykul corpse"}}}, + }, + [12996] = { + [questKeys.objectives] = {{{29352,"Kirgaraak Defeated"}}}, + }, + [12998] = { + [questKeys.objectives] = {nil,{{192181,"Attempt to secure the Heart of the Storm"}}}, + }, + [13001] = { + [questKeys.name] = "Forging Hodir's Spear", + [questKeys.requiredMinRep] = {1119,9000}, + }, + [13003] = { + [questKeys.name] = "How To Slay Your Dragon", + [questKeys.objectives] = {{{30275,"Wild Wyrm Slain"}}}, + [questKeys.preQuestSingle] = {13001}, + }, + [13005] = { + [questKeys.objectives] = {{{29984,"Iron Sentinel slain"},{29978,"Iron Dwarf Assailant slain"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Use the Horn of the Peaks and call on the Earthen to defeat Iron Dwarves and Iron Sentinels"), 0, {{"monster", 29984},{"monster",29978}}}}, + [questKeys.preQuestSingle] = {13057}, + }, + [13006] = { + [questKeys.name] = "A Viscous Cleaning", + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.preQuestSingle] = {12987}, + }, + [13007] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount Tamed Jormungar to fight Iron Colossus"),0,{{"monster", 30301},{"object", 192262}}},}, + }, + [13008] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30273,30268,30274},30273,}}}, + }, + [13010] = { + [questKeys.objectives] = {{{30105}},nil,nil,{1119,3000}}, + }, + [13011] = { + [questKeys.name] = "Culling Jorcuttar", + [questKeys.objectivesText] = {"King Jokkum in Dun Niffelem wants you to slay Jorcuttar in Hibernal Cavern."}, + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.requiredSourceItems] = {42733}, + [questKeys.extraObjectives] = {{{[zoneIDs.STORM_PEAKS]={{54.71,60.79}}}, Questie.ICON_TYPE_EVENT, l10n("Place Icemaw Bear Flank"), 0}} + }, + [13012] = { + [questKeys.startedBy] = {{30348}}, + [questKeys.finishedBy] = {{30348}}, + }, + [13013] = { + [questKeys.startedBy] = {{30357}}, + [questKeys.finishedBy] = {{30357}}, + }, + [13014] = { + [questKeys.startedBy] = {{30358}}, + [questKeys.finishedBy] = {{30358}}, + }, + [13015] = { + [questKeys.startedBy] = {{30359}}, + [questKeys.finishedBy] = {{30359}}, + }, + [13016] = { + [questKeys.startedBy] = {{30360}}, + [questKeys.finishedBy] = {{30360}}, + }, + [13017] = { + [questKeys.startedBy] = {{30531}}, + [questKeys.finishedBy] = {{30531}}, + }, + [13018] = { + [questKeys.startedBy] = {{30362}}, + [questKeys.finishedBy] = {{30362}}, + }, + [13019] = { + [questKeys.startedBy] = {{30363}}, + [questKeys.finishedBy] = {{30363}}, + }, + [13020] = { + [questKeys.startedBy] = {{30375}}, + [questKeys.finishedBy] = {{30375}}, + }, + [13021] = { + [questKeys.startedBy] = {{30536}}, + [questKeys.finishedBy] = {{30536}}, + }, + [13022] = { + [questKeys.startedBy] = {{30533}}, + [questKeys.finishedBy] = {{30533}}, + }, + [13023] = { + [questKeys.startedBy] = {{30534}}, + [questKeys.finishedBy] = {{30534}}, + }, + [13024] = { + [questKeys.startedBy] = {{30365}}, + [questKeys.finishedBy] = {{30365}}, + }, + [13025] = { + [questKeys.startedBy] = {{30367}}, + [questKeys.finishedBy] = {{30367}}, + }, + [13026] = { + [questKeys.startedBy] = {{30368}}, + [questKeys.finishedBy] = {{30368}}, + }, + [13027] = { + [questKeys.startedBy] = {{30369}}, + [questKeys.finishedBy] = {{30369}}, + }, + [13028] = { + [questKeys.startedBy] = {{30370}}, + [questKeys.finishedBy] = {{30370}}, + }, + [13029] = { + [questKeys.startedBy] = {{30371}}, + [questKeys.finishedBy] = {{30371}}, + }, + [13030] = { + [questKeys.startedBy] = {{30372}}, + [questKeys.finishedBy] = {{30372}}, + }, + [13031] = { + [questKeys.startedBy] = {{30373}}, + [questKeys.finishedBy] = {{30373}}, + }, + [13032] = { + [questKeys.startedBy] = {{30374}}, + [questKeys.finishedBy] = {{30374}}, + }, + [13033] = { + [questKeys.startedBy] = {{30364}}, + [questKeys.finishedBy] = {{30364}}, + }, + [13034] = { + [questKeys.preQuestSingle] = {}, + }, + [13035] = { + [questKeys.preQuestSingle] = {13057}, + }, + [13037] = { + [questKeys.objectives] = {{{30395}}}, + }, + [13038] = { + [questKeys.objectives] = {{{30448}}}, + [questKeys.preQuestSingle] = {13034}, + }, + [13039] = { + [questKeys.preQuestSingle] = {13036}, + }, + [13040] = { + [questKeys.preQuestSingle] = {13036}, + }, + [13042] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.objectives] = {{{30409,"Information beaten out of Apprentice Osterkilgr"},{30409}}}, + }, + [13043] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.startedBy] = {{30409},nil,{42772}}, + [questKeys.requiredSourceItems] = {}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Nergeld"), 0, {{"monster", 30403}}}, + }, + }, + [13044] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13008,13039,13040}, + }, + [13045] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Argent Skytalon"), 0, {{"monster", 30500}}}, + {{[zoneIDs.ICECROWN]={{86.85,76.61}}}, Questie.ICON_TYPE_EVENT, l10n("Drop Off Captured Crusader"), 0}, + }, + }, + [13046] = { + [questKeys.objectives] = {{{30422}}}, + [questKeys.requiredMinRep] = {1119,21000}, + }, + [13047] = { + [questKeys.preQuestGroup] = {13035,13005}, + [questKeys.objectives] = {{{30399,"Witness the Reckoning"}}}, + }, + [13048] = { + [questKeys.objectives] = {{{80000}}}, + [questKeys.preQuestGroup] = {13037,13038}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Attune the Lorehammer"), 0, {{"object", 192541},{"object", 192542},{"object", 192543},{"object", 192544},{"object", 192545},{"object", 192546}}}, + }, + }, + [13049] = { + [questKeys.preQuestGroup] = {13037,13038}, + }, + [13058] = { + [questKeys.preQuestGroup] = {13048,13049}, + [questKeys.extraObjectives] = { + {{[zoneIDs.STORM_PEAKS]={{64.4,46.7}}}, Questie.ICON_TYPE_OBJECT, l10n("Use the Lorehammer to travel back in time"), 0}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Defeat the North Wind"), 0, {{"monster", 30474}}}, + }, + }, + [13059] = { + [questKeys.objectives] = {nil,{{192560}},nil,nil,{{{30475},32821,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Volgur"), 0, {{"monster", 30483}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Brita"), 0, {{"monster", 30484}}}, + }, + }, + [13060] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Ricket for transportation"), 0, {{"monster", 29428}}}, + }, + }, + [13064] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Listen to Thorim's history"), 0, {{"monster", 29445}}}, + }, + }, + [13065] = { + [questKeys.startedBy] = {{30537}}, + [questKeys.finishedBy] = {{30537}}, + }, + [13066] = { + [questKeys.startedBy] = {{30535}}, + [questKeys.finishedBy] = {{30535}}, + }, + [13067] = { + [questKeys.startedBy] = {{30538}}, + [questKeys.finishedBy] = {{30538}}, + }, + [13068] = { + [questKeys.preQuestSingle] = {13141}, + }, + [13069] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 30337}}}}, + }, + [13071] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 30272}}}}, + }, + [13073] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Speak to Arch Druid Lilliandra for transportation to Moonglade"), 0, {{"monster", 30630}}}}, + }, + [13086] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Argent Cannon"), 0, {{"monster", 30236}}}, + }, + }, + [13091] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30725,29880,30632,30243,30250},30644,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Possess a Water Terror"), 0, {{"object", 192774}}}, + }, + }, + [13092] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.specialFlags] = 0, + }, + [13093] = { + [questKeys.preQuestSingle] = {13092}, + }, + [13098] = { + [questKeys.preQuestSingle] = {}, + }, + [13106] = { + [questKeys.preQuestSingle] = {12896,12897}, + [questKeys.exclusiveTo] = {13119,13120}, + }, + [13109] = { + [questKeys.preQuestSingle] = {13047}, + }, + [13110] = { + [questKeys.objectives] = {{{30202}}}, + [questKeys.preQuestSingle] = {13104}, + }, + [13117] = { + [questKeys.preQuestSingle] = {}, + }, + [13118] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13121] = { + [questKeys.objectives] = {nil,{{192861}}}, + }, + [13122] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13125] = { + [questKeys.preQuestGroup] = {13122,13118}, + }, + [13129] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Dip Kurzel's Blouse Scrap on the remains of Novos the Summoner"), 0, {{"monster", 26631}}}}, + }, + [13130] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13133] = { + [questKeys.objectives] = {{{30886}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Wake Slumbering Mjordin until you find Iskalder"), 0, {{"monster", 30718}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Iskalder delivered to The Bone Witch"), 0, {{"monster", 30232}}}, + }, + }, + [13134] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13135] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13136] = { + [questKeys.startedBy] = {{30597},nil,{43242}}, + [questKeys.objectives] = {nil,nil,{{43259}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13137] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Battlescar Signal Fire to summon Iskalder"), 0, {{"object", 193024}}}, + }, + }, + [13138] = { + [questKeys.preQuestSingle] = {13136}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Bag of Jagged Shards near Malykriss Furnace"), 0, {{"object", 193004}}}}, + }, + [13139] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13125,13130,13135}, + }, + [13140] = { + [questKeys.preQuestSingle] = {13136}, + }, + [13141] = { + [questKeys.objectives] = {{{30989,"Battle for Crusaders' Pinnacle"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Plant the Blessed Banner of the Crusade"), 0, {{"object", 193003}}}}, + }, + [13142] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Blow the War Horn of Jotunheim to challenge Overthane Balargarde"), 0, {{"object", 193028}}}, + }, + }, + [13143] = { + [questKeys.objectives] = {{{30894}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Lead a subdued Lithe Stalker to the cliff above Vereth the Cunning"), 0, {{"monster", 31049}}}}, + }, + [13144] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30689,31048},30689,}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13152,13211}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Free Burning Skeletons to destroy Chained Abominations"), 0, {{"object", 193060}}}}, + }, + [13145] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13146] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Drag Scourge Bombs to Lumbering Atrocities"), 0, {{"monster", 30920}}}, + }, + }, + [13147] = { + [questKeys.objectives] = {{{30922}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13149] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Plagued Grain Crates Dispelled: 0/1"), 0, {{"object", 190094}}}}, + }, + [13151] = { + [questKeys.objectives] = {{{26533,"Mal'Ganis Defeated"}}}, + }, + [13152] = { + [questKeys.preQuestSingle]= {}, + [questKeys.preQuestGroup] = {13134,13138,13140}, + [questKeys.objectives] = {{{30993,"Patches freed"},{30992,"Help Patches kill Doctor Sabnok"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Free Patches"), 0, {{"object", 193025}}}}, + }, + [13153] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13154,13156,13195,13196,13197,13198}, + }, + [13154] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13153,13156,13195,13196,13197,13198}, + }, + [13155] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13172,13174}, + }, + [13156] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13153,13154,13195,13196,13197,13198}, + }, + [13160] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13164] = { + [questKeys.preQuestSingle]= {}, + [questKeys.preQuestGroup] = {13161,13162,13163}, + }, + [13168] = { + [questKeys.triggerEnd] = {"Seize Control of an Eidolon Watcher", {[zoneIDs.ICECROWN]={{44.19,24.69}}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Eye of Dominion"), 0, {{"object", 193058}}}}, + }, + [13169] = { + [questKeys.objectives] = {{{30952,"Hungering Plaguehounds fed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13170] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13171] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13172] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13169,13170,13171}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Speak to Keritose Bloodblade to secure a Skeletal Gryphon"), 0, {{"monster", 30946}}}}, + }, + [13174] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13169,13170,13171}, + }, + [13177] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13179}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{30739,39019},39019,"Horde members slain"}}}, + }, + [13178] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13180}, + }, + [13179] = { + [questKeys.exclusiveTo] = {13177}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{30739,39019},39019,"Horde members slain"}}}, + }, + [13180] = { + [questKeys.exclusiveTo] = {13178}, + }, + [13181] = { + [questKeys.triggerEnd] = {"Victory in Lake Wintergrasp", {[zoneIDs.DALARAN]={{33,67.2}}}}, + }, + [13183] = { + [questKeys.triggerEnd] = {"Victory in Lake Wintergrasp", {[zoneIDs.DALARAN]={{58.2,25.6}}}}, + }, + [13185] = { + [questKeys.exclusiveTo] = {13223}, + }, + [13186] = { + [questKeys.exclusiveTo] = {13222}, + }, + [13190] = { + [questKeys.requiredSourceItems] = {43494}, + [questKeys.objectives] = {nil,{{193057,"Ahn'kahar Watcher Corpse Burned"}}}, + }, + [13191] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {{31106}}, + [questKeys.exclusiveTo] = {13192,13193,13194,13199,13200,13201,13202}, + }, + [13192] = { + [questKeys.exclusiveTo] = {13191,13193,13194,13199,13200,13201,13202}, + }, + [13193] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13191,13192,13194,13199,13200,13201,13202}, + }, + [13194] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13191,13192,13193,13199,13200,13201,13202}, + }, + [13195] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13196,13197,13198}, + }, + [13196] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13197,13198}, + }, + [13197] = { + [questKeys.finishedBy] = {{31108}}, + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13196,13198}, + }, + [13198] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13196,13197}, + }, + [13199] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13200,13201,13202}, + }, + [13200] = { + [questKeys.finishedBy] = {{31106}}, + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13201,13202}, + }, + [13201] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13200,13202}, + }, + [13202] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13200,13201}, + }, + [13203] = { + [questKeys.exclusiveTo] = {11528,13966}, + }, + [13204] = { + [questKeys.startedBy] = {{30329},nil,{43512}}, + }, + [13211] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13134,13138,13140}, + }, + [13214] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31191,31192,31193,31194,31195,31196,},31191}}}, + }, + [13215] = { + [questKeys.objectives] = {{{31222}}}, + }, + [13216] = { + [questKeys.objectives] = {{{31242}}}, + }, + [13217] = { + [questKeys.objectives] = {{{31271}}}, + }, + [13218] = { + [questKeys.objectives] = {{{31277}}}, + }, + [13219] = { + [questKeys.objectives] = {{{14688}}}, + }, + [13220] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Crusader Olakin's Remains at the Sanctum of Reanimation Slab"), 0, {{"object", 193090}}}}, + }, + [13221] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13222] = { + [questKeys.exclusiveTo] = {13186}, + }, + [13223] = { + [questKeys.exclusiveTo] = {13185}, + }, + [13226] = { + [questKeys.nextQuestInChain] = 13036, + }, + [13227] = { + [questKeys.nextQuestInChain] = 13036, + }, + [13228] = { + [questKeys.objectives] = {{{31273,"Dying Berserker Questioned"}}}, + [questKeys.childQuests] = {13230}, + [questKeys.preQuestSingle] = {13224}, + }, + [13229] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13230] = { + [questKeys.parentQuest] = 13228, + [questKeys.preQuestSingle] = {13228}, + }, + [13231] = { + [questKeys.objectives] = {{{31304,"Dying Soldier Questioned"}}}, + [questKeys.childQuests] = {13232}, + [questKeys.preQuestSingle] = {13225}, + }, + [13232] = { + [questKeys.objectives] = {{{31304,"Dying Soldiers Slain"}}}, + [questKeys.parentQuest] = 13231, + [questKeys.preQuestSingle] = {13231}, + }, + [13233] = { + [questKeys.triggerEnd] = {"Kill horde players in Icecrown", {[zoneIDs.ICECROWN]={{60.9,41.3}}}}, + [questKeys.preQuestSingle] = {13231}, + }, + [13234] = { + [questKeys.preQuestSingle] = {13228}, + [questKeys.triggerEnd] = {"Kill alliance players in Icecrown", {[zoneIDs.ICECROWN]={{60.9,41.3}}}}, + }, + [13235] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Margrave Dhakar to fight Morbidus"), 0, {{"monster", 31306}}}}, + }, + [13236] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31254,32414,31276},31329}}}, + }, + [13238] = { + [questKeys.preQuestSingle] = {13228}, + }, + [13239] = { + [questKeys.preQuestSingle] = {13238}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13240] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13241,13243,13244}, + }, + [13241] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13243,13244}, + }, + [13242] = { + [questKeys.preQuestSingle] = {12500}, + }, + [13243] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13241,13244}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{27744,28341},27744}}}, + }, + [13244] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13241,13243}, + }, + [13245] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13246] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13247] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13248] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13249] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13250] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13251,13252,13253,13254,13255,13256,14199}, + }, + [13251] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13252,13253,13254,13255,13256,14199}, + }, + [13252] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13253,13254,13255,13256,14199}, + }, + [13253] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13254,13255,13256,14199}, + }, + [13254] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13255,13256,14199}, + }, + [13255] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13256,14199}, + }, + [13256] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,14199}, + }, + [13258] = { + [questKeys.preQuestGroup] = {12938,13224}, + }, + [13260] = { + [questKeys.preQuestSingle] = {13228}, + }, + [13261] = { + [questKeys.preQuestSingle] = {13239}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13264] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13237}, + }, + [13265] = { + [questKeys.requiredSpell] = -59390, + }, + [13267] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Begin the assault!"), 0, {{"monster", 31650}}}}, + }, + [13268] = { + [questKeys.requiredSpell] = -59390, + }, + [13269] = { + [questKeys.requiredSpell] = -59390, + }, + [13270] = { + [questKeys.requiredSpell] = -59390, + }, + [13272] = { + [questKeys.requiredSpell] = -59390, + }, + [13273] = { + [questKeys.preQuestSingle] = {12928}, + [questKeys.sourceItemId] = 40971, + }, + [13274] = { + [questKeys.sourceItemId] = 40971, + }, + [13276] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13264}, + }, + [13277] = { + [questKeys.preQuestSingle] = {13237}, + }, + [13278] = { + [questKeys.preQuestSingle] = {13277}, + }, + [13279] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + }, + [13280] = { + [questKeys.preQuestSingle] = {13296}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Plant Alliance Battle Standard"), 0, {{"object", 193565}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get in the Jumpbot"), 0, {{"monster", 31736}}}, + }, + }, + [13281] = { + [questKeys.sourceItemId] = 44010, + [questKeys.preQuestSingle] = {13279}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + }, + [13283] = { + [questKeys.preQuestSingle] = {13293}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Plant Horde Battle Standard"), 0, {{"object", 193565}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get in the Jumpbot"), 0, {{"monster", 31770}}}, + }, + }, + [13284] = { + [questKeys.preQuestSingle] = {13341}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31701,31737},31701,"Alliance troops escorted to Ymirheim"}}}, + }, + [13285] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {}, + }, + [13286] = { + [questKeys.preQuestSingle] = {13231}, + }, + [13288] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13287}, + }, + [13289] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13288}, + }, + [13290] = { + [questKeys.preQuestSingle] = {13231}, + }, + [13291] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13292] = { + [questKeys.preQuestSingle] = {13291}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Frostbrood Skytalons Destroyed"}}}, + }, + [13293] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13294] = { + [questKeys.preQuestSingle] = {13287}, + }, + [13295] = { + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + }, + [13296] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13297] = { + [questKeys.sourceItemId] = 44010, + [questKeys.preQuestSingle] = {13295}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + }, + [13298] = { + [questKeys.preQuestSingle] = {13294}, + }, + [13300] = { + [questKeys.objectives] = {{{31397,"Saronite Mine Slave rescued"}}}, + [questKeys.preQuestSingle] = {13225}, + }, + [13301] = { + [questKeys.preQuestSingle] = {13340}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31832,31833},31832,"Horde troops escorted to Ymirheim"}}}, + }, + [13302] = { + [questKeys.objectives] = {{{31397,"Saronite Mine Slave rescued"}}}, + [questKeys.preQuestSingle] = {13224}, + }, + [13305] = { + [questKeys.preQuestSingle] = {13304}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Board Refurbished Demolisher"), 0, {{"monster", 32370}}}}, + }, + [13306] = { + [questKeys.preQuestSingle] = {13366}, + }, + [13307] = { + [questKeys.preQuestSingle] = {13306}, + }, + [13308] = { + [questKeys.preQuestSingle] = {13224,13225}, + }, + [13309] = { + [questKeys.preQuestSingle] = {13341}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Hop on the turret"), 0, {{"monster", 32227}}}}, + [questKeys.objectives] = {{{32222,"Skybreaker Infiltrators dropped"}}}, + }, + [13310] = { + [questKeys.preQuestSingle] = {13340}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Hop on the turret"), 0, {{"monster", 31884}}}}, + [questKeys.objectives] = {{{31882,"Skybreaker Infiltrators dropped"}}}, + }, + [13312] = { + [questKeys.preQuestGroup] = {13306,13367}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Rune of Distortion near Grimkor's Orb to summon Grimkor the Wicked"), 0, {{"object", 193622}}}}, + }, + [13313] = { + [questKeys.preQuestSingle] = {13306}, + }, + [13314] = { + [questKeys.preQuestSingle] = {13332}, + }, + [13315] = { + [questKeys.preQuestSingle] = {13288}, + }, + [13316] = { + [questKeys.preQuestSingle] = {13329}, + }, + [13318] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13315}, + }, + [13319] = { + [questKeys.preQuestSingle] = {13315}, + }, + [13320] = { + [questKeys.preQuestSingle] = {13315}, + }, + [13321] = { + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13322] = { + [questKeys.preQuestSingle] = {13321}, + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13323] = { + [questKeys.preQuestSingle] = {13318}, + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + }, + [13328] = { + [questKeys.preQuestSingle] = {13329}, + }, + [13329] = { + [questKeys.objectives] = {{{32467,"Skeletal Reaver bones dissolved"}}}, + [questKeys.preQuestGroup] = {13307,13312}, + }, + [13330] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13331] = { + [questKeys.preQuestSingle] = {13313}, + }, + [13332] = { + [questKeys.preQuestSingle] = {13345}, + }, + [13333] = { + [questKeys.preQuestSingle] = {13314}, + }, + [13334] = { + [questKeys.preQuestSingle] = {13332}, + }, + [13335] = { + [questKeys.objectives] = {{{32467,"Skeletal Reaver bones dissolved"}}}, + [questKeys.preQuestGroup] = {13334,13337}, + }, + [13336] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13337] = { + [questKeys.preQuestGroup] = {13332,13346}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Rune of Distortion near Grimkor's Orb to summon Grimkor the Wicked"), 0, {{"object", 193622}}}}, + }, + [13338] = { + [questKeys.preQuestSingle] = {13335}, + }, + [13339] = { + [questKeys.preQuestSingle] = {13335}, + }, + [13340] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13341] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13342] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13318}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13343] = { + [questKeys.objectives] = {{{32327,"Hourglass of Eternity protected from the Infinite Dragonflight."}}}, + }, + [13344] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13342}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13345] = { + [questKeys.sourceItemId] = 44459, + [questKeys.preQuestSingle] = {13318}, + }, + [13346] = { + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13347] = { + [questKeys.preQuestSingle] = {12499}, + }, + [13350] = { + [questKeys.preQuestSingle] = {13346}, + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13351] = { + [questKeys.preQuestSingle] = {13264}, + }, + [13352] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13351}, + }, + [13353] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13352}, + }, + [13354] = { + [questKeys.preQuestSingle] = {13351}, + }, + [13355] = { + [questKeys.preQuestSingle] = {13351}, + }, + [13356] = { + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13357] = { + [questKeys.preQuestSingle] = {13356}, + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13358] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13352}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13359] = { + [questKeys.preQuestSingle] = {13348}, + [questKeys.nextQuestInChain] = 13360, + }, + [13360] = { + [questKeys.preQuestSingle] = {13359}, + }, + [13361] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31395,32587,32588},32588,"The Prince's Destiny"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Pick it up"), 0, {{"object", 193980},{"object", 194023},{"object", 194024}}}}, + }, + [13363] = { + [questKeys.preQuestSingle] = {13362}, + }, + [13364] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tirion while wearing a Cultist Acolyte's Hood"), 0, {{"monster", 32239}}}}, + }, + [13365] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13358}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13366] = { + [questKeys.sourceItemId] = 44459, + [questKeys.preQuestSingle] = {13352}, + }, + [13367] = { + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13368] = { + [questKeys.preQuestSingle] = {13367}, + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13369] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Request a portal to Orgrimmar"), 0, {{"monster", 32346}}}}, + }, + [13372] = { + [questKeys.startedBy] = {{15989},nil,{44569}}, + }, + [13373] = { + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 0, {{"monster", 31839}}}}, + }, + [13375] = { + [questKeys.startedBy] = {{15989},nil,{44577}}, + }, + [13376] = { + [questKeys.preQuestSingle] = {13373}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 1, {{"monster", 31839}}}}, + [questKeys.objectives] = {{{32188},{32154},{31721}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13377] = { + [questKeys.objectives] = {{{32518,"Assist King Varian Wrynn"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Begin the assault!"), 0, {{"monster", 32401}}}}, + }, + [13379] = { + [questKeys.preQuestSingle] = {13239}, + }, + [13380] = { + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Karen No"), 0, {{"monster", 31648}}}}, + }, + [13382] = { + [questKeys.preQuestSingle] = {13380}, + [questKeys.objectives] = {{{32188},{32154},{31721}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13383] = { + [questKeys.preQuestSingle] = {13291}, + }, + [13386] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13225,12898}, + }, + [13390] = { + [questKeys.startedBy] = {{31237},{193195}}, + }, + [13394] = { + [questKeys.preQuestSingle] = {13393}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Board Refurbished Demolisher"), 0, {{"monster", 32370}}}}, + }, + [13395] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31254,32414,31276},31329}}}, + }, + [13398] = { + [questKeys.preQuestSingle] = {13396}, + }, + [13400] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31395,32587,32588},32588,"The Prince's Destiny"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Pick it up"), 0, {{"object", 193980},{"object", 194023},{"object", 194024}}}}, + }, + [13403] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tirion while wearing a Cultist Acolyte's Hood"), 0, {{"monster", 32239}}}}, + }, + [13404] = { + [questKeys.preQuestSingle] = {13380}, + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13405] = { + [questKeys.triggerEnd] = {"Victory in Strand of the Ancients", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,11338,14163}, + }, + [13406] = { + [questKeys.preQuestSingle] = {13373}, + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 1, {{"monster", 31839}}}}, + }, + [13407] = { + [questKeys.triggerEnd] = {"Victory in Strand of the Ancients", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,11342,14164}, + }, + [13408] = { + [questKeys.preQuestSingle] = {10143,10483}, + }, + [13409] = { + [questKeys.preQuestSingle] = {10124}, + }, + [13410] = { + [questKeys.preQuestSingle] = {10143,10483}, + }, + [13411] = { + [questKeys.preQuestSingle] = {10124}, + }, + [13413] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 1, {{"monster", 32548}}}}, + }, + [13414] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 1, {{"monster", 32548}}}}, + }, + [13415] = { + [questKeys.requiredSourceItems] = {41197,40971}, + }, + [13416] = { + [questKeys.requiredSourceItems] = {41197,40971}, + }, + [13418] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to the ship"), 1, {{"monster", 31081}}}}, + }, + [13419] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to the ship"), 1, {{"monster", 31085}}}}, + }, + [13420] = { + [questKeys.startedBy] = {nil,{193997},{44725}}, + [questKeys.requiredMinRep] = {1119,3000}, + }, + [13422] = { + [questKeys.preQuestSingle] = {12906}, + [questKeys.objectives] = {{{30146,"Exhausted Vrykul Disciplined"}}}, + [questKeys.exclusiveTo] = {13423,13424,13425}, + }, + [13423] = { + [questKeys.preQuestSingle] = {12971}, + [questKeys.exclusiveTo] = {13422,13424,13425}, + }, + [13424] = { + [questKeys.preQuestSingle] = {12997}, + [questKeys.exclusiveTo] = {13422,13423,13425}, + }, + [13425] = { + [questKeys.preQuestSingle] = {12925}, + [questKeys.exclusiveTo] = {13422,13423,13424}, + }, + [13426] = { + [questKeys.preQuestSingle] = {13285}, + [questKeys.nextQuestInChain] = 13034, + }, + [13427] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,14180}, + }, + [13428] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14181,14182,14183}, + }, + [13429] = { + [questKeys.triggerEnd] = {"Help Akama and Maiev enter the Black Temple.", {[zoneIDs.SHADOWMOON_VALLEY]={{71.05,46.11},{66.29,44.06}}}}, + [questKeys.exclusiveTo] = {10985}, + [questKeys.startedBy] = {{18528}}, + [questKeys.finishedBy] = {{18528}}, + [questKeys.preQuestSingle] = {10949}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Let Xi'ri know you're ready to battle"), 1, {{"monster", 18528}}}}, + }, + [13430] = { + [questKeys.exclusiveTo] = {10888}, + [questKeys.preQuestGroup] = {10884,10885,10886}, + }, + [13431] = { + [questKeys.exclusiveTo] = {10901}, + }, + [13432] = { + [questKeys.exclusiveTo] = {10445}, + }, + [13433] = { + [questKeys.startedBy] = {nil,{400041}}, + [questKeys.finishedBy] = {nil,{400041}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13434] = { + [questKeys.startedBy] = {nil,{400042}}, + [questKeys.finishedBy] = {nil,{400042}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13435] = { + [questKeys.startedBy] = {nil,{400040}}, + [questKeys.finishedBy] = {nil,{400040}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13436] = { + [questKeys.startedBy] = {nil,{400046}}, + [questKeys.finishedBy] = {nil,{400046}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13437] = { + [questKeys.startedBy] = {nil,{400045}}, + [questKeys.finishedBy] = {nil,{400045}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13438] = { + [questKeys.startedBy] = {nil,{400043}}, + [questKeys.finishedBy] = {nil,{400043}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13439] = { + [questKeys.startedBy] = {nil,{400044}}, + [questKeys.finishedBy] = {nil,{400044}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13440] = { + [questKeys.startedBy] = {nil,{194032}}, + [questKeys.finishedBy] = {nil,{194032}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13441] = { + [questKeys.startedBy] = {nil,{194033}}, + [questKeys.finishedBy] = {nil,{194033}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13442] = { + [questKeys.startedBy] = {nil,{194035}}, + [questKeys.finishedBy] = {nil,{194035}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13443] = { + [questKeys.startedBy] = {nil,{194036}}, + [questKeys.finishedBy] = {nil,{194036}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13444] = { + [questKeys.startedBy] = {nil,{194038}}, + [questKeys.finishedBy] = {nil,{194038}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13445] = { + [questKeys.startedBy] = {nil,{194040}}, + [questKeys.finishedBy] = {nil,{194040}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13446] = { + [questKeys.startedBy] = {nil,{194044}}, + [questKeys.finishedBy] = {nil,{194044}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13447] = { + [questKeys.startedBy] = {nil,{194045}}, + [questKeys.finishedBy] = {nil,{194045}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13448] = { + [questKeys.startedBy] = {nil,{400037}}, + [questKeys.finishedBy] = {nil,{400037}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13449] = { + [questKeys.startedBy] = {nil,{194049}}, + [questKeys.finishedBy] = {nil,{194049}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13450] = { + [questKeys.startedBy] = {nil,{194034}}, + [questKeys.finishedBy] = {nil,{194034}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13451] = { + [questKeys.startedBy] = {nil,{194037}}, + [questKeys.finishedBy] = {nil,{194037}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13452] = { + [questKeys.startedBy] = {nil,{400023}}, + [questKeys.finishedBy] = {nil,{400023}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13453] = { + [questKeys.startedBy] = {nil,{194039}}, + [questKeys.finishedBy] = {nil,{194039}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13454] = { + [questKeys.startedBy] = {nil,{194042}}, + [questKeys.finishedBy] = {nil,{194042}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13455] = { + [questKeys.startedBy] = {nil,{194043}}, + [questKeys.finishedBy] = {nil,{194043}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13456] = { + [questKeys.startedBy] = {nil,{400025}}, + [questKeys.finishedBy] = {nil,{400025}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13457] = { + [questKeys.startedBy] = {nil,{194046}}, + [questKeys.finishedBy] = {nil,{194046}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13458] = { + [questKeys.startedBy] = {nil,{194048}}, + [questKeys.finishedBy] = {nil,{194048}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13459] = { + [questKeys.startedBy] = {nil,{400026}}, + [questKeys.finishedBy] = {nil,{400026}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13460] = { + [questKeys.startedBy] = {nil,{400028}}, + [questKeys.finishedBy] = {nil,{400028}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13461] = { + [questKeys.startedBy] = {nil,{400033}}, + [questKeys.finishedBy] = {nil,{400033}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13462] = { + [questKeys.startedBy] = {nil,{400034}}, + [questKeys.finishedBy] = {nil,{400034}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13464] = { + [questKeys.startedBy] = {nil,{400020}}, + [questKeys.finishedBy] = {nil,{400020}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13465] = { + [questKeys.startedBy] = {nil,{400022}}, + [questKeys.finishedBy] = {nil,{400022}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13466] = { + [questKeys.startedBy] = {nil,{400021}}, + [questKeys.finishedBy] = {nil,{400021}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13467] = { + [questKeys.startedBy] = {nil,{400029}}, + [questKeys.finishedBy] = {nil,{400029}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13468] = { + [questKeys.startedBy] = {nil,{400030}}, + [questKeys.finishedBy] = {nil,{400030}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13469] = { + [questKeys.startedBy] = {nil,{400027}}, + [questKeys.finishedBy] = {nil,{400027}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13470] = { + [questKeys.startedBy] = {nil,{400024}}, + [questKeys.finishedBy] = {nil,{400024}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13471] = { + [questKeys.startedBy] = {nil,{400035}}, + [questKeys.finishedBy] = {nil,{400035}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13473] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13474] = { + [questKeys.startedBy] = {nil,{194081}}, + [questKeys.finishedBy] = {nil,{194081}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13481] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + }, + [13482] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + }, + [13485] = { + [questKeys.startedBy] = {{32801}}, + [questKeys.finishedBy] = {{32801}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13486] = { + [questKeys.startedBy] = {{32802}}, + [questKeys.finishedBy] = {{32802}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13487] = { + [questKeys.startedBy] = {{32803}}, + [questKeys.finishedBy] = {{32803}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13488] = { + [questKeys.startedBy] = {{32804}}, + [questKeys.finishedBy] = {{32804}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13489] = { + [questKeys.startedBy] = {{32805}}, + [questKeys.finishedBy] = {{32805}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13490] = { + [questKeys.startedBy] = {{32806}}, + [questKeys.finishedBy] = {{32806}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13491] = { + [questKeys.startedBy] = {{32807}}, + [questKeys.finishedBy] = {{32807}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13492] = { + [questKeys.startedBy] = {{32808}}, + [questKeys.finishedBy] = {{32808}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13493] = { + [questKeys.startedBy] = {{32809}}, + [questKeys.finishedBy] = {{32809}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13494] = { + [questKeys.startedBy] = {{32810}}, + [questKeys.finishedBy] = {{32810}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13495] = { + [questKeys.startedBy] = {{32811}}, + [questKeys.finishedBy] = {{32811}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13496] = { + [questKeys.startedBy] = {{32812}}, + [questKeys.finishedBy] = {{32812}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13497] = { + [questKeys.startedBy] = {{32813}}, + [questKeys.finishedBy] = {{32813}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13498] = { + [questKeys.startedBy] = {{32814}}, + [questKeys.finishedBy] = {{32814}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13499] = { + [questKeys.startedBy] = {{32815}}, + [questKeys.finishedBy] = {{32815}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13500] = { + [questKeys.startedBy] = {{32816}}, + [questKeys.finishedBy] = {{32816}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13501] = { + [questKeys.startedBy] = {nil,{400031}}, + [questKeys.finishedBy] = {nil,{400031}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13548] = { + [questKeys.startedBy] = {nil,{400036}}, + [questKeys.finishedBy] = {nil,{400036}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13549] = { + [questKeys.objectives] = {{{29327,"Female Frost Leopards recovered"},{29319,"Female Icepaw Bears recovered"},},nil,nil,nil,}, + }, + [13559] = { + [questKeys.preQuestSingle] = {12924}, + }, + [13592] = { -- HUMAN A Valiant's Field Training + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13744,13749,13760,13755}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13593] = { -- HUMAN Valiant Of Stormwind + [questKeys.preQuestSingle] = {13725,13713,13723,13724}, + [questKeys.exclusiveTo] = {13684,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13600] = { -- HUMAN A Worthy Weapon + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13603] = { -- HUMAN A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13600,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13604] = { + [questKeys.startedBy] = {{32867,32927},nil,{45506}}, + }, + [13607] = { + [questKeys.triggerEnd] = {"Entrance to Celestial Planetarium located",{[zoneIDs.THE_ARCHIVUM]={{60,46.3}},[zoneIDs.ULDUAR]={{-1,-1}}}}, + [questKeys.preQuestSingle] = {13604}, + }, + [13616] = { -- HUMAN The Edge Of Winter + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13600,13603,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13625] = { + [questKeys.objectives] = {{{33229,"Use Thrust on Melee Target"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"},{33272,"Use Charge on vulnerable Charge Target"}}}, + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13627] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {}, + }, + [13631] = { + [questKeys.startedBy] = {{32871},nil,{46052}}, + }, + [13633] = { + [questKeys.preQuestSingle] = {13667}, + }, + [13634] = { + [questKeys.preQuestSingle] = {13668}, + }, + [13662] = { + [questKeys.preQuestSingle] = {7722}, + [questKeys.requiredMinRep] = {59,3000}, + [questKeys.requiredMaxRep] = {59,9000}, + }, + [13663] = { + [questKeys.objectives] = {{{33513,"Black Knight's Gryphon taken"}},nil,{{45121},{45122}}}, + }, + [13664] = { + [questKeys.preQuestSingle] = {13700,13701}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33870}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Cavin"), 0, {{"monster", 33522}}}, + }, + }, + [13665] = { -- HUMAN The Grand Melee + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13745,13750,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33800}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13666] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13669,13670}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + }, + [13669] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13666,13670}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + }, + [13670] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13666,13669}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + }, + [13671] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679}, + [questKeys.parentQuest] = 0, + }, + [13672] = { + [questKeys.childQuests] = {}, + }, + [13673] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13674,13675,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + }, + [13674] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13673,13675,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + }, + [13675] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13673,13674,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + }, + [13676] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13680}, + [questKeys.parentQuest] = 0, + }, + [13677] = { + [questKeys.objectives] = {{{33229,"Use Thrust on Melee Target"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"},{33272,"Use Charge on vulnerable Charge Target"}}}, + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13678] = { + [questKeys.childQuests] = {}, + }, + [13679] = { + [questKeys.objectives] = {{{33448,"Argent Valiant defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire David"), 0, {{"monster", 33447}}}, + }, + }, + [13680] = { + [questKeys.objectives] = {{{33448,"Argent Valiant defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire David"), 0, {{"monster", 33447}}}, + }, + }, + [13681] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {}, + }, + [13682] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13697] = { -- ORC The Valiant's Charge + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13699] = { -- HUMAN The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33800}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13703] = { -- DWARF Valiant Of Ironforge + [questKeys.preQuestSingle] = {13699,13725,13724,13723}, + [questKeys.exclusiveTo] = {13685,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13704] = { -- GNOME Valiant Of Gnomeregan + [questKeys.preQuestSingle] = {13699,13725,13713,13724}, + [questKeys.exclusiveTo] = {13688,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13705] = { -- DRAENEI Valiant Of The Exodar + [questKeys.preQuestSingle] = {13699,13725,13713,13723}, + [questKeys.exclusiveTo] = {13690,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13706] = { -- NIGHT ELF Valiant Of Darnassus + [questKeys.preQuestSingle] = {13699,13724,13713,13723}, + [questKeys.exclusiveTo] = {13689,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13707] = { -- ORC Valiant Of Orgrimmar + [questKeys.preQuestSingle] = {13727,13728,13729,13731}, + [questKeys.exclusiveTo] = {13691,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13708] = { -- TROLL Valiant Of Sen'jin + [questKeys.preQuestSingle] = {13726,13728,13729,13731}, + [questKeys.exclusiveTo] = {13693,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13709] = { -- TAUREN Valiant Of Thunder Bluff + [questKeys.preQuestSingle] = {13726,13727,13729,13731}, + [questKeys.exclusiveTo] = {13694,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13710] = { -- UNDEAD Valiant Of Undercity + [questKeys.preQuestSingle] = {13726,13727,13728,13731}, + [questKeys.exclusiveTo] = {13695,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13711] = { -- BLOOD ELF Valiant Of Silvermoon + [questKeys.preQuestSingle] = {13726,13727,13728,13729}, + [questKeys.exclusiveTo] = {13696,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13713] = { -- DWARF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33795}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13714] = { -- DWARF The Valiant's Charge + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13715] = { -- GNOME The Valiant's Charge + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13716] = { -- DRAENEI The Valiant's Charge + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13717] = { -- NIGHT ELF The Valiant's Charge + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13718] = { -- HUMAN The Valiant's Charge + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13719] = { -- TROLL The Valiant's Charge + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13720] = { -- TAUREN The Valiant's Charge + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13721] = { -- UNDEAD The Valiant's Charge + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13722] = { -- BLOOD ELF The Valiant's Charge + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13723] = { -- GNOME The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33793}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13724] = { -- DRAENEI The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33790}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13725] = { -- NIGHT ELF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13726] = { -- ORC The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33799}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13727] = { -- TROLL The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13728] = { -- TAUREN The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33792}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13729] = { -- UNDEAD The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33798}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13731] = { -- BLOOD ELF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33791}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13741] = { -- DWARF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13742] = { -- DWARF A Worthy Weapon + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13741,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13743] = { -- DWARF The Edge Of Winter + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13741,13742,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13744] = { -- DWARF A Valiant's Field Training + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13592,13749,13755,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13745] = { -- DWARF The Grand Melee + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13665,13750,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33795}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13746] = { -- GNOME A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13747] = { -- GNOME A Worthy Weapon + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13746,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13748] = { -- GNOME The Edge Of Winter + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13746,13747,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13749] = { -- GNOME A Valiant's Field Training + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13592,13744,13755,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13750] = { -- GNOME The Grand Melee + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13665,13745,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33793}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13752] = { -- DRAENEI A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13753] = { -- DRAENEI A Worthy Weapon + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13754] = { -- DRAENEI The Edge Of Winter + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13755] = { -- DRAENEI A Valiant's Field Training + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13592,13744,13749,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13756] = { -- DRAENEI The Grand Melee + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13665,13745,13750,13761}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33790}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13757] = { -- NIGHT ELF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13758] = { -- NIGHT ELF A Worthy Weapon + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13759] = { -- NIGHT ELF The Edge Of Winter + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13760] = { -- NIGHT ELF A Valiant's Field Training + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13592,13744,13749,13755}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13761] = { -- NIGHT ELF The Grand Melee + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13665,13745,13750,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13762] = { -- ORC A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13763] = { -- ORC A Worthy Weapon + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13762,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13764] = { -- ORC The Edge Of Winter + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13762,13763,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13765] = { -- ORC A Valiant's Field Training + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13771,13776,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13767] = { -- ORC The Grand Melee + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13772,13777,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33799}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13768] = { -- TROLL A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13769] = { -- TROLL A Worthy Weapon + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13768,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13770] = { -- TROLL The Edge Of Winter + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13768,13769,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13771] = { -- TROLL A Valiant's Field Training + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13765,13776,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13772] = { -- TROLL The Grand Melee + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13767,13777,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13773] = { -- TAUREN A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13774] = { -- TAUREN A Worthy Weapon + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13773,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13775] = { -- TAUREN The Edge Of Winter + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13773,13774,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13776] = { -- TAUREN A Valiant's Field Training + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13765,13771,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13777] = { -- TAUREN The Grand Melee + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13767,13772,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33792}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13778] = { -- UNDEAD A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13779] = { -- UNDEAD A Worthy Weapon + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13780] = { -- UNDEAD The Edge Of Winter + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13781] = { -- UNDEAD A Valiant's Field Training + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13765,13771,13776,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13782] = { -- UNDEAD The Grand Melee + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13767,13772,13777,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33798}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13783] = { -- BLOOD ELF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13784] = { -- BLOOD ELF A Worthy Weapon + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13785] = { -- BLOOD ELF The Edge Of Winter + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13786] = { -- BLOOD ELF A Valiant's Field Training + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13765,13771,13776,13781}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13787] = { -- BLOOD ELF The Grand Melee + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13767,13772,13777,13782}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33791}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13788] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13789] = { + [questKeys.preQuestSingle] = {13700}, + }, + [13790] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794},{"monster", 33800},{"monster", 33793},{"monster", 33795},{"monster", 33790}}}}, + }, + [13791] = { + [questKeys.preQuestSingle] = {13700}, + }, + [13793] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794},{"monster", 33800},{"monster", 33793},{"monster", 33795},{"monster", 33790}}}}, + }, + [13795] = { + [questKeys.preQuestSingle] = {13702,13732,13733,13734,13735,13736,13737,13738,13739,13740}, + }, + [13809] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13810] = { + [questKeys.preQuestSingle] = {13701}, + }, + [13811] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796},{"monster", 33798},{"monster", 33799},{"monster", 33791},{"monster", 33792}}}}, + }, + [13812] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13813] = { + [questKeys.preQuestSingle] = {13701}, + }, + [13814] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796},{"monster", 33798},{"monster", 33799},{"monster", 33791},{"monster", 33792}}}}, + }, + [13816] = { + [questKeys.triggerEnd] = {"Entrance to Celestial Planetarium located",{[zoneIDs.THE_ARCHIVUM]={{60,46.3}},[zoneIDs.ULDUAR]={{-1,-1}}}}, + [questKeys.preQuestSingle] = {13817}, + }, + [13817] = { + [questKeys.preQuestSingle] = {}, + [questKeys.startedBy] = {{32867,32927},nil,{45857}}, + }, + [13819] = { + [questKeys.startedBy] = {{32871},nil,{46053}}, + }, + [13820] = { + [questKeys.startedBy] = {{33817}}, + [questKeys.finishedBy] = {{33434}}, + [questKeys.exclusiveTo] = {13627}, + }, + [13825] = { + [questKeys.startedBy] = {{8125}}, + [questKeys.finishedBy] = {{8125}}, + -- [questKeys.exclusiveTo] = {6610}, -- This is not ideal. You can only do 13825 if you completed 6610 prior to Wotlk. But now with Wotlk you do 6610 and then can not do 13825 + [questKeys.requiredSkill] = {185,225}, + }, + [13826] = { + [questKeys.startedBy] = {{12919}}, + [questKeys.finishedBy] = {{12919}}, + -- [questKeys.exclusiveTo] = {6607}, -- This is not ideal. You can only do 13826 if you completed 6607 prior to Wotlk. But now with Wotlk you do 6607 and then can not do 13826 + [questKeys.requiredSkill] = {356,225}, + }, + [13828] = { + [questKeys.objectives] = {{{33973,"Jeran Lockwood's advice"},{33229,"Use Thrust on Melee Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13829] = { + [questKeys.objectives] = {{{33973,"Jeran Lockwood's advice"},{33229,"Use Thrust on Melee Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13830] = { + [questKeys.triggerEnd] = {"Discover the Ghostfish mystery",{[zoneIDs.SHOLAZAR_BASIN]={{48.89,62.29,},},},}, + }, + [13832] = { + [questKeys.extraObjectives] = {{{[zoneIDs.THE_UNDERBELLY]={{46,68}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Corroded Jewelry")}}, + }, + [13833] = { + [questKeys.extraObjectives] = {{{[zoneIDs.BOREAN_TUNDRA]={{57.5,33.2},{62.2,64.2},{45,45}}}, Questie.ICON_TYPE_SLAY, l10n("Slay any beast, jump in any water location and fish in the Pool of Blood"), 0}}, + }, + [13834] = { + [questKeys.extraObjectives] = {{{[zoneIDs.WINTERGRASP]={{70,36},{63,60},{50,44},{37.6,36},{56,66},{42,75},{34.7,19.5}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Terror Fish"), 0}}, + }, + [13835] = { + [questKeys.objectives] = {{{33974,"Valis Windchaser's advice"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13836] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DALARAN]={{64,64}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Severed Arm")}}, + }, + [13837] = { + [questKeys.objectives] = {{{33972,"Rugan Steelbelly's advice"},{33272,"Charge vulnerable Charge Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13838] = { + [questKeys.objectives] = {{{33974,"Valis Windchaser's advice"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13839] = { + [questKeys.objectives] = {{{33972,"Rugan Steelbelly's advice"},{33272,"Charge vulnerable Charge Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13843] = { + [questKeys.startedBy] = {nil,{191761}}, + [questKeys.finishedBy] = {nil,{191761}}, + [questKeys.preQuestSingle] = {12889}, + [questKeys.requiredSpell] = -55252, + [questKeys.requiredSkill] = {profKeys.ENGINEERING,400}, + }, + [13846] = { + [questKeys.preQuestSingle] = {13700,13701}, + [questKeys.requiredMaxRep] = {1106,42000}, + }, + [13847] = { -- HUMAN At The Enemy's Gates + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13851,13852,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13850] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Melee attack Venomhide Ravasaur"), 0, {{"monster", 6508}}}}, + }, + [13851] = { -- DWARF At The Enemy's Gates + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13847,13852,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13852] = { -- GNOME At The Enemy's Gates + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13847,13851,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13854] = { -- DRAENEI At The Enemy's Gates + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13847,13851,13852,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13855] = { -- NIGHT ELF At The Enemy's Gates + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13847,13851,13852,13854}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13856] = { -- ORC At The Enemy's Gates + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13857,13858,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13857] = { -- TROLL At The Enemy's Gates + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13856,13858,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13858] = { -- TAUREN At The Enemy's Gates + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13856,13857,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13859] = { -- BLOOD ELF At The Enemy's Gates + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13856,13857,13858,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13860] = { -- UNDEAD At The Enemy's Gates + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13856,13857,13858,13859}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13861] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13862] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13863] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13864] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13887] = { + [questKeys.preQuestSingle] = {13850}, + }, + [13906] = { + [questKeys.preQuestSingle] = {13887}, + }, + [13929] = { + [questKeys.triggerEnd] = {"Roo taken to visit Grizzlemaw", {[zoneIDs.GRIZZLY_HILLS]={{50.7,43.9}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13930] = { + [questKeys.triggerEnd] = {"Keken taken to visit Grizzlemaw", {[zoneIDs.GRIZZLY_HILLS]={{50.7,43.9}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13931] = { + [questKeys.preQuestSingle] = {11409}, + }, + [13932] = { + [questKeys.preQuestSingle] = {11318}, + }, + [13933] = { + [questKeys.triggerEnd] = {"Roo taken to visit Bronze Dragonshrine", {[zoneIDs.DRAGONBLIGHT]={{72,39}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13934] = { + [questKeys.triggerEnd] = {"Keken taken to visit Bronze Dragonshrine", {[zoneIDs.DRAGONBLIGHT]={{72,39}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13937] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Buy a Small Paper Zeppelin"), 0, {{"monster", 29478}}}}, + [questKeys.objectives] = {{{33533,"Throw Small Paper Zeppelin to Roo"},},nil,nil,nil,}, + [questKeys.preQuestGroup] = {13954,13956}, + [questKeys.nextQuestInChain] = 13959, + [questKeys.exclusiveTo] = {13927}, + }, + [13938] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Buy a Small Paper Zeppelin"), 0, {{"monster", 29478}}}}, + [questKeys.objectives] = {{{33532,"Throw Small Paper Zeppelin to Kekek"},},nil,nil,nil,}, + [questKeys.preQuestGroup] = {13955,13957}, + [questKeys.nextQuestInChain] = 13960, + [questKeys.exclusiveTo] = {13926}, + }, + [13950] = { + [questKeys.triggerEnd] = {"Roo taken to visit Winterfin Retreat", {[zoneIDs.BOREAN_TUNDRA]={{43.5,13.6}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13951] = { + [questKeys.triggerEnd] = {"Keken taken to visit Snowfall Glade", {[zoneIDs.DRAGONBLIGHT]={{46,61},{44,70}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13954] = { + [questKeys.triggerEnd] = {"Roo taken to visit Alexstrasza the Life-Binder", {[zoneIDs.DRAGONBLIGHT]={{59.8,54.5}}}}, -- oracle orphan + [questKeys.preQuestGroup] = {13929,13933,13950}, + [questKeys.exclusiveTo] = {13927}, + }, + [13955] = { + [questKeys.triggerEnd] = {"Keken taken to visit Alexstrasza the Life-Binder", {[zoneIDs.DRAGONBLIGHT]={{59.8,54.5}}}}, -- wolvar orphan + [questKeys.preQuestGroup] = {13930,13934,13951}, + [questKeys.exclusiveTo] = {13926}, + }, + [13956] = { + [questKeys.triggerEnd] = {"Roo taken to visit The Etymidian", {[zoneIDs.UN_GORO_CRATER]={{47.38,9.21}}}}, -- oracle orphan + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{40.3,83.3}}}, Questie.ICON_TYPE_EVENT, l10n("Use the waygate to teleport to Un'goro Crater")}}, + [questKeys.preQuestGroup] = {13929,13933,13950}, + [questKeys.exclusiveTo] = {13927}, + }, + [13957] = { + [questKeys.triggerEnd] = {"Keken taken to visit Hemet Nesingwary", {[zoneIDs.SHOLAZAR_BASIN]={{27.1,58.8}}}}, -- wolvar orphan + [questKeys.preQuestGroup] = {13930,13934,13951}, + [questKeys.exclusiveTo] = {13926}, + }, + [13959] = { + [questKeys.preQuestSingle] = {13937}, + [questKeys.exclusiveTo] = {13927}, + }, + [13960] = { + [questKeys.preQuestSingle] = {13938}, + [questKeys.exclusiveTo] = {13926}, + }, + [13966] = { + [questKeys.exclusiveTo] = {11528,13203}, + }, + [14016] = { + [questKeys.specialFlags] = nil, + [questKeys.questFlags] = 128, + [questKeys.objectives] = {nil,nil,nil,nil,{{{35127},35127,"Investigate the Black Knight's Grave"}}}, + }, + [14023] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14024, + }, + [14024] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14028, + [questKeys.preQuestSingle] = {14023}, + }, + [14028] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14030, + [questKeys.preQuestSingle] = {14024}, + }, + [14030] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14033, + [questKeys.preQuestSingle] = {14028}, + }, + [14033] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14035, + [questKeys.preQuestSingle] = {14030}, + }, + [14035] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.preQuestSingle] = {14033}, + }, + [14037] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14040, + }, + [14040] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14041, + [questKeys.preQuestSingle] = {14037}, + }, + [14041] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14043, + [questKeys.preQuestSingle] = {14040}, + }, + [14043] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14044, + [questKeys.preQuestSingle] = {14041}, + }, + [14044] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14047, + [questKeys.preQuestSingle] = {14043}, + }, + [14047] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.preQuestSingle] = {14044}, + }, + [14048] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14051] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14053] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14054] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14055] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14058] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14059] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14060] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14061] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14062] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14064] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14065] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14076] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use your drum near a Mysterious Snow Mound"), 0, {{"object", 195309}}}}, + }, + [14079] = { + [questKeys.requiredRaces] = raceIDs.HUMAN, + }, + [14081] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [14082] = { + [questKeys.requiredRaces] = raceIDs.DRAENEI, + }, + [14083] = { + [questKeys.requiredRaces] = raceIDs.DWARF, + }, + [14084] = { + [questKeys.requiredRaces] = raceIDs.GNOME, + }, + [14085] = { + [questKeys.requiredRaces] = raceIDs.NIGHT_ELF, + }, + [14086] = { + [questKeys.requiredRaces] = raceIDs.ORC, + }, + [14087] = { + [questKeys.requiredRaces] = raceIDs.TAUREN, + }, + [14088] = { + [questKeys.requiredRaces] = raceIDs.TROLL, + }, + [14089] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14090] = { + [questKeys.objectives] = {{{29618,"Snowblind Follower captured"}}}, + }, + [14092] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use your drum near a Mysterious Snow Mound"), 0, {{"object", 195309}}}}, + }, + [14101] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{50.4,15.6}}}, Questie.ICON_TYPE_EVENT, l10n("Summon Drottinn Hrothgar using the Kvaldir War Horn")}}, + }, + [14102] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{43.8,24.6}}}, Questie.ICON_TYPE_EVENT, l10n("Summon Mistcaller Yngvar using the Mistcaller's Charm")}}, + }, + [14103] = { + [questKeys.specialFlags] = 1, + [questKeys.startedBy] = {{28701}}, + [questKeys.finishedBy] = {{28701}}, + }, + [14104] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{58.59,31.72}}}, Questie.ICON_TYPE_EVENT, l10n("Provoke Ornolf the Scarred using the Captured Kvaldir Banner")}}, + }, + [14107] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{32149},32149,"Fallen Hero's Spirit blessed"}}}, + }, + [14108] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 35117}}}}, + [questKeys.objectives] = {{{34925,"Hurl Spears at North Sea Kraken"},{35092}}}, + }, + [14112] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Take chum"), 0, {{"object", 195352}}}}, + }, + [14141] = { + [questKeys.objectives] = {{{29618,"Snowblind Follower captured"}}}, + }, + [14145] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Take chum"), 0, {{"object", 195353}}}}, + }, + [14151] = { + [questKeys.objectives] = {}, + [questKeys.requiredSpell] = -66659, + [questKeys.requiredSkill] = {171,450}, + [questKeys.triggerEnd] = {"Epic Gem Transmutes", {[zoneIDs.DALARAN]={{42.25,32.06}}}}, + }, + [14163] = { + [questKeys.triggerEnd] = {"Victory in the Isle of Conquest", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,11338,13405}, + }, + [14164] = { + [questKeys.triggerEnd] = {"Victory in the Isle of Conquest", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,11342,13407}, + }, + [14178] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14179,14180,13427}, + }, + [14179] = { + [questKeys.triggerEnd] = {"Victory in the Eye of the Storm", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,13427}, + }, + [14180] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,13427}, + }, + [14181] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14182,14183}, + }, + [14182] = { + [questKeys.triggerEnd] = {"Victory in Eye of the Storm", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14181,14183}, + }, + [14183] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14181,14182}, + }, + [14199] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256}, + }, + [14352] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [14349] = { + [questKeys.preQuestGroup] = {6022,6042,6133,6135,6136}, + }, + [14418] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14419] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14420] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14421] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14444] = { + [questKeys.objectives] = {{{27990,"Ask Krasus about the hilt's origins"}}}, + }, + [14483] = { + [questKeys.startedBy] = {{36296},nil,{49641}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [20438] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ask Shandy Glossgleam to lend you a tabard"), 0, {{"monster", 36856}}}}, + }, + [24216] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24221}, + }, + [24217] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 20, + }, + [24218] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24220}, + }, + [24219] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 20, + }, + [24220] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24218}, + }, + [24221] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24216}, + }, + [24223] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24224,24427}, + }, + [24224] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24223,24427}, + }, + [24225] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24226,24426}, + }, + [24226] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24225,24426}, + }, + [24426] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24225,24226}, + }, + [24427] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24223,24224}, + }, + [24428] = { + [questKeys.startedBy] = {{10184},nil,{49644}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24429] = { + [questKeys.startedBy] = {{10184},nil,{49643}}, + }, + [24431] = { + [questKeys.specialFlags] = 1, + }, + [24461] = { + [questKeys.sourceItemId] = 49723, + }, + [24498] = { + [questKeys.objectives] = {{{36494}},nil,nil,nil,{{{36764,36765,36766,36767},36764,"Alliance Slaves freed"}}}, + [questKeys.preQuestSingle] = {24683}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free the slave"), 1, {{"object", 202168}}}}, + }, + [24499] = { + [questKeys.objectives] = {{{36497},{36502}}}, + }, + [24500] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.finishedBy] = {{36955}}, + [questKeys.objectives] = {{{36955,"Find Jaina Proudmoore"},{36954,"Escape the Lich King"}}}, + }, + [24507] = { + [questKeys.objectives] = {{{36494}},nil,nil,nil,{{{36770,36771,36772,36773},36770,"Horde Slaves freed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free the slave"), 1, {{"object", 202168}}}}, + }, + [24510] = { + [questKeys.reputationReward] = {{1050,25}}, + }, + [24511] = { + [questKeys.objectives] = {{{36497},{36502}}}, + }, + [24535] = { + [questKeys.objectives] = {{{37205,"Thalorien's Blessing obtained"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Examine the remains"), 0, {{"monster", 37552}}}}, + }, + [24536] = { + [questKeys.objectives] = {{{3296}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Snagglebolt's Air Analyzer on perfumed guards"), 0, {{"monster", 3296}}}}, + }, + [24541] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab the package"), 0, {{"monster", 37671}}}}, + [questKeys.sourceItemId] = 49867, + }, + [24545] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.DEATH_KNIGHT, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {nil,{201742}}, + [questKeys.nextQuestInChain] = 24743, + [questKeys.requiredMinRep] = {1156,3000}, + }, + [24547] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24743}, + }, + [24548] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24757}, + [questKeys.nextQuestInChain] = 24912, + }, + [24549] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24912}, + [questKeys.nextQuestInChain] = 24748, + }, + [24553] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.requiredSourceItems] = {49879}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24555] = { + [questKeys.objectives] = {{{27990,"Ask Krasus about the hilt's origins"}}}, + }, + [24556] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ask Shandy Glossgleam to lend you a tabard"), 0, {{"monster", 36856}}}}, + }, + [24559] = { + [questKeys.sourceItemId] = 49723, + }, + [24563] = { + [questKeys.objectives] = {{{37205,"Thalorien's Blessing obtained"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Examine the remains"), 0, {{"monster", 37552}}}}, + }, + [24564] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24579] = { + [questKeys.exclusiveTo] = {24580,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24580] = { + [questKeys.exclusiveTo] = {24579,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24581] = { + [questKeys.exclusiveTo] = {24579,24580,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24582] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24583] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24584,24585,24586,24587,24588,24589,24590}, + }, + [24584] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24585,24586,24587,24588,24589,24590}, + }, + [24585] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24586,24587,24588,24589,24590}, + }, + [24586] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24587,24588,24589,24590}, + }, + [24587] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24588,24589,24590}, + }, + [24588] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24589,24590}, + }, + [24589] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24590}, + }, + [24590] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24589}, + }, + [24594] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24595] = { + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.requiredSourceItems] = {49879}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24596] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24597] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24598] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24609] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24610] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24611] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24612] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24613] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24614] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24615] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + -- Hackfix to hide the other two as a available once one of the random three dailies has been accepted + [24629] = { + [questKeys.exclusiveTo] = {24635, 24636}, + }, + [24635] = { + [questKeys.exclusiveTo] = {24629, 24636}, + }, + [24636] = { + [questKeys.exclusiveTo] = {24629, 24635}, + }, + [24638] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24645, 24647, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400048,"Chemical Wagon Destroyed"}},nil,nil,{{{37214},37214}}}, + [questKeys.requiredMaxLevel] = 13, + }, + [24645] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24647, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400049,"Chemical Wagon Destroyed"}},nil,nil,{{{37917},37917}}}, + [questKeys.requiredMaxLevel] = 22, + }, + [24647] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400052,"Chemical Wagon Destroyed"}},nil,nil,{{{37984},37984}}}, + [questKeys.requiredMaxLevel] = 31, + }, + [24648] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400053,"Chemical Wagon Destroyed"}},nil,nil,{{{38006},38006}}}, + [questKeys.requiredMaxLevel] = 40, + }, + [24649] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400054,"Chemical Wagon Destroyed"}},nil,nil,{{{38016},38016}}}, + [questKeys.requiredMaxLevel] = 50, + }, + [24650] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24651, 24652}, + [questKeys.objectives] = {nil,{{400055,"Chemical Wagon Destroyed"}},nil,nil,{{{38023},38023}}}, + [questKeys.requiredMaxLevel] = 60, + }, + [24651] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24650, 24652}, + [questKeys.objectives] = {nil,{{400056,"Chemical Wagon Destroyed"}},nil,nil,{{{38030},38030}}}, + [questKeys.requiredMaxLevel] = 70, + }, + [24652] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24650, 24651}, + [questKeys.objectives] = {nil,{{400057,"Chemical Wagon Destroyed"}},nil,nil,{{{38032},38032}}}, + }, + [24655] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{68,1976},1976}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Snagglebolt's Air Analyzer on perfumed guards"), 0, {{"monster", 68},{"monster", 1976}}}}, + }, + [24656] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab the package"), 0, {{"monster", 38065}}}}, + [questKeys.sourceItemId] = 49867, + }, + [24658] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24659, 24660, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400050,"Chemical Wagon Destroyed"}},nil,nil,{{{37214},37214}}}, + [questKeys.requiredMaxLevel] = 13, + }, + [24659] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24660, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400051,"Chemical Wagon Destroyed"}},nil,nil,{{{37917},37917}}}, + [questKeys.requiredMaxLevel] = 22, + }, + [24660] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400052,"Chemical Wagon Destroyed"}},nil,nil,{{{37984},37984}}}, + [questKeys.requiredMaxLevel] = 31, + }, + [24662] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400053,"Chemical Wagon Destroyed"}},nil,nil,{{{38006},38006}}}, + [questKeys.requiredMaxLevel] = 40, + }, + [24663] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400054,"Chemical Wagon Destroyed"}},nil,nil,{{{38016},38016}}}, + [questKeys.requiredMaxLevel] = 50, + }, + [24664] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24665, 24666}, + [questKeys.objectives] = {nil,{{400055,"Chemical Wagon Destroyed"}},nil,nil,{{{38023},38023}}}, + [questKeys.requiredMaxLevel] = 60, + }, + [24665] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24664, 24666}, + [questKeys.objectives] = {nil,{{400056,"Chemical Wagon Destroyed"}},nil,nil,{{{38030},38030}}}, + [questKeys.requiredMaxLevel] = 70, + }, + [24666] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24664, 24665}, + [questKeys.objectives] = {nil,{{400057,"Chemical Wagon Destroyed"}},nil,nil,{{{38032},38032}}}, + }, + [24683] = { + [questKeys.preQuestSingle] = {24499}, + }, + [24710] = { + [questKeys.preQuestSingle] = {24498}, + }, + [24711] = { + [questKeys.preQuestSingle] = {24710}, + }, + [24743] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24545}, + [questKeys.nextQuestInChain] = 24547, + }, + [24745] = { + [questKeys.startedBy] = {{36296},nil,{50320}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24748] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24549}, + [questKeys.objectives] = {{{36597,"Lich King Defeated"}}}, + }, + [24749] = { + [questKeys.preQuestSingle] = {24547}, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{36678,"Infuse Shadow's Edge with Unholy power then slay Putricide."}}}, + }, + [24756] = { + [questKeys.preQuestSingle] = {24749}, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{37955,"Infuse Shadow's Edge with Blood then defeat Lana'thel."}}}, + }, + [24757] = { + [questKeys.preQuestSingle] = {24756}, + [questKeys.nextQuestInChain] = 24548, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{36853,"Infuse Shadow's Edge with Frost then slay Sindragosa."}}}, + }, + [24792] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + }, + [24793] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + }, + [24795] = { + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24796] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24798] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24799] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24800] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24801] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24802] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.finishedBy] = {{37554}}, + [questKeys.objectives] = {{{37554,"Find Sylvanas Windrunner"},{36954,"Escape the Lich King"}}}, + }, + [24803] = { + [questKeys.specialFlags] = 1, + }, + [24815] = { + [questKeys.requiredMinRep] = {1156,3000}, + }, + [24819] = { -- A Change of Heart - Destruction friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24811}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24820] = { -- A Change of Heart - Vengeance friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24810}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24821] = { -- A Change of Heart - Courage friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24808}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24822] = { -- A Change of Heart - Wisdom friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24809}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24823] = { -- Path of Destruction - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24828,24811}, + }, + [24825] = { -- Path of Wisdom - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24809}, + }, + [24826] = { -- Path of Vengeance - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24810}, + }, + [24827] = { -- Path of Courage - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24808}, + }, + [24828] = { -- Path of Destruction - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24811}, + }, + [24829] = { -- Path of Destruction - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24823,24811}, + }, + [24830] = { -- Path of Wisdom - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24825,24809}, + }, + [24831] = { -- Path of Wisdom - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24830,24809}, + }, + [24832] = { -- Path of Vengeance - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24826,24810}, + }, + [24833] = { -- Path of Vengeance - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24832,24810}, + }, + [24834] = { -- Path of Courage - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24827,24808}, + }, + [24835] = { -- Path of Courage - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24834,24808}, + }, + [24836] = { -- A Change of Heart - Destruction honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24828,24811}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24837] = { -- A Change of Heart - wisdom honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24825,24809}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24838] = { -- A Change of Heart - vengeance honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24826,24810}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24839] = { -- A Change of Heart - courage honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24827,24808}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24840] = { -- A Change of Heart - Destruction revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24823,24811}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24841] = { -- A Change of Heart - Wisdom revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24830,24809}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24842] = { -- A Change of Heart - Vengeance revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24832,24810}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24843] = { -- A Change of Heart - Courage revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24834,24808}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24844] = { -- A Change of Heart - Destruction exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24829,24811}, + }, + [24845] = { -- A Change of Heart - Wisdom exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24831,24809}, + }, + [24846] = { -- A Change of Heart - Vengeance exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24833,24810}, + }, + [24847] = { -- A Change of Heart - Courage exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24835,24808}, + }, + [24857] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24869] = { -- 10man + [questKeys.startedBy] = {{38471}}, + [questKeys.finishedBy] = {{38471}}, + [questKeys.exclusiveTo] = {24870,24871,24872,24873,24874}, + }, + [24870] = { -- 10man + [questKeys.startedBy] = {{38491}}, + [questKeys.finishedBy] = {{38491}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.exclusiveTo] = {24869,24872,24873,24874}, + }, + [24871] = { -- 10man + [questKeys.startedBy] = {{38492}}, + [questKeys.finishedBy] = {{38492}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.exclusiveTo] = {24869,24872,24873,24874}, + }, + [24872] = { -- 10man + [questKeys.startedBy] = {{38589}}, + [questKeys.finishedBy] = {{38017}}, + [questKeys.exclusiveTo] = {24869,24870,24871,24873,24874}, + }, + [24873] = { -- 10man + [questKeys.startedBy] = {{38501}}, + [questKeys.finishedBy] = {{38501}}, + [questKeys.objectives] = {{{38501,"Return with two strains of Blight"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Slime Spray to get the Green Blight strain"), 0, {{"monster", 36627}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Gaseous Blight to get the Orange Blight strain"), 0, {{"monster", 36626}}}, + }, + [questKeys.exclusiveTo] = {24869,24870,24871,24872,24874}, + }, + [24874] = { -- 10man + [questKeys.startedBy] = {{38551}}, + [questKeys.finishedBy] = {{38558}}, + [questKeys.exclusiveTo] = {24869,24870,24871,24872,24873}, + }, + [24875] = { -- 25man + [questKeys.startedBy] = {{38471}}, + [questKeys.finishedBy] = {{38471}}, + [questKeys.exclusiveTo] = {24876,24877,24878,24879,24880}, + }, + [24876] = { -- 25man + [questKeys.startedBy] = {{38492}}, + [questKeys.finishedBy] = {{38492}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.exclusiveTo] = {24875,24878,24879,24880}, + }, + [24877] = { -- 25man + [questKeys.startedBy] = {{38491}}, + [questKeys.finishedBy] = {{38491}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.exclusiveTo] = {24875,24878,24879,24880}, + }, + [24878] = { -- 25man + [questKeys.startedBy] = {{38501}}, + [questKeys.finishedBy] = {{38501}}, + [questKeys.objectives] = {{{38501,"Return with two strains of Blight"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Slime Spray to get the Green Blight strain"), 0, {{"monster", 36627}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Gaseous Blight to get the Orange Blight strain"), 0, {{"monster", 36626}}}, + }, + [questKeys.exclusiveTo] = {24875,24876,24877,24879,24880}, + }, + [24879] = { -- 25man + [questKeys.startedBy] = {{38551}}, + [questKeys.finishedBy] = {{38558}}, + [questKeys.exclusiveTo] = {24875,24876,24877,24878,24880}, + }, + [24880] = { -- 25man + [questKeys.startedBy] = {{38589}}, + [questKeys.finishedBy] = {{38017}}, + [questKeys.exclusiveTo] = {24875,24876,24877,24878,24879}, + }, + [24912] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24548}, + [questKeys.nextQuestInChain] = 24549, + }, + [24914] = { + [questKeys.startedBy] = {{36597},nil,{53135}}, + [questKeys.preQuestSingle] = {24549}, + }, + [24915] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24916] = { + [questKeys.startedBy] = {{38606}}, + [questKeys.finishedBy] = {{38606}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24917] = { + [questKeys.startedBy] = {{38607}}, + [questKeys.finishedBy] = {{38607}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24918] = { + [questKeys.startedBy] = {{38609}}, + [questKeys.finishedBy] = {{38609}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24919] = { + [questKeys.startedBy] = {{38608}}, + [questKeys.finishedBy] = {{38608}}, + [questKeys.preQuestSingle] = {24914}, + }, + [25199] = { + [questKeys.preQuestSingle] = {25229}, + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.objectives] = {{{39368,"Salute the Drill Sergeant"},{39368,"Roar with the Drill Sergeant"},{39368,"Cheer with the Drill Sergeant"},{39368,"Dance with the Drill Sergeant"}}}, + }, + [25212] = { + [questKeys.startedBy] = {{39386}}, + [questKeys.finishedBy] = {{39386}}, + [questKeys.preQuestSingle] = {25199}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Board the Flying Machine"), 0, {{"monster", 39396}}}}, + }, + [25229] = { + [questKeys.requiredLevel] = 1, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39253,39623},39623,"Gnomes Motivated"},{{39624,39466,39675},39466,"Motivated Gnomes Brought to Captain Sparknozzle"}}}, + }, + [25239] = { -- Path of Might - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,25238}, + }, + [25240] = { -- Path of Might - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25239,25238}, + }, + [25242] = { -- Path of Might - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25240,25238}, + }, + [25246] = { -- A Change of Heart - might exalted - aronen + [questKeys.preQuestGroup] = {25242,25238}, + }, + [25247] = { -- A Change of Heart - might friendly - aronen + [questKeys.preQuestGroup] = {24815,25238}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [25248] = { -- A Change of Heart - might honored - aronen + [questKeys.preQuestGroup] = {25238,25239}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [25249] = { -- A Change of Heart - might revered - aronen + [questKeys.preQuestGroup] = {25240,25238}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [25283] = { + [questKeys.startedBy] = {{39678}}, + [questKeys.finishedBy] = {{39678}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25212,25295}, + [questKeys.nextQuestInChain] = 25500, + }, + [25285] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25199}, + [questKeys.nextQuestInChain] = 25289, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39715}}}}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39682,39715},39715,"Ejection System Tested"}}}, + }, + [25286] = { + [questKeys.preQuestSingle] = {25283}, + [questKeys.exclusiveTo] = {25500}, + [questKeys.questLevel] = -1, + }, + [25287] = { + [questKeys.questLevel] = -1, + }, + [25289] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25285}, + [questKeys.nextQuestInChain] = 25295, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39716}}}}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39713,39716},39716,"Left Leg Servos Tested"},{{39713,39716},39716,"Right Leg Servos Tested"},{{39713,39716},39716,"Evasive Maneuver System Tested"}}}, + }, + [25295] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25289}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39717}}}}, + [questKeys.objectives] = {{{39711,"Weapon System Tested"}}}, + }, + [25393] = { + [questKeys.requiredLevel] = 75, + [questKeys.questLevel] = -1, + }, + [25444] = { -- Da Perfect Spies + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Attune a Captured Frog"), 0, {{"monster", 40187}}}}, + }, + [25445] = { -- Zalazane's Fall + [questKeys.objectives] = {{{40502,"Zalazane Killed"}}}, + [questKeys.requiredLevel] = 75, + [questKeys.questLevel] = -1, + }, + [25446] = { -- Frogs Away! + [questKeys.nextQuestInChain] = 25461, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek and deploy the frogs on the white smoke"), 0, {{"monster", 40204}}}}, + }, + [25461] = { -- Trollin' For Volunteers + [questKeys.preQuestSingle] = {25446}, + [questKeys.nextQuestInChain] = 25470, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek for a ride"), 0, {{"monster", 40204}}}}, + }, + [25470] = { -- Lady Of Da Tigers + [questKeys.preQuestSingle] = {25461}, + }, + [25480] = { -- Dance Of De Spirits + [questKeys.nextQuestInChain] = 25495, + [questKeys.objectives] = {{{40352,"Dance of the Spirits"}}}, + }, + [25495] = { -- Preparin' For Battle + [questKeys.preQuestSingle] = {25480}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek for a ride"), 0, {{"monster", 40204}}}}, + }, + [25500] = { + [questKeys.preQuestSingle] = {25283}, + [questKeys.requiredMaxLevel] = 74, + [questKeys.exclusiveTo] = {25286}, + [questKeys.nextQuestInChain] = 25287, + }, + [26034] = { + [questKeys.preQuestSingle] = {26013}, + }, + [64845] = { + [questKeys.triggerEnd] = {"Victory in a battleground match", { + [zoneIDs.ALTERAC_MOUNTAINS] = {{39.4,82.2}}, + [zoneIDs.ARATHI_HIGHLANDS] = {{45.6,45.8}}, + [zoneIDs.ASHENVALE] = {{61.8,83.8}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + }, + + ----- Boosted character quests ----- + [70395] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Meet with your class trainer in Stormwind."}, + [questKeys.zoneOrSort] = 1519, + }, + [70396] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Meet with your class trainer in Orgrimmar."}, + [questKeys.zoneOrSort] = 1637, + }, + [70397] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400009, "Open the Survival Kit"}, {400010, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70398] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400011, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70401] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70411] = { + [questKeys.name] = "To the Dockmaster", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{26546,26548},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Use a scroll of teleportation from your inventory to reach the harbor and speak to the dock master."}, + [questKeys.requiredSourceItems] = {199335,199336}, + [questKeys.zoneOrSort] = 150, + }, + [70734] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400001, "Open the Survival Kit"}, {400002, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70735] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400005, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70736] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70737] = { + [questKeys.name] = "To the Zeppelin Master", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{26537,26539},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Use a scroll of teleportation from your inventory to reach the zeppelin tower and speak to the zeppelin master."}, + [questKeys.requiredSourceItems] = {199777,199778}, + [questKeys.zoneOrSort] = 1637, + }, + [70761] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400003, "Open the Survival Kit"}, {400004, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70762] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Meet with your Druid trainer in Thunder Bluff."}, + [questKeys.zoneOrSort] = 1638, + }, + [70764] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400006, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70765] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400008, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70865] = { + [questKeys.name] = "To Shattrath City", + [questKeys.startedBy] = {{376,914,928,3036,3324,3328,3344,3406,5495,5497,5505,5515,5885,5994,13283,20407,23128},nil,nil}, + [questKeys.finishedBy] = {{19684},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Shattrath City and speak to the mysterious Haggard War Veteran."}, + [questKeys.requiredSourceItems] = {200068}, + [questKeys.zoneOrSort] = 3897, + }, + [70869] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70870] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78136] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Meet with your class trainer in Stormwind."}, + [questKeys.zoneOrSort] = 1519, + }, + [78137] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Meet with your class trainer in Orgrimmar."}, + [questKeys.zoneOrSort] = 1637, + }, + [78138] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Meet with your Druid trainer in Thunder Bluff."}, + [questKeys.zoneOrSort] = 1638, + }, + [78140] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400009, "Open the Survival Kit"}, {400010, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78151] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400001, "Open the Survival Kit"}, {400002, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [78157] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400011, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78158] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400006, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [78164] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78166] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{26673},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Modera."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78167] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [78168] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil,nil}, + [questKeys.finishedBy] = {{26471},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Aethas Sunreaver."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78219] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Meet with your Death Knight trainer in Acherus: The Ebon Hold."}, + [questKeys.zoneOrSort] = 4281, + }, + [78220] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400062, "Open the Survival Kit"}, {400063, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78221] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400064, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78222] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400061, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78223] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{26673},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Modera."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78224] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400061, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78225] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{26471},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Aethas Sunreaver."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78752] = { + [questKeys.name] = "Proof of Demise: Titan Rune Protocol Gamma", + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"The Lich King's presence mustn't extend any further!","","The Council of Six has decreed that any strong enough fighter should take up arms and aid in keeping Azeroth safe!"}, + [questKeys.objectives] = {nil,nil,{{211206}}}, + [questKeys.zoneOrSort] = 4395, + [questKeys.questFlags] = 4232, + [questKeys.specialFlags] = 1, + [questKeys.reputationReward] = {{factionIDs.KIRIN_TOR,75}}, + }, + [78753] = { + [questKeys.name] = "Proof of Demise: Threats to Azeroth", + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"We must continue putting pressure on all fronts!","","The Council of Six has decreed that any willing fighter should take up arms and aid in keeping Azeroth safe!"}, + [questKeys.objectives] = {nil,nil,{{211207}}}, + [questKeys.zoneOrSort] = 4395, + [questKeys.questFlags] = 4232, + [questKeys.specialFlags] = 1, + [questKeys.reputationReward] = {{factionIDs.KIRIN_TOR,75}}, + }, + } +end + +function _QuestieWotlkQuestFixes:InsertMissingQuestIds() + + -- Alliance boosted quests + QuestieDB.questData[70395] = {} -- A New Beginning + QuestieDB.questData[70397] = {} -- Tools for Survival + QuestieDB.questData[70398] = {} -- Combat Training + QuestieDB.questData[70401] = {} -- Talented + QuestieDB.questData[70411] = {} -- To the Dockmaster + QuestieDB.questData[70870] = {} -- Talented + QuestieDB.questData[78136] = {} -- A New Beginning + QuestieDB.questData[78140] = {} -- Tools for Survival + QuestieDB.questData[78157] = {} -- Combat Training + QuestieDB.questData[78164] = {} -- Talented + QuestieDB.questData[78166] = {} -- To Northrend + QuestieDB.questData[78222] = {} -- Talented DK + QuestieDB.questData[78223] = {} -- To Northrend DK + + -- Horde boosted quests + QuestieDB.questData[70396] = {} -- A New Beginning + QuestieDB.questData[70734] = {} -- Tools for Survival + QuestieDB.questData[70735] = {} -- Combat Training + QuestieDB.questData[70736] = {} -- Talented + QuestieDB.questData[70737] = {} -- To the Zeppelin Master + QuestieDB.questData[70761] = {} -- Tools for Survival + QuestieDB.questData[70762] = {} -- A New Beginning + QuestieDB.questData[70764] = {} -- Combat Training + QuestieDB.questData[70765] = {} -- Talented + QuestieDB.questData[70869] = {} -- Talented + QuestieDB.questData[78137] = {} -- A New Beginning + QuestieDB.questData[78138] = {} -- A New Beginning + QuestieDB.questData[78151] = {} -- Tools for Survival + QuestieDB.questData[78158] = {} -- Combat Training + QuestieDB.questData[78167] = {} -- Talented + QuestieDB.questData[78168] = {} -- To Northrend + QuestieDB.questData[78224] = {} -- Talented DK + QuestieDB.questData[78225] = {} -- To Northrend DK + + -- Neutral boosted quests + QuestieDB.questData[70865] = {} -- To Shattrath City + QuestieDB.questData[78219] = {} -- A New Beginning + QuestieDB.questData[78220] = {} -- Tools for Survival + QuestieDB.questData[78221] = {} -- Combat Training + + -- P4 quests + QuestieDB.questData[78752] = {} -- Proof of Demise: Titan Rune Protocol Gamma + QuestieDB.questData[78753] = {} -- Proof of Demise: Threats to Azeroth +end diff --git a/.history/Database/Corrections/wotlkQuestFixes_20260222020249.lua b/.history/Database/Corrections/wotlkQuestFixes_20260222020249.lua new file mode 100644 index 0000000..bb9bedc --- /dev/null +++ b/.history/Database/Corrections/wotlkQuestFixes_20260222020249.lua @@ -0,0 +1,7087 @@ +---@class QuestieWotlkQuestFixes +local QuestieWotlkQuestFixes = QuestieLoader:CreateModule("QuestieWotlkQuestFixes") +local _QuestieWotlkQuestFixes = {} + +---@type QuestieDB +local QuestieDB = QuestieLoader:ImportModule("QuestieDB") +---@type ZoneDB +local ZoneDB = QuestieLoader:ImportModule("ZoneDB") +---@type QuestieProfessions +local QuestieProfessions = QuestieLoader:ImportModule("QuestieProfessions") +---@type QuestieCorrections +local QuestieCorrections = QuestieLoader:ImportModule("QuestieCorrections") +---@type l10n +local l10n = QuestieLoader:ImportModule("l10n") + + +QuestieCorrections.killCreditObjectiveFirst[11652] = true +QuestieCorrections.killCreditObjectiveFirst[12100] = true +QuestieCorrections.killCreditObjectiveFirst[12546] = true +QuestieCorrections.killCreditObjectiveFirst[12561] = true +QuestieCorrections.killCreditObjectiveFirst[12762] = true +QuestieCorrections.killCreditObjectiveFirst[12919] = true +QuestieCorrections.killCreditObjectiveFirst[13086] = true +QuestieCorrections.killCreditObjectiveFirst[13373] = true +QuestieCorrections.killCreditObjectiveFirst[13376] = true +QuestieCorrections.killCreditObjectiveFirst[13380] = true +QuestieCorrections.killCreditObjectiveFirst[13382] = true +QuestieCorrections.killCreditObjectiveFirst[13404] = true +QuestieCorrections.killCreditObjectiveFirst[13406] = true +QuestieCorrections.killCreditObjectiveFirst[24498] = true +QuestieCorrections.killCreditObjectiveFirst[24507] = true + +function QuestieWotlkQuestFixes:Load() + _QuestieWotlkQuestFixes:InsertMissingQuestIds() + + local questKeys = QuestieDB.questKeys + local raceIDs = QuestieDB.raceKeys + local classIDs = QuestieDB.classKeys + local factionIDs = QuestieDB.factionIDs + local zoneIDs = ZoneDB.zoneIDs + local sortKeys = QuestieDB.sortKeys + local profKeys = QuestieProfessions.professionKeys + local specKeys = QuestieProfessions.specializationKeys + + return { + [55] = { + [questKeys.objectives] = {{{1200}}}, + }, + [75] = { + [questKeys.specialFlags] = 0, + }, + [171] = { + [questKeys.startedBy] = {{14305},nil,nil}, + [questKeys.questLevel] = -1, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [172] = { + [questKeys.questLevel] = -1, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [176] = { + [questKeys.startedBy] = {nil,{68,156561}}, + }, + [236] = { + [questKeys.finishedBy] = {{31108}}, + [questKeys.exclusiveTo] = {13153,13154,13156,13195,13196,13197,13198}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [403] = { + [questKeys.startedBy] = {nil,{269}}, + }, + [434] = { + [questKeys.triggerEnd] = {"Overhear Lescovar and Marzon's Conversation", {[zoneIDs.STORMWIND_CITY]={{72.22,35.37}}}}, + }, + [508] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [558] = { + [questKeys.questLevel] = -1, + [questKeys.parentQuest] = 0, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [648] = { + [questKeys.triggerEnd] = {"Escort OOX-17/TN to safety", {[zoneIDs.TANARIS]={{61,53}}}}, + }, + [768] = { + [questKeys.requiredSkill] = {393,1}, + }, + [836] = { + [questKeys.triggerEnd] = {"Escort OOX-09/HL to safety", {[zoneIDs.THE_HINTERLANDS]={{57.81,50.2}}}}, + }, + [910] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [911] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [915] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [925] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1056] = { + [questKeys.nextQuestInChain] = 1057, + }, + [1132] = { + [questKeys.startedBy] = {{4455}}, + [questKeys.finishedBy] = {{4456}}, + }, + [1135] = { + [questKeys.startedBy] = {{4456}}, + [questKeys.finishedBy] = {{4456}}, + }, + [1198] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1252] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1253] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1284] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1361] = { + [questKeys.startedBy] = {{2229,4485,10540}}, + }, + [1468] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1479] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1558] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1678] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1679] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1680] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1681] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1682] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1687] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1716] = { + [questKeys.preQuestSingle] = {}, + }, + [1800] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1885] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [2204] = { + [questKeys.startedBy] = {nil,{112877}}, + }, + [2279] = { + [questKeys.preQuestSingle] = {2278}, + }, + [2358] = { + [questKeys.startedBy] = {{7009}}, + }, + [2701] = { + [questKeys.finishedBy] = {nil,{141980}}, + }, + [2767] = { + [questKeys.triggerEnd] = {"Escort OOX-22/FE to safety", {[zoneIDs.FERALAS]={{55.63,51.35}}}}, + }, + [2879] = { + [questKeys.requiredSourceItems] = {9255,9256,9257,9258}, + }, + [3602] = { + [questKeys.requiredSourceItems] = {}, + }, + [3641] = { + [questKeys.preQuestSingle] = {}, + }, + [3763] = { + [questKeys.startedBy] = {{6735}}, + [questKeys.exclusiveTo] = {3789,3790}, + }, + [3789] = { + [questKeys.startedBy] = {{6740}}, + [questKeys.exclusiveTo] = {3763,3790}, + }, + [3790] = { + [questKeys.startedBy] = {{5111}}, + [questKeys.exclusiveTo] = {3763,3789}, + }, + [4127] = { + [questKeys.startedBy] = {nil,{164909,186419}}, + }, + [4144] = { + [questKeys.specialFlags] = nil, + }, + [4362] = { + [questKeys.preQuestSingle] = {4361}, + }, + [4363] = { + [questKeys.preQuestSingle] = {4362}, + }, + [4485] = { + [questKeys.startedBy] = {{6179}}, + }, + [4486] = { + [questKeys.startedBy] = {{5149}}, + }, + [4740] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [4763] = { + [questKeys.objectives] = {nil,nil,{{12355}}}, + }, + [4771] = { + [questKeys.preQuestSingle] = {5522}, + }, + [4822] = { + [questKeys.questLevel] = -1, + [questKeys.parentQuest] = 0, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [5057] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [5305] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5306] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5307] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5502] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + [questKeys.preQuestGroup] = {915,925}, + }, + [5505] = { + [questKeys.startedBy] = {{11056}}, + [questKeys.finishedBy] = {{11056}}, + }, + [5531] = { + [questKeys.nextQuestInChain] = nil, + }, + [5721] = { + [questKeys.extraObjectives] = {{{[zoneIDs.EASTERN_PLAGUELANDS]={{35.01,84.05}}}, Questie.ICON_TYPE_EVENT, l10n("Place the Relic Bundle in the Town Square."),}}, + }, + [6185] = { + [questKeys.triggerEnd] = {"The Blightcaller Uncovered", {[zoneIDs.EASTERN_PLAGUELANDS]={{23.4,67.8}}}}, + }, + [6521] = { + [questKeys.startedBy] = {{36273}}, + [questKeys.finishedBy] = {{36273}}, + }, + [6522] = { + [questKeys.startedBy] = {{4421},nil,{17008}}, + [questKeys.finishedBy] = {{36273}}, + }, + [6963] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [6983] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [7023] = { + [questKeys.startedBy] = {{13435,23010}}, + }, + [7042] = { + [questKeys.startedBy] = {{13433}}, + }, + [7641] = { + [questKeys.preQuestSingle] = {7638,7670}, + }, + [7643] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {7642,7648}, + }, + [7704] = { + [questKeys.startedBy] = {nil,{179832},{18950}}, + }, + [8149] = { + [questKeys.objectives] = {nil,{{180204,"Place a tribute at Uther's Tomb"}}}, + [questKeys.extraObjectives] = {}, + }, + [8150] = { + [questKeys.objectives] = {nil,{{180205,"Place a tribute at Grom's Monument"}}}, + [questKeys.extraObjectives] = {}, + }, + [8166] = { + [questKeys.requiredMaxLevel] = 49, + }, + [8167] = { + [questKeys.requiredMaxLevel] = 39, + }, + [8168] = { + [questKeys.requiredMaxLevel] = 29, + }, + [8169] = { + [questKeys.requiredMaxLevel] = 49, + }, + [8170] = { + [questKeys.requiredMaxLevel] = 39, + }, + [8171] = { + [questKeys.requiredMaxLevel] = 29, + }, + [8346] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{15274},15274,"Mana Tap creature"}}}, + }, + [8551] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8552] = { + [questKeys.specialFlags] = 0, + }, + [8553] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8554] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8746] = { + [questKeys.objectives] = {{{15664,"Find Metzen the Reindeer and rescue him"}},nil,{{21211}}}, + }, + [8762] = { + [questKeys.objectives] = {{{15664,"Find Metzen the Reindeer and rescue him"}},nil,{{21211}}}, + }, + [8767] = { + [questKeys.requiredClasses] = classIDs.ROGUE + classIDs.WARRIOR + classIDs.HUNTER + classIDs.PALADIN + classIDs.DEATH_KNIGHT, + }, + [8871] = { + [questKeys.startedBy] = {}, + }, + [8872] = { + [questKeys.startedBy] = {}, + }, + [8874] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.startedBy] = {}, + }, + [8875] = { + [questKeys.startedBy] = {}, + }, + [8892] = { + [questKeys.preQuestSingle] = {}, + }, + [9078] = { + [questKeys.requiredClasses] = classIDs.ROGUE, + }, + [9154] = { + [questKeys.startedBy] = {{16241,16255}}, + [questKeys.finishedBy] = {{16281}}, + [questKeys.questLevel] = -1, + }, + [9189] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [9211] = { + [questKeys.specialFlags] = 1, + }, + [9213] = { + [questKeys.specialFlags] = 1, + }, + [9221] = { + [questKeys.specialFlags] = 1, + }, + [9222] = { + [questKeys.specialFlags] = 1, + }, + [9223] = { + [questKeys.specialFlags] = 1, + }, + [9224] = { + [questKeys.specialFlags] = 1, + }, + [9225] = { + [questKeys.specialFlags] = 1, + }, + [9226] = { + [questKeys.specialFlags] = 1, + }, + [9227] = { + [questKeys.specialFlags] = 1, + }, + [9228] = { + [questKeys.specialFlags] = 1, + }, + [9247] = { + [questKeys.finishedBy] = {{16281}}, + }, + [9358] = { + [questKeys.exclusiveTo] = {9252}, + }, + [9361] = { + [questKeys.requiredSourceItems] = {23270}, + }, + [9425] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [9467] = { + [questKeys.sourceItemId] = 24335, + [questKeys.requiredSourceItems] = {23682,24335}, + }, + [9629] = { + [questKeys.objectives] = {{{17326}}}, + }, + [9648] = { + [questKeys.name] = "Maatparm Mushroom Menagerie", + [questKeys.objectivesText] = {"Maatparm at Blood Watch wants 1 Aquatic Stinkhorn, 1 Blood Mushroom, 1 Ruinous Polyspore, and 1 Fel Cone Fungus."}, + }, + [9681] = { + [questKeys.startedBy] = {{17717,17718}}, + }, + [9876] = { + [questKeys.nextQuestInChain] = 9738, + }, + [10110] = { + [questKeys.preQuestSingle] = {13409}, + }, + [10173] = { + [questKeys.requiredSourceItems] = {}, + }, + [10180] = { + [questKeys.nextQuestInChain] = 10097, + }, + [10445] = { + [questKeys.exclusiveTo] = {13432}, + }, + [10464] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10465] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10466] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10467] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10468] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10469] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10470] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10471] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10472] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10473] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10474] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10475] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10667] = { + [questKeys.preQuestSingle] = {}, + }, + [10670] = { + [questKeys.preQuestSingle] = {}, + }, + [10702] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{21864,21878,21879,23020,21978},21978,},},}, + }, + [10703] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{21864,21878,21879,23020,21978},21978,},},}, + }, + [10769] = { + [questKeys.objectives] = {{{19823}},nil,{{31108}}}, + }, + [10776] = { + [questKeys.objectives] = {{{19823}},nil,{{31310}}}, + }, + [10888] = { + [questKeys.exclusiveTo] = {13430}, + }, + [10900] = { + [questKeys.requiredMaxLevel] = 70, + }, + [10901] = { + [questKeys.exclusiveTo] = {13431}, + }, + [10958] = { + [questKeys.preQuestSingle] = {10949}, + }, + [10985] = { + [questKeys.exclusiveTo] = {13429}, + }, + [11010] = { + [questKeys.requiredClasses] = classIDs.WARLOCK + classIDs.ROGUE + classIDs.MAGE + classIDs.PRIEST + classIDs.WARRIOR + classIDs.PALADIN + classIDs.HUNTER + classIDs.SHAMAN + classIDs.DEATH_KNIGHT, + }, + [11117] = { + [questKeys.startedBy] = {{23486}}, + [questKeys.finishedBy] = {{23486}}, + }, + [11118] = { + [questKeys.startedBy] = {{23486}}, + [questKeys.finishedBy] = {{23486}}, + }, + [11120] = { + [questKeys.startedBy] = {{24657}}, + [questKeys.finishedBy] = {{24657}}, + }, + [11122] = { + [questKeys.objectives] = {{{24468,"Kegs Delivered"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab a keg"), 0, {{"monster", 24364}}}}, + }, + [11137] = { + [questKeys.preQuestSingle] = {}, + }, + [11140] = { + [questKeys.requiredSourceItems] = {33040,33044}, + }, + [11153] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HOWLING_FJORD]={{28.1,42.2}}}, Questie.ICON_TYPE_EVENT, l10n("Wait for Harrowmeiser's zeppelin to dock"),}}, + }, + [11154] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Throw the firecrackers up to 20 yards away underneath a darkclaw bat to scare it"), 0, {{"monster", 23959}}}}, + }, + [11157] = { + [questKeys.objectives] = {{{23777,"Proto-Drake Egg destroyed"}},nil,nil,nil,{{{23688,23750},23688}}}, + }, + [11170] = { + [questKeys.objectives] = {{{24120,"North Fleet Reservist Infected"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Bat Handler Camille"), 0, {{"monster", 23816}}}}, + }, + [11175] = { + [questKeys.exclusiveTo] = {11176}, + }, + [11231] = { + [questKeys.sourceItemId] = 33284, + }, + [11238] = { + [questKeys.sourceItemId] = 33282, + }, + [11241] = { + [questKeys.triggerEnd] = {"Rescue Apothecary Hanes",{[zoneIDs.HOWLING_FJORD]={{78.72,37.23,},},},}, + }, + [11245] = { + [questKeys.requiredSourceItems] = {33311}, + }, + [11246] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23661,23662,23663,23664,23665,23666,23667,23668,23669,23670},23661,"Winterskorn Vrykul Dismembered"}}}, + [questKeys.requiredSourceItems] = {33311}, + }, + [11247] = { + [questKeys.requiredSourceItems] = {33311}, + }, + [11249] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Present the Vrykul Scroll of Ascension"), 0, {{"object", 186586}}}}, + }, + [11252] = { + [questKeys.preQuestSingle] = {}, + }, + [11257] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23661,23662,23663,23664,23665,23666,23667,23668,23669,23670},23661,"Winterskorn Vrykul Dismembered"}}}, + [questKeys.requiredSourceItems] = {33340}, + }, + [11258] = { + [questKeys.requiredSourceItems] = {33340}, + }, + [11259] = { + [questKeys.requiredSourceItems] = {33340}, + }, + [11260] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Present the Vrykul Scroll of Ascension"), 0, {{"object", 186586}}}}, + }, + [11265] = { + [questKeys.sourceItemId] = 33284, + }, + [11267] = { + [questKeys.sourceItemId] = 33282, + }, + [11279] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Spray Proto-Drake Egg"), 0, {{"monster", 23777}}}}, + }, + [11280] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Place Tillinghast's Plagued Meat on the ground"), 0, {{"monster", 24170}}}}, + }, + [11281] = { + [questKeys.objectives] = {{{24173}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Carved Horn"), 0, {{"object", 186599}}}}, + }, + [11282] = { + [questKeys.objectives] = {{{24161,"Oric the Baleful's Corpse Impaled"},{24016,"Ulf the Bloodletter's Corpse Impaled"},{24162,"Gunnar Thorvardsson's Corpse Impaled"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Slay Vrykul across the Forsaken blockade until they appear"), 0, {{"monster", 24015}}}}, + }, + [11284] = { + [questKeys.sourceItemId] = 33352, + }, + [11286] = { + [questKeys.preQuestSingle] = {}, + }, + [11296] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Break Riven Widow Cocoons to free captives"), 0, {{"monster", 24210}}}}, + }, + [11297] = { + [questKeys.nextQuestInChain] = 11298, + }, + [11298] = { + [questKeys.preQuestSingle] = {}, + }, + [11300] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill gladiators at the Ring of Judgement until Oluf the Violent appears"), 0, {{"monster", 24213},{"monster", 24214},{"monster", 24215}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Oluf the Violent"), 0, {{"monster", 23931}}} + }, + }, + [11301] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Use Grick's Bonesaw on corpses of Deranged Explorers"), 0, {{"monster", 23967}}}}, + }, + [11302] = { + [questKeys.preQuestSingle] = {11284}, + }, + [11306] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Fill the Empty Apothecary's Flask at the Cauldron of Vrykul Blood"),0,{{"object", 186656}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mix the Flask of Vrykul Blood with Harris's Plague Samples"),1,{{"object", 186657}}}, + }, + }, + [11307] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23564,24198,24199},23564,"Plagued Vrykul Sprayed"}}}, + }, + [11310] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23564,24198,24199},23564,"Plagued Vrykul exterminated"}}}, + }, + [11314] = { + [questKeys.objectives] = {{{23678,"Chill Nymphs Freed"}}}, + }, + [11317] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Meditate"), 0, {{"object", 186649}}}}, + }, + [11318] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{80001},{80002},{80003}}}, + }, + [11319] = { + [questKeys.objectives] = {{{23876,"Spores frozen"}}}, + }, + [11322] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Meditate"), 0, {{"object", 186649}}}}, + }, + [11329] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Search for Northern Barbfish"), 0, {{"object", 186659}}}}, + }, + [11332] = { + [questKeys.sourceItemId] = 33634, + [questKeys.preQuestSingle] = {11331}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Get a gryphon to ride and some bombs"), 0, {{"monster", 23859}}}}, + }, + [11335] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.exclusiveTo] = {11336,11337,11338,13405,14163}, + [questKeys.questFlags] = 4226, + }, + [11336] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.exclusiveTo] = {11335,11337,11338,13405,14163}, + }, + [11337] = { + [questKeys.triggerEnd] = {"Victory in the Eye of the Storm", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11338,13405,14163}, + }, + [11338] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,13405,14163}, + }, + [11339] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11340,11341,11342,13407,14164}, + }, + [11340] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11341,11342,13407,14164}, + }, + [11341] = { + [questKeys.triggerEnd] = {"Victory in Eye of the Storm", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11342,13407,14164}, + }, + [11342] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,13407,14164}, + }, + [11343] = { + [questKeys.triggerEnd] = {"Secrets of Wyrmskull Uncovered",{[zoneIDs.HOWLING_FJORD]={{60.13,50.8,},},},}, + }, + [11344] = { + [questKeys.triggerEnd] = {"Secrets of Nifflevar Uncovered",{[zoneIDs.HOWLING_FJORD]={{69.04,54.79,},},},}, + }, + [11346] = { + [questKeys.preQuestSingle] = {11284}, + [questKeys.sourceItemId] = 33778, + }, + [11348] = { + [questKeys.objectives] = {{{23725,"Test Rune of Command on normal Stone Giants"},{24334}}}, + }, + [11350] = { + [questKeys.sourceItemId] = 33778, + }, + [11352] = { + [questKeys.objectives] = {{{23725,"Test Rune of Command on normal Stone Giants"},{24334}}}, + }, + [11355] = { + [questKeys.preQuestSingle] = {11284}, + [questKeys.objectives] = {{{23725,"Runed Stone Giant Corpse Analyzed"},},nil,nil,nil,}, + }, + [11358] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Rune Sample"), 0, {{"object", 186718},}}}, + }, + [11365] = { + [questKeys.objectives] = {{{23725,"Runed Stone Giant Corpse Analyzed"},},nil,nil,nil,}, + }, + [11366] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Rune Sample"), 0, {{"object", 186718},}}}, + }, + [11390] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 24418},}}}, + }, + [11391] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 24418},}}}, + }, + [11392] = { + [questKeys.startedBy] = {nil,{186267}}, + [questKeys.finishedBy] = {nil,{186314}}, + }, + [11393] = { + [questKeys.exclusiveTo] = {11394,}, + }, + [11394] = { + [questKeys.preQuestSingle] = {}, + }, + [11401] = { + [questKeys.startedBy] = {nil,{186267}}, + [questKeys.finishedBy] = {nil,{186314}}, + }, + [11409] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{80004},{80005},{80006}}}, + }, + [11410] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Fresh Barbfish Bait"), 0, {{"object", 186770},}}}, + }, + [11412] = { + [questKeys.objectives] = {{{24510,"Kegs Delivered"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab a keg"), 0, {{"monster", 24527}}}}, + }, + [11414] = { + [questKeys.sourceItemId] = 33618, + }, + [11415] = { + [questKeys.sourceItemId] = 33618, + }, + [11416] = { + [questKeys.requiredSourceItems] = {33618}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Touch Talonshrike's Egg"), 0, {{"object", 186814},{"object", 190283},{"object", 190284}}}}, + }, + [11417] = { + [questKeys.requiredSourceItems] = {33618}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Touch Talonshrike's Egg"), 0, {{"object", 186814},{"object", 190283},{"object", 190284}}}}, + }, + [11418] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Feathered Charm on Steelfeather"), 0, {{"monster", 24514},}}}, + }, + [11421] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Commandeer Crykul Harpoon Gun"),0,{{"object",190512}}}}, + }, + [11428] = { + [questKeys.preQuestSingle] = {11316}, + }, + [11429] = { + [questKeys.objectives] = {nil,{{186863,"Alliance Banner Placed"}},nil,nil,{{{24640},24640,"Alliance Banner Defended"}}}, + }, + [11431] = { + [questKeys.startedBy] = {{24657}}, + [questKeys.finishedBy] = {{24657}}, + }, + [11436] = { + [questKeys.triggerEnd] = {"Go Harpoon Surfing",{[zoneIDs.HOWLING_FJORD]={{60.08,62.06,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Go Harpoon Surfing"),0,{{"object",186894}}}}, + }, + [11448] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Ask McGoyver for a ride to the Explorers' League Outpost"),0,{{"monster",24040}}}}, + }, + [11452] = { + [questKeys.startedBy] = {{24018},nil,{34090}}, + }, + [11453] = { + [questKeys.startedBy] = {{24018},nil,{34091}}, + }, + [11460] = { + [questKeys.objectives] = {{{24752,"Fjord Rock Falcon Fed"}}}, + }, + [11465] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Send your Trained Rock Falcon after it"), 0, {{"monster", 24746}}}}, + }, + [11466] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Olga"), 0, {{"monster", 24639}}}}, + }, + [11467] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Search for treasure"), 0, {{"object", 186944}}}}, + }, + [11468] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Send your Trained Rock Falcon after it"), 0, {{"monster", 24747}}}}, + }, + [11470] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Release the Trained Rock Falcon"), 0, {{"object", 190222}}}}, + }, + [11471] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Fight Jonah"), 0, {{"monster", 24742}}}}, + }, + [11472] = { + [questKeys.objectives] = {{{24797,"Reef Bull led to a Reef Cow"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Lure Reef Bull with Tasty Reef Fish"), 0, {{"monster", 24786},{"monster", 24804}}}}, + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11475] = { + [questKeys.preQuestSingle] = {11244}, + }, + [11478] = { + [questKeys.exclusiveTo] = {11448}, + }, + [11485] = { + [questKeys.triggerEnd] = {"Rocket Jump Mastered",{[zoneIDs.HOWLING_FJORD]={{75.08,64.55,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Rocket Jump standing on the rune next to it"),0,{{"object", 186958}}}}, + }, + [11489] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Collect Data near the blue relic near Gwendolyn's cart"),0,{{"object", 186958}}}}, + }, + [11491] = { + [questKeys.objectives] = {{{24718,"Lebronski Bluffed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Bluff on Lebronski after you've walked on his rug"),0,{{"object", 186958}}}}, + }, + [11494] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Put on the Golem suit"),0,{{"object", 186958}}}}, + }, + [11495] = { + [questKeys.objectives] = {{{24847,"Thundering Cave investigated"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Put on the Golem suit"),0,{{"object", 186958}}}}, + }, + [11528] = { + [questKeys.exclusiveTo] = {13203,13966}, + }, + [11529] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HOWLING_FJORD]={{37.2,74.8}}}, Questie.ICON_TYPE_OBJECT, l10n("Use The Big Gun at the front of the ship to slay Sorlof"),0,{{"monster", 24992}}}}, + }, + [11531] = { + [questKeys.specialFlags] = 1, + }, + [11567] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask Alanya for transportation"),0,{{"monster", 27933}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("After acquiring the Armor, get a ride back"),0,{{"monster", 28277}}}, + }, + }, + [11569] = { + [questKeys.preQuestSingle] = {11571}, + }, + [11570] = { + [questKeys.triggerEnd] = {"Escort Lurgglbr to safety",{[zoneIDs.BOREAN_TUNDRA]={{41.35,16.29,},},},}, + }, + [11574] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + [questKeys.exclusiveTo] = {11587}, + }, + [11575] = { + [questKeys.exclusiveTo] = {11587}, + }, + [11587] = { + [questKeys.preQuestSingle] = {}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Open the prison"),0,{{"object", 187561}}}}, + }, + [11590] = { + [questKeys.objectives] = {{{25316,"Captured Beryl Sorcerer"},},nil,nil,nil,}, + }, + [11591] = { + [questKeys.exclusiveTo] = {11592,11593,11594,}, + }, + [11592] = { + [questKeys.triggerEnd] = {"Successfully assisted Longrunner Proudhoof's assault.",{[zoneIDs.BOREAN_TUNDRA]={{49.45,26.49,},},},}, + }, + [11594] = { + [questKeys.preQuestSingle] = {}, + }, + [11596] = { + [questKeys.preQuestSingle] = {11585,11586}, + }, + [11606] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [11610] = { + [questKeys.objectives] = {nil,{{191088,"Elder Kesuk's ceremony completed"},{191089,"Elder Sagani's ceremony completed"},{191090,"Elder Takret's ceremony completed"}}}, + }, + [11611] = { + [questKeys.objectives] = {{{25284,"Warsong Peon Freed"}}}, + }, + [11631] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Imperean's Primal on Snarlfang's Totem"),0,{{"monster", 25455}}}}, + }, + [11632] = { + [questKeys.startedBy] = {nil,{187674},{34777}}, + }, + [11636] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to Garrosh's Landing"),0,{{"monster", 25459}}}}, + }, + [11637] = { + [questKeys.sourceItemId] = 34781, + }, + [11652] = { + [questKeys.objectives] = {{{25465}},nil,nil,nil,{{{27106,27107,27108,27110},27106,"Injured Warsong Soldier rescued"},{{25332,25333,25469,},25333,"Scourge Unit obliterated"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drive a tank"),0,{{"monster", 25334}}}}, + }, + [11653] = { + [questKeys.objectives] = {{{25432,"Crafty's Blaster Tested"},{25434,"Crafty's Blaster Tested"},},nil,nil,nil,}, + }, + [11654] = { + [questKeys.startedBy] = {{26115},nil,{34815}}, + [questKeys.preQuestSingle] = {11633}, + }, + [11656] = { + [questKeys.objectives] = {nil,{{188656,"The Serpent's Maw destroyed"},{188655,"The Kur Drakkar destroyed"},{188653,"Bor's Hammer destroyed"},{188657,"Bor's Anvil destroyed"}}}, + }, + [11664] = { + [questKeys.triggerEnd] = {"Mootoo Saved",{[zoneIDs.BOREAN_TUNDRA]={{31.19,54.44,},},},}, + }, + [11670] = { + [questKeys.objectives] = {{{25430,"Warsong Banner Planted in Magmothregar"},},nil,{{34870,nil},},nil,}, + [questKeys.requiredSourceItems] = {34869}, + }, + [11671] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Inquisitor Salrand"), 0, {{"monster", 25584}}}, + {{[zoneIDs.BOREAN_TUNDRA]={{41.8,39.1}}}, Questie.ICON_TYPE_EVENT, l10n("Use Beryl Shield Detonator"),}, + }, + }, + [11673] = { + [questKeys.triggerEnd] = {"Bonker Togglevolt escorted to safety.",{[zoneIDs.BOREAN_TUNDRA]={{53.84,13.85,},},},}, + }, + [11677] = { + [questKeys.objectives] = {nil,{{187879,"Plague Cauldron Neutralized"}}}, + }, + [11686] = { + [questKeys.objectives] = {nil,{{191697,"Scout Warsong Granary"},{191698,"Scout Torp's Farm"},{191699,"Scout Warsong Slaughterhouse"}}}, + }, + [11688] = { + [questKeys.preQuestSingle] = {}, + }, + [11690] = { + [questKeys.objectives] = {{{25596,"Kodo rescued"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the kodos to Farmer Torp"), 0, {{"monster", 25607}}}}, + }, + [11694] = { + [questKeys.objectives] = {nil,{{187879,"Plague Cauldron Neutralized"}}}, + }, + [11704] = { + [questKeys.preQuestSingle] = {11708}, + }, + [11705] = { + [questKeys.objectives] = {{{25618,"Varidus the Flenser Defeated"}}}, + }, + [11706] = { + [questKeys.objectives] = {{{25768},{25768,"Nerubian tunnels collapsed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use The Horn of Elemental Fury near the southern sinkhole"),0,{{"monster", 25664}}}}, + }, + [11708] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{25590,"Fizzcrank's tale listened to."}}}, + }, + [11711] = { + [questKeys.extraObjectives] = {{{[zoneIDs.BOREAN_TUNDRA]={{55.28,50.86}}}, Questie.ICON_TYPE_EVENT, l10n("Alliance Deserter Delivered")}}, + [questKeys.objectives] = {{{25761,"Alliance Deserter Delivered"}}}, + }, + [11712] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25814},25814,"Fizzcrank Gnome cursed & ported"}}}, + }, + [11713] = { + [questKeys.preQuestSingle] = {11796}, + }, + [11719] = { + [questKeys.triggerEnd] = {"Bloodspore Flower Used",{[zoneIDs.BOREAN_TUNDRA]={{52.07,52.46,},},},}, + }, + [11723] = { + [questKeys.objectives] = {{{25768},{25794,"Deploy the Shake-n-Quake 5000"}}}, + }, + [11728] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Throw Wolf Bait"),0,{{"monster", 25791}}}}, + }, + [11730] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25753,25758,25752},25753,"Robots reprogrammed"}}}, + }, + [11788] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),1,{{"object", 187984}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),2,{{"object", 187985}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),3,{{"object", 187986}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),4,{{"object", 187987}}}, + }, + }, + [11798] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use The Gearmaster's Manual"),0,{{"object", 190334}}}}, + }, + [11855] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [11865] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place fake fur near Caribou Traps"),0,{{"object", 187995},{"object", 187996},{"object", 187997},{"object", 187998},{"object", 187999},{"object", 188000},{"object", 188001},{"object", 188002},{"object", 188003},{"object", 188004},{"object", 188005},{"object", 188006},{"object", 188007},{"object", 188008}}}, + }, + }, + [11878] = { + [questKeys.objectives] = {{{25862,"Orphaned Mammoth Calf Delivered to Khu'nok"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver the orphan to Khu'nok"),0,{{"monster", 25861}}}}, + }, + [11879] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Wooly Mammoth Bull to assist in killing Kaw the Mammoth Destroyer"),0,{{"monster", 25743}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Kaw the Mammoth Destroyer"), 0, {{"monster", 25802}}}, + }, + }, + [11880] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [11881] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Jenny's Whistle near a crashed flying machine"),0,{{"object", 188019}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Return Jenny to safety without losing cargo"),0,{{"monster", 25849},}}, + }, + }, + [11887] = { + [questKeys.objectives] = {nil,nil,{{35276}}}, + }, + [11888] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [11890] = { + [questKeys.triggerEnd] = {"Fizzcrank Pumping Station environs inspected.",{[zoneIDs.BOREAN_TUNDRA]={{64.38,23.81}}}}, + }, + [11893] = { + [questKeys.objectives] = {{{24601}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Windsoul Totem to collect energy from killing Steam Ragers"),0,{{"monster", 24601}}}}, + }, + [11894] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Uncured Caribou Hide"),0,{{"object", 188086}}}}, + }, + [11895] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Storm Totem to summon Storm Tempest"),0,{{"monster", 26048}}}}, + }, + [11896] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25752,25753,25758},26082,}}}, + }, + [11898] = { + [questKeys.extraObjectives] = { + {{[zoneIDs.BOREAN_TUNDRA]={{86.55,28.59}}}, Questie.ICON_TYPE_EVENT, l10n("Enter teleporter to access Naxxanar"),}, + {{[zoneIDs.BOREAN_TUNDRA]={{86.80,30.12}}}, Questie.ICON_TYPE_EVENT, l10n("Use Naxxanar teleporters"),}, + }, + }, + [11899] = { + [questKeys.objectives] = {{{25814,"Gnome soul captured"},},nil,nil,nil,}, + [questKeys.preQuestSingle] = {11895}, + }, + [11905] = { + [questKeys.extraObjectives] = {{{[zoneIDs.THE_NEXUS_MAP]={{64.9,21.6}},[zoneIDs.THE_NEXUS]={{-1,-1}}}, Questie.ICON_TYPE_EVENT, l10n("Use Interdimensional Refabricator")}}, + }, + [11906] = { + [questKeys.preQuestSingle] = {11895}, + }, + [11907] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),1,{{"object", 187984}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),2,{{"object", 187985}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),3,{{"object", 187986}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),4,{{"object", 187987}}}, + }, + }, + [11908] = { + [questKeys.preQuestSingle] = {11902}, + }, + [11909] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Research the Gearmaster's Manual"),0,{{"object", 190334},{"object", 190335}}}}, + }, + [11913] = { + [questKeys.objectives] = {nil,{{188112,"Farshire Grain burnt"}}}, + }, + [11919] = { + [questKeys.objectives] = {{{26127,"Captured Nexus Drake"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the captured drake to Raelorasz"),0,{{"monster", 26117}}}}, + }, + [11930] = { + [questKeys.triggerEnd] = {"Secure Passage to Dragonblight",{[zoneIDs.DRAGONBLIGHT]={{10.29,53.83,},},},}, + }, + [11938] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25378,25383,25386,25387,25393,25609},25378,"En'kilah Casualty"}}}, + }, + [11940] = { + [questKeys.objectives] = {{{26127,"Captured Nexus Drake"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the captured drake to Raelorasz"),0,{{"monster", 26117}}}}, + }, + [11945] = { + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11946] = { + [questKeys.requiredSourceItems] = {35671}, + }, + [11951] = { + [questKeys.requiredSourceItems] = {35671}, + }, + [11956] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ride Dusk"),0,{{"monster", 26191}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Open the phylactery"),0,{{"object", 188141}}}, + }, + }, + [11957] = { + [questKeys.requiredSourceItems] = {35671,35690}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Keristrasza"),0,{{"monster", 26206}}}, + {{[zoneIDs.BOREAN_TUNDRA]={{22,22.6}}}, Questie.ICON_TYPE_EVENT, l10n("Use Arcane Power Focus"),}, + }, + }, + [11959] = { + [questKeys.objectives] = {{{26196,"Loguhn's Blood Smeared"}}}, + }, + [11960] = { + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11967] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Keristrasza"),0,{{"monster", 26206}}}}, + }, + [11969] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Raelorasz' Spark"),0,{{"object", 194151}}}}, + }, + [11982] = { + [questKeys.objectives] = {{{26270,"Iron Dwarf Operations Disrupted"}}}, + [questKeys.preQuestSingle] = {}, + }, + [11984] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Enlist Budd's help"), 0, {{"monster", 26422}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Escort Budd to the Drak'Zin Ruins"), 0, {{"monster", 32663}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Budd's Tag Troll spell to stun Drakkari trolls"), 0, {{"monster", 26425}, {"monster", 26447}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Capture stunned Drakkari trolls with Bounty Hunter's Cage"), 0, {{"monster", 26425}, {"monster", 26447}}}, + }, + }, + [11989] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Dull Carving Knife near Drakuru"),0,{{"monster", 26423}}}}, + }, + [11991] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Frozen Mojo"),0,{{"object", 188287}}}}, + [questKeys.requiredSourceItems] = {35797,35799}, + }, + [11995] = { + [questKeys.exclusiveTo] = {12439}, + }, + [12000] = { + [questKeys.preQuestSingle] = {}, + }, + [12007] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering Zim'bo's Mojo"),0,{{"object", 400047}}}}, + [questKeys.requiredSourceItems] = {35797,35836}, + }, + [12014] = { + [questKeys.sourceItemId] = 35837, + }, + [12017] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Tu'u'gwar's Bait"),0,{{"object", 188370}}}}, + }, + [12019] = { + [questKeys.finishedBy] = {{26170,198875}}, + [questKeys.extraObjectives] = { + {{[zoneIDs.BOREAN_TUNDRA]={{86.6,28.6}}}, Questie.ICON_TYPE_EVENT, l10n("Teleport to the top of Naxxanar"),}, + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Thassarian"), 0, {{"monster", 198875}}}, + }, + }, + [12020] = { + [questKeys.preQuestSingle] = {}, + }, + [12022] = { + [questKeys.preQuestSingle] = {}, + [questKeys.requiredSourceItems] = {33096}, + }, + [12027] = { + [questKeys.triggerEnd] = {"Help Emily and Mr. Floppy return to the camp",{[zoneIDs.GRIZZLY_HILLS]={{53.81,33.33,},},},}, + }, + [12028] = { + [questKeys.objectives] = {nil,{{188416}}}, + }, + [12029] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26458,26570,26582,26583},26612,}}}, + }, + [12032] = { + [questKeys.objectives] = {{{26648,"Oacha'noa's compulsion obeyed."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Commune with Oacha'noa"),0,{{"object", 188422}}}}, + }, + [12033] = { + [questKeys.preQuestSingle] = {11916}, + [questKeys.objectives] = {nil,{{188423,}},nil,nil,}, + }, + [12034] = { + [questKeys.preQuestSingle] = {12008}, + }, + [12035] = { + [questKeys.objectives] = {{{25623,"Harvest Collector Rewired"},},nil,nil,nil,}, + }, + [12036] = { + [questKeys.triggerEnd] = {"Pit of Narjun Explored",{[zoneIDs.DRAGONBLIGHT]={{26.26,50.01,},},},}, + }, + [12037] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Search for Kurzel"),0,{{"monster", 27909}}}}, -- to use -1 instead of 0 when questie supports showing extraobjectives when quest complete + }, + [12038] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26458,26570,26582,26583},26612,}}}, + }, + [12039] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12049] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Throw the Explosive Charges when it opens its mouth wide"),0,{{"monster", 26293}}}}, + }, + [12050] = { + [questKeys.preQuestGroup] = {12046,12047}, + }, + [12052] = { + [questKeys.preQuestGroup] = {12046,12047}, + }, + [12053] = { + [questKeys.objectives] = {{{26678,"Warsong Battle Standard Defended"}}}, + }, + [12055] = { + [questKeys.startedBy] = {{26349},nil,{36742}}, + [questKeys.preQuestSingle] = {12000}, + }, + [12056] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12059] = { + [questKeys.startedBy] = {{26349},nil,{36746}}, + [questKeys.preQuestSingle] = {11999}, + }, + [12063] = { + [questKeys.preQuestSingle] = {12036}, + }, + [12065] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188445}}}, + }, + }, + [12066] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188445}}}, + }, + }, + [12067] = { + [questKeys.startedBy] = {{26762},nil,{36756}}, + }, + [12068] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Sacred Mojo"),0,{{"object", 400066}}}}, + [questKeys.requiredSourceItems] = {35797,36758}, + }, + [12069] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free Roanauk Icemist"),0,{{"object", 188463}}}}, + }, + [12075] = { + [questKeys.preQuestSingle] = {}, + }, + [12076] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Zort's Scraper when covered in Corrosive Spit"),0,{{"monster", 26358},{"monster", 26359}}}}, + }, + [12078] = { + [questKeys.preQuestSingle] = {12077}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Sturdy Crates to capture the worm spawn"),0,{{"monster", 26359}}}}, + }, + [12079] = { + [questKeys.preQuestSingle] = {12075}, + }, + [12080] = { + [questKeys.preQuestSingle] = {12076}, + }, + [12082] = { + [questKeys.triggerEnd] = {"Harrison has escorted you to safety.",{[zoneIDs.GRIZZLY_HILLS]={{73.51,24.02,},},},}, + }, + [12083] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188474}}}, + }, + }, + [12084] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188474}}}, + }, + }, + [12085] = { + [questKeys.startedBy] = {{26815},nil,{36780}}, + }, + [12092] = { + [questKeys.preQuestSingle] = {12065}, + }, + [12095] = { + [questKeys.preQuestGroup] = {12089,12090,12091}, + }, + [12096] = { + [questKeys.preQuestSingle] = {12066}, + }, + [12097] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rokhan to call down Sarathstra"), 0, {{"monster", 26859}}},}, + }, + [12099] = { + [questKeys.objectives] = {{{26417,"Runed Giants Freed"}}}, + }, + [12100] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12105] = { + [questKeys.startedBy] = {{27547},nil,{36940}}, + }, + [12107] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Ley Line Focus Control Talisman"),1,{{"object", 188491}}}, + }, + }, + [12110] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Ley Line Focus Control Talisman"),1,{{"object", 188491}}}, + }, + }, + [12111] = { + [questKeys.objectives] = {{{26615,},{26482,}}}, + }, + [12112] = { + [questKeys.preQuestGroup] = {12050,12052}, + }, + [12117] = { + [questKeys.nextQuestInChain] = 11958, + }, + [12118] = { + [questKeys.nextQuestInChain] = 11958, + }, + [12121] = { + [questKeys.objectives] = {{{27199,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ring the gong outside Drakil'jin to summon Warlord Jin'arrak"),0,{{"object", 188510}}}, + }, + }, + [12124] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a drake to the top of the temple"),1,{{"monster", 26443}}}}, + }, + [12125] = { + [questKeys.objectives] = {{{26411}},nil,{{36828}}}, + }, + [12126] = { + [questKeys.objectives] = {{{26926}},nil,{{36836}}}, + }, + [12127] = { + [questKeys.objectives] = {{{26283}},nil,{{36846}}}, + }, + [12129] = { + [questKeys.sourceItemId] = 36849, + }, + [12132] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12125,12126,12127}, + }, + [12137] = { + [questKeys.sourceItemId] = 36859, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Speak with Gan'jo to return to life"),0,{{"monster", 26924}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Snow of Eternal Slumber on ancient Drakkari spirits"),0,{{"monster", 26811},{"monster", 26812}}}, + }, + }, + [12138] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26407,27017},26407,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Fight Lightning Sentries with Depleted War Golem deployed nearby"),0,{{"monster", 26407}}}, + }, + }, + [12146] = { + [questKeys.startedBy] = {{27004,27005},nil,{36855}}, + }, + [12147] = { + [questKeys.startedBy] = {{27004,27005},nil,{36856}}, + }, + [12150] = { + [questKeys.objectives] = {{{27003,}}}, + }, + [12151] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{57.09,76.26}}}, Questie.ICON_TYPE_EVENT, l10n("Blow the horn"),0}}, + }, + [12152] = { + [questKeys.requiredSourceItems] = {36870,36873,37063}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Place the Infused Drakkari Offering at the gongs outside Drakil'jin"),0,{{"object", 188510}}}, + }, + }, + [12157] = { + [questKeys.exclusiveTo] = {12171,12235,12297}, + }, + [12159] = { + [questKeys.objectives] = {{{26891,"Miner at Rest"}}}, + }, + [12165] = { + [questKeys.sourceItemId] = 36849, + }, + [12166] = { + [questKeys.objectives] = {{{26616,"Blighted Elk's corpse cleansed"},{26643,"Rabid Grizzly's corpse cleansed"},},nil,nil,nil,}, + }, + [12171] = { + [questKeys.exclusiveTo] = {12235,12297}, + }, + [12174] = { + [questKeys.exclusiveTo] = {12235,12298}, + }, + [12180] = { + [questKeys.preQuestSingle] = {12014}, + }, + [12181] = { + [questKeys.exclusiveTo] = {12188}, + }, + [12182] = { + [questKeys.exclusiveTo] = {}, + [questKeys.nextQuestInChain] = 12188, + }, + [12184] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26408,26409,26410,26414,27177},26408,}}}, + }, + [12185] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Intercept the message from Loken"),1,{{"object", 188596}}}, + }, + }, + [12188] = { + [questKeys.preQuestSingle] = {}, + }, + [12191] = { + [questKeys.preQuestSingle] = {}, + [questKeys.requiredSourceItems] = {33096}, + }, + [12198] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26407,27017},26407,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Fight Lightning Sentries with Depleted War Golem deployed nearby"),0,{{"monster", 26407}}}, + }, + }, + [12202] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26408,26409,26410,26414,27177},26408,}}}, + }, + [12203] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Intercept the message from Loken"),1,{{"object", 188596}}}, + }, + }, + [12204] = { + [questKeys.preQuestSingle] = {12099,12058}, + [questKeys.preQuestGroup] = {}, + }, + [12206] = { + [questKeys.objectives] = {{{27349,"Flask of Blight tested"}}}, + }, + [12207] = { + [questKeys.preQuestSingle] = {12413}, + }, + [12208] = { + [questKeys.preQuestSingle] = {12412}, + }, + [12210] = { + [questKeys.preQuestSingle] = {12212}, + }, + [12211] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27202,27203,27206,27207,27209,27210,27211,27232,27233,27234,27235,27236,27237,27246,27247},27203,"Scarlet Onslaught corpses picked clean"}}}, + }, + [12213] = { + [questKeys.preQuestSingle] = {12413}, + }, + [12214] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27206,27213,27296,27028},27296,}}}, + }, + [12218] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Commandeer a Forsaken Blight Spreader"),1,{{"monster", 26523}}}, + }, + }, + [12222] = { + [questKeys.preQuestSingle] = {12294}, + }, + [12223] = { + [questKeys.preQuestSingle] = {12294}, + }, + [12224] = { + [questKeys.preQuestGroup] = {12221,12140,12072}, + }, + [12229] = { + [questKeys.preQuestGroup] = {12207,12213}, + }, + [12231] = { + [questKeys.objectives] = {{{27274,"Orsonn's Story"},{27275,"Kodian's Story"}}}, + [questKeys.preQuestGroup] = {12207,12213}, + }, + [12232] = { + [questKeys.objectives] = {nil,{{188673,}}}, + }, + [12236] = { + [questKeys.preQuestGroup] = {12241,12242}, + [questKeys.objectives] = {{{26633,}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tur Ragepaw to summon Ursoc"),0,{{"monster", 27328}}}}, + }, + [12237] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27315,27336,27345,27341},27315,"Helpless Villager Rescued"}}}, + }, + [12238] = { + [questKeys.requiredSourceItems] = {35797,38303}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Enduring Mojo"),0,{{"object", 190629}}}}, + }, + [12240] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{68.29,74.29}}}, Questie.ICON_TYPE_EVENT, l10n("Release the termites"),0}}, + }, + [12241] = { + [questKeys.preQuestGroup] = {12229,12231}, + }, + [12242] = { + [questKeys.preQuestGroup] = {12229,12231}, + }, + [12244] = { + [questKeys.objectives] = {{{27354}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Shredder"),0,{{"monster", 27371}}}}, + }, + [12247] = { + [questKeys.objectives] = {{{27274,"Orsonn's Story"},{27275,"Kodian's Story"}}}, + }, + [12249] = { + [questKeys.objectives] = {{{26633,}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tur Ragepaw to summon Ursoc"),0,{{"monster", 27328}}}}, + }, + [12252] = { + [questKeys.objectives] = {{{27209,"Torturer LeCraft fully questioned"},{27209}}} + }, + [12255] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride Flamebringer"),0,{{"monster", 27292}}}}, + }, + [12256] = { + [questKeys.preQuestSingle] = {12468}, + }, + [12258] = { + [questKeys.preQuestSingle] = {12251}, + }, + [12259] = { + [questKeys.preQuestGroup] = {12256,12257}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride Flamebringer"),0,{{"monster", 27292}}}}, + }, + [12260] = { + [questKeys.objectives] = {{{27202,}}}, + }, + [12261] = { + [questKeys.preQuestSingle] = {12447}, + [questKeys.objectives] = {{{27430,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Destructive Ward"),0,{{"object", 188707}}}, + }, + }, + [12262] = { + [questKeys.preQuestSingle] = {12447}, + }, + [12263] = { + [questKeys.triggerEnd] = {"Uncover the Magmawyrm Resurrection Chamber",{[zoneIDs.DRAGONBLIGHT]={{31.76,30.46,},},},}, + }, + [12264] = { + [questKeys.preQuestSingle] = {12263}, + [questKeys.objectives] = {{{27358},{27362},{27363}}}, + }, + [12265] = { + [questKeys.preQuestSingle] = {12263}, + }, + [12269] = { + [questKeys.preQuestSingle] = {12275}, + }, + [12270] = { + [questKeys.objectives] = {{{27354}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Shredder"),0,{{"monster", 27423}}}}, + }, + [12271] = { + [questKeys.startedBy] = {{27209},nil,{37432}}, + [questKeys.preQuestSingle] = {12245}, + }, + [12272] = { + [questKeys.preQuestSingle] = {12275}, + }, + [12273] = { + [questKeys.objectives] = {{{27237,},{27235,},{27234,},{27236,}}}, + }, + [12274] = { + [questKeys.objectives] = {nil,{{188713,"Abbey bell rung"}},nil,nil,{{{27245},27245,"High Abbot spoken with"}}}, + }, + [12277] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the Mine Bomb here"),0,{{"object", 188711}}}}, + }, + [12284] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27475,27482,},27475,"Alliance units eliminated"}}}, + }, + [12288] = { + [questKeys.objectives] = {{{27463,"Wounded Skirmishers Healed"}}}, + }, + [12289] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27456,27463},27456,"Horde units eliminated"}}}, + }, + [12291] = { + [questKeys.objectives] = {{{27226,"Forgotten Peasant Questioned"},{27225,"Forgotten Rifleman Questioned"},{27224,"Forgotten Knight Questioned"},{27229,"Forgotten Footman Questioned"}}}, + }, + [12296] = { + [questKeys.objectives] = {{{27482,"Westfall Infantry Healed"}}}, + }, + [12297] = { + [questKeys.preQuestSingle] = {11250}, + [questKeys.exclusiveTo] = {12171,12235}, + }, + [12298] = { + [questKeys.exclusiveTo] = {12174,12235}, + }, + [12301] = { + [questKeys.objectives] = {nil,{{189304,"The Forgotten Redeemed"}}}, + }, + [12307] = { + [questKeys.preQuestSingle] = {}, + }, + [12308] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"),0,{{"monster", 27409}}}}, + [questKeys.triggerEnd] = {"Escape from Silverbrook",{[zoneIDs.GRIZZLY_HILLS]={{32.37,59.14}}}}, + [questKeys.objectives] = {}, + }, + [12316] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27500,27550},27550,"Horde killed in Venture Bay"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in the shredder if you have the key"),0,{{"monster", 27496}}}}, + }, + [12317] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27501,27549},27549,"Alliance killed in Venture Bay"}}}, + }, + [12323] = { + [questKeys.objectives] = {{{27570,"Venture Company Stragglers smoked out"}}}, + }, + [12324] = { + [questKeys.objectives] = {{{27570,"Venture Company Stragglers smoked out"}}}, + }, + [12321] = { + [questKeys.objectives] = {{{27577,"Righteous Sermon Heard"}}}, + }, + [12325] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get a ride to Thorson's Post"),0,{{"monster", 27661}}}}, + }, + [12326] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in"),0,{{"monster", 27587}}}}, + [questKeys.objectives] = {{{27607,"Plague Wagon Sabotaged"},{27588,"7th Legion Elite Safely Dropped Off"}}}, + }, + [12327] = { + [questKeys.triggerEnd] = {"Vision from the Past",{[zoneIDs.SILVERPINE_FOREST]={{46.53,76.18,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Gossamer Potion"),0,{{"object", 189972}}}}, + }, + [12330] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Tranquilizer Dart on Tatjana"),0,{{"monster", 27627}}}}, + [questKeys.triggerEnd] = {"Tatjana Delivered",{[zoneIDs.GRIZZLY_HILLS]={{57.77,41.7,},},},}, + }, + [12372] = { + [questKeys.objectivesText] = {"Devrestrasz at Wyrmrest Temple has asked you to slay 3 Azure Dragons, slay 5 Azure Drakes, and to destabilize the Azure Dragonshrine while riding a Wyrmrest Defender into battle."}, -- #4675 + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ride a Wyrmrest Defender to defend the Temple"), 0, {{"monster", 27629}}}, + }, + }, + [12412] = { + [questKeys.preQuestSingle] = {12259}, + }, + [12414] = { + [questKeys.objectives] = {{{26472,"Highland Mustangs returned"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the mustangs to Squire Percy"), 0, {{"monster", 26377}}}}, + }, + [12415] = { + [questKeys.objectives] = {{{26472,}}}, + }, + [12419] = { + [questKeys.startedBy] = {{27680},nil,{37833}}, + }, + [12423] = { + [questKeys.startedBy] = {{27547},nil,{37830}}, + }, + [12427] = { + [questKeys.preQuestSingle] = {12413}, + [questKeys.triggerEnd] = {"Ironhide defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.2,64.68,},},},}, + [questKeys.objectives] = {{{27715,}}}, + }, + [12428] = { + [questKeys.triggerEnd] = {"Torgg Thundertotem defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.05,64.55,},},},}, + [questKeys.objectives] = {{{27716,}}}, + }, + [12429] = { + [questKeys.triggerEnd] = {"Rustblood defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.12,64.62,},},},}, + [questKeys.objectives] = {{{27717,}}}, + }, + [12430] = { + [questKeys.triggerEnd] = {"Horgrenn Hellcleave defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.11,64.6,},},},}, + [questKeys.objectives] = {{{27718,}}}, + }, + [12431] = { + [questKeys.objectives] = {{{27727,}}}, + }, + [12432] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride the rocket!"), 0, {{"monster", 27593}}}}, + }, + [12434] = { + [questKeys.specialFlags] = 1, + [questKeys.preQuestSingle] = {12433}, + [questKeys.startedBy] = {{27565}}, + [questKeys.finishedBy] = {{27565}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12435] = { -- #4675 + [questKeys.name] = "Report to Lord Devrestrasz", + [questKeys.objectivesText] = {"Speak with Lord Devrestrasz at Wyrmrest Temple."}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a drake to the middle of the temple"), 0, {{"monster", 26949}}}}, + }, + [12437] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride the rocket!"), 0, {{"monster", 27593}}}}, + }, + [12439] = { + [questKeys.exclusiveTo] = {11995,12000}, + }, + [12446] = { + [questKeys.specialFlags] = 1, + [questKeys.preQuestSingle] = {12443}, + [questKeys.startedBy] = {{27495}}, + [questKeys.finishedBy] = {{27495}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12453] = { + [questKeys.preQuestSingle] = {12412}, + [questKeys.objectives] = {{{26369,}}}, + }, + [12456] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{64.6,77}}}, Questie.ICON_TYPE_EVENT, l10n("Use Skytalon Molts"),0}}, + }, + [12457] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Man the Chain Gun"),0,{{"monster", 27714}}},}, + }, + [12459] = { + [questKeys.objectives] = {{{26841,nil},{27808,nil},{27122,nil},},nil,nil,nil,}, + }, + [12462] = { + [questKeys.preQuestSingle] = {12326}, + }, + [12464] = { + [questKeys.preQuestSingle] = {}, + }, + [12467] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Wyrmbait"),0,{{"monster", 27843}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Destroy Icestorm"),0,{{"monster", 26287}}}, + }, + }, + [12468] = { + [questKeys.preQuestSingle] = {}, + }, + [12470] = { + [questKeys.objectives] = {{{27840,"Hourglass of Eternity protected"}}}, + }, + [12473] = { + [questKeys.objectives] = {{{27383,"Thel'zan the Duskbringer Defeated"}}}, + }, + [12478] = { + [questKeys.objectives] = {nil,{{190191,"Secrets of the Past Revealed"}}}, + }, + [12481] = { + [questKeys.objectives] = {{{24238,"Bjorn Halgurdsson insulted"},{24238,"Bjorn Halgurdsson defeated"}}}, + }, + [12484] = { + [questKeys.extraObjectives] = {{{[zoneIDs.GRIZZLY_HILLS]={{16.84,48.34}}}, Questie.ICON_TYPE_EVENT, l10n("Place Scourged Troll Mummy in the fire"),0}}, + }, + [12486] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [12491] = { + [questKeys.startedBy] = {{23872},nil,{38280}}, + }, + [12492] = { + [questKeys.startedBy] = {{23872},nil,{38281}}, + }, + [12498] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Slay Antiok's mount to make him vulnerable"),0,{{"monster", 28018}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Slay Grand Necrolord Antiok"),0,{{"monster", 28006}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"),0,{{"monster", 27996}}}, + }, + }, + [12500] = { + [questKeys.preQuestSingle] = {12498}, + }, + [12501] = { + [questKeys.finishedBy] = {{28039}}, + [questKeys.exclusiveTo] = {12563,12587}, + [questKeys.childQuests] = {12502,12509,12519,12541}, + }, + [12502] = { + [questKeys.parentQuest] = 12501, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Plant the Argent Crusade Banner"), 0, {{"object", 190522}}}}, + }, + [12503] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28023,28026,28246,28669,28022},28022,"Scourge at The Argent Stand destroyed"}}}, + }, + [12506] = { + [questKeys.triggerEnd] = {"Main building at the Altar of Sseratus investigated.",{[zoneIDs.ZUL_DRAK]={{40.32,39.46,},},},}, + }, + [12509] = { + [questKeys.parentQuest] = 12501, + }, + [12510] = { + [questKeys.sourceItemId] = 38323, + }, + [12512] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28133,28136},28133},{{28141,28142},28141},{{28143,28148},28143}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Escort rescued Crusaders to Dr. Rogers"), 0, {{"monster", 28125}}}}, + }, + [12516] = { + [questKeys.objectives] = {{{28068}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Muddled Mojo on Prophet of Sseratus before killing it"), 0, {{"monster", 28068}}}}, + }, + [12519] = { + [questKeys.parentQuest] = 12501, + }, + [12520] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + }, + [12521] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Take a ride to Sholazar Basin"), 0, {{"monster", 28160}}}}, + }, + [12527] = { + [questKeys.requiredSourceItems] = {38380}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Feed with Zul'Drak Rat"), 0, {{"monster", 28145}}}}, + }, + [12529] = { + [questKeys.requiredSourceItems] = {38619}, + }, + [12530] = { + [questKeys.requiredSourceItems] = {38619,38467}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Softknuckle Poker on Softknuckles"), 0, {{"monster", 28127}}}}, + }, + [12531] = { + [questKeys.requiredSourceItems] = {38621}, + }, + [12532] = { + [questKeys.requiredSourceItems] = {38621,38689}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12533,12534}, + }, + [12533] = { + [questKeys.requiredSourceItems] = {38621}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12529,12530}, + }, + [12534] = { + [questKeys.requiredSourceItems] = {38621}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12529,12530}, + }, + [12536] = { + [questKeys.requiredSourceItems] = {38512}, + [questKeys.triggerEnd] = {"Travel to Mistwhisper Refuge.",{[zoneIDs.SHOLAZAR_BASIN]={{46.31,39.88,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Captive Crocolisk"), 0, {{"monster", 28298}}}}, + }, + [12537] = { + [questKeys.requiredSourceItems] = {38510,38512}, + [questKeys.objectives] = {nil,{{190502,"Sabotage the Mistwhisper Weather Shrine"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the Skyreach Crystal Clusters"), 0, {{"object", 300213}}}}, + }, + [12538] = { + [questKeys.requiredSourceItems] = {38512}, + }, + [12539] = { + [questKeys.requiredSourceItems] = {38512}, + }, + [12540] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Injured Rainspeaker Oracle"), 0, {{"monster", 28217}}}}, + }, + [12541] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12544] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Soo-rahm's Incense"), 0, {{"object", 190507}}}}, + }, + [12545] = { + [questKeys.preQuestSingle] = {}, + }, + [12548] = { + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{40.35,83.08,}}}, Questie.ICON_TYPE_EVENT, l10n("Travel through the Waygate"),}}, + }, + [12549] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + }, + [12551] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12520,12549}, + }, + [12555] = { + [questKeys.objectives] = {{{28274,"Plague Sprayers webbed and destroyed"}}}, + }, + [12557] = { + [questKeys.objectives] = {nil,nil,{{38386},{38339},{38340},{38346}}}, + }, + [12561] = { + [questKeys.requiredSpell] = 54197, + }, + [12563] = { + [questKeys.finishedBy] = {{28039}}, + [questKeys.exclusiveTo] = {12501,12587}, + [questKeys.childQuests] = {12541,12564,12568,12585}, + }, + [12564] = { + [questKeys.parentQuest] = 12563, + }, + [12568] = { + [questKeys.parentQuest] = 12563, + [questKeys.objectives] = {nil,nil,nil,nil,{{{28260,28156},28260,"Argent Footman Corpse Incinerated"}}}, + }, + [12569] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Sandfern Disguise near the fallen log"), 0, {{"object", 190545}}}}, + }, + [12570] = { + [questKeys.triggerEnd] = {"Escort the Injured Rainspeaker Oracle to Rainspaker Canopy",{[zoneIDs.SHOLAZAR_BASIN]={{52.79,59.36}}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Start the escort"), 0, {{"monster", 28217}}}}, + }, + [12571] = { + [questKeys.requiredSourceItems] = {38622}, + }, + [12572] = { + [questKeys.requiredSourceItems] = {38622}, + }, + [12573] = { + [questKeys.sourceItemId] = 38622, + [questKeys.requiredSourceItems] = {38622,40364}, + [questKeys.objectives] = {{{28315,"Extend Peace Offering to Shaman Vekjik"}}}, + }, + [12574] = { + [questKeys.requiredSourceItems] = {38623}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12572,12573}, + }, + [12575] = { + [questKeys.requiredSourceItems] = {38623}, + }, + [12576] = { + [questKeys.requiredSourceItems] = {38623}, + }, + [12577] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12575,12576}, + }, + [12578] = { + [questKeys.requiredSourceItems] = {38624}, + [questKeys.triggerEnd] = {"Travel to Mosswalker Village.",{[zoneIDs.SHOLAZAR_BASIN]={{75.07,51.88,},},},}, + }, + [12579] = { + [questKeys.requiredSourceItems] = {38624}, + }, + [12580] = { + [questKeys.requiredSourceItems] = {38624}, + [questKeys.objectives] = {{{28113,"Mosswalker Victims Rescued"}}}, + }, + [12584] = { + [questKeys.preQuestGroup] = {12552}, + }, + [12585] = { + [questKeys.parentQuest] = 12563, + }, + [12587] = { + [questKeys.exclusiveTo] = {12501,12563}, + [questKeys.childQuests] = {12541,12588,12591,12594}, + }, + [12588] = { + [questKeys.objectives] = {nil,{{190550,"Ancient Dirt Mounds Investigated"}}}, + }, + [12589] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + [questKeys.objectives] = {{{28054,"Shot apple on Lucky Wilhelm's Head"}}}, + }, + [12591] = { + [questKeys.objectives] = {nil,{{190555,"Nerubian Tunnels Collapsed"}}}, + }, + [12595] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + }, + [12596] = { + [questKeys.preQuestSingle] = {12740}, + [questKeys.preQuestGroup] = {}, + }, + [12598] = { + [questKeys.objectives] = {nil,{{190555,"Nerubian Tunnels Sealed"}}}, + }, + [12601] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12602] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12603] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + }, + [12604] = { + [questKeys.preQuestSingle] = {12501,12563,12587}, + }, + [12605] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Break the egg"), 0, {{"monster", 28408}}}}, + }, + [12606] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28415,28413},28415}}}, + }, + [12607] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28379,28374},28379,}}}, + }, + [12615] = { + [questKeys.preQuestSingle] = {12516}, + }, + [12620] = { + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{49.64,37.41,}}}, Questie.ICON_TYPE_EVENT, l10n("Use Freya's Horn atop of the Glimmering Pillar"),}}, + }, + [12621] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Listen to what the Avatar of Freya has to say"), 0, {{"monster", 27801}}}}, + }, + [12622] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Kill Jin'Alai Trolls until their leaders appear"), 0, {{"monster", 28388},{"monster", 28504},{"object", 193768},{"object", 193769},{"object", 193770}}}}, + }, + [12629] = { + [questKeys.preQuestSingle] = {12637}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12643}, + [questKeys.nextQuestInChain] = 12648, + }, + [12630] = { + [questKeys.objectives] = {{{28519,"Hair Samples Collected"},},nil,nil,nil,}, + }, + [12631] = { + [questKeys.startedBy] = {nil,nil,{38660}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12633}, + [questKeys.nextQuestInChain] = 12637, + }, + [12632] = { + [questKeys.objectives] = {{{28404}}}, + }, + [12633] = { + [questKeys.startedBy] = {nil,nil,{38673}}, + [questKeys.preQuestSingle] = {12238}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12631}, + [questKeys.nextQuestInChain] = 12638, + }, + [12634] = { + [questKeys.preQuestGroup] = {12520,12549}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Pull Sturdy Vines to reveal fruit"), 0, {{"object", 190622}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Ask for a spare fruit"), 0, {{"monster", 28604}}}, + }, + }, + [12637] = { + [questKeys.preQuestSingle] = {12631}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12638}, + [questKeys.nextQuestInChain] = 12629, + }, + [12638] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12633,12238}, + [questKeys.exclusiveTo] = {12637}, + [questKeys.nextQuestInChain] = 12643, + }, + [12641] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Eye of Acherus Control Mechanism"), 0, {{"object", 191609}}}}, + }, + [12643] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12638,12238}, + [questKeys.exclusiveTo] = {12629}, + [questKeys.nextQuestInChain] = 12649, + }, + [12644] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Begin the distillation process"), 0, {{"monster", 28566}}}}, + }, + [12648] = { + [questKeys.preQuestSingle] = {12629}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12649}, + [questKeys.nextQuestInChain] = 12661, + }, + [12649] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12643,12238}, + [questKeys.exclusiveTo] = {12648}, + [questKeys.nextQuestInChain] = 12661, + }, + [12651] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12558,12556,12592}, + [questKeys.exclusiveTo] = {12654}, + [questKeys.nextQuestInChain] = 12654, + }, + [12652] = { + [questKeys.requiredRaces] = 2047, + [questKeys.preQuestSingle] = {12629,12643}, + [questKeys.exclusiveTo] = {12713}, + [questKeys.objectives] = {{{28565,}}}, + }, + [12659] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28465,28600},28622}}}, + }, + [12661] = { + [questKeys.preQuestSingle] = {12648,12649}, + [questKeys.preQuestGroup] = {}, + [questKeys.childQuests] = {12663,12664}, + [questKeys.exclusiveTo] = {}, + [questKeys.nextQuestInChain] = 12669, + [questKeys.requiredSourceItems] = {41390,38699}, + [questKeys.objectives] = {{{28503,"Overlord Drakuru's task complete"}}}, + [questKeys.extraObjectives] = {{{[zoneIDs.ZUL_DRAK]={{28.38,44.85}}}, Questie.ICON_TYPE_EVENT, l10n("Infiltrate Voltarus using Ensorcelled Choker")}}, + }, + [12662] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Heb'Jin's Drum to summon Heb'Jin"), 0, {{"object", 190695}}}}, + }, + [12663] = { + [questKeys.preQuestSingle] = {12649}, + [questKeys.exclusiveTo] = {12664,12648}, + [questKeys.parentQuest] = 12661, + [questKeys.objectives] = {{{28666,"Tour of Zul'Drak complete"}}}, + }, + [12664] = { + [questKeys.preQuestSingle] = {12648}, + [questKeys.exclusiveTo] = {12663,12649}, + [questKeys.parentQuest] = 12661, + [questKeys.objectives] = {{{28666,"Tour of Zul'Drak complete"}}}, + }, + [12665] = { + [questKeys.objectives] = {{{28671,"Quetz'lun's fate revealed."}}}, + }, + [12668] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28747,28748},28747,"Trolls killed near a Soul Font"}}}, + }, + [12669] = { + [questKeys.objectives] = {{{28503,"Drakuru's task complete"},{28739,"Blight Cauldrons diluted"}}}, + [questKeys.requiredSourceItems] = {39154,38699,41390}, + }, + [12671] = { + [questKeys.triggerEnd] = {"Reconnaissance Flight",{[zoneIDs.SHOLAZAR_BASIN]={{50.04,61.43,},},},}, + }, + [12673] = { + [questKeys.objectives] = {nil,{{190716}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Suggestion to mind control Blight Geist"), 0, {{"monster", 28750}}}}, + }, + [12674] = { + [questKeys.objectives] = {{{28752,"High Priest Mu'funu hexed at death"},{28754,"High Priestess Tua-Tua hexed at death"},{28756,"High Priest Hawinni hexed at death"}}}, + }, + [12676] = { + [questKeys.requiredSourceItems] = {39165,41390,38699}, + [questKeys.objectives] = {nil,{{190731,"Scourgewagons destroyed"}},nil,nil,{{{28503},28503,"Drakuru's task complete"}}}, + [questKeys.triggerEnd] = {"Learn Drakuru's secret",{[zoneIDs.ZUL_DRAK]={{27.07,46.16}}}}, + }, + [12677] = { + [questKeys.sourceItemId] = 38699, + [questKeys.requiredSourceItems] = {41390,38699}, + [questKeys.objectives] = {{{28503,"Drakuru's task complete"}},nil,{{39159}}}, + }, + [12680] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28605,28606,28607},28605,"Horse Successfully Stolen"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Stolen Horse"), 0, {{"monster", 28653}}}}, + }, + [12683] = { + [questKeys.objectives] = {{{28003,},{28003}}}, + [questKeys.preQuestSingle] = {}, + }, + [12685] = { + [questKeys.objectives] = {{{28671}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Quetz'lun's Ritual"), 0, {{"monster", 28672}}}}, + }, + [12686] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Empowerment to mind control Servant of Drakuru"), 0, {{"monster", 28802}}}, + }, + }, + [12687] = { + [questKeys.triggerEnd] = {"The Horseman's Challenge",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{52.41,34.59,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Dark Rider of Acherus and take his horse"), 0, {{"monster", 28768},{"monster", 28782}}}}, + }, + [12688] = { + [questKeys.triggerEnd] = {"Escort Engineer Helice out of Swindlegrin's Dig",{[zoneIDs.SHOLAZAR_BASIN]={{37.29,50.59,},},},}, + }, + [12690] = { + [questKeys.exclusiveTo] = {12710}, + [questKeys.requiredSourceItems] = {39238,38699}, + [questKeys.objectives] = {{{28844,"Drakkari Skullcrushers Slain"},{28873,"Drakkari Chieftain Lured"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Command"), 0, {{"monster", 28843}}}}, + }, + [12692] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12695] = { + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12697] = { + [questKeys.preQuestGroup] = {12678,12679,12687,12733,}, + }, + [12698] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28819,28822,28891},28819,"Scarlet Ghoul Returned"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Return Scarlet Ghouls"), 0, {{"monster", 28658}}}}, + }, + [12699] = { + [questKeys.preQuestSingle] = {12523}, + }, + [12701] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Climb inside the Inconspicuous Mine Car"), 0, {{"object", 190767}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Scarlet Cannon"), 0, {{"monster", 28833}}}, + }, + }, + [12702] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12703] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the blood at the Shrine of Kartak"), 0, {{"object", 190782}}}}, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12704] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to High-Oracle Soo-say to retrieve a Gorloc companion"), 0, {{"monster", 28027}}}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.requiredSourceItems] = {38622,38623,38624}, + }, + [12705] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use the Tainted Crystal at the Great Lightning Stone"), 0, {{"object", 190781}}}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12707] = { + [questKeys.objectives] = {{{28861,"Mam'toth Disciples trampled to death"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Medallion of Mam'toth to calm and ride an Enraged Mammoth"),0,{{"monster", 28851}}}, + }, + }, + [12710] = { + [questKeys.sourceItemId] = 38699, + [questKeys.requiredSourceItems] = {38699,39319}, + [questKeys.objectives] = {{{28948,"Drakuru's upper chamber explored"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Open the coffin"), 0, {{"object", 190948}}}, + {{[zoneIDs.ZUL_DRAK]={{28.38,44.85}}}, Questie.ICON_TYPE_EVENT, l10n("Take the teleporter to Drakuru's upper chamber")}, + }, + }, + [12712] = { + [questKeys.sourceItemId] = 39313, + [questKeys.requiredSourceItems] = {39313,39314,39315,39316}, + }, + [12713] = { + [questKeys.objectives] = {nil,nil,{{40425,"Overlord Drakuru Defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use the Scepter of Domination to control it"), 0, {{"monster", 28931}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Go on top of the ziggurat with Drakuru"), 0, {{"monster", 28503}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Defeat Drakuru"), 0, {{"monster", 28998}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("After defeating Drakuru, go back down using this portal"), 0, {{"object", 202357}}}, + }, + }, + [12720] = { + [questKeys.triggerEnd] = {"\"Crimson Dawn\" Revealed",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{55.09,66.12},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Equip Keleseth's Persuaders and persuade Scarlet Crusaders"), 0, {{"monster", 28610},{"monster", 28936},{"monster", 28939},{"monster", 28940},}}}, + }, + [12721] = { + [questKeys.objectives] = {{{28952,"Akali unfettered from his chains."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Release Akali from his chains"), 0, {{"object", 191018}}}}, + }, + [12723] = { + [questKeys.preQuestGroup] = {12717,12720,12722}, + }, + [12726] = { + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.objectives] = {{{28862,},{28858,}}}, + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{26.51,35.63}}}, Questie.ICON_TYPE_EVENT, l10n("Use Drums of the Tempest at Stormwright's Shelf"),}}, + }, + [12730] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Prophet of Akali Convocation"), 0, {{"object", 191123}}}}, + }, + [12732] = { + [questKeys.requiredMinRep] = {1104,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Fill Rejek's Vial"), 0, {{"object", 191122}}}}, + }, + [12733] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28391,28394,28406},28391,"Death Knights defeated in a duel"}}}, + }, + [12734] = { + [questKeys.objectives] = {{{28086,"Blade blooded on Sapphire Hive Wasp"},{28096,"Blade blooded on Hardknuckle Charger"}},nil,nil,nil,{{{28109,28110},28109,"Blade Blooded on Mistwhisper members"}}}, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12735] = { + [questKeys.extraObjectives] = { + {{[zoneIDs.SHOLAZAR_BASIN]={{43,42}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Atha"), 1}, + {{[zoneIDs.SHOLAZAR_BASIN]={{49,63}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Ha-Khalan"), 2}, + {{[zoneIDs.SHOLAZAR_BASIN]={{46,74}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Koosu"), 3}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12736] = { + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12737] = { + [questKeys.objectives] = {nil,{{191136,}}}, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12740] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28028,28029},28028,}}}, + }, + [12741] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12752] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12753] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12754] = { + [questKeys.extraObjectives] = {{{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{60.9,75.5}}}, Questie.ICON_TYPE_EVENT, l10n("Use the Makeshift Cover"),}}, + }, + [12758] = { + [questKeys.requiredMinRep] = {1104,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Venture Co. Explosive on dead Stonewatcher"),0,{{"monster", 28877}}}}, + }, + [12759] = { + [questKeys.sourceItemId] = 39697, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12760] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12761] = { + [questKeys.sourceItemId] = 39693, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12762] = { + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Charge the Dormant Polished Crystal at the exposed Lifeblood Pillar"),2,{{"object", 300224}}}}, + }, + [12771] = { + [questKeys.preQuestSingle] = {12753}, + }, + [12772] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12773] = { + [questKeys.preQuestSingle] = {12772}, + }, + [12774] = { + [questKeys.preQuestSingle] = {12775}, + }, + [12775] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12776] = { + [questKeys.preQuestSingle] = {12777}, + }, + [12777] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12779] = { + [questKeys.extraObjectives] = {{{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{53.5,36.7}}}, Questie.ICON_TYPE_EVENT, l10n("Use the Horn of the Frostbrood"),}}, + }, + [12782] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12783] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12784] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12785] = { + [questKeys.preQuestSingle] = {12783}, + }, + [12786] = { + [questKeys.preQuestSingle] = {12784}, + }, + [12787] = { + [questKeys.preQuestSingle] = {12752}, + }, + [12788] = { + [questKeys.preQuestSingle] = {12782}, + }, + [12797] = { + [questKeys.extraObjectives] = {{{[zoneIDs.UN_GORO_CRATER]={{50.54,7.74,}}}, Questie.ICON_TYPE_EVENT, l10n("Travel through the Waygate"),}}, + }, + [12801] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Highlord Darion Mograine"), 0, {{"monster", 29173}}}, + {{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{38.8,38.4}}}, Questie.ICON_TYPE_EVENT, l10n("The Light of Dawn Uncovered"),}, + }, + }, + [12802] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Desperate Mojo"),0,{{"object", 188358}}}}, + [questKeys.requiredSourceItems] = {35797,36739,36743}, + }, + [12803] = { + [questKeys.requiredSpell] = 54197, + }, + [12804] = { + [questKeys.preQuestSingle] = {12520}, + }, + [12805] = { + [questKeys.objectives] = {{{29124,}}}, + }, + [12807] = { + [questKeys.objectives] = {{{29344,}}}, + }, + [12808] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12809] = { + [questKeys.preQuestSingle] = {12808}, + }, + [12810] = { + [questKeys.objectives] = {{{29392,}}}, + }, + [12811] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12812] = { + [questKeys.preQuestSingle] = {12811}, + }, + [12813] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29329,29330,29333,29338},29398}}}, + [questKeys.preQuestSingle] = {12807}, + }, + [12814] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29406,29405},29406}}}, + }, + [12815] = { + [questKeys.preQuestSingle] = {12814}, + }, + [12816] = { + [questKeys.triggerEnd] = {"Investigate a circle",{[zoneIDs.EVERSONG_WOODS]={{56.5,52,},},},}, + }, + [12817] = { + [questKeys.triggerEnd] = {"Investigate a circle",{[zoneIDs.AZUREMYST_ISLE]={{34.9,45.5,},},},}, + }, + [12821] = { + [questKeys.name] = "Cell Block Tango", + [questKeys.triggerEnd] = {"Garm Teleporter Activated",{[zoneIDs.STORM_PEAKS]={{50.7,81.9,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Activate the teleporter"), 0, {{"object", 191574}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12820,12828,12832}, + [questKeys.sourceItemId] = 40731, + }, + [12823] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place Hardpacked Explosive Bundle at Frostgut's Altar"), 0, {{"object", 191842}}}}, + }, + [12828] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Retrieve U.D.E.D."), 0, {{"object", 191553}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Use U.D.E.D on Ironwool Mammoth"), 0, {{"monster", 29402}}}, + }, + }, + [12831] = { + [questKeys.preQuestSingle] = {}, + }, + [12832] = { + [questKeys.triggerEnd] = {"Escort the Injured Goblin Miner to K3.",{[zoneIDs.STORM_PEAKS]={{40.2,79,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Start the escort"), 0, {{"monster", 29434}}}}, + }, + [12838] = { + [questKeys.preQuestSingle] = {12807}, + }, + [12842] = { + [questKeys.triggerEnd] = {"Weapon emblazoned",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{47.28,31.36},{47.82,27.42},{50.43,28.17},},},}, + }, + [12847] = { + [questKeys.triggerEnd] = {"Arete's Gate summoned",{[zoneIDs.ICECROWN]={{9.53,47.01}}}}, + }, + [12851] = { + [questKeys.name] = "Bearly Hanging On", + [questKeys.objectives] = {{{29358},{29351}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount Icefang"), 0, {{"monster", 29598}}}, + }, + }, + [12852] = { + [questKeys.objectives] = {{{29621,}}}, + }, + [12855] = { + [questKeys.requiredSourceItems] = {40971,41430}, + [questKeys.preQuestSingle] = {12854}, + [questKeys.extraObjectives] = {{{[zoneIDs.STORM_PEAKS]={{36.4,64.2}}}, Questie.ICON_TYPE_EVENT, l10n("Use Frosthound's Collar at the Abandoned Camp")}}, + }, + [12856] = { + [questKeys.objectives] = {{{29639,"Rescued Brunnhildar Prisoners"},{29708,"Freed Proto-Drakes"}}}, + [questKeys.extraObjectives] = { + {{[zoneIDs.STORM_PEAKS]={{62.00,59.50}}}, Questie.ICON_TYPE_EVENT, l10n("Fly freed Proto-Drakes to safety while carrying rescued Brunnhildar Prisoners"),}, + }, + }, + [12858] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {40971,41130}, + }, + [12860] = { + [questKeys.requiredSourceItems] = {40971,41179}, + [questKeys.objectives] = {{{29746,"Hidden Data gathered"}}}, + }, + [12862] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Ricket for transportation"), 0, {{"monster", 29428}}}}, + }, + [12864] = { + [questKeys.objectives] = {{{29811,"Locate Missing Scout"}}}, + }, + [12865] = { + [questKeys.objectives] = {{{29854,"Stormcrest Eagles fed"}}}, + [questKeys.preQuestSingle] = {12863}, + }, + [12869] = { + [questKeys.preQuestGroup] = {12867,13417}, + }, + [12871] = { + [questKeys.requiredSourceItems] = {40971,41258}, + [questKeys.preQuestSingle] = {12872}, + }, + [12872] = { + [questKeys.requiredSourceItems] = {40971,44704}, + }, + [12874] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Fjorlin Frostbrow"), 0, {{"monster", 29732}}}}, + }, + [12876] = { + [questKeys.preQuestSingle] = {12874}, + }, + [12885] = { + [questKeys.preQuestSingle] = {12872}, + [questKeys.exclusiveTo] = {12930}, + [questKeys.sourceItemId] = 40971, + }, + [12886] = { + [questKeys.objectives] = {{{29694}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Hyldnir Harpoon to land on nearby Proto-Drakes"), 0, {{"monster", 29625}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Hyldnir Harpoon on Column Ornaments to dismount"), 0, {{"monster", 29754}}}, + }, + }, + [12887] = { + [questKeys.objectives] = {{{29747,"The Ocular has been destroyed"}}}, + }, + [12889] = { + [questKeys.requiredSkill] = {202,400}, + }, + [12892] = { + [questKeys.objectives] = {{{29747,"The Ocular has been destroyed"}}}, + }, + [12893] = { + [questKeys.objectives] = {{{29769},{29770},{29840}}}, + }, + [12896] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Tamper with General's Weapon Rack to summon General Lightsbane"), 0, {{"object", 191778},{"object", 191779}}}, + }, + }, + [12897] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Tamper with General's Weapon Rack to summon General Lightsbane"), 0, {{"object", 191778},{"object", 191779}}}, + }, + }, + [12906] = { + [questKeys.objectives] = {{{30146,"Exhausted Vrykul Disciplined"}}}, + }, + [12910] = { + [questKeys.sourceItemId] = 40971, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount Frostbite to track scent"), 0, {{"monster", 29857}}}, + }, + }, + [12913] = { + [questKeys.sourceItemId] = 40971, + }, + [12916] = { + [questKeys.objectives] = {nil,{{400065,"Scourge Enclosure Blown Up"}}}, + }, + [12919] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Let Gymer know you're ready"), 0, {{"monster", 29647}}}, + {{[zoneIDs.ZUL_DRAK]={{26.71,57.29}}}, Questie.ICON_TYPE_EVENT, l10n("Slay Scourge while riding Gymer"),}, + }, + }, + [12920] = { + [questKeys.preQuestSingle] = {12917}, + }, + [12924] = { + [questKeys.objectives] = {{{30099,"Fjorn's Anvil Brought to Dun Niffelem"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Pick up 'You Can't Miss Him' (12966)"), 0, {{"monster", 30105}}, {["hideIfQuestActive"] = 12966}}, + }, + }, + [12925] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12926] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {40971,41130}, + }, + [12927] = { + [questKeys.requiredSourceItems] = {40971,41179}, + [questKeys.objectives] = {{{29746,"Hidden Data gathered"}}}, + }, + [12928] = { + [questKeys.requiredSourceItems] = {40971,44704}, + }, + [12929] = { + [questKeys.preQuestSingle] = {12928}, + [questKeys.exclusiveTo] = {12930}, + [questKeys.sourceItemId] = 40971, + }, + [12932] = { -- This is the version of the quest you get if you have NOT completed 9977 + [questKeys.objectives] = {{{30014,"Yggdras Defeated"}}}, + [questKeys.exclusiveTo] = {12954,9977}, + [questKeys.nextQuestInChain] = 12933, + }, + [12933] = { + [questKeys.objectives] = {{{30017,"Stinkbeard Defeated"}}}, + [questKeys.preQuestSingle] = {12932,12954}, + }, + [12934] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30019,30024,30025,30026},30019,"Elemental Lord Defeated"}}}, + }, + [12935] = { + [questKeys.objectives] = {{{30020,"Orinoko Tuskbreaker Defeated"}}}, + }, + [12936] = { + [questKeys.objectives] = {{{30023,"Korrak the Bloodrager Defeated"}}}, + }, + [12939] = { + [questKeys.objectives] = {{{30037,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Challenge Flag on sparring Mjordin Combatants"), 0, {{"monster", 30037}}}, + }, + }, + [12940] = { + [questKeys.startedBy] = {nil,{400017}}, + [questKeys.finishedBy] = {nil,{400017}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12941] = { + [questKeys.startedBy] = {nil,{400016}}, + [questKeys.finishedBy] = {nil,{400016}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12942] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12944] = { + [questKeys.startedBy] = {nil,{400038}}, + [questKeys.finishedBy] = {nil,{400038}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12945] = { + [questKeys.startedBy] = {nil,{400039}}, + [questKeys.finishedBy] = {nil,{400039}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12946] = { + [questKeys.startedBy] = {nil,{400019}}, + [questKeys.finishedBy] = {nil,{400019}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12947] = { + [questKeys.startedBy] = {nil,{400018}}, + [questKeys.finishedBy] = {nil,{400018}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12948] = { + [questKeys.objectives] = {{{30022,"Vladof the Butcher Defeated"}}}, + }, + [12950] = { + [questKeys.startedBy] = {nil,{400032}}, + [questKeys.finishedBy] = {nil,{400032}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12953] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Harpoon Guns to burn Dry Haystacks"), 0, {{"monster", 30066}}}, + }, + }, + [12954] = { + [questKeys.objectives] = {{{30014,"Yggdras Defeated"}}}, + [questKeys.preQuestSingle] = {9977}, + [questKeys.exclusiveTo] = {12932}, + [questKeys.nextQuestInChain] = 12933, + }, + [12957] = { + [questKeys.objectives] = {{{29384},{29369}}}, + }, + [12966] = { + [questKeys.preQuestGroup] = {12915,12956}, + [questKeys.requiredMinRep] = {1119,0}, + }, + [12967] = { + [questKeys.objectives] = {{{30120}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Ride Snorri"), 0, {{"monster", 30123}}}}, + }, + [12968] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12970] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Listen to Lok'lira's proposal"), 0, {{"monster", 29975}}}, + }, + }, + [12973] = { + [questKeys.objectives] = {{{30405,"Accompany Brann Bronzebeard to Frosthold."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in Brann's Flying Machine"), 0, {{"monster", 30134}}}}, + [questKeys.preQuestSingle] = {12880}, + }, + [12974] = { + [questKeys.exclusiveTo] = {12932,12954}, + }, + [12975] = { + [questKeys.preQuestSingle] = {12924}, + }, + [12977] = { + [questKeys.name] = "Hodir's Call", + [questKeys.objectives] = {{{29974,"Niffelem Forefather freed"},},nil,nil,nil,{{{30144,30135},30144,},},}, + [questKeys.preQuestSingle] = {12976}, + }, + [12978] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29370,29374,29380},29370,"Nidavelir Stormforged slain"}}}, + }, + [12979] = { + [questKeys.objectives] = {nil,nil,{{42204},},nil,nil,}, + }, + [12981] = { + [questKeys.preQuestSingle] = {12967}, + }, + [12982] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30186,30194,30195,30196},30186,"Ebon Blade Prisoners set free"}}}, + }, + [12985] = { + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Diamond Tipped Pick on the corpses of Dead Iron Giants"), 0, {{"monster", 29914},{"monster", 30163}}}}, + }, + [12987] = { + [questKeys.name] = "Placing Hodir's Helm", + [questKeys.requiredMinRep] = {1119,3000}, + }, + [12994] = { + [questKeys.requiredMinRep] = {1119,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Ethereal Worg's Fang"), 0, {{"monster", 32569}}}}, + }, + [12995] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29915,29919,30037,30243,30250,30409,30475,30483,30484,30632,30725,30751,29880},29880,"Ebon Blade Banner planted near vrykul corpse"}}}, + }, + [12996] = { + [questKeys.objectives] = {{{29352,"Kirgaraak Defeated"}}}, + }, + [12998] = { + [questKeys.objectives] = {nil,{{192181,"Attempt to secure the Heart of the Storm"}}}, + }, + [13001] = { + [questKeys.name] = "Forging Hodir's Spear", + [questKeys.requiredMinRep] = {1119,9000}, + }, + [13003] = { + [questKeys.name] = "How To Slay Your Dragon", + [questKeys.objectives] = {{{30275,"Wild Wyrm Slain"}}}, + [questKeys.preQuestSingle] = {13001}, + }, + [13005] = { + [questKeys.objectives] = {{{29984,"Iron Sentinel slain"},{29978,"Iron Dwarf Assailant slain"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Use the Horn of the Peaks and call on the Earthen to defeat Iron Dwarves and Iron Sentinels"), 0, {{"monster", 29984},{"monster",29978}}}}, + [questKeys.preQuestSingle] = {13057}, + }, + [13006] = { + [questKeys.name] = "A Viscous Cleaning", + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.preQuestSingle] = {12987}, + }, + [13007] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount Tamed Jormungar to fight Iron Colossus"),0,{{"monster", 30301},{"object", 192262}}},}, + }, + [13008] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30273,30268,30274},30273,}}}, + }, + [13010] = { + [questKeys.objectives] = {{{30105}},nil,nil,{1119,3000}}, + }, + [13011] = { + [questKeys.name] = "Culling Jorcuttar", + [questKeys.objectivesText] = {"King Jokkum in Dun Niffelem wants you to slay Jorcuttar in Hibernal Cavern."}, + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.requiredSourceItems] = {42733}, + [questKeys.extraObjectives] = {{{[zoneIDs.STORM_PEAKS]={{54.71,60.79}}}, Questie.ICON_TYPE_EVENT, l10n("Place Icemaw Bear Flank"), 0}} + }, + [13012] = { + [questKeys.startedBy] = {{30348}}, + [questKeys.finishedBy] = {{30348}}, + }, + [13013] = { + [questKeys.startedBy] = {{30357}}, + [questKeys.finishedBy] = {{30357}}, + }, + [13014] = { + [questKeys.startedBy] = {{30358}}, + [questKeys.finishedBy] = {{30358}}, + }, + [13015] = { + [questKeys.startedBy] = {{30359}}, + [questKeys.finishedBy] = {{30359}}, + }, + [13016] = { + [questKeys.startedBy] = {{30360}}, + [questKeys.finishedBy] = {{30360}}, + }, + [13017] = { + [questKeys.startedBy] = {{30531}}, + [questKeys.finishedBy] = {{30531}}, + }, + [13018] = { + [questKeys.startedBy] = {{30362}}, + [questKeys.finishedBy] = {{30362}}, + }, + [13019] = { + [questKeys.startedBy] = {{30363}}, + [questKeys.finishedBy] = {{30363}}, + }, + [13020] = { + [questKeys.startedBy] = {{30375}}, + [questKeys.finishedBy] = {{30375}}, + }, + [13021] = { + [questKeys.startedBy] = {{30536}}, + [questKeys.finishedBy] = {{30536}}, + }, + [13022] = { + [questKeys.startedBy] = {{30533}}, + [questKeys.finishedBy] = {{30533}}, + }, + [13023] = { + [questKeys.startedBy] = {{30534}}, + [questKeys.finishedBy] = {{30534}}, + }, + [13024] = { + [questKeys.startedBy] = {{30365}}, + [questKeys.finishedBy] = {{30365}}, + }, + [13025] = { + [questKeys.startedBy] = {{30367}}, + [questKeys.finishedBy] = {{30367}}, + }, + [13026] = { + [questKeys.startedBy] = {{30368}}, + [questKeys.finishedBy] = {{30368}}, + }, + [13027] = { + [questKeys.startedBy] = {{30369}}, + [questKeys.finishedBy] = {{30369}}, + }, + [13028] = { + [questKeys.startedBy] = {{30370}}, + [questKeys.finishedBy] = {{30370}}, + }, + [13029] = { + [questKeys.startedBy] = {{30371}}, + [questKeys.finishedBy] = {{30371}}, + }, + [13030] = { + [questKeys.startedBy] = {{30372}}, + [questKeys.finishedBy] = {{30372}}, + }, + [13031] = { + [questKeys.startedBy] = {{30373}}, + [questKeys.finishedBy] = {{30373}}, + }, + [13032] = { + [questKeys.startedBy] = {{30374}}, + [questKeys.finishedBy] = {{30374}}, + }, + [13033] = { + [questKeys.startedBy] = {{30364}}, + [questKeys.finishedBy] = {{30364}}, + }, + [13034] = { + [questKeys.preQuestSingle] = {}, + }, + [13035] = { + [questKeys.preQuestSingle] = {13057}, + }, + [13037] = { + [questKeys.objectives] = {{{30395}}}, + }, + [13038] = { + [questKeys.objectives] = {{{30448}}}, + [questKeys.preQuestSingle] = {13034}, + }, + [13039] = { + [questKeys.preQuestSingle] = {13036}, + }, + [13040] = { + [questKeys.preQuestSingle] = {13036}, + }, + [13042] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.objectives] = {{{30409,"Information beaten out of Apprentice Osterkilgr"},{30409}}}, + }, + [13043] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.startedBy] = {{30409},nil,{42772}}, + [questKeys.requiredSourceItems] = {}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Nergeld"), 0, {{"monster", 30403}}}, + }, + }, + [13044] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13008,13039,13040}, + }, + [13045] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Argent Skytalon"), 0, {{"monster", 30500}}}, + {{[zoneIDs.ICECROWN]={{86.85,76.61}}}, Questie.ICON_TYPE_EVENT, l10n("Drop Off Captured Crusader"), 0}, + }, + }, + [13046] = { + [questKeys.objectives] = {{{30422}}}, + [questKeys.requiredMinRep] = {1119,21000}, + }, + [13047] = { + [questKeys.preQuestGroup] = {13035,13005}, + [questKeys.objectives] = {{{30399,"Witness the Reckoning"}}}, + }, + [13048] = { + [questKeys.objectives] = {{{80000}}}, + [questKeys.preQuestGroup] = {13037,13038}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Attune the Lorehammer"), 0, {{"object", 192541},{"object", 192542},{"object", 192543},{"object", 192544},{"object", 192545},{"object", 192546}}}, + }, + }, + [13049] = { + [questKeys.preQuestGroup] = {13037,13038}, + }, + [13058] = { + [questKeys.preQuestGroup] = {13048,13049}, + [questKeys.extraObjectives] = { + {{[zoneIDs.STORM_PEAKS]={{64.4,46.7}}}, Questie.ICON_TYPE_OBJECT, l10n("Use the Lorehammer to travel back in time"), 0}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Defeat the North Wind"), 0, {{"monster", 30474}}}, + }, + }, + [13059] = { + [questKeys.objectives] = {nil,{{192560}},nil,nil,{{{30475},32821,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Volgur"), 0, {{"monster", 30483}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Brita"), 0, {{"monster", 30484}}}, + }, + }, + [13060] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Ricket for transportation"), 0, {{"monster", 29428}}}, + }, + }, + [13064] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Listen to Thorim's history"), 0, {{"monster", 29445}}}, + }, + }, + [13065] = { + [questKeys.startedBy] = {{30537}}, + [questKeys.finishedBy] = {{30537}}, + }, + [13066] = { + [questKeys.startedBy] = {{30535}}, + [questKeys.finishedBy] = {{30535}}, + }, + [13067] = { + [questKeys.startedBy] = {{30538}}, + [questKeys.finishedBy] = {{30538}}, + }, + [13068] = { + [questKeys.preQuestSingle] = {13141}, + }, + [13069] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 30337}}}}, + }, + [13071] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 30272}}}}, + }, + [13073] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Speak to Arch Druid Lilliandra for transportation to Moonglade"), 0, {{"monster", 30630}}}}, + }, + [13086] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Argent Cannon"), 0, {{"monster", 30236}}}, + }, + }, + [13091] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30725,29880,30632,30243,30250},30644,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Possess a Water Terror"), 0, {{"object", 192774}}}, + }, + }, + [13092] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.specialFlags] = 0, + }, + [13093] = { + [questKeys.preQuestSingle] = {13092}, + }, + [13098] = { + [questKeys.preQuestSingle] = {}, + }, + [13106] = { + [questKeys.preQuestSingle] = {12896,12897}, + [questKeys.exclusiveTo] = {13119,13120}, + }, + [13109] = { + [questKeys.preQuestSingle] = {13047}, + }, + [13110] = { + [questKeys.objectives] = {{{30202}}}, + [questKeys.preQuestSingle] = {13104}, + }, + [13117] = { + [questKeys.preQuestSingle] = {}, + }, + [13118] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13121] = { + [questKeys.objectives] = {nil,{{192861}}}, + }, + [13122] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13125] = { + [questKeys.preQuestGroup] = {13122,13118}, + }, + [13129] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Dip Kurzel's Blouse Scrap on the remains of Novos the Summoner"), 0, {{"monster", 26631}}}}, + }, + [13130] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13133] = { + [questKeys.objectives] = {{{30886}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Wake Slumbering Mjordin until you find Iskalder"), 0, {{"monster", 30718}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Iskalder delivered to The Bone Witch"), 0, {{"monster", 30232}}}, + }, + }, + [13134] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13135] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13136] = { + [questKeys.startedBy] = {{30597},nil,{43242}}, + [questKeys.objectives] = {nil,nil,{{43259}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13137] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Battlescar Signal Fire to summon Iskalder"), 0, {{"object", 193024}}}, + }, + }, + [13138] = { + [questKeys.preQuestSingle] = {13136}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Bag of Jagged Shards near Malykriss Furnace"), 0, {{"object", 193004}}}}, + }, + [13139] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13125,13130,13135}, + }, + [13140] = { + [questKeys.preQuestSingle] = {13136}, + }, + [13141] = { + [questKeys.objectives] = {{{30989,"Battle for Crusaders' Pinnacle"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Plant the Blessed Banner of the Crusade"), 0, {{"object", 193003}}}}, + }, + [13142] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Blow the War Horn of Jotunheim to challenge Overthane Balargarde"), 0, {{"object", 193028}}}, + }, + }, + [13143] = { + [questKeys.objectives] = {{{30894}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Lead a subdued Lithe Stalker to the cliff above Vereth the Cunning"), 0, {{"monster", 31049}}}}, + }, + [13144] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30689,31048},30689,}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13152,13211}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Free Burning Skeletons to destroy Chained Abominations"), 0, {{"object", 193060}}}}, + }, + [13145] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13146] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Drag Scourge Bombs to Lumbering Atrocities"), 0, {{"monster", 30920}}}, + }, + }, + [13147] = { + [questKeys.objectives] = {{{30922}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13149] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Plagued Grain Crates Dispelled: 0/1"), 0, {{"object", 190094}}}}, + }, + [13151] = { + [questKeys.objectives] = {{{26533,"Mal'Ganis Defeated"}}}, + }, + [13152] = { + [questKeys.preQuestSingle]= {}, + [questKeys.preQuestGroup] = {13134,13138,13140}, + [questKeys.objectives] = {{{30993,"Patches freed"},{30992,"Help Patches kill Doctor Sabnok"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Free Patches"), 0, {{"object", 193025}}}}, + }, + [13153] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13154,13156,13195,13196,13197,13198}, + }, + [13154] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13153,13156,13195,13196,13197,13198}, + }, + [13155] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13172,13174}, + }, + [13156] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13153,13154,13195,13196,13197,13198}, + }, + [13160] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13164] = { + [questKeys.preQuestSingle]= {}, + [questKeys.preQuestGroup] = {13161,13162,13163}, + }, + [13168] = { + [questKeys.triggerEnd] = {"Seize Control of an Eidolon Watcher", {[zoneIDs.ICECROWN]={{44.19,24.69}}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Eye of Dominion"), 0, {{"object", 193058}}}}, + }, + [13169] = { + [questKeys.objectives] = {{{30952,"Hungering Plaguehounds fed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13170] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13171] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13172] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13169,13170,13171}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Speak to Keritose Bloodblade to secure a Skeletal Gryphon"), 0, {{"monster", 30946}}}}, + }, + [13174] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13169,13170,13171}, + }, + [13177] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13179}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{30739,39019},39019,"Horde members slain"}}}, + }, + [13178] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13180}, + }, + [13179] = { + [questKeys.exclusiveTo] = {13177}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{30739,39019},39019,"Horde members slain"}}}, + }, + [13180] = { + [questKeys.exclusiveTo] = {13178}, + }, + [13181] = { + [questKeys.triggerEnd] = {"Victory in Lake Wintergrasp", {[zoneIDs.DALARAN]={{33,67.2}}}}, + }, + [13183] = { + [questKeys.triggerEnd] = {"Victory in Lake Wintergrasp", {[zoneIDs.DALARAN]={{58.2,25.6}}}}, + }, + [13185] = { + [questKeys.exclusiveTo] = {13223}, + }, + [13186] = { + [questKeys.exclusiveTo] = {13222}, + }, + [13190] = { + [questKeys.requiredSourceItems] = {43494}, + [questKeys.objectives] = {nil,{{193057,"Ahn'kahar Watcher Corpse Burned"}}}, + }, + [13191] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {{31106}}, + [questKeys.exclusiveTo] = {13192,13193,13194,13199,13200,13201,13202}, + }, + [13192] = { + [questKeys.exclusiveTo] = {13191,13193,13194,13199,13200,13201,13202}, + }, + [13193] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13191,13192,13194,13199,13200,13201,13202}, + }, + [13194] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13191,13192,13193,13199,13200,13201,13202}, + }, + [13195] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13196,13197,13198}, + }, + [13196] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13197,13198}, + }, + [13197] = { + [questKeys.finishedBy] = {{31108}}, + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13196,13198}, + }, + [13198] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13196,13197}, + }, + [13199] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13200,13201,13202}, + }, + [13200] = { + [questKeys.finishedBy] = {{31106}}, + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13201,13202}, + }, + [13201] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13200,13202}, + }, + [13202] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13200,13201}, + }, + [13203] = { + [questKeys.exclusiveTo] = {11528,13966}, + }, + [13204] = { + [questKeys.startedBy] = {{30329},nil,{43512}}, + }, + [13211] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13134,13138,13140}, + }, + [13214] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31191,31192,31193,31194,31195,31196,},31191}}}, + }, + [13215] = { + [questKeys.objectives] = {{{31222}}}, + }, + [13216] = { + [questKeys.objectives] = {{{31242}}}, + }, + [13217] = { + [questKeys.objectives] = {{{31271}}}, + }, + [13218] = { + [questKeys.objectives] = {{{31277}}}, + }, + [13219] = { + [questKeys.objectives] = {{{14688}}}, + }, + [13220] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Crusader Olakin's Remains at the Sanctum of Reanimation Slab"), 0, {{"object", 193090}}}}, + }, + [13221] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13222] = { + [questKeys.exclusiveTo] = {13186}, + }, + [13223] = { + [questKeys.exclusiveTo] = {13185}, + }, + [13226] = { + [questKeys.nextQuestInChain] = 13036, + }, + [13227] = { + [questKeys.nextQuestInChain] = 13036, + }, + [13228] = { + [questKeys.objectives] = {{{31273,"Dying Berserker Questioned"}}}, + [questKeys.childQuests] = {13230}, + [questKeys.preQuestSingle] = {13224}, + }, + [13229] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13230] = { + [questKeys.parentQuest] = 13228, + [questKeys.preQuestSingle] = {13228}, + }, + [13231] = { + [questKeys.objectives] = {{{31304,"Dying Soldier Questioned"}}}, + [questKeys.childQuests] = {13232}, + [questKeys.preQuestSingle] = {13225}, + }, + [13232] = { + [questKeys.objectives] = {{{31304,"Dying Soldiers Slain"}}}, + [questKeys.parentQuest] = 13231, + [questKeys.preQuestSingle] = {13231}, + }, + [13233] = { + [questKeys.triggerEnd] = {"Kill horde players in Icecrown", {[zoneIDs.ICECROWN]={{60.9,41.3}}}}, + [questKeys.preQuestSingle] = {13231}, + }, + [13234] = { + [questKeys.preQuestSingle] = {13228}, + [questKeys.triggerEnd] = {"Kill alliance players in Icecrown", {[zoneIDs.ICECROWN]={{60.9,41.3}}}}, + }, + [13235] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Margrave Dhakar to fight Morbidus"), 0, {{"monster", 31306}}}}, + }, + [13236] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31254,32414,31276},31329}}}, + }, + [13238] = { + [questKeys.preQuestSingle] = {13228}, + }, + [13239] = { + [questKeys.preQuestSingle] = {13238}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13240] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13241,13243,13244}, + }, + [13241] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13243,13244}, + }, + [13242] = { + [questKeys.preQuestSingle] = {12500}, + }, + [13243] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13241,13244}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{27744,28341},27744}}}, + }, + [13244] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13241,13243}, + }, + [13245] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13246] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13247] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13248] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13249] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13250] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13251,13252,13253,13254,13255,13256,14199}, + }, + [13251] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13252,13253,13254,13255,13256,14199}, + }, + [13252] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13253,13254,13255,13256,14199}, + }, + [13253] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13254,13255,13256,14199}, + }, + [13254] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13255,13256,14199}, + }, + [13255] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13256,14199}, + }, + [13256] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,14199}, + }, + [13258] = { + [questKeys.preQuestGroup] = {12938,13224}, + }, + [13260] = { + [questKeys.preQuestSingle] = {13228}, + }, + [13261] = { + [questKeys.preQuestSingle] = {13239}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13264] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13237}, + }, + [13265] = { + [questKeys.requiredSpell] = -59390, + }, + [13267] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Begin the assault!"), 0, {{"monster", 31650}}}}, + }, + [13268] = { + [questKeys.requiredSpell] = -59390, + }, + [13269] = { + [questKeys.requiredSpell] = -59390, + }, + [13270] = { + [questKeys.requiredSpell] = -59390, + }, + [13272] = { + [questKeys.requiredSpell] = -59390, + }, + [13273] = { + [questKeys.preQuestSingle] = {12928}, + [questKeys.sourceItemId] = 40971, + }, + [13274] = { + [questKeys.sourceItemId] = 40971, + }, + [13276] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13264}, + }, + [13277] = { + [questKeys.preQuestSingle] = {13237}, + }, + [13278] = { + [questKeys.preQuestSingle] = {13277}, + }, + [13279] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + }, + [13280] = { + [questKeys.preQuestSingle] = {13296}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Plant Alliance Battle Standard"), 0, {{"object", 193565}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get in the Jumpbot"), 0, {{"monster", 31736}}}, + }, + }, + [13281] = { + [questKeys.sourceItemId] = 44010, + [questKeys.preQuestSingle] = {13279}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + }, + [13283] = { + [questKeys.preQuestSingle] = {13293}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Plant Horde Battle Standard"), 0, {{"object", 193565}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get in the Jumpbot"), 0, {{"monster", 31770}}}, + }, + }, + [13284] = { + [questKeys.preQuestSingle] = {13341}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31701,31737},31701,"Alliance troops escorted to Ymirheim"}}}, + }, + [13285] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {}, + }, + [13286] = { + [questKeys.preQuestSingle] = {13231}, + }, + [13288] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13287}, + }, + [13289] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13288}, + }, + [13290] = { + [questKeys.preQuestSingle] = {13231}, + }, + [13291] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13292] = { + [questKeys.preQuestSingle] = {13291}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Frostbrood Skytalons Destroyed"}}}, + }, + [13293] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13294] = { + [questKeys.preQuestSingle] = {13287}, + }, + [13295] = { + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + }, + [13296] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13297] = { + [questKeys.sourceItemId] = 44010, + [questKeys.preQuestSingle] = {13295}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + }, + [13298] = { + [questKeys.preQuestSingle] = {13294}, + }, + [13300] = { + [questKeys.objectives] = {{{31397,"Saronite Mine Slave rescued"}}}, + [questKeys.preQuestSingle] = {13225}, + }, + [13301] = { + [questKeys.preQuestSingle] = {13340}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31832,31833},31832,"Horde troops escorted to Ymirheim"}}}, + }, + [13302] = { + [questKeys.objectives] = {{{31397,"Saronite Mine Slave rescued"}}}, + [questKeys.preQuestSingle] = {13224}, + }, + [13305] = { + [questKeys.preQuestSingle] = {13304}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Board Refurbished Demolisher"), 0, {{"monster", 32370}}}}, + }, + [13306] = { + [questKeys.preQuestSingle] = {13366}, + }, + [13307] = { + [questKeys.preQuestSingle] = {13306}, + }, + [13308] = { + [questKeys.preQuestSingle] = {13224,13225}, + }, + [13309] = { + [questKeys.preQuestSingle] = {13341}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Hop on the turret"), 0, {{"monster", 32227}}}}, + [questKeys.objectives] = {{{32222,"Skybreaker Infiltrators dropped"}}}, + }, + [13310] = { + [questKeys.preQuestSingle] = {13340}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Hop on the turret"), 0, {{"monster", 31884}}}}, + [questKeys.objectives] = {{{31882,"Skybreaker Infiltrators dropped"}}}, + }, + [13312] = { + [questKeys.preQuestGroup] = {13306,13367}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Rune of Distortion near Grimkor's Orb to summon Grimkor the Wicked"), 0, {{"object", 193622}}}}, + }, + [13313] = { + [questKeys.preQuestSingle] = {13306}, + }, + [13314] = { + [questKeys.preQuestSingle] = {13332}, + }, + [13315] = { + [questKeys.preQuestSingle] = {13288}, + }, + [13316] = { + [questKeys.preQuestSingle] = {13329}, + }, + [13318] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13315}, + }, + [13319] = { + [questKeys.preQuestSingle] = {13315}, + }, + [13320] = { + [questKeys.preQuestSingle] = {13315}, + }, + [13321] = { + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13322] = { + [questKeys.preQuestSingle] = {13321}, + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13323] = { + [questKeys.preQuestSingle] = {13318}, + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + }, + [13328] = { + [questKeys.preQuestSingle] = {13329}, + }, + [13329] = { + [questKeys.objectives] = {{{32467,"Skeletal Reaver bones dissolved"}}}, + [questKeys.preQuestGroup] = {13307,13312}, + }, + [13330] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13331] = { + [questKeys.preQuestSingle] = {13313}, + }, + [13332] = { + [questKeys.preQuestSingle] = {13345}, + }, + [13333] = { + [questKeys.preQuestSingle] = {13314}, + }, + [13334] = { + [questKeys.preQuestSingle] = {13332}, + }, + [13335] = { + [questKeys.objectives] = {{{32467,"Skeletal Reaver bones dissolved"}}}, + [questKeys.preQuestGroup] = {13334,13337}, + }, + [13336] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13337] = { + [questKeys.preQuestGroup] = {13332,13346}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Rune of Distortion near Grimkor's Orb to summon Grimkor the Wicked"), 0, {{"object", 193622}}}}, + }, + [13338] = { + [questKeys.preQuestSingle] = {13335}, + }, + [13339] = { + [questKeys.preQuestSingle] = {13335}, + }, + [13340] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13341] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13342] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13318}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13343] = { + [questKeys.objectives] = {{{32327,"Hourglass of Eternity protected from the Infinite Dragonflight."}}}, + }, + [13344] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13342}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13345] = { + [questKeys.sourceItemId] = 44459, + [questKeys.preQuestSingle] = {13318}, + }, + [13346] = { + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13347] = { + [questKeys.preQuestSingle] = {12499}, + }, + [13350] = { + [questKeys.preQuestSingle] = {13346}, + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13351] = { + [questKeys.preQuestSingle] = {13264}, + }, + [13352] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13351}, + }, + [13353] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13352}, + }, + [13354] = { + [questKeys.preQuestSingle] = {13351}, + }, + [13355] = { + [questKeys.preQuestSingle] = {13351}, + }, + [13356] = { + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13357] = { + [questKeys.preQuestSingle] = {13356}, + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13358] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13352}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13359] = { + [questKeys.preQuestSingle] = {13348}, + [questKeys.nextQuestInChain] = 13360, + }, + [13360] = { + [questKeys.preQuestSingle] = {13359}, + }, + [13361] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31395,32587,32588},32588,"The Prince's Destiny"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Pick it up"), 0, {{"object", 193980},{"object", 194023},{"object", 194024}}}}, + }, + [13363] = { + [questKeys.preQuestSingle] = {13362}, + }, + [13364] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tirion while wearing a Cultist Acolyte's Hood"), 0, {{"monster", 32239}}}}, + }, + [13365] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13358}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13366] = { + [questKeys.sourceItemId] = 44459, + [questKeys.preQuestSingle] = {13352}, + }, + [13367] = { + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13368] = { + [questKeys.preQuestSingle] = {13367}, + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13369] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Request a portal to Orgrimmar"), 0, {{"monster", 32346}}}}, + }, + [13372] = { + [questKeys.startedBy] = {{15989},nil,{44569}}, + }, + [13373] = { + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 0, {{"monster", 31839}}}}, + }, + [13375] = { + [questKeys.startedBy] = {{15989},nil,{44577}}, + }, + [13376] = { + [questKeys.preQuestSingle] = {13373}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 1, {{"monster", 31839}}}}, + [questKeys.objectives] = {{{32188},{32154},{31721}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13377] = { + [questKeys.objectives] = {{{32518,"Assist King Varian Wrynn"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Begin the assault!"), 0, {{"monster", 32401}}}}, + }, + [13379] = { + [questKeys.preQuestSingle] = {13239}, + }, + [13380] = { + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Karen No"), 0, {{"monster", 31648}}}}, + }, + [13382] = { + [questKeys.preQuestSingle] = {13380}, + [questKeys.objectives] = {{{32188},{32154},{31721}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13383] = { + [questKeys.preQuestSingle] = {13291}, + }, + [13386] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13225,12898}, + }, + [13390] = { + [questKeys.startedBy] = {{31237},{193195}}, + }, + [13394] = { + [questKeys.preQuestSingle] = {13393}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Board Refurbished Demolisher"), 0, {{"monster", 32370}}}}, + }, + [13395] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31254,32414,31276},31329}}}, + }, + [13398] = { + [questKeys.preQuestSingle] = {13396}, + }, + [13400] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31395,32587,32588},32588,"The Prince's Destiny"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Pick it up"), 0, {{"object", 193980},{"object", 194023},{"object", 194024}}}}, + }, + [13403] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tirion while wearing a Cultist Acolyte's Hood"), 0, {{"monster", 32239}}}}, + }, + [13404] = { + [questKeys.preQuestSingle] = {13380}, + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13405] = { + [questKeys.triggerEnd] = {"Victory in Strand of the Ancients", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,11338,14163}, + }, + [13406] = { + [questKeys.preQuestSingle] = {13373}, + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 1, {{"monster", 31839}}}}, + }, + [13407] = { + [questKeys.triggerEnd] = {"Victory in Strand of the Ancients", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,11342,14164}, + }, + [13408] = { + [questKeys.preQuestSingle] = {10143,10483}, + }, + [13409] = { + [questKeys.preQuestSingle] = {10124}, + }, + [13410] = { + [questKeys.preQuestSingle] = {10143,10483}, + }, + [13411] = { + [questKeys.preQuestSingle] = {10124}, + }, + [13413] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 1, {{"monster", 32548}}}}, + }, + [13414] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 1, {{"monster", 32548}}}}, + }, + [13415] = { + [questKeys.requiredSourceItems] = {41197,40971}, + }, + [13416] = { + [questKeys.requiredSourceItems] = {41197,40971}, + }, + [13418] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to the ship"), 1, {{"monster", 31081}}}}, + }, + [13419] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to the ship"), 1, {{"monster", 31085}}}}, + }, + [13420] = { + [questKeys.startedBy] = {nil,{193997},{44725}}, + [questKeys.requiredMinRep] = {1119,3000}, + }, + [13422] = { + [questKeys.preQuestSingle] = {12906}, + [questKeys.objectives] = {{{30146,"Exhausted Vrykul Disciplined"}}}, + [questKeys.exclusiveTo] = {13423,13424,13425}, + }, + [13423] = { + [questKeys.preQuestSingle] = {12971}, + [questKeys.exclusiveTo] = {13422,13424,13425}, + }, + [13424] = { + [questKeys.preQuestSingle] = {12997}, + [questKeys.exclusiveTo] = {13422,13423,13425}, + }, + [13425] = { + [questKeys.preQuestSingle] = {12925}, + [questKeys.exclusiveTo] = {13422,13423,13424}, + }, + [13426] = { + [questKeys.preQuestSingle] = {13285}, + [questKeys.nextQuestInChain] = 13034, + }, + [13427] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,14180}, + }, + [13428] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14181,14182,14183}, + }, + [13429] = { + [questKeys.triggerEnd] = {"Help Akama and Maiev enter the Black Temple.", {[zoneIDs.SHADOWMOON_VALLEY]={{71.05,46.11},{66.29,44.06}}}}, + [questKeys.exclusiveTo] = {10985}, + [questKeys.startedBy] = {{18528}}, + [questKeys.finishedBy] = {{18528}}, + [questKeys.preQuestSingle] = {10949}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Let Xi'ri know you're ready to battle"), 1, {{"monster", 18528}}}}, + }, + [13430] = { + [questKeys.exclusiveTo] = {10888}, + [questKeys.preQuestGroup] = {10884,10885,10886}, + }, + [13431] = { + [questKeys.exclusiveTo] = {10901}, + }, + [13432] = { + [questKeys.exclusiveTo] = {10445}, + }, + [13433] = { + [questKeys.startedBy] = {nil,{400041}}, + [questKeys.finishedBy] = {nil,{400041}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13434] = { + [questKeys.startedBy] = {nil,{400042}}, + [questKeys.finishedBy] = {nil,{400042}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13435] = { + [questKeys.startedBy] = {nil,{400040}}, + [questKeys.finishedBy] = {nil,{400040}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13436] = { + [questKeys.startedBy] = {nil,{400046}}, + [questKeys.finishedBy] = {nil,{400046}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13437] = { + [questKeys.startedBy] = {nil,{400045}}, + [questKeys.finishedBy] = {nil,{400045}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13438] = { + [questKeys.startedBy] = {nil,{400043}}, + [questKeys.finishedBy] = {nil,{400043}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13439] = { + [questKeys.startedBy] = {nil,{400044}}, + [questKeys.finishedBy] = {nil,{400044}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13440] = { + [questKeys.startedBy] = {nil,{194032}}, + [questKeys.finishedBy] = {nil,{194032}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13441] = { + [questKeys.startedBy] = {nil,{194033}}, + [questKeys.finishedBy] = {nil,{194033}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13442] = { + [questKeys.startedBy] = {nil,{194035}}, + [questKeys.finishedBy] = {nil,{194035}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13443] = { + [questKeys.startedBy] = {nil,{194036}}, + [questKeys.finishedBy] = {nil,{194036}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13444] = { + [questKeys.startedBy] = {nil,{194038}}, + [questKeys.finishedBy] = {nil,{194038}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13445] = { + [questKeys.startedBy] = {nil,{194040}}, + [questKeys.finishedBy] = {nil,{194040}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13446] = { + [questKeys.startedBy] = {nil,{194044}}, + [questKeys.finishedBy] = {nil,{194044}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13447] = { + [questKeys.startedBy] = {nil,{194045}}, + [questKeys.finishedBy] = {nil,{194045}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13448] = { + [questKeys.startedBy] = {nil,{400037}}, + [questKeys.finishedBy] = {nil,{400037}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13449] = { + [questKeys.startedBy] = {nil,{194049}}, + [questKeys.finishedBy] = {nil,{194049}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13450] = { + [questKeys.startedBy] = {nil,{194034}}, + [questKeys.finishedBy] = {nil,{194034}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13451] = { + [questKeys.startedBy] = {nil,{194037}}, + [questKeys.finishedBy] = {nil,{194037}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13452] = { + [questKeys.startedBy] = {nil,{400023}}, + [questKeys.finishedBy] = {nil,{400023}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13453] = { + [questKeys.startedBy] = {nil,{194039}}, + [questKeys.finishedBy] = {nil,{194039}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13454] = { + [questKeys.startedBy] = {nil,{194042}}, + [questKeys.finishedBy] = {nil,{194042}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13455] = { + [questKeys.startedBy] = {nil,{194043}}, + [questKeys.finishedBy] = {nil,{194043}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13456] = { + [questKeys.startedBy] = {nil,{400025}}, + [questKeys.finishedBy] = {nil,{400025}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13457] = { + [questKeys.startedBy] = {nil,{194046}}, + [questKeys.finishedBy] = {nil,{194046}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13458] = { + [questKeys.startedBy] = {nil,{194048}}, + [questKeys.finishedBy] = {nil,{194048}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13459] = { + [questKeys.startedBy] = {nil,{400026}}, + [questKeys.finishedBy] = {nil,{400026}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13460] = { + [questKeys.startedBy] = {nil,{400028}}, + [questKeys.finishedBy] = {nil,{400028}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13461] = { + [questKeys.startedBy] = {nil,{400033}}, + [questKeys.finishedBy] = {nil,{400033}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13462] = { + [questKeys.startedBy] = {nil,{400034}}, + [questKeys.finishedBy] = {nil,{400034}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13464] = { + [questKeys.startedBy] = {nil,{400020}}, + [questKeys.finishedBy] = {nil,{400020}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13465] = { + [questKeys.startedBy] = {nil,{400022}}, + [questKeys.finishedBy] = {nil,{400022}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13466] = { + [questKeys.startedBy] = {nil,{400021}}, + [questKeys.finishedBy] = {nil,{400021}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13467] = { + [questKeys.startedBy] = {nil,{400029}}, + [questKeys.finishedBy] = {nil,{400029}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13468] = { + [questKeys.startedBy] = {nil,{400030}}, + [questKeys.finishedBy] = {nil,{400030}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13469] = { + [questKeys.startedBy] = {nil,{400027}}, + [questKeys.finishedBy] = {nil,{400027}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13470] = { + [questKeys.startedBy] = {nil,{400024}}, + [questKeys.finishedBy] = {nil,{400024}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13471] = { + [questKeys.startedBy] = {nil,{400035}}, + [questKeys.finishedBy] = {nil,{400035}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13473] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13474] = { + [questKeys.startedBy] = {nil,{194081}}, + [questKeys.finishedBy] = {nil,{194081}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13481] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + }, + [13482] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + }, + [13485] = { + [questKeys.startedBy] = {{32801}}, + [questKeys.finishedBy] = {{32801}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13486] = { + [questKeys.startedBy] = {{32802}}, + [questKeys.finishedBy] = {{32802}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13487] = { + [questKeys.startedBy] = {{32803}}, + [questKeys.finishedBy] = {{32803}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13488] = { + [questKeys.startedBy] = {{32804}}, + [questKeys.finishedBy] = {{32804}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13489] = { + [questKeys.startedBy] = {{32805}}, + [questKeys.finishedBy] = {{32805}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13490] = { + [questKeys.startedBy] = {{32806}}, + [questKeys.finishedBy] = {{32806}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13491] = { + [questKeys.startedBy] = {{32807}}, + [questKeys.finishedBy] = {{32807}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13492] = { + [questKeys.startedBy] = {{32808}}, + [questKeys.finishedBy] = {{32808}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13493] = { + [questKeys.startedBy] = {{32809}}, + [questKeys.finishedBy] = {{32809}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13494] = { + [questKeys.startedBy] = {{32810}}, + [questKeys.finishedBy] = {{32810}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13495] = { + [questKeys.startedBy] = {{32811}}, + [questKeys.finishedBy] = {{32811}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13496] = { + [questKeys.startedBy] = {{32812}}, + [questKeys.finishedBy] = {{32812}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13497] = { + [questKeys.startedBy] = {{32813}}, + [questKeys.finishedBy] = {{32813}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13498] = { + [questKeys.startedBy] = {{32814}}, + [questKeys.finishedBy] = {{32814}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13499] = { + [questKeys.startedBy] = {{32815}}, + [questKeys.finishedBy] = {{32815}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13500] = { + [questKeys.startedBy] = {{32816}}, + [questKeys.finishedBy] = {{32816}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13501] = { + [questKeys.startedBy] = {nil,{400031}}, + [questKeys.finishedBy] = {nil,{400031}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13548] = { + [questKeys.startedBy] = {nil,{400036}}, + [questKeys.finishedBy] = {nil,{400036}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13549] = { + [questKeys.objectives] = {{{29327,"Female Frost Leopards recovered"},{29319,"Female Icepaw Bears recovered"},},nil,nil,nil,}, + }, + [13559] = { + [questKeys.preQuestSingle] = {12924}, + }, + [13592] = { -- HUMAN A Valiant's Field Training + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13744,13749,13760,13755}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13593] = { -- HUMAN Valiant Of Stormwind + [questKeys.preQuestSingle] = {13725,13713,13723,13724}, + [questKeys.exclusiveTo] = {13684,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13600] = { -- HUMAN A Worthy Weapon + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13603] = { -- HUMAN A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13600,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13604] = { + [questKeys.startedBy] = {{32867,32927},nil,{45506}}, + }, + [13607] = { + [questKeys.triggerEnd] = {"Entrance to Celestial Planetarium located",{[zoneIDs.THE_ARCHIVUM]={{60,46.3}},[zoneIDs.ULDUAR]={{-1,-1}}}}, + [questKeys.preQuestSingle] = {13604}, + }, + [13616] = { -- HUMAN The Edge Of Winter + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13600,13603,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13625] = { + [questKeys.objectives] = {{{33229,"Use Thrust on Melee Target"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"},{33272,"Use Charge on vulnerable Charge Target"}}}, + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13627] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {}, + }, + [13631] = { + [questKeys.startedBy] = {{32871},nil,{46052}}, + }, + [13633] = { + [questKeys.preQuestSingle] = {13667}, + }, + [13634] = { + [questKeys.preQuestSingle] = {13668}, + }, + [13662] = { + [questKeys.preQuestSingle] = {7722}, + [questKeys.requiredMinRep] = {59,3000}, + [questKeys.requiredMaxRep] = {59,9000}, + }, + [13663] = { + [questKeys.objectives] = {{{33513,"Black Knight's Gryphon taken"}},nil,{{45121},{45122}}}, + }, + [13664] = { + [questKeys.preQuestSingle] = {13700,13701}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33870}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Cavin"), 0, {{"monster", 33522}}}, + }, + }, + [13665] = { -- HUMAN The Grand Melee + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13745,13750,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33800}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13666] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13669,13670}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + }, + [13669] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13666,13670}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + }, + [13670] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13666,13669}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + }, + [13671] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679}, + [questKeys.parentQuest] = 0, + }, + [13672] = { + [questKeys.childQuests] = {}, + }, + [13673] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13674,13675,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + }, + [13674] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13673,13675,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + }, + [13675] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13673,13674,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + }, + [13676] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13680}, + [questKeys.parentQuest] = 0, + }, + [13677] = { + [questKeys.objectives] = {{{33229,"Use Thrust on Melee Target"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"},{33272,"Use Charge on vulnerable Charge Target"}}}, + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13678] = { + [questKeys.childQuests] = {}, + }, + [13679] = { + [questKeys.objectives] = {{{33448,"Argent Valiant defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire David"), 0, {{"monster", 33447}}}, + }, + }, + [13680] = { + [questKeys.objectives] = {{{33448,"Argent Valiant defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire David"), 0, {{"monster", 33447}}}, + }, + }, + [13681] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {}, + }, + [13682] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13697] = { -- ORC The Valiant's Charge + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13699] = { -- HUMAN The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33800}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13703] = { -- DWARF Valiant Of Ironforge + [questKeys.preQuestSingle] = {13699,13725,13724,13723}, + [questKeys.exclusiveTo] = {13685,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13704] = { -- GNOME Valiant Of Gnomeregan + [questKeys.preQuestSingle] = {13699,13725,13713,13724}, + [questKeys.exclusiveTo] = {13688,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13705] = { -- DRAENEI Valiant Of The Exodar + [questKeys.preQuestSingle] = {13699,13725,13713,13723}, + [questKeys.exclusiveTo] = {13690,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13706] = { -- NIGHT ELF Valiant Of Darnassus + [questKeys.preQuestSingle] = {13699,13724,13713,13723}, + [questKeys.exclusiveTo] = {13689,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13707] = { -- ORC Valiant Of Orgrimmar + [questKeys.preQuestSingle] = {13727,13728,13729,13731}, + [questKeys.exclusiveTo] = {13691,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13708] = { -- TROLL Valiant Of Sen'jin + [questKeys.preQuestSingle] = {13726,13728,13729,13731}, + [questKeys.exclusiveTo] = {13693,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13709] = { -- TAUREN Valiant Of Thunder Bluff + [questKeys.preQuestSingle] = {13726,13727,13729,13731}, + [questKeys.exclusiveTo] = {13694,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13710] = { -- UNDEAD Valiant Of Undercity + [questKeys.preQuestSingle] = {13726,13727,13728,13731}, + [questKeys.exclusiveTo] = {13695,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13711] = { -- BLOOD ELF Valiant Of Silvermoon + [questKeys.preQuestSingle] = {13726,13727,13728,13729}, + [questKeys.exclusiveTo] = {13696,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13713] = { -- DWARF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33795}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13714] = { -- DWARF The Valiant's Charge + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13715] = { -- GNOME The Valiant's Charge + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13716] = { -- DRAENEI The Valiant's Charge + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13717] = { -- NIGHT ELF The Valiant's Charge + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13718] = { -- HUMAN The Valiant's Charge + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13719] = { -- TROLL The Valiant's Charge + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13720] = { -- TAUREN The Valiant's Charge + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13721] = { -- UNDEAD The Valiant's Charge + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13722] = { -- BLOOD ELF The Valiant's Charge + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13723] = { -- GNOME The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33793}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13724] = { -- DRAENEI The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33790}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13725] = { -- NIGHT ELF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13726] = { -- ORC The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33799}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13727] = { -- TROLL The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13728] = { -- TAUREN The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33792}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13729] = { -- UNDEAD The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33798}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13731] = { -- BLOOD ELF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33791}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13741] = { -- DWARF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13742] = { -- DWARF A Worthy Weapon + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13741,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13743] = { -- DWARF The Edge Of Winter + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13741,13742,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13744] = { -- DWARF A Valiant's Field Training + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13592,13749,13755,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13745] = { -- DWARF The Grand Melee + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13665,13750,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33795}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13746] = { -- GNOME A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13747] = { -- GNOME A Worthy Weapon + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13746,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13748] = { -- GNOME The Edge Of Winter + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13746,13747,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13749] = { -- GNOME A Valiant's Field Training + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13592,13744,13755,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13750] = { -- GNOME The Grand Melee + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13665,13745,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33793}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13752] = { -- DRAENEI A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13753] = { -- DRAENEI A Worthy Weapon + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13754] = { -- DRAENEI The Edge Of Winter + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13755] = { -- DRAENEI A Valiant's Field Training + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13592,13744,13749,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13756] = { -- DRAENEI The Grand Melee + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13665,13745,13750,13761}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33790}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13757] = { -- NIGHT ELF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13758] = { -- NIGHT ELF A Worthy Weapon + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13759] = { -- NIGHT ELF The Edge Of Winter + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13760] = { -- NIGHT ELF A Valiant's Field Training + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13592,13744,13749,13755}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13761] = { -- NIGHT ELF The Grand Melee + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13665,13745,13750,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13762] = { -- ORC A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13763] = { -- ORC A Worthy Weapon + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13762,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13764] = { -- ORC The Edge Of Winter + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13762,13763,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13765] = { -- ORC A Valiant's Field Training + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13771,13776,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13767] = { -- ORC The Grand Melee + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13772,13777,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33799}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13768] = { -- TROLL A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13769] = { -- TROLL A Worthy Weapon + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13768,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13770] = { -- TROLL The Edge Of Winter + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13768,13769,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13771] = { -- TROLL A Valiant's Field Training + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13765,13776,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13772] = { -- TROLL The Grand Melee + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13767,13777,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13773] = { -- TAUREN A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13774] = { -- TAUREN A Worthy Weapon + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13773,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13775] = { -- TAUREN The Edge Of Winter + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13773,13774,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13776] = { -- TAUREN A Valiant's Field Training + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13765,13771,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13777] = { -- TAUREN The Grand Melee + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13767,13772,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33792}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13778] = { -- UNDEAD A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13779] = { -- UNDEAD A Worthy Weapon + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13780] = { -- UNDEAD The Edge Of Winter + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13781] = { -- UNDEAD A Valiant's Field Training + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13765,13771,13776,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13782] = { -- UNDEAD The Grand Melee + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13767,13772,13777,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33798}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13783] = { -- BLOOD ELF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13784] = { -- BLOOD ELF A Worthy Weapon + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13785] = { -- BLOOD ELF The Edge Of Winter + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13786] = { -- BLOOD ELF A Valiant's Field Training + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13765,13771,13776,13781}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13787] = { -- BLOOD ELF The Grand Melee + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13767,13772,13777,13782}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33791}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13788] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13789] = { + [questKeys.preQuestSingle] = {13700}, + }, + [13790] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794},{"monster", 33800},{"monster", 33793},{"monster", 33795},{"monster", 33790}}}}, + }, + [13791] = { + [questKeys.preQuestSingle] = {13700}, + }, + [13793] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794},{"monster", 33800},{"monster", 33793},{"monster", 33795},{"monster", 33790}}}}, + }, + [13795] = { + [questKeys.preQuestSingle] = {13702,13732,13733,13734,13735,13736,13737,13738,13739,13740}, + }, + [13809] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13810] = { + [questKeys.preQuestSingle] = {13701}, + }, + [13811] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796},{"monster", 33798},{"monster", 33799},{"monster", 33791},{"monster", 33792}}}}, + }, + [13812] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13813] = { + [questKeys.preQuestSingle] = {13701}, + }, + [13814] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796},{"monster", 33798},{"monster", 33799},{"monster", 33791},{"monster", 33792}}}}, + }, + [13816] = { + [questKeys.triggerEnd] = {"Entrance to Celestial Planetarium located",{[zoneIDs.THE_ARCHIVUM]={{60,46.3}},[zoneIDs.ULDUAR]={{-1,-1}}}}, + [questKeys.preQuestSingle] = {13817}, + }, + [13817] = { + [questKeys.preQuestSingle] = {}, + [questKeys.startedBy] = {{32867,32927},nil,{45857}}, + }, + [13819] = { + [questKeys.startedBy] = {{32871},nil,{46053}}, + }, + [13820] = { + [questKeys.startedBy] = {{33817}}, + [questKeys.finishedBy] = {{33434}}, + [questKeys.exclusiveTo] = {13627}, + }, + [13825] = { + [questKeys.startedBy] = {{8125}}, + [questKeys.finishedBy] = {{8125}}, + -- [questKeys.exclusiveTo] = {6610}, -- This is not ideal. You can only do 13825 if you completed 6610 prior to Wotlk. But now with Wotlk you do 6610 and then can not do 13825 + [questKeys.requiredSkill] = {185,225}, + }, + [13826] = { + [questKeys.startedBy] = {{12919}}, + [questKeys.finishedBy] = {{12919}}, + -- [questKeys.exclusiveTo] = {6607}, -- This is not ideal. You can only do 13826 if you completed 6607 prior to Wotlk. But now with Wotlk you do 6607 and then can not do 13826 + [questKeys.requiredSkill] = {356,225}, + }, + [13828] = { + [questKeys.objectives] = {{{33973,"Jeran Lockwood's advice"},{33229,"Use Thrust on Melee Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13829] = { + [questKeys.objectives] = {{{33973,"Jeran Lockwood's advice"},{33229,"Use Thrust on Melee Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13830] = { + [questKeys.triggerEnd] = {"Discover the Ghostfish mystery",{[zoneIDs.SHOLAZAR_BASIN]={{48.89,62.29,},},},}, + }, + [13832] = { + [questKeys.extraObjectives] = {{{[zoneIDs.THE_UNDERBELLY]={{46,68}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Corroded Jewelry")}}, + }, + [13833] = { + [questKeys.extraObjectives] = {{{[zoneIDs.BOREAN_TUNDRA]={{57.5,33.2},{62.2,64.2},{45,45}}}, Questie.ICON_TYPE_SLAY, l10n("Slay any beast, jump in any water location and fish in the Pool of Blood"), 0}}, + }, + [13834] = { + [questKeys.extraObjectives] = {{{[zoneIDs.WINTERGRASP]={{70,36},{63,60},{50,44},{37.6,36},{56,66},{42,75},{34.7,19.5}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Terror Fish"), 0}}, + }, + [13835] = { + [questKeys.objectives] = {{{33974,"Valis Windchaser's advice"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13836] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DALARAN]={{64,64}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Severed Arm")}}, + }, + [13837] = { + [questKeys.objectives] = {{{33972,"Rugan Steelbelly's advice"},{33272,"Charge vulnerable Charge Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13838] = { + [questKeys.objectives] = {{{33974,"Valis Windchaser's advice"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13839] = { + [questKeys.objectives] = {{{33972,"Rugan Steelbelly's advice"},{33272,"Charge vulnerable Charge Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13843] = { + [questKeys.startedBy] = {nil,{191761}}, + [questKeys.finishedBy] = {nil,{191761}}, + [questKeys.preQuestSingle] = {12889}, + [questKeys.requiredSpell] = -55252, + [questKeys.requiredSkill] = {profKeys.ENGINEERING,400}, + }, + [13846] = { + [questKeys.preQuestSingle] = {13700,13701}, + [questKeys.requiredMaxRep] = {1106,42000}, + }, + [13847] = { -- HUMAN At The Enemy's Gates + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13851,13852,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13850] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Melee attack Venomhide Ravasaur"), 0, {{"monster", 6508}}}}, + }, + [13851] = { -- DWARF At The Enemy's Gates + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13847,13852,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13852] = { -- GNOME At The Enemy's Gates + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13847,13851,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13854] = { -- DRAENEI At The Enemy's Gates + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13847,13851,13852,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13855] = { -- NIGHT ELF At The Enemy's Gates + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13847,13851,13852,13854}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13856] = { -- ORC At The Enemy's Gates + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13857,13858,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13857] = { -- TROLL At The Enemy's Gates + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13856,13858,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13858] = { -- TAUREN At The Enemy's Gates + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13856,13857,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13859] = { -- BLOOD ELF At The Enemy's Gates + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13856,13857,13858,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13860] = { -- UNDEAD At The Enemy's Gates + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13856,13857,13858,13859}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13861] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13862] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13863] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13864] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13887] = { + [questKeys.preQuestSingle] = {13850}, + }, + [13906] = { + [questKeys.preQuestSingle] = {13887}, + }, + [13929] = { + [questKeys.triggerEnd] = {"Roo taken to visit Grizzlemaw", {[zoneIDs.GRIZZLY_HILLS]={{50.7,43.9}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13930] = { + [questKeys.triggerEnd] = {"Keken taken to visit Grizzlemaw", {[zoneIDs.GRIZZLY_HILLS]={{50.7,43.9}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13931] = { + [questKeys.preQuestSingle] = {11409}, + }, + [13932] = { + [questKeys.preQuestSingle] = {11318}, + }, + [13933] = { + [questKeys.triggerEnd] = {"Roo taken to visit Bronze Dragonshrine", {[zoneIDs.DRAGONBLIGHT]={{72,39}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13934] = { + [questKeys.triggerEnd] = {"Keken taken to visit Bronze Dragonshrine", {[zoneIDs.DRAGONBLIGHT]={{72,39}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13937] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Buy a Small Paper Zeppelin"), 0, {{"monster", 29478}}}}, + [questKeys.objectives] = {{{33533,"Throw Small Paper Zeppelin to Roo"},},nil,nil,nil,}, + [questKeys.preQuestGroup] = {13954,13956}, + [questKeys.nextQuestInChain] = 13959, + [questKeys.exclusiveTo] = {13927}, + }, + [13938] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Buy a Small Paper Zeppelin"), 0, {{"monster", 29478}}}}, + [questKeys.objectives] = {{{33532,"Throw Small Paper Zeppelin to Kekek"},},nil,nil,nil,}, + [questKeys.preQuestGroup] = {13955,13957}, + [questKeys.nextQuestInChain] = 13960, + [questKeys.exclusiveTo] = {13926}, + }, + [13950] = { + [questKeys.triggerEnd] = {"Roo taken to visit Winterfin Retreat", {[zoneIDs.BOREAN_TUNDRA]={{43.5,13.6}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13951] = { + [questKeys.triggerEnd] = {"Keken taken to visit Snowfall Glade", {[zoneIDs.DRAGONBLIGHT]={{46,61},{44,70}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13954] = { + [questKeys.triggerEnd] = {"Roo taken to visit Alexstrasza the Life-Binder", {[zoneIDs.DRAGONBLIGHT]={{59.8,54.5}}}}, -- oracle orphan + [questKeys.preQuestGroup] = {13929,13933,13950}, + [questKeys.exclusiveTo] = {13927}, + }, + [13955] = { + [questKeys.triggerEnd] = {"Keken taken to visit Alexstrasza the Life-Binder", {[zoneIDs.DRAGONBLIGHT]={{59.8,54.5}}}}, -- wolvar orphan + [questKeys.preQuestGroup] = {13930,13934,13951}, + [questKeys.exclusiveTo] = {13926}, + }, + [13956] = { + [questKeys.triggerEnd] = {"Roo taken to visit The Etymidian", {[zoneIDs.UN_GORO_CRATER]={{47.38,9.21}}}}, -- oracle orphan + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{40.3,83.3}}}, Questie.ICON_TYPE_EVENT, l10n("Use the waygate to teleport to Un'goro Crater")}}, + [questKeys.preQuestGroup] = {13929,13933,13950}, + [questKeys.exclusiveTo] = {13927}, + }, + [13957] = { + [questKeys.triggerEnd] = {"Keken taken to visit Hemet Nesingwary", {[zoneIDs.SHOLAZAR_BASIN]={{27.1,58.8}}}}, -- wolvar orphan + [questKeys.preQuestGroup] = {13930,13934,13951}, + [questKeys.exclusiveTo] = {13926}, + }, + [13959] = { + [questKeys.preQuestSingle] = {13937}, + [questKeys.exclusiveTo] = {13927}, + }, + [13960] = { + [questKeys.preQuestSingle] = {13938}, + [questKeys.exclusiveTo] = {13926}, + }, + [13966] = { + [questKeys.exclusiveTo] = {11528,13203}, + }, + [14016] = { + [questKeys.specialFlags] = nil, + [questKeys.questFlags] = 128, + [questKeys.objectives] = {nil,nil,nil,nil,{{{35127},35127,"Investigate the Black Knight's Grave"}}}, + }, + [14023] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14024, + }, + [14024] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14028, + [questKeys.preQuestSingle] = {14023}, + }, + [14028] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14030, + [questKeys.preQuestSingle] = {14024}, + }, + [14030] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14033, + [questKeys.preQuestSingle] = {14028}, + }, + [14033] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14035, + [questKeys.preQuestSingle] = {14030}, + }, + [14035] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.preQuestSingle] = {14033}, + }, + [14037] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14040, + }, + [14040] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14041, + [questKeys.preQuestSingle] = {14037}, + }, + [14041] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14043, + [questKeys.preQuestSingle] = {14040}, + }, + [14043] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14044, + [questKeys.preQuestSingle] = {14041}, + }, + [14044] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14047, + [questKeys.preQuestSingle] = {14043}, + }, + [14047] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.preQuestSingle] = {14044}, + }, + [14048] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14051] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14053] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14054] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14055] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14058] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14059] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14060] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14061] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14062] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14064] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14065] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14076] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use your drum near a Mysterious Snow Mound"), 0, {{"object", 195309}}}}, + }, + [14079] = { + [questKeys.requiredRaces] = raceIDs.HUMAN, + }, + [14081] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [14082] = { + [questKeys.requiredRaces] = raceIDs.DRAENEI, + }, + [14083] = { + [questKeys.requiredRaces] = raceIDs.DWARF, + }, + [14084] = { + [questKeys.requiredRaces] = raceIDs.GNOME, + }, + [14085] = { + [questKeys.requiredRaces] = raceIDs.NIGHT_ELF, + }, + [14086] = { + [questKeys.requiredRaces] = raceIDs.ORC, + }, + [14087] = { + [questKeys.requiredRaces] = raceIDs.TAUREN, + }, + [14088] = { + [questKeys.requiredRaces] = raceIDs.TROLL, + }, + [14089] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14090] = { + [questKeys.objectives] = {{{29618,"Snowblind Follower captured"}}}, + }, + [14092] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use your drum near a Mysterious Snow Mound"), 0, {{"object", 195309}}}}, + }, + [14101] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{50.4,15.6}}}, Questie.ICON_TYPE_EVENT, l10n("Summon Drottinn Hrothgar using the Kvaldir War Horn")}}, + }, + [14102] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{43.8,24.6}}}, Questie.ICON_TYPE_EVENT, l10n("Summon Mistcaller Yngvar using the Mistcaller's Charm")}}, + }, + [14103] = { + [questKeys.specialFlags] = 1, + [questKeys.startedBy] = {{28701}}, + [questKeys.finishedBy] = {{28701}}, + }, + [14104] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{58.59,31.72}}}, Questie.ICON_TYPE_EVENT, l10n("Provoke Ornolf the Scarred using the Captured Kvaldir Banner")}}, + }, + [14107] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{32149},32149,"Fallen Hero's Spirit blessed"}}}, + }, + [14108] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 35117}}}}, + [questKeys.objectives] = {{{34925,"Hurl Spears at North Sea Kraken"},{35092}}}, + }, + [14112] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Take chum"), 0, {{"object", 195352}}}}, + }, + [14141] = { + [questKeys.objectives] = {{{29618,"Snowblind Follower captured"}}}, + }, + [14145] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Take chum"), 0, {{"object", 195353}}}}, + }, + [14151] = { + [questKeys.objectives] = {}, + [questKeys.requiredSpell] = -66659, + [questKeys.requiredSkill] = {171,450}, + [questKeys.triggerEnd] = {"Epic Gem Transmutes", {[zoneIDs.DALARAN]={{42.25,32.06}}}}, + }, + [14163] = { + [questKeys.triggerEnd] = {"Victory in the Isle of Conquest", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,11338,13405}, + }, + [14164] = { + [questKeys.triggerEnd] = {"Victory in the Isle of Conquest", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,11342,13407}, + }, + [14178] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14179,14180,13427}, + }, + [14179] = { + [questKeys.triggerEnd] = {"Victory in the Eye of the Storm", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,13427}, + }, + [14180] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,13427}, + }, + [14181] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14182,14183}, + }, + [14182] = { + [questKeys.triggerEnd] = {"Victory in Eye of the Storm", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14181,14183}, + }, + [14183] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14181,14182}, + }, + [14199] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256}, + }, + [14352] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [14349] = { + [questKeys.preQuestGroup] = {6022,6042,6133,6135,6136}, + }, + [14418] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14419] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14420] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14421] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14444] = { + [questKeys.objectives] = {{{27990,"Ask Krasus about the hilt's origins"}}}, + }, + [14483] = { + [questKeys.startedBy] = {{36296},nil,{49641}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [20438] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ask Shandy Glossgleam to lend you a tabard"), 0, {{"monster", 36856}}}}, + }, + [24216] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24221}, + }, + [24217] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 20, + }, + [24218] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24220}, + }, + [24219] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 20, + }, + [24220] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24218}, + }, + [24221] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24216}, + }, + [24223] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24224,24427}, + }, + [24224] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24223,24427}, + }, + [24225] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24226,24426}, + }, + [24226] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24225,24426}, + }, + [24426] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24225,24226}, + }, + [24427] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24223,24224}, + }, + [24428] = { + [questKeys.startedBy] = {{10184},nil,{49644}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24429] = { + [questKeys.startedBy] = {{10184},nil,{49643}}, + }, + [24431] = { + [questKeys.specialFlags] = 1, + }, + [24461] = { + [questKeys.sourceItemId] = 49723, + }, + [24498] = { + [questKeys.objectives] = {{{36494}},nil,nil,nil,{{{36764,36765,36766,36767},36764,"Alliance Slaves freed"}}}, + [questKeys.preQuestSingle] = {24683}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free the slave"), 1, {{"object", 202168}}}}, + }, + [24499] = { + [questKeys.objectives] = {{{36497},{36502}}}, + }, + [24500] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.finishedBy] = {{36955}}, + [questKeys.objectives] = {{{36955,"Find Jaina Proudmoore"},{36954,"Escape the Lich King"}}}, + }, + [24507] = { + [questKeys.objectives] = {{{36494}},nil,nil,nil,{{{36770,36771,36772,36773},36770,"Horde Slaves freed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free the slave"), 1, {{"object", 202168}}}}, + }, + [24510] = { + [questKeys.reputationReward] = {{1050,25}}, + }, + [24511] = { + [questKeys.objectives] = {{{36497},{36502}}}, + }, + [24535] = { + [questKeys.objectives] = {{{37205,"Thalorien's Blessing obtained"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Examine the remains"), 0, {{"monster", 37552}}}}, + }, + [24536] = { + [questKeys.objectives] = {{{3296}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Snagglebolt's Air Analyzer on perfumed guards"), 0, {{"monster", 3296}}}}, + }, + [24541] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab the package"), 0, {{"monster", 37671}}}}, + [questKeys.sourceItemId] = 49867, + }, + [24545] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.DEATH_KNIGHT, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {nil,{201742}}, + [questKeys.nextQuestInChain] = 24743, + [questKeys.requiredMinRep] = {1156,3000}, + }, + [24547] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24743}, + }, + [24548] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24757}, + [questKeys.nextQuestInChain] = 24912, + }, + [24549] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24912}, + [questKeys.nextQuestInChain] = 24748, + }, + [24553] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.requiredSourceItems] = {49879}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24555] = { + [questKeys.objectives] = {{{27990,"Ask Krasus about the hilt's origins"}}}, + }, + [24556] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ask Shandy Glossgleam to lend you a tabard"), 0, {{"monster", 36856}}}}, + }, + [24559] = { + [questKeys.sourceItemId] = 49723, + }, + [24563] = { + [questKeys.objectives] = {{{37205,"Thalorien's Blessing obtained"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Examine the remains"), 0, {{"monster", 37552}}}}, + }, + [24564] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24579] = { + [questKeys.exclusiveTo] = {24580,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24580] = { + [questKeys.exclusiveTo] = {24579,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24581] = { + [questKeys.exclusiveTo] = {24579,24580,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24582] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24583] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24584,24585,24586,24587,24588,24589,24590}, + }, + [24584] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24585,24586,24587,24588,24589,24590}, + }, + [24585] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24586,24587,24588,24589,24590}, + }, + [24586] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24587,24588,24589,24590}, + }, + [24587] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24588,24589,24590}, + }, + [24588] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24589,24590}, + }, + [24589] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24590}, + }, + [24590] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24589}, + }, + [24594] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24595] = { + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.requiredSourceItems] = {49879}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24596] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24597] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24598] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24609] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24610] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24611] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24612] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24613] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24614] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24615] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + -- Hackfix to hide the other two as a available once one of the random three dailies has been accepted + [24629] = { + [questKeys.exclusiveTo] = {24635, 24636}, + }, + [24635] = { + [questKeys.exclusiveTo] = {24629, 24636}, + }, + [24636] = { + [questKeys.exclusiveTo] = {24629, 24635}, + }, + [24638] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24645, 24647, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400048,"Chemical Wagon Destroyed"}},nil,nil,{{{37214},37214}}}, + [questKeys.requiredMaxLevel] = 13, + }, + [24645] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24647, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400049,"Chemical Wagon Destroyed"}},nil,nil,{{{37917},37917}}}, + [questKeys.requiredMaxLevel] = 22, + }, + [24647] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400052,"Chemical Wagon Destroyed"}},nil,nil,{{{37984},37984}}}, + [questKeys.requiredMaxLevel] = 31, + }, + [24648] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400053,"Chemical Wagon Destroyed"}},nil,nil,{{{38006},38006}}}, + [questKeys.requiredMaxLevel] = 40, + }, + [24649] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400054,"Chemical Wagon Destroyed"}},nil,nil,{{{38016},38016}}}, + [questKeys.requiredMaxLevel] = 50, + }, + [24650] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24651, 24652}, + [questKeys.objectives] = {nil,{{400055,"Chemical Wagon Destroyed"}},nil,nil,{{{38023},38023}}}, + [questKeys.requiredMaxLevel] = 60, + }, + [24651] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24650, 24652}, + [questKeys.objectives] = {nil,{{400056,"Chemical Wagon Destroyed"}},nil,nil,{{{38030},38030}}}, + [questKeys.requiredMaxLevel] = 70, + }, + [24652] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24650, 24651}, + [questKeys.objectives] = {nil,{{400057,"Chemical Wagon Destroyed"}},nil,nil,{{{38032},38032}}}, + }, + [24655] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{68,1976},1976}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Snagglebolt's Air Analyzer on perfumed guards"), 0, {{"monster", 68},{"monster", 1976}}}}, + }, + [24656] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab the package"), 0, {{"monster", 38065}}}}, + [questKeys.sourceItemId] = 49867, + }, + [24658] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24659, 24660, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400050,"Chemical Wagon Destroyed"}},nil,nil,{{{37214},37214}}}, + [questKeys.requiredMaxLevel] = 13, + }, + [24659] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24660, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400051,"Chemical Wagon Destroyed"}},nil,nil,{{{37917},37917}}}, + [questKeys.requiredMaxLevel] = 22, + }, + [24660] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400052,"Chemical Wagon Destroyed"}},nil,nil,{{{37984},37984}}}, + [questKeys.requiredMaxLevel] = 31, + }, + [24662] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400053,"Chemical Wagon Destroyed"}},nil,nil,{{{38006},38006}}}, + [questKeys.requiredMaxLevel] = 40, + }, + [24663] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400054,"Chemical Wagon Destroyed"}},nil,nil,{{{38016},38016}}}, + [questKeys.requiredMaxLevel] = 50, + }, + [24664] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24665, 24666}, + [questKeys.objectives] = {nil,{{400055,"Chemical Wagon Destroyed"}},nil,nil,{{{38023},38023}}}, + [questKeys.requiredMaxLevel] = 60, + }, + [24665] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24664, 24666}, + [questKeys.objectives] = {nil,{{400056,"Chemical Wagon Destroyed"}},nil,nil,{{{38030},38030}}}, + [questKeys.requiredMaxLevel] = 70, + }, + [24666] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24664, 24665}, + [questKeys.objectives] = {nil,{{400057,"Chemical Wagon Destroyed"}},nil,nil,{{{38032},38032}}}, + }, + [24683] = { + [questKeys.preQuestSingle] = {24499}, + }, + [24710] = { + [questKeys.preQuestSingle] = {24498}, + }, + [24711] = { + [questKeys.preQuestSingle] = {24710}, + }, + [24743] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24545}, + [questKeys.nextQuestInChain] = 24547, + }, + [24745] = { + [questKeys.startedBy] = {{36296},nil,{50320}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24748] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24549}, + [questKeys.objectives] = {{{36597,"Lich King Defeated"}}}, + }, + [24749] = { + [questKeys.preQuestSingle] = {24547}, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{36678,"Infuse Shadow's Edge with Unholy power then slay Putricide."}}}, + }, + [24756] = { + [questKeys.preQuestSingle] = {24749}, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{37955,"Infuse Shadow's Edge with Blood then defeat Lana'thel."}}}, + }, + [24757] = { + [questKeys.preQuestSingle] = {24756}, + [questKeys.nextQuestInChain] = 24548, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{36853,"Infuse Shadow's Edge with Frost then slay Sindragosa."}}}, + }, + [24792] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + }, + [24793] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + }, + [24795] = { + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24796] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24798] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24799] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24800] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24801] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24802] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.finishedBy] = {{37554}}, + [questKeys.objectives] = {{{37554,"Find Sylvanas Windrunner"},{36954,"Escape the Lich King"}}}, + }, + [24803] = { + [questKeys.specialFlags] = 1, + }, + [24815] = { + [questKeys.requiredMinRep] = {1156,3000}, + }, + [24819] = { -- A Change of Heart - Destruction friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24811}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24820] = { -- A Change of Heart - Vengeance friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24810}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24821] = { -- A Change of Heart - Courage friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24808}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24822] = { -- A Change of Heart - Wisdom friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24809}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24823] = { -- Path of Destruction - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24828,24811}, + }, + [24825] = { -- Path of Wisdom - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24809}, + }, + [24826] = { -- Path of Vengeance - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24810}, + }, + [24827] = { -- Path of Courage - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24808}, + }, + [24828] = { -- Path of Destruction - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24811}, + }, + [24829] = { -- Path of Destruction - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24823,24811}, + }, + [24830] = { -- Path of Wisdom - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24825,24809}, + }, + [24831] = { -- Path of Wisdom - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24830,24809}, + }, + [24832] = { -- Path of Vengeance - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24826,24810}, + }, + [24833] = { -- Path of Vengeance - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24832,24810}, + }, + [24834] = { -- Path of Courage - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24827,24808}, + }, + [24835] = { -- Path of Courage - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24834,24808}, + }, + [24836] = { -- A Change of Heart - Destruction honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24828,24811}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24837] = { -- A Change of Heart - wisdom honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24825,24809}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24838] = { -- A Change of Heart - vengeance honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24826,24810}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24839] = { -- A Change of Heart - courage honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24827,24808}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24840] = { -- A Change of Heart - Destruction revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24823,24811}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24841] = { -- A Change of Heart - Wisdom revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24830,24809}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24842] = { -- A Change of Heart - Vengeance revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24832,24810}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24843] = { -- A Change of Heart - Courage revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24834,24808}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24844] = { -- A Change of Heart - Destruction exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24829,24811}, + }, + [24845] = { -- A Change of Heart - Wisdom exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24831,24809}, + }, + [24846] = { -- A Change of Heart - Vengeance exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24833,24810}, + }, + [24847] = { -- A Change of Heart - Courage exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24835,24808}, + }, + [24857] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24869] = { -- 10man + [questKeys.startedBy] = {{38471}}, + [questKeys.finishedBy] = {{38471}}, + [questKeys.exclusiveTo] = {24870,24871,24872,24873,24874}, + }, + [24870] = { -- 10man + [questKeys.startedBy] = {{38491}}, + [questKeys.finishedBy] = {{38491}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.exclusiveTo] = {24869,24872,24873,24874}, + }, + [24871] = { -- 10man + [questKeys.startedBy] = {{38492}}, + [questKeys.finishedBy] = {{38492}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.exclusiveTo] = {24869,24872,24873,24874}, + }, + [24872] = { -- 10man + [questKeys.startedBy] = {{38589}}, + [questKeys.finishedBy] = {{38017}}, + [questKeys.exclusiveTo] = {24869,24870,24871,24873,24874}, + }, + [24873] = { -- 10man + [questKeys.startedBy] = {{38501}}, + [questKeys.finishedBy] = {{38501}}, + [questKeys.objectives] = {{{38501,"Return with two strains of Blight"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Slime Spray to get the Green Blight strain"), 0, {{"monster", 36627}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Gaseous Blight to get the Orange Blight strain"), 0, {{"monster", 36626}}}, + }, + [questKeys.exclusiveTo] = {24869,24870,24871,24872,24874}, + }, + [24874] = { -- 10man + [questKeys.startedBy] = {{38551}}, + [questKeys.finishedBy] = {{38558}}, + [questKeys.exclusiveTo] = {24869,24870,24871,24872,24873}, + }, + [24875] = { -- 25man + [questKeys.startedBy] = {{38471}}, + [questKeys.finishedBy] = {{38471}}, + [questKeys.exclusiveTo] = {24876,24877,24878,24879,24880}, + }, + [24876] = { -- 25man + [questKeys.startedBy] = {{38492}}, + [questKeys.finishedBy] = {{38492}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.exclusiveTo] = {24875,24878,24879,24880}, + }, + [24877] = { -- 25man + [questKeys.startedBy] = {{38491}}, + [questKeys.finishedBy] = {{38491}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.exclusiveTo] = {24875,24878,24879,24880}, + }, + [24878] = { -- 25man + [questKeys.startedBy] = {{38501}}, + [questKeys.finishedBy] = {{38501}}, + [questKeys.objectives] = {{{38501,"Return with two strains of Blight"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Slime Spray to get the Green Blight strain"), 0, {{"monster", 36627}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Gaseous Blight to get the Orange Blight strain"), 0, {{"monster", 36626}}}, + }, + [questKeys.exclusiveTo] = {24875,24876,24877,24879,24880}, + }, + [24879] = { -- 25man + [questKeys.startedBy] = {{38551}}, + [questKeys.finishedBy] = {{38558}}, + [questKeys.exclusiveTo] = {24875,24876,24877,24878,24880}, + }, + [24880] = { -- 25man + [questKeys.startedBy] = {{38589}}, + [questKeys.finishedBy] = {{38017}}, + [questKeys.exclusiveTo] = {24875,24876,24877,24878,24879}, + }, + [24912] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24548}, + [questKeys.nextQuestInChain] = 24549, + }, + [24914] = { + [questKeys.startedBy] = {{36597},nil,{53135}}, + [questKeys.preQuestSingle] = {24549}, + }, + [24915] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24916] = { + [questKeys.startedBy] = {{38606}}, + [questKeys.finishedBy] = {{38606}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24917] = { + [questKeys.startedBy] = {{38607}}, + [questKeys.finishedBy] = {{38607}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24918] = { + [questKeys.startedBy] = {{38609}}, + [questKeys.finishedBy] = {{38609}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24919] = { + [questKeys.startedBy] = {{38608}}, + [questKeys.finishedBy] = {{38608}}, + [questKeys.preQuestSingle] = {24914}, + }, + [25199] = { + [questKeys.preQuestSingle] = {25229}, + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.objectives] = {{{39368,"Salute the Drill Sergeant"},{39368,"Roar with the Drill Sergeant"},{39368,"Cheer with the Drill Sergeant"},{39368,"Dance with the Drill Sergeant"}}}, + }, + [25212] = { + [questKeys.startedBy] = {{39386}}, + [questKeys.finishedBy] = {{39386}}, + [questKeys.preQuestSingle] = {25199}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Board the Flying Machine"), 0, {{"monster", 39396}}}}, + }, + [25229] = { + [questKeys.requiredLevel] = 1, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39253,39623},39623,"Gnomes Motivated"},{{39624,39466,39675},39466,"Motivated Gnomes Brought to Captain Sparknozzle"}}}, + }, + [25239] = { -- Path of Might - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,25238}, + }, + [25240] = { -- Path of Might - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25239,25238}, + }, + [25242] = { -- Path of Might - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25240,25238}, + }, + [25246] = { -- A Change of Heart - might exalted - aronen + [questKeys.preQuestGroup] = {25242,25238}, + }, + [25247] = { -- A Change of Heart - might friendly - aronen + [questKeys.preQuestGroup] = {24815,25238}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [25248] = { -- A Change of Heart - might honored - aronen + [questKeys.preQuestGroup] = {25238,25239}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [25249] = { -- A Change of Heart - might revered - aronen + [questKeys.preQuestGroup] = {25240,25238}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [25283] = { + [questKeys.startedBy] = {{39678}}, + [questKeys.finishedBy] = {{39678}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25212,25295}, + [questKeys.nextQuestInChain] = 25500, + }, + [25285] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25199}, + [questKeys.nextQuestInChain] = 25289, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39715}}}}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39682,39715},39715,"Ejection System Tested"}}}, + }, + [25286] = { + [questKeys.preQuestSingle] = {25283}, + [questKeys.exclusiveTo] = {25500}, + [questKeys.questLevel] = -1, + }, + [25287] = { + [questKeys.questLevel] = -1, + }, + [25289] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25285}, + [questKeys.nextQuestInChain] = 25295, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39716}}}}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39713,39716},39716,"Left Leg Servos Tested"},{{39713,39716},39716,"Right Leg Servos Tested"},{{39713,39716},39716,"Evasive Maneuver System Tested"}}}, + }, + [25295] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25289}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39717}}}}, + [questKeys.objectives] = {{{39711,"Weapon System Tested"}}}, + }, + [25393] = { + [questKeys.requiredLevel] = 75, + [questKeys.questLevel] = -1, + }, + [25444] = { -- Da Perfect Spies + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Attune a Captured Frog"), 0, {{"monster", 40187}}}}, + }, + [25445] = { -- Zalazane's Fall + [questKeys.objectives] = {{{40502,"Zalazane Killed"}}}, + [questKeys.requiredLevel] = 75, + [questKeys.questLevel] = -1, + }, + [25446] = { -- Frogs Away! + [questKeys.nextQuestInChain] = 25461, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek and deploy the frogs on the white smoke"), 0, {{"monster", 40204}}}}, + }, + [25461] = { -- Trollin' For Volunteers + [questKeys.preQuestSingle] = {25446}, + [questKeys.nextQuestInChain] = 25470, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek for a ride"), 0, {{"monster", 40204}}}}, + }, + [25470] = { -- Lady Of Da Tigers + [questKeys.preQuestSingle] = {25461}, + }, + [25480] = { -- Dance Of De Spirits + [questKeys.nextQuestInChain] = 25495, + [questKeys.objectives] = {{{40352,"Dance of the Spirits"}}}, + }, + [25495] = { -- Preparin' For Battle + [questKeys.preQuestSingle] = {25480}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek for a ride"), 0, {{"monster", 40204}}}}, + }, + [25500] = { + [questKeys.preQuestSingle] = {25283}, + [questKeys.requiredMaxLevel] = 74, + [questKeys.exclusiveTo] = {25286}, + [questKeys.nextQuestInChain] = 25287, + }, + [26034] = { + [questKeys.preQuestSingle] = {26013}, + }, + [64845] = { + [questKeys.triggerEnd] = {"Victory in a battleground match", { + [zoneIDs.ALTERAC_MOUNTAINS] = {{39.4,82.2}}, + [zoneIDs.ARATHI_HIGHLANDS] = {{45.6,45.8}}, + [zoneIDs.ASHENVALE] = {{61.8,83.8}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + }, + + ----- Boosted character quests ----- + [70395] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Meet with your class trainer in Stormwind."}, + [questKeys.zoneOrSort] = 1519, + }, + [70396] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Meet with your class trainer in Orgrimmar."}, + [questKeys.zoneOrSort] = 1637, + }, + [70397] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400009, "Open the Survival Kit"}, {400010, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70398] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400011, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70401] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70411] = { + [questKeys.name] = "To the Dockmaster", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{26546,26548},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Use a scroll of teleportation from your inventory to reach the harbor and speak to the dock master."}, + [questKeys.requiredSourceItems] = {199335,199336}, + [questKeys.zoneOrSort] = 150, + }, + [70734] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400001, "Open the Survival Kit"}, {400002, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70735] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400005, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70736] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70737] = { + [questKeys.name] = "To the Zeppelin Master", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{26537,26539},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Use a scroll of teleportation from your inventory to reach the zeppelin tower and speak to the zeppelin master."}, + [questKeys.requiredSourceItems] = {199777,199778}, + [questKeys.zoneOrSort] = 1637, + }, + [70761] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400003, "Open the Survival Kit"}, {400004, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70762] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Meet with your Druid trainer in Thunder Bluff."}, + [questKeys.zoneOrSort] = 1638, + }, + [70764] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400006, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70765] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400008, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70865] = { + [questKeys.name] = "To Shattrath City", + [questKeys.startedBy] = {{376,914,928,3036,3324,3328,3344,3406,5495,5497,5505,5515,5885,5994,13283,20407,23128},nil,nil}, + [questKeys.finishedBy] = {{19684},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Shattrath City and speak to the mysterious Haggard War Veteran."}, + [questKeys.requiredSourceItems] = {200068}, + [questKeys.zoneOrSort] = 3897, + }, + [70869] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70870] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78136] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Meet with your class trainer in Stormwind."}, + [questKeys.zoneOrSort] = 1519, + }, + [78137] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Meet with your class trainer in Orgrimmar."}, + [questKeys.zoneOrSort] = 1637, + }, + [78138] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Meet with your Druid trainer in Thunder Bluff."}, + [questKeys.zoneOrSort] = 1638, + }, + [78140] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400009, "Open the Survival Kit"}, {400010, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78151] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400001, "Open the Survival Kit"}, {400002, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [78157] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400011, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78158] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400006, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [78164] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78166] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{26673},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Modera."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78167] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [78168] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil,nil}, + [questKeys.finishedBy] = {{26471},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Aethas Sunreaver."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78219] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Meet with your Death Knight trainer in Acherus: The Ebon Hold."}, + [questKeys.zoneOrSort] = 4281, + }, + [78220] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400062, "Open the Survival Kit"}, {400063, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78221] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400064, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78222] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400061, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78223] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{26673},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Modera."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78224] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400061, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78225] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{26471},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Aethas Sunreaver."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78752] = { + [questKeys.name] = "Proof of Demise: Titan Rune Protocol Gamma", + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"The Lich King's presence mustn't extend any further!","","The Council of Six has decreed that any strong enough fighter should take up arms and aid in keeping Azeroth safe!"}, + [questKeys.objectives] = {nil,nil,{{211206}}}, + [questKeys.zoneOrSort] = 4395, + [questKeys.questFlags] = 4232, + [questKeys.specialFlags] = 1, + [questKeys.reputationReward] = {{factionIDs.KIRIN_TOR,75}}, + }, + [78753] = { + [questKeys.name] = "Proof of Demise: Threats to Azeroth", + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"We must continue putting pressure on all fronts!","","The Council of Six has decreed that any willing fighter should take up arms and aid in keeping Azeroth safe!"}, + [questKeys.objectives] = {nil,nil,{{211207}}}, + [questKeys.zoneOrSort] = 4395, + [questKeys.questFlags] = 4232, + [questKeys.specialFlags] = 1, + [questKeys.reputationReward] = {{factionIDs.KIRIN_TOR,75}}, + }, + } +end + +function _QuestieWotlkQuestFixes:InsertMissingQuestIds() + + -- Alliance boosted quests + QuestieDB.questData[70395] = {} -- A New Beginning + QuestieDB.questData[70397] = {} -- Tools for Survival + QuestieDB.questData[70398] = {} -- Combat Training + QuestieDB.questData[70401] = {} -- Talented + QuestieDB.questData[70411] = {} -- To the Dockmaster + QuestieDB.questData[70870] = {} -- Talented + QuestieDB.questData[78136] = {} -- A New Beginning + QuestieDB.questData[78140] = {} -- Tools for Survival + QuestieDB.questData[78157] = {} -- Combat Training + QuestieDB.questData[78164] = {} -- Talented + QuestieDB.questData[78166] = {} -- To Northrend + QuestieDB.questData[78222] = {} -- Talented DK + QuestieDB.questData[78223] = {} -- To Northrend DK + + -- Horde boosted quests + QuestieDB.questData[70396] = {} -- A New Beginning + QuestieDB.questData[70734] = {} -- Tools for Survival + QuestieDB.questData[70735] = {} -- Combat Training + QuestieDB.questData[70736] = {} -- Talented + QuestieDB.questData[70737] = {} -- To the Zeppelin Master + QuestieDB.questData[70761] = {} -- Tools for Survival + QuestieDB.questData[70762] = {} -- A New Beginning + QuestieDB.questData[70764] = {} -- Combat Training + QuestieDB.questData[70765] = {} -- Talented + QuestieDB.questData[70869] = {} -- Talented + QuestieDB.questData[78137] = {} -- A New Beginning + QuestieDB.questData[78138] = {} -- A New Beginning + QuestieDB.questData[78151] = {} -- Tools for Survival + QuestieDB.questData[78158] = {} -- Combat Training + QuestieDB.questData[78167] = {} -- Talented + QuestieDB.questData[78168] = {} -- To Northrend + QuestieDB.questData[78224] = {} -- Talented DK + QuestieDB.questData[78225] = {} -- To Northrend DK + + -- Neutral boosted quests + QuestieDB.questData[70865] = {} -- To Shattrath City + QuestieDB.questData[78219] = {} -- A New Beginning + QuestieDB.questData[78220] = {} -- Tools for Survival + QuestieDB.questData[78221] = {} -- Combat Training + + -- P4 quests + QuestieDB.questData[78752] = {} -- Proof of Demise: Titan Rune Protocol Gamma + QuestieDB.questData[78753] = {} -- Proof of Demise: Threats to Azeroth +end diff --git a/.history/Database/Corrections/wotlkQuestFixes_20260222030234.lua b/.history/Database/Corrections/wotlkQuestFixes_20260222030234.lua new file mode 100644 index 0000000..1eaf10c --- /dev/null +++ b/.history/Database/Corrections/wotlkQuestFixes_20260222030234.lua @@ -0,0 +1,7087 @@ +---@class QuestieWotlkQuestFixes +local QuestieWotlkQuestFixes = QuestieLoader:CreateModule("QuestieWotlkQuestFixes") +local _QuestieWotlkQuestFixes = {} + +---@type QuestieDB +local QuestieDB = QuestieLoader:ImportModule("QuestieDB") +---@type ZoneDB +local ZoneDB = QuestieLoader:ImportModule("ZoneDB") +---@type QuestieProfessions +local QuestieProfessions = QuestieLoader:ImportModule("QuestieProfessions") +---@type QuestieCorrections +local QuestieCorrections = QuestieLoader:ImportModule("QuestieCorrections") +---@type l10n +local l10n = QuestieLoader:ImportModule("l10n") + + +QuestieCorrections.killCreditObjectiveFirst[11652] = true +QuestieCorrections.killCreditObjectiveFirst[12100] = true +QuestieCorrections.killCreditObjectiveFirst[12546] = true +QuestieCorrections.killCreditObjectiveFirst[12561] = true +QuestieCorrections.killCreditObjectiveFirst[12762] = true +QuestieCorrections.killCreditObjectiveFirst[12919] = true +QuestieCorrections.killCreditObjectiveFirst[13086] = true +QuestieCorrections.killCreditObjectiveFirst[13373] = true +QuestieCorrections.killCreditObjectiveFirst[13376] = true +QuestieCorrections.killCreditObjectiveFirst[13380] = true +QuestieCorrections.killCreditObjectiveFirst[13382] = true +QuestieCorrections.killCreditObjectiveFirst[13404] = true +QuestieCorrections.killCreditObjectiveFirst[13406] = true +QuestieCorrections.killCreditObjectiveFirst[24498] = true +QuestieCorrections.killCreditObjectiveFirst[24507] = true + +function QuestieWotlkQuestFixes:Load() + _QuestieWotlkQuestFixes:InsertMissingQuestIds() + + local questKeys = QuestieDB.questKeys + local raceIDs = QuestieDB.raceKeys + local classIDs = QuestieDB.classKeys + local factionIDs = QuestieDB.factionIDs + local zoneIDs = ZoneDB.zoneIDs + local sortKeys = QuestieDB.sortKeys + local profKeys = QuestieProfessions.professionKeys + local specKeys = QuestieProfessions.specializationKeys + + return { + [55] = { + [questKeys.objectives] = {{{1200}}}, + }, + [75] = { + [questKeys.specialFlags] = 0, + }, + [171] = { + [questKeys.startedBy] = {{14305},nil,nil}, + [questKeys.questLevel] = -1, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [172] = { + [questKeys.questLevel] = -1, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [176] = { + [questKeys.startedBy] = {nil,{68,156561}}, + }, + [236] = { + [questKeys.finishedBy] = {{31108}}, + [questKeys.exclusiveTo] = {13153,13154,13156,13195,13196,13197,13198}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [403] = { + [questKeys.startedBy] = {nil,{269}}, + }, + [434] = { + [questKeys.triggerEnd] = {"Overhear Lescovar and Marzon's Conversation", {[zoneIDs.STORMWIND_CITY]={{72.22,35.37}}}}, + }, + [508] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [558] = { + [questKeys.questLevel] = -1, + [questKeys.parentQuest] = 0, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [648] = { + [questKeys.triggerEnd] = {"Escort OOX-17/TN to safety", {[zoneIDs.TANARIS]={{61,53}}}}, + }, + [768] = { + [questKeys.requiredSkill] = {393,1}, + }, + [836] = { + [questKeys.triggerEnd] = {"Escort OOX-09/HL to safety", {[zoneIDs.THE_HINTERLANDS]={{57.81,50.2}}}}, + }, + [910] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [911] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [915] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [925] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1056] = { + [questKeys.nextQuestInChain] = 1057, + }, + [1132] = { + [questKeys.startedBy] = {{4455}}, + [questKeys.finishedBy] = {{4456}}, + }, + [1135] = { + [questKeys.startedBy] = {{4456}}, + [questKeys.finishedBy] = {{4456}}, + }, + [1198] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1252] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1253] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1284] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1361] = { + [questKeys.startedBy] = {{2229,4485,10540}}, + }, + [1468] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1479] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1558] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1678] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1679] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1680] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1681] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1682] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1687] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1716] = { + [questKeys.preQuestSingle] = {}, + }, + [1800] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1885] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [2204] = { + [questKeys.startedBy] = {nil,{112877}}, + }, + [2279] = { + [questKeys.preQuestSingle] = {2278}, + }, + [2358] = { + [questKeys.startedBy] = {{7009}}, + }, + [2701] = { + [questKeys.finishedBy] = {nil,{141980}}, + }, + [2767] = { + [questKeys.triggerEnd] = {"Escort OOX-22/FE to safety", {[zoneIDs.FERALAS]={{55.63,51.35}}}}, + }, + [2879] = { + [questKeys.requiredSourceItems] = {9255,9256,9257,9258}, + }, + [3602] = { + [questKeys.requiredSourceItems] = {}, + }, + [3641] = { + [questKeys.preQuestSingle] = {}, + }, + [3763] = { + [questKeys.startedBy] = {{6735}}, + [questKeys.exclusiveTo] = {3789,3790}, + }, + [3789] = { + [questKeys.startedBy] = {{6740}}, + [questKeys.exclusiveTo] = {3763,3790}, + }, + [3790] = { + [questKeys.startedBy] = {{5111}}, + [questKeys.exclusiveTo] = {3763,3789}, + }, + [4127] = { + [questKeys.startedBy] = {nil,{164909,186419}}, + }, + [4144] = { + [questKeys.specialFlags] = nil, + }, + [4362] = { + [questKeys.preQuestSingle] = {4361}, + }, + [4363] = { + [questKeys.preQuestSingle] = {4362}, + }, + [4485] = { + [questKeys.startedBy] = {{6179}}, + }, + [4486] = { + [questKeys.startedBy] = {{5149}}, + }, + [4740] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [4763] = { + [questKeys.objectives] = {nil,nil,{{12355}}}, + }, + [4771] = { + [questKeys.preQuestSingle] = {5522}, + }, + [4822] = { + [questKeys.questLevel] = -1, + [questKeys.parentQuest] = 0, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [5057] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [5305] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5306] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5307] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5502] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + [questKeys.preQuestGroup] = {915,925}, + }, + [5505] = { + [questKeys.startedBy] = {{11056}}, + [questKeys.finishedBy] = {{11056}}, + }, + [5531] = { + [questKeys.nextQuestInChain] = nil, + }, + [5721] = { + [questKeys.extraObjectives] = {{{[zoneIDs.EASTERN_PLAGUELANDS]={{35.01,84.05}}}, Questie.ICON_TYPE_EVENT, l10n("Place the Relic Bundle in the Town Square."),}}, + }, + [6185] = { + [questKeys.triggerEnd] = {"The Blightcaller Uncovered", {[zoneIDs.EASTERN_PLAGUELANDS]={{23.4,67.8}}}}, + }, + [6521] = { + [questKeys.startedBy] = {{36273}}, + [questKeys.finishedBy] = {{36273}}, + }, + [6522] = { + [questKeys.startedBy] = {{4421},nil,{17008}}, + [questKeys.finishedBy] = {{36273}}, + }, + [6963] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [6983] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [7023] = { + [questKeys.startedBy] = {{13435,23010}}, + }, + [7042] = { + [questKeys.startedBy] = {{13433}}, + }, + [7641] = { + [questKeys.preQuestSingle] = {7638,7670}, + }, + [7643] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {7642,7648}, + }, + [7704] = { + [questKeys.startedBy] = {nil,{179832},{18950}}, + }, + [8149] = { + [questKeys.objectives] = {nil,{{180204,"Place a tribute at Uther's Tomb"}}}, + [questKeys.extraObjectives] = {}, + }, + [8150] = { + [questKeys.objectives] = {nil,{{180205,"Place a tribute at Grom's Monument"}}}, + [questKeys.extraObjectives] = {}, + }, + [8166] = { + [questKeys.requiredMaxLevel] = 49, + }, + [8167] = { + [questKeys.requiredMaxLevel] = 39, + }, + [8168] = { + [questKeys.requiredMaxLevel] = 29, + }, + [8169] = { + [questKeys.requiredMaxLevel] = 49, + }, + [8170] = { + [questKeys.requiredMaxLevel] = 39, + }, + [8171] = { + [questKeys.requiredMaxLevel] = 29, + }, + [8346] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{15274},15274,"Mana Tap creature"}}}, + }, + [8551] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8552] = { + [questKeys.specialFlags] = 0, + }, + [8553] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8554] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8746] = { + [questKeys.objectives] = {{{15664,"Find Metzen the Reindeer and rescue him"}},nil,{{21211}}}, + }, + [8762] = { + [questKeys.objectives] = {{{15664,"Find Metzen the Reindeer and rescue him"}},nil,{{21211}}}, + }, + [8767] = { + [questKeys.requiredClasses] = classIDs.ROGUE + classIDs.WARRIOR + classIDs.HUNTER + classIDs.PALADIN + classIDs.DEATH_KNIGHT, + }, + [8871] = { + [questKeys.startedBy] = {}, + }, + [8872] = { + [questKeys.startedBy] = {}, + }, + [8874] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.startedBy] = {}, + }, + [8875] = { + [questKeys.startedBy] = {}, + }, + [8892] = { + [questKeys.preQuestSingle] = {}, + }, + [9078] = { + [questKeys.requiredClasses] = classIDs.ROGUE, + }, + [9154] = { + [questKeys.startedBy] = {{16241,16255}}, + [questKeys.finishedBy] = {{16281}}, + [questKeys.questLevel] = -1, + }, + [9189] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [9211] = { + [questKeys.specialFlags] = 1, + }, + [9213] = { + [questKeys.specialFlags] = 1, + }, + [9221] = { + [questKeys.specialFlags] = 1, + }, + [9222] = { + [questKeys.specialFlags] = 1, + }, + [9223] = { + [questKeys.specialFlags] = 1, + }, + [9224] = { + [questKeys.specialFlags] = 1, + }, + [9225] = { + [questKeys.specialFlags] = 1, + }, + [9226] = { + [questKeys.specialFlags] = 1, + }, + [9227] = { + [questKeys.specialFlags] = 1, + }, + [9228] = { + [questKeys.specialFlags] = 1, + }, + [9247] = { + [questKeys.finishedBy] = {{16281}}, + }, + [9358] = { + [questKeys.exclusiveTo] = {9252}, + }, + [9361] = { + [questKeys.requiredSourceItems] = {23270}, + }, + [9425] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [9467] = { + [questKeys.sourceItemId] = 24335, + [questKeys.requiredSourceItems] = {23682,24335}, + }, + [9629] = { + [questKeys.objectives] = {{{17326}}}, + }, + [9648] = { + [questKeys.name] = "Maatparm Mushroom Menagerie", + [questKeys.objectivesText] = {"Maatparm at Blood Watch wants 1 Aquatic Stinkhorn, 1 Blood Mushroom, 1 Ruinous Polyspore, and 1 Fel Cone Fungus."}, + }, + [9681] = { + [questKeys.startedBy] = {{17717,17718}}, + }, + [9876] = { + [questKeys.nextQuestInChain] = 9738, + }, + [10110] = { + [questKeys.preQuestSingle] = {13409}, + }, + [10173] = { + [questKeys.requiredSourceItems] = {}, + }, + [10180] = { + [questKeys.nextQuestInChain] = 10097, + }, + [10445] = { + [questKeys.exclusiveTo] = {13432}, + }, + [10464] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10465] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10466] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10467] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10468] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10469] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10470] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10471] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10472] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10473] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10474] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10475] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10667] = { + [questKeys.preQuestSingle] = {}, + }, + [10670] = { + [questKeys.preQuestSingle] = {}, + }, + [10702] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{21864,21878,21879,23020,21978},21978,},},}, + }, + [10703] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{21864,21878,21879,23020,21978},21978,},},}, + }, + [10769] = { + [questKeys.objectives] = {{{19823}},nil,{{31108}}}, + }, + [10776] = { + [questKeys.objectives] = {{{19823}},nil,{{31310}}}, + }, + [10888] = { + [questKeys.exclusiveTo] = {13430}, + }, + [10900] = { + [questKeys.requiredMaxLevel] = 70, + }, + [10901] = { + [questKeys.exclusiveTo] = {13431}, + }, + [10958] = { + [questKeys.preQuestSingle] = {10949}, + }, + [10985] = { + [questKeys.exclusiveTo] = {13429}, + }, + [11010] = { + [questKeys.requiredClasses] = classIDs.WARLOCK + classIDs.ROGUE + classIDs.MAGE + classIDs.PRIEST + classIDs.WARRIOR + classIDs.PALADIN + classIDs.HUNTER + classIDs.SHAMAN + classIDs.DEATH_KNIGHT, + }, + [11117] = { + [questKeys.startedBy] = {{23486}}, + [questKeys.finishedBy] = {{23486}}, + }, + [11118] = { + [questKeys.startedBy] = {{23486}}, + [questKeys.finishedBy] = {{23486}}, + }, + [11120] = { + [questKeys.startedBy] = {{24657}}, + [questKeys.finishedBy] = {{24657}}, + }, + [11122] = { + [questKeys.objectives] = {{{24468,"Kegs Delivered"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab a keg"), 0, {{"monster", 24364}}}}, + }, + [11137] = { + [questKeys.preQuestSingle] = {}, + }, + [11140] = { + [questKeys.requiredSourceItems] = {33040,33044}, + }, + [11153] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HOWLING_FJORD]={{28.1,42.2}}}, Questie.ICON_TYPE_EVENT, l10n("Wait for Harrowmeiser's zeppelin to dock"),}}, + }, + [11154] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Throw the firecrackers up to 20 yards away underneath a darkclaw bat to scare it"), 0, {{"monster", 23959}}}}, + }, + [11157] = { + [questKeys.objectives] = {{{23777,"Proto-Drake Egg destroyed"}},nil,nil,nil,{{{23688,23750},23688}}}, + }, + [11170] = { + [questKeys.objectives] = {{{24120,"North Fleet Reservist Infected"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Bat Handler Camille"), 0, {{"monster", 23816}}}}, + }, + [11175] = { + [questKeys.exclusiveTo] = {11176}, + }, + [11231] = { + [questKeys.sourceItemId] = 33284, + }, + [11238] = { + [questKeys.sourceItemId] = 33282, + }, + [11241] = { + [questKeys.triggerEnd] = {"Rescue Apothecary Hanes",{[zoneIDs.HOWLING_FJORD]={{78.72,37.23,},},},}, + }, + [11245] = { + [questKeys.requiredSourceItems] = {33311}, + }, + [11246] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23661,23662,23663,23664,23665,23666,23667,23668,23669,23670},23661,"Winterskorn Vrykul Dismembered"}}}, + [questKeys.requiredSourceItems] = {33311}, + }, + [11247] = { + [questKeys.requiredSourceItems] = {33311}, + }, + [11249] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Present the Vrykul Scroll of Ascension"), 0, {{"object", 186586}}}}, + }, + [11252] = { + [questKeys.preQuestSingle] = {}, + }, + [11257] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23661,23662,23663,23664,23665,23666,23667,23668,23669,23670},23661,"Winterskorn Vrykul Dismembered"}}}, + [questKeys.requiredSourceItems] = {33340}, + }, + [11258] = { + [questKeys.requiredSourceItems] = {33340}, + }, + [11259] = { + [questKeys.requiredSourceItems] = {33340}, + }, + [11260] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Present the Vrykul Scroll of Ascension"), 0, {{"object", 186586}}}}, + }, + [11265] = { + [questKeys.sourceItemId] = 33284, + }, + [11267] = { + [questKeys.sourceItemId] = 33282, + }, + [11279] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Spray Proto-Drake Egg"), 0, {{"monster", 23777}}}}, + }, + [11280] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Place Tillinghast's Plagued Meat on the ground"), 0, {{"monster", 24170}}}}, + }, + [11281] = { + [questKeys.objectives] = {{{24173}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Carved Horn"), 0, {{"object", 186599}}}}, + }, + [11282] = { + [questKeys.objectives] = {{{24161,"Oric the Baleful's Corpse Impaled"},{24016,"Ulf the Bloodletter's Corpse Impaled"},{24162,"Gunnar Thorvardsson's Corpse Impaled"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Slay Vrykul across the Forsaken blockade until they appear"), 0, {{"monster", 24015}}}}, + }, + [11284] = { + [questKeys.sourceItemId] = 33352, + }, + [11286] = { + [questKeys.preQuestSingle] = {}, + }, + [11296] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Break Riven Widow Cocoons to free captives"), 0, {{"monster", 24210}}}}, + }, + [11297] = { + [questKeys.nextQuestInChain] = 11298, + }, + [11298] = { + [questKeys.preQuestSingle] = {}, + }, + [11300] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill gladiators at the Ring of Judgement until Oluf the Violent appears"), 0, {{"monster", 24213},{"monster", 24214},{"monster", 24215}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Oluf the Violent"), 0, {{"monster", 23931}}} + }, + }, + [11301] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Use Grick's Bonesaw on corpses of Deranged Explorers"), 0, {{"monster", 23967}}}}, + }, + [11302] = { + [questKeys.preQuestSingle] = {11284}, + }, + [11306] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Fill the Empty Apothecary's Flask at the Cauldron of Vrykul Blood"),0,{{"object", 186656}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mix the Flask of Vrykul Blood with Harris's Plague Samples"),1,{{"object", 186657}}}, + }, + }, + [11307] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23564,24198,24199},23564,"Plagued Vrykul Sprayed"}}}, + }, + [11310] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23564,24198,24199},23564,"Plagued Vrykul exterminated"}}}, + }, + [11314] = { + [questKeys.objectives] = {{{23678,"Chill Nymphs Freed"}}}, + }, + [11317] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Meditate"), 0, {{"object", 186649}}}}, + }, + [11318] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{80001},{80002},{80003}}}, + }, + [11319] = { + [questKeys.objectives] = {{{23876,"Spores frozen"}}}, + }, + [11322] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Meditate"), 0, {{"object", 186649}}}}, + }, + [11329] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Search for Northern Barbfish"), 0, {{"object", 186659}}}}, + }, + [11332] = { + [questKeys.sourceItemId] = 33634, + [questKeys.preQuestSingle] = {11331}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Get a gryphon to ride and some bombs"), 0, {{"monster", 23859}}}}, + }, + [11335] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.exclusiveTo] = {11336,11337,11338,13405,14163}, + [questKeys.questFlags] = 4226, + }, + [11336] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.exclusiveTo] = {11335,11337,11338,13405,14163}, + }, + [11337] = { + [questKeys.triggerEnd] = {"Victory in the Eye of the Storm", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11338,13405,14163}, + }, + [11338] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,13405,14163}, + }, + [11339] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11340,11341,11342,13407,14164}, + }, + [11340] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11341,11342,13407,14164}, + }, + [11341] = { + [questKeys.triggerEnd] = {"Victory in Eye of the Storm", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11342,13407,14164}, + }, + [11342] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,13407,14164}, + }, + [11343] = { + [questKeys.triggerEnd] = {"Secrets of Wyrmskull Uncovered",{[zoneIDs.HOWLING_FJORD]={{60.13,50.8,},},},}, + }, + [11344] = { + [questKeys.triggerEnd] = {"Secrets of Nifflevar Uncovered",{[zoneIDs.HOWLING_FJORD]={{69.04,54.79,},},},}, + }, + [11346] = { + [questKeys.preQuestSingle] = {11284}, + [questKeys.sourceItemId] = 33778, + }, + [11348] = { + [questKeys.objectives] = {{{23725,"Test Rune of Command on normal Stone Giants"},{24334}}}, + }, + [11350] = { + [questKeys.sourceItemId] = 33778, + }, + [11352] = { + [questKeys.objectives] = {{{23725,"Test Rune of Command on normal Stone Giants"},{24334}}}, + }, + [11355] = { + [questKeys.preQuestSingle] = {11284}, + [questKeys.objectives] = {{{23725,"Runed Stone Giant Corpse Analyzed"},},nil,nil,nil,}, + }, + [11358] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Rune Sample"), 0, {{"object", 186718},}}}, + }, + [11365] = { + [questKeys.objectives] = {{{23725,"Runed Stone Giant Corpse Analyzed"},},nil,nil,nil,}, + }, + [11366] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Rune Sample"), 0, {{"object", 186718},}}}, + }, + [11390] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 24418},}}}, + }, + [11391] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 24418},}}}, + }, + [11392] = { + [questKeys.startedBy] = {nil,{186267}}, + [questKeys.finishedBy] = {nil,{186314}}, + }, + [11393] = { + [questKeys.exclusiveTo] = {11394,}, + }, + [11394] = { + [questKeys.preQuestSingle] = {}, + }, + [11401] = { + [questKeys.startedBy] = {nil,{186267}}, + [questKeys.finishedBy] = {nil,{186314}}, + }, + [11409] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{80004},{80005},{80006}}}, + }, + [11410] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Fresh Barbfish Bait"), 0, {{"object", 186770},}}}, + }, + [11412] = { + [questKeys.objectives] = {{{24510,"Kegs Delivered"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab a keg"), 0, {{"monster", 24527}}}}, + }, + [11414] = { + [questKeys.sourceItemId] = 33618, + }, + [11415] = { + [questKeys.sourceItemId] = 33618, + }, + [11416] = { + [questKeys.requiredSourceItems] = {33618}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Touch Talonshrike's Egg"), 0, {{"object", 186814},{"object", 190283},{"object", 190284}}}}, + }, + [11417] = { + [questKeys.requiredSourceItems] = {33618}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Touch Talonshrike's Egg"), 0, {{"object", 186814},{"object", 190283},{"object", 190284}}}}, + }, + [11418] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Feathered Charm on Steelfeather"), 0, {{"monster", 24514},}}}, + }, + [11421] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Commandeer Crykul Harpoon Gun"),0,{{"object",190512}}}}, + }, + [11428] = { + [questKeys.preQuestSingle] = {11316}, + }, + [11429] = { + [questKeys.objectives] = {nil,{{186863,"Alliance Banner Placed"}},nil,nil,{{{24640},24640,"Alliance Banner Defended"}}}, + }, + [11431] = { + [questKeys.startedBy] = {{24657}}, + [questKeys.finishedBy] = {{24657}}, + }, + [11436] = { + [questKeys.triggerEnd] = {"Go Harpoon Surfing",{[zoneIDs.HOWLING_FJORD]={{60.08,62.06,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Go Harpoon Surfing"),0,{{"object",186894}}}}, + }, + [11448] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Ask McGoyver for a ride to the Explorers' League Outpost"),0,{{"monster",24040}}}}, + }, + [11452] = { + [questKeys.startedBy] = {{24018},nil,{34090}}, + }, + [11453] = { + [questKeys.startedBy] = {{24018},nil,{34091}}, + }, + [11460] = { + [questKeys.objectives] = {{{24752,"Fjord Rock Falcon Fed"}}}, + }, + [11465] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Send your Trained Rock Falcon after it"), 0, {{"monster", 24746}}}}, + }, + [11466] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Olga"), 0, {{"monster", 24639}}}}, + }, + [11467] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Search for treasure"), 0, {{"object", 186944}}}}, + }, + [11468] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Send your Trained Rock Falcon after it"), 0, {{"monster", 24747}}}}, + }, + [11470] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Release the Trained Rock Falcon"), 0, {{"object", 190222}}}}, + }, + [11471] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Fight Jonah"), 0, {{"monster", 24742}}}}, + }, + [11472] = { + [questKeys.objectives] = {{{24797,"Reef Bull led to a Reef Cow"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Lure Reef Bull with Tasty Reef Fish"), 0, {{"monster", 24786},{"monster", 24804}}}}, + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11475] = { + [questKeys.preQuestSingle] = {11244}, + }, + [11478] = { + [questKeys.exclusiveTo] = {11448}, + }, + [11485] = { + [questKeys.triggerEnd] = {"Rocket Jump Mastered",{[zoneIDs.HOWLING_FJORD]={{75.08,64.55,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Rocket Jump standing on the rune next to it"),0,{{"object", 186958}}}}, + }, + [11489] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Collect Data near the blue relic near Gwendolyn's cart"),0,{{"object", 186958}}}}, + }, + [11491] = { + [questKeys.objectives] = {{{24718,"Lebronski Bluffed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Bluff on Lebronski after you've walked on his rug"),0,{{"object", 186958}}}}, + }, + [11494] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Put on the Golem suit"),0,{{"object", 186958}}}}, + }, + [11495] = { + [questKeys.objectives] = {{{24847,"Thundering Cave investigated"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Put on the Golem suit"),0,{{"object", 186958}}}}, + }, + [11528] = { + [questKeys.exclusiveTo] = {13203,13966}, + }, + [11529] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HOWLING_FJORD]={{37.2,74.8}}}, Questie.ICON_TYPE_OBJECT, l10n("Use The Big Gun at the front of the ship to slay Sorlof"),0,{{"monster", 24992}}}}, + }, + [11531] = { + [questKeys.specialFlags] = 1, + }, + [11567] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask Alanya for transportation"),0,{{"monster", 27933}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("After acquiring the Armor, get a ride back"),0,{{"monster", 28277}}}, + }, + }, + [11569] = { + [questKeys.preQuestSingle] = {11571}, + }, + [11570] = { + [questKeys.triggerEnd] = {"Escort Lurgglbr to safety",{[zoneIDs.BOREAN_TUNDRA]={{41.35,16.29,},},},}, + }, + [11574] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + [questKeys.exclusiveTo] = {11587}, + }, + [11575] = { + [questKeys.exclusiveTo] = {11587}, + }, + [11587] = { + [questKeys.preQuestSingle] = {}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Open the prison"),0,{{"object", 187561}}}}, + }, + [11590] = { + [questKeys.objectives] = {{{25316,"Captured Beryl Sorcerer"},},nil,nil,nil,}, + }, + [11591] = { + [questKeys.exclusiveTo] = {11592,11593,11594,}, + }, + [11592] = { + [questKeys.triggerEnd] = {"Successfully assisted Longrunner Proudhoof's assault.",{[zoneIDs.BOREAN_TUNDRA]={{49.45,26.49,},},},}, + }, + [11594] = { + [questKeys.preQuestSingle] = {}, + }, + [11596] = { + [questKeys.preQuestSingle] = {11585,11586}, + }, + [11606] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [11610] = { + [questKeys.objectives] = {nil,{{191088,"Elder Kesuk's ceremony completed"},{191089,"Elder Sagani's ceremony completed"},{191090,"Elder Takret's ceremony completed"}}}, + }, + [11611] = { + [questKeys.objectives] = {{{25284,"Warsong Peon Freed"}}}, + }, + [11631] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Imperean's Primal on Snarlfang's Totem"),0,{{"monster", 25455}}}}, + }, + [11632] = { + [questKeys.startedBy] = {nil,{187674},{34777}}, + }, + [11636] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to Garrosh's Landing"),0,{{"monster", 25459}}}}, + }, + [11637] = { + [questKeys.sourceItemId] = 34781, + }, + [11652] = { + [questKeys.objectives] = {{{25465}},nil,nil,nil,{{{27106,27107,27108,27110},27106,"Injured Warsong Soldier rescued"},{{25332,25333,25469,},25333,"Scourge Unit obliterated"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drive a tank"),0,{{"monster", 25334}}}}, + }, + [11653] = { + [questKeys.objectives] = {{{25432,"Crafty's Blaster Tested"},{25434,"Crafty's Blaster Tested"},},nil,nil,nil,}, + }, + [11654] = { + [questKeys.startedBy] = {{26115},nil,{34815}}, + [questKeys.preQuestSingle] = {11633}, + }, + [11656] = { + [questKeys.objectives] = {nil,{{188656,"The Serpent's Maw destroyed"},{188655,"The Kur Drakkar destroyed"},{188653,"Bor's Hammer destroyed"},{188657,"Bor's Anvil destroyed"}}}, + }, + [11664] = { + [questKeys.triggerEnd] = {"Mootoo Saved",{[zoneIDs.BOREAN_TUNDRA]={{31.19,54.44,},},},}, + }, + [11670] = { + [questKeys.objectives] = {{{25430,"Warsong Banner Planted in Magmothregar"},},nil,{{34870,nil},},nil,}, + [questKeys.requiredSourceItems] = {34869}, + }, + [11671] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Inquisitor Salrand"), 0, {{"monster", 25584}}}, + {{[zoneIDs.BOREAN_TUNDRA]={{41.8,39.1}}}, Questie.ICON_TYPE_EVENT, l10n("Use Beryl Shield Detonator"),}, + }, + }, + [11673] = { + [questKeys.triggerEnd] = {"Bonker Togglevolt escorted to safety.",{[zoneIDs.BOREAN_TUNDRA]={{53.84,13.85,},},},}, + }, + [11677] = { + [questKeys.objectives] = {nil,{{187879,"Plague Cauldron Neutralized"}}}, + }, + [11686] = { + [questKeys.objectives] = {nil,{{191697,"Scout Warsong Granary"},{191698,"Scout Torp's Farm"},{191699,"Scout Warsong Slaughterhouse"}}}, + }, + [11688] = { + [questKeys.preQuestSingle] = {}, + }, + [11690] = { + [questKeys.objectives] = {{{25596,"Kodo rescued"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the kodos to Farmer Torp"), 0, {{"monster", 25607}}}}, + }, + [11694] = { + [questKeys.objectives] = {nil,{{187879,"Plague Cauldron Neutralized"}}}, + }, + [11704] = { + [questKeys.preQuestSingle] = {11708}, + }, + [11705] = { + [questKeys.objectives] = {{{25618,"Varidus the Flenser Defeated"}}}, + }, + [11706] = { + [questKeys.objectives] = {{{25768},{25768,"Nerubian tunnels collapsed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use The Horn of Elemental Fury near the southern sinkhole"),0,{{"monster", 25664}}}}, + }, + [11708] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{25590,"Fizzcrank's tale listened to."}}}, + }, + [11711] = { + [questKeys.extraObjectives] = {{{[zoneIDs.BOREAN_TUNDRA]={{55.28,50.86}}}, Questie.ICON_TYPE_EVENT, l10n("Alliance Deserter Delivered")}}, + [questKeys.objectives] = {{{25761,"Alliance Deserter Delivered"}}}, + }, + [11712] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25814},25814,"Fizzcrank Gnome cursed & ported"}}}, + }, + [11713] = { + [questKeys.preQuestSingle] = {11796}, + }, + [11719] = { + [questKeys.triggerEnd] = {"Bloodspore Flower Used",{[zoneIDs.BOREAN_TUNDRA]={{52.07,52.46,},},},}, + }, + [11723] = { + [questKeys.objectives] = {{{25768},{25794,"Deploy the Shake-n-Quake 5000"}}}, + }, + [11728] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Throw Wolf Bait"),0,{{"monster", 25791}}}}, + }, + [11730] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25753,25758,25752},25753,"Robots reprogrammed"}}}, + }, + [11788] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),1,{{"object", 187984}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),2,{{"object", 187985}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),3,{{"object", 187986}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),4,{{"object", 187987}}}, + }, + }, + [11798] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use The Gearmaster's Manual"),0,{{"object", 190334}}}}, + }, + [11855] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [11865] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place fake fur near Caribou Traps"),0,{{"object", 187995},{"object", 187996},{"object", 187997},{"object", 187998},{"object", 187999},{"object", 188000},{"object", 188001},{"object", 188002},{"object", 188003},{"object", 188004},{"object", 188005},{"object", 188006},{"object", 188007},{"object", 188008}}}, + }, + }, + [11878] = { + [questKeys.objectives] = {{{25862,"Orphaned Mammoth Calf Delivered to Khu'nok"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver the orphan to Khu'nok"),0,{{"monster", 25861}}}}, + }, + [11879] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Wooly Mammoth Bull to assist in killing Kaw the Mammoth Destroyer"),0,{{"monster", 25743}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Kaw the Mammoth Destroyer"), 0, {{"monster", 25802}}}, + }, + }, + [11880] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [11881] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Jenny's Whistle near a crashed flying machine"),0,{{"object", 188019}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Return Jenny to safety without losing cargo"),0,{{"monster", 25849},}}, + }, + }, + [11887] = { + [questKeys.objectives] = {nil,nil,{{35276}}}, + }, + [11888] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [11890] = { + [questKeys.triggerEnd] = {"Fizzcrank Pumping Station environs inspected.",{[zoneIDs.BOREAN_TUNDRA]={{64.38,23.81}}}}, + }, + [11893] = { + [questKeys.objectives] = {{{24601}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Windsoul Totem to collect energy from killing Steam Ragers"),0,{{"monster", 24601}}}}, + }, + [11894] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Uncured Caribou Hide"),0,{{"object", 188086}}}}, + }, + [11895] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Storm Totem to summon Storm Tempest"),0,{{"monster", 26048}}}}, + }, + [11896] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25752,25753,25758},26082,}}}, + }, + [11898] = { + [questKeys.extraObjectives] = { + {{[zoneIDs.BOREAN_TUNDRA]={{86.55,28.59}}}, Questie.ICON_TYPE_EVENT, l10n("Enter teleporter to access Naxxanar"),}, + {{[zoneIDs.BOREAN_TUNDRA]={{86.80,30.12}}}, Questie.ICON_TYPE_EVENT, l10n("Use Naxxanar teleporters"),}, + }, + }, + [11899] = { + [questKeys.objectives] = {{{25814,"Gnome soul captured"},},nil,nil,nil,}, + [questKeys.preQuestSingle] = {11895}, + }, + [11905] = { + [questKeys.extraObjectives] = {{{[zoneIDs.THE_NEXUS_MAP]={{64.9,21.6}},[zoneIDs.THE_NEXUS]={{-1,-1}}}, Questie.ICON_TYPE_EVENT, l10n("Use Interdimensional Refabricator")}}, + }, + [11906] = { + [questKeys.preQuestSingle] = {11895}, + }, + [11907] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),1,{{"object", 187984}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),2,{{"object", 187985}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),3,{{"object", 187986}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),4,{{"object", 187987}}}, + }, + }, + [11908] = { + [questKeys.preQuestSingle] = {11902}, + }, + [11909] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Research the Gearmaster's Manual"),0,{{"object", 190334},{"object", 190335}}}}, + }, + [11913] = { + [questKeys.objectives] = {nil,{{188112,"Farshire Grain burnt"}}}, + }, + [11919] = { + [questKeys.objectives] = {{{26127,"Captured Nexus Drake"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the captured drake to Raelorasz"),0,{{"monster", 26117}}}}, + }, + [11930] = { + [questKeys.triggerEnd] = {"Secure Passage to Dragonblight",{[zoneIDs.DRAGONBLIGHT]={{10.29,53.83,},},},}, + }, + [11938] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25378,25383,25386,25387,25393,25609},25378,"En'kilah Casualty"}}}, + }, + [11940] = { + [questKeys.objectives] = {{{26127,"Captured Nexus Drake"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the captured drake to Raelorasz"),0,{{"monster", 26117}}}}, + }, + [11945] = { + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11946] = { + [questKeys.requiredSourceItems] = {35671}, + }, + [11951] = { + [questKeys.requiredSourceItems] = {35671}, + }, + [11956] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ride Dusk"),0,{{"monster", 26191}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Open the phylactery"),0,{{"object", 188141}}}, + }, + }, + [11957] = { + [questKeys.requiredSourceItems] = {35671,35690}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Keristrasza"),0,{{"monster", 26206}}}, + {{[zoneIDs.BOREAN_TUNDRA]={{22,22.6}}}, Questie.ICON_TYPE_EVENT, l10n("Use Arcane Power Focus"),}, + }, + }, + [11959] = { + [questKeys.objectives] = {{{26196,"Loguhn's Blood Smeared"}}}, + }, + [11960] = { + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11967] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Keristrasza"),0,{{"monster", 26206}}}}, + }, + [11969] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Raelorasz' Spark"),0,{{"object", 194151}}}}, + }, + [11982] = { + [questKeys.objectives] = {{{26270,"Iron Dwarf Operations Disrupted"}}}, + [questKeys.preQuestSingle] = {}, + }, + [11984] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Enlist Budd's help"), 0, {{"monster", 26422}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Escort Budd to the Drak'Zin Ruins"), 0, {{"monster", 32663}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Budd's Tag Troll spell to stun Drakkari trolls"), 0, {{"monster", 26425}, {"monster", 26447}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Capture stunned Drakkari trolls with Bounty Hunter's Cage"), 0, {{"monster", 26425}, {"monster", 26447}}}, + }, + }, + [11989] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Dull Carving Knife near Drakuru"),0,{{"monster", 26423}}}}, + }, + [11991] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Frozen Mojo"),0,{{"object", 188287}}}}, + [questKeys.requiredSourceItems] = {35797,35799}, + }, + [11995] = { + [questKeys.exclusiveTo] = {12439}, + }, + [12000] = { + [questKeys.preQuestSingle] = {}, + }, + [12007] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering Zim'bo's Mojo"),0,{{"object", 400047}}}}, + [questKeys.requiredSourceItems] = {35797,35836}, + }, + [12014] = { + [questKeys.sourceItemId] = 35837, + }, + [12017] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Tu'u'gwar's Bait"),0,{{"object", 188370}}}}, + }, + [12019] = { + [questKeys.finishedBy] = {{26170,198875}}, + [questKeys.extraObjectives] = { + {{[zoneIDs.BOREAN_TUNDRA]={{86.6,28.6}}}, Questie.ICON_TYPE_EVENT, l10n("Teleport to the top of Naxxanar"),}, + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Thassarian"), 0, {{"monster", 198875}}}, + }, + }, + [12020] = { + [questKeys.preQuestSingle] = {}, + }, + [12022] = { + [questKeys.preQuestSingle] = {}, + [questKeys.requiredSourceItems] = {33096}, + }, + [12027] = { + [questKeys.triggerEnd] = {"Help Emily and Mr. Floppy return to the camp",{[zoneIDs.GRIZZLY_HILLS]={{53.81,33.33,},},},}, + }, + [12028] = { + [questKeys.objectives] = {nil,{{188416}}}, + }, + [12029] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26458,26570,26582,26583},26612,}}}, + }, + [12032] = { + [questKeys.objectives] = {{{26648,"Oacha'noa's compulsion obeyed."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Commune with Oacha'noa"),0,{{"object", 188422}}}}, + }, + [12033] = { + [questKeys.preQuestSingle] = {11916}, + [questKeys.objectives] = {nil,{{188423,}},nil,nil,}, + }, + [12034] = { + [questKeys.preQuestSingle] = {12008}, + }, + [12035] = { + [questKeys.objectives] = {{{25623,"Harvest Collector Rewired"},},nil,nil,nil,}, + }, + [12036] = { + [questKeys.triggerEnd] = {"Pit of Narjun Explored",{[zoneIDs.DRAGONBLIGHT]={{26.26,50.01,},},},}, + }, + [12037] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Search for Kurzel"),0,{{"monster", 27909}}}}, -- to use -1 instead of 0 when questie supports showing extraobjectives when quest complete + }, + [12038] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26458,26570,26582,26583},26612,}}}, + }, + [12039] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12049] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Throw the Explosive Charges when it opens its mouth wide"),0,{{"monster", 26293}}}}, + }, + [12050] = { + [questKeys.preQuestGroup] = {12046,12047}, + }, + [12052] = { + [questKeys.preQuestGroup] = {12046,12047}, + }, + [12053] = { + [questKeys.objectives] = {{{26678,"Warsong Battle Standard Defended"}}}, + }, + [12055] = { + [questKeys.startedBy] = {{26349},nil,{36742}}, + [questKeys.preQuestSingle] = {12000}, + }, + [12056] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12059] = { + [questKeys.startedBy] = {{26349},nil,{36746}}, + [questKeys.preQuestSingle] = {11999}, + }, + [12063] = { + [questKeys.preQuestSingle] = {12036}, + }, + [12065] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188445}}}, + }, + }, + [12066] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188445}}}, + }, + }, + [12067] = { + [questKeys.startedBy] = {{26762},nil,{36756}}, + }, + [12068] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Sacred Mojo"),0,{{"object", 400066}}}}, + [questKeys.requiredSourceItems] = {35797,36758}, + }, + [12069] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free Roanauk Icemist"),0,{{"object", 188463}}}}, + }, + [12075] = { + [questKeys.preQuestSingle] = {}, + }, + [12076] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Zort's Scraper when covered in Corrosive Spit"),0,{{"monster", 26358},{"monster", 26359}}}}, + }, + [12078] = { + [questKeys.preQuestSingle] = {12077}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Sturdy Crates to capture the worm spawn"),0,{{"monster", 26359}}}}, + }, + [12079] = { + [questKeys.preQuestSingle] = {12075}, + }, + [12080] = { + [questKeys.preQuestSingle] = {12076}, + }, + [12082] = { + [questKeys.triggerEnd] = {"Harrison has escorted you to safety.",{[zoneIDs.GRIZZLY_HILLS]={{73.51,24.02,},},},}, + }, + [12083] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188474}}}, + }, + }, + [12084] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188474}}}, + }, + }, + [12085] = { + [questKeys.startedBy] = {{26815},nil,{36780}}, + }, + [12092] = { + [questKeys.preQuestSingle] = {12065}, + }, + [12095] = { + [questKeys.preQuestGroup] = {12089,12090,12091}, + }, + [12096] = { + [questKeys.preQuestSingle] = {12066}, + }, + [12097] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rokhan to call down Sarathstra"), 0, {{"monster", 26859}}},}, + }, + [12099] = { + [questKeys.objectives] = {{{26417,"Runed Giants Freed"}}}, + }, + [12100] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12105] = { + [questKeys.startedBy] = {{27547},nil,{36940}}, + }, + [12107] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Ley Line Focus Control Talisman"),1,{{"object", 188491}}}, + }, + }, + [12110] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Ley Line Focus Control Talisman"),1,{{"object", 188491}}}, + }, + }, + [12111] = { + [questKeys.objectives] = {{{26615,},{26482,}}}, + }, + [12112] = { + [questKeys.preQuestGroup] = {12050,12052}, + }, + [12117] = { + [questKeys.nextQuestInChain] = 11958, + }, + [12118] = { + [questKeys.nextQuestInChain] = 11958, + }, + [12121] = { + [questKeys.objectives] = {{{27199,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ring the gong outside Drakil'jin to summon Warlord Jin'arrak"),0,{{"object", 188510}}}, + }, + }, + [12124] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a drake to the top of the temple"),1,{{"monster", 26443}}}}, + }, + [12125] = { + [questKeys.objectives] = {{{26411}},nil,{{36828}}}, + }, + [12126] = { + [questKeys.objectives] = {{{26926}},nil,{{36836}}}, + }, + [12127] = { + [questKeys.objectives] = {{{26283}},nil,{{36846}}}, + }, + [12129] = { + [questKeys.sourceItemId] = 36849, + }, + [12132] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12125,12126,12127}, + }, + [12137] = { + [questKeys.sourceItemId] = 36859, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Speak with Gan'jo to return to life"),0,{{"monster", 26924}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Snow of Eternal Slumber on ancient Drakkari spirits"),0,{{"monster", 26811},{"monster", 26812}}}, + }, + }, + [12138] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26407,27017},26407,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Fight Lightning Sentries with Depleted War Golem deployed nearby"),0,{{"monster", 26407}}}, + }, + }, + [12146] = { + [questKeys.startedBy] = {{27004,27005},nil,{36855}}, + }, + [12147] = { + [questKeys.startedBy] = {{27004,27005},nil,{36856}}, + }, + [12150] = { + [questKeys.objectives] = {{{27003,}}}, + }, + [12151] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{57.09,76.26}}}, Questie.ICON_TYPE_EVENT, l10n("Blow the horn"),0}}, + }, + [12152] = { + [questKeys.requiredSourceItems] = {36870,36873,37063}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Place the Infused Drakkari Offering at the gongs outside Drakil'jin"),0,{{"object", 188510}}}, + }, + }, + [12157] = { + [questKeys.exclusiveTo] = {12171,12235,12297}, + }, + [12159] = { + [questKeys.objectives] = {{{26891,"Miner at Rest"}}}, + }, + [12165] = { + [questKeys.sourceItemId] = 36849, + }, + [12166] = { + [questKeys.objectives] = {{{26616,"Blighted Elk's corpse cleansed"},{26643,"Rabid Grizzly's corpse cleansed"},},nil,nil,nil,}, + }, + [12171] = { + [questKeys.exclusiveTo] = {12235,12297}, + }, + [12174] = { + [questKeys.exclusiveTo] = {12235,12298}, + }, + [12180] = { + [questKeys.preQuestSingle] = {12014}, + }, + [12181] = { + [questKeys.exclusiveTo] = {12188}, + }, + [12182] = { + [questKeys.exclusiveTo] = {}, + [questKeys.nextQuestInChain] = 12188, + }, + [12184] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26408,26409,26410,26414,27177},26408,}}}, + }, + [12185] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Intercept the message from Loken"),1,{{"object", 188596}}}, + }, + }, + [12188] = { + [questKeys.preQuestSingle] = {}, + }, + [12191] = { + [questKeys.preQuestSingle] = {}, + [questKeys.requiredSourceItems] = {33096}, + }, + [12198] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26407,27017},26407,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Fight Lightning Sentries with Depleted War Golem deployed nearby"),0,{{"monster", 26407}}}, + }, + }, + [12202] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26408,26409,26410,26414,27177},26408,}}}, + }, + [12203] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Intercept the message from Loken"),1,{{"object", 188596}}}, + }, + }, + [12204] = { + [questKeys.preQuestSingle] = {12099,12058}, + [questKeys.preQuestGroup] = {}, + }, + [12206] = { + [questKeys.objectives] = {{{27349,"Flask of Blight tested"}}}, + }, + [12207] = { + [questKeys.preQuestSingle] = {12413}, + }, + [12208] = { + [questKeys.preQuestSingle] = {12412}, + }, + [12210] = { + [questKeys.preQuestSingle] = {12212}, + }, + [12211] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27202,27203,27206,27207,27209,27210,27211,27232,27233,27234,27235,27236,27237,27246,27247},27203,"Scarlet Onslaught corpses picked clean"}}}, + }, + [12213] = { + [questKeys.preQuestSingle] = {12413}, + }, + [12214] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27206,27213,27296,27028},27296,}}}, + }, + [12218] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Commandeer a Forsaken Blight Spreader"),1,{{"monster", 26523}}}, + }, + }, + [12222] = { + [questKeys.preQuestSingle] = {12294}, + }, + [12223] = { + [questKeys.preQuestSingle] = {12294}, + }, + [12224] = { + [questKeys.preQuestGroup] = {12221,12140,12072}, + }, + [12229] = { + [questKeys.preQuestGroup] = {12207,12213}, + }, + [12231] = { + [questKeys.objectives] = {{{27274,"Orsonn's Story"},{27275,"Kodian's Story"}}}, + [questKeys.preQuestGroup] = {12207,12213}, + }, + [12232] = { + [questKeys.objectives] = {nil,{{188673,}}}, + }, + [12236] = { + [questKeys.preQuestGroup] = {12241,12242}, + [questKeys.objectives] = {{{26633,}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tur Ragepaw to summon Ursoc"),0,{{"monster", 27328}}}}, + }, + [12237] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27315,27336,27345,27341},27315,"Helpless Villager Rescued"}}}, + }, + [12238] = { + [questKeys.requiredSourceItems] = {35797,38303}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Enduring Mojo"),0,{{"object", 190629}}}}, + }, + [12240] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{68.29,74.29}}}, Questie.ICON_TYPE_EVENT, l10n("Release the termites"),0}}, + }, + [12241] = { + [questKeys.preQuestGroup] = {12229,12231}, + }, + [12242] = { + [questKeys.preQuestGroup] = {12229,12231}, + }, + [12244] = { + [questKeys.objectives] = {{{27354}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Shredder"),0,{{"monster", 27371}}}}, + }, + [12247] = { + [questKeys.objectives] = {{{27274,"Orsonn's Story"},{27275,"Kodian's Story"}}}, + }, + [12249] = { + [questKeys.objectives] = {{{26633,}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tur Ragepaw to summon Ursoc"),0,{{"monster", 27328}}}}, + }, + [12252] = { + [questKeys.objectives] = {{{27209,"Torturer LeCraft fully questioned"},{27209}}} + }, + [12255] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride Flamebringer"),0,{{"monster", 27292}}}}, + }, + [12256] = { + [questKeys.preQuestSingle] = {12468}, + }, + [12258] = { + [questKeys.preQuestSingle] = {12251}, + }, + [12259] = { + [questKeys.preQuestGroup] = {12256,12257}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride Flamebringer"),0,{{"monster", 27292}}}}, + }, + [12260] = { + [questKeys.objectives] = {{{27202,}}}, + }, + [12261] = { + [questKeys.preQuestSingle] = {12447}, + [questKeys.objectives] = {{{27430,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Destructive Ward"),0,{{"object", 188707}}}, + }, + }, + [12262] = { + [questKeys.preQuestSingle] = {12447}, + }, + [12263] = { + [questKeys.triggerEnd] = {"Uncover the Magmawyrm Resurrection Chamber",{[zoneIDs.DRAGONBLIGHT]={{31.76,30.46,},},},}, + }, + [12264] = { + [questKeys.preQuestSingle] = {12263}, + [questKeys.objectives] = {{{27358},{27362},{27363}}}, + }, + [12265] = { + [questKeys.preQuestSingle] = {12263}, + }, + [12269] = { + [questKeys.preQuestSingle] = {12275}, + }, + [12270] = { + [questKeys.objectives] = {{{27354}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Shredder"),0,{{"monster", 27423}}}}, + }, + [12271] = { + [questKeys.startedBy] = {{27209},nil,{37432}}, + [questKeys.preQuestSingle] = {12245}, + }, + [12272] = { + [questKeys.preQuestSingle] = {12275}, + }, + [12273] = { + [questKeys.objectives] = {{{27237,},{27235,},{27234,},{27236,}}}, + }, + [12274] = { + [questKeys.objectives] = {nil,{{188713,"Abbey bell rung"}},nil,nil,{{{27245},27245,"High Abbot spoken with"}}}, + }, + [12277] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the Mine Bomb here"),0,{{"object", 188711}}}}, + }, + [12284] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27475,27482,},27475,"Alliance units eliminated"}}}, + }, + [12288] = { + [questKeys.objectives] = {{{27463,"Wounded Skirmishers Healed"}}}, + }, + [12289] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27456,27463},27456,"Horde units eliminated"}}}, + }, + [12291] = { + [questKeys.objectives] = {{{27226,"Forgotten Peasant Questioned"},{27225,"Forgotten Rifleman Questioned"},{27224,"Forgotten Knight Questioned"},{27229,"Forgotten Footman Questioned"}}}, + }, + [12296] = { + [questKeys.objectives] = {{{27482,"Westfall Infantry Healed"}}}, + }, + [12297] = { + [questKeys.preQuestSingle] = {11250}, + [questKeys.exclusiveTo] = {12171,12235}, + }, + [12298] = { + [questKeys.exclusiveTo] = {12174,12235}, + }, + [12301] = { + [questKeys.objectives] = {nil,{{189304,"The Forgotten Redeemed"}}}, + }, + [12307] = { + [questKeys.preQuestSingle] = {}, + }, + [12308] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"),0,{{"monster", 27409}}}}, + [questKeys.triggerEnd] = {"Escape from Silverbrook",{[zoneIDs.GRIZZLY_HILLS]={{32.37,59.14}}}}, + [questKeys.objectives] = {}, + }, + [12316] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27500,27550},27550,"Horde killed in Venture Bay"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in the shredder if you have the key"),0,{{"monster", 27496}}}}, + }, + [12317] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27501,27549},27549,"Alliance killed in Venture Bay"}}}, + }, + [12323] = { + [questKeys.objectives] = {{{27570,"Venture Company Stragglers smoked out"}}}, + }, + [12324] = { + [questKeys.objectives] = {{{27570,"Venture Company Stragglers smoked out"}}}, + }, + [12321] = { + [questKeys.objectives] = {{{27577,"Righteous Sermon Heard"}}}, + }, + [12325] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get a ride to Thorson's Post"),0,{{"monster", 27661}}}}, + }, + [12326] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in"),0,{{"monster", 27587}}}}, + [questKeys.objectives] = {{{27607,"Plague Wagon Sabotaged"},{27588,"7th Legion Elite Safely Dropped Off"}}}, + }, + [12327] = { + [questKeys.triggerEnd] = {"Vision from the Past",{[zoneIDs.SILVERPINE_FOREST]={{46.53,76.18,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Gossamer Potion"),0,{{"object", 189972}}}}, + }, + [12330] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Tranquilizer Dart on Tatjana"),0,{{"monster", 27627}}}}, + [questKeys.triggerEnd] = {"Tatjana Delivered",{[zoneIDs.GRIZZLY_HILLS]={{57.77,41.7,},},},}, + }, + [12372] = { + [questKeys.objectivesText] = {"Devrestrasz at Wyrmrest Temple has asked you to slay 3 Azure Dragons, slay 5 Azure Drakes, and to destabilize the Azure Dragonshrine while riding a Wyrmrest Defender into battle."}, -- #4675 + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ride a Wyrmrest Defender to defend the Temple"), 0, {{"monster", 27629}}}, + }, + }, + [12412] = { + [questKeys.preQuestSingle] = {12259}, + }, + [12414] = { + [questKeys.objectives] = {{{26472,"Highland Mustangs returned"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the mustangs to Squire Percy"), 0, {{"monster", 26377}}}}, + }, + [12415] = { + [questKeys.objectives] = {{{26472,}}}, + }, + [12419] = { + [questKeys.startedBy] = {{27680},nil,{37833}}, + }, + [12423] = { + [questKeys.startedBy] = {{27547},nil,{37830}}, + }, + [12427] = { + [questKeys.preQuestSingle] = {12413}, + [questKeys.triggerEnd] = {"Ironhide defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.2,64.68,},},},}, + [questKeys.objectives] = {{{27715,}}}, + }, + [12428] = { + [questKeys.triggerEnd] = {"Torgg Thundertotem defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.05,64.55,},},},}, + [questKeys.objectives] = {{{27716,}}}, + }, + [12429] = { + [questKeys.triggerEnd] = {"Rustblood defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.12,64.62,},},},}, + [questKeys.objectives] = {{{27717,}}}, + }, + [12430] = { + [questKeys.triggerEnd] = {"Horgrenn Hellcleave defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.11,64.6,},},},}, + [questKeys.objectives] = {{{27718,}}}, + }, + [12431] = { + [questKeys.objectives] = {{{27727,}}}, + }, + [12432] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride the rocket!"), 0, {{"monster", 27593}}}}, + }, + [12434] = { + [questKeys.specialFlags] = 1, + [questKeys.preQuestSingle] = {12433}, + [questKeys.startedBy] = {{27565}}, + [questKeys.finishedBy] = {{27565}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12435] = { -- #4675 + [questKeys.name] = "Report to Lord Devrestrasz", + [questKeys.objectivesText] = {"Speak with Lord Devrestrasz at Wyrmrest Temple."}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a drake to the middle of the temple"), 0, {{"monster", 26949}}}}, + }, + [12437] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride the rocket!"), 0, {{"monster", 27593}}}}, + }, + [12439] = { + [questKeys.exclusiveTo] = {11995,12000}, + }, + [12446] = { + [questKeys.specialFlags] = 1, + [questKeys.preQuestSingle] = {12443}, + [questKeys.startedBy] = {{27495}}, + [questKeys.finishedBy] = {{27495}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12453] = { + [questKeys.preQuestSingle] = {12412}, + [questKeys.objectives] = {{{26369,}}}, + }, + [12456] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{64.6,77}}}, Questie.ICON_TYPE_EVENT, l10n("Use Skytalon Molts"),0}}, + }, + [12457] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Man the Chain Gun"),0,{{"monster", 27714}}},}, + }, + [12459] = { + [questKeys.objectives] = {{{26841,nil},{27808,nil},{27122,nil},},nil,nil,nil,}, + }, + [12462] = { + [questKeys.preQuestSingle] = {12326}, + }, + [12464] = { + [questKeys.preQuestSingle] = {}, + }, + [12467] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Wyrmbait"),0,{{"monster", 27843}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Destroy Icestorm"),0,{{"monster", 26287}}}, + }, + }, + [12468] = { + [questKeys.preQuestSingle] = {}, + }, + [12470] = { + [questKeys.objectives] = {{{27840,"Hourglass of Eternity protected"}}}, + }, + [12473] = { + [questKeys.objectives] = {{{27383,"Thel'zan the Duskbringer Defeated"}}}, + }, + [12478] = { + [questKeys.objectives] = {nil,{{190191,"Secrets of the Past Revealed"}}}, + }, + [12481] = { + [questKeys.objectives] = {{{24238,"Bjorn Halgurdsson insulted"},{24238,"Bjorn Halgurdsson defeated"}}}, + }, + [12484] = { + [questKeys.extraObjectives] = {{{[zoneIDs.GRIZZLY_HILLS]={{16.84,48.34}}}, Questie.ICON_TYPE_EVENT, l10n("Place Scourged Troll Mummy in the fire"),0}}, + }, + [12486] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [12491] = { + [questKeys.startedBy] = {{23872},nil,{38280}}, + }, + [12492] = { + [questKeys.startedBy] = {{23872},nil,{38281}}, + }, + [12498] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Slay Antiok's mount to make him vulnerable"),0,{{"monster", 28018}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Slay Grand Necrolord Antiok"),0,{{"monster", 28006}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"),0,{{"monster", 27996}}}, + }, + }, + [12500] = { + [questKeys.preQuestSingle] = {12498}, + }, + [12501] = { + [questKeys.finishedBy] = {{28039}}, + [questKeys.exclusiveTo] = {12563,12587}, + [questKeys.childQuests] = {12502,12509,12519,12541}, + }, + [12502] = { + [questKeys.parentQuest] = 12501, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Plant the Argent Crusade Banner"), 0, {{"object", 190522}}}}, + }, + [12503] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28023,28026,28246,28669,28022},28022,"Scourge at The Argent Stand destroyed"}}}, + }, + [12506] = { + [questKeys.triggerEnd] = {"Main building at the Altar of Sseratus investigated.",{[zoneIDs.ZUL_DRAK]={{40.32,39.46,},},},}, + }, + [12509] = { + [questKeys.parentQuest] = 12501, + }, + [12510] = { + [questKeys.sourceItemId] = 38323, + }, + [12512] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28133,28136},28133},{{28141,28142},28141},{{28143,28148},28143}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Escort rescued Crusaders to Dr. Rogers"), 0, {{"monster", 28125}}}}, + }, + [12516] = { + [questKeys.objectives] = {{{28068}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Muddled Mojo on Prophet of Sseratus before killing it"), 0, {{"monster", 28068}}}}, + }, + [12519] = { + [questKeys.parentQuest] = 12501, + }, + [12520] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + }, + [12521] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Take a ride to Sholazar Basin"), 0, {{"monster", 28160}}}}, + }, + [12527] = { + [questKeys.requiredSourceItems] = {38380}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Feed with Zul'Drak Rat"), 0, {{"monster", 28145}}}}, + }, + [12529] = { + [questKeys.requiredSourceItems] = {38619}, + }, + [12530] = { + [questKeys.requiredSourceItems] = {38619,38467}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Softknuckle Poker on Softknuckles"), 0, {{"monster", 28127}}}}, + }, + [12531] = { + [questKeys.requiredSourceItems] = {38621}, + }, + [12532] = { + [questKeys.requiredSourceItems] = {38621,38689}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12533,12534}, + }, + [12533] = { + [questKeys.requiredSourceItems] = {38621}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12529,12530}, + }, + [12534] = { + [questKeys.requiredSourceItems] = {38621}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12529,12530}, + }, + [12536] = { + [questKeys.requiredSourceItems] = {38512}, + [questKeys.triggerEnd] = {"Travel to Mistwhisper Refuge.",{[zoneIDs.SHOLAZAR_BASIN]={{46.31,39.88,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Captive Crocolisk"), 0, {{"monster", 28298}}}}, + }, + [12537] = { + [questKeys.requiredSourceItems] = {38510,38512}, + [questKeys.objectives] = {nil,{{190502,"Sabotage the Mistwhisper Weather Shrine"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the Skyreach Crystal Clusters"), 0, {{"object", 300213}}}}, + }, + [12538] = { + [questKeys.requiredSourceItems] = {38512}, + }, + [12539] = { + [questKeys.requiredSourceItems] = {38512}, + }, + [12540] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Injured Rainspeaker Oracle"), 0, {{"monster", 28217}}}}, + }, + [12541] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12544] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Soo-rahm's Incense"), 0, {{"object", 190507}}}}, + }, + [12545] = { + [questKeys.preQuestSingle] = {}, + }, + [12548] = { + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{40.35,83.08,}}}, Questie.ICON_TYPE_EVENT, l10n("Travel through the Waygate"),}}, + }, + [12549] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + }, + [12551] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12520,12549}, + }, + [12555] = { + [questKeys.objectives] = {{{28274,"Plague Sprayers webbed and destroyed"}}}, + }, + [12557] = { + [questKeys.objectives] = {nil,nil,{{38386},{38339},{38340},{38346}}}, + }, + [12561] = { + [questKeys.requiredSpell] = 54197, + }, + [12563] = { + [questKeys.finishedBy] = {{28039}}, + [questKeys.exclusiveTo] = {12501,12587}, + [questKeys.childQuests] = {12541,12564,12568,12585}, + }, + [12564] = { + [questKeys.parentQuest] = 12563, + }, + [12568] = { + [questKeys.parentQuest] = 12563, + [questKeys.objectives] = {nil,nil,nil,nil,{{{28260,28156},28260,"Argent Footman Corpse Incinerated"}}}, + }, + [12569] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Sandfern Disguise near the fallen log"), 0, {{"object", 190545}}}}, + }, + [12570] = { + [questKeys.triggerEnd] = {"Escort the Injured Rainspeaker Oracle to Rainspaker Canopy",{[zoneIDs.SHOLAZAR_BASIN]={{52.79,59.36}}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Start the escort"), 0, {{"monster", 28217}}}}, + }, + [12571] = { + [questKeys.requiredSourceItems] = {38622}, + }, + [12572] = { + [questKeys.requiredSourceItems] = {38622}, + }, + [12573] = { + [questKeys.sourceItemId] = 38622, + [questKeys.requiredSourceItems] = {38622,40364}, + [questKeys.objectives] = {{{28315,"Extend Peace Offering to Shaman Vekjik"}}}, + }, + [12574] = { + [questKeys.requiredSourceItems] = {38623}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12572,12573}, + }, + [12575] = { + [questKeys.requiredSourceItems] = {38623}, + }, + [12576] = { + [questKeys.requiredSourceItems] = {38623}, + }, + [12577] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12575,12576}, + }, + [12578] = { + [questKeys.requiredSourceItems] = {38624}, + [questKeys.triggerEnd] = {"Travel to Mosswalker Village.",{[zoneIDs.SHOLAZAR_BASIN]={{75.07,51.88,},},},}, + }, + [12579] = { + [questKeys.requiredSourceItems] = {38624}, + }, + [12580] = { + [questKeys.requiredSourceItems] = {38624}, + [questKeys.objectives] = {{{28113,"Mosswalker Victims Rescued"}}}, + }, + [12584] = { + [questKeys.preQuestGroup] = {12552}, + }, + [12585] = { + [questKeys.parentQuest] = 12563, + }, + [12587] = { + [questKeys.exclusiveTo] = {12501,12563}, + [questKeys.childQuests] = {12541,12588,12591,12594}, + }, + [12588] = { + [questKeys.objectives] = {nil,{{190550,"Ancient Dirt Mounds Investigated"}}}, + }, + [12589] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + [questKeys.objectives] = {{{28054,"Shot apple on Lucky Wilhelm's Head"}}}, + }, + [12591] = { + [questKeys.objectives] = {nil,{{190555,"Nerubian Tunnels Collapsed"}}}, + }, + [12595] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + }, + [12596] = { + [questKeys.preQuestSingle] = {12740}, + [questKeys.preQuestGroup] = {}, + }, + [12598] = { + [questKeys.objectives] = {nil,{{190555,"Nerubian Tunnels Sealed"}}}, + }, + [12601] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12602] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12603] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + }, + [12604] = { + [questKeys.preQuestSingle] = {12501,12563,12587}, + }, + [12605] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Break the egg"), 0, {{"monster", 28408}}}}, + }, + [12606] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28415,28413},28415}}}, + }, + [12607] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28379,28374},28379,}}}, + }, + [12615] = { + [questKeys.preQuestSingle] = {12516}, + }, + [12620] = { + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{49.64,37.41,}}}, Questie.ICON_TYPE_EVENT, l10n("Use Freya's Horn atop of the Glimmering Pillar"),}}, + }, + [12621] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Listen to what the Avatar of Freya has to say"), 0, {{"monster", 27801}}}}, + }, + [12622] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Kill Jin'Alai Trolls until their leaders appear"), 0, {{"monster", 28388},{"monster", 28504},{"object", 193768},{"object", 193769},{"object", 193770}}}}, + }, + [12629] = { + [questKeys.preQuestSingle] = {12637}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12643}, + [questKeys.nextQuestInChain] = 12648, + }, + [12630] = { + [questKeys.objectives] = {{{28519,"Hair Samples Collected"},},nil,nil,nil,}, + }, + [12631] = { + [questKeys.startedBy] = {nil,nil,{38660}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12633}, + [questKeys.nextQuestInChain] = 12637, + }, + [12632] = { + [questKeys.objectives] = {{{28404}}}, + }, + [12633] = { + [questKeys.startedBy] = {nil,nil,{38673}}, + [questKeys.preQuestSingle] = {12238}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12631}, + [questKeys.nextQuestInChain] = 12638, + }, + [12634] = { + [questKeys.preQuestGroup] = {12520,12549}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Pull Sturdy Vines to reveal fruit"), 0, {{"object", 190622}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Ask for a spare fruit"), 0, {{"monster", 28604}}}, + }, + }, + [12637] = { + [questKeys.preQuestSingle] = {12631}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12638}, + [questKeys.nextQuestInChain] = 12629, + }, + [12638] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12633,12238}, + [questKeys.exclusiveTo] = {12637}, + [questKeys.nextQuestInChain] = 12643, + }, + [12641] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Eye of Acherus Control Mechanism"), 0, {{"object", 191609}}}}, + }, + [12643] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12638,12238}, + [questKeys.exclusiveTo] = {12629}, + [questKeys.nextQuestInChain] = 12649, + }, + [12644] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Begin the distillation process"), 0, {{"monster", 28566}}}}, + }, + [12648] = { + [questKeys.preQuestSingle] = {12629}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12649}, + [questKeys.nextQuestInChain] = 12661, + }, + [12649] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12643,12238}, + [questKeys.exclusiveTo] = {12648}, + [questKeys.nextQuestInChain] = 12661, + }, + [12651] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12558,12556,12592}, + [questKeys.exclusiveTo] = {12654}, + [questKeys.nextQuestInChain] = 12654, + }, + [12652] = { + [questKeys.requiredRaces] = 2047, + [questKeys.preQuestSingle] = {12629,12643}, + [questKeys.exclusiveTo] = {12713}, + [questKeys.objectives] = {{{28565,}}}, + }, + [12659] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28465,28600},28622}}}, + }, + [12661] = { + [questKeys.preQuestSingle] = {12648,12649}, + [questKeys.preQuestGroup] = {}, + [questKeys.childQuests] = {12663,12664}, + [questKeys.exclusiveTo] = {}, + [questKeys.nextQuestInChain] = 12669, + [questKeys.requiredSourceItems] = {41390,38699}, + [questKeys.objectives] = {{{28503,"Overlord Drakuru's task complete"}}}, + [questKeys.extraObjectives] = {{{[zoneIDs.ZUL_DRAK]={{28.38,44.85}}}, Questie.ICON_TYPE_EVENT, l10n("Infiltrate Voltarus using Ensorcelled Choker")}}, + }, + [12662] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Heb'Jin's Drum to summon Heb'Jin"), 0, {{"object", 190695}}}}, + }, + [12663] = { + [questKeys.preQuestSingle] = {12649}, + [questKeys.exclusiveTo] = {12664,12648}, + [questKeys.parentQuest] = 12661, + [questKeys.objectives] = {{{28666,"Tour of Zul'Drak complete"}}}, + }, + [12664] = { + [questKeys.preQuestSingle] = {12648}, + [questKeys.exclusiveTo] = {12663,12649}, + [questKeys.parentQuest] = 12661, + [questKeys.objectives] = {{{28666,"Tour of Zul'Drak complete"}}}, + }, + [12665] = { + [questKeys.objectives] = {{{28671,"Quetz'lun's fate revealed."}}}, + }, + [12668] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28747,28748},28747,"Trolls killed near a Soul Font"}}}, + }, + [12669] = { + [questKeys.objectives] = {{{28503,"Drakuru's task complete"},{28739,"Blight Cauldrons diluted"}}}, + [questKeys.requiredSourceItems] = {39154,38699,41390}, + }, + [12671] = { + [questKeys.triggerEnd] = {"Reconnaissance Flight",{[zoneIDs.SHOLAZAR_BASIN]={{50.04,61.43,},},},}, + }, + [12673] = { + [questKeys.objectives] = {nil,{{190716}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Suggestion to mind control Blight Geist"), 0, {{"monster", 28750}}}}, + }, + [12674] = { + [questKeys.objectives] = {{{28752,"High Priest Mu'funu hexed at death"},{28754,"High Priestess Tua-Tua hexed at death"},{28756,"High Priest Hawinni hexed at death"}}}, + }, + [12676] = { + [questKeys.requiredSourceItems] = {39165,41390,38699}, + [questKeys.objectives] = {nil,{{190731,"Scourgewagons destroyed"}},nil,nil,{{{28503},28503,"Drakuru's task complete"}}}, + [questKeys.triggerEnd] = {"Learn Drakuru's secret",{[zoneIDs.ZUL_DRAK]={{27.07,46.16}}}}, + }, + [12677] = { + [questKeys.sourceItemId] = 38699, + [questKeys.requiredSourceItems] = {41390,38699}, + [questKeys.objectives] = {{{28503,"Drakuru's task complete"}},nil,{{39159}}}, + }, + [12680] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28605,28606,28607},28605,"Horse Successfully Stolen"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Stolen Horse"), 0, {{"monster", 28653}}}}, + }, + [12683] = { + [questKeys.objectives] = {{{28003,},{28003}}}, + [questKeys.preQuestSingle] = {}, + }, + [12685] = { + [questKeys.objectives] = {{{28671}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Quetz'lun's Ritual"), 0, {{"monster", 28672}}}}, + }, + [12686] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Empowerment to mind control Servant of Drakuru"), 0, {{"monster", 28802}}}, + }, + }, + [12687] = { + [questKeys.triggerEnd] = {"The Horseman's Challenge",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{52.41,34.59,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Dark Rider of Acherus and take his horse"), 0, {{"monster", 28768},{"monster", 28782}}}}, + }, + [12688] = { + [questKeys.triggerEnd] = {"Escort Engineer Helice out of Swindlegrin's Dig",{[zoneIDs.SHOLAZAR_BASIN]={{37.29,50.59,},},},}, + }, + [12690] = { + [questKeys.exclusiveTo] = {12710}, + [questKeys.requiredSourceItems] = {39238,38699}, + [questKeys.objectives] = {{{28844,"Drakkari Skullcrushers Slain"},{28873,"Drakkari Chieftain Lured"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Command"), 0, {{"monster", 28843}}}}, + }, + [12692] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12695] = { + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12697] = { + [questKeys.preQuestGroup] = {12678,12679,12687,12733,}, + }, + [12698] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28819,28822,28891},28819,"Scarlet Ghoul Returned"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Return Scarlet Ghouls"), 0, {{"monster", 28658}}}}, + }, + [12699] = { + [questKeys.preQuestSingle] = {12523}, + }, + [12701] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Climb inside the Inconspicuous Mine Car"), 0, {{"object", 190767}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Scarlet Cannon"), 0, {{"monster", 28833}}}, + }, + }, + [12702] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12703] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the blood at the Shrine of Kartak"), 0, {{"object", 190782}}}}, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12704] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to High-Oracle Soo-say to retrieve a Gorloc companion"), 0, {{"monster", 28027}}}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.requiredSourceItems] = {38622,38623,38624}, + }, + [12705] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use the Tainted Crystal at the Great Lightning Stone"), 0, {{"object", 190781}}}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12707] = { + [questKeys.objectives] = {{{28861,"Mam'toth Disciples trampled to death"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Medallion of Mam'toth to calm and ride an Enraged Mammoth"),0,{{"monster", 28851}}}, + }, + }, + [12710] = { + [questKeys.sourceItemId] = 38699, + [questKeys.requiredSourceItems] = {38699,39319}, + [questKeys.objectives] = {{{28948,"Drakuru's upper chamber explored"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Open the coffin"), 0, {{"object", 190948}}}, + {{[zoneIDs.ZUL_DRAK]={{28.38,44.85}}}, Questie.ICON_TYPE_EVENT, l10n("Take the teleporter to Drakuru's upper chamber")}, + }, + }, + [12712] = { + [questKeys.sourceItemId] = 39313, + [questKeys.requiredSourceItems] = {39313,39314,39315,39316}, + }, + [12713] = { + [questKeys.objectives] = {nil,nil,{{40425,"Overlord Drakuru Defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use the Scepter of Domination to control it"), 0, {{"monster", 28931}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Go on top of the ziggurat with Drakuru"), 0, {{"monster", 28503}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Defeat Drakuru"), 0, {{"monster", 28998}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("After defeating Drakuru, go back down using this portal"), 0, {{"object", 202357}}}, + }, + }, + [12720] = { + [questKeys.triggerEnd] = {"\"Crimson Dawn\" Revealed",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{55.09,66.12},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Equip Keleseth's Persuaders and persuade Scarlet Crusaders"), 0, {{"monster", 28610},{"monster", 28936},{"monster", 28939},{"monster", 28940},}}}, + }, + [12721] = { + [questKeys.objectives] = {{{28952,"Akali unfettered from his chains."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Release Akali from his chains"), 0, {{"object", 191018}}}}, + }, + [12723] = { + [questKeys.preQuestGroup] = {12717,12720,12722}, + }, + [12726] = { + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.objectives] = {{{28862,},{28858,}}}, + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{26.51,35.63}}}, Questie.ICON_TYPE_EVENT, l10n("Use Drums of the Tempest at Stormwright's Shelf"),}}, + }, + [12730] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Prophet of Akali Convocation"), 0, {{"object", 191123}}}}, + }, + [12732] = { + [questKeys.requiredMinRep] = {1104,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Fill Rejek's Vial"), 0, {{"object", 191122}}}}, + }, + [12733] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28391,28394,28406},28391,"Death Knights defeated in a duel"}}}, + }, + [12734] = { + [questKeys.objectives] = {{{28086,"Blade blooded on Sapphire Hive Wasp"},{28096,"Blade blooded on Hardknuckle Charger"}},nil,nil,nil,{{{28109,28110},28109,"Blade Blooded on Mistwhisper members"}}}, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12735] = { + [questKeys.extraObjectives] = { + {{[zoneIDs.SHOLAZAR_BASIN]={{43,42}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Atha"), 1}, + {{[zoneIDs.SHOLAZAR_BASIN]={{49,63}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Ha-Khalan"), 2}, + {{[zoneIDs.SHOLAZAR_BASIN]={{46,74}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Koosu"), 3}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12736] = { + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12737] = { + [questKeys.objectives] = {nil,{{191136,}}}, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12740] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28028,28029},28028,}}}, + }, + [12741] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12752] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12753] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12754] = { + [questKeys.extraObjectives] = {{{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{60.9,75.5}}}, Questie.ICON_TYPE_EVENT, l10n("Use the Makeshift Cover"),}}, + }, + [12758] = { + [questKeys.requiredMinRep] = {1104,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Venture Co. Explosive on dead Stonewatcher"),0,{{"monster", 28877}}}}, + }, + [12759] = { + [questKeys.sourceItemId] = 39697, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12760] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12761] = { + [questKeys.sourceItemId] = 39693, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12762] = { + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Charge the Dormant Polished Crystal at the exposed Lifeblood Pillar"),2,{{"object", 300224}}}}, + }, + [12771] = { + [questKeys.preQuestSingle] = {12753}, + }, + [12772] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12773] = { + [questKeys.preQuestSingle] = {12772}, + }, + [12774] = { + [questKeys.preQuestSingle] = {12775}, + }, + [12775] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12776] = { + [questKeys.preQuestSingle] = {12777}, + }, + [12777] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12779] = { + [questKeys.extraObjectives] = {{{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{53.5,36.7}}}, Questie.ICON_TYPE_EVENT, l10n("Use the Horn of the Frostbrood"),}}, + }, + [12782] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12783] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12784] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12785] = { + [questKeys.preQuestSingle] = {12783}, + }, + [12786] = { + [questKeys.preQuestSingle] = {12784}, + }, + [12787] = { + [questKeys.preQuestSingle] = {12752}, + }, + [12788] = { + [questKeys.preQuestSingle] = {12782}, + }, + [12797] = { + [questKeys.extraObjectives] = {{{[zoneIDs.UN_GORO_CRATER]={{50.54,7.74,}}}, Questie.ICON_TYPE_EVENT, l10n("Travel through the Waygate"),}}, + }, + [12801] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Highlord Darion Mograine"), 0, {{"monster", 29173}}}, + {{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{38.8,38.4}}}, Questie.ICON_TYPE_EVENT, l10n("The Light of Dawn Uncovered"),}, + }, + }, + [12802] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Desperate Mojo"),0,{{"object", 188358}}}}, + [questKeys.requiredSourceItems] = {35797,36739,36743}, + }, + [12803] = { + [questKeys.requiredSpell] = 54197, + }, + [12804] = { + [questKeys.preQuestSingle] = {12520}, + }, + [12805] = { + [questKeys.objectives] = {{{29124,}}}, + }, + [12807] = { + [questKeys.objectives] = {{{29344,}}}, + }, + [12808] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12809] = { + [questKeys.preQuestSingle] = {12808}, + }, + [12810] = { + [questKeys.objectives] = {{{29392,}}}, + }, + [12811] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12812] = { + [questKeys.preQuestSingle] = {12811}, + }, + [12813] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29329,29330,29333,29338},29398}}}, + [questKeys.preQuestSingle] = {12807}, + }, + [12814] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29406,29405},29406}}}, + }, + [12815] = { + [questKeys.preQuestSingle] = {12814}, + }, + [12816] = { + [questKeys.triggerEnd] = {"Investigate a circle",{[zoneIDs.EVERSONG_WOODS]={{56.5,52,},},},}, + }, + [12817] = { + [questKeys.triggerEnd] = {"Investigate a circle",{[zoneIDs.AZUREMYST_ISLE]={{34.9,45.5,},},},}, + }, + [12821] = { + [questKeys.name] = "Cell Block Tango", + [questKeys.triggerEnd] = {"Garm Teleporter Activated",{[zoneIDs.STORM_PEAKS]={{50.7,81.9,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Activate the teleporter"), 0, {{"object", 191574}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12820,12828,12832}, + [questKeys.sourceItemId] = 40731, + }, + [12823] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place Hardpacked Explosive Bundle at Frostgut's Altar"), 0, {{"object", 191842}}}}, + }, + [12828] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Retrieve U.D.E.D."), 0, {{"object", 191553}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Use U.D.E.D on Ironwool Mammoth"), 0, {{"monster", 29402}}}, + }, + }, + [12831] = { + [questKeys.preQuestSingle] = {}, + }, + [12832] = { + [questKeys.triggerEnd] = {"Escort the Injured Goblin Miner to K3.",{[zoneIDs.STORM_PEAKS]={{40.2,79,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Start the escort"), 0, {{"monster", 29434}}}}, + }, + [12838] = { + [questKeys.preQuestSingle] = {12807}, + }, + [12842] = { + [questKeys.triggerEnd] = {"Weapon emblazoned",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{47.28,31.36},{47.82,27.42},{50.43,28.17},},},}, + }, + [12847] = { + [questKeys.triggerEnd] = {"Arete's Gate summoned",{[zoneIDs.ICECROWN]={{9.53,47.01}}}}, + }, + [12851] = { + [questKeys.name] = "Bearly Hanging On", + [questKeys.objectives] = {{{29358},{29351}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount Icefang"), 0, {{"monster", 29598}}}, + }, + }, + [12852] = { + [questKeys.objectives] = {{{29621,}}}, + }, + [12855] = { + [questKeys.requiredSourceItems] = {40971,41430}, + [questKeys.preQuestSingle] = {12854}, + [questKeys.extraObjectives] = {{{[zoneIDs.STORM_PEAKS]={{36.4,64.2}}}, Questie.ICON_TYPE_EVENT, l10n("Use Frosthound's Collar at the Abandoned Camp")}}, + }, + [12856] = { + [questKeys.objectives] = {{{29639,"Rescued Brunnhildar Prisoners"},{29708,"Freed Proto-Drakes"}}}, + [questKeys.extraObjectives] = { + {{[zoneIDs.STORM_PEAKS]={{62.00,59.50}}}, Questie.ICON_TYPE_EVENT, l10n("Fly freed Proto-Drakes to safety while carrying rescued Brunnhildar Prisoners"),}, + }, + }, + [12858] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {40971,41130}, + }, + [12860] = { + [questKeys.requiredSourceItems] = {40971,41179}, + [questKeys.objectives] = {{{29746,"Hidden Data gathered"}}}, + }, + [12862] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Ricket for transportation"), 0, {{"monster", 29428}}}}, + }, + [12864] = { + [questKeys.objectives] = {{{29811,"Locate Missing Scout"}}}, + }, + [12865] = { + [questKeys.objectives] = {{{29854,"Stormcrest Eagles fed"}}}, + [questKeys.preQuestSingle] = {12863}, + }, + [12869] = { + [questKeys.preQuestGroup] = {12867,13417}, + }, + [12871] = { + [questKeys.requiredSourceItems] = {40971,41258}, + [questKeys.preQuestSingle] = {12872}, + }, + [12872] = { + [questKeys.requiredSourceItems] = {40971,44704}, + }, + [12874] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Fjorlin Frostbrow"), 0, {{"monster", 29732}}}}, + }, + [12876] = { + [questKeys.preQuestSingle] = {12874}, + }, + [12885] = { + [questKeys.preQuestSingle] = {12872}, + [questKeys.exclusiveTo] = {12930}, + [questKeys.sourceItemId] = 40971, + }, + [12886] = { + [questKeys.objectives] = {{{29694}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Hyldnir Harpoon to land on nearby Proto-Drakes"), 0, {{"monster", 29625}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Hyldnir Harpoon on Column Ornaments to dismount"), 0, {{"monster", 29754}}}, + }, + }, + [12887] = { + [questKeys.objectives] = {{{29747,"The Ocular has been destroyed"}}}, + }, + [12889] = { + [questKeys.requiredSkill] = {202,400}, + }, + [12892] = { + [questKeys.objectives] = {{{29747,"The Ocular has been destroyed"}}}, + }, + [12893] = { + [questKeys.objectives] = {{{29769},{29770},{29840}}}, + }, + [12896] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Tamper with General's Weapon Rack to summon General Lightsbane"), 0, {{"object", 191778},{"object", 191779}}}, + }, + }, + [12897] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Tamper with General's Weapon Rack to summon General Lightsbane"), 0, {{"object", 191778},{"object", 191779}}}, + }, + }, + [12906] = { + [questKeys.objectives] = {{{30146,"Exhausted Vrykul Disciplined"}}}, + }, + [12910] = { + [questKeys.sourceItemId] = 40971, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount Frostbite to track scent"), 0, {{"monster", 29857}}}, + }, + }, + [12913] = { + [questKeys.sourceItemId] = 40971, + }, + [12916] = { + [questKeys.objectives] = {nil,{{400065,"Scourge Enclosure Blown Up"}}}, + }, + [12919] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Let Gymer know you're ready"), 0, {{"monster", 29647}}}, + {{[zoneIDs.ZUL_DRAK]={{26.71,57.29}}}, Questie.ICON_TYPE_EVENT, l10n("Slay Scourge while riding Gymer"),}, + }, + }, + [12920] = { + [questKeys.preQuestSingle] = {12917}, + }, + [12924] = { + [questKeys.objectives] = {{{30099,"Fjorn's Anvil Brought to Dun Niffelem"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Pick up 'You Can't Miss Him' (12966)"), 0, {{"monster", 30105}}, {["hideIfQuestActive"] = 12966}}, + }, + }, + [12925] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12926] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {40971,41130}, + }, + [12927] = { + [questKeys.requiredSourceItems] = {40971,41179}, + [questKeys.objectives] = {{{29746,"Hidden Data gathered"}}}, + }, + [12928] = { + [questKeys.requiredSourceItems] = {40971,44704}, + }, + [12929] = { + [questKeys.preQuestSingle] = {12928}, + [questKeys.exclusiveTo] = {12930}, + [questKeys.sourceItemId] = 40971, + }, + [12932] = { -- This is the version of the quest you get if you have NOT completed 9977 + [questKeys.objectives] = {{{30014,"Yggdras Defeated"}}}, + [questKeys.exclusiveTo] = {12954,9977}, + [questKeys.nextQuestInChain] = 12933, + }, + [12933] = { + [questKeys.objectives] = {{{30017,"Stinkbeard Defeated"}}}, + [questKeys.preQuestSingle] = {12932,12954}, + }, + [12934] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30019,30024,30025,30026},30019,"Elemental Lord Defeated"}}}, + }, + [12935] = { + [questKeys.objectives] = {{{30020,"Orinoko Tuskbreaker Defeated"}}}, + }, + [12936] = { + [questKeys.objectives] = {{{30023,"Korrak the Bloodrager Defeated"}}}, + }, + [12939] = { + [questKeys.objectives] = {{{30037,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Challenge Flag on sparring Mjordin Combatants"), 0, {{"monster", 30037}}}, + }, + }, + [12940] = { + [questKeys.startedBy] = {nil,{400017}}, + [questKeys.finishedBy] = {nil,{400017}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12941] = { + [questKeys.startedBy] = {nil,{400016}}, + [questKeys.finishedBy] = {nil,{400016}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12942] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12944] = { + [questKeys.startedBy] = {nil,{400038}}, + [questKeys.finishedBy] = {nil,{400038}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12945] = { + [questKeys.startedBy] = {nil,{400039}}, + [questKeys.finishedBy] = {nil,{400039}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12946] = { + [questKeys.startedBy] = {nil,{400019}}, + [questKeys.finishedBy] = {nil,{400019}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12947] = { + [questKeys.startedBy] = {nil,{400018}}, + [questKeys.finishedBy] = {nil,{400018}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12948] = { + [questKeys.objectives] = {{{30022,"Vladof the Butcher Defeated"}}}, + }, + [12950] = { + [questKeys.startedBy] = {nil,{400032}}, + [questKeys.finishedBy] = {nil,{400032}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12953] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Harpoon Guns to burn Dry Haystacks"), 0, {{"monster", 30066}}}, + }, + }, + [12954] = { + [questKeys.objectives] = {{{30014,"Yggdras Defeated"}}}, + [questKeys.preQuestSingle] = {9977}, + [questKeys.exclusiveTo] = {12932}, + [questKeys.nextQuestInChain] = 12933, + }, + [12957] = { + [questKeys.objectives] = {{{29384},{29369}}}, + }, + [12966] = { + [questKeys.preQuestGroup] = {12915,12956}, + [questKeys.requiredMinRep] = {1119,0}, + }, + [12967] = { + [questKeys.objectives] = {{{30120}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Ride Snorri"), 0, {{"monster", 30123}}}}, + }, + [12968] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12970] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Listen to Lok'lira's proposal"), 0, {{"monster", 29975}}}, + }, + }, + [12973] = { + [questKeys.objectives] = {{{30405,"Accompany Brann Bronzebeard to Frosthold."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in Brann's Flying Machine"), 0, {{"monster", 30134}}}}, + [questKeys.preQuestSingle] = {12880}, + }, + [12974] = { + [questKeys.exclusiveTo] = {12932,12954}, + }, + [12975] = { + [questKeys.preQuestSingle] = {12924}, + }, + [12977] = { + [questKeys.name] = "Hodir's Call", + [questKeys.objectives] = {{{29974,"Niffelem Forefather freed"},},nil,nil,nil,{{{30144,30135},30144,},},}, + [questKeys.preQuestSingle] = {12976}, + }, + [12978] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29370,29374,29380},29370,"Nidavelir Stormforged slain"}}}, + }, + [12979] = { + [questKeys.objectives] = {nil,nil,{{42204},},nil,nil,}, + }, + [12981] = { + [questKeys.preQuestSingle] = {12967}, + }, + [12982] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30186,30194,30195,30196},30186,"Ebon Blade Prisoners set free"}}}, + }, + [12985] = { + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Diamond Tipped Pick on the corpses of Dead Iron Giants"), 0, {{"monster", 29914},{"monster", 30163}}}}, + }, + [12987] = { + [questKeys.name] = "Placing Hodir's Helm", + [questKeys.requiredMinRep] = {1119,3000}, + }, + [12994] = { + [questKeys.requiredMinRep] = {1119,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Ethereal Worg's Fang"), 0, {{"monster", 32569}}}}, + }, + [12995] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29915,29919,30037,30243,30250,30409,30475,30483,30484,30632,30725,30751,29880},29880,"Ebon Blade Banner planted near vrykul corpse"}}}, + }, + [12996] = { + [questKeys.objectives] = {{{29352,"Kirgaraak Defeated"}}}, + }, + [12998] = { + [questKeys.objectives] = {nil,{{192181,"Attempt to secure the Heart of the Storm"}}}, + }, + [13001] = { + [questKeys.name] = "Forging Hodir's Spear", + [questKeys.requiredMinRep] = {1119,9000}, + }, + [13003] = { + [questKeys.name] = "How To Slay Your Dragon", + [questKeys.objectives] = {{{30275,"Wild Wyrm Slain"}}}, + [questKeys.preQuestSingle] = {13001}, + }, + [13005] = { + [questKeys.objectives] = {{{29984,"Iron Sentinel slain"},{29978,"Iron Dwarf Assailant slain"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Use the Horn of the Peaks and call on the Earthen to defeat Iron Dwarves and Iron Sentinels"), 0, {{"monster", 29984},{"monster",29978}}}}, + [questKeys.preQuestSingle] = {13057}, + }, + [13006] = { + [questKeys.name] = "A Viscous Cleaning", + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.preQuestSingle] = {12987}, + }, + [13007] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount Tamed Jormungar to fight Iron Colossus"),0,{{"monster", 30301},{"object", 192262}}},}, + }, + [13008] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30273,30268,30274},30273,}}}, + }, + [13010] = { + [questKeys.objectives] = {{{30105, nil, {["hideIfQuestActive"] = 12966}}},nil,nil,{1119,3000}}, + }, + [13011] = { + [questKeys.name] = "Culling Jorcuttar", + [questKeys.objectivesText] = {"King Jokkum in Dun Niffelem wants you to slay Jorcuttar in Hibernal Cavern."}, + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.requiredSourceItems] = {42733}, + [questKeys.extraObjectives] = {{{[zoneIDs.STORM_PEAKS]={{54.71,60.79}}}, Questie.ICON_TYPE_EVENT, l10n("Place Icemaw Bear Flank"), 0}} + }, + [13012] = { + [questKeys.startedBy] = {{30348}}, + [questKeys.finishedBy] = {{30348}}, + }, + [13013] = { + [questKeys.startedBy] = {{30357}}, + [questKeys.finishedBy] = {{30357}}, + }, + [13014] = { + [questKeys.startedBy] = {{30358}}, + [questKeys.finishedBy] = {{30358}}, + }, + [13015] = { + [questKeys.startedBy] = {{30359}}, + [questKeys.finishedBy] = {{30359}}, + }, + [13016] = { + [questKeys.startedBy] = {{30360}}, + [questKeys.finishedBy] = {{30360}}, + }, + [13017] = { + [questKeys.startedBy] = {{30531}}, + [questKeys.finishedBy] = {{30531}}, + }, + [13018] = { + [questKeys.startedBy] = {{30362}}, + [questKeys.finishedBy] = {{30362}}, + }, + [13019] = { + [questKeys.startedBy] = {{30363}}, + [questKeys.finishedBy] = {{30363}}, + }, + [13020] = { + [questKeys.startedBy] = {{30375}}, + [questKeys.finishedBy] = {{30375}}, + }, + [13021] = { + [questKeys.startedBy] = {{30536}}, + [questKeys.finishedBy] = {{30536}}, + }, + [13022] = { + [questKeys.startedBy] = {{30533}}, + [questKeys.finishedBy] = {{30533}}, + }, + [13023] = { + [questKeys.startedBy] = {{30534}}, + [questKeys.finishedBy] = {{30534}}, + }, + [13024] = { + [questKeys.startedBy] = {{30365}}, + [questKeys.finishedBy] = {{30365}}, + }, + [13025] = { + [questKeys.startedBy] = {{30367}}, + [questKeys.finishedBy] = {{30367}}, + }, + [13026] = { + [questKeys.startedBy] = {{30368}}, + [questKeys.finishedBy] = {{30368}}, + }, + [13027] = { + [questKeys.startedBy] = {{30369}}, + [questKeys.finishedBy] = {{30369}}, + }, + [13028] = { + [questKeys.startedBy] = {{30370}}, + [questKeys.finishedBy] = {{30370}}, + }, + [13029] = { + [questKeys.startedBy] = {{30371}}, + [questKeys.finishedBy] = {{30371}}, + }, + [13030] = { + [questKeys.startedBy] = {{30372}}, + [questKeys.finishedBy] = {{30372}}, + }, + [13031] = { + [questKeys.startedBy] = {{30373}}, + [questKeys.finishedBy] = {{30373}}, + }, + [13032] = { + [questKeys.startedBy] = {{30374}}, + [questKeys.finishedBy] = {{30374}}, + }, + [13033] = { + [questKeys.startedBy] = {{30364}}, + [questKeys.finishedBy] = {{30364}}, + }, + [13034] = { + [questKeys.preQuestSingle] = {}, + }, + [13035] = { + [questKeys.preQuestSingle] = {13057}, + }, + [13037] = { + [questKeys.objectives] = {{{30395}}}, + }, + [13038] = { + [questKeys.objectives] = {{{30448}}}, + [questKeys.preQuestSingle] = {13034}, + }, + [13039] = { + [questKeys.preQuestSingle] = {13036}, + }, + [13040] = { + [questKeys.preQuestSingle] = {13036}, + }, + [13042] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.objectives] = {{{30409,"Information beaten out of Apprentice Osterkilgr"},{30409}}}, + }, + [13043] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.startedBy] = {{30409},nil,{42772}}, + [questKeys.requiredSourceItems] = {}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Nergeld"), 0, {{"monster", 30403}}}, + }, + }, + [13044] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13008,13039,13040}, + }, + [13045] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Argent Skytalon"), 0, {{"monster", 30500}}}, + {{[zoneIDs.ICECROWN]={{86.85,76.61}}}, Questie.ICON_TYPE_EVENT, l10n("Drop Off Captured Crusader"), 0}, + }, + }, + [13046] = { + [questKeys.objectives] = {{{30422}}}, + [questKeys.requiredMinRep] = {1119,21000}, + }, + [13047] = { + [questKeys.preQuestGroup] = {13035,13005}, + [questKeys.objectives] = {{{30399,"Witness the Reckoning"}}}, + }, + [13048] = { + [questKeys.objectives] = {{{80000}}}, + [questKeys.preQuestGroup] = {13037,13038}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Attune the Lorehammer"), 0, {{"object", 192541},{"object", 192542},{"object", 192543},{"object", 192544},{"object", 192545},{"object", 192546}}}, + }, + }, + [13049] = { + [questKeys.preQuestGroup] = {13037,13038}, + }, + [13058] = { + [questKeys.preQuestGroup] = {13048,13049}, + [questKeys.extraObjectives] = { + {{[zoneIDs.STORM_PEAKS]={{64.4,46.7}}}, Questie.ICON_TYPE_OBJECT, l10n("Use the Lorehammer to travel back in time"), 0}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Defeat the North Wind"), 0, {{"monster", 30474}}}, + }, + }, + [13059] = { + [questKeys.objectives] = {nil,{{192560}},nil,nil,{{{30475},32821,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Volgur"), 0, {{"monster", 30483}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Brita"), 0, {{"monster", 30484}}}, + }, + }, + [13060] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Ricket for transportation"), 0, {{"monster", 29428}}}, + }, + }, + [13064] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Listen to Thorim's history"), 0, {{"monster", 29445}}}, + }, + }, + [13065] = { + [questKeys.startedBy] = {{30537}}, + [questKeys.finishedBy] = {{30537}}, + }, + [13066] = { + [questKeys.startedBy] = {{30535}}, + [questKeys.finishedBy] = {{30535}}, + }, + [13067] = { + [questKeys.startedBy] = {{30538}}, + [questKeys.finishedBy] = {{30538}}, + }, + [13068] = { + [questKeys.preQuestSingle] = {13141}, + }, + [13069] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 30337}}}}, + }, + [13071] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 30272}}}}, + }, + [13073] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Speak to Arch Druid Lilliandra for transportation to Moonglade"), 0, {{"monster", 30630}}}}, + }, + [13086] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Argent Cannon"), 0, {{"monster", 30236}}}, + }, + }, + [13091] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30725,29880,30632,30243,30250},30644,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Possess a Water Terror"), 0, {{"object", 192774}}}, + }, + }, + [13092] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.specialFlags] = 0, + }, + [13093] = { + [questKeys.preQuestSingle] = {13092}, + }, + [13098] = { + [questKeys.preQuestSingle] = {}, + }, + [13106] = { + [questKeys.preQuestSingle] = {12896,12897}, + [questKeys.exclusiveTo] = {13119,13120}, + }, + [13109] = { + [questKeys.preQuestSingle] = {13047}, + }, + [13110] = { + [questKeys.objectives] = {{{30202}}}, + [questKeys.preQuestSingle] = {13104}, + }, + [13117] = { + [questKeys.preQuestSingle] = {}, + }, + [13118] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13121] = { + [questKeys.objectives] = {nil,{{192861}}}, + }, + [13122] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13125] = { + [questKeys.preQuestGroup] = {13122,13118}, + }, + [13129] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Dip Kurzel's Blouse Scrap on the remains of Novos the Summoner"), 0, {{"monster", 26631}}}}, + }, + [13130] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13133] = { + [questKeys.objectives] = {{{30886}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Wake Slumbering Mjordin until you find Iskalder"), 0, {{"monster", 30718}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Iskalder delivered to The Bone Witch"), 0, {{"monster", 30232}}}, + }, + }, + [13134] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13135] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13136] = { + [questKeys.startedBy] = {{30597},nil,{43242}}, + [questKeys.objectives] = {nil,nil,{{43259}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13137] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Battlescar Signal Fire to summon Iskalder"), 0, {{"object", 193024}}}, + }, + }, + [13138] = { + [questKeys.preQuestSingle] = {13136}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Bag of Jagged Shards near Malykriss Furnace"), 0, {{"object", 193004}}}}, + }, + [13139] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13125,13130,13135}, + }, + [13140] = { + [questKeys.preQuestSingle] = {13136}, + }, + [13141] = { + [questKeys.objectives] = {{{30989,"Battle for Crusaders' Pinnacle"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Plant the Blessed Banner of the Crusade"), 0, {{"object", 193003}}}}, + }, + [13142] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Blow the War Horn of Jotunheim to challenge Overthane Balargarde"), 0, {{"object", 193028}}}, + }, + }, + [13143] = { + [questKeys.objectives] = {{{30894}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Lead a subdued Lithe Stalker to the cliff above Vereth the Cunning"), 0, {{"monster", 31049}}}}, + }, + [13144] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30689,31048},30689,}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13152,13211}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Free Burning Skeletons to destroy Chained Abominations"), 0, {{"object", 193060}}}}, + }, + [13145] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13146] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Drag Scourge Bombs to Lumbering Atrocities"), 0, {{"monster", 30920}}}, + }, + }, + [13147] = { + [questKeys.objectives] = {{{30922}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13149] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Plagued Grain Crates Dispelled: 0/1"), 0, {{"object", 190094}}}}, + }, + [13151] = { + [questKeys.objectives] = {{{26533,"Mal'Ganis Defeated"}}}, + }, + [13152] = { + [questKeys.preQuestSingle]= {}, + [questKeys.preQuestGroup] = {13134,13138,13140}, + [questKeys.objectives] = {{{30993,"Patches freed"},{30992,"Help Patches kill Doctor Sabnok"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Free Patches"), 0, {{"object", 193025}}}}, + }, + [13153] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13154,13156,13195,13196,13197,13198}, + }, + [13154] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13153,13156,13195,13196,13197,13198}, + }, + [13155] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13172,13174}, + }, + [13156] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13153,13154,13195,13196,13197,13198}, + }, + [13160] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13164] = { + [questKeys.preQuestSingle]= {}, + [questKeys.preQuestGroup] = {13161,13162,13163}, + }, + [13168] = { + [questKeys.triggerEnd] = {"Seize Control of an Eidolon Watcher", {[zoneIDs.ICECROWN]={{44.19,24.69}}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Eye of Dominion"), 0, {{"object", 193058}}}}, + }, + [13169] = { + [questKeys.objectives] = {{{30952,"Hungering Plaguehounds fed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13170] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13171] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13172] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13169,13170,13171}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Speak to Keritose Bloodblade to secure a Skeletal Gryphon"), 0, {{"monster", 30946}}}}, + }, + [13174] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13169,13170,13171}, + }, + [13177] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13179}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{30739,39019},39019,"Horde members slain"}}}, + }, + [13178] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13180}, + }, + [13179] = { + [questKeys.exclusiveTo] = {13177}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{30739,39019},39019,"Horde members slain"}}}, + }, + [13180] = { + [questKeys.exclusiveTo] = {13178}, + }, + [13181] = { + [questKeys.triggerEnd] = {"Victory in Lake Wintergrasp", {[zoneIDs.DALARAN]={{33,67.2}}}}, + }, + [13183] = { + [questKeys.triggerEnd] = {"Victory in Lake Wintergrasp", {[zoneIDs.DALARAN]={{58.2,25.6}}}}, + }, + [13185] = { + [questKeys.exclusiveTo] = {13223}, + }, + [13186] = { + [questKeys.exclusiveTo] = {13222}, + }, + [13190] = { + [questKeys.requiredSourceItems] = {43494}, + [questKeys.objectives] = {nil,{{193057,"Ahn'kahar Watcher Corpse Burned"}}}, + }, + [13191] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {{31106}}, + [questKeys.exclusiveTo] = {13192,13193,13194,13199,13200,13201,13202}, + }, + [13192] = { + [questKeys.exclusiveTo] = {13191,13193,13194,13199,13200,13201,13202}, + }, + [13193] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13191,13192,13194,13199,13200,13201,13202}, + }, + [13194] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13191,13192,13193,13199,13200,13201,13202}, + }, + [13195] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13196,13197,13198}, + }, + [13196] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13197,13198}, + }, + [13197] = { + [questKeys.finishedBy] = {{31108}}, + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13196,13198}, + }, + [13198] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13196,13197}, + }, + [13199] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13200,13201,13202}, + }, + [13200] = { + [questKeys.finishedBy] = {{31106}}, + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13201,13202}, + }, + [13201] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13200,13202}, + }, + [13202] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13200,13201}, + }, + [13203] = { + [questKeys.exclusiveTo] = {11528,13966}, + }, + [13204] = { + [questKeys.startedBy] = {{30329},nil,{43512}}, + }, + [13211] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13134,13138,13140}, + }, + [13214] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31191,31192,31193,31194,31195,31196,},31191}}}, + }, + [13215] = { + [questKeys.objectives] = {{{31222}}}, + }, + [13216] = { + [questKeys.objectives] = {{{31242}}}, + }, + [13217] = { + [questKeys.objectives] = {{{31271}}}, + }, + [13218] = { + [questKeys.objectives] = {{{31277}}}, + }, + [13219] = { + [questKeys.objectives] = {{{14688}}}, + }, + [13220] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Crusader Olakin's Remains at the Sanctum of Reanimation Slab"), 0, {{"object", 193090}}}}, + }, + [13221] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13222] = { + [questKeys.exclusiveTo] = {13186}, + }, + [13223] = { + [questKeys.exclusiveTo] = {13185}, + }, + [13226] = { + [questKeys.nextQuestInChain] = 13036, + }, + [13227] = { + [questKeys.nextQuestInChain] = 13036, + }, + [13228] = { + [questKeys.objectives] = {{{31273,"Dying Berserker Questioned"}}}, + [questKeys.childQuests] = {13230}, + [questKeys.preQuestSingle] = {13224}, + }, + [13229] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13230] = { + [questKeys.parentQuest] = 13228, + [questKeys.preQuestSingle] = {13228}, + }, + [13231] = { + [questKeys.objectives] = {{{31304,"Dying Soldier Questioned"}}}, + [questKeys.childQuests] = {13232}, + [questKeys.preQuestSingle] = {13225}, + }, + [13232] = { + [questKeys.objectives] = {{{31304,"Dying Soldiers Slain"}}}, + [questKeys.parentQuest] = 13231, + [questKeys.preQuestSingle] = {13231}, + }, + [13233] = { + [questKeys.triggerEnd] = {"Kill horde players in Icecrown", {[zoneIDs.ICECROWN]={{60.9,41.3}}}}, + [questKeys.preQuestSingle] = {13231}, + }, + [13234] = { + [questKeys.preQuestSingle] = {13228}, + [questKeys.triggerEnd] = {"Kill alliance players in Icecrown", {[zoneIDs.ICECROWN]={{60.9,41.3}}}}, + }, + [13235] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Margrave Dhakar to fight Morbidus"), 0, {{"monster", 31306}}}}, + }, + [13236] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31254,32414,31276},31329}}}, + }, + [13238] = { + [questKeys.preQuestSingle] = {13228}, + }, + [13239] = { + [questKeys.preQuestSingle] = {13238}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13240] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13241,13243,13244}, + }, + [13241] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13243,13244}, + }, + [13242] = { + [questKeys.preQuestSingle] = {12500}, + }, + [13243] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13241,13244}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{27744,28341},27744}}}, + }, + [13244] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13241,13243}, + }, + [13245] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13246] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13247] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13248] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13249] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13250] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13251,13252,13253,13254,13255,13256,14199}, + }, + [13251] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13252,13253,13254,13255,13256,14199}, + }, + [13252] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13253,13254,13255,13256,14199}, + }, + [13253] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13254,13255,13256,14199}, + }, + [13254] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13255,13256,14199}, + }, + [13255] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13256,14199}, + }, + [13256] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,14199}, + }, + [13258] = { + [questKeys.preQuestGroup] = {12938,13224}, + }, + [13260] = { + [questKeys.preQuestSingle] = {13228}, + }, + [13261] = { + [questKeys.preQuestSingle] = {13239}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13264] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13237}, + }, + [13265] = { + [questKeys.requiredSpell] = -59390, + }, + [13267] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Begin the assault!"), 0, {{"monster", 31650}}}}, + }, + [13268] = { + [questKeys.requiredSpell] = -59390, + }, + [13269] = { + [questKeys.requiredSpell] = -59390, + }, + [13270] = { + [questKeys.requiredSpell] = -59390, + }, + [13272] = { + [questKeys.requiredSpell] = -59390, + }, + [13273] = { + [questKeys.preQuestSingle] = {12928}, + [questKeys.sourceItemId] = 40971, + }, + [13274] = { + [questKeys.sourceItemId] = 40971, + }, + [13276] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13264}, + }, + [13277] = { + [questKeys.preQuestSingle] = {13237}, + }, + [13278] = { + [questKeys.preQuestSingle] = {13277}, + }, + [13279] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + }, + [13280] = { + [questKeys.preQuestSingle] = {13296}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Plant Alliance Battle Standard"), 0, {{"object", 193565}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get in the Jumpbot"), 0, {{"monster", 31736}}}, + }, + }, + [13281] = { + [questKeys.sourceItemId] = 44010, + [questKeys.preQuestSingle] = {13279}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + }, + [13283] = { + [questKeys.preQuestSingle] = {13293}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Plant Horde Battle Standard"), 0, {{"object", 193565}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get in the Jumpbot"), 0, {{"monster", 31770}}}, + }, + }, + [13284] = { + [questKeys.preQuestSingle] = {13341}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31701,31737},31701,"Alliance troops escorted to Ymirheim"}}}, + }, + [13285] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {}, + }, + [13286] = { + [questKeys.preQuestSingle] = {13231}, + }, + [13288] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13287}, + }, + [13289] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13288}, + }, + [13290] = { + [questKeys.preQuestSingle] = {13231}, + }, + [13291] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13292] = { + [questKeys.preQuestSingle] = {13291}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Frostbrood Skytalons Destroyed"}}}, + }, + [13293] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13294] = { + [questKeys.preQuestSingle] = {13287}, + }, + [13295] = { + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + }, + [13296] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13297] = { + [questKeys.sourceItemId] = 44010, + [questKeys.preQuestSingle] = {13295}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + }, + [13298] = { + [questKeys.preQuestSingle] = {13294}, + }, + [13300] = { + [questKeys.objectives] = {{{31397,"Saronite Mine Slave rescued"}}}, + [questKeys.preQuestSingle] = {13225}, + }, + [13301] = { + [questKeys.preQuestSingle] = {13340}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31832,31833},31832,"Horde troops escorted to Ymirheim"}}}, + }, + [13302] = { + [questKeys.objectives] = {{{31397,"Saronite Mine Slave rescued"}}}, + [questKeys.preQuestSingle] = {13224}, + }, + [13305] = { + [questKeys.preQuestSingle] = {13304}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Board Refurbished Demolisher"), 0, {{"monster", 32370}}}}, + }, + [13306] = { + [questKeys.preQuestSingle] = {13366}, + }, + [13307] = { + [questKeys.preQuestSingle] = {13306}, + }, + [13308] = { + [questKeys.preQuestSingle] = {13224,13225}, + }, + [13309] = { + [questKeys.preQuestSingle] = {13341}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Hop on the turret"), 0, {{"monster", 32227}}}}, + [questKeys.objectives] = {{{32222,"Skybreaker Infiltrators dropped"}}}, + }, + [13310] = { + [questKeys.preQuestSingle] = {13340}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Hop on the turret"), 0, {{"monster", 31884}}}}, + [questKeys.objectives] = {{{31882,"Skybreaker Infiltrators dropped"}}}, + }, + [13312] = { + [questKeys.preQuestGroup] = {13306,13367}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Rune of Distortion near Grimkor's Orb to summon Grimkor the Wicked"), 0, {{"object", 193622}}}}, + }, + [13313] = { + [questKeys.preQuestSingle] = {13306}, + }, + [13314] = { + [questKeys.preQuestSingle] = {13332}, + }, + [13315] = { + [questKeys.preQuestSingle] = {13288}, + }, + [13316] = { + [questKeys.preQuestSingle] = {13329}, + }, + [13318] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13315}, + }, + [13319] = { + [questKeys.preQuestSingle] = {13315}, + }, + [13320] = { + [questKeys.preQuestSingle] = {13315}, + }, + [13321] = { + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13322] = { + [questKeys.preQuestSingle] = {13321}, + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13323] = { + [questKeys.preQuestSingle] = {13318}, + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + }, + [13328] = { + [questKeys.preQuestSingle] = {13329}, + }, + [13329] = { + [questKeys.objectives] = {{{32467,"Skeletal Reaver bones dissolved"}}}, + [questKeys.preQuestGroup] = {13307,13312}, + }, + [13330] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13331] = { + [questKeys.preQuestSingle] = {13313}, + }, + [13332] = { + [questKeys.preQuestSingle] = {13345}, + }, + [13333] = { + [questKeys.preQuestSingle] = {13314}, + }, + [13334] = { + [questKeys.preQuestSingle] = {13332}, + }, + [13335] = { + [questKeys.objectives] = {{{32467,"Skeletal Reaver bones dissolved"}}}, + [questKeys.preQuestGroup] = {13334,13337}, + }, + [13336] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13337] = { + [questKeys.preQuestGroup] = {13332,13346}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Rune of Distortion near Grimkor's Orb to summon Grimkor the Wicked"), 0, {{"object", 193622}}}}, + }, + [13338] = { + [questKeys.preQuestSingle] = {13335}, + }, + [13339] = { + [questKeys.preQuestSingle] = {13335}, + }, + [13340] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13341] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13342] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13318}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13343] = { + [questKeys.objectives] = {{{32327,"Hourglass of Eternity protected from the Infinite Dragonflight."}}}, + }, + [13344] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13342}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13345] = { + [questKeys.sourceItemId] = 44459, + [questKeys.preQuestSingle] = {13318}, + }, + [13346] = { + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13347] = { + [questKeys.preQuestSingle] = {12499}, + }, + [13350] = { + [questKeys.preQuestSingle] = {13346}, + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13351] = { + [questKeys.preQuestSingle] = {13264}, + }, + [13352] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13351}, + }, + [13353] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13352}, + }, + [13354] = { + [questKeys.preQuestSingle] = {13351}, + }, + [13355] = { + [questKeys.preQuestSingle] = {13351}, + }, + [13356] = { + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13357] = { + [questKeys.preQuestSingle] = {13356}, + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13358] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13352}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13359] = { + [questKeys.preQuestSingle] = {13348}, + [questKeys.nextQuestInChain] = 13360, + }, + [13360] = { + [questKeys.preQuestSingle] = {13359}, + }, + [13361] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31395,32587,32588},32588,"The Prince's Destiny"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Pick it up"), 0, {{"object", 193980},{"object", 194023},{"object", 194024}}}}, + }, + [13363] = { + [questKeys.preQuestSingle] = {13362}, + }, + [13364] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tirion while wearing a Cultist Acolyte's Hood"), 0, {{"monster", 32239}}}}, + }, + [13365] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13358}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13366] = { + [questKeys.sourceItemId] = 44459, + [questKeys.preQuestSingle] = {13352}, + }, + [13367] = { + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13368] = { + [questKeys.preQuestSingle] = {13367}, + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13369] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Request a portal to Orgrimmar"), 0, {{"monster", 32346}}}}, + }, + [13372] = { + [questKeys.startedBy] = {{15989},nil,{44569}}, + }, + [13373] = { + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 0, {{"monster", 31839}}}}, + }, + [13375] = { + [questKeys.startedBy] = {{15989},nil,{44577}}, + }, + [13376] = { + [questKeys.preQuestSingle] = {13373}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 1, {{"monster", 31839}}}}, + [questKeys.objectives] = {{{32188},{32154},{31721}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13377] = { + [questKeys.objectives] = {{{32518,"Assist King Varian Wrynn"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Begin the assault!"), 0, {{"monster", 32401}}}}, + }, + [13379] = { + [questKeys.preQuestSingle] = {13239}, + }, + [13380] = { + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Karen No"), 0, {{"monster", 31648}}}}, + }, + [13382] = { + [questKeys.preQuestSingle] = {13380}, + [questKeys.objectives] = {{{32188},{32154},{31721}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13383] = { + [questKeys.preQuestSingle] = {13291}, + }, + [13386] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13225,12898}, + }, + [13390] = { + [questKeys.startedBy] = {{31237},{193195}}, + }, + [13394] = { + [questKeys.preQuestSingle] = {13393}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Board Refurbished Demolisher"), 0, {{"monster", 32370}}}}, + }, + [13395] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31254,32414,31276},31329}}}, + }, + [13398] = { + [questKeys.preQuestSingle] = {13396}, + }, + [13400] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31395,32587,32588},32588,"The Prince's Destiny"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Pick it up"), 0, {{"object", 193980},{"object", 194023},{"object", 194024}}}}, + }, + [13403] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tirion while wearing a Cultist Acolyte's Hood"), 0, {{"monster", 32239}}}}, + }, + [13404] = { + [questKeys.preQuestSingle] = {13380}, + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13405] = { + [questKeys.triggerEnd] = {"Victory in Strand of the Ancients", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,11338,14163}, + }, + [13406] = { + [questKeys.preQuestSingle] = {13373}, + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 1, {{"monster", 31839}}}}, + }, + [13407] = { + [questKeys.triggerEnd] = {"Victory in Strand of the Ancients", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,11342,14164}, + }, + [13408] = { + [questKeys.preQuestSingle] = {10143,10483}, + }, + [13409] = { + [questKeys.preQuestSingle] = {10124}, + }, + [13410] = { + [questKeys.preQuestSingle] = {10143,10483}, + }, + [13411] = { + [questKeys.preQuestSingle] = {10124}, + }, + [13413] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 1, {{"monster", 32548}}}}, + }, + [13414] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 1, {{"monster", 32548}}}}, + }, + [13415] = { + [questKeys.requiredSourceItems] = {41197,40971}, + }, + [13416] = { + [questKeys.requiredSourceItems] = {41197,40971}, + }, + [13418] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to the ship"), 1, {{"monster", 31081}}}}, + }, + [13419] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to the ship"), 1, {{"monster", 31085}}}}, + }, + [13420] = { + [questKeys.startedBy] = {nil,{193997},{44725}}, + [questKeys.requiredMinRep] = {1119,3000}, + }, + [13422] = { + [questKeys.preQuestSingle] = {12906}, + [questKeys.objectives] = {{{30146,"Exhausted Vrykul Disciplined"}}}, + [questKeys.exclusiveTo] = {13423,13424,13425}, + }, + [13423] = { + [questKeys.preQuestSingle] = {12971}, + [questKeys.exclusiveTo] = {13422,13424,13425}, + }, + [13424] = { + [questKeys.preQuestSingle] = {12997}, + [questKeys.exclusiveTo] = {13422,13423,13425}, + }, + [13425] = { + [questKeys.preQuestSingle] = {12925}, + [questKeys.exclusiveTo] = {13422,13423,13424}, + }, + [13426] = { + [questKeys.preQuestSingle] = {13285}, + [questKeys.nextQuestInChain] = 13034, + }, + [13427] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,14180}, + }, + [13428] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14181,14182,14183}, + }, + [13429] = { + [questKeys.triggerEnd] = {"Help Akama and Maiev enter the Black Temple.", {[zoneIDs.SHADOWMOON_VALLEY]={{71.05,46.11},{66.29,44.06}}}}, + [questKeys.exclusiveTo] = {10985}, + [questKeys.startedBy] = {{18528}}, + [questKeys.finishedBy] = {{18528}}, + [questKeys.preQuestSingle] = {10949}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Let Xi'ri know you're ready to battle"), 1, {{"monster", 18528}}}}, + }, + [13430] = { + [questKeys.exclusiveTo] = {10888}, + [questKeys.preQuestGroup] = {10884,10885,10886}, + }, + [13431] = { + [questKeys.exclusiveTo] = {10901}, + }, + [13432] = { + [questKeys.exclusiveTo] = {10445}, + }, + [13433] = { + [questKeys.startedBy] = {nil,{400041}}, + [questKeys.finishedBy] = {nil,{400041}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13434] = { + [questKeys.startedBy] = {nil,{400042}}, + [questKeys.finishedBy] = {nil,{400042}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13435] = { + [questKeys.startedBy] = {nil,{400040}}, + [questKeys.finishedBy] = {nil,{400040}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13436] = { + [questKeys.startedBy] = {nil,{400046}}, + [questKeys.finishedBy] = {nil,{400046}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13437] = { + [questKeys.startedBy] = {nil,{400045}}, + [questKeys.finishedBy] = {nil,{400045}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13438] = { + [questKeys.startedBy] = {nil,{400043}}, + [questKeys.finishedBy] = {nil,{400043}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13439] = { + [questKeys.startedBy] = {nil,{400044}}, + [questKeys.finishedBy] = {nil,{400044}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13440] = { + [questKeys.startedBy] = {nil,{194032}}, + [questKeys.finishedBy] = {nil,{194032}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13441] = { + [questKeys.startedBy] = {nil,{194033}}, + [questKeys.finishedBy] = {nil,{194033}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13442] = { + [questKeys.startedBy] = {nil,{194035}}, + [questKeys.finishedBy] = {nil,{194035}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13443] = { + [questKeys.startedBy] = {nil,{194036}}, + [questKeys.finishedBy] = {nil,{194036}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13444] = { + [questKeys.startedBy] = {nil,{194038}}, + [questKeys.finishedBy] = {nil,{194038}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13445] = { + [questKeys.startedBy] = {nil,{194040}}, + [questKeys.finishedBy] = {nil,{194040}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13446] = { + [questKeys.startedBy] = {nil,{194044}}, + [questKeys.finishedBy] = {nil,{194044}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13447] = { + [questKeys.startedBy] = {nil,{194045}}, + [questKeys.finishedBy] = {nil,{194045}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13448] = { + [questKeys.startedBy] = {nil,{400037}}, + [questKeys.finishedBy] = {nil,{400037}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13449] = { + [questKeys.startedBy] = {nil,{194049}}, + [questKeys.finishedBy] = {nil,{194049}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13450] = { + [questKeys.startedBy] = {nil,{194034}}, + [questKeys.finishedBy] = {nil,{194034}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13451] = { + [questKeys.startedBy] = {nil,{194037}}, + [questKeys.finishedBy] = {nil,{194037}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13452] = { + [questKeys.startedBy] = {nil,{400023}}, + [questKeys.finishedBy] = {nil,{400023}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13453] = { + [questKeys.startedBy] = {nil,{194039}}, + [questKeys.finishedBy] = {nil,{194039}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13454] = { + [questKeys.startedBy] = {nil,{194042}}, + [questKeys.finishedBy] = {nil,{194042}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13455] = { + [questKeys.startedBy] = {nil,{194043}}, + [questKeys.finishedBy] = {nil,{194043}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13456] = { + [questKeys.startedBy] = {nil,{400025}}, + [questKeys.finishedBy] = {nil,{400025}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13457] = { + [questKeys.startedBy] = {nil,{194046}}, + [questKeys.finishedBy] = {nil,{194046}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13458] = { + [questKeys.startedBy] = {nil,{194048}}, + [questKeys.finishedBy] = {nil,{194048}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13459] = { + [questKeys.startedBy] = {nil,{400026}}, + [questKeys.finishedBy] = {nil,{400026}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13460] = { + [questKeys.startedBy] = {nil,{400028}}, + [questKeys.finishedBy] = {nil,{400028}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13461] = { + [questKeys.startedBy] = {nil,{400033}}, + [questKeys.finishedBy] = {nil,{400033}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13462] = { + [questKeys.startedBy] = {nil,{400034}}, + [questKeys.finishedBy] = {nil,{400034}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13464] = { + [questKeys.startedBy] = {nil,{400020}}, + [questKeys.finishedBy] = {nil,{400020}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13465] = { + [questKeys.startedBy] = {nil,{400022}}, + [questKeys.finishedBy] = {nil,{400022}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13466] = { + [questKeys.startedBy] = {nil,{400021}}, + [questKeys.finishedBy] = {nil,{400021}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13467] = { + [questKeys.startedBy] = {nil,{400029}}, + [questKeys.finishedBy] = {nil,{400029}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13468] = { + [questKeys.startedBy] = {nil,{400030}}, + [questKeys.finishedBy] = {nil,{400030}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13469] = { + [questKeys.startedBy] = {nil,{400027}}, + [questKeys.finishedBy] = {nil,{400027}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13470] = { + [questKeys.startedBy] = {nil,{400024}}, + [questKeys.finishedBy] = {nil,{400024}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13471] = { + [questKeys.startedBy] = {nil,{400035}}, + [questKeys.finishedBy] = {nil,{400035}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13473] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13474] = { + [questKeys.startedBy] = {nil,{194081}}, + [questKeys.finishedBy] = {nil,{194081}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13481] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + }, + [13482] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + }, + [13485] = { + [questKeys.startedBy] = {{32801}}, + [questKeys.finishedBy] = {{32801}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13486] = { + [questKeys.startedBy] = {{32802}}, + [questKeys.finishedBy] = {{32802}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13487] = { + [questKeys.startedBy] = {{32803}}, + [questKeys.finishedBy] = {{32803}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13488] = { + [questKeys.startedBy] = {{32804}}, + [questKeys.finishedBy] = {{32804}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13489] = { + [questKeys.startedBy] = {{32805}}, + [questKeys.finishedBy] = {{32805}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13490] = { + [questKeys.startedBy] = {{32806}}, + [questKeys.finishedBy] = {{32806}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13491] = { + [questKeys.startedBy] = {{32807}}, + [questKeys.finishedBy] = {{32807}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13492] = { + [questKeys.startedBy] = {{32808}}, + [questKeys.finishedBy] = {{32808}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13493] = { + [questKeys.startedBy] = {{32809}}, + [questKeys.finishedBy] = {{32809}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13494] = { + [questKeys.startedBy] = {{32810}}, + [questKeys.finishedBy] = {{32810}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13495] = { + [questKeys.startedBy] = {{32811}}, + [questKeys.finishedBy] = {{32811}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13496] = { + [questKeys.startedBy] = {{32812}}, + [questKeys.finishedBy] = {{32812}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13497] = { + [questKeys.startedBy] = {{32813}}, + [questKeys.finishedBy] = {{32813}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13498] = { + [questKeys.startedBy] = {{32814}}, + [questKeys.finishedBy] = {{32814}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13499] = { + [questKeys.startedBy] = {{32815}}, + [questKeys.finishedBy] = {{32815}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13500] = { + [questKeys.startedBy] = {{32816}}, + [questKeys.finishedBy] = {{32816}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13501] = { + [questKeys.startedBy] = {nil,{400031}}, + [questKeys.finishedBy] = {nil,{400031}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13548] = { + [questKeys.startedBy] = {nil,{400036}}, + [questKeys.finishedBy] = {nil,{400036}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13549] = { + [questKeys.objectives] = {{{29327,"Female Frost Leopards recovered"},{29319,"Female Icepaw Bears recovered"},},nil,nil,nil,}, + }, + [13559] = { + [questKeys.preQuestSingle] = {12924}, + }, + [13592] = { -- HUMAN A Valiant's Field Training + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13744,13749,13760,13755}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13593] = { -- HUMAN Valiant Of Stormwind + [questKeys.preQuestSingle] = {13725,13713,13723,13724}, + [questKeys.exclusiveTo] = {13684,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13600] = { -- HUMAN A Worthy Weapon + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13603] = { -- HUMAN A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13600,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13604] = { + [questKeys.startedBy] = {{32867,32927},nil,{45506}}, + }, + [13607] = { + [questKeys.triggerEnd] = {"Entrance to Celestial Planetarium located",{[zoneIDs.THE_ARCHIVUM]={{60,46.3}},[zoneIDs.ULDUAR]={{-1,-1}}}}, + [questKeys.preQuestSingle] = {13604}, + }, + [13616] = { -- HUMAN The Edge Of Winter + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13600,13603,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13625] = { + [questKeys.objectives] = {{{33229,"Use Thrust on Melee Target"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"},{33272,"Use Charge on vulnerable Charge Target"}}}, + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13627] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {}, + }, + [13631] = { + [questKeys.startedBy] = {{32871},nil,{46052}}, + }, + [13633] = { + [questKeys.preQuestSingle] = {13667}, + }, + [13634] = { + [questKeys.preQuestSingle] = {13668}, + }, + [13662] = { + [questKeys.preQuestSingle] = {7722}, + [questKeys.requiredMinRep] = {59,3000}, + [questKeys.requiredMaxRep] = {59,9000}, + }, + [13663] = { + [questKeys.objectives] = {{{33513,"Black Knight's Gryphon taken"}},nil,{{45121},{45122}}}, + }, + [13664] = { + [questKeys.preQuestSingle] = {13700,13701}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33870}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Cavin"), 0, {{"monster", 33522}}}, + }, + }, + [13665] = { -- HUMAN The Grand Melee + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13745,13750,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33800}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13666] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13669,13670}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + }, + [13669] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13666,13670}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + }, + [13670] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13666,13669}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + }, + [13671] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679}, + [questKeys.parentQuest] = 0, + }, + [13672] = { + [questKeys.childQuests] = {}, + }, + [13673] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13674,13675,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + }, + [13674] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13673,13675,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + }, + [13675] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13673,13674,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + }, + [13676] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13680}, + [questKeys.parentQuest] = 0, + }, + [13677] = { + [questKeys.objectives] = {{{33229,"Use Thrust on Melee Target"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"},{33272,"Use Charge on vulnerable Charge Target"}}}, + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13678] = { + [questKeys.childQuests] = {}, + }, + [13679] = { + [questKeys.objectives] = {{{33448,"Argent Valiant defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire David"), 0, {{"monster", 33447}}}, + }, + }, + [13680] = { + [questKeys.objectives] = {{{33448,"Argent Valiant defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire David"), 0, {{"monster", 33447}}}, + }, + }, + [13681] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {}, + }, + [13682] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13697] = { -- ORC The Valiant's Charge + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13699] = { -- HUMAN The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33800}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13703] = { -- DWARF Valiant Of Ironforge + [questKeys.preQuestSingle] = {13699,13725,13724,13723}, + [questKeys.exclusiveTo] = {13685,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13704] = { -- GNOME Valiant Of Gnomeregan + [questKeys.preQuestSingle] = {13699,13725,13713,13724}, + [questKeys.exclusiveTo] = {13688,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13705] = { -- DRAENEI Valiant Of The Exodar + [questKeys.preQuestSingle] = {13699,13725,13713,13723}, + [questKeys.exclusiveTo] = {13690,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13706] = { -- NIGHT ELF Valiant Of Darnassus + [questKeys.preQuestSingle] = {13699,13724,13713,13723}, + [questKeys.exclusiveTo] = {13689,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13707] = { -- ORC Valiant Of Orgrimmar + [questKeys.preQuestSingle] = {13727,13728,13729,13731}, + [questKeys.exclusiveTo] = {13691,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13708] = { -- TROLL Valiant Of Sen'jin + [questKeys.preQuestSingle] = {13726,13728,13729,13731}, + [questKeys.exclusiveTo] = {13693,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13709] = { -- TAUREN Valiant Of Thunder Bluff + [questKeys.preQuestSingle] = {13726,13727,13729,13731}, + [questKeys.exclusiveTo] = {13694,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13710] = { -- UNDEAD Valiant Of Undercity + [questKeys.preQuestSingle] = {13726,13727,13728,13731}, + [questKeys.exclusiveTo] = {13695,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13711] = { -- BLOOD ELF Valiant Of Silvermoon + [questKeys.preQuestSingle] = {13726,13727,13728,13729}, + [questKeys.exclusiveTo] = {13696,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13713] = { -- DWARF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33795}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13714] = { -- DWARF The Valiant's Charge + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13715] = { -- GNOME The Valiant's Charge + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13716] = { -- DRAENEI The Valiant's Charge + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13717] = { -- NIGHT ELF The Valiant's Charge + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13718] = { -- HUMAN The Valiant's Charge + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13719] = { -- TROLL The Valiant's Charge + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13720] = { -- TAUREN The Valiant's Charge + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13721] = { -- UNDEAD The Valiant's Charge + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13722] = { -- BLOOD ELF The Valiant's Charge + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13723] = { -- GNOME The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33793}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13724] = { -- DRAENEI The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33790}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13725] = { -- NIGHT ELF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13726] = { -- ORC The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33799}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13727] = { -- TROLL The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13728] = { -- TAUREN The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33792}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13729] = { -- UNDEAD The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33798}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13731] = { -- BLOOD ELF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33791}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13741] = { -- DWARF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13742] = { -- DWARF A Worthy Weapon + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13741,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13743] = { -- DWARF The Edge Of Winter + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13741,13742,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13744] = { -- DWARF A Valiant's Field Training + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13592,13749,13755,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13745] = { -- DWARF The Grand Melee + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13665,13750,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33795}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13746] = { -- GNOME A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13747] = { -- GNOME A Worthy Weapon + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13746,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13748] = { -- GNOME The Edge Of Winter + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13746,13747,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13749] = { -- GNOME A Valiant's Field Training + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13592,13744,13755,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13750] = { -- GNOME The Grand Melee + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13665,13745,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33793}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13752] = { -- DRAENEI A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13753] = { -- DRAENEI A Worthy Weapon + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13754] = { -- DRAENEI The Edge Of Winter + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13755] = { -- DRAENEI A Valiant's Field Training + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13592,13744,13749,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13756] = { -- DRAENEI The Grand Melee + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13665,13745,13750,13761}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33790}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13757] = { -- NIGHT ELF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13758] = { -- NIGHT ELF A Worthy Weapon + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13759] = { -- NIGHT ELF The Edge Of Winter + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13760] = { -- NIGHT ELF A Valiant's Field Training + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13592,13744,13749,13755}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13761] = { -- NIGHT ELF The Grand Melee + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13665,13745,13750,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13762] = { -- ORC A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13763] = { -- ORC A Worthy Weapon + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13762,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13764] = { -- ORC The Edge Of Winter + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13762,13763,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13765] = { -- ORC A Valiant's Field Training + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13771,13776,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13767] = { -- ORC The Grand Melee + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13772,13777,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33799}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13768] = { -- TROLL A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13769] = { -- TROLL A Worthy Weapon + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13768,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13770] = { -- TROLL The Edge Of Winter + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13768,13769,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13771] = { -- TROLL A Valiant's Field Training + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13765,13776,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13772] = { -- TROLL The Grand Melee + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13767,13777,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13773] = { -- TAUREN A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13774] = { -- TAUREN A Worthy Weapon + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13773,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13775] = { -- TAUREN The Edge Of Winter + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13773,13774,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13776] = { -- TAUREN A Valiant's Field Training + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13765,13771,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13777] = { -- TAUREN The Grand Melee + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13767,13772,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33792}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13778] = { -- UNDEAD A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13779] = { -- UNDEAD A Worthy Weapon + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13780] = { -- UNDEAD The Edge Of Winter + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13781] = { -- UNDEAD A Valiant's Field Training + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13765,13771,13776,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13782] = { -- UNDEAD The Grand Melee + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13767,13772,13777,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33798}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13783] = { -- BLOOD ELF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13784] = { -- BLOOD ELF A Worthy Weapon + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13785] = { -- BLOOD ELF The Edge Of Winter + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13786] = { -- BLOOD ELF A Valiant's Field Training + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13765,13771,13776,13781}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13787] = { -- BLOOD ELF The Grand Melee + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13767,13772,13777,13782}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33791}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13788] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13789] = { + [questKeys.preQuestSingle] = {13700}, + }, + [13790] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794},{"monster", 33800},{"monster", 33793},{"monster", 33795},{"monster", 33790}}}}, + }, + [13791] = { + [questKeys.preQuestSingle] = {13700}, + }, + [13793] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794},{"monster", 33800},{"monster", 33793},{"monster", 33795},{"monster", 33790}}}}, + }, + [13795] = { + [questKeys.preQuestSingle] = {13702,13732,13733,13734,13735,13736,13737,13738,13739,13740}, + }, + [13809] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13810] = { + [questKeys.preQuestSingle] = {13701}, + }, + [13811] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796},{"monster", 33798},{"monster", 33799},{"monster", 33791},{"monster", 33792}}}}, + }, + [13812] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13813] = { + [questKeys.preQuestSingle] = {13701}, + }, + [13814] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796},{"monster", 33798},{"monster", 33799},{"monster", 33791},{"monster", 33792}}}}, + }, + [13816] = { + [questKeys.triggerEnd] = {"Entrance to Celestial Planetarium located",{[zoneIDs.THE_ARCHIVUM]={{60,46.3}},[zoneIDs.ULDUAR]={{-1,-1}}}}, + [questKeys.preQuestSingle] = {13817}, + }, + [13817] = { + [questKeys.preQuestSingle] = {}, + [questKeys.startedBy] = {{32867,32927},nil,{45857}}, + }, + [13819] = { + [questKeys.startedBy] = {{32871},nil,{46053}}, + }, + [13820] = { + [questKeys.startedBy] = {{33817}}, + [questKeys.finishedBy] = {{33434}}, + [questKeys.exclusiveTo] = {13627}, + }, + [13825] = { + [questKeys.startedBy] = {{8125}}, + [questKeys.finishedBy] = {{8125}}, + -- [questKeys.exclusiveTo] = {6610}, -- This is not ideal. You can only do 13825 if you completed 6610 prior to Wotlk. But now with Wotlk you do 6610 and then can not do 13825 + [questKeys.requiredSkill] = {185,225}, + }, + [13826] = { + [questKeys.startedBy] = {{12919}}, + [questKeys.finishedBy] = {{12919}}, + -- [questKeys.exclusiveTo] = {6607}, -- This is not ideal. You can only do 13826 if you completed 6607 prior to Wotlk. But now with Wotlk you do 6607 and then can not do 13826 + [questKeys.requiredSkill] = {356,225}, + }, + [13828] = { + [questKeys.objectives] = {{{33973,"Jeran Lockwood's advice"},{33229,"Use Thrust on Melee Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13829] = { + [questKeys.objectives] = {{{33973,"Jeran Lockwood's advice"},{33229,"Use Thrust on Melee Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13830] = { + [questKeys.triggerEnd] = {"Discover the Ghostfish mystery",{[zoneIDs.SHOLAZAR_BASIN]={{48.89,62.29,},},},}, + }, + [13832] = { + [questKeys.extraObjectives] = {{{[zoneIDs.THE_UNDERBELLY]={{46,68}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Corroded Jewelry")}}, + }, + [13833] = { + [questKeys.extraObjectives] = {{{[zoneIDs.BOREAN_TUNDRA]={{57.5,33.2},{62.2,64.2},{45,45}}}, Questie.ICON_TYPE_SLAY, l10n("Slay any beast, jump in any water location and fish in the Pool of Blood"), 0}}, + }, + [13834] = { + [questKeys.extraObjectives] = {{{[zoneIDs.WINTERGRASP]={{70,36},{63,60},{50,44},{37.6,36},{56,66},{42,75},{34.7,19.5}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Terror Fish"), 0}}, + }, + [13835] = { + [questKeys.objectives] = {{{33974,"Valis Windchaser's advice"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13836] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DALARAN]={{64,64}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Severed Arm")}}, + }, + [13837] = { + [questKeys.objectives] = {{{33972,"Rugan Steelbelly's advice"},{33272,"Charge vulnerable Charge Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13838] = { + [questKeys.objectives] = {{{33974,"Valis Windchaser's advice"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13839] = { + [questKeys.objectives] = {{{33972,"Rugan Steelbelly's advice"},{33272,"Charge vulnerable Charge Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13843] = { + [questKeys.startedBy] = {nil,{191761}}, + [questKeys.finishedBy] = {nil,{191761}}, + [questKeys.preQuestSingle] = {12889}, + [questKeys.requiredSpell] = -55252, + [questKeys.requiredSkill] = {profKeys.ENGINEERING,400}, + }, + [13846] = { + [questKeys.preQuestSingle] = {13700,13701}, + [questKeys.requiredMaxRep] = {1106,42000}, + }, + [13847] = { -- HUMAN At The Enemy's Gates + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13851,13852,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13850] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Melee attack Venomhide Ravasaur"), 0, {{"monster", 6508}}}}, + }, + [13851] = { -- DWARF At The Enemy's Gates + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13847,13852,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13852] = { -- GNOME At The Enemy's Gates + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13847,13851,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13854] = { -- DRAENEI At The Enemy's Gates + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13847,13851,13852,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13855] = { -- NIGHT ELF At The Enemy's Gates + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13847,13851,13852,13854}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13856] = { -- ORC At The Enemy's Gates + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13857,13858,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13857] = { -- TROLL At The Enemy's Gates + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13856,13858,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13858] = { -- TAUREN At The Enemy's Gates + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13856,13857,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13859] = { -- BLOOD ELF At The Enemy's Gates + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13856,13857,13858,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13860] = { -- UNDEAD At The Enemy's Gates + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13856,13857,13858,13859}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13861] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13862] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13863] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13864] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13887] = { + [questKeys.preQuestSingle] = {13850}, + }, + [13906] = { + [questKeys.preQuestSingle] = {13887}, + }, + [13929] = { + [questKeys.triggerEnd] = {"Roo taken to visit Grizzlemaw", {[zoneIDs.GRIZZLY_HILLS]={{50.7,43.9}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13930] = { + [questKeys.triggerEnd] = {"Keken taken to visit Grizzlemaw", {[zoneIDs.GRIZZLY_HILLS]={{50.7,43.9}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13931] = { + [questKeys.preQuestSingle] = {11409}, + }, + [13932] = { + [questKeys.preQuestSingle] = {11318}, + }, + [13933] = { + [questKeys.triggerEnd] = {"Roo taken to visit Bronze Dragonshrine", {[zoneIDs.DRAGONBLIGHT]={{72,39}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13934] = { + [questKeys.triggerEnd] = {"Keken taken to visit Bronze Dragonshrine", {[zoneIDs.DRAGONBLIGHT]={{72,39}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13937] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Buy a Small Paper Zeppelin"), 0, {{"monster", 29478}}}}, + [questKeys.objectives] = {{{33533,"Throw Small Paper Zeppelin to Roo"},},nil,nil,nil,}, + [questKeys.preQuestGroup] = {13954,13956}, + [questKeys.nextQuestInChain] = 13959, + [questKeys.exclusiveTo] = {13927}, + }, + [13938] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Buy a Small Paper Zeppelin"), 0, {{"monster", 29478}}}}, + [questKeys.objectives] = {{{33532,"Throw Small Paper Zeppelin to Kekek"},},nil,nil,nil,}, + [questKeys.preQuestGroup] = {13955,13957}, + [questKeys.nextQuestInChain] = 13960, + [questKeys.exclusiveTo] = {13926}, + }, + [13950] = { + [questKeys.triggerEnd] = {"Roo taken to visit Winterfin Retreat", {[zoneIDs.BOREAN_TUNDRA]={{43.5,13.6}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13951] = { + [questKeys.triggerEnd] = {"Keken taken to visit Snowfall Glade", {[zoneIDs.DRAGONBLIGHT]={{46,61},{44,70}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13954] = { + [questKeys.triggerEnd] = {"Roo taken to visit Alexstrasza the Life-Binder", {[zoneIDs.DRAGONBLIGHT]={{59.8,54.5}}}}, -- oracle orphan + [questKeys.preQuestGroup] = {13929,13933,13950}, + [questKeys.exclusiveTo] = {13927}, + }, + [13955] = { + [questKeys.triggerEnd] = {"Keken taken to visit Alexstrasza the Life-Binder", {[zoneIDs.DRAGONBLIGHT]={{59.8,54.5}}}}, -- wolvar orphan + [questKeys.preQuestGroup] = {13930,13934,13951}, + [questKeys.exclusiveTo] = {13926}, + }, + [13956] = { + [questKeys.triggerEnd] = {"Roo taken to visit The Etymidian", {[zoneIDs.UN_GORO_CRATER]={{47.38,9.21}}}}, -- oracle orphan + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{40.3,83.3}}}, Questie.ICON_TYPE_EVENT, l10n("Use the waygate to teleport to Un'goro Crater")}}, + [questKeys.preQuestGroup] = {13929,13933,13950}, + [questKeys.exclusiveTo] = {13927}, + }, + [13957] = { + [questKeys.triggerEnd] = {"Keken taken to visit Hemet Nesingwary", {[zoneIDs.SHOLAZAR_BASIN]={{27.1,58.8}}}}, -- wolvar orphan + [questKeys.preQuestGroup] = {13930,13934,13951}, + [questKeys.exclusiveTo] = {13926}, + }, + [13959] = { + [questKeys.preQuestSingle] = {13937}, + [questKeys.exclusiveTo] = {13927}, + }, + [13960] = { + [questKeys.preQuestSingle] = {13938}, + [questKeys.exclusiveTo] = {13926}, + }, + [13966] = { + [questKeys.exclusiveTo] = {11528,13203}, + }, + [14016] = { + [questKeys.specialFlags] = nil, + [questKeys.questFlags] = 128, + [questKeys.objectives] = {nil,nil,nil,nil,{{{35127},35127,"Investigate the Black Knight's Grave"}}}, + }, + [14023] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14024, + }, + [14024] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14028, + [questKeys.preQuestSingle] = {14023}, + }, + [14028] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14030, + [questKeys.preQuestSingle] = {14024}, + }, + [14030] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14033, + [questKeys.preQuestSingle] = {14028}, + }, + [14033] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14035, + [questKeys.preQuestSingle] = {14030}, + }, + [14035] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.preQuestSingle] = {14033}, + }, + [14037] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14040, + }, + [14040] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14041, + [questKeys.preQuestSingle] = {14037}, + }, + [14041] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14043, + [questKeys.preQuestSingle] = {14040}, + }, + [14043] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14044, + [questKeys.preQuestSingle] = {14041}, + }, + [14044] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14047, + [questKeys.preQuestSingle] = {14043}, + }, + [14047] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.preQuestSingle] = {14044}, + }, + [14048] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14051] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14053] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14054] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14055] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14058] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14059] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14060] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14061] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14062] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14064] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14065] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14076] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use your drum near a Mysterious Snow Mound"), 0, {{"object", 195309}}}}, + }, + [14079] = { + [questKeys.requiredRaces] = raceIDs.HUMAN, + }, + [14081] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [14082] = { + [questKeys.requiredRaces] = raceIDs.DRAENEI, + }, + [14083] = { + [questKeys.requiredRaces] = raceIDs.DWARF, + }, + [14084] = { + [questKeys.requiredRaces] = raceIDs.GNOME, + }, + [14085] = { + [questKeys.requiredRaces] = raceIDs.NIGHT_ELF, + }, + [14086] = { + [questKeys.requiredRaces] = raceIDs.ORC, + }, + [14087] = { + [questKeys.requiredRaces] = raceIDs.TAUREN, + }, + [14088] = { + [questKeys.requiredRaces] = raceIDs.TROLL, + }, + [14089] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14090] = { + [questKeys.objectives] = {{{29618,"Snowblind Follower captured"}}}, + }, + [14092] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use your drum near a Mysterious Snow Mound"), 0, {{"object", 195309}}}}, + }, + [14101] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{50.4,15.6}}}, Questie.ICON_TYPE_EVENT, l10n("Summon Drottinn Hrothgar using the Kvaldir War Horn")}}, + }, + [14102] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{43.8,24.6}}}, Questie.ICON_TYPE_EVENT, l10n("Summon Mistcaller Yngvar using the Mistcaller's Charm")}}, + }, + [14103] = { + [questKeys.specialFlags] = 1, + [questKeys.startedBy] = {{28701}}, + [questKeys.finishedBy] = {{28701}}, + }, + [14104] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{58.59,31.72}}}, Questie.ICON_TYPE_EVENT, l10n("Provoke Ornolf the Scarred using the Captured Kvaldir Banner")}}, + }, + [14107] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{32149},32149,"Fallen Hero's Spirit blessed"}}}, + }, + [14108] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 35117}}}}, + [questKeys.objectives] = {{{34925,"Hurl Spears at North Sea Kraken"},{35092}}}, + }, + [14112] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Take chum"), 0, {{"object", 195352}}}}, + }, + [14141] = { + [questKeys.objectives] = {{{29618,"Snowblind Follower captured"}}}, + }, + [14145] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Take chum"), 0, {{"object", 195353}}}}, + }, + [14151] = { + [questKeys.objectives] = {}, + [questKeys.requiredSpell] = -66659, + [questKeys.requiredSkill] = {171,450}, + [questKeys.triggerEnd] = {"Epic Gem Transmutes", {[zoneIDs.DALARAN]={{42.25,32.06}}}}, + }, + [14163] = { + [questKeys.triggerEnd] = {"Victory in the Isle of Conquest", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,11338,13405}, + }, + [14164] = { + [questKeys.triggerEnd] = {"Victory in the Isle of Conquest", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,11342,13407}, + }, + [14178] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14179,14180,13427}, + }, + [14179] = { + [questKeys.triggerEnd] = {"Victory in the Eye of the Storm", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,13427}, + }, + [14180] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,13427}, + }, + [14181] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14182,14183}, + }, + [14182] = { + [questKeys.triggerEnd] = {"Victory in Eye of the Storm", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14181,14183}, + }, + [14183] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14181,14182}, + }, + [14199] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256}, + }, + [14352] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [14349] = { + [questKeys.preQuestGroup] = {6022,6042,6133,6135,6136}, + }, + [14418] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14419] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14420] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14421] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14444] = { + [questKeys.objectives] = {{{27990,"Ask Krasus about the hilt's origins"}}}, + }, + [14483] = { + [questKeys.startedBy] = {{36296},nil,{49641}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [20438] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ask Shandy Glossgleam to lend you a tabard"), 0, {{"monster", 36856}}}}, + }, + [24216] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24221}, + }, + [24217] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 20, + }, + [24218] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24220}, + }, + [24219] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 20, + }, + [24220] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24218}, + }, + [24221] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24216}, + }, + [24223] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24224,24427}, + }, + [24224] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24223,24427}, + }, + [24225] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24226,24426}, + }, + [24226] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24225,24426}, + }, + [24426] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24225,24226}, + }, + [24427] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24223,24224}, + }, + [24428] = { + [questKeys.startedBy] = {{10184},nil,{49644}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24429] = { + [questKeys.startedBy] = {{10184},nil,{49643}}, + }, + [24431] = { + [questKeys.specialFlags] = 1, + }, + [24461] = { + [questKeys.sourceItemId] = 49723, + }, + [24498] = { + [questKeys.objectives] = {{{36494}},nil,nil,nil,{{{36764,36765,36766,36767},36764,"Alliance Slaves freed"}}}, + [questKeys.preQuestSingle] = {24683}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free the slave"), 1, {{"object", 202168}}}}, + }, + [24499] = { + [questKeys.objectives] = {{{36497},{36502}}}, + }, + [24500] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.finishedBy] = {{36955}}, + [questKeys.objectives] = {{{36955,"Find Jaina Proudmoore"},{36954,"Escape the Lich King"}}}, + }, + [24507] = { + [questKeys.objectives] = {{{36494}},nil,nil,nil,{{{36770,36771,36772,36773},36770,"Horde Slaves freed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free the slave"), 1, {{"object", 202168}}}}, + }, + [24510] = { + [questKeys.reputationReward] = {{1050,25}}, + }, + [24511] = { + [questKeys.objectives] = {{{36497},{36502}}}, + }, + [24535] = { + [questKeys.objectives] = {{{37205,"Thalorien's Blessing obtained"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Examine the remains"), 0, {{"monster", 37552}}}}, + }, + [24536] = { + [questKeys.objectives] = {{{3296}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Snagglebolt's Air Analyzer on perfumed guards"), 0, {{"monster", 3296}}}}, + }, + [24541] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab the package"), 0, {{"monster", 37671}}}}, + [questKeys.sourceItemId] = 49867, + }, + [24545] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.DEATH_KNIGHT, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {nil,{201742}}, + [questKeys.nextQuestInChain] = 24743, + [questKeys.requiredMinRep] = {1156,3000}, + }, + [24547] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24743}, + }, + [24548] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24757}, + [questKeys.nextQuestInChain] = 24912, + }, + [24549] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24912}, + [questKeys.nextQuestInChain] = 24748, + }, + [24553] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.requiredSourceItems] = {49879}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24555] = { + [questKeys.objectives] = {{{27990,"Ask Krasus about the hilt's origins"}}}, + }, + [24556] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ask Shandy Glossgleam to lend you a tabard"), 0, {{"monster", 36856}}}}, + }, + [24559] = { + [questKeys.sourceItemId] = 49723, + }, + [24563] = { + [questKeys.objectives] = {{{37205,"Thalorien's Blessing obtained"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Examine the remains"), 0, {{"monster", 37552}}}}, + }, + [24564] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24579] = { + [questKeys.exclusiveTo] = {24580,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24580] = { + [questKeys.exclusiveTo] = {24579,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24581] = { + [questKeys.exclusiveTo] = {24579,24580,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24582] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24583] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24584,24585,24586,24587,24588,24589,24590}, + }, + [24584] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24585,24586,24587,24588,24589,24590}, + }, + [24585] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24586,24587,24588,24589,24590}, + }, + [24586] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24587,24588,24589,24590}, + }, + [24587] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24588,24589,24590}, + }, + [24588] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24589,24590}, + }, + [24589] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24590}, + }, + [24590] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24589}, + }, + [24594] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24595] = { + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.requiredSourceItems] = {49879}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24596] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24597] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24598] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24609] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24610] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24611] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24612] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24613] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24614] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24615] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + -- Hackfix to hide the other two as a available once one of the random three dailies has been accepted + [24629] = { + [questKeys.exclusiveTo] = {24635, 24636}, + }, + [24635] = { + [questKeys.exclusiveTo] = {24629, 24636}, + }, + [24636] = { + [questKeys.exclusiveTo] = {24629, 24635}, + }, + [24638] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24645, 24647, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400048,"Chemical Wagon Destroyed"}},nil,nil,{{{37214},37214}}}, + [questKeys.requiredMaxLevel] = 13, + }, + [24645] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24647, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400049,"Chemical Wagon Destroyed"}},nil,nil,{{{37917},37917}}}, + [questKeys.requiredMaxLevel] = 22, + }, + [24647] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400052,"Chemical Wagon Destroyed"}},nil,nil,{{{37984},37984}}}, + [questKeys.requiredMaxLevel] = 31, + }, + [24648] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400053,"Chemical Wagon Destroyed"}},nil,nil,{{{38006},38006}}}, + [questKeys.requiredMaxLevel] = 40, + }, + [24649] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400054,"Chemical Wagon Destroyed"}},nil,nil,{{{38016},38016}}}, + [questKeys.requiredMaxLevel] = 50, + }, + [24650] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24651, 24652}, + [questKeys.objectives] = {nil,{{400055,"Chemical Wagon Destroyed"}},nil,nil,{{{38023},38023}}}, + [questKeys.requiredMaxLevel] = 60, + }, + [24651] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24650, 24652}, + [questKeys.objectives] = {nil,{{400056,"Chemical Wagon Destroyed"}},nil,nil,{{{38030},38030}}}, + [questKeys.requiredMaxLevel] = 70, + }, + [24652] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24650, 24651}, + [questKeys.objectives] = {nil,{{400057,"Chemical Wagon Destroyed"}},nil,nil,{{{38032},38032}}}, + }, + [24655] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{68,1976},1976}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Snagglebolt's Air Analyzer on perfumed guards"), 0, {{"monster", 68},{"monster", 1976}}}}, + }, + [24656] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab the package"), 0, {{"monster", 38065}}}}, + [questKeys.sourceItemId] = 49867, + }, + [24658] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24659, 24660, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400050,"Chemical Wagon Destroyed"}},nil,nil,{{{37214},37214}}}, + [questKeys.requiredMaxLevel] = 13, + }, + [24659] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24660, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400051,"Chemical Wagon Destroyed"}},nil,nil,{{{37917},37917}}}, + [questKeys.requiredMaxLevel] = 22, + }, + [24660] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400052,"Chemical Wagon Destroyed"}},nil,nil,{{{37984},37984}}}, + [questKeys.requiredMaxLevel] = 31, + }, + [24662] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400053,"Chemical Wagon Destroyed"}},nil,nil,{{{38006},38006}}}, + [questKeys.requiredMaxLevel] = 40, + }, + [24663] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400054,"Chemical Wagon Destroyed"}},nil,nil,{{{38016},38016}}}, + [questKeys.requiredMaxLevel] = 50, + }, + [24664] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24665, 24666}, + [questKeys.objectives] = {nil,{{400055,"Chemical Wagon Destroyed"}},nil,nil,{{{38023},38023}}}, + [questKeys.requiredMaxLevel] = 60, + }, + [24665] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24664, 24666}, + [questKeys.objectives] = {nil,{{400056,"Chemical Wagon Destroyed"}},nil,nil,{{{38030},38030}}}, + [questKeys.requiredMaxLevel] = 70, + }, + [24666] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24664, 24665}, + [questKeys.objectives] = {nil,{{400057,"Chemical Wagon Destroyed"}},nil,nil,{{{38032},38032}}}, + }, + [24683] = { + [questKeys.preQuestSingle] = {24499}, + }, + [24710] = { + [questKeys.preQuestSingle] = {24498}, + }, + [24711] = { + [questKeys.preQuestSingle] = {24710}, + }, + [24743] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24545}, + [questKeys.nextQuestInChain] = 24547, + }, + [24745] = { + [questKeys.startedBy] = {{36296},nil,{50320}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24748] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24549}, + [questKeys.objectives] = {{{36597,"Lich King Defeated"}}}, + }, + [24749] = { + [questKeys.preQuestSingle] = {24547}, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{36678,"Infuse Shadow's Edge with Unholy power then slay Putricide."}}}, + }, + [24756] = { + [questKeys.preQuestSingle] = {24749}, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{37955,"Infuse Shadow's Edge with Blood then defeat Lana'thel."}}}, + }, + [24757] = { + [questKeys.preQuestSingle] = {24756}, + [questKeys.nextQuestInChain] = 24548, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{36853,"Infuse Shadow's Edge with Frost then slay Sindragosa."}}}, + }, + [24792] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + }, + [24793] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + }, + [24795] = { + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24796] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24798] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24799] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24800] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24801] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24802] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.finishedBy] = {{37554}}, + [questKeys.objectives] = {{{37554,"Find Sylvanas Windrunner"},{36954,"Escape the Lich King"}}}, + }, + [24803] = { + [questKeys.specialFlags] = 1, + }, + [24815] = { + [questKeys.requiredMinRep] = {1156,3000}, + }, + [24819] = { -- A Change of Heart - Destruction friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24811}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24820] = { -- A Change of Heart - Vengeance friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24810}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24821] = { -- A Change of Heart - Courage friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24808}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24822] = { -- A Change of Heart - Wisdom friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24809}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24823] = { -- Path of Destruction - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24828,24811}, + }, + [24825] = { -- Path of Wisdom - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24809}, + }, + [24826] = { -- Path of Vengeance - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24810}, + }, + [24827] = { -- Path of Courage - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24808}, + }, + [24828] = { -- Path of Destruction - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24811}, + }, + [24829] = { -- Path of Destruction - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24823,24811}, + }, + [24830] = { -- Path of Wisdom - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24825,24809}, + }, + [24831] = { -- Path of Wisdom - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24830,24809}, + }, + [24832] = { -- Path of Vengeance - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24826,24810}, + }, + [24833] = { -- Path of Vengeance - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24832,24810}, + }, + [24834] = { -- Path of Courage - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24827,24808}, + }, + [24835] = { -- Path of Courage - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24834,24808}, + }, + [24836] = { -- A Change of Heart - Destruction honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24828,24811}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24837] = { -- A Change of Heart - wisdom honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24825,24809}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24838] = { -- A Change of Heart - vengeance honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24826,24810}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24839] = { -- A Change of Heart - courage honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24827,24808}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24840] = { -- A Change of Heart - Destruction revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24823,24811}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24841] = { -- A Change of Heart - Wisdom revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24830,24809}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24842] = { -- A Change of Heart - Vengeance revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24832,24810}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24843] = { -- A Change of Heart - Courage revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24834,24808}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24844] = { -- A Change of Heart - Destruction exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24829,24811}, + }, + [24845] = { -- A Change of Heart - Wisdom exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24831,24809}, + }, + [24846] = { -- A Change of Heart - Vengeance exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24833,24810}, + }, + [24847] = { -- A Change of Heart - Courage exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24835,24808}, + }, + [24857] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24869] = { -- 10man + [questKeys.startedBy] = {{38471}}, + [questKeys.finishedBy] = {{38471}}, + [questKeys.exclusiveTo] = {24870,24871,24872,24873,24874}, + }, + [24870] = { -- 10man + [questKeys.startedBy] = {{38491}}, + [questKeys.finishedBy] = {{38491}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.exclusiveTo] = {24869,24872,24873,24874}, + }, + [24871] = { -- 10man + [questKeys.startedBy] = {{38492}}, + [questKeys.finishedBy] = {{38492}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.exclusiveTo] = {24869,24872,24873,24874}, + }, + [24872] = { -- 10man + [questKeys.startedBy] = {{38589}}, + [questKeys.finishedBy] = {{38017}}, + [questKeys.exclusiveTo] = {24869,24870,24871,24873,24874}, + }, + [24873] = { -- 10man + [questKeys.startedBy] = {{38501}}, + [questKeys.finishedBy] = {{38501}}, + [questKeys.objectives] = {{{38501,"Return with two strains of Blight"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Slime Spray to get the Green Blight strain"), 0, {{"monster", 36627}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Gaseous Blight to get the Orange Blight strain"), 0, {{"monster", 36626}}}, + }, + [questKeys.exclusiveTo] = {24869,24870,24871,24872,24874}, + }, + [24874] = { -- 10man + [questKeys.startedBy] = {{38551}}, + [questKeys.finishedBy] = {{38558}}, + [questKeys.exclusiveTo] = {24869,24870,24871,24872,24873}, + }, + [24875] = { -- 25man + [questKeys.startedBy] = {{38471}}, + [questKeys.finishedBy] = {{38471}}, + [questKeys.exclusiveTo] = {24876,24877,24878,24879,24880}, + }, + [24876] = { -- 25man + [questKeys.startedBy] = {{38492}}, + [questKeys.finishedBy] = {{38492}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.exclusiveTo] = {24875,24878,24879,24880}, + }, + [24877] = { -- 25man + [questKeys.startedBy] = {{38491}}, + [questKeys.finishedBy] = {{38491}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.exclusiveTo] = {24875,24878,24879,24880}, + }, + [24878] = { -- 25man + [questKeys.startedBy] = {{38501}}, + [questKeys.finishedBy] = {{38501}}, + [questKeys.objectives] = {{{38501,"Return with two strains of Blight"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Slime Spray to get the Green Blight strain"), 0, {{"monster", 36627}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Gaseous Blight to get the Orange Blight strain"), 0, {{"monster", 36626}}}, + }, + [questKeys.exclusiveTo] = {24875,24876,24877,24879,24880}, + }, + [24879] = { -- 25man + [questKeys.startedBy] = {{38551}}, + [questKeys.finishedBy] = {{38558}}, + [questKeys.exclusiveTo] = {24875,24876,24877,24878,24880}, + }, + [24880] = { -- 25man + [questKeys.startedBy] = {{38589}}, + [questKeys.finishedBy] = {{38017}}, + [questKeys.exclusiveTo] = {24875,24876,24877,24878,24879}, + }, + [24912] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24548}, + [questKeys.nextQuestInChain] = 24549, + }, + [24914] = { + [questKeys.startedBy] = {{36597},nil,{53135}}, + [questKeys.preQuestSingle] = {24549}, + }, + [24915] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24916] = { + [questKeys.startedBy] = {{38606}}, + [questKeys.finishedBy] = {{38606}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24917] = { + [questKeys.startedBy] = {{38607}}, + [questKeys.finishedBy] = {{38607}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24918] = { + [questKeys.startedBy] = {{38609}}, + [questKeys.finishedBy] = {{38609}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24919] = { + [questKeys.startedBy] = {{38608}}, + [questKeys.finishedBy] = {{38608}}, + [questKeys.preQuestSingle] = {24914}, + }, + [25199] = { + [questKeys.preQuestSingle] = {25229}, + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.objectives] = {{{39368,"Salute the Drill Sergeant"},{39368,"Roar with the Drill Sergeant"},{39368,"Cheer with the Drill Sergeant"},{39368,"Dance with the Drill Sergeant"}}}, + }, + [25212] = { + [questKeys.startedBy] = {{39386}}, + [questKeys.finishedBy] = {{39386}}, + [questKeys.preQuestSingle] = {25199}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Board the Flying Machine"), 0, {{"monster", 39396}}}}, + }, + [25229] = { + [questKeys.requiredLevel] = 1, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39253,39623},39623,"Gnomes Motivated"},{{39624,39466,39675},39466,"Motivated Gnomes Brought to Captain Sparknozzle"}}}, + }, + [25239] = { -- Path of Might - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,25238}, + }, + [25240] = { -- Path of Might - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25239,25238}, + }, + [25242] = { -- Path of Might - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25240,25238}, + }, + [25246] = { -- A Change of Heart - might exalted - aronen + [questKeys.preQuestGroup] = {25242,25238}, + }, + [25247] = { -- A Change of Heart - might friendly - aronen + [questKeys.preQuestGroup] = {24815,25238}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [25248] = { -- A Change of Heart - might honored - aronen + [questKeys.preQuestGroup] = {25238,25239}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [25249] = { -- A Change of Heart - might revered - aronen + [questKeys.preQuestGroup] = {25240,25238}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [25283] = { + [questKeys.startedBy] = {{39678}}, + [questKeys.finishedBy] = {{39678}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25212,25295}, + [questKeys.nextQuestInChain] = 25500, + }, + [25285] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25199}, + [questKeys.nextQuestInChain] = 25289, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39715}}}}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39682,39715},39715,"Ejection System Tested"}}}, + }, + [25286] = { + [questKeys.preQuestSingle] = {25283}, + [questKeys.exclusiveTo] = {25500}, + [questKeys.questLevel] = -1, + }, + [25287] = { + [questKeys.questLevel] = -1, + }, + [25289] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25285}, + [questKeys.nextQuestInChain] = 25295, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39716}}}}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39713,39716},39716,"Left Leg Servos Tested"},{{39713,39716},39716,"Right Leg Servos Tested"},{{39713,39716},39716,"Evasive Maneuver System Tested"}}}, + }, + [25295] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25289}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39717}}}}, + [questKeys.objectives] = {{{39711,"Weapon System Tested"}}}, + }, + [25393] = { + [questKeys.requiredLevel] = 75, + [questKeys.questLevel] = -1, + }, + [25444] = { -- Da Perfect Spies + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Attune a Captured Frog"), 0, {{"monster", 40187}}}}, + }, + [25445] = { -- Zalazane's Fall + [questKeys.objectives] = {{{40502,"Zalazane Killed"}}}, + [questKeys.requiredLevel] = 75, + [questKeys.questLevel] = -1, + }, + [25446] = { -- Frogs Away! + [questKeys.nextQuestInChain] = 25461, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek and deploy the frogs on the white smoke"), 0, {{"monster", 40204}}}}, + }, + [25461] = { -- Trollin' For Volunteers + [questKeys.preQuestSingle] = {25446}, + [questKeys.nextQuestInChain] = 25470, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek for a ride"), 0, {{"monster", 40204}}}}, + }, + [25470] = { -- Lady Of Da Tigers + [questKeys.preQuestSingle] = {25461}, + }, + [25480] = { -- Dance Of De Spirits + [questKeys.nextQuestInChain] = 25495, + [questKeys.objectives] = {{{40352,"Dance of the Spirits"}}}, + }, + [25495] = { -- Preparin' For Battle + [questKeys.preQuestSingle] = {25480}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek for a ride"), 0, {{"monster", 40204}}}}, + }, + [25500] = { + [questKeys.preQuestSingle] = {25283}, + [questKeys.requiredMaxLevel] = 74, + [questKeys.exclusiveTo] = {25286}, + [questKeys.nextQuestInChain] = 25287, + }, + [26034] = { + [questKeys.preQuestSingle] = {26013}, + }, + [64845] = { + [questKeys.triggerEnd] = {"Victory in a battleground match", { + [zoneIDs.ALTERAC_MOUNTAINS] = {{39.4,82.2}}, + [zoneIDs.ARATHI_HIGHLANDS] = {{45.6,45.8}}, + [zoneIDs.ASHENVALE] = {{61.8,83.8}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + }, + + ----- Boosted character quests ----- + [70395] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Meet with your class trainer in Stormwind."}, + [questKeys.zoneOrSort] = 1519, + }, + [70396] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Meet with your class trainer in Orgrimmar."}, + [questKeys.zoneOrSort] = 1637, + }, + [70397] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400009, "Open the Survival Kit"}, {400010, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70398] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400011, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70401] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70411] = { + [questKeys.name] = "To the Dockmaster", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{26546,26548},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Use a scroll of teleportation from your inventory to reach the harbor and speak to the dock master."}, + [questKeys.requiredSourceItems] = {199335,199336}, + [questKeys.zoneOrSort] = 150, + }, + [70734] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400001, "Open the Survival Kit"}, {400002, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70735] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400005, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70736] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70737] = { + [questKeys.name] = "To the Zeppelin Master", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{26537,26539},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Use a scroll of teleportation from your inventory to reach the zeppelin tower and speak to the zeppelin master."}, + [questKeys.requiredSourceItems] = {199777,199778}, + [questKeys.zoneOrSort] = 1637, + }, + [70761] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400003, "Open the Survival Kit"}, {400004, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70762] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Meet with your Druid trainer in Thunder Bluff."}, + [questKeys.zoneOrSort] = 1638, + }, + [70764] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400006, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70765] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400008, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70865] = { + [questKeys.name] = "To Shattrath City", + [questKeys.startedBy] = {{376,914,928,3036,3324,3328,3344,3406,5495,5497,5505,5515,5885,5994,13283,20407,23128},nil,nil}, + [questKeys.finishedBy] = {{19684},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Shattrath City and speak to the mysterious Haggard War Veteran."}, + [questKeys.requiredSourceItems] = {200068}, + [questKeys.zoneOrSort] = 3897, + }, + [70869] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70870] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78136] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Meet with your class trainer in Stormwind."}, + [questKeys.zoneOrSort] = 1519, + }, + [78137] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Meet with your class trainer in Orgrimmar."}, + [questKeys.zoneOrSort] = 1637, + }, + [78138] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Meet with your Druid trainer in Thunder Bluff."}, + [questKeys.zoneOrSort] = 1638, + }, + [78140] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400009, "Open the Survival Kit"}, {400010, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78151] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400001, "Open the Survival Kit"}, {400002, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [78157] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400011, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78158] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400006, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [78164] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78166] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{26673},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Modera."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78167] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [78168] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil,nil}, + [questKeys.finishedBy] = {{26471},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Aethas Sunreaver."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78219] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Meet with your Death Knight trainer in Acherus: The Ebon Hold."}, + [questKeys.zoneOrSort] = 4281, + }, + [78220] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400062, "Open the Survival Kit"}, {400063, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78221] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400064, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78222] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400061, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78223] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{26673},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Modera."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78224] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400061, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78225] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{26471},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Aethas Sunreaver."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78752] = { + [questKeys.name] = "Proof of Demise: Titan Rune Protocol Gamma", + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"The Lich King's presence mustn't extend any further!","","The Council of Six has decreed that any strong enough fighter should take up arms and aid in keeping Azeroth safe!"}, + [questKeys.objectives] = {nil,nil,{{211206}}}, + [questKeys.zoneOrSort] = 4395, + [questKeys.questFlags] = 4232, + [questKeys.specialFlags] = 1, + [questKeys.reputationReward] = {{factionIDs.KIRIN_TOR,75}}, + }, + [78753] = { + [questKeys.name] = "Proof of Demise: Threats to Azeroth", + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"We must continue putting pressure on all fronts!","","The Council of Six has decreed that any willing fighter should take up arms and aid in keeping Azeroth safe!"}, + [questKeys.objectives] = {nil,nil,{{211207}}}, + [questKeys.zoneOrSort] = 4395, + [questKeys.questFlags] = 4232, + [questKeys.specialFlags] = 1, + [questKeys.reputationReward] = {{factionIDs.KIRIN_TOR,75}}, + }, + } +end + +function _QuestieWotlkQuestFixes:InsertMissingQuestIds() + + -- Alliance boosted quests + QuestieDB.questData[70395] = {} -- A New Beginning + QuestieDB.questData[70397] = {} -- Tools for Survival + QuestieDB.questData[70398] = {} -- Combat Training + QuestieDB.questData[70401] = {} -- Talented + QuestieDB.questData[70411] = {} -- To the Dockmaster + QuestieDB.questData[70870] = {} -- Talented + QuestieDB.questData[78136] = {} -- A New Beginning + QuestieDB.questData[78140] = {} -- Tools for Survival + QuestieDB.questData[78157] = {} -- Combat Training + QuestieDB.questData[78164] = {} -- Talented + QuestieDB.questData[78166] = {} -- To Northrend + QuestieDB.questData[78222] = {} -- Talented DK + QuestieDB.questData[78223] = {} -- To Northrend DK + + -- Horde boosted quests + QuestieDB.questData[70396] = {} -- A New Beginning + QuestieDB.questData[70734] = {} -- Tools for Survival + QuestieDB.questData[70735] = {} -- Combat Training + QuestieDB.questData[70736] = {} -- Talented + QuestieDB.questData[70737] = {} -- To the Zeppelin Master + QuestieDB.questData[70761] = {} -- Tools for Survival + QuestieDB.questData[70762] = {} -- A New Beginning + QuestieDB.questData[70764] = {} -- Combat Training + QuestieDB.questData[70765] = {} -- Talented + QuestieDB.questData[70869] = {} -- Talented + QuestieDB.questData[78137] = {} -- A New Beginning + QuestieDB.questData[78138] = {} -- A New Beginning + QuestieDB.questData[78151] = {} -- Tools for Survival + QuestieDB.questData[78158] = {} -- Combat Training + QuestieDB.questData[78167] = {} -- Talented + QuestieDB.questData[78168] = {} -- To Northrend + QuestieDB.questData[78224] = {} -- Talented DK + QuestieDB.questData[78225] = {} -- To Northrend DK + + -- Neutral boosted quests + QuestieDB.questData[70865] = {} -- To Shattrath City + QuestieDB.questData[78219] = {} -- A New Beginning + QuestieDB.questData[78220] = {} -- Tools for Survival + QuestieDB.questData[78221] = {} -- Combat Training + + -- P4 quests + QuestieDB.questData[78752] = {} -- Proof of Demise: Titan Rune Protocol Gamma + QuestieDB.questData[78753] = {} -- Proof of Demise: Threats to Azeroth +end diff --git a/.history/Database/Corrections/wotlkQuestFixes_20260222031841.lua b/.history/Database/Corrections/wotlkQuestFixes_20260222031841.lua new file mode 100644 index 0000000..3531e68 --- /dev/null +++ b/.history/Database/Corrections/wotlkQuestFixes_20260222031841.lua @@ -0,0 +1,7088 @@ +---@class QuestieWotlkQuestFixes +local QuestieWotlkQuestFixes = QuestieLoader:CreateModule("QuestieWotlkQuestFixes") +local _QuestieWotlkQuestFixes = {} + +---@type QuestieDB +local QuestieDB = QuestieLoader:ImportModule("QuestieDB") +---@type ZoneDB +local ZoneDB = QuestieLoader:ImportModule("ZoneDB") +---@type QuestieProfessions +local QuestieProfessions = QuestieLoader:ImportModule("QuestieProfessions") +---@type QuestieCorrections +local QuestieCorrections = QuestieLoader:ImportModule("QuestieCorrections") +---@type l10n +local l10n = QuestieLoader:ImportModule("l10n") + + +QuestieCorrections.killCreditObjectiveFirst[11652] = true +QuestieCorrections.killCreditObjectiveFirst[12100] = true +QuestieCorrections.killCreditObjectiveFirst[12546] = true +QuestieCorrections.killCreditObjectiveFirst[12561] = true +QuestieCorrections.killCreditObjectiveFirst[12762] = true +QuestieCorrections.killCreditObjectiveFirst[12919] = true +QuestieCorrections.killCreditObjectiveFirst[13086] = true +QuestieCorrections.killCreditObjectiveFirst[13373] = true +QuestieCorrections.killCreditObjectiveFirst[13376] = true +QuestieCorrections.killCreditObjectiveFirst[13380] = true +QuestieCorrections.killCreditObjectiveFirst[13382] = true +QuestieCorrections.killCreditObjectiveFirst[13404] = true +QuestieCorrections.killCreditObjectiveFirst[13406] = true +QuestieCorrections.killCreditObjectiveFirst[24498] = true +QuestieCorrections.killCreditObjectiveFirst[24507] = true + +function QuestieWotlkQuestFixes:Load() + _QuestieWotlkQuestFixes:InsertMissingQuestIds() + + local questKeys = QuestieDB.questKeys + local raceIDs = QuestieDB.raceKeys + local classIDs = QuestieDB.classKeys + local factionIDs = QuestieDB.factionIDs + local zoneIDs = ZoneDB.zoneIDs + local sortKeys = QuestieDB.sortKeys + local profKeys = QuestieProfessions.professionKeys + local specKeys = QuestieProfessions.specializationKeys + + return { + [55] = { + [questKeys.objectives] = {{{1200}}}, + }, + [75] = { + [questKeys.specialFlags] = 0, + }, + [171] = { + [questKeys.startedBy] = {{14305},nil,nil}, + [questKeys.questLevel] = -1, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [172] = { + [questKeys.questLevel] = -1, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [176] = { + [questKeys.startedBy] = {nil,{68,156561}}, + }, + [236] = { + [questKeys.finishedBy] = {{31108}}, + [questKeys.exclusiveTo] = {13153,13154,13156,13195,13196,13197,13198}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [403] = { + [questKeys.startedBy] = {nil,{269}}, + }, + [434] = { + [questKeys.triggerEnd] = {"Overhear Lescovar and Marzon's Conversation", {[zoneIDs.STORMWIND_CITY]={{72.22,35.37}}}}, + }, + [508] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [558] = { + [questKeys.questLevel] = -1, + [questKeys.parentQuest] = 0, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [648] = { + [questKeys.triggerEnd] = {"Escort OOX-17/TN to safety", {[zoneIDs.TANARIS]={{61,53}}}}, + }, + [768] = { + [questKeys.requiredSkill] = {393,1}, + }, + [836] = { + [questKeys.triggerEnd] = {"Escort OOX-09/HL to safety", {[zoneIDs.THE_HINTERLANDS]={{57.81,50.2}}}}, + }, + [910] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [911] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [915] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [925] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1056] = { + [questKeys.nextQuestInChain] = 1057, + }, + [1132] = { + [questKeys.startedBy] = {{4455}}, + [questKeys.finishedBy] = {{4456}}, + }, + [1135] = { + [questKeys.startedBy] = {{4456}}, + [questKeys.finishedBy] = {{4456}}, + }, + [1198] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1252] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1253] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1284] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1361] = { + [questKeys.startedBy] = {{2229,4485,10540}}, + }, + [1468] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1479] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1558] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1678] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1679] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1680] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1681] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1682] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1687] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1716] = { + [questKeys.preQuestSingle] = {}, + }, + [1800] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1885] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [2204] = { + [questKeys.startedBy] = {nil,{112877}}, + }, + [2279] = { + [questKeys.preQuestSingle] = {2278}, + }, + [2358] = { + [questKeys.startedBy] = {{7009}}, + }, + [2701] = { + [questKeys.finishedBy] = {nil,{141980}}, + }, + [2767] = { + [questKeys.triggerEnd] = {"Escort OOX-22/FE to safety", {[zoneIDs.FERALAS]={{55.63,51.35}}}}, + }, + [2879] = { + [questKeys.requiredSourceItems] = {9255,9256,9257,9258}, + }, + [3602] = { + [questKeys.requiredSourceItems] = {}, + }, + [3641] = { + [questKeys.preQuestSingle] = {}, + }, + [3763] = { + [questKeys.startedBy] = {{6735}}, + [questKeys.exclusiveTo] = {3789,3790}, + }, + [3789] = { + [questKeys.startedBy] = {{6740}}, + [questKeys.exclusiveTo] = {3763,3790}, + }, + [3790] = { + [questKeys.startedBy] = {{5111}}, + [questKeys.exclusiveTo] = {3763,3789}, + }, + [4127] = { + [questKeys.startedBy] = {nil,{164909,186419}}, + }, + [4144] = { + [questKeys.specialFlags] = nil, + }, + [4362] = { + [questKeys.preQuestSingle] = {4361}, + }, + [4363] = { + [questKeys.preQuestSingle] = {4362}, + }, + [4485] = { + [questKeys.startedBy] = {{6179}}, + }, + [4486] = { + [questKeys.startedBy] = {{5149}}, + }, + [4740] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [4763] = { + [questKeys.objectives] = {nil,nil,{{12355}}}, + }, + [4771] = { + [questKeys.preQuestSingle] = {5522}, + }, + [4822] = { + [questKeys.questLevel] = -1, + [questKeys.parentQuest] = 0, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [5057] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [5305] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5306] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5307] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5502] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + [questKeys.preQuestGroup] = {915,925}, + }, + [5505] = { + [questKeys.startedBy] = {{11056}}, + [questKeys.finishedBy] = {{11056}}, + }, + [5531] = { + [questKeys.nextQuestInChain] = nil, + }, + [5721] = { + [questKeys.extraObjectives] = {{{[zoneIDs.EASTERN_PLAGUELANDS]={{35.01,84.05}}}, Questie.ICON_TYPE_EVENT, l10n("Place the Relic Bundle in the Town Square."),}}, + }, + [6185] = { + [questKeys.triggerEnd] = {"The Blightcaller Uncovered", {[zoneIDs.EASTERN_PLAGUELANDS]={{23.4,67.8}}}}, + }, + [6521] = { + [questKeys.startedBy] = {{36273}}, + [questKeys.finishedBy] = {{36273}}, + }, + [6522] = { + [questKeys.startedBy] = {{4421},nil,{17008}}, + [questKeys.finishedBy] = {{36273}}, + }, + [6963] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [6983] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [7023] = { + [questKeys.startedBy] = {{13435,23010}}, + }, + [7042] = { + [questKeys.startedBy] = {{13433}}, + }, + [7641] = { + [questKeys.preQuestSingle] = {7638,7670}, + }, + [7643] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {7642,7648}, + }, + [7704] = { + [questKeys.startedBy] = {nil,{179832},{18950}}, + }, + [8149] = { + [questKeys.objectives] = {nil,{{180204,"Place a tribute at Uther's Tomb"}}}, + [questKeys.extraObjectives] = {}, + }, + [8150] = { + [questKeys.objectives] = {nil,{{180205,"Place a tribute at Grom's Monument"}}}, + [questKeys.extraObjectives] = {}, + }, + [8166] = { + [questKeys.requiredMaxLevel] = 49, + }, + [8167] = { + [questKeys.requiredMaxLevel] = 39, + }, + [8168] = { + [questKeys.requiredMaxLevel] = 29, + }, + [8169] = { + [questKeys.requiredMaxLevel] = 49, + }, + [8170] = { + [questKeys.requiredMaxLevel] = 39, + }, + [8171] = { + [questKeys.requiredMaxLevel] = 29, + }, + [8346] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{15274},15274,"Mana Tap creature"}}}, + }, + [8551] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8552] = { + [questKeys.specialFlags] = 0, + }, + [8553] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8554] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8746] = { + [questKeys.objectives] = {{{15664,"Find Metzen the Reindeer and rescue him"}},nil,{{21211}}}, + }, + [8762] = { + [questKeys.objectives] = {{{15664,"Find Metzen the Reindeer and rescue him"}},nil,{{21211}}}, + }, + [8767] = { + [questKeys.requiredClasses] = classIDs.ROGUE + classIDs.WARRIOR + classIDs.HUNTER + classIDs.PALADIN + classIDs.DEATH_KNIGHT, + }, + [8871] = { + [questKeys.startedBy] = {}, + }, + [8872] = { + [questKeys.startedBy] = {}, + }, + [8874] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.startedBy] = {}, + }, + [8875] = { + [questKeys.startedBy] = {}, + }, + [8892] = { + [questKeys.preQuestSingle] = {}, + }, + [9078] = { + [questKeys.requiredClasses] = classIDs.ROGUE, + }, + [9154] = { + [questKeys.startedBy] = {{16241,16255}}, + [questKeys.finishedBy] = {{16281}}, + [questKeys.questLevel] = -1, + }, + [9189] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [9211] = { + [questKeys.specialFlags] = 1, + }, + [9213] = { + [questKeys.specialFlags] = 1, + }, + [9221] = { + [questKeys.specialFlags] = 1, + }, + [9222] = { + [questKeys.specialFlags] = 1, + }, + [9223] = { + [questKeys.specialFlags] = 1, + }, + [9224] = { + [questKeys.specialFlags] = 1, + }, + [9225] = { + [questKeys.specialFlags] = 1, + }, + [9226] = { + [questKeys.specialFlags] = 1, + }, + [9227] = { + [questKeys.specialFlags] = 1, + }, + [9228] = { + [questKeys.specialFlags] = 1, + }, + [9247] = { + [questKeys.finishedBy] = {{16281}}, + }, + [9358] = { + [questKeys.exclusiveTo] = {9252}, + }, + [9361] = { + [questKeys.requiredSourceItems] = {23270}, + }, + [9425] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [9467] = { + [questKeys.sourceItemId] = 24335, + [questKeys.requiredSourceItems] = {23682,24335}, + }, + [9629] = { + [questKeys.objectives] = {{{17326}}}, + }, + [9648] = { + [questKeys.name] = "Maatparm Mushroom Menagerie", + [questKeys.objectivesText] = {"Maatparm at Blood Watch wants 1 Aquatic Stinkhorn, 1 Blood Mushroom, 1 Ruinous Polyspore, and 1 Fel Cone Fungus."}, + }, + [9681] = { + [questKeys.startedBy] = {{17717,17718}}, + }, + [9876] = { + [questKeys.nextQuestInChain] = 9738, + }, + [10110] = { + [questKeys.preQuestSingle] = {13409}, + }, + [10173] = { + [questKeys.requiredSourceItems] = {}, + }, + [10180] = { + [questKeys.nextQuestInChain] = 10097, + }, + [10445] = { + [questKeys.exclusiveTo] = {13432}, + }, + [10464] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10465] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10466] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10467] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10468] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10469] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10470] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10471] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10472] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10473] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10474] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10475] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10667] = { + [questKeys.preQuestSingle] = {}, + }, + [10670] = { + [questKeys.preQuestSingle] = {}, + }, + [10702] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{21864,21878,21879,23020,21978},21978,},},}, + }, + [10703] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{21864,21878,21879,23020,21978},21978,},},}, + }, + [10769] = { + [questKeys.objectives] = {{{19823}},nil,{{31108}}}, + }, + [10776] = { + [questKeys.objectives] = {{{19823}},nil,{{31310}}}, + }, + [10888] = { + [questKeys.exclusiveTo] = {13430}, + }, + [10900] = { + [questKeys.requiredMaxLevel] = 70, + }, + [10901] = { + [questKeys.exclusiveTo] = {13431}, + }, + [10958] = { + [questKeys.preQuestSingle] = {10949}, + }, + [10985] = { + [questKeys.exclusiveTo] = {13429}, + }, + [11010] = { + [questKeys.requiredClasses] = classIDs.WARLOCK + classIDs.ROGUE + classIDs.MAGE + classIDs.PRIEST + classIDs.WARRIOR + classIDs.PALADIN + classIDs.HUNTER + classIDs.SHAMAN + classIDs.DEATH_KNIGHT, + }, + [11117] = { + [questKeys.startedBy] = {{23486}}, + [questKeys.finishedBy] = {{23486}}, + }, + [11118] = { + [questKeys.startedBy] = {{23486}}, + [questKeys.finishedBy] = {{23486}}, + }, + [11120] = { + [questKeys.startedBy] = {{24657}}, + [questKeys.finishedBy] = {{24657}}, + }, + [11122] = { + [questKeys.objectives] = {{{24468,"Kegs Delivered"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab a keg"), 0, {{"monster", 24364}}}}, + }, + [11137] = { + [questKeys.preQuestSingle] = {}, + }, + [11140] = { + [questKeys.requiredSourceItems] = {33040,33044}, + }, + [11153] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HOWLING_FJORD]={{28.1,42.2}}}, Questie.ICON_TYPE_EVENT, l10n("Wait for Harrowmeiser's zeppelin to dock"),}}, + }, + [11154] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Throw the firecrackers up to 20 yards away underneath a darkclaw bat to scare it"), 0, {{"monster", 23959}}}}, + }, + [11157] = { + [questKeys.objectives] = {{{23777,"Proto-Drake Egg destroyed"}},nil,nil,nil,{{{23688,23750},23688}}}, + }, + [11170] = { + [questKeys.objectives] = {{{24120,"North Fleet Reservist Infected"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Bat Handler Camille"), 0, {{"monster", 23816}}}}, + }, + [11175] = { + [questKeys.exclusiveTo] = {11176}, + }, + [11231] = { + [questKeys.sourceItemId] = 33284, + }, + [11238] = { + [questKeys.sourceItemId] = 33282, + }, + [11241] = { + [questKeys.triggerEnd] = {"Rescue Apothecary Hanes",{[zoneIDs.HOWLING_FJORD]={{78.72,37.23,},},},}, + }, + [11245] = { + [questKeys.requiredSourceItems] = {33311}, + }, + [11246] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23661,23662,23663,23664,23665,23666,23667,23668,23669,23670},23661,"Winterskorn Vrykul Dismembered"}}}, + [questKeys.requiredSourceItems] = {33311}, + }, + [11247] = { + [questKeys.requiredSourceItems] = {33311}, + }, + [11249] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Present the Vrykul Scroll of Ascension"), 0, {{"object", 186586}}}}, + }, + [11252] = { + [questKeys.preQuestSingle] = {}, + }, + [11257] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23661,23662,23663,23664,23665,23666,23667,23668,23669,23670},23661,"Winterskorn Vrykul Dismembered"}}}, + [questKeys.requiredSourceItems] = {33340}, + }, + [11258] = { + [questKeys.requiredSourceItems] = {33340}, + }, + [11259] = { + [questKeys.requiredSourceItems] = {33340}, + }, + [11260] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Present the Vrykul Scroll of Ascension"), 0, {{"object", 186586}}}}, + }, + [11265] = { + [questKeys.sourceItemId] = 33284, + }, + [11267] = { + [questKeys.sourceItemId] = 33282, + }, + [11279] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Spray Proto-Drake Egg"), 0, {{"monster", 23777}}}}, + }, + [11280] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Place Tillinghast's Plagued Meat on the ground"), 0, {{"monster", 24170}}}}, + }, + [11281] = { + [questKeys.objectives] = {{{24173}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Carved Horn"), 0, {{"object", 186599}}}}, + }, + [11282] = { + [questKeys.objectives] = {{{24161,"Oric the Baleful's Corpse Impaled"},{24016,"Ulf the Bloodletter's Corpse Impaled"},{24162,"Gunnar Thorvardsson's Corpse Impaled"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Slay Vrykul across the Forsaken blockade until they appear"), 0, {{"monster", 24015}}}}, + }, + [11284] = { + [questKeys.sourceItemId] = 33352, + }, + [11286] = { + [questKeys.preQuestSingle] = {}, + }, + [11296] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Break Riven Widow Cocoons to free captives"), 0, {{"monster", 24210}}}}, + }, + [11297] = { + [questKeys.nextQuestInChain] = 11298, + }, + [11298] = { + [questKeys.preQuestSingle] = {}, + }, + [11300] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill gladiators at the Ring of Judgement until Oluf the Violent appears"), 0, {{"monster", 24213},{"monster", 24214},{"monster", 24215}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Oluf the Violent"), 0, {{"monster", 23931}}} + }, + }, + [11301] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Use Grick's Bonesaw on corpses of Deranged Explorers"), 0, {{"monster", 23967}}}}, + }, + [11302] = { + [questKeys.preQuestSingle] = {11284}, + }, + [11306] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Fill the Empty Apothecary's Flask at the Cauldron of Vrykul Blood"),0,{{"object", 186656}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mix the Flask of Vrykul Blood with Harris's Plague Samples"),1,{{"object", 186657}}}, + }, + }, + [11307] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23564,24198,24199},23564,"Plagued Vrykul Sprayed"}}}, + }, + [11310] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23564,24198,24199},23564,"Plagued Vrykul exterminated"}}}, + }, + [11314] = { + [questKeys.objectives] = {{{23678,"Chill Nymphs Freed"}}}, + }, + [11317] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Meditate"), 0, {{"object", 186649}}}}, + }, + [11318] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{80001},{80002},{80003}}}, + }, + [11319] = { + [questKeys.objectives] = {{{23876,"Spores frozen"}}}, + }, + [11322] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Meditate"), 0, {{"object", 186649}}}}, + }, + [11329] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Search for Northern Barbfish"), 0, {{"object", 186659}}}}, + }, + [11332] = { + [questKeys.sourceItemId] = 33634, + [questKeys.preQuestSingle] = {11331}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Get a gryphon to ride and some bombs"), 0, {{"monster", 23859}}}}, + }, + [11335] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.exclusiveTo] = {11336,11337,11338,13405,14163}, + [questKeys.questFlags] = 4226, + }, + [11336] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.exclusiveTo] = {11335,11337,11338,13405,14163}, + }, + [11337] = { + [questKeys.triggerEnd] = {"Victory in the Eye of the Storm", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11338,13405,14163}, + }, + [11338] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,13405,14163}, + }, + [11339] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11340,11341,11342,13407,14164}, + }, + [11340] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11341,11342,13407,14164}, + }, + [11341] = { + [questKeys.triggerEnd] = {"Victory in Eye of the Storm", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11342,13407,14164}, + }, + [11342] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,13407,14164}, + }, + [11343] = { + [questKeys.triggerEnd] = {"Secrets of Wyrmskull Uncovered",{[zoneIDs.HOWLING_FJORD]={{60.13,50.8,},},},}, + }, + [11344] = { + [questKeys.triggerEnd] = {"Secrets of Nifflevar Uncovered",{[zoneIDs.HOWLING_FJORD]={{69.04,54.79,},},},}, + }, + [11346] = { + [questKeys.preQuestSingle] = {11284}, + [questKeys.sourceItemId] = 33778, + }, + [11348] = { + [questKeys.objectives] = {{{23725,"Test Rune of Command on normal Stone Giants"},{24334}}}, + }, + [11350] = { + [questKeys.sourceItemId] = 33778, + }, + [11352] = { + [questKeys.objectives] = {{{23725,"Test Rune of Command on normal Stone Giants"},{24334}}}, + }, + [11355] = { + [questKeys.preQuestSingle] = {11284}, + [questKeys.objectives] = {{{23725,"Runed Stone Giant Corpse Analyzed"},},nil,nil,nil,}, + }, + [11358] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Rune Sample"), 0, {{"object", 186718},}}}, + }, + [11365] = { + [questKeys.objectives] = {{{23725,"Runed Stone Giant Corpse Analyzed"},},nil,nil,nil,}, + }, + [11366] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Rune Sample"), 0, {{"object", 186718},}}}, + }, + [11390] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 24418},}}}, + }, + [11391] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 24418},}}}, + }, + [11392] = { + [questKeys.startedBy] = {nil,{186267}}, + [questKeys.finishedBy] = {nil,{186314}}, + }, + [11393] = { + [questKeys.exclusiveTo] = {11394,}, + }, + [11394] = { + [questKeys.preQuestSingle] = {}, + }, + [11401] = { + [questKeys.startedBy] = {nil,{186267}}, + [questKeys.finishedBy] = {nil,{186314}}, + }, + [11409] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{80004},{80005},{80006}}}, + }, + [11410] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Fresh Barbfish Bait"), 0, {{"object", 186770},}}}, + }, + [11412] = { + [questKeys.objectives] = {{{24510,"Kegs Delivered"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab a keg"), 0, {{"monster", 24527}}}}, + }, + [11414] = { + [questKeys.sourceItemId] = 33618, + }, + [11415] = { + [questKeys.sourceItemId] = 33618, + }, + [11416] = { + [questKeys.requiredSourceItems] = {33618}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Touch Talonshrike's Egg"), 0, {{"object", 186814},{"object", 190283},{"object", 190284}}}}, + }, + [11417] = { + [questKeys.requiredSourceItems] = {33618}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Touch Talonshrike's Egg"), 0, {{"object", 186814},{"object", 190283},{"object", 190284}}}}, + }, + [11418] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Feathered Charm on Steelfeather"), 0, {{"monster", 24514},}}}, + }, + [11421] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Commandeer Crykul Harpoon Gun"),0,{{"object",190512}}}}, + }, + [11428] = { + [questKeys.preQuestSingle] = {11316}, + }, + [11429] = { + [questKeys.objectives] = {nil,{{186863,"Alliance Banner Placed"}},nil,nil,{{{24640},24640,"Alliance Banner Defended"}}}, + }, + [11431] = { + [questKeys.startedBy] = {{24657}}, + [questKeys.finishedBy] = {{24657}}, + }, + [11436] = { + [questKeys.triggerEnd] = {"Go Harpoon Surfing",{[zoneIDs.HOWLING_FJORD]={{60.08,62.06,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Go Harpoon Surfing"),0,{{"object",186894}}}}, + }, + [11448] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Ask McGoyver for a ride to the Explorers' League Outpost"),0,{{"monster",24040}}}}, + }, + [11452] = { + [questKeys.startedBy] = {{24018},nil,{34090}}, + }, + [11453] = { + [questKeys.startedBy] = {{24018},nil,{34091}}, + }, + [11460] = { + [questKeys.objectives] = {{{24752,"Fjord Rock Falcon Fed"}}}, + }, + [11465] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Send your Trained Rock Falcon after it"), 0, {{"monster", 24746}}}}, + }, + [11466] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Olga"), 0, {{"monster", 24639}}}}, + }, + [11467] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Search for treasure"), 0, {{"object", 186944}}}}, + }, + [11468] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Send your Trained Rock Falcon after it"), 0, {{"monster", 24747}}}}, + }, + [11470] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Release the Trained Rock Falcon"), 0, {{"object", 190222}}}}, + }, + [11471] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Fight Jonah"), 0, {{"monster", 24742}}}}, + }, + [11472] = { + [questKeys.objectives] = {{{24797,"Reef Bull led to a Reef Cow"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Lure Reef Bull with Tasty Reef Fish"), 0, {{"monster", 24786},{"monster", 24804}}}}, + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11475] = { + [questKeys.preQuestSingle] = {11244}, + }, + [11478] = { + [questKeys.exclusiveTo] = {11448}, + }, + [11485] = { + [questKeys.triggerEnd] = {"Rocket Jump Mastered",{[zoneIDs.HOWLING_FJORD]={{75.08,64.55,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Rocket Jump standing on the rune next to it"),0,{{"object", 186958}}}}, + }, + [11489] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Collect Data near the blue relic near Gwendolyn's cart"),0,{{"object", 186958}}}}, + }, + [11491] = { + [questKeys.objectives] = {{{24718,"Lebronski Bluffed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Bluff on Lebronski after you've walked on his rug"),0,{{"object", 186958}}}}, + }, + [11494] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Put on the Golem suit"),0,{{"object", 186958}}}}, + }, + [11495] = { + [questKeys.objectives] = {{{24847,"Thundering Cave investigated"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Put on the Golem suit"),0,{{"object", 186958}}}}, + }, + [11528] = { + [questKeys.exclusiveTo] = {13203,13966}, + }, + [11529] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HOWLING_FJORD]={{37.2,74.8}}}, Questie.ICON_TYPE_OBJECT, l10n("Use The Big Gun at the front of the ship to slay Sorlof"),0,{{"monster", 24992}}}}, + }, + [11531] = { + [questKeys.specialFlags] = 1, + }, + [11567] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask Alanya for transportation"),0,{{"monster", 27933}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("After acquiring the Armor, get a ride back"),0,{{"monster", 28277}}}, + }, + }, + [11569] = { + [questKeys.preQuestSingle] = {11571}, + }, + [11570] = { + [questKeys.triggerEnd] = {"Escort Lurgglbr to safety",{[zoneIDs.BOREAN_TUNDRA]={{41.35,16.29,},},},}, + }, + [11574] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + [questKeys.exclusiveTo] = {11587}, + }, + [11575] = { + [questKeys.exclusiveTo] = {11587}, + }, + [11587] = { + [questKeys.preQuestSingle] = {}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Open the prison"),0,{{"object", 187561}}}}, + }, + [11590] = { + [questKeys.objectives] = {{{25316,"Captured Beryl Sorcerer"},},nil,nil,nil,}, + }, + [11591] = { + [questKeys.exclusiveTo] = {11592,11593,11594,}, + }, + [11592] = { + [questKeys.triggerEnd] = {"Successfully assisted Longrunner Proudhoof's assault.",{[zoneIDs.BOREAN_TUNDRA]={{49.45,26.49,},},},}, + }, + [11594] = { + [questKeys.preQuestSingle] = {}, + }, + [11596] = { + [questKeys.preQuestSingle] = {11585,11586}, + }, + [11606] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [11610] = { + [questKeys.objectives] = {nil,{{191088,"Elder Kesuk's ceremony completed"},{191089,"Elder Sagani's ceremony completed"},{191090,"Elder Takret's ceremony completed"}}}, + }, + [11611] = { + [questKeys.objectives] = {{{25284,"Warsong Peon Freed"}}}, + }, + [11631] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Imperean's Primal on Snarlfang's Totem"),0,{{"monster", 25455}}}}, + }, + [11632] = { + [questKeys.startedBy] = {nil,{187674},{34777}}, + }, + [11636] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to Garrosh's Landing"),0,{{"monster", 25459}}}}, + }, + [11637] = { + [questKeys.sourceItemId] = 34781, + }, + [11652] = { + [questKeys.objectives] = {{{25465}},nil,nil,nil,{{{27106,27107,27108,27110},27106,"Injured Warsong Soldier rescued"},{{25332,25333,25469,},25333,"Scourge Unit obliterated"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drive a tank"),0,{{"monster", 25334}}}}, + }, + [11653] = { + [questKeys.objectives] = {{{25432,"Crafty's Blaster Tested"},{25434,"Crafty's Blaster Tested"},},nil,nil,nil,}, + }, + [11654] = { + [questKeys.startedBy] = {{26115},nil,{34815}}, + [questKeys.preQuestSingle] = {11633}, + }, + [11656] = { + [questKeys.objectives] = {nil,{{188656,"The Serpent's Maw destroyed"},{188655,"The Kur Drakkar destroyed"},{188653,"Bor's Hammer destroyed"},{188657,"Bor's Anvil destroyed"}}}, + }, + [11664] = { + [questKeys.triggerEnd] = {"Mootoo Saved",{[zoneIDs.BOREAN_TUNDRA]={{31.19,54.44,},},},}, + }, + [11670] = { + [questKeys.objectives] = {{{25430,"Warsong Banner Planted in Magmothregar"},},nil,{{34870,nil},},nil,}, + [questKeys.requiredSourceItems] = {34869}, + }, + [11671] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Inquisitor Salrand"), 0, {{"monster", 25584}}}, + {{[zoneIDs.BOREAN_TUNDRA]={{41.8,39.1}}}, Questie.ICON_TYPE_EVENT, l10n("Use Beryl Shield Detonator"),}, + }, + }, + [11673] = { + [questKeys.triggerEnd] = {"Bonker Togglevolt escorted to safety.",{[zoneIDs.BOREAN_TUNDRA]={{53.84,13.85,},},},}, + }, + [11677] = { + [questKeys.objectives] = {nil,{{187879,"Plague Cauldron Neutralized"}}}, + }, + [11686] = { + [questKeys.objectives] = {nil,{{191697,"Scout Warsong Granary"},{191698,"Scout Torp's Farm"},{191699,"Scout Warsong Slaughterhouse"}}}, + }, + [11688] = { + [questKeys.preQuestSingle] = {}, + }, + [11690] = { + [questKeys.objectives] = {{{25596,"Kodo rescued"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the kodos to Farmer Torp"), 0, {{"monster", 25607}}}}, + }, + [11694] = { + [questKeys.objectives] = {nil,{{187879,"Plague Cauldron Neutralized"}}}, + }, + [11704] = { + [questKeys.preQuestSingle] = {11708}, + }, + [11705] = { + [questKeys.objectives] = {{{25618,"Varidus the Flenser Defeated"}}}, + }, + [11706] = { + [questKeys.objectives] = {{{25768},{25768,"Nerubian tunnels collapsed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use The Horn of Elemental Fury near the southern sinkhole"),0,{{"monster", 25664}}}}, + }, + [11708] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{25590,"Fizzcrank's tale listened to."}}}, + }, + [11711] = { + [questKeys.extraObjectives] = {{{[zoneIDs.BOREAN_TUNDRA]={{55.28,50.86}}}, Questie.ICON_TYPE_EVENT, l10n("Alliance Deserter Delivered")}}, + [questKeys.objectives] = {{{25761,"Alliance Deserter Delivered"}}}, + }, + [11712] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25814},25814,"Fizzcrank Gnome cursed & ported"}}}, + }, + [11713] = { + [questKeys.preQuestSingle] = {11796}, + }, + [11719] = { + [questKeys.triggerEnd] = {"Bloodspore Flower Used",{[zoneIDs.BOREAN_TUNDRA]={{52.07,52.46,},},},}, + }, + [11723] = { + [questKeys.objectives] = {{{25768},{25794,"Deploy the Shake-n-Quake 5000"}}}, + }, + [11728] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Throw Wolf Bait"),0,{{"monster", 25791}}}}, + }, + [11730] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25753,25758,25752},25753,"Robots reprogrammed"}}}, + }, + [11788] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),1,{{"object", 187984}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),2,{{"object", 187985}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),3,{{"object", 187986}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),4,{{"object", 187987}}}, + }, + }, + [11798] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use The Gearmaster's Manual"),0,{{"object", 190334}}}}, + }, + [11855] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [11865] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place fake fur near Caribou Traps"),0,{{"object", 187995},{"object", 187996},{"object", 187997},{"object", 187998},{"object", 187999},{"object", 188000},{"object", 188001},{"object", 188002},{"object", 188003},{"object", 188004},{"object", 188005},{"object", 188006},{"object", 188007},{"object", 188008}}}, + }, + }, + [11878] = { + [questKeys.objectives] = {{{25862,"Orphaned Mammoth Calf Delivered to Khu'nok"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver the orphan to Khu'nok"),0,{{"monster", 25861}}}}, + }, + [11879] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Wooly Mammoth Bull to assist in killing Kaw the Mammoth Destroyer"),0,{{"monster", 25743}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Kaw the Mammoth Destroyer"), 0, {{"monster", 25802}}}, + }, + }, + [11880] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [11881] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Jenny's Whistle near a crashed flying machine"),0,{{"object", 188019}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Return Jenny to safety without losing cargo"),0,{{"monster", 25849},}}, + }, + }, + [11887] = { + [questKeys.objectives] = {nil,nil,{{35276}}}, + }, + [11888] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [11890] = { + [questKeys.triggerEnd] = {"Fizzcrank Pumping Station environs inspected.",{[zoneIDs.BOREAN_TUNDRA]={{64.38,23.81}}}}, + }, + [11893] = { + [questKeys.objectives] = {{{24601}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Windsoul Totem to collect energy from killing Steam Ragers"),0,{{"monster", 24601}}}}, + }, + [11894] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Uncured Caribou Hide"),0,{{"object", 188086}}}}, + }, + [11895] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Storm Totem to summon Storm Tempest"),0,{{"monster", 26048}}}}, + }, + [11896] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25752,25753,25758},26082,}}}, + }, + [11898] = { + [questKeys.extraObjectives] = { + {{[zoneIDs.BOREAN_TUNDRA]={{86.55,28.59}}}, Questie.ICON_TYPE_EVENT, l10n("Enter teleporter to access Naxxanar"),}, + {{[zoneIDs.BOREAN_TUNDRA]={{86.80,30.12}}}, Questie.ICON_TYPE_EVENT, l10n("Use Naxxanar teleporters"),}, + }, + }, + [11899] = { + [questKeys.objectives] = {{{25814,"Gnome soul captured"},},nil,nil,nil,}, + [questKeys.preQuestSingle] = {11895}, + }, + [11905] = { + [questKeys.extraObjectives] = {{{[zoneIDs.THE_NEXUS_MAP]={{64.9,21.6}},[zoneIDs.THE_NEXUS]={{-1,-1}}}, Questie.ICON_TYPE_EVENT, l10n("Use Interdimensional Refabricator")}}, + }, + [11906] = { + [questKeys.preQuestSingle] = {11895}, + }, + [11907] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),1,{{"object", 187984}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),2,{{"object", 187985}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),3,{{"object", 187986}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),4,{{"object", 187987}}}, + }, + }, + [11908] = { + [questKeys.preQuestSingle] = {11902}, + }, + [11909] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Research the Gearmaster's Manual"),0,{{"object", 190334},{"object", 190335}}}}, + }, + [11913] = { + [questKeys.objectives] = {nil,{{188112,"Farshire Grain burnt"}}}, + }, + [11919] = { + [questKeys.objectives] = {{{26127,"Captured Nexus Drake"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the captured drake to Raelorasz"),0,{{"monster", 26117}}}}, + }, + [11930] = { + [questKeys.triggerEnd] = {"Secure Passage to Dragonblight",{[zoneIDs.DRAGONBLIGHT]={{10.29,53.83,},},},}, + }, + [11938] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25378,25383,25386,25387,25393,25609},25378,"En'kilah Casualty"}}}, + }, + [11940] = { + [questKeys.objectives] = {{{26127,"Captured Nexus Drake"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the captured drake to Raelorasz"),0,{{"monster", 26117}}}}, + }, + [11945] = { + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11946] = { + [questKeys.requiredSourceItems] = {35671}, + }, + [11951] = { + [questKeys.requiredSourceItems] = {35671}, + }, + [11956] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ride Dusk"),0,{{"monster", 26191}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Open the phylactery"),0,{{"object", 188141}}}, + }, + }, + [11957] = { + [questKeys.requiredSourceItems] = {35671,35690}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Keristrasza"),0,{{"monster", 26206}}}, + {{[zoneIDs.BOREAN_TUNDRA]={{22,22.6}}}, Questie.ICON_TYPE_EVENT, l10n("Use Arcane Power Focus"),}, + }, + }, + [11959] = { + [questKeys.objectives] = {{{26196,"Loguhn's Blood Smeared"}}}, + }, + [11960] = { + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11967] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Keristrasza"),0,{{"monster", 26206}}}}, + }, + [11969] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Raelorasz' Spark"),0,{{"object", 194151}}}}, + }, + [11982] = { + [questKeys.objectives] = {{{26270,"Iron Dwarf Operations Disrupted"}}}, + [questKeys.preQuestSingle] = {}, + }, + [11984] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Enlist Budd's help"), 0, {{"monster", 26422}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Escort Budd to the Drak'Zin Ruins"), 0, {{"monster", 32663}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Budd's Tag Troll spell to stun Drakkari trolls"), 0, {{"monster", 26425}, {"monster", 26447}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Capture stunned Drakkari trolls with Bounty Hunter's Cage"), 0, {{"monster", 26425}, {"monster", 26447}}}, + }, + }, + [11989] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Dull Carving Knife near Drakuru"),0,{{"monster", 26423}}}}, + }, + [11991] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Frozen Mojo"),0,{{"object", 188287}}}}, + [questKeys.requiredSourceItems] = {35797,35799}, + }, + [11995] = { + [questKeys.exclusiveTo] = {12439}, + }, + [12000] = { + [questKeys.preQuestSingle] = {}, + }, + [12007] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering Zim'bo's Mojo"),0,{{"object", 400047}}}}, + [questKeys.requiredSourceItems] = {35797,35836}, + }, + [12014] = { + [questKeys.sourceItemId] = 35837, + }, + [12017] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Tu'u'gwar's Bait"),0,{{"object", 188370}}}}, + }, + [12019] = { + [questKeys.finishedBy] = {{26170,198875}}, + [questKeys.extraObjectives] = { + {{[zoneIDs.BOREAN_TUNDRA]={{86.6,28.6}}}, Questie.ICON_TYPE_EVENT, l10n("Teleport to the top of Naxxanar"),}, + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Thassarian"), 0, {{"monster", 198875}}}, + }, + }, + [12020] = { + [questKeys.preQuestSingle] = {}, + }, + [12022] = { + [questKeys.preQuestSingle] = {}, + [questKeys.requiredSourceItems] = {33096}, + }, + [12027] = { + [questKeys.triggerEnd] = {"Help Emily and Mr. Floppy return to the camp",{[zoneIDs.GRIZZLY_HILLS]={{53.81,33.33,},},},}, + }, + [12028] = { + [questKeys.objectives] = {nil,{{188416}}}, + }, + [12029] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26458,26570,26582,26583},26612,}}}, + }, + [12032] = { + [questKeys.objectives] = {{{26648,"Oacha'noa's compulsion obeyed."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Commune with Oacha'noa"),0,{{"object", 188422}}}}, + }, + [12033] = { + [questKeys.preQuestSingle] = {11916}, + [questKeys.objectives] = {nil,{{188423,}},nil,nil,}, + }, + [12034] = { + [questKeys.preQuestSingle] = {12008}, + }, + [12035] = { + [questKeys.objectives] = {{{25623,"Harvest Collector Rewired"},},nil,nil,nil,}, + }, + [12036] = { + [questKeys.triggerEnd] = {"Pit of Narjun Explored",{[zoneIDs.DRAGONBLIGHT]={{26.26,50.01,},},},}, + }, + [12037] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Search for Kurzel"),0,{{"monster", 27909}}}}, -- to use -1 instead of 0 when questie supports showing extraobjectives when quest complete + }, + [12038] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26458,26570,26582,26583},26612,}}}, + }, + [12039] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12049] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Throw the Explosive Charges when it opens its mouth wide"),0,{{"monster", 26293}}}}, + }, + [12050] = { + [questKeys.preQuestGroup] = {12046,12047}, + }, + [12052] = { + [questKeys.preQuestGroup] = {12046,12047}, + }, + [12053] = { + [questKeys.objectives] = {{{26678,"Warsong Battle Standard Defended"}}}, + }, + [12055] = { + [questKeys.startedBy] = {{26349},nil,{36742}}, + [questKeys.preQuestSingle] = {12000}, + }, + [12056] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12059] = { + [questKeys.startedBy] = {{26349},nil,{36746}}, + [questKeys.preQuestSingle] = {11999}, + }, + [12063] = { + [questKeys.preQuestSingle] = {12036}, + }, + [12065] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188445}}}, + }, + }, + [12066] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188445}}}, + }, + }, + [12067] = { + [questKeys.startedBy] = {{26762},nil,{36756}}, + }, + [12068] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Sacred Mojo"),0,{{"object", 400066}}}}, + [questKeys.requiredSourceItems] = {35797,36758}, + }, + [12069] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free Roanauk Icemist"),0,{{"object", 188463}}}}, + }, + [12075] = { + [questKeys.preQuestSingle] = {}, + }, + [12076] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Zort's Scraper when covered in Corrosive Spit"),0,{{"monster", 26358},{"monster", 26359}}}}, + }, + [12078] = { + [questKeys.preQuestSingle] = {12077}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Sturdy Crates to capture the worm spawn"),0,{{"monster", 26359}}}}, + }, + [12079] = { + [questKeys.preQuestSingle] = {12075}, + }, + [12080] = { + [questKeys.preQuestSingle] = {12076}, + }, + [12082] = { + [questKeys.triggerEnd] = {"Harrison has escorted you to safety.",{[zoneIDs.GRIZZLY_HILLS]={{73.51,24.02,},},},}, + }, + [12083] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188474}}}, + }, + }, + [12084] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188474}}}, + }, + }, + [12085] = { + [questKeys.startedBy] = {{26815},nil,{36780}}, + }, + [12092] = { + [questKeys.preQuestSingle] = {12065}, + }, + [12095] = { + [questKeys.preQuestGroup] = {12089,12090,12091}, + }, + [12096] = { + [questKeys.preQuestSingle] = {12066}, + }, + [12097] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rokhan to call down Sarathstra"), 0, {{"monster", 26859}}},}, + }, + [12099] = { + [questKeys.objectives] = {{{26417,"Runed Giants Freed"}}}, + }, + [12100] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12105] = { + [questKeys.startedBy] = {{27547},nil,{36940}}, + }, + [12107] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Ley Line Focus Control Talisman"),1,{{"object", 188491}}}, + }, + }, + [12110] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Ley Line Focus Control Talisman"),1,{{"object", 188491}}}, + }, + }, + [12111] = { + [questKeys.objectives] = {{{26615,},{26482,}}}, + }, + [12112] = { + [questKeys.preQuestGroup] = {12050,12052}, + }, + [12117] = { + [questKeys.nextQuestInChain] = 11958, + }, + [12118] = { + [questKeys.nextQuestInChain] = 11958, + }, + [12121] = { + [questKeys.objectives] = {{{27199,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ring the gong outside Drakil'jin to summon Warlord Jin'arrak"),0,{{"object", 188510}}}, + }, + }, + [12124] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a drake to the top of the temple"),1,{{"monster", 26443}}}}, + }, + [12125] = { + [questKeys.objectives] = {{{26411}},nil,{{36828}}}, + }, + [12126] = { + [questKeys.objectives] = {{{26926}},nil,{{36836}}}, + }, + [12127] = { + [questKeys.objectives] = {{{26283}},nil,{{36846}}}, + }, + [12129] = { + [questKeys.sourceItemId] = 36849, + }, + [12132] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12125,12126,12127}, + }, + [12137] = { + [questKeys.sourceItemId] = 36859, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Speak with Gan'jo to return to life"),0,{{"monster", 26924}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Snow of Eternal Slumber on ancient Drakkari spirits"),0,{{"monster", 26811},{"monster", 26812}}}, + }, + }, + [12138] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26407,27017},26407,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Fight Lightning Sentries with Depleted War Golem deployed nearby"),0,{{"monster", 26407}}}, + }, + }, + [12146] = { + [questKeys.startedBy] = {{27004,27005},nil,{36855}}, + }, + [12147] = { + [questKeys.startedBy] = {{27004,27005},nil,{36856}}, + }, + [12150] = { + [questKeys.objectives] = {{{27003,}}}, + }, + [12151] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{57.09,76.26}}}, Questie.ICON_TYPE_EVENT, l10n("Blow the horn"),0}}, + }, + [12152] = { + [questKeys.requiredSourceItems] = {36870,36873,37063}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Place the Infused Drakkari Offering at the gongs outside Drakil'jin"),0,{{"object", 188510}}}, + }, + }, + [12157] = { + [questKeys.exclusiveTo] = {12171,12235,12297}, + }, + [12159] = { + [questKeys.objectives] = {{{26891,"Miner at Rest"}}}, + }, + [12165] = { + [questKeys.sourceItemId] = 36849, + }, + [12166] = { + [questKeys.objectives] = {{{26616,"Blighted Elk's corpse cleansed"},{26643,"Rabid Grizzly's corpse cleansed"},},nil,nil,nil,}, + }, + [12171] = { + [questKeys.exclusiveTo] = {12235,12297}, + }, + [12174] = { + [questKeys.exclusiveTo] = {12235,12298}, + }, + [12180] = { + [questKeys.preQuestSingle] = {12014}, + }, + [12181] = { + [questKeys.exclusiveTo] = {12188}, + }, + [12182] = { + [questKeys.exclusiveTo] = {}, + [questKeys.nextQuestInChain] = 12188, + }, + [12184] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26408,26409,26410,26414,27177},26408,}}}, + }, + [12185] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Intercept the message from Loken"),1,{{"object", 188596}}}, + }, + }, + [12188] = { + [questKeys.preQuestSingle] = {}, + }, + [12191] = { + [questKeys.preQuestSingle] = {}, + [questKeys.requiredSourceItems] = {33096}, + }, + [12198] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26407,27017},26407,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Fight Lightning Sentries with Depleted War Golem deployed nearby"),0,{{"monster", 26407}}}, + }, + }, + [12202] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26408,26409,26410,26414,27177},26408,}}}, + }, + [12203] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Intercept the message from Loken"),1,{{"object", 188596}}}, + }, + }, + [12204] = { + [questKeys.preQuestSingle] = {12099,12058}, + [questKeys.preQuestGroup] = {}, + }, + [12206] = { + [questKeys.objectives] = {{{27349,"Flask of Blight tested"}}}, + }, + [12207] = { + [questKeys.preQuestSingle] = {12413}, + }, + [12208] = { + [questKeys.preQuestSingle] = {12412}, + }, + [12210] = { + [questKeys.preQuestSingle] = {12212}, + }, + [12211] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27202,27203,27206,27207,27209,27210,27211,27232,27233,27234,27235,27236,27237,27246,27247},27203,"Scarlet Onslaught corpses picked clean"}}}, + }, + [12213] = { + [questKeys.preQuestSingle] = {12413}, + }, + [12214] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27206,27213,27296,27028},27296,}}}, + }, + [12218] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Commandeer a Forsaken Blight Spreader"),1,{{"monster", 26523}}}, + }, + }, + [12222] = { + [questKeys.preQuestSingle] = {12294}, + }, + [12223] = { + [questKeys.preQuestSingle] = {12294}, + }, + [12224] = { + [questKeys.preQuestGroup] = {12221,12140,12072}, + }, + [12229] = { + [questKeys.preQuestGroup] = {12207,12213}, + }, + [12231] = { + [questKeys.objectives] = {{{27274,"Orsonn's Story"},{27275,"Kodian's Story"}}}, + [questKeys.preQuestGroup] = {12207,12213}, + }, + [12232] = { + [questKeys.objectives] = {nil,{{188673,}}}, + }, + [12236] = { + [questKeys.preQuestGroup] = {12241,12242}, + [questKeys.objectives] = {{{26633,}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tur Ragepaw to summon Ursoc"),0,{{"monster", 27328}}}}, + }, + [12237] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27315,27336,27345,27341},27315,"Helpless Villager Rescued"}}}, + }, + [12238] = { + [questKeys.requiredSourceItems] = {35797,38303}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Enduring Mojo"),0,{{"object", 190629}}}}, + }, + [12240] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{68.29,74.29}}}, Questie.ICON_TYPE_EVENT, l10n("Release the termites"),0}}, + }, + [12241] = { + [questKeys.preQuestGroup] = {12229,12231}, + }, + [12242] = { + [questKeys.preQuestGroup] = {12229,12231}, + }, + [12244] = { + [questKeys.objectives] = {{{27354}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Shredder"),0,{{"monster", 27371}}}}, + }, + [12247] = { + [questKeys.objectives] = {{{27274,"Orsonn's Story"},{27275,"Kodian's Story"}}}, + }, + [12249] = { + [questKeys.objectives] = {{{26633,}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tur Ragepaw to summon Ursoc"),0,{{"monster", 27328}}}}, + }, + [12252] = { + [questKeys.objectives] = {{{27209,"Torturer LeCraft fully questioned"},{27209}}} + }, + [12255] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride Flamebringer"),0,{{"monster", 27292}}}}, + }, + [12256] = { + [questKeys.preQuestSingle] = {12468}, + }, + [12258] = { + [questKeys.preQuestSingle] = {12251}, + }, + [12259] = { + [questKeys.preQuestGroup] = {12256,12257}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride Flamebringer"),0,{{"monster", 27292}}}}, + }, + [12260] = { + [questKeys.objectives] = {{{27202,}}}, + }, + [12261] = { + [questKeys.preQuestSingle] = {12447}, + [questKeys.objectives] = {{{27430,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Destructive Ward"),0,{{"object", 188707}}}, + }, + }, + [12262] = { + [questKeys.preQuestSingle] = {12447}, + }, + [12263] = { + [questKeys.triggerEnd] = {"Uncover the Magmawyrm Resurrection Chamber",{[zoneIDs.DRAGONBLIGHT]={{31.76,30.46,},},},}, + }, + [12264] = { + [questKeys.preQuestSingle] = {12263}, + [questKeys.objectives] = {{{27358},{27362},{27363}}}, + }, + [12265] = { + [questKeys.preQuestSingle] = {12263}, + }, + [12269] = { + [questKeys.preQuestSingle] = {12275}, + }, + [12270] = { + [questKeys.objectives] = {{{27354}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Shredder"),0,{{"monster", 27423}}}}, + }, + [12271] = { + [questKeys.startedBy] = {{27209},nil,{37432}}, + [questKeys.preQuestSingle] = {12245}, + }, + [12272] = { + [questKeys.preQuestSingle] = {12275}, + }, + [12273] = { + [questKeys.objectives] = {{{27237,},{27235,},{27234,},{27236,}}}, + }, + [12274] = { + [questKeys.objectives] = {nil,{{188713,"Abbey bell rung"}},nil,nil,{{{27245},27245,"High Abbot spoken with"}}}, + }, + [12277] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the Mine Bomb here"),0,{{"object", 188711}}}}, + }, + [12284] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27475,27482,},27475,"Alliance units eliminated"}}}, + }, + [12288] = { + [questKeys.objectives] = {{{27463,"Wounded Skirmishers Healed"}}}, + }, + [12289] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27456,27463},27456,"Horde units eliminated"}}}, + }, + [12291] = { + [questKeys.objectives] = {{{27226,"Forgotten Peasant Questioned"},{27225,"Forgotten Rifleman Questioned"},{27224,"Forgotten Knight Questioned"},{27229,"Forgotten Footman Questioned"}}}, + }, + [12296] = { + [questKeys.objectives] = {{{27482,"Westfall Infantry Healed"}}}, + }, + [12297] = { + [questKeys.preQuestSingle] = {11250}, + [questKeys.exclusiveTo] = {12171,12235}, + }, + [12298] = { + [questKeys.exclusiveTo] = {12174,12235}, + }, + [12301] = { + [questKeys.objectives] = {nil,{{189304,"The Forgotten Redeemed"}}}, + }, + [12307] = { + [questKeys.preQuestSingle] = {}, + }, + [12308] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"),0,{{"monster", 27409}}}}, + [questKeys.triggerEnd] = {"Escape from Silverbrook",{[zoneIDs.GRIZZLY_HILLS]={{32.37,59.14}}}}, + [questKeys.objectives] = {}, + }, + [12316] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27500,27550},27550,"Horde killed in Venture Bay"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in the shredder if you have the key"),0,{{"monster", 27496}}}}, + }, + [12317] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27501,27549},27549,"Alliance killed in Venture Bay"}}}, + }, + [12323] = { + [questKeys.objectives] = {{{27570,"Venture Company Stragglers smoked out"}}}, + }, + [12324] = { + [questKeys.objectives] = {{{27570,"Venture Company Stragglers smoked out"}}}, + }, + [12321] = { + [questKeys.objectives] = {{{27577,"Righteous Sermon Heard"}}}, + }, + [12325] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get a ride to Thorson's Post"),0,{{"monster", 27661}}}}, + }, + [12326] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in"),0,{{"monster", 27587}}}}, + [questKeys.objectives] = {{{27607,"Plague Wagon Sabotaged"},{27588,"7th Legion Elite Safely Dropped Off"}}}, + }, + [12327] = { + [questKeys.triggerEnd] = {"Vision from the Past",{[zoneIDs.SILVERPINE_FOREST]={{46.53,76.18,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Gossamer Potion"),0,{{"object", 189972}}}}, + }, + [12330] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Tranquilizer Dart on Tatjana"),0,{{"monster", 27627}}}}, + [questKeys.triggerEnd] = {"Tatjana Delivered",{[zoneIDs.GRIZZLY_HILLS]={{57.77,41.7,},},},}, + }, + [12372] = { + [questKeys.objectivesText] = {"Devrestrasz at Wyrmrest Temple has asked you to slay 3 Azure Dragons, slay 5 Azure Drakes, and to destabilize the Azure Dragonshrine while riding a Wyrmrest Defender into battle."}, -- #4675 + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ride a Wyrmrest Defender to defend the Temple"), 0, {{"monster", 27629}}}, + }, + }, + [12412] = { + [questKeys.preQuestSingle] = {12259}, + }, + [12414] = { + [questKeys.objectives] = {{{26472,"Highland Mustangs returned"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the mustangs to Squire Percy"), 0, {{"monster", 26377}}}}, + }, + [12415] = { + [questKeys.objectives] = {{{26472,}}}, + }, + [12419] = { + [questKeys.startedBy] = {{27680},nil,{37833}}, + }, + [12423] = { + [questKeys.startedBy] = {{27547},nil,{37830}}, + }, + [12427] = { + [questKeys.preQuestSingle] = {12413}, + [questKeys.triggerEnd] = {"Ironhide defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.2,64.68,},},},}, + [questKeys.objectives] = {{{27715,}}}, + }, + [12428] = { + [questKeys.triggerEnd] = {"Torgg Thundertotem defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.05,64.55,},},},}, + [questKeys.objectives] = {{{27716,}}}, + }, + [12429] = { + [questKeys.triggerEnd] = {"Rustblood defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.12,64.62,},},},}, + [questKeys.objectives] = {{{27717,}}}, + }, + [12430] = { + [questKeys.triggerEnd] = {"Horgrenn Hellcleave defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.11,64.6,},},},}, + [questKeys.objectives] = {{{27718,}}}, + }, + [12431] = { + [questKeys.objectives] = {{{27727,}}}, + }, + [12432] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride the rocket!"), 0, {{"monster", 27593}}}}, + }, + [12434] = { + [questKeys.specialFlags] = 1, + [questKeys.preQuestSingle] = {12433}, + [questKeys.startedBy] = {{27565}}, + [questKeys.finishedBy] = {{27565}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12435] = { -- #4675 + [questKeys.name] = "Report to Lord Devrestrasz", + [questKeys.objectivesText] = {"Speak with Lord Devrestrasz at Wyrmrest Temple."}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a drake to the middle of the temple"), 0, {{"monster", 26949}}}}, + }, + [12437] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride the rocket!"), 0, {{"monster", 27593}}}}, + }, + [12439] = { + [questKeys.exclusiveTo] = {11995,12000}, + }, + [12446] = { + [questKeys.specialFlags] = 1, + [questKeys.preQuestSingle] = {12443}, + [questKeys.startedBy] = {{27495}}, + [questKeys.finishedBy] = {{27495}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12453] = { + [questKeys.preQuestSingle] = {12412}, + [questKeys.objectives] = {{{26369,}}}, + }, + [12456] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{64.6,77}}}, Questie.ICON_TYPE_EVENT, l10n("Use Skytalon Molts"),0}}, + }, + [12457] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Man the Chain Gun"),0,{{"monster", 27714}}},}, + }, + [12459] = { + [questKeys.objectives] = {{{26841,nil},{27808,nil},{27122,nil},},nil,nil,nil,}, + }, + [12462] = { + [questKeys.preQuestSingle] = {12326}, + }, + [12464] = { + [questKeys.preQuestSingle] = {}, + }, + [12467] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Wyrmbait"),0,{{"monster", 27843}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Destroy Icestorm"),0,{{"monster", 26287}}}, + }, + }, + [12468] = { + [questKeys.preQuestSingle] = {}, + }, + [12470] = { + [questKeys.objectives] = {{{27840,"Hourglass of Eternity protected"}}}, + }, + [12473] = { + [questKeys.objectives] = {{{27383,"Thel'zan the Duskbringer Defeated"}}}, + }, + [12478] = { + [questKeys.objectives] = {nil,{{190191,"Secrets of the Past Revealed"}}}, + }, + [12481] = { + [questKeys.objectives] = {{{24238,"Bjorn Halgurdsson insulted"},{24238,"Bjorn Halgurdsson defeated"}}}, + }, + [12484] = { + [questKeys.extraObjectives] = {{{[zoneIDs.GRIZZLY_HILLS]={{16.84,48.34}}}, Questie.ICON_TYPE_EVENT, l10n("Place Scourged Troll Mummy in the fire"),0}}, + }, + [12486] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [12491] = { + [questKeys.startedBy] = {{23872},nil,{38280}}, + }, + [12492] = { + [questKeys.startedBy] = {{23872},nil,{38281}}, + }, + [12498] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Slay Antiok's mount to make him vulnerable"),0,{{"monster", 28018}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Slay Grand Necrolord Antiok"),0,{{"monster", 28006}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"),0,{{"monster", 27996}}}, + }, + }, + [12500] = { + [questKeys.preQuestSingle] = {12498}, + }, + [12501] = { + [questKeys.finishedBy] = {{28039}}, + [questKeys.exclusiveTo] = {12563,12587}, + [questKeys.childQuests] = {12502,12509,12519,12541}, + }, + [12502] = { + [questKeys.parentQuest] = 12501, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Plant the Argent Crusade Banner"), 0, {{"object", 190522}}}}, + }, + [12503] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28023,28026,28246,28669,28022},28022,"Scourge at The Argent Stand destroyed"}}}, + }, + [12506] = { + [questKeys.triggerEnd] = {"Main building at the Altar of Sseratus investigated.",{[zoneIDs.ZUL_DRAK]={{40.32,39.46,},},},}, + }, + [12509] = { + [questKeys.parentQuest] = 12501, + }, + [12510] = { + [questKeys.sourceItemId] = 38323, + }, + [12512] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28133,28136},28133},{{28141,28142},28141},{{28143,28148},28143}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Escort rescued Crusaders to Dr. Rogers"), 0, {{"monster", 28125}}}}, + }, + [12516] = { + [questKeys.objectives] = {{{28068}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Muddled Mojo on Prophet of Sseratus before killing it"), 0, {{"monster", 28068}}}}, + }, + [12519] = { + [questKeys.parentQuest] = 12501, + }, + [12520] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + }, + [12521] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Take a ride to Sholazar Basin"), 0, {{"monster", 28160}}}}, + }, + [12527] = { + [questKeys.requiredSourceItems] = {38380}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Feed with Zul'Drak Rat"), 0, {{"monster", 28145}}}}, + }, + [12529] = { + [questKeys.requiredSourceItems] = {38619}, + }, + [12530] = { + [questKeys.requiredSourceItems] = {38619,38467}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Softknuckle Poker on Softknuckles"), 0, {{"monster", 28127}}}}, + }, + [12531] = { + [questKeys.requiredSourceItems] = {38621}, + }, + [12532] = { + [questKeys.requiredSourceItems] = {38621,38689}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12533,12534}, + }, + [12533] = { + [questKeys.requiredSourceItems] = {38621}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12529,12530}, + }, + [12534] = { + [questKeys.requiredSourceItems] = {38621}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12529,12530}, + }, + [12536] = { + [questKeys.requiredSourceItems] = {38512}, + [questKeys.triggerEnd] = {"Travel to Mistwhisper Refuge.",{[zoneIDs.SHOLAZAR_BASIN]={{46.31,39.88,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Captive Crocolisk"), 0, {{"monster", 28298}}}}, + }, + [12537] = { + [questKeys.requiredSourceItems] = {38510,38512}, + [questKeys.objectives] = {nil,{{190502,"Sabotage the Mistwhisper Weather Shrine"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the Skyreach Crystal Clusters"), 0, {{"object", 300213}}}}, + }, + [12538] = { + [questKeys.requiredSourceItems] = {38512}, + }, + [12539] = { + [questKeys.requiredSourceItems] = {38512}, + }, + [12540] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Injured Rainspeaker Oracle"), 0, {{"monster", 28217}}}}, + }, + [12541] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12544] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Soo-rahm's Incense"), 0, {{"object", 190507}}}}, + }, + [12545] = { + [questKeys.preQuestSingle] = {}, + }, + [12548] = { + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{40.35,83.08,}}}, Questie.ICON_TYPE_EVENT, l10n("Travel through the Waygate"),}}, + }, + [12549] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + }, + [12551] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12520,12549}, + }, + [12555] = { + [questKeys.objectives] = {{{28274,"Plague Sprayers webbed and destroyed"}}}, + }, + [12557] = { + [questKeys.objectives] = {nil,nil,{{38386},{38339},{38340},{38346}}}, + }, + [12561] = { + [questKeys.requiredSpell] = 54197, + }, + [12563] = { + [questKeys.finishedBy] = {{28039}}, + [questKeys.exclusiveTo] = {12501,12587}, + [questKeys.childQuests] = {12541,12564,12568,12585}, + }, + [12564] = { + [questKeys.parentQuest] = 12563, + }, + [12568] = { + [questKeys.parentQuest] = 12563, + [questKeys.objectives] = {nil,nil,nil,nil,{{{28260,28156},28260,"Argent Footman Corpse Incinerated"}}}, + }, + [12569] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Sandfern Disguise near the fallen log"), 0, {{"object", 190545}}}}, + }, + [12570] = { + [questKeys.triggerEnd] = {"Escort the Injured Rainspeaker Oracle to Rainspaker Canopy",{[zoneIDs.SHOLAZAR_BASIN]={{52.79,59.36}}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Start the escort"), 0, {{"monster", 28217}}}}, + }, + [12571] = { + [questKeys.requiredSourceItems] = {38622}, + }, + [12572] = { + [questKeys.requiredSourceItems] = {38622}, + }, + [12573] = { + [questKeys.sourceItemId] = 38622, + [questKeys.requiredSourceItems] = {38622,40364}, + [questKeys.objectives] = {{{28315,"Extend Peace Offering to Shaman Vekjik"}}}, + }, + [12574] = { + [questKeys.requiredSourceItems] = {38623}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12572,12573}, + }, + [12575] = { + [questKeys.requiredSourceItems] = {38623}, + }, + [12576] = { + [questKeys.requiredSourceItems] = {38623}, + }, + [12577] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12575,12576}, + }, + [12578] = { + [questKeys.requiredSourceItems] = {38624}, + [questKeys.triggerEnd] = {"Travel to Mosswalker Village.",{[zoneIDs.SHOLAZAR_BASIN]={{75.07,51.88,},},},}, + }, + [12579] = { + [questKeys.requiredSourceItems] = {38624}, + }, + [12580] = { + [questKeys.requiredSourceItems] = {38624}, + [questKeys.objectives] = {{{28113,"Mosswalker Victims Rescued"}}}, + }, + [12584] = { + [questKeys.preQuestGroup] = {12552}, + }, + [12585] = { + [questKeys.parentQuest] = 12563, + }, + [12587] = { + [questKeys.exclusiveTo] = {12501,12563}, + [questKeys.childQuests] = {12541,12588,12591,12594}, + }, + [12588] = { + [questKeys.objectives] = {nil,{{190550,"Ancient Dirt Mounds Investigated"}}}, + }, + [12589] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + [questKeys.objectives] = {{{28054,"Shot apple on Lucky Wilhelm's Head"}}}, + }, + [12591] = { + [questKeys.objectives] = {nil,{{190555,"Nerubian Tunnels Collapsed"}}}, + }, + [12595] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + }, + [12596] = { + [questKeys.preQuestSingle] = {12740}, + [questKeys.preQuestGroup] = {}, + }, + [12598] = { + [questKeys.objectives] = {nil,{{190555,"Nerubian Tunnels Sealed"}}}, + }, + [12601] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12602] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12603] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + }, + [12604] = { + [questKeys.preQuestSingle] = {12501,12563,12587}, + }, + [12605] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Break the egg"), 0, {{"monster", 28408}}}}, + }, + [12606] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28415,28413},28415}}}, + }, + [12607] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28379,28374},28379,}}}, + }, + [12615] = { + [questKeys.preQuestSingle] = {12516}, + }, + [12620] = { + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{49.64,37.41,}}}, Questie.ICON_TYPE_EVENT, l10n("Use Freya's Horn atop of the Glimmering Pillar"),}}, + }, + [12621] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Listen to what the Avatar of Freya has to say"), 0, {{"monster", 27801}}}}, + }, + [12622] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Kill Jin'Alai Trolls until their leaders appear"), 0, {{"monster", 28388},{"monster", 28504},{"object", 193768},{"object", 193769},{"object", 193770}}}}, + }, + [12629] = { + [questKeys.preQuestSingle] = {12637}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12643}, + [questKeys.nextQuestInChain] = 12648, + }, + [12630] = { + [questKeys.objectives] = {{{28519,"Hair Samples Collected"},},nil,nil,nil,}, + }, + [12631] = { + [questKeys.startedBy] = {nil,nil,{38660}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12633}, + [questKeys.nextQuestInChain] = 12637, + }, + [12632] = { + [questKeys.objectives] = {{{28404}}}, + }, + [12633] = { + [questKeys.startedBy] = {nil,nil,{38673}}, + [questKeys.preQuestSingle] = {12238}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12631}, + [questKeys.nextQuestInChain] = 12638, + }, + [12634] = { + [questKeys.preQuestGroup] = {12520,12549}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Pull Sturdy Vines to reveal fruit"), 0, {{"object", 190622}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Ask for a spare fruit"), 0, {{"monster", 28604}}}, + }, + }, + [12637] = { + [questKeys.preQuestSingle] = {12631}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12638}, + [questKeys.nextQuestInChain] = 12629, + }, + [12638] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12633,12238}, + [questKeys.exclusiveTo] = {12637}, + [questKeys.nextQuestInChain] = 12643, + }, + [12641] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Eye of Acherus Control Mechanism"), 0, {{"object", 191609}}}}, + }, + [12643] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12638,12238}, + [questKeys.exclusiveTo] = {12629}, + [questKeys.nextQuestInChain] = 12649, + }, + [12644] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Begin the distillation process"), 0, {{"monster", 28566}}}}, + }, + [12648] = { + [questKeys.preQuestSingle] = {12629}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12649}, + [questKeys.nextQuestInChain] = 12661, + }, + [12649] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12643,12238}, + [questKeys.exclusiveTo] = {12648}, + [questKeys.nextQuestInChain] = 12661, + }, + [12651] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12558,12556,12592}, + [questKeys.exclusiveTo] = {12654}, + [questKeys.nextQuestInChain] = 12654, + }, + [12652] = { + [questKeys.requiredRaces] = 2047, + [questKeys.preQuestSingle] = {12629,12643}, + [questKeys.exclusiveTo] = {12713}, + [questKeys.objectives] = {{{28565,}}}, + }, + [12659] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28465,28600},28622}}}, + }, + [12661] = { + [questKeys.preQuestSingle] = {12648,12649}, + [questKeys.preQuestGroup] = {}, + [questKeys.childQuests] = {12663,12664}, + [questKeys.exclusiveTo] = {}, + [questKeys.nextQuestInChain] = 12669, + [questKeys.requiredSourceItems] = {41390,38699}, + [questKeys.objectives] = {{{28503,"Overlord Drakuru's task complete"}}}, + [questKeys.extraObjectives] = {{{[zoneIDs.ZUL_DRAK]={{28.38,44.85}}}, Questie.ICON_TYPE_EVENT, l10n("Infiltrate Voltarus using Ensorcelled Choker")}}, + }, + [12662] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Heb'Jin's Drum to summon Heb'Jin"), 0, {{"object", 190695}}}}, + }, + [12663] = { + [questKeys.preQuestSingle] = {12649}, + [questKeys.exclusiveTo] = {12664,12648}, + [questKeys.parentQuest] = 12661, + [questKeys.objectives] = {{{28666,"Tour of Zul'Drak complete"}}}, + }, + [12664] = { + [questKeys.preQuestSingle] = {12648}, + [questKeys.exclusiveTo] = {12663,12649}, + [questKeys.parentQuest] = 12661, + [questKeys.objectives] = {{{28666,"Tour of Zul'Drak complete"}}}, + }, + [12665] = { + [questKeys.objectives] = {{{28671,"Quetz'lun's fate revealed."}}}, + }, + [12668] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28747,28748},28747,"Trolls killed near a Soul Font"}}}, + }, + [12669] = { + [questKeys.objectives] = {{{28503,"Drakuru's task complete"},{28739,"Blight Cauldrons diluted"}}}, + [questKeys.requiredSourceItems] = {39154,38699,41390}, + }, + [12671] = { + [questKeys.triggerEnd] = {"Reconnaissance Flight",{[zoneIDs.SHOLAZAR_BASIN]={{50.04,61.43,},},},}, + }, + [12673] = { + [questKeys.objectives] = {nil,{{190716}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Suggestion to mind control Blight Geist"), 0, {{"monster", 28750}}}}, + }, + [12674] = { + [questKeys.objectives] = {{{28752,"High Priest Mu'funu hexed at death"},{28754,"High Priestess Tua-Tua hexed at death"},{28756,"High Priest Hawinni hexed at death"}}}, + }, + [12676] = { + [questKeys.requiredSourceItems] = {39165,41390,38699}, + [questKeys.objectives] = {nil,{{190731,"Scourgewagons destroyed"}},nil,nil,{{{28503},28503,"Drakuru's task complete"}}}, + [questKeys.triggerEnd] = {"Learn Drakuru's secret",{[zoneIDs.ZUL_DRAK]={{27.07,46.16}}}}, + }, + [12677] = { + [questKeys.sourceItemId] = 38699, + [questKeys.requiredSourceItems] = {41390,38699}, + [questKeys.objectives] = {{{28503,"Drakuru's task complete"}},nil,{{39159}}}, + }, + [12680] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28605,28606,28607},28605,"Horse Successfully Stolen"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Stolen Horse"), 0, {{"monster", 28653}}}}, + }, + [12683] = { + [questKeys.objectives] = {{{28003,},{28003}}}, + [questKeys.preQuestSingle] = {}, + }, + [12685] = { + [questKeys.objectives] = {{{28671}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Quetz'lun's Ritual"), 0, {{"monster", 28672}}}}, + }, + [12686] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Empowerment to mind control Servant of Drakuru"), 0, {{"monster", 28802}}}, + }, + }, + [12687] = { + [questKeys.triggerEnd] = {"The Horseman's Challenge",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{52.41,34.59,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Dark Rider of Acherus and take his horse"), 0, {{"monster", 28768},{"monster", 28782}}}}, + }, + [12688] = { + [questKeys.triggerEnd] = {"Escort Engineer Helice out of Swindlegrin's Dig",{[zoneIDs.SHOLAZAR_BASIN]={{37.29,50.59,},},},}, + }, + [12690] = { + [questKeys.exclusiveTo] = {12710}, + [questKeys.requiredSourceItems] = {39238,38699}, + [questKeys.objectives] = {{{28844,"Drakkari Skullcrushers Slain"},{28873,"Drakkari Chieftain Lured"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Command"), 0, {{"monster", 28843}}}}, + }, + [12692] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12695] = { + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12697] = { + [questKeys.preQuestGroup] = {12678,12679,12687,12733,}, + }, + [12698] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28819,28822,28891},28819,"Scarlet Ghoul Returned"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Return Scarlet Ghouls"), 0, {{"monster", 28658}}}}, + }, + [12699] = { + [questKeys.preQuestSingle] = {12523}, + }, + [12701] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Climb inside the Inconspicuous Mine Car"), 0, {{"object", 190767}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Scarlet Cannon"), 0, {{"monster", 28833}}}, + }, + }, + [12702] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12703] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the blood at the Shrine of Kartak"), 0, {{"object", 190782}}}}, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12704] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to High-Oracle Soo-say to retrieve a Gorloc companion"), 0, {{"monster", 28027}}}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.requiredSourceItems] = {38622,38623,38624}, + }, + [12705] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use the Tainted Crystal at the Great Lightning Stone"), 0, {{"object", 190781}}}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12707] = { + [questKeys.objectives] = {{{28861,"Mam'toth Disciples trampled to death"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Medallion of Mam'toth to calm and ride an Enraged Mammoth"),0,{{"monster", 28851}}}, + }, + }, + [12710] = { + [questKeys.sourceItemId] = 38699, + [questKeys.requiredSourceItems] = {38699,39319}, + [questKeys.objectives] = {{{28948,"Drakuru's upper chamber explored"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Open the coffin"), 0, {{"object", 190948}}}, + {{[zoneIDs.ZUL_DRAK]={{28.38,44.85}}}, Questie.ICON_TYPE_EVENT, l10n("Take the teleporter to Drakuru's upper chamber")}, + }, + }, + [12712] = { + [questKeys.sourceItemId] = 39313, + [questKeys.requiredSourceItems] = {39313,39314,39315,39316}, + }, + [12713] = { + [questKeys.objectives] = {nil,nil,{{40425,"Overlord Drakuru Defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use the Scepter of Domination to control it"), 0, {{"monster", 28931}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Go on top of the ziggurat with Drakuru"), 0, {{"monster", 28503}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Defeat Drakuru"), 0, {{"monster", 28998}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("After defeating Drakuru, go back down using this portal"), 0, {{"object", 202357}}}, + }, + }, + [12720] = { + [questKeys.triggerEnd] = {"\"Crimson Dawn\" Revealed",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{55.09,66.12},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Equip Keleseth's Persuaders and persuade Scarlet Crusaders"), 0, {{"monster", 28610},{"monster", 28936},{"monster", 28939},{"monster", 28940},}}}, + }, + [12721] = { + [questKeys.objectives] = {{{28952,"Akali unfettered from his chains."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Release Akali from his chains"), 0, {{"object", 191018}}}}, + }, + [12723] = { + [questKeys.preQuestGroup] = {12717,12720,12722}, + }, + [12726] = { + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.objectives] = {{{28862,},{28858,}}}, + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{26.51,35.63}}}, Questie.ICON_TYPE_EVENT, l10n("Use Drums of the Tempest at Stormwright's Shelf"),}}, + }, + [12730] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Prophet of Akali Convocation"), 0, {{"object", 191123}}}}, + }, + [12732] = { + [questKeys.requiredMinRep] = {1104,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Fill Rejek's Vial"), 0, {{"object", 191122}}}}, + }, + [12733] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28391,28394,28406},28391,"Death Knights defeated in a duel"}}}, + }, + [12734] = { + [questKeys.objectives] = {{{28086,"Blade blooded on Sapphire Hive Wasp"},{28096,"Blade blooded on Hardknuckle Charger"}},nil,nil,nil,{{{28109,28110},28109,"Blade Blooded on Mistwhisper members"}}}, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12735] = { + [questKeys.extraObjectives] = { + {{[zoneIDs.SHOLAZAR_BASIN]={{43,42}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Atha"), 1}, + {{[zoneIDs.SHOLAZAR_BASIN]={{49,63}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Ha-Khalan"), 2}, + {{[zoneIDs.SHOLAZAR_BASIN]={{46,74}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Koosu"), 3}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12736] = { + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12737] = { + [questKeys.objectives] = {nil,{{191136,}}}, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12740] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28028,28029},28028,}}}, + }, + [12741] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12752] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12753] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12754] = { + [questKeys.extraObjectives] = {{{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{60.9,75.5}}}, Questie.ICON_TYPE_EVENT, l10n("Use the Makeshift Cover"),}}, + }, + [12758] = { + [questKeys.requiredMinRep] = {1104,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Venture Co. Explosive on dead Stonewatcher"),0,{{"monster", 28877}}}}, + }, + [12759] = { + [questKeys.sourceItemId] = 39697, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12760] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12761] = { + [questKeys.sourceItemId] = 39693, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12762] = { + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Charge the Dormant Polished Crystal at the exposed Lifeblood Pillar"),2,{{"object", 300224}}}}, + }, + [12771] = { + [questKeys.preQuestSingle] = {12753}, + }, + [12772] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12773] = { + [questKeys.preQuestSingle] = {12772}, + }, + [12774] = { + [questKeys.preQuestSingle] = {12775}, + }, + [12775] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12776] = { + [questKeys.preQuestSingle] = {12777}, + }, + [12777] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12779] = { + [questKeys.extraObjectives] = {{{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{53.5,36.7}}}, Questie.ICON_TYPE_EVENT, l10n("Use the Horn of the Frostbrood"),}}, + }, + [12782] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12783] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12784] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12785] = { + [questKeys.preQuestSingle] = {12783}, + }, + [12786] = { + [questKeys.preQuestSingle] = {12784}, + }, + [12787] = { + [questKeys.preQuestSingle] = {12752}, + }, + [12788] = { + [questKeys.preQuestSingle] = {12782}, + }, + [12797] = { + [questKeys.extraObjectives] = {{{[zoneIDs.UN_GORO_CRATER]={{50.54,7.74,}}}, Questie.ICON_TYPE_EVENT, l10n("Travel through the Waygate"),}}, + }, + [12801] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Highlord Darion Mograine"), 0, {{"monster", 29173}}}, + {{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{38.8,38.4}}}, Questie.ICON_TYPE_EVENT, l10n("The Light of Dawn Uncovered"),}, + }, + }, + [12802] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Desperate Mojo"),0,{{"object", 188358}}}}, + [questKeys.requiredSourceItems] = {35797,36739,36743}, + }, + [12803] = { + [questKeys.requiredSpell] = 54197, + }, + [12804] = { + [questKeys.preQuestSingle] = {12520}, + }, + [12805] = { + [questKeys.objectives] = {{{29124,}}}, + }, + [12807] = { + [questKeys.objectives] = {{{29344,}}}, + }, + [12808] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12809] = { + [questKeys.preQuestSingle] = {12808}, + }, + [12810] = { + [questKeys.objectives] = {{{29392,}}}, + }, + [12811] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12812] = { + [questKeys.preQuestSingle] = {12811}, + }, + [12813] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29329,29330,29333,29338},29398}}}, + [questKeys.preQuestSingle] = {12807}, + }, + [12814] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29406,29405},29406}}}, + }, + [12815] = { + [questKeys.preQuestSingle] = {12814}, + }, + [12816] = { + [questKeys.triggerEnd] = {"Investigate a circle",{[zoneIDs.EVERSONG_WOODS]={{56.5,52,},},},}, + }, + [12817] = { + [questKeys.triggerEnd] = {"Investigate a circle",{[zoneIDs.AZUREMYST_ISLE]={{34.9,45.5,},},},}, + }, + [12821] = { + [questKeys.name] = "Cell Block Tango", + [questKeys.triggerEnd] = {"Garm Teleporter Activated",{[zoneIDs.STORM_PEAKS]={{50.7,81.9,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Activate the teleporter"), 0, {{"object", 191574}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12820,12828,12832}, + [questKeys.sourceItemId] = 40731, + }, + [12823] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place Hardpacked Explosive Bundle at Frostgut's Altar"), 0, {{"object", 191842}}}}, + }, + [12828] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Retrieve U.D.E.D."), 0, {{"object", 191553}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Use U.D.E.D on Ironwool Mammoth"), 0, {{"monster", 29402}}}, + }, + }, + [12831] = { + [questKeys.preQuestSingle] = {}, + }, + [12832] = { + [questKeys.triggerEnd] = {"Escort the Injured Goblin Miner to K3.",{[zoneIDs.STORM_PEAKS]={{40.2,79,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Start the escort"), 0, {{"monster", 29434}}}}, + }, + [12838] = { + [questKeys.preQuestSingle] = {12807}, + }, + [12842] = { + [questKeys.triggerEnd] = {"Weapon emblazoned",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{47.28,31.36},{47.82,27.42},{50.43,28.17},},},}, + }, + [12847] = { + [questKeys.triggerEnd] = {"Arete's Gate summoned",{[zoneIDs.ICECROWN]={{9.53,47.01}}}}, + }, + [12851] = { + [questKeys.name] = "Bearly Hanging On", + [questKeys.objectives] = {{{29358},{29351}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount Icefang"), 0, {{"monster", 29598}}}, + }, + }, + [12852] = { + [questKeys.objectives] = {{{29621,}}}, + }, + [12855] = { + [questKeys.requiredSourceItems] = {40971,41430}, + [questKeys.preQuestSingle] = {12854}, + [questKeys.extraObjectives] = {{{[zoneIDs.STORM_PEAKS]={{36.4,64.2}}}, Questie.ICON_TYPE_EVENT, l10n("Use Frosthound's Collar at the Abandoned Camp")}}, + }, + [12856] = { + [questKeys.objectives] = {{{29639,"Rescued Brunnhildar Prisoners"},{29708,"Freed Proto-Drakes"}}}, + [questKeys.extraObjectives] = { + {{[zoneIDs.STORM_PEAKS]={{62.00,59.50}}}, Questie.ICON_TYPE_EVENT, l10n("Fly freed Proto-Drakes to safety while carrying rescued Brunnhildar Prisoners"),}, + }, + }, + [12858] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {40971,41130}, + }, + [12860] = { + [questKeys.requiredSourceItems] = {40971,41179}, + [questKeys.objectives] = {{{29746,"Hidden Data gathered"}}}, + }, + [12862] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Ricket for transportation"), 0, {{"monster", 29428}}}}, + }, + [12864] = { + [questKeys.objectives] = {{{29811,"Locate Missing Scout"}}}, + }, + [12865] = { + [questKeys.objectives] = {{{29854,"Stormcrest Eagles fed"}}}, + [questKeys.preQuestSingle] = {12863}, + }, + [12869] = { + [questKeys.preQuestGroup] = {12867,13417}, + }, + [12871] = { + [questKeys.requiredSourceItems] = {40971,41258}, + [questKeys.preQuestSingle] = {12872}, + }, + [12872] = { + [questKeys.requiredSourceItems] = {40971,44704}, + }, + [12874] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Fjorlin Frostbrow"), 0, {{"monster", 29732}}}}, + }, + [12876] = { + [questKeys.preQuestSingle] = {12874}, + }, + [12885] = { + [questKeys.preQuestSingle] = {12872}, + [questKeys.exclusiveTo] = {12930}, + [questKeys.sourceItemId] = 40971, + }, + [12886] = { + [questKeys.objectives] = {{{29694}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Hyldnir Harpoon to land on nearby Proto-Drakes"), 0, {{"monster", 29625}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Hyldnir Harpoon on Column Ornaments to dismount"), 0, {{"monster", 29754}}}, + }, + }, + [12887] = { + [questKeys.objectives] = {{{29747,"The Ocular has been destroyed"}}}, + }, + [12889] = { + [questKeys.requiredSkill] = {202,400}, + }, + [12892] = { + [questKeys.objectives] = {{{29747,"The Ocular has been destroyed"}}}, + }, + [12893] = { + [questKeys.objectives] = {{{29769},{29770},{29840}}}, + }, + [12896] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Tamper with General's Weapon Rack to summon General Lightsbane"), 0, {{"object", 191778},{"object", 191779}}}, + }, + }, + [12897] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Tamper with General's Weapon Rack to summon General Lightsbane"), 0, {{"object", 191778},{"object", 191779}}}, + }, + }, + [12906] = { + [questKeys.objectives] = {{{30146,"Exhausted Vrykul Disciplined"}}}, + }, + [12910] = { + [questKeys.sourceItemId] = 40971, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount Frostbite to track scent"), 0, {{"monster", 29857}}}, + }, + }, + [12913] = { + [questKeys.sourceItemId] = 40971, + }, + [12916] = { + [questKeys.objectives] = {nil,{{400065,"Scourge Enclosure Blown Up"}}}, + }, + [12919] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Let Gymer know you're ready"), 0, {{"monster", 29647}}}, + {{[zoneIDs.ZUL_DRAK]={{26.71,57.29}}}, Questie.ICON_TYPE_EVENT, l10n("Slay Scourge while riding Gymer"),}, + }, + }, + [12920] = { + [questKeys.preQuestSingle] = {12917}, + }, + [12924] = { + [questKeys.objectives] = {{{30099,"Fjorn's Anvil Brought to Dun Niffelem"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Pick up 'You Can't Miss Him' (12966)"), 0, {{"monster", 30105}}, {["hideIfQuestActive"] = 12966}}, + }, + }, + [12925] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12926] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {40971,41130}, + }, + [12927] = { + [questKeys.requiredSourceItems] = {40971,41179}, + [questKeys.objectives] = {{{29746,"Hidden Data gathered"}}}, + }, + [12928] = { + [questKeys.requiredSourceItems] = {40971,44704}, + }, + [12929] = { + [questKeys.preQuestSingle] = {12928}, + [questKeys.exclusiveTo] = {12930}, + [questKeys.sourceItemId] = 40971, + }, + [12932] = { -- This is the version of the quest you get if you have NOT completed 9977 + [questKeys.objectives] = {{{30014,"Yggdras Defeated"}}}, + [questKeys.exclusiveTo] = {12954,9977}, + [questKeys.nextQuestInChain] = 12933, + }, + [12933] = { + [questKeys.objectives] = {{{30017,"Stinkbeard Defeated"}}}, + [questKeys.preQuestSingle] = {12932,12954}, + }, + [12934] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30019,30024,30025,30026},30019,"Elemental Lord Defeated"}}}, + }, + [12935] = { + [questKeys.objectives] = {{{30020,"Orinoko Tuskbreaker Defeated"}}}, + }, + [12936] = { + [questKeys.objectives] = {{{30023,"Korrak the Bloodrager Defeated"}}}, + }, + [12939] = { + [questKeys.objectives] = {{{30037,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Challenge Flag on sparring Mjordin Combatants"), 0, {{"monster", 30037}}}, + }, + }, + [12940] = { + [questKeys.startedBy] = {nil,{400017}}, + [questKeys.finishedBy] = {nil,{400017}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12941] = { + [questKeys.startedBy] = {nil,{400016}}, + [questKeys.finishedBy] = {nil,{400016}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12942] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12944] = { + [questKeys.startedBy] = {nil,{400038}}, + [questKeys.finishedBy] = {nil,{400038}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12945] = { + [questKeys.startedBy] = {nil,{400039}}, + [questKeys.finishedBy] = {nil,{400039}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12946] = { + [questKeys.startedBy] = {nil,{400019}}, + [questKeys.finishedBy] = {nil,{400019}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12947] = { + [questKeys.startedBy] = {nil,{400018}}, + [questKeys.finishedBy] = {nil,{400018}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12948] = { + [questKeys.objectives] = {{{30022,"Vladof the Butcher Defeated"}}}, + }, + [12950] = { + [questKeys.startedBy] = {nil,{400032}}, + [questKeys.finishedBy] = {nil,{400032}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12953] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Harpoon Guns to burn Dry Haystacks"), 0, {{"monster", 30066}}}, + }, + }, + [12954] = { + [questKeys.objectives] = {{{30014,"Yggdras Defeated"}}}, + [questKeys.preQuestSingle] = {9977}, + [questKeys.exclusiveTo] = {12932}, + [questKeys.nextQuestInChain] = 12933, + }, + [12957] = { + [questKeys.objectives] = {{{29384},{29369}}}, + }, + [12966] = { + [questKeys.preQuestGroup] = {12915,12956}, + [questKeys.requiredMinRep] = {1119,0}, + [questKeys.finishers] = {{30127}}, + }, + [12967] = { + [questKeys.objectives] = {{{30120}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Ride Snorri"), 0, {{"monster", 30123}}}}, + }, + [12968] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12970] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Listen to Lok'lira's proposal"), 0, {{"monster", 29975}}}, + }, + }, + [12973] = { + [questKeys.objectives] = {{{30405,"Accompany Brann Bronzebeard to Frosthold."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in Brann's Flying Machine"), 0, {{"monster", 30134}}}}, + [questKeys.preQuestSingle] = {12880}, + }, + [12974] = { + [questKeys.exclusiveTo] = {12932,12954}, + }, + [12975] = { + [questKeys.preQuestSingle] = {12924}, + }, + [12977] = { + [questKeys.name] = "Hodir's Call", + [questKeys.objectives] = {{{29974,"Niffelem Forefather freed"},},nil,nil,nil,{{{30144,30135},30144,},},}, + [questKeys.preQuestSingle] = {12976}, + }, + [12978] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29370,29374,29380},29370,"Nidavelir Stormforged slain"}}}, + }, + [12979] = { + [questKeys.objectives] = {nil,nil,{{42204},},nil,nil,}, + }, + [12981] = { + [questKeys.preQuestSingle] = {12967}, + }, + [12982] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30186,30194,30195,30196},30186,"Ebon Blade Prisoners set free"}}}, + }, + [12985] = { + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Diamond Tipped Pick on the corpses of Dead Iron Giants"), 0, {{"monster", 29914},{"monster", 30163}}}}, + }, + [12987] = { + [questKeys.name] = "Placing Hodir's Helm", + [questKeys.requiredMinRep] = {1119,3000}, + }, + [12994] = { + [questKeys.requiredMinRep] = {1119,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Ethereal Worg's Fang"), 0, {{"monster", 32569}}}}, + }, + [12995] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29915,29919,30037,30243,30250,30409,30475,30483,30484,30632,30725,30751,29880},29880,"Ebon Blade Banner planted near vrykul corpse"}}}, + }, + [12996] = { + [questKeys.objectives] = {{{29352,"Kirgaraak Defeated"}}}, + }, + [12998] = { + [questKeys.objectives] = {nil,{{192181,"Attempt to secure the Heart of the Storm"}}}, + }, + [13001] = { + [questKeys.name] = "Forging Hodir's Spear", + [questKeys.requiredMinRep] = {1119,9000}, + }, + [13003] = { + [questKeys.name] = "How To Slay Your Dragon", + [questKeys.objectives] = {{{30275,"Wild Wyrm Slain"}}}, + [questKeys.preQuestSingle] = {13001}, + }, + [13005] = { + [questKeys.objectives] = {{{29984,"Iron Sentinel slain"},{29978,"Iron Dwarf Assailant slain"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Use the Horn of the Peaks and call on the Earthen to defeat Iron Dwarves and Iron Sentinels"), 0, {{"monster", 29984},{"monster",29978}}}}, + [questKeys.preQuestSingle] = {13057}, + }, + [13006] = { + [questKeys.name] = "A Viscous Cleaning", + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.preQuestSingle] = {12987}, + }, + [13007] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount Tamed Jormungar to fight Iron Colossus"),0,{{"monster", 30301},{"object", 192262}}},}, + }, + [13008] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30273,30268,30274},30273,}}}, + }, + [13010] = { + [questKeys.objectives] = {{{30105, nil, {["hideIfQuestActive"] = 12966}}},nil,nil,{1119,3000}}, + }, + [13011] = { + [questKeys.name] = "Culling Jorcuttar", + [questKeys.objectivesText] = {"King Jokkum in Dun Niffelem wants you to slay Jorcuttar in Hibernal Cavern."}, + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.requiredSourceItems] = {42733}, + [questKeys.extraObjectives] = {{{[zoneIDs.STORM_PEAKS]={{54.71,60.79}}}, Questie.ICON_TYPE_EVENT, l10n("Place Icemaw Bear Flank"), 0}} + }, + [13012] = { + [questKeys.startedBy] = {{30348}}, + [questKeys.finishedBy] = {{30348}}, + }, + [13013] = { + [questKeys.startedBy] = {{30357}}, + [questKeys.finishedBy] = {{30357}}, + }, + [13014] = { + [questKeys.startedBy] = {{30358}}, + [questKeys.finishedBy] = {{30358}}, + }, + [13015] = { + [questKeys.startedBy] = {{30359}}, + [questKeys.finishedBy] = {{30359}}, + }, + [13016] = { + [questKeys.startedBy] = {{30360}}, + [questKeys.finishedBy] = {{30360}}, + }, + [13017] = { + [questKeys.startedBy] = {{30531}}, + [questKeys.finishedBy] = {{30531}}, + }, + [13018] = { + [questKeys.startedBy] = {{30362}}, + [questKeys.finishedBy] = {{30362}}, + }, + [13019] = { + [questKeys.startedBy] = {{30363}}, + [questKeys.finishedBy] = {{30363}}, + }, + [13020] = { + [questKeys.startedBy] = {{30375}}, + [questKeys.finishedBy] = {{30375}}, + }, + [13021] = { + [questKeys.startedBy] = {{30536}}, + [questKeys.finishedBy] = {{30536}}, + }, + [13022] = { + [questKeys.startedBy] = {{30533}}, + [questKeys.finishedBy] = {{30533}}, + }, + [13023] = { + [questKeys.startedBy] = {{30534}}, + [questKeys.finishedBy] = {{30534}}, + }, + [13024] = { + [questKeys.startedBy] = {{30365}}, + [questKeys.finishedBy] = {{30365}}, + }, + [13025] = { + [questKeys.startedBy] = {{30367}}, + [questKeys.finishedBy] = {{30367}}, + }, + [13026] = { + [questKeys.startedBy] = {{30368}}, + [questKeys.finishedBy] = {{30368}}, + }, + [13027] = { + [questKeys.startedBy] = {{30369}}, + [questKeys.finishedBy] = {{30369}}, + }, + [13028] = { + [questKeys.startedBy] = {{30370}}, + [questKeys.finishedBy] = {{30370}}, + }, + [13029] = { + [questKeys.startedBy] = {{30371}}, + [questKeys.finishedBy] = {{30371}}, + }, + [13030] = { + [questKeys.startedBy] = {{30372}}, + [questKeys.finishedBy] = {{30372}}, + }, + [13031] = { + [questKeys.startedBy] = {{30373}}, + [questKeys.finishedBy] = {{30373}}, + }, + [13032] = { + [questKeys.startedBy] = {{30374}}, + [questKeys.finishedBy] = {{30374}}, + }, + [13033] = { + [questKeys.startedBy] = {{30364}}, + [questKeys.finishedBy] = {{30364}}, + }, + [13034] = { + [questKeys.preQuestSingle] = {}, + }, + [13035] = { + [questKeys.preQuestSingle] = {13057}, + }, + [13037] = { + [questKeys.objectives] = {{{30395}}}, + }, + [13038] = { + [questKeys.objectives] = {{{30448}}}, + [questKeys.preQuestSingle] = {13034}, + }, + [13039] = { + [questKeys.preQuestSingle] = {13036}, + }, + [13040] = { + [questKeys.preQuestSingle] = {13036}, + }, + [13042] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.objectives] = {{{30409,"Information beaten out of Apprentice Osterkilgr"},{30409}}}, + }, + [13043] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.startedBy] = {{30409},nil,{42772}}, + [questKeys.requiredSourceItems] = {}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Nergeld"), 0, {{"monster", 30403}}}, + }, + }, + [13044] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13008,13039,13040}, + }, + [13045] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Argent Skytalon"), 0, {{"monster", 30500}}}, + {{[zoneIDs.ICECROWN]={{86.85,76.61}}}, Questie.ICON_TYPE_EVENT, l10n("Drop Off Captured Crusader"), 0}, + }, + }, + [13046] = { + [questKeys.objectives] = {{{30422}}}, + [questKeys.requiredMinRep] = {1119,21000}, + }, + [13047] = { + [questKeys.preQuestGroup] = {13035,13005}, + [questKeys.objectives] = {{{30399,"Witness the Reckoning"}}}, + }, + [13048] = { + [questKeys.objectives] = {{{80000}}}, + [questKeys.preQuestGroup] = {13037,13038}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Attune the Lorehammer"), 0, {{"object", 192541},{"object", 192542},{"object", 192543},{"object", 192544},{"object", 192545},{"object", 192546}}}, + }, + }, + [13049] = { + [questKeys.preQuestGroup] = {13037,13038}, + }, + [13058] = { + [questKeys.preQuestGroup] = {13048,13049}, + [questKeys.extraObjectives] = { + {{[zoneIDs.STORM_PEAKS]={{64.4,46.7}}}, Questie.ICON_TYPE_OBJECT, l10n("Use the Lorehammer to travel back in time"), 0}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Defeat the North Wind"), 0, {{"monster", 30474}}}, + }, + }, + [13059] = { + [questKeys.objectives] = {nil,{{192560}},nil,nil,{{{30475},32821,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Volgur"), 0, {{"monster", 30483}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Brita"), 0, {{"monster", 30484}}}, + }, + }, + [13060] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Ricket for transportation"), 0, {{"monster", 29428}}}, + }, + }, + [13064] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Listen to Thorim's history"), 0, {{"monster", 29445}}}, + }, + }, + [13065] = { + [questKeys.startedBy] = {{30537}}, + [questKeys.finishedBy] = {{30537}}, + }, + [13066] = { + [questKeys.startedBy] = {{30535}}, + [questKeys.finishedBy] = {{30535}}, + }, + [13067] = { + [questKeys.startedBy] = {{30538}}, + [questKeys.finishedBy] = {{30538}}, + }, + [13068] = { + [questKeys.preQuestSingle] = {13141}, + }, + [13069] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 30337}}}}, + }, + [13071] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 30272}}}}, + }, + [13073] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Speak to Arch Druid Lilliandra for transportation to Moonglade"), 0, {{"monster", 30630}}}}, + }, + [13086] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Argent Cannon"), 0, {{"monster", 30236}}}, + }, + }, + [13091] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30725,29880,30632,30243,30250},30644,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Possess a Water Terror"), 0, {{"object", 192774}}}, + }, + }, + [13092] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.specialFlags] = 0, + }, + [13093] = { + [questKeys.preQuestSingle] = {13092}, + }, + [13098] = { + [questKeys.preQuestSingle] = {}, + }, + [13106] = { + [questKeys.preQuestSingle] = {12896,12897}, + [questKeys.exclusiveTo] = {13119,13120}, + }, + [13109] = { + [questKeys.preQuestSingle] = {13047}, + }, + [13110] = { + [questKeys.objectives] = {{{30202}}}, + [questKeys.preQuestSingle] = {13104}, + }, + [13117] = { + [questKeys.preQuestSingle] = {}, + }, + [13118] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13121] = { + [questKeys.objectives] = {nil,{{192861}}}, + }, + [13122] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13125] = { + [questKeys.preQuestGroup] = {13122,13118}, + }, + [13129] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Dip Kurzel's Blouse Scrap on the remains of Novos the Summoner"), 0, {{"monster", 26631}}}}, + }, + [13130] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13133] = { + [questKeys.objectives] = {{{30886}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Wake Slumbering Mjordin until you find Iskalder"), 0, {{"monster", 30718}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Iskalder delivered to The Bone Witch"), 0, {{"monster", 30232}}}, + }, + }, + [13134] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13135] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13136] = { + [questKeys.startedBy] = {{30597},nil,{43242}}, + [questKeys.objectives] = {nil,nil,{{43259}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13137] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Battlescar Signal Fire to summon Iskalder"), 0, {{"object", 193024}}}, + }, + }, + [13138] = { + [questKeys.preQuestSingle] = {13136}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Bag of Jagged Shards near Malykriss Furnace"), 0, {{"object", 193004}}}}, + }, + [13139] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13125,13130,13135}, + }, + [13140] = { + [questKeys.preQuestSingle] = {13136}, + }, + [13141] = { + [questKeys.objectives] = {{{30989,"Battle for Crusaders' Pinnacle"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Plant the Blessed Banner of the Crusade"), 0, {{"object", 193003}}}}, + }, + [13142] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Blow the War Horn of Jotunheim to challenge Overthane Balargarde"), 0, {{"object", 193028}}}, + }, + }, + [13143] = { + [questKeys.objectives] = {{{30894}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Lead a subdued Lithe Stalker to the cliff above Vereth the Cunning"), 0, {{"monster", 31049}}}}, + }, + [13144] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30689,31048},30689,}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13152,13211}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Free Burning Skeletons to destroy Chained Abominations"), 0, {{"object", 193060}}}}, + }, + [13145] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13146] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Drag Scourge Bombs to Lumbering Atrocities"), 0, {{"monster", 30920}}}, + }, + }, + [13147] = { + [questKeys.objectives] = {{{30922}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13149] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Plagued Grain Crates Dispelled: 0/1"), 0, {{"object", 190094}}}}, + }, + [13151] = { + [questKeys.objectives] = {{{26533,"Mal'Ganis Defeated"}}}, + }, + [13152] = { + [questKeys.preQuestSingle]= {}, + [questKeys.preQuestGroup] = {13134,13138,13140}, + [questKeys.objectives] = {{{30993,"Patches freed"},{30992,"Help Patches kill Doctor Sabnok"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Free Patches"), 0, {{"object", 193025}}}}, + }, + [13153] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13154,13156,13195,13196,13197,13198}, + }, + [13154] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13153,13156,13195,13196,13197,13198}, + }, + [13155] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13172,13174}, + }, + [13156] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13153,13154,13195,13196,13197,13198}, + }, + [13160] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13164] = { + [questKeys.preQuestSingle]= {}, + [questKeys.preQuestGroup] = {13161,13162,13163}, + }, + [13168] = { + [questKeys.triggerEnd] = {"Seize Control of an Eidolon Watcher", {[zoneIDs.ICECROWN]={{44.19,24.69}}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Eye of Dominion"), 0, {{"object", 193058}}}}, + }, + [13169] = { + [questKeys.objectives] = {{{30952,"Hungering Plaguehounds fed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13170] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13171] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13172] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13169,13170,13171}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Speak to Keritose Bloodblade to secure a Skeletal Gryphon"), 0, {{"monster", 30946}}}}, + }, + [13174] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13169,13170,13171}, + }, + [13177] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13179}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{30739,39019},39019,"Horde members slain"}}}, + }, + [13178] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13180}, + }, + [13179] = { + [questKeys.exclusiveTo] = {13177}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{30739,39019},39019,"Horde members slain"}}}, + }, + [13180] = { + [questKeys.exclusiveTo] = {13178}, + }, + [13181] = { + [questKeys.triggerEnd] = {"Victory in Lake Wintergrasp", {[zoneIDs.DALARAN]={{33,67.2}}}}, + }, + [13183] = { + [questKeys.triggerEnd] = {"Victory in Lake Wintergrasp", {[zoneIDs.DALARAN]={{58.2,25.6}}}}, + }, + [13185] = { + [questKeys.exclusiveTo] = {13223}, + }, + [13186] = { + [questKeys.exclusiveTo] = {13222}, + }, + [13190] = { + [questKeys.requiredSourceItems] = {43494}, + [questKeys.objectives] = {nil,{{193057,"Ahn'kahar Watcher Corpse Burned"}}}, + }, + [13191] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {{31106}}, + [questKeys.exclusiveTo] = {13192,13193,13194,13199,13200,13201,13202}, + }, + [13192] = { + [questKeys.exclusiveTo] = {13191,13193,13194,13199,13200,13201,13202}, + }, + [13193] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13191,13192,13194,13199,13200,13201,13202}, + }, + [13194] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13191,13192,13193,13199,13200,13201,13202}, + }, + [13195] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13196,13197,13198}, + }, + [13196] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13197,13198}, + }, + [13197] = { + [questKeys.finishedBy] = {{31108}}, + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13196,13198}, + }, + [13198] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13196,13197}, + }, + [13199] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13200,13201,13202}, + }, + [13200] = { + [questKeys.finishedBy] = {{31106}}, + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13201,13202}, + }, + [13201] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13200,13202}, + }, + [13202] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13200,13201}, + }, + [13203] = { + [questKeys.exclusiveTo] = {11528,13966}, + }, + [13204] = { + [questKeys.startedBy] = {{30329},nil,{43512}}, + }, + [13211] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13134,13138,13140}, + }, + [13214] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31191,31192,31193,31194,31195,31196,},31191}}}, + }, + [13215] = { + [questKeys.objectives] = {{{31222}}}, + }, + [13216] = { + [questKeys.objectives] = {{{31242}}}, + }, + [13217] = { + [questKeys.objectives] = {{{31271}}}, + }, + [13218] = { + [questKeys.objectives] = {{{31277}}}, + }, + [13219] = { + [questKeys.objectives] = {{{14688}}}, + }, + [13220] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Crusader Olakin's Remains at the Sanctum of Reanimation Slab"), 0, {{"object", 193090}}}}, + }, + [13221] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13222] = { + [questKeys.exclusiveTo] = {13186}, + }, + [13223] = { + [questKeys.exclusiveTo] = {13185}, + }, + [13226] = { + [questKeys.nextQuestInChain] = 13036, + }, + [13227] = { + [questKeys.nextQuestInChain] = 13036, + }, + [13228] = { + [questKeys.objectives] = {{{31273,"Dying Berserker Questioned"}}}, + [questKeys.childQuests] = {13230}, + [questKeys.preQuestSingle] = {13224}, + }, + [13229] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13230] = { + [questKeys.parentQuest] = 13228, + [questKeys.preQuestSingle] = {13228}, + }, + [13231] = { + [questKeys.objectives] = {{{31304,"Dying Soldier Questioned"}}}, + [questKeys.childQuests] = {13232}, + [questKeys.preQuestSingle] = {13225}, + }, + [13232] = { + [questKeys.objectives] = {{{31304,"Dying Soldiers Slain"}}}, + [questKeys.parentQuest] = 13231, + [questKeys.preQuestSingle] = {13231}, + }, + [13233] = { + [questKeys.triggerEnd] = {"Kill horde players in Icecrown", {[zoneIDs.ICECROWN]={{60.9,41.3}}}}, + [questKeys.preQuestSingle] = {13231}, + }, + [13234] = { + [questKeys.preQuestSingle] = {13228}, + [questKeys.triggerEnd] = {"Kill alliance players in Icecrown", {[zoneIDs.ICECROWN]={{60.9,41.3}}}}, + }, + [13235] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Margrave Dhakar to fight Morbidus"), 0, {{"monster", 31306}}}}, + }, + [13236] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31254,32414,31276},31329}}}, + }, + [13238] = { + [questKeys.preQuestSingle] = {13228}, + }, + [13239] = { + [questKeys.preQuestSingle] = {13238}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13240] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13241,13243,13244}, + }, + [13241] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13243,13244}, + }, + [13242] = { + [questKeys.preQuestSingle] = {12500}, + }, + [13243] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13241,13244}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{27744,28341},27744}}}, + }, + [13244] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13241,13243}, + }, + [13245] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13246] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13247] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13248] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13249] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13250] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13251,13252,13253,13254,13255,13256,14199}, + }, + [13251] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13252,13253,13254,13255,13256,14199}, + }, + [13252] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13253,13254,13255,13256,14199}, + }, + [13253] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13254,13255,13256,14199}, + }, + [13254] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13255,13256,14199}, + }, + [13255] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13256,14199}, + }, + [13256] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,14199}, + }, + [13258] = { + [questKeys.preQuestGroup] = {12938,13224}, + }, + [13260] = { + [questKeys.preQuestSingle] = {13228}, + }, + [13261] = { + [questKeys.preQuestSingle] = {13239}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13264] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13237}, + }, + [13265] = { + [questKeys.requiredSpell] = -59390, + }, + [13267] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Begin the assault!"), 0, {{"monster", 31650}}}}, + }, + [13268] = { + [questKeys.requiredSpell] = -59390, + }, + [13269] = { + [questKeys.requiredSpell] = -59390, + }, + [13270] = { + [questKeys.requiredSpell] = -59390, + }, + [13272] = { + [questKeys.requiredSpell] = -59390, + }, + [13273] = { + [questKeys.preQuestSingle] = {12928}, + [questKeys.sourceItemId] = 40971, + }, + [13274] = { + [questKeys.sourceItemId] = 40971, + }, + [13276] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13264}, + }, + [13277] = { + [questKeys.preQuestSingle] = {13237}, + }, + [13278] = { + [questKeys.preQuestSingle] = {13277}, + }, + [13279] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + }, + [13280] = { + [questKeys.preQuestSingle] = {13296}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Plant Alliance Battle Standard"), 0, {{"object", 193565}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get in the Jumpbot"), 0, {{"monster", 31736}}}, + }, + }, + [13281] = { + [questKeys.sourceItemId] = 44010, + [questKeys.preQuestSingle] = {13279}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + }, + [13283] = { + [questKeys.preQuestSingle] = {13293}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Plant Horde Battle Standard"), 0, {{"object", 193565}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get in the Jumpbot"), 0, {{"monster", 31770}}}, + }, + }, + [13284] = { + [questKeys.preQuestSingle] = {13341}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31701,31737},31701,"Alliance troops escorted to Ymirheim"}}}, + }, + [13285] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {}, + }, + [13286] = { + [questKeys.preQuestSingle] = {13231}, + }, + [13288] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13287}, + }, + [13289] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13288}, + }, + [13290] = { + [questKeys.preQuestSingle] = {13231}, + }, + [13291] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13292] = { + [questKeys.preQuestSingle] = {13291}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Frostbrood Skytalons Destroyed"}}}, + }, + [13293] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13294] = { + [questKeys.preQuestSingle] = {13287}, + }, + [13295] = { + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + }, + [13296] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13297] = { + [questKeys.sourceItemId] = 44010, + [questKeys.preQuestSingle] = {13295}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + }, + [13298] = { + [questKeys.preQuestSingle] = {13294}, + }, + [13300] = { + [questKeys.objectives] = {{{31397,"Saronite Mine Slave rescued"}}}, + [questKeys.preQuestSingle] = {13225}, + }, + [13301] = { + [questKeys.preQuestSingle] = {13340}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31832,31833},31832,"Horde troops escorted to Ymirheim"}}}, + }, + [13302] = { + [questKeys.objectives] = {{{31397,"Saronite Mine Slave rescued"}}}, + [questKeys.preQuestSingle] = {13224}, + }, + [13305] = { + [questKeys.preQuestSingle] = {13304}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Board Refurbished Demolisher"), 0, {{"monster", 32370}}}}, + }, + [13306] = { + [questKeys.preQuestSingle] = {13366}, + }, + [13307] = { + [questKeys.preQuestSingle] = {13306}, + }, + [13308] = { + [questKeys.preQuestSingle] = {13224,13225}, + }, + [13309] = { + [questKeys.preQuestSingle] = {13341}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Hop on the turret"), 0, {{"monster", 32227}}}}, + [questKeys.objectives] = {{{32222,"Skybreaker Infiltrators dropped"}}}, + }, + [13310] = { + [questKeys.preQuestSingle] = {13340}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Hop on the turret"), 0, {{"monster", 31884}}}}, + [questKeys.objectives] = {{{31882,"Skybreaker Infiltrators dropped"}}}, + }, + [13312] = { + [questKeys.preQuestGroup] = {13306,13367}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Rune of Distortion near Grimkor's Orb to summon Grimkor the Wicked"), 0, {{"object", 193622}}}}, + }, + [13313] = { + [questKeys.preQuestSingle] = {13306}, + }, + [13314] = { + [questKeys.preQuestSingle] = {13332}, + }, + [13315] = { + [questKeys.preQuestSingle] = {13288}, + }, + [13316] = { + [questKeys.preQuestSingle] = {13329}, + }, + [13318] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13315}, + }, + [13319] = { + [questKeys.preQuestSingle] = {13315}, + }, + [13320] = { + [questKeys.preQuestSingle] = {13315}, + }, + [13321] = { + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13322] = { + [questKeys.preQuestSingle] = {13321}, + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13323] = { + [questKeys.preQuestSingle] = {13318}, + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + }, + [13328] = { + [questKeys.preQuestSingle] = {13329}, + }, + [13329] = { + [questKeys.objectives] = {{{32467,"Skeletal Reaver bones dissolved"}}}, + [questKeys.preQuestGroup] = {13307,13312}, + }, + [13330] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13331] = { + [questKeys.preQuestSingle] = {13313}, + }, + [13332] = { + [questKeys.preQuestSingle] = {13345}, + }, + [13333] = { + [questKeys.preQuestSingle] = {13314}, + }, + [13334] = { + [questKeys.preQuestSingle] = {13332}, + }, + [13335] = { + [questKeys.objectives] = {{{32467,"Skeletal Reaver bones dissolved"}}}, + [questKeys.preQuestGroup] = {13334,13337}, + }, + [13336] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13337] = { + [questKeys.preQuestGroup] = {13332,13346}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Rune of Distortion near Grimkor's Orb to summon Grimkor the Wicked"), 0, {{"object", 193622}}}}, + }, + [13338] = { + [questKeys.preQuestSingle] = {13335}, + }, + [13339] = { + [questKeys.preQuestSingle] = {13335}, + }, + [13340] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13341] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13342] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13318}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13343] = { + [questKeys.objectives] = {{{32327,"Hourglass of Eternity protected from the Infinite Dragonflight."}}}, + }, + [13344] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13342}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13345] = { + [questKeys.sourceItemId] = 44459, + [questKeys.preQuestSingle] = {13318}, + }, + [13346] = { + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13347] = { + [questKeys.preQuestSingle] = {12499}, + }, + [13350] = { + [questKeys.preQuestSingle] = {13346}, + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13351] = { + [questKeys.preQuestSingle] = {13264}, + }, + [13352] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13351}, + }, + [13353] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13352}, + }, + [13354] = { + [questKeys.preQuestSingle] = {13351}, + }, + [13355] = { + [questKeys.preQuestSingle] = {13351}, + }, + [13356] = { + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13357] = { + [questKeys.preQuestSingle] = {13356}, + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13358] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13352}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13359] = { + [questKeys.preQuestSingle] = {13348}, + [questKeys.nextQuestInChain] = 13360, + }, + [13360] = { + [questKeys.preQuestSingle] = {13359}, + }, + [13361] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31395,32587,32588},32588,"The Prince's Destiny"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Pick it up"), 0, {{"object", 193980},{"object", 194023},{"object", 194024}}}}, + }, + [13363] = { + [questKeys.preQuestSingle] = {13362}, + }, + [13364] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tirion while wearing a Cultist Acolyte's Hood"), 0, {{"monster", 32239}}}}, + }, + [13365] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13358}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13366] = { + [questKeys.sourceItemId] = 44459, + [questKeys.preQuestSingle] = {13352}, + }, + [13367] = { + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13368] = { + [questKeys.preQuestSingle] = {13367}, + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13369] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Request a portal to Orgrimmar"), 0, {{"monster", 32346}}}}, + }, + [13372] = { + [questKeys.startedBy] = {{15989},nil,{44569}}, + }, + [13373] = { + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 0, {{"monster", 31839}}}}, + }, + [13375] = { + [questKeys.startedBy] = {{15989},nil,{44577}}, + }, + [13376] = { + [questKeys.preQuestSingle] = {13373}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 1, {{"monster", 31839}}}}, + [questKeys.objectives] = {{{32188},{32154},{31721}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13377] = { + [questKeys.objectives] = {{{32518,"Assist King Varian Wrynn"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Begin the assault!"), 0, {{"monster", 32401}}}}, + }, + [13379] = { + [questKeys.preQuestSingle] = {13239}, + }, + [13380] = { + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Karen No"), 0, {{"monster", 31648}}}}, + }, + [13382] = { + [questKeys.preQuestSingle] = {13380}, + [questKeys.objectives] = {{{32188},{32154},{31721}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13383] = { + [questKeys.preQuestSingle] = {13291}, + }, + [13386] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13225,12898}, + }, + [13390] = { + [questKeys.startedBy] = {{31237},{193195}}, + }, + [13394] = { + [questKeys.preQuestSingle] = {13393}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Board Refurbished Demolisher"), 0, {{"monster", 32370}}}}, + }, + [13395] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31254,32414,31276},31329}}}, + }, + [13398] = { + [questKeys.preQuestSingle] = {13396}, + }, + [13400] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31395,32587,32588},32588,"The Prince's Destiny"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Pick it up"), 0, {{"object", 193980},{"object", 194023},{"object", 194024}}}}, + }, + [13403] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tirion while wearing a Cultist Acolyte's Hood"), 0, {{"monster", 32239}}}}, + }, + [13404] = { + [questKeys.preQuestSingle] = {13380}, + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13405] = { + [questKeys.triggerEnd] = {"Victory in Strand of the Ancients", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,11338,14163}, + }, + [13406] = { + [questKeys.preQuestSingle] = {13373}, + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 1, {{"monster", 31839}}}}, + }, + [13407] = { + [questKeys.triggerEnd] = {"Victory in Strand of the Ancients", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,11342,14164}, + }, + [13408] = { + [questKeys.preQuestSingle] = {10143,10483}, + }, + [13409] = { + [questKeys.preQuestSingle] = {10124}, + }, + [13410] = { + [questKeys.preQuestSingle] = {10143,10483}, + }, + [13411] = { + [questKeys.preQuestSingle] = {10124}, + }, + [13413] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 1, {{"monster", 32548}}}}, + }, + [13414] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 1, {{"monster", 32548}}}}, + }, + [13415] = { + [questKeys.requiredSourceItems] = {41197,40971}, + }, + [13416] = { + [questKeys.requiredSourceItems] = {41197,40971}, + }, + [13418] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to the ship"), 1, {{"monster", 31081}}}}, + }, + [13419] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to the ship"), 1, {{"monster", 31085}}}}, + }, + [13420] = { + [questKeys.startedBy] = {nil,{193997},{44725}}, + [questKeys.requiredMinRep] = {1119,3000}, + }, + [13422] = { + [questKeys.preQuestSingle] = {12906}, + [questKeys.objectives] = {{{30146,"Exhausted Vrykul Disciplined"}}}, + [questKeys.exclusiveTo] = {13423,13424,13425}, + }, + [13423] = { + [questKeys.preQuestSingle] = {12971}, + [questKeys.exclusiveTo] = {13422,13424,13425}, + }, + [13424] = { + [questKeys.preQuestSingle] = {12997}, + [questKeys.exclusiveTo] = {13422,13423,13425}, + }, + [13425] = { + [questKeys.preQuestSingle] = {12925}, + [questKeys.exclusiveTo] = {13422,13423,13424}, + }, + [13426] = { + [questKeys.preQuestSingle] = {13285}, + [questKeys.nextQuestInChain] = 13034, + }, + [13427] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,14180}, + }, + [13428] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14181,14182,14183}, + }, + [13429] = { + [questKeys.triggerEnd] = {"Help Akama and Maiev enter the Black Temple.", {[zoneIDs.SHADOWMOON_VALLEY]={{71.05,46.11},{66.29,44.06}}}}, + [questKeys.exclusiveTo] = {10985}, + [questKeys.startedBy] = {{18528}}, + [questKeys.finishedBy] = {{18528}}, + [questKeys.preQuestSingle] = {10949}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Let Xi'ri know you're ready to battle"), 1, {{"monster", 18528}}}}, + }, + [13430] = { + [questKeys.exclusiveTo] = {10888}, + [questKeys.preQuestGroup] = {10884,10885,10886}, + }, + [13431] = { + [questKeys.exclusiveTo] = {10901}, + }, + [13432] = { + [questKeys.exclusiveTo] = {10445}, + }, + [13433] = { + [questKeys.startedBy] = {nil,{400041}}, + [questKeys.finishedBy] = {nil,{400041}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13434] = { + [questKeys.startedBy] = {nil,{400042}}, + [questKeys.finishedBy] = {nil,{400042}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13435] = { + [questKeys.startedBy] = {nil,{400040}}, + [questKeys.finishedBy] = {nil,{400040}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13436] = { + [questKeys.startedBy] = {nil,{400046}}, + [questKeys.finishedBy] = {nil,{400046}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13437] = { + [questKeys.startedBy] = {nil,{400045}}, + [questKeys.finishedBy] = {nil,{400045}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13438] = { + [questKeys.startedBy] = {nil,{400043}}, + [questKeys.finishedBy] = {nil,{400043}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13439] = { + [questKeys.startedBy] = {nil,{400044}}, + [questKeys.finishedBy] = {nil,{400044}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13440] = { + [questKeys.startedBy] = {nil,{194032}}, + [questKeys.finishedBy] = {nil,{194032}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13441] = { + [questKeys.startedBy] = {nil,{194033}}, + [questKeys.finishedBy] = {nil,{194033}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13442] = { + [questKeys.startedBy] = {nil,{194035}}, + [questKeys.finishedBy] = {nil,{194035}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13443] = { + [questKeys.startedBy] = {nil,{194036}}, + [questKeys.finishedBy] = {nil,{194036}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13444] = { + [questKeys.startedBy] = {nil,{194038}}, + [questKeys.finishedBy] = {nil,{194038}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13445] = { + [questKeys.startedBy] = {nil,{194040}}, + [questKeys.finishedBy] = {nil,{194040}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13446] = { + [questKeys.startedBy] = {nil,{194044}}, + [questKeys.finishedBy] = {nil,{194044}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13447] = { + [questKeys.startedBy] = {nil,{194045}}, + [questKeys.finishedBy] = {nil,{194045}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13448] = { + [questKeys.startedBy] = {nil,{400037}}, + [questKeys.finishedBy] = {nil,{400037}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13449] = { + [questKeys.startedBy] = {nil,{194049}}, + [questKeys.finishedBy] = {nil,{194049}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13450] = { + [questKeys.startedBy] = {nil,{194034}}, + [questKeys.finishedBy] = {nil,{194034}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13451] = { + [questKeys.startedBy] = {nil,{194037}}, + [questKeys.finishedBy] = {nil,{194037}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13452] = { + [questKeys.startedBy] = {nil,{400023}}, + [questKeys.finishedBy] = {nil,{400023}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13453] = { + [questKeys.startedBy] = {nil,{194039}}, + [questKeys.finishedBy] = {nil,{194039}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13454] = { + [questKeys.startedBy] = {nil,{194042}}, + [questKeys.finishedBy] = {nil,{194042}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13455] = { + [questKeys.startedBy] = {nil,{194043}}, + [questKeys.finishedBy] = {nil,{194043}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13456] = { + [questKeys.startedBy] = {nil,{400025}}, + [questKeys.finishedBy] = {nil,{400025}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13457] = { + [questKeys.startedBy] = {nil,{194046}}, + [questKeys.finishedBy] = {nil,{194046}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13458] = { + [questKeys.startedBy] = {nil,{194048}}, + [questKeys.finishedBy] = {nil,{194048}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13459] = { + [questKeys.startedBy] = {nil,{400026}}, + [questKeys.finishedBy] = {nil,{400026}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13460] = { + [questKeys.startedBy] = {nil,{400028}}, + [questKeys.finishedBy] = {nil,{400028}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13461] = { + [questKeys.startedBy] = {nil,{400033}}, + [questKeys.finishedBy] = {nil,{400033}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13462] = { + [questKeys.startedBy] = {nil,{400034}}, + [questKeys.finishedBy] = {nil,{400034}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13464] = { + [questKeys.startedBy] = {nil,{400020}}, + [questKeys.finishedBy] = {nil,{400020}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13465] = { + [questKeys.startedBy] = {nil,{400022}}, + [questKeys.finishedBy] = {nil,{400022}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13466] = { + [questKeys.startedBy] = {nil,{400021}}, + [questKeys.finishedBy] = {nil,{400021}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13467] = { + [questKeys.startedBy] = {nil,{400029}}, + [questKeys.finishedBy] = {nil,{400029}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13468] = { + [questKeys.startedBy] = {nil,{400030}}, + [questKeys.finishedBy] = {nil,{400030}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13469] = { + [questKeys.startedBy] = {nil,{400027}}, + [questKeys.finishedBy] = {nil,{400027}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13470] = { + [questKeys.startedBy] = {nil,{400024}}, + [questKeys.finishedBy] = {nil,{400024}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13471] = { + [questKeys.startedBy] = {nil,{400035}}, + [questKeys.finishedBy] = {nil,{400035}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13473] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13474] = { + [questKeys.startedBy] = {nil,{194081}}, + [questKeys.finishedBy] = {nil,{194081}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13481] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + }, + [13482] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + }, + [13485] = { + [questKeys.startedBy] = {{32801}}, + [questKeys.finishedBy] = {{32801}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13486] = { + [questKeys.startedBy] = {{32802}}, + [questKeys.finishedBy] = {{32802}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13487] = { + [questKeys.startedBy] = {{32803}}, + [questKeys.finishedBy] = {{32803}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13488] = { + [questKeys.startedBy] = {{32804}}, + [questKeys.finishedBy] = {{32804}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13489] = { + [questKeys.startedBy] = {{32805}}, + [questKeys.finishedBy] = {{32805}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13490] = { + [questKeys.startedBy] = {{32806}}, + [questKeys.finishedBy] = {{32806}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13491] = { + [questKeys.startedBy] = {{32807}}, + [questKeys.finishedBy] = {{32807}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13492] = { + [questKeys.startedBy] = {{32808}}, + [questKeys.finishedBy] = {{32808}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13493] = { + [questKeys.startedBy] = {{32809}}, + [questKeys.finishedBy] = {{32809}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13494] = { + [questKeys.startedBy] = {{32810}}, + [questKeys.finishedBy] = {{32810}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13495] = { + [questKeys.startedBy] = {{32811}}, + [questKeys.finishedBy] = {{32811}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13496] = { + [questKeys.startedBy] = {{32812}}, + [questKeys.finishedBy] = {{32812}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13497] = { + [questKeys.startedBy] = {{32813}}, + [questKeys.finishedBy] = {{32813}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13498] = { + [questKeys.startedBy] = {{32814}}, + [questKeys.finishedBy] = {{32814}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13499] = { + [questKeys.startedBy] = {{32815}}, + [questKeys.finishedBy] = {{32815}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13500] = { + [questKeys.startedBy] = {{32816}}, + [questKeys.finishedBy] = {{32816}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13501] = { + [questKeys.startedBy] = {nil,{400031}}, + [questKeys.finishedBy] = {nil,{400031}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13548] = { + [questKeys.startedBy] = {nil,{400036}}, + [questKeys.finishedBy] = {nil,{400036}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13549] = { + [questKeys.objectives] = {{{29327,"Female Frost Leopards recovered"},{29319,"Female Icepaw Bears recovered"},},nil,nil,nil,}, + }, + [13559] = { + [questKeys.preQuestSingle] = {12924}, + }, + [13592] = { -- HUMAN A Valiant's Field Training + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13744,13749,13760,13755}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13593] = { -- HUMAN Valiant Of Stormwind + [questKeys.preQuestSingle] = {13725,13713,13723,13724}, + [questKeys.exclusiveTo] = {13684,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13600] = { -- HUMAN A Worthy Weapon + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13603] = { -- HUMAN A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13600,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13604] = { + [questKeys.startedBy] = {{32867,32927},nil,{45506}}, + }, + [13607] = { + [questKeys.triggerEnd] = {"Entrance to Celestial Planetarium located",{[zoneIDs.THE_ARCHIVUM]={{60,46.3}},[zoneIDs.ULDUAR]={{-1,-1}}}}, + [questKeys.preQuestSingle] = {13604}, + }, + [13616] = { -- HUMAN The Edge Of Winter + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13600,13603,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13625] = { + [questKeys.objectives] = {{{33229,"Use Thrust on Melee Target"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"},{33272,"Use Charge on vulnerable Charge Target"}}}, + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13627] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {}, + }, + [13631] = { + [questKeys.startedBy] = {{32871},nil,{46052}}, + }, + [13633] = { + [questKeys.preQuestSingle] = {13667}, + }, + [13634] = { + [questKeys.preQuestSingle] = {13668}, + }, + [13662] = { + [questKeys.preQuestSingle] = {7722}, + [questKeys.requiredMinRep] = {59,3000}, + [questKeys.requiredMaxRep] = {59,9000}, + }, + [13663] = { + [questKeys.objectives] = {{{33513,"Black Knight's Gryphon taken"}},nil,{{45121},{45122}}}, + }, + [13664] = { + [questKeys.preQuestSingle] = {13700,13701}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33870}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Cavin"), 0, {{"monster", 33522}}}, + }, + }, + [13665] = { -- HUMAN The Grand Melee + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13745,13750,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33800}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13666] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13669,13670}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + }, + [13669] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13666,13670}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + }, + [13670] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13666,13669}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + }, + [13671] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679}, + [questKeys.parentQuest] = 0, + }, + [13672] = { + [questKeys.childQuests] = {}, + }, + [13673] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13674,13675,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + }, + [13674] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13673,13675,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + }, + [13675] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13673,13674,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + }, + [13676] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13680}, + [questKeys.parentQuest] = 0, + }, + [13677] = { + [questKeys.objectives] = {{{33229,"Use Thrust on Melee Target"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"},{33272,"Use Charge on vulnerable Charge Target"}}}, + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13678] = { + [questKeys.childQuests] = {}, + }, + [13679] = { + [questKeys.objectives] = {{{33448,"Argent Valiant defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire David"), 0, {{"monster", 33447}}}, + }, + }, + [13680] = { + [questKeys.objectives] = {{{33448,"Argent Valiant defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire David"), 0, {{"monster", 33447}}}, + }, + }, + [13681] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {}, + }, + [13682] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13697] = { -- ORC The Valiant's Charge + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13699] = { -- HUMAN The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33800}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13703] = { -- DWARF Valiant Of Ironforge + [questKeys.preQuestSingle] = {13699,13725,13724,13723}, + [questKeys.exclusiveTo] = {13685,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13704] = { -- GNOME Valiant Of Gnomeregan + [questKeys.preQuestSingle] = {13699,13725,13713,13724}, + [questKeys.exclusiveTo] = {13688,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13705] = { -- DRAENEI Valiant Of The Exodar + [questKeys.preQuestSingle] = {13699,13725,13713,13723}, + [questKeys.exclusiveTo] = {13690,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13706] = { -- NIGHT ELF Valiant Of Darnassus + [questKeys.preQuestSingle] = {13699,13724,13713,13723}, + [questKeys.exclusiveTo] = {13689,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13707] = { -- ORC Valiant Of Orgrimmar + [questKeys.preQuestSingle] = {13727,13728,13729,13731}, + [questKeys.exclusiveTo] = {13691,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13708] = { -- TROLL Valiant Of Sen'jin + [questKeys.preQuestSingle] = {13726,13728,13729,13731}, + [questKeys.exclusiveTo] = {13693,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13709] = { -- TAUREN Valiant Of Thunder Bluff + [questKeys.preQuestSingle] = {13726,13727,13729,13731}, + [questKeys.exclusiveTo] = {13694,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13710] = { -- UNDEAD Valiant Of Undercity + [questKeys.preQuestSingle] = {13726,13727,13728,13731}, + [questKeys.exclusiveTo] = {13695,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13711] = { -- BLOOD ELF Valiant Of Silvermoon + [questKeys.preQuestSingle] = {13726,13727,13728,13729}, + [questKeys.exclusiveTo] = {13696,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13713] = { -- DWARF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33795}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13714] = { -- DWARF The Valiant's Charge + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13715] = { -- GNOME The Valiant's Charge + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13716] = { -- DRAENEI The Valiant's Charge + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13717] = { -- NIGHT ELF The Valiant's Charge + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13718] = { -- HUMAN The Valiant's Charge + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13719] = { -- TROLL The Valiant's Charge + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13720] = { -- TAUREN The Valiant's Charge + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13721] = { -- UNDEAD The Valiant's Charge + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13722] = { -- BLOOD ELF The Valiant's Charge + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13723] = { -- GNOME The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33793}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13724] = { -- DRAENEI The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33790}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13725] = { -- NIGHT ELF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13726] = { -- ORC The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33799}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13727] = { -- TROLL The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13728] = { -- TAUREN The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33792}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13729] = { -- UNDEAD The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33798}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13731] = { -- BLOOD ELF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33791}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13741] = { -- DWARF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13742] = { -- DWARF A Worthy Weapon + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13741,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13743] = { -- DWARF The Edge Of Winter + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13741,13742,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13744] = { -- DWARF A Valiant's Field Training + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13592,13749,13755,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13745] = { -- DWARF The Grand Melee + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13665,13750,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33795}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13746] = { -- GNOME A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13747] = { -- GNOME A Worthy Weapon + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13746,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13748] = { -- GNOME The Edge Of Winter + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13746,13747,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13749] = { -- GNOME A Valiant's Field Training + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13592,13744,13755,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13750] = { -- GNOME The Grand Melee + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13665,13745,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33793}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13752] = { -- DRAENEI A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13753] = { -- DRAENEI A Worthy Weapon + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13754] = { -- DRAENEI The Edge Of Winter + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13755] = { -- DRAENEI A Valiant's Field Training + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13592,13744,13749,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13756] = { -- DRAENEI The Grand Melee + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13665,13745,13750,13761}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33790}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13757] = { -- NIGHT ELF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13758] = { -- NIGHT ELF A Worthy Weapon + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13759] = { -- NIGHT ELF The Edge Of Winter + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13760] = { -- NIGHT ELF A Valiant's Field Training + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13592,13744,13749,13755}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13761] = { -- NIGHT ELF The Grand Melee + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13665,13745,13750,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13762] = { -- ORC A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13763] = { -- ORC A Worthy Weapon + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13762,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13764] = { -- ORC The Edge Of Winter + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13762,13763,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13765] = { -- ORC A Valiant's Field Training + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13771,13776,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13767] = { -- ORC The Grand Melee + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13772,13777,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33799}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13768] = { -- TROLL A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13769] = { -- TROLL A Worthy Weapon + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13768,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13770] = { -- TROLL The Edge Of Winter + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13768,13769,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13771] = { -- TROLL A Valiant's Field Training + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13765,13776,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13772] = { -- TROLL The Grand Melee + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13767,13777,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13773] = { -- TAUREN A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13774] = { -- TAUREN A Worthy Weapon + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13773,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13775] = { -- TAUREN The Edge Of Winter + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13773,13774,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13776] = { -- TAUREN A Valiant's Field Training + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13765,13771,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13777] = { -- TAUREN The Grand Melee + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13767,13772,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33792}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13778] = { -- UNDEAD A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13779] = { -- UNDEAD A Worthy Weapon + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13780] = { -- UNDEAD The Edge Of Winter + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13781] = { -- UNDEAD A Valiant's Field Training + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13765,13771,13776,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13782] = { -- UNDEAD The Grand Melee + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13767,13772,13777,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33798}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13783] = { -- BLOOD ELF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13784] = { -- BLOOD ELF A Worthy Weapon + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13785] = { -- BLOOD ELF The Edge Of Winter + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13786] = { -- BLOOD ELF A Valiant's Field Training + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13765,13771,13776,13781}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13787] = { -- BLOOD ELF The Grand Melee + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13767,13772,13777,13782}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33791}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13788] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13789] = { + [questKeys.preQuestSingle] = {13700}, + }, + [13790] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794},{"monster", 33800},{"monster", 33793},{"monster", 33795},{"monster", 33790}}}}, + }, + [13791] = { + [questKeys.preQuestSingle] = {13700}, + }, + [13793] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794},{"monster", 33800},{"monster", 33793},{"monster", 33795},{"monster", 33790}}}}, + }, + [13795] = { + [questKeys.preQuestSingle] = {13702,13732,13733,13734,13735,13736,13737,13738,13739,13740}, + }, + [13809] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13810] = { + [questKeys.preQuestSingle] = {13701}, + }, + [13811] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796},{"monster", 33798},{"monster", 33799},{"monster", 33791},{"monster", 33792}}}}, + }, + [13812] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13813] = { + [questKeys.preQuestSingle] = {13701}, + }, + [13814] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796},{"monster", 33798},{"monster", 33799},{"monster", 33791},{"monster", 33792}}}}, + }, + [13816] = { + [questKeys.triggerEnd] = {"Entrance to Celestial Planetarium located",{[zoneIDs.THE_ARCHIVUM]={{60,46.3}},[zoneIDs.ULDUAR]={{-1,-1}}}}, + [questKeys.preQuestSingle] = {13817}, + }, + [13817] = { + [questKeys.preQuestSingle] = {}, + [questKeys.startedBy] = {{32867,32927},nil,{45857}}, + }, + [13819] = { + [questKeys.startedBy] = {{32871},nil,{46053}}, + }, + [13820] = { + [questKeys.startedBy] = {{33817}}, + [questKeys.finishedBy] = {{33434}}, + [questKeys.exclusiveTo] = {13627}, + }, + [13825] = { + [questKeys.startedBy] = {{8125}}, + [questKeys.finishedBy] = {{8125}}, + -- [questKeys.exclusiveTo] = {6610}, -- This is not ideal. You can only do 13825 if you completed 6610 prior to Wotlk. But now with Wotlk you do 6610 and then can not do 13825 + [questKeys.requiredSkill] = {185,225}, + }, + [13826] = { + [questKeys.startedBy] = {{12919}}, + [questKeys.finishedBy] = {{12919}}, + -- [questKeys.exclusiveTo] = {6607}, -- This is not ideal. You can only do 13826 if you completed 6607 prior to Wotlk. But now with Wotlk you do 6607 and then can not do 13826 + [questKeys.requiredSkill] = {356,225}, + }, + [13828] = { + [questKeys.objectives] = {{{33973,"Jeran Lockwood's advice"},{33229,"Use Thrust on Melee Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13829] = { + [questKeys.objectives] = {{{33973,"Jeran Lockwood's advice"},{33229,"Use Thrust on Melee Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13830] = { + [questKeys.triggerEnd] = {"Discover the Ghostfish mystery",{[zoneIDs.SHOLAZAR_BASIN]={{48.89,62.29,},},},}, + }, + [13832] = { + [questKeys.extraObjectives] = {{{[zoneIDs.THE_UNDERBELLY]={{46,68}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Corroded Jewelry")}}, + }, + [13833] = { + [questKeys.extraObjectives] = {{{[zoneIDs.BOREAN_TUNDRA]={{57.5,33.2},{62.2,64.2},{45,45}}}, Questie.ICON_TYPE_SLAY, l10n("Slay any beast, jump in any water location and fish in the Pool of Blood"), 0}}, + }, + [13834] = { + [questKeys.extraObjectives] = {{{[zoneIDs.WINTERGRASP]={{70,36},{63,60},{50,44},{37.6,36},{56,66},{42,75},{34.7,19.5}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Terror Fish"), 0}}, + }, + [13835] = { + [questKeys.objectives] = {{{33974,"Valis Windchaser's advice"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13836] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DALARAN]={{64,64}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Severed Arm")}}, + }, + [13837] = { + [questKeys.objectives] = {{{33972,"Rugan Steelbelly's advice"},{33272,"Charge vulnerable Charge Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13838] = { + [questKeys.objectives] = {{{33974,"Valis Windchaser's advice"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13839] = { + [questKeys.objectives] = {{{33972,"Rugan Steelbelly's advice"},{33272,"Charge vulnerable Charge Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13843] = { + [questKeys.startedBy] = {nil,{191761}}, + [questKeys.finishedBy] = {nil,{191761}}, + [questKeys.preQuestSingle] = {12889}, + [questKeys.requiredSpell] = -55252, + [questKeys.requiredSkill] = {profKeys.ENGINEERING,400}, + }, + [13846] = { + [questKeys.preQuestSingle] = {13700,13701}, + [questKeys.requiredMaxRep] = {1106,42000}, + }, + [13847] = { -- HUMAN At The Enemy's Gates + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13851,13852,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13850] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Melee attack Venomhide Ravasaur"), 0, {{"monster", 6508}}}}, + }, + [13851] = { -- DWARF At The Enemy's Gates + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13847,13852,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13852] = { -- GNOME At The Enemy's Gates + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13847,13851,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13854] = { -- DRAENEI At The Enemy's Gates + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13847,13851,13852,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13855] = { -- NIGHT ELF At The Enemy's Gates + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13847,13851,13852,13854}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13856] = { -- ORC At The Enemy's Gates + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13857,13858,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13857] = { -- TROLL At The Enemy's Gates + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13856,13858,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13858] = { -- TAUREN At The Enemy's Gates + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13856,13857,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13859] = { -- BLOOD ELF At The Enemy's Gates + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13856,13857,13858,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13860] = { -- UNDEAD At The Enemy's Gates + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13856,13857,13858,13859}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13861] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13862] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13863] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13864] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13887] = { + [questKeys.preQuestSingle] = {13850}, + }, + [13906] = { + [questKeys.preQuestSingle] = {13887}, + }, + [13929] = { + [questKeys.triggerEnd] = {"Roo taken to visit Grizzlemaw", {[zoneIDs.GRIZZLY_HILLS]={{50.7,43.9}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13930] = { + [questKeys.triggerEnd] = {"Keken taken to visit Grizzlemaw", {[zoneIDs.GRIZZLY_HILLS]={{50.7,43.9}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13931] = { + [questKeys.preQuestSingle] = {11409}, + }, + [13932] = { + [questKeys.preQuestSingle] = {11318}, + }, + [13933] = { + [questKeys.triggerEnd] = {"Roo taken to visit Bronze Dragonshrine", {[zoneIDs.DRAGONBLIGHT]={{72,39}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13934] = { + [questKeys.triggerEnd] = {"Keken taken to visit Bronze Dragonshrine", {[zoneIDs.DRAGONBLIGHT]={{72,39}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13937] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Buy a Small Paper Zeppelin"), 0, {{"monster", 29478}}}}, + [questKeys.objectives] = {{{33533,"Throw Small Paper Zeppelin to Roo"},},nil,nil,nil,}, + [questKeys.preQuestGroup] = {13954,13956}, + [questKeys.nextQuestInChain] = 13959, + [questKeys.exclusiveTo] = {13927}, + }, + [13938] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Buy a Small Paper Zeppelin"), 0, {{"monster", 29478}}}}, + [questKeys.objectives] = {{{33532,"Throw Small Paper Zeppelin to Kekek"},},nil,nil,nil,}, + [questKeys.preQuestGroup] = {13955,13957}, + [questKeys.nextQuestInChain] = 13960, + [questKeys.exclusiveTo] = {13926}, + }, + [13950] = { + [questKeys.triggerEnd] = {"Roo taken to visit Winterfin Retreat", {[zoneIDs.BOREAN_TUNDRA]={{43.5,13.6}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13951] = { + [questKeys.triggerEnd] = {"Keken taken to visit Snowfall Glade", {[zoneIDs.DRAGONBLIGHT]={{46,61},{44,70}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13954] = { + [questKeys.triggerEnd] = {"Roo taken to visit Alexstrasza the Life-Binder", {[zoneIDs.DRAGONBLIGHT]={{59.8,54.5}}}}, -- oracle orphan + [questKeys.preQuestGroup] = {13929,13933,13950}, + [questKeys.exclusiveTo] = {13927}, + }, + [13955] = { + [questKeys.triggerEnd] = {"Keken taken to visit Alexstrasza the Life-Binder", {[zoneIDs.DRAGONBLIGHT]={{59.8,54.5}}}}, -- wolvar orphan + [questKeys.preQuestGroup] = {13930,13934,13951}, + [questKeys.exclusiveTo] = {13926}, + }, + [13956] = { + [questKeys.triggerEnd] = {"Roo taken to visit The Etymidian", {[zoneIDs.UN_GORO_CRATER]={{47.38,9.21}}}}, -- oracle orphan + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{40.3,83.3}}}, Questie.ICON_TYPE_EVENT, l10n("Use the waygate to teleport to Un'goro Crater")}}, + [questKeys.preQuestGroup] = {13929,13933,13950}, + [questKeys.exclusiveTo] = {13927}, + }, + [13957] = { + [questKeys.triggerEnd] = {"Keken taken to visit Hemet Nesingwary", {[zoneIDs.SHOLAZAR_BASIN]={{27.1,58.8}}}}, -- wolvar orphan + [questKeys.preQuestGroup] = {13930,13934,13951}, + [questKeys.exclusiveTo] = {13926}, + }, + [13959] = { + [questKeys.preQuestSingle] = {13937}, + [questKeys.exclusiveTo] = {13927}, + }, + [13960] = { + [questKeys.preQuestSingle] = {13938}, + [questKeys.exclusiveTo] = {13926}, + }, + [13966] = { + [questKeys.exclusiveTo] = {11528,13203}, + }, + [14016] = { + [questKeys.specialFlags] = nil, + [questKeys.questFlags] = 128, + [questKeys.objectives] = {nil,nil,nil,nil,{{{35127},35127,"Investigate the Black Knight's Grave"}}}, + }, + [14023] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14024, + }, + [14024] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14028, + [questKeys.preQuestSingle] = {14023}, + }, + [14028] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14030, + [questKeys.preQuestSingle] = {14024}, + }, + [14030] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14033, + [questKeys.preQuestSingle] = {14028}, + }, + [14033] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14035, + [questKeys.preQuestSingle] = {14030}, + }, + [14035] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.preQuestSingle] = {14033}, + }, + [14037] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14040, + }, + [14040] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14041, + [questKeys.preQuestSingle] = {14037}, + }, + [14041] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14043, + [questKeys.preQuestSingle] = {14040}, + }, + [14043] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14044, + [questKeys.preQuestSingle] = {14041}, + }, + [14044] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14047, + [questKeys.preQuestSingle] = {14043}, + }, + [14047] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.preQuestSingle] = {14044}, + }, + [14048] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14051] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14053] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14054] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14055] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14058] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14059] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14060] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14061] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14062] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14064] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14065] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14076] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use your drum near a Mysterious Snow Mound"), 0, {{"object", 195309}}}}, + }, + [14079] = { + [questKeys.requiredRaces] = raceIDs.HUMAN, + }, + [14081] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [14082] = { + [questKeys.requiredRaces] = raceIDs.DRAENEI, + }, + [14083] = { + [questKeys.requiredRaces] = raceIDs.DWARF, + }, + [14084] = { + [questKeys.requiredRaces] = raceIDs.GNOME, + }, + [14085] = { + [questKeys.requiredRaces] = raceIDs.NIGHT_ELF, + }, + [14086] = { + [questKeys.requiredRaces] = raceIDs.ORC, + }, + [14087] = { + [questKeys.requiredRaces] = raceIDs.TAUREN, + }, + [14088] = { + [questKeys.requiredRaces] = raceIDs.TROLL, + }, + [14089] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14090] = { + [questKeys.objectives] = {{{29618,"Snowblind Follower captured"}}}, + }, + [14092] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use your drum near a Mysterious Snow Mound"), 0, {{"object", 195309}}}}, + }, + [14101] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{50.4,15.6}}}, Questie.ICON_TYPE_EVENT, l10n("Summon Drottinn Hrothgar using the Kvaldir War Horn")}}, + }, + [14102] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{43.8,24.6}}}, Questie.ICON_TYPE_EVENT, l10n("Summon Mistcaller Yngvar using the Mistcaller's Charm")}}, + }, + [14103] = { + [questKeys.specialFlags] = 1, + [questKeys.startedBy] = {{28701}}, + [questKeys.finishedBy] = {{28701}}, + }, + [14104] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{58.59,31.72}}}, Questie.ICON_TYPE_EVENT, l10n("Provoke Ornolf the Scarred using the Captured Kvaldir Banner")}}, + }, + [14107] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{32149},32149,"Fallen Hero's Spirit blessed"}}}, + }, + [14108] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 35117}}}}, + [questKeys.objectives] = {{{34925,"Hurl Spears at North Sea Kraken"},{35092}}}, + }, + [14112] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Take chum"), 0, {{"object", 195352}}}}, + }, + [14141] = { + [questKeys.objectives] = {{{29618,"Snowblind Follower captured"}}}, + }, + [14145] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Take chum"), 0, {{"object", 195353}}}}, + }, + [14151] = { + [questKeys.objectives] = {}, + [questKeys.requiredSpell] = -66659, + [questKeys.requiredSkill] = {171,450}, + [questKeys.triggerEnd] = {"Epic Gem Transmutes", {[zoneIDs.DALARAN]={{42.25,32.06}}}}, + }, + [14163] = { + [questKeys.triggerEnd] = {"Victory in the Isle of Conquest", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,11338,13405}, + }, + [14164] = { + [questKeys.triggerEnd] = {"Victory in the Isle of Conquest", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,11342,13407}, + }, + [14178] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14179,14180,13427}, + }, + [14179] = { + [questKeys.triggerEnd] = {"Victory in the Eye of the Storm", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,13427}, + }, + [14180] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,13427}, + }, + [14181] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14182,14183}, + }, + [14182] = { + [questKeys.triggerEnd] = {"Victory in Eye of the Storm", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14181,14183}, + }, + [14183] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14181,14182}, + }, + [14199] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256}, + }, + [14352] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [14349] = { + [questKeys.preQuestGroup] = {6022,6042,6133,6135,6136}, + }, + [14418] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14419] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14420] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14421] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14444] = { + [questKeys.objectives] = {{{27990,"Ask Krasus about the hilt's origins"}}}, + }, + [14483] = { + [questKeys.startedBy] = {{36296},nil,{49641}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [20438] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ask Shandy Glossgleam to lend you a tabard"), 0, {{"monster", 36856}}}}, + }, + [24216] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24221}, + }, + [24217] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 20, + }, + [24218] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24220}, + }, + [24219] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 20, + }, + [24220] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24218}, + }, + [24221] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24216}, + }, + [24223] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24224,24427}, + }, + [24224] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24223,24427}, + }, + [24225] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24226,24426}, + }, + [24226] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24225,24426}, + }, + [24426] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24225,24226}, + }, + [24427] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24223,24224}, + }, + [24428] = { + [questKeys.startedBy] = {{10184},nil,{49644}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24429] = { + [questKeys.startedBy] = {{10184},nil,{49643}}, + }, + [24431] = { + [questKeys.specialFlags] = 1, + }, + [24461] = { + [questKeys.sourceItemId] = 49723, + }, + [24498] = { + [questKeys.objectives] = {{{36494}},nil,nil,nil,{{{36764,36765,36766,36767},36764,"Alliance Slaves freed"}}}, + [questKeys.preQuestSingle] = {24683}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free the slave"), 1, {{"object", 202168}}}}, + }, + [24499] = { + [questKeys.objectives] = {{{36497},{36502}}}, + }, + [24500] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.finishedBy] = {{36955}}, + [questKeys.objectives] = {{{36955,"Find Jaina Proudmoore"},{36954,"Escape the Lich King"}}}, + }, + [24507] = { + [questKeys.objectives] = {{{36494}},nil,nil,nil,{{{36770,36771,36772,36773},36770,"Horde Slaves freed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free the slave"), 1, {{"object", 202168}}}}, + }, + [24510] = { + [questKeys.reputationReward] = {{1050,25}}, + }, + [24511] = { + [questKeys.objectives] = {{{36497},{36502}}}, + }, + [24535] = { + [questKeys.objectives] = {{{37205,"Thalorien's Blessing obtained"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Examine the remains"), 0, {{"monster", 37552}}}}, + }, + [24536] = { + [questKeys.objectives] = {{{3296}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Snagglebolt's Air Analyzer on perfumed guards"), 0, {{"monster", 3296}}}}, + }, + [24541] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab the package"), 0, {{"monster", 37671}}}}, + [questKeys.sourceItemId] = 49867, + }, + [24545] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.DEATH_KNIGHT, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {nil,{201742}}, + [questKeys.nextQuestInChain] = 24743, + [questKeys.requiredMinRep] = {1156,3000}, + }, + [24547] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24743}, + }, + [24548] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24757}, + [questKeys.nextQuestInChain] = 24912, + }, + [24549] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24912}, + [questKeys.nextQuestInChain] = 24748, + }, + [24553] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.requiredSourceItems] = {49879}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24555] = { + [questKeys.objectives] = {{{27990,"Ask Krasus about the hilt's origins"}}}, + }, + [24556] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ask Shandy Glossgleam to lend you a tabard"), 0, {{"monster", 36856}}}}, + }, + [24559] = { + [questKeys.sourceItemId] = 49723, + }, + [24563] = { + [questKeys.objectives] = {{{37205,"Thalorien's Blessing obtained"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Examine the remains"), 0, {{"monster", 37552}}}}, + }, + [24564] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24579] = { + [questKeys.exclusiveTo] = {24580,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24580] = { + [questKeys.exclusiveTo] = {24579,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24581] = { + [questKeys.exclusiveTo] = {24579,24580,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24582] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24583] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24584,24585,24586,24587,24588,24589,24590}, + }, + [24584] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24585,24586,24587,24588,24589,24590}, + }, + [24585] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24586,24587,24588,24589,24590}, + }, + [24586] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24587,24588,24589,24590}, + }, + [24587] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24588,24589,24590}, + }, + [24588] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24589,24590}, + }, + [24589] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24590}, + }, + [24590] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24589}, + }, + [24594] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24595] = { + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.requiredSourceItems] = {49879}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24596] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24597] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24598] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24609] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24610] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24611] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24612] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24613] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24614] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24615] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + -- Hackfix to hide the other two as a available once one of the random three dailies has been accepted + [24629] = { + [questKeys.exclusiveTo] = {24635, 24636}, + }, + [24635] = { + [questKeys.exclusiveTo] = {24629, 24636}, + }, + [24636] = { + [questKeys.exclusiveTo] = {24629, 24635}, + }, + [24638] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24645, 24647, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400048,"Chemical Wagon Destroyed"}},nil,nil,{{{37214},37214}}}, + [questKeys.requiredMaxLevel] = 13, + }, + [24645] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24647, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400049,"Chemical Wagon Destroyed"}},nil,nil,{{{37917},37917}}}, + [questKeys.requiredMaxLevel] = 22, + }, + [24647] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400052,"Chemical Wagon Destroyed"}},nil,nil,{{{37984},37984}}}, + [questKeys.requiredMaxLevel] = 31, + }, + [24648] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400053,"Chemical Wagon Destroyed"}},nil,nil,{{{38006},38006}}}, + [questKeys.requiredMaxLevel] = 40, + }, + [24649] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400054,"Chemical Wagon Destroyed"}},nil,nil,{{{38016},38016}}}, + [questKeys.requiredMaxLevel] = 50, + }, + [24650] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24651, 24652}, + [questKeys.objectives] = {nil,{{400055,"Chemical Wagon Destroyed"}},nil,nil,{{{38023},38023}}}, + [questKeys.requiredMaxLevel] = 60, + }, + [24651] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24650, 24652}, + [questKeys.objectives] = {nil,{{400056,"Chemical Wagon Destroyed"}},nil,nil,{{{38030},38030}}}, + [questKeys.requiredMaxLevel] = 70, + }, + [24652] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24650, 24651}, + [questKeys.objectives] = {nil,{{400057,"Chemical Wagon Destroyed"}},nil,nil,{{{38032},38032}}}, + }, + [24655] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{68,1976},1976}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Snagglebolt's Air Analyzer on perfumed guards"), 0, {{"monster", 68},{"monster", 1976}}}}, + }, + [24656] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab the package"), 0, {{"monster", 38065}}}}, + [questKeys.sourceItemId] = 49867, + }, + [24658] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24659, 24660, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400050,"Chemical Wagon Destroyed"}},nil,nil,{{{37214},37214}}}, + [questKeys.requiredMaxLevel] = 13, + }, + [24659] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24660, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400051,"Chemical Wagon Destroyed"}},nil,nil,{{{37917},37917}}}, + [questKeys.requiredMaxLevel] = 22, + }, + [24660] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400052,"Chemical Wagon Destroyed"}},nil,nil,{{{37984},37984}}}, + [questKeys.requiredMaxLevel] = 31, + }, + [24662] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400053,"Chemical Wagon Destroyed"}},nil,nil,{{{38006},38006}}}, + [questKeys.requiredMaxLevel] = 40, + }, + [24663] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400054,"Chemical Wagon Destroyed"}},nil,nil,{{{38016},38016}}}, + [questKeys.requiredMaxLevel] = 50, + }, + [24664] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24665, 24666}, + [questKeys.objectives] = {nil,{{400055,"Chemical Wagon Destroyed"}},nil,nil,{{{38023},38023}}}, + [questKeys.requiredMaxLevel] = 60, + }, + [24665] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24664, 24666}, + [questKeys.objectives] = {nil,{{400056,"Chemical Wagon Destroyed"}},nil,nil,{{{38030},38030}}}, + [questKeys.requiredMaxLevel] = 70, + }, + [24666] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24664, 24665}, + [questKeys.objectives] = {nil,{{400057,"Chemical Wagon Destroyed"}},nil,nil,{{{38032},38032}}}, + }, + [24683] = { + [questKeys.preQuestSingle] = {24499}, + }, + [24710] = { + [questKeys.preQuestSingle] = {24498}, + }, + [24711] = { + [questKeys.preQuestSingle] = {24710}, + }, + [24743] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24545}, + [questKeys.nextQuestInChain] = 24547, + }, + [24745] = { + [questKeys.startedBy] = {{36296},nil,{50320}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24748] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24549}, + [questKeys.objectives] = {{{36597,"Lich King Defeated"}}}, + }, + [24749] = { + [questKeys.preQuestSingle] = {24547}, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{36678,"Infuse Shadow's Edge with Unholy power then slay Putricide."}}}, + }, + [24756] = { + [questKeys.preQuestSingle] = {24749}, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{37955,"Infuse Shadow's Edge with Blood then defeat Lana'thel."}}}, + }, + [24757] = { + [questKeys.preQuestSingle] = {24756}, + [questKeys.nextQuestInChain] = 24548, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{36853,"Infuse Shadow's Edge with Frost then slay Sindragosa."}}}, + }, + [24792] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + }, + [24793] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + }, + [24795] = { + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24796] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24798] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24799] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24800] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24801] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24802] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.finishedBy] = {{37554}}, + [questKeys.objectives] = {{{37554,"Find Sylvanas Windrunner"},{36954,"Escape the Lich King"}}}, + }, + [24803] = { + [questKeys.specialFlags] = 1, + }, + [24815] = { + [questKeys.requiredMinRep] = {1156,3000}, + }, + [24819] = { -- A Change of Heart - Destruction friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24811}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24820] = { -- A Change of Heart - Vengeance friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24810}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24821] = { -- A Change of Heart - Courage friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24808}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24822] = { -- A Change of Heart - Wisdom friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24809}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24823] = { -- Path of Destruction - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24828,24811}, + }, + [24825] = { -- Path of Wisdom - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24809}, + }, + [24826] = { -- Path of Vengeance - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24810}, + }, + [24827] = { -- Path of Courage - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24808}, + }, + [24828] = { -- Path of Destruction - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24811}, + }, + [24829] = { -- Path of Destruction - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24823,24811}, + }, + [24830] = { -- Path of Wisdom - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24825,24809}, + }, + [24831] = { -- Path of Wisdom - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24830,24809}, + }, + [24832] = { -- Path of Vengeance - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24826,24810}, + }, + [24833] = { -- Path of Vengeance - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24832,24810}, + }, + [24834] = { -- Path of Courage - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24827,24808}, + }, + [24835] = { -- Path of Courage - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24834,24808}, + }, + [24836] = { -- A Change of Heart - Destruction honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24828,24811}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24837] = { -- A Change of Heart - wisdom honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24825,24809}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24838] = { -- A Change of Heart - vengeance honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24826,24810}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24839] = { -- A Change of Heart - courage honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24827,24808}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24840] = { -- A Change of Heart - Destruction revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24823,24811}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24841] = { -- A Change of Heart - Wisdom revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24830,24809}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24842] = { -- A Change of Heart - Vengeance revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24832,24810}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24843] = { -- A Change of Heart - Courage revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24834,24808}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24844] = { -- A Change of Heart - Destruction exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24829,24811}, + }, + [24845] = { -- A Change of Heart - Wisdom exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24831,24809}, + }, + [24846] = { -- A Change of Heart - Vengeance exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24833,24810}, + }, + [24847] = { -- A Change of Heart - Courage exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24835,24808}, + }, + [24857] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24869] = { -- 10man + [questKeys.startedBy] = {{38471}}, + [questKeys.finishedBy] = {{38471}}, + [questKeys.exclusiveTo] = {24870,24871,24872,24873,24874}, + }, + [24870] = { -- 10man + [questKeys.startedBy] = {{38491}}, + [questKeys.finishedBy] = {{38491}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.exclusiveTo] = {24869,24872,24873,24874}, + }, + [24871] = { -- 10man + [questKeys.startedBy] = {{38492}}, + [questKeys.finishedBy] = {{38492}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.exclusiveTo] = {24869,24872,24873,24874}, + }, + [24872] = { -- 10man + [questKeys.startedBy] = {{38589}}, + [questKeys.finishedBy] = {{38017}}, + [questKeys.exclusiveTo] = {24869,24870,24871,24873,24874}, + }, + [24873] = { -- 10man + [questKeys.startedBy] = {{38501}}, + [questKeys.finishedBy] = {{38501}}, + [questKeys.objectives] = {{{38501,"Return with two strains of Blight"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Slime Spray to get the Green Blight strain"), 0, {{"monster", 36627}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Gaseous Blight to get the Orange Blight strain"), 0, {{"monster", 36626}}}, + }, + [questKeys.exclusiveTo] = {24869,24870,24871,24872,24874}, + }, + [24874] = { -- 10man + [questKeys.startedBy] = {{38551}}, + [questKeys.finishedBy] = {{38558}}, + [questKeys.exclusiveTo] = {24869,24870,24871,24872,24873}, + }, + [24875] = { -- 25man + [questKeys.startedBy] = {{38471}}, + [questKeys.finishedBy] = {{38471}}, + [questKeys.exclusiveTo] = {24876,24877,24878,24879,24880}, + }, + [24876] = { -- 25man + [questKeys.startedBy] = {{38492}}, + [questKeys.finishedBy] = {{38492}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.exclusiveTo] = {24875,24878,24879,24880}, + }, + [24877] = { -- 25man + [questKeys.startedBy] = {{38491}}, + [questKeys.finishedBy] = {{38491}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.exclusiveTo] = {24875,24878,24879,24880}, + }, + [24878] = { -- 25man + [questKeys.startedBy] = {{38501}}, + [questKeys.finishedBy] = {{38501}}, + [questKeys.objectives] = {{{38501,"Return with two strains of Blight"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Slime Spray to get the Green Blight strain"), 0, {{"monster", 36627}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Gaseous Blight to get the Orange Blight strain"), 0, {{"monster", 36626}}}, + }, + [questKeys.exclusiveTo] = {24875,24876,24877,24879,24880}, + }, + [24879] = { -- 25man + [questKeys.startedBy] = {{38551}}, + [questKeys.finishedBy] = {{38558}}, + [questKeys.exclusiveTo] = {24875,24876,24877,24878,24880}, + }, + [24880] = { -- 25man + [questKeys.startedBy] = {{38589}}, + [questKeys.finishedBy] = {{38017}}, + [questKeys.exclusiveTo] = {24875,24876,24877,24878,24879}, + }, + [24912] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24548}, + [questKeys.nextQuestInChain] = 24549, + }, + [24914] = { + [questKeys.startedBy] = {{36597},nil,{53135}}, + [questKeys.preQuestSingle] = {24549}, + }, + [24915] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24916] = { + [questKeys.startedBy] = {{38606}}, + [questKeys.finishedBy] = {{38606}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24917] = { + [questKeys.startedBy] = {{38607}}, + [questKeys.finishedBy] = {{38607}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24918] = { + [questKeys.startedBy] = {{38609}}, + [questKeys.finishedBy] = {{38609}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24919] = { + [questKeys.startedBy] = {{38608}}, + [questKeys.finishedBy] = {{38608}}, + [questKeys.preQuestSingle] = {24914}, + }, + [25199] = { + [questKeys.preQuestSingle] = {25229}, + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.objectives] = {{{39368,"Salute the Drill Sergeant"},{39368,"Roar with the Drill Sergeant"},{39368,"Cheer with the Drill Sergeant"},{39368,"Dance with the Drill Sergeant"}}}, + }, + [25212] = { + [questKeys.startedBy] = {{39386}}, + [questKeys.finishedBy] = {{39386}}, + [questKeys.preQuestSingle] = {25199}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Board the Flying Machine"), 0, {{"monster", 39396}}}}, + }, + [25229] = { + [questKeys.requiredLevel] = 1, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39253,39623},39623,"Gnomes Motivated"},{{39624,39466,39675},39466,"Motivated Gnomes Brought to Captain Sparknozzle"}}}, + }, + [25239] = { -- Path of Might - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,25238}, + }, + [25240] = { -- Path of Might - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25239,25238}, + }, + [25242] = { -- Path of Might - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25240,25238}, + }, + [25246] = { -- A Change of Heart - might exalted - aronen + [questKeys.preQuestGroup] = {25242,25238}, + }, + [25247] = { -- A Change of Heart - might friendly - aronen + [questKeys.preQuestGroup] = {24815,25238}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [25248] = { -- A Change of Heart - might honored - aronen + [questKeys.preQuestGroup] = {25238,25239}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [25249] = { -- A Change of Heart - might revered - aronen + [questKeys.preQuestGroup] = {25240,25238}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [25283] = { + [questKeys.startedBy] = {{39678}}, + [questKeys.finishedBy] = {{39678}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25212,25295}, + [questKeys.nextQuestInChain] = 25500, + }, + [25285] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25199}, + [questKeys.nextQuestInChain] = 25289, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39715}}}}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39682,39715},39715,"Ejection System Tested"}}}, + }, + [25286] = { + [questKeys.preQuestSingle] = {25283}, + [questKeys.exclusiveTo] = {25500}, + [questKeys.questLevel] = -1, + }, + [25287] = { + [questKeys.questLevel] = -1, + }, + [25289] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25285}, + [questKeys.nextQuestInChain] = 25295, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39716}}}}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39713,39716},39716,"Left Leg Servos Tested"},{{39713,39716},39716,"Right Leg Servos Tested"},{{39713,39716},39716,"Evasive Maneuver System Tested"}}}, + }, + [25295] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25289}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39717}}}}, + [questKeys.objectives] = {{{39711,"Weapon System Tested"}}}, + }, + [25393] = { + [questKeys.requiredLevel] = 75, + [questKeys.questLevel] = -1, + }, + [25444] = { -- Da Perfect Spies + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Attune a Captured Frog"), 0, {{"monster", 40187}}}}, + }, + [25445] = { -- Zalazane's Fall + [questKeys.objectives] = {{{40502,"Zalazane Killed"}}}, + [questKeys.requiredLevel] = 75, + [questKeys.questLevel] = -1, + }, + [25446] = { -- Frogs Away! + [questKeys.nextQuestInChain] = 25461, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek and deploy the frogs on the white smoke"), 0, {{"monster", 40204}}}}, + }, + [25461] = { -- Trollin' For Volunteers + [questKeys.preQuestSingle] = {25446}, + [questKeys.nextQuestInChain] = 25470, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek for a ride"), 0, {{"monster", 40204}}}}, + }, + [25470] = { -- Lady Of Da Tigers + [questKeys.preQuestSingle] = {25461}, + }, + [25480] = { -- Dance Of De Spirits + [questKeys.nextQuestInChain] = 25495, + [questKeys.objectives] = {{{40352,"Dance of the Spirits"}}}, + }, + [25495] = { -- Preparin' For Battle + [questKeys.preQuestSingle] = {25480}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek for a ride"), 0, {{"monster", 40204}}}}, + }, + [25500] = { + [questKeys.preQuestSingle] = {25283}, + [questKeys.requiredMaxLevel] = 74, + [questKeys.exclusiveTo] = {25286}, + [questKeys.nextQuestInChain] = 25287, + }, + [26034] = { + [questKeys.preQuestSingle] = {26013}, + }, + [64845] = { + [questKeys.triggerEnd] = {"Victory in a battleground match", { + [zoneIDs.ALTERAC_MOUNTAINS] = {{39.4,82.2}}, + [zoneIDs.ARATHI_HIGHLANDS] = {{45.6,45.8}}, + [zoneIDs.ASHENVALE] = {{61.8,83.8}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + }, + + ----- Boosted character quests ----- + [70395] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Meet with your class trainer in Stormwind."}, + [questKeys.zoneOrSort] = 1519, + }, + [70396] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Meet with your class trainer in Orgrimmar."}, + [questKeys.zoneOrSort] = 1637, + }, + [70397] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400009, "Open the Survival Kit"}, {400010, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70398] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400011, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70401] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70411] = { + [questKeys.name] = "To the Dockmaster", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{26546,26548},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Use a scroll of teleportation from your inventory to reach the harbor and speak to the dock master."}, + [questKeys.requiredSourceItems] = {199335,199336}, + [questKeys.zoneOrSort] = 150, + }, + [70734] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400001, "Open the Survival Kit"}, {400002, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70735] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400005, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70736] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70737] = { + [questKeys.name] = "To the Zeppelin Master", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{26537,26539},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Use a scroll of teleportation from your inventory to reach the zeppelin tower and speak to the zeppelin master."}, + [questKeys.requiredSourceItems] = {199777,199778}, + [questKeys.zoneOrSort] = 1637, + }, + [70761] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400003, "Open the Survival Kit"}, {400004, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70762] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Meet with your Druid trainer in Thunder Bluff."}, + [questKeys.zoneOrSort] = 1638, + }, + [70764] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400006, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70765] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400008, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70865] = { + [questKeys.name] = "To Shattrath City", + [questKeys.startedBy] = {{376,914,928,3036,3324,3328,3344,3406,5495,5497,5505,5515,5885,5994,13283,20407,23128},nil,nil}, + [questKeys.finishedBy] = {{19684},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Shattrath City and speak to the mysterious Haggard War Veteran."}, + [questKeys.requiredSourceItems] = {200068}, + [questKeys.zoneOrSort] = 3897, + }, + [70869] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70870] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78136] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Meet with your class trainer in Stormwind."}, + [questKeys.zoneOrSort] = 1519, + }, + [78137] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Meet with your class trainer in Orgrimmar."}, + [questKeys.zoneOrSort] = 1637, + }, + [78138] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Meet with your Druid trainer in Thunder Bluff."}, + [questKeys.zoneOrSort] = 1638, + }, + [78140] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400009, "Open the Survival Kit"}, {400010, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78151] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400001, "Open the Survival Kit"}, {400002, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [78157] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400011, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78158] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400006, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [78164] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78166] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{26673},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Modera."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78167] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [78168] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil,nil}, + [questKeys.finishedBy] = {{26471},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Aethas Sunreaver."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78219] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Meet with your Death Knight trainer in Acherus: The Ebon Hold."}, + [questKeys.zoneOrSort] = 4281, + }, + [78220] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400062, "Open the Survival Kit"}, {400063, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78221] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400064, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78222] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400061, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78223] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{26673},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Modera."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78224] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400061, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78225] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{26471},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Aethas Sunreaver."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78752] = { + [questKeys.name] = "Proof of Demise: Titan Rune Protocol Gamma", + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"The Lich King's presence mustn't extend any further!","","The Council of Six has decreed that any strong enough fighter should take up arms and aid in keeping Azeroth safe!"}, + [questKeys.objectives] = {nil,nil,{{211206}}}, + [questKeys.zoneOrSort] = 4395, + [questKeys.questFlags] = 4232, + [questKeys.specialFlags] = 1, + [questKeys.reputationReward] = {{factionIDs.KIRIN_TOR,75}}, + }, + [78753] = { + [questKeys.name] = "Proof of Demise: Threats to Azeroth", + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"We must continue putting pressure on all fronts!","","The Council of Six has decreed that any willing fighter should take up arms and aid in keeping Azeroth safe!"}, + [questKeys.objectives] = {nil,nil,{{211207}}}, + [questKeys.zoneOrSort] = 4395, + [questKeys.questFlags] = 4232, + [questKeys.specialFlags] = 1, + [questKeys.reputationReward] = {{factionIDs.KIRIN_TOR,75}}, + }, + } +end + +function _QuestieWotlkQuestFixes:InsertMissingQuestIds() + + -- Alliance boosted quests + QuestieDB.questData[70395] = {} -- A New Beginning + QuestieDB.questData[70397] = {} -- Tools for Survival + QuestieDB.questData[70398] = {} -- Combat Training + QuestieDB.questData[70401] = {} -- Talented + QuestieDB.questData[70411] = {} -- To the Dockmaster + QuestieDB.questData[70870] = {} -- Talented + QuestieDB.questData[78136] = {} -- A New Beginning + QuestieDB.questData[78140] = {} -- Tools for Survival + QuestieDB.questData[78157] = {} -- Combat Training + QuestieDB.questData[78164] = {} -- Talented + QuestieDB.questData[78166] = {} -- To Northrend + QuestieDB.questData[78222] = {} -- Talented DK + QuestieDB.questData[78223] = {} -- To Northrend DK + + -- Horde boosted quests + QuestieDB.questData[70396] = {} -- A New Beginning + QuestieDB.questData[70734] = {} -- Tools for Survival + QuestieDB.questData[70735] = {} -- Combat Training + QuestieDB.questData[70736] = {} -- Talented + QuestieDB.questData[70737] = {} -- To the Zeppelin Master + QuestieDB.questData[70761] = {} -- Tools for Survival + QuestieDB.questData[70762] = {} -- A New Beginning + QuestieDB.questData[70764] = {} -- Combat Training + QuestieDB.questData[70765] = {} -- Talented + QuestieDB.questData[70869] = {} -- Talented + QuestieDB.questData[78137] = {} -- A New Beginning + QuestieDB.questData[78138] = {} -- A New Beginning + QuestieDB.questData[78151] = {} -- Tools for Survival + QuestieDB.questData[78158] = {} -- Combat Training + QuestieDB.questData[78167] = {} -- Talented + QuestieDB.questData[78168] = {} -- To Northrend + QuestieDB.questData[78224] = {} -- Talented DK + QuestieDB.questData[78225] = {} -- To Northrend DK + + -- Neutral boosted quests + QuestieDB.questData[70865] = {} -- To Shattrath City + QuestieDB.questData[78219] = {} -- A New Beginning + QuestieDB.questData[78220] = {} -- Tools for Survival + QuestieDB.questData[78221] = {} -- Combat Training + + -- P4 quests + QuestieDB.questData[78752] = {} -- Proof of Demise: Titan Rune Protocol Gamma + QuestieDB.questData[78753] = {} -- Proof of Demise: Threats to Azeroth +end diff --git a/.history/Database/Corrections/wotlkQuestFixes_20260222033512.lua b/.history/Database/Corrections/wotlkQuestFixes_20260222033512.lua new file mode 100644 index 0000000..4faec00 --- /dev/null +++ b/.history/Database/Corrections/wotlkQuestFixes_20260222033512.lua @@ -0,0 +1,7088 @@ +---@class QuestieWotlkQuestFixes +local QuestieWotlkQuestFixes = QuestieLoader:CreateModule("QuestieWotlkQuestFixes") +local _QuestieWotlkQuestFixes = {} + +---@type QuestieDB +local QuestieDB = QuestieLoader:ImportModule("QuestieDB") +---@type ZoneDB +local ZoneDB = QuestieLoader:ImportModule("ZoneDB") +---@type QuestieProfessions +local QuestieProfessions = QuestieLoader:ImportModule("QuestieProfessions") +---@type QuestieCorrections +local QuestieCorrections = QuestieLoader:ImportModule("QuestieCorrections") +---@type l10n +local l10n = QuestieLoader:ImportModule("l10n") + + +QuestieCorrections.killCreditObjectiveFirst[11652] = true +QuestieCorrections.killCreditObjectiveFirst[12100] = true +QuestieCorrections.killCreditObjectiveFirst[12546] = true +QuestieCorrections.killCreditObjectiveFirst[12561] = true +QuestieCorrections.killCreditObjectiveFirst[12762] = true +QuestieCorrections.killCreditObjectiveFirst[12919] = true +QuestieCorrections.killCreditObjectiveFirst[13086] = true +QuestieCorrections.killCreditObjectiveFirst[13373] = true +QuestieCorrections.killCreditObjectiveFirst[13376] = true +QuestieCorrections.killCreditObjectiveFirst[13380] = true +QuestieCorrections.killCreditObjectiveFirst[13382] = true +QuestieCorrections.killCreditObjectiveFirst[13404] = true +QuestieCorrections.killCreditObjectiveFirst[13406] = true +QuestieCorrections.killCreditObjectiveFirst[24498] = true +QuestieCorrections.killCreditObjectiveFirst[24507] = true + +function QuestieWotlkQuestFixes:Load() + _QuestieWotlkQuestFixes:InsertMissingQuestIds() + + local questKeys = QuestieDB.questKeys + local raceIDs = QuestieDB.raceKeys + local classIDs = QuestieDB.classKeys + local factionIDs = QuestieDB.factionIDs + local zoneIDs = ZoneDB.zoneIDs + local sortKeys = QuestieDB.sortKeys + local profKeys = QuestieProfessions.professionKeys + local specKeys = QuestieProfessions.specializationKeys + + return { + [55] = { + [questKeys.objectives] = {{{1200}}}, + }, + [75] = { + [questKeys.specialFlags] = 0, + }, + [171] = { + [questKeys.startedBy] = {{14305},nil,nil}, + [questKeys.questLevel] = -1, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [172] = { + [questKeys.questLevel] = -1, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [176] = { + [questKeys.startedBy] = {nil,{68,156561}}, + }, + [236] = { + [questKeys.finishedBy] = {{31108}}, + [questKeys.exclusiveTo] = {13153,13154,13156,13195,13196,13197,13198}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [403] = { + [questKeys.startedBy] = {nil,{269}}, + }, + [434] = { + [questKeys.triggerEnd] = {"Overhear Lescovar and Marzon's Conversation", {[zoneIDs.STORMWIND_CITY]={{72.22,35.37}}}}, + }, + [508] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [558] = { + [questKeys.questLevel] = -1, + [questKeys.parentQuest] = 0, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [648] = { + [questKeys.triggerEnd] = {"Escort OOX-17/TN to safety", {[zoneIDs.TANARIS]={{61,53}}}}, + }, + [768] = { + [questKeys.requiredSkill] = {393,1}, + }, + [836] = { + [questKeys.triggerEnd] = {"Escort OOX-09/HL to safety", {[zoneIDs.THE_HINTERLANDS]={{57.81,50.2}}}}, + }, + [910] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [911] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [915] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [925] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1056] = { + [questKeys.nextQuestInChain] = 1057, + }, + [1132] = { + [questKeys.startedBy] = {{4455}}, + [questKeys.finishedBy] = {{4456}}, + }, + [1135] = { + [questKeys.startedBy] = {{4456}}, + [questKeys.finishedBy] = {{4456}}, + }, + [1198] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1252] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1253] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1284] = { + [questKeys.preQuestSingle] = {11123}, + }, + [1361] = { + [questKeys.startedBy] = {{2229,4485,10540}}, + }, + [1468] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1479] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1558] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1678] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1679] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1680] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1681] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1682] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [1687] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1716] = { + [questKeys.preQuestSingle] = {}, + }, + [1800] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [1885] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [2204] = { + [questKeys.startedBy] = {nil,{112877}}, + }, + [2279] = { + [questKeys.preQuestSingle] = {2278}, + }, + [2358] = { + [questKeys.startedBy] = {{7009}}, + }, + [2701] = { + [questKeys.finishedBy] = {nil,{141980}}, + }, + [2767] = { + [questKeys.triggerEnd] = {"Escort OOX-22/FE to safety", {[zoneIDs.FERALAS]={{55.63,51.35}}}}, + }, + [2879] = { + [questKeys.requiredSourceItems] = {9255,9256,9257,9258}, + }, + [3602] = { + [questKeys.requiredSourceItems] = {}, + }, + [3641] = { + [questKeys.preQuestSingle] = {}, + }, + [3763] = { + [questKeys.startedBy] = {{6735}}, + [questKeys.exclusiveTo] = {3789,3790}, + }, + [3789] = { + [questKeys.startedBy] = {{6740}}, + [questKeys.exclusiveTo] = {3763,3790}, + }, + [3790] = { + [questKeys.startedBy] = {{5111}}, + [questKeys.exclusiveTo] = {3763,3789}, + }, + [4127] = { + [questKeys.startedBy] = {nil,{164909,186419}}, + }, + [4144] = { + [questKeys.specialFlags] = nil, + }, + [4362] = { + [questKeys.preQuestSingle] = {4361}, + }, + [4363] = { + [questKeys.preQuestSingle] = {4362}, + }, + [4485] = { + [questKeys.startedBy] = {{6179}}, + }, + [4486] = { + [questKeys.startedBy] = {{5149}}, + }, + [4740] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [4763] = { + [questKeys.objectives] = {nil,nil,{{12355}}}, + }, + [4771] = { + [questKeys.preQuestSingle] = {5522}, + }, + [4822] = { + [questKeys.questLevel] = -1, + [questKeys.parentQuest] = 0, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + }, + [5057] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [5305] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5306] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5307] ={ + [questKeys.requiredSpecialization] = 0, + }, + [5502] = { + [questKeys.questLevel] = -1, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.SPECIAL, + [questKeys.preQuestGroup] = {915,925}, + }, + [5505] = { + [questKeys.startedBy] = {{11056}}, + [questKeys.finishedBy] = {{11056}}, + }, + [5531] = { + [questKeys.nextQuestInChain] = nil, + }, + [5721] = { + [questKeys.extraObjectives] = {{{[zoneIDs.EASTERN_PLAGUELANDS]={{35.01,84.05}}}, Questie.ICON_TYPE_EVENT, l10n("Place the Relic Bundle in the Town Square."),}}, + }, + [6185] = { + [questKeys.triggerEnd] = {"The Blightcaller Uncovered", {[zoneIDs.EASTERN_PLAGUELANDS]={{23.4,67.8}}}}, + }, + [6521] = { + [questKeys.startedBy] = {{36273}}, + [questKeys.finishedBy] = {{36273}}, + }, + [6522] = { + [questKeys.startedBy] = {{4421},nil,{17008}}, + [questKeys.finishedBy] = {{36273}}, + }, + [6963] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [6983] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [7023] = { + [questKeys.startedBy] = {{13435,23010}}, + }, + [7042] = { + [questKeys.startedBy] = {{13433}}, + }, + [7641] = { + [questKeys.preQuestSingle] = {7638,7670}, + }, + [7643] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {7642,7648}, + }, + [7704] = { + [questKeys.startedBy] = {nil,{179832},{18950}}, + }, + [8149] = { + [questKeys.objectives] = {nil,{{180204,"Place a tribute at Uther's Tomb"}}}, + [questKeys.extraObjectives] = {}, + }, + [8150] = { + [questKeys.objectives] = {nil,{{180205,"Place a tribute at Grom's Monument"}}}, + [questKeys.extraObjectives] = {}, + }, + [8166] = { + [questKeys.requiredMaxLevel] = 49, + }, + [8167] = { + [questKeys.requiredMaxLevel] = 39, + }, + [8168] = { + [questKeys.requiredMaxLevel] = 29, + }, + [8169] = { + [questKeys.requiredMaxLevel] = 49, + }, + [8170] = { + [questKeys.requiredMaxLevel] = 39, + }, + [8171] = { + [questKeys.requiredMaxLevel] = 29, + }, + [8346] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{15274},15274,"Mana Tap creature"}}}, + }, + [8551] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8552] = { + [questKeys.specialFlags] = 0, + }, + [8553] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8554] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [8746] = { + [questKeys.objectives] = {{{15664,"Find Metzen the Reindeer and rescue him"}},nil,{{21211}}}, + }, + [8762] = { + [questKeys.objectives] = {{{15664,"Find Metzen the Reindeer and rescue him"}},nil,{{21211}}}, + }, + [8767] = { + [questKeys.requiredClasses] = classIDs.ROGUE + classIDs.WARRIOR + classIDs.HUNTER + classIDs.PALADIN + classIDs.DEATH_KNIGHT, + }, + [8871] = { + [questKeys.startedBy] = {}, + }, + [8872] = { + [questKeys.startedBy] = {}, + }, + [8874] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.startedBy] = {}, + }, + [8875] = { + [questKeys.startedBy] = {}, + }, + [8892] = { + [questKeys.preQuestSingle] = {}, + }, + [9078] = { + [questKeys.requiredClasses] = classIDs.ROGUE, + }, + [9154] = { + [questKeys.startedBy] = {{16241,16255}}, + [questKeys.finishedBy] = {{16281}}, + [questKeys.questLevel] = -1, + }, + [9189] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [9211] = { + [questKeys.specialFlags] = 1, + }, + [9213] = { + [questKeys.specialFlags] = 1, + }, + [9221] = { + [questKeys.specialFlags] = 1, + }, + [9222] = { + [questKeys.specialFlags] = 1, + }, + [9223] = { + [questKeys.specialFlags] = 1, + }, + [9224] = { + [questKeys.specialFlags] = 1, + }, + [9225] = { + [questKeys.specialFlags] = 1, + }, + [9226] = { + [questKeys.specialFlags] = 1, + }, + [9227] = { + [questKeys.specialFlags] = 1, + }, + [9228] = { + [questKeys.specialFlags] = 1, + }, + [9247] = { + [questKeys.finishedBy] = {{16281}}, + }, + [9358] = { + [questKeys.exclusiveTo] = {9252}, + }, + [9361] = { + [questKeys.requiredSourceItems] = {23270}, + }, + [9425] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [9467] = { + [questKeys.sourceItemId] = 24335, + [questKeys.requiredSourceItems] = {23682,24335}, + }, + [9629] = { + [questKeys.objectives] = {{{17326}}}, + }, + [9648] = { + [questKeys.name] = "Maatparm Mushroom Menagerie", + [questKeys.objectivesText] = {"Maatparm at Blood Watch wants 1 Aquatic Stinkhorn, 1 Blood Mushroom, 1 Ruinous Polyspore, and 1 Fel Cone Fungus."}, + }, + [9681] = { + [questKeys.startedBy] = {{17717,17718}}, + }, + [9876] = { + [questKeys.nextQuestInChain] = 9738, + }, + [10110] = { + [questKeys.preQuestSingle] = {13409}, + }, + [10173] = { + [questKeys.requiredSourceItems] = {}, + }, + [10180] = { + [questKeys.nextQuestInChain] = 10097, + }, + [10445] = { + [questKeys.exclusiveTo] = {13432}, + }, + [10464] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10465] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10466] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10467] = { + [questKeys.objectives] = {nil,nil,nil,{990,9000}}, + }, + [10468] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10469] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10470] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10471] = { + [questKeys.objectives] = {nil,nil,nil,{990,21000}}, + }, + [10472] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10473] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10474] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10475] = { + [questKeys.objectives] = {nil,nil,nil,{990,42000}}, + }, + [10667] = { + [questKeys.preQuestSingle] = {}, + }, + [10670] = { + [questKeys.preQuestSingle] = {}, + }, + [10702] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{21864,21878,21879,23020,21978},21978,},},}, + }, + [10703] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{21864,21878,21879,23020,21978},21978,},},}, + }, + [10769] = { + [questKeys.objectives] = {{{19823}},nil,{{31108}}}, + }, + [10776] = { + [questKeys.objectives] = {{{19823}},nil,{{31310}}}, + }, + [10888] = { + [questKeys.exclusiveTo] = {13430}, + }, + [10900] = { + [questKeys.requiredMaxLevel] = 70, + }, + [10901] = { + [questKeys.exclusiveTo] = {13431}, + }, + [10958] = { + [questKeys.preQuestSingle] = {10949}, + }, + [10985] = { + [questKeys.exclusiveTo] = {13429}, + }, + [11010] = { + [questKeys.requiredClasses] = classIDs.WARLOCK + classIDs.ROGUE + classIDs.MAGE + classIDs.PRIEST + classIDs.WARRIOR + classIDs.PALADIN + classIDs.HUNTER + classIDs.SHAMAN + classIDs.DEATH_KNIGHT, + }, + [11117] = { + [questKeys.startedBy] = {{23486}}, + [questKeys.finishedBy] = {{23486}}, + }, + [11118] = { + [questKeys.startedBy] = {{23486}}, + [questKeys.finishedBy] = {{23486}}, + }, + [11120] = { + [questKeys.startedBy] = {{24657}}, + [questKeys.finishedBy] = {{24657}}, + }, + [11122] = { + [questKeys.objectives] = {{{24468,"Kegs Delivered"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab a keg"), 0, {{"monster", 24364}}}}, + }, + [11137] = { + [questKeys.preQuestSingle] = {}, + }, + [11140] = { + [questKeys.requiredSourceItems] = {33040,33044}, + }, + [11153] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HOWLING_FJORD]={{28.1,42.2}}}, Questie.ICON_TYPE_EVENT, l10n("Wait for Harrowmeiser's zeppelin to dock"),}}, + }, + [11154] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Throw the firecrackers up to 20 yards away underneath a darkclaw bat to scare it"), 0, {{"monster", 23959}}}}, + }, + [11157] = { + [questKeys.objectives] = {{{23777,"Proto-Drake Egg destroyed"}},nil,nil,nil,{{{23688,23750},23688}}}, + }, + [11170] = { + [questKeys.objectives] = {{{24120,"North Fleet Reservist Infected"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Bat Handler Camille"), 0, {{"monster", 23816}}}}, + }, + [11175] = { + [questKeys.exclusiveTo] = {11176}, + }, + [11231] = { + [questKeys.sourceItemId] = 33284, + }, + [11238] = { + [questKeys.sourceItemId] = 33282, + }, + [11241] = { + [questKeys.triggerEnd] = {"Rescue Apothecary Hanes",{[zoneIDs.HOWLING_FJORD]={{78.72,37.23,},},},}, + }, + [11245] = { + [questKeys.requiredSourceItems] = {33311}, + }, + [11246] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23661,23662,23663,23664,23665,23666,23667,23668,23669,23670},23661,"Winterskorn Vrykul Dismembered"}}}, + [questKeys.requiredSourceItems] = {33311}, + }, + [11247] = { + [questKeys.requiredSourceItems] = {33311}, + }, + [11249] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Present the Vrykul Scroll of Ascension"), 0, {{"object", 186586}}}}, + }, + [11252] = { + [questKeys.preQuestSingle] = {}, + }, + [11257] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23661,23662,23663,23664,23665,23666,23667,23668,23669,23670},23661,"Winterskorn Vrykul Dismembered"}}}, + [questKeys.requiredSourceItems] = {33340}, + }, + [11258] = { + [questKeys.requiredSourceItems] = {33340}, + }, + [11259] = { + [questKeys.requiredSourceItems] = {33340}, + }, + [11260] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Present the Vrykul Scroll of Ascension"), 0, {{"object", 186586}}}}, + }, + [11265] = { + [questKeys.sourceItemId] = 33284, + }, + [11267] = { + [questKeys.sourceItemId] = 33282, + }, + [11279] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Spray Proto-Drake Egg"), 0, {{"monster", 23777}}}}, + }, + [11280] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Place Tillinghast's Plagued Meat on the ground"), 0, {{"monster", 24170}}}}, + }, + [11281] = { + [questKeys.objectives] = {{{24173}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Carved Horn"), 0, {{"object", 186599}}}}, + }, + [11282] = { + [questKeys.objectives] = {{{24161,"Oric the Baleful's Corpse Impaled"},{24016,"Ulf the Bloodletter's Corpse Impaled"},{24162,"Gunnar Thorvardsson's Corpse Impaled"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Slay Vrykul across the Forsaken blockade until they appear"), 0, {{"monster", 24015}}}}, + }, + [11284] = { + [questKeys.sourceItemId] = 33352, + }, + [11286] = { + [questKeys.preQuestSingle] = {}, + }, + [11296] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Break Riven Widow Cocoons to free captives"), 0, {{"monster", 24210}}}}, + }, + [11297] = { + [questKeys.nextQuestInChain] = 11298, + }, + [11298] = { + [questKeys.preQuestSingle] = {}, + }, + [11300] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill gladiators at the Ring of Judgement until Oluf the Violent appears"), 0, {{"monster", 24213},{"monster", 24214},{"monster", 24215}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Oluf the Violent"), 0, {{"monster", 23931}}} + }, + }, + [11301] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Use Grick's Bonesaw on corpses of Deranged Explorers"), 0, {{"monster", 23967}}}}, + }, + [11302] = { + [questKeys.preQuestSingle] = {11284}, + }, + [11306] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Fill the Empty Apothecary's Flask at the Cauldron of Vrykul Blood"),0,{{"object", 186656}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mix the Flask of Vrykul Blood with Harris's Plague Samples"),1,{{"object", 186657}}}, + }, + }, + [11307] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23564,24198,24199},23564,"Plagued Vrykul Sprayed"}}}, + }, + [11310] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{23564,24198,24199},23564,"Plagued Vrykul exterminated"}}}, + }, + [11314] = { + [questKeys.objectives] = {{{23678,"Chill Nymphs Freed"}}}, + }, + [11317] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Meditate"), 0, {{"object", 186649}}}}, + }, + [11318] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{80001},{80002},{80003}}}, + }, + [11319] = { + [questKeys.objectives] = {{{23876,"Spores frozen"}}}, + }, + [11322] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Meditate"), 0, {{"object", 186649}}}}, + }, + [11329] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Search for Northern Barbfish"), 0, {{"object", 186659}}}}, + }, + [11332] = { + [questKeys.sourceItemId] = 33634, + [questKeys.preQuestSingle] = {11331}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Get a gryphon to ride and some bombs"), 0, {{"monster", 23859}}}}, + }, + [11335] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.exclusiveTo] = {11336,11337,11338,13405,14163}, + [questKeys.questFlags] = 4226, + }, + [11336] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.exclusiveTo] = {11335,11337,11338,13405,14163}, + }, + [11337] = { + [questKeys.triggerEnd] = {"Victory in the Eye of the Storm", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11338,13405,14163}, + }, + [11338] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,13405,14163}, + }, + [11339] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11340,11341,11342,13407,14164}, + }, + [11340] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11341,11342,13407,14164}, + }, + [11341] = { + [questKeys.triggerEnd] = {"Victory in Eye of the Storm", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11342,13407,14164}, + }, + [11342] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,13407,14164}, + }, + [11343] = { + [questKeys.triggerEnd] = {"Secrets of Wyrmskull Uncovered",{[zoneIDs.HOWLING_FJORD]={{60.13,50.8,},},},}, + }, + [11344] = { + [questKeys.triggerEnd] = {"Secrets of Nifflevar Uncovered",{[zoneIDs.HOWLING_FJORD]={{69.04,54.79,},},},}, + }, + [11346] = { + [questKeys.preQuestSingle] = {11284}, + [questKeys.sourceItemId] = 33778, + }, + [11348] = { + [questKeys.objectives] = {{{23725,"Test Rune of Command on normal Stone Giants"},{24334}}}, + }, + [11350] = { + [questKeys.sourceItemId] = 33778, + }, + [11352] = { + [questKeys.objectives] = {{{23725,"Test Rune of Command on normal Stone Giants"},{24334}}}, + }, + [11355] = { + [questKeys.preQuestSingle] = {11284}, + [questKeys.objectives] = {{{23725,"Runed Stone Giant Corpse Analyzed"},},nil,nil,nil,}, + }, + [11358] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Rune Sample"), 0, {{"object", 186718},}}}, + }, + [11365] = { + [questKeys.objectives] = {{{23725,"Runed Stone Giant Corpse Analyzed"},},nil,nil,nil,}, + }, + [11366] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Rune Sample"), 0, {{"object", 186718},}}}, + }, + [11390] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 24418},}}}, + }, + [11391] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 24418},}}}, + }, + [11392] = { + [questKeys.startedBy] = {nil,{186267}}, + [questKeys.finishedBy] = {nil,{186314}}, + }, + [11393] = { + [questKeys.exclusiveTo] = {11394,}, + }, + [11394] = { + [questKeys.preQuestSingle] = {}, + }, + [11401] = { + [questKeys.startedBy] = {nil,{186267}}, + [questKeys.finishedBy] = {nil,{186314}}, + }, + [11409] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{80004},{80005},{80006}}}, + }, + [11410] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Fresh Barbfish Bait"), 0, {{"object", 186770},}}}, + }, + [11412] = { + [questKeys.objectives] = {{{24510,"Kegs Delivered"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab a keg"), 0, {{"monster", 24527}}}}, + }, + [11414] = { + [questKeys.sourceItemId] = 33618, + }, + [11415] = { + [questKeys.sourceItemId] = 33618, + }, + [11416] = { + [questKeys.requiredSourceItems] = {33618}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Touch Talonshrike's Egg"), 0, {{"object", 186814},{"object", 190283},{"object", 190284}}}}, + }, + [11417] = { + [questKeys.requiredSourceItems] = {33618}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Touch Talonshrike's Egg"), 0, {{"object", 186814},{"object", 190283},{"object", 190284}}}}, + }, + [11418] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Feathered Charm on Steelfeather"), 0, {{"monster", 24514},}}}, + }, + [11421] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Commandeer Crykul Harpoon Gun"),0,{{"object",190512}}}}, + }, + [11428] = { + [questKeys.preQuestSingle] = {11316}, + }, + [11429] = { + [questKeys.objectives] = {nil,{{186863,"Alliance Banner Placed"}},nil,nil,{{{24640},24640,"Alliance Banner Defended"}}}, + }, + [11431] = { + [questKeys.startedBy] = {{24657}}, + [questKeys.finishedBy] = {{24657}}, + }, + [11436] = { + [questKeys.triggerEnd] = {"Go Harpoon Surfing",{[zoneIDs.HOWLING_FJORD]={{60.08,62.06,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Go Harpoon Surfing"),0,{{"object",186894}}}}, + }, + [11448] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Ask McGoyver for a ride to the Explorers' League Outpost"),0,{{"monster",24040}}}}, + }, + [11452] = { + [questKeys.startedBy] = {{24018},nil,{34090}}, + }, + [11453] = { + [questKeys.startedBy] = {{24018},nil,{34091}}, + }, + [11460] = { + [questKeys.objectives] = {{{24752,"Fjord Rock Falcon Fed"}}}, + }, + [11465] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Send your Trained Rock Falcon after it"), 0, {{"monster", 24746}}}}, + }, + [11466] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Olga"), 0, {{"monster", 24639}}}}, + }, + [11467] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Search for treasure"), 0, {{"object", 186944}}}}, + }, + [11468] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Send your Trained Rock Falcon after it"), 0, {{"monster", 24747}}}}, + }, + [11470] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Release the Trained Rock Falcon"), 0, {{"object", 190222}}}}, + }, + [11471] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Fight Jonah"), 0, {{"monster", 24742}}}}, + }, + [11472] = { + [questKeys.objectives] = {{{24797,"Reef Bull led to a Reef Cow"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Lure Reef Bull with Tasty Reef Fish"), 0, {{"monster", 24786},{"monster", 24804}}}}, + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11475] = { + [questKeys.preQuestSingle] = {11244}, + }, + [11478] = { + [questKeys.exclusiveTo] = {11448}, + }, + [11485] = { + [questKeys.triggerEnd] = {"Rocket Jump Mastered",{[zoneIDs.HOWLING_FJORD]={{75.08,64.55,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Rocket Jump standing on the rune next to it"),0,{{"object", 186958}}}}, + }, + [11489] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Collect Data near the blue relic near Gwendolyn's cart"),0,{{"object", 186958}}}}, + }, + [11491] = { + [questKeys.objectives] = {{{24718,"Lebronski Bluffed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Work Bench then cast Bluff on Lebronski after you've walked on his rug"),0,{{"object", 186958}}}}, + }, + [11494] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Put on the Golem suit"),0,{{"object", 186958}}}}, + }, + [11495] = { + [questKeys.objectives] = {{{24847,"Thundering Cave investigated"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Put on the Golem suit"),0,{{"object", 186958}}}}, + }, + [11528] = { + [questKeys.exclusiveTo] = {13203,13966}, + }, + [11529] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HOWLING_FJORD]={{37.2,74.8}}}, Questie.ICON_TYPE_OBJECT, l10n("Use The Big Gun at the front of the ship to slay Sorlof"),0,{{"monster", 24992}}}}, + }, + [11531] = { + [questKeys.specialFlags] = 1, + }, + [11567] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask Alanya for transportation"),0,{{"monster", 27933}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("After acquiring the Armor, get a ride back"),0,{{"monster", 28277}}}, + }, + }, + [11569] = { + [questKeys.preQuestSingle] = {11571}, + }, + [11570] = { + [questKeys.triggerEnd] = {"Escort Lurgglbr to safety",{[zoneIDs.BOREAN_TUNDRA]={{41.35,16.29,},},},}, + }, + [11574] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + [questKeys.exclusiveTo] = {11587}, + }, + [11575] = { + [questKeys.exclusiveTo] = {11587}, + }, + [11587] = { + [questKeys.preQuestSingle] = {}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Open the prison"),0,{{"object", 187561}}}}, + }, + [11590] = { + [questKeys.objectives] = {{{25316,"Captured Beryl Sorcerer"},},nil,nil,nil,}, + }, + [11591] = { + [questKeys.exclusiveTo] = {11592,11593,11594,}, + }, + [11592] = { + [questKeys.triggerEnd] = {"Successfully assisted Longrunner Proudhoof's assault.",{[zoneIDs.BOREAN_TUNDRA]={{49.45,26.49,},},},}, + }, + [11594] = { + [questKeys.preQuestSingle] = {}, + }, + [11596] = { + [questKeys.preQuestSingle] = {11585,11586}, + }, + [11606] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [11610] = { + [questKeys.objectives] = {nil,{{191088,"Elder Kesuk's ceremony completed"},{191089,"Elder Sagani's ceremony completed"},{191090,"Elder Takret's ceremony completed"}}}, + }, + [11611] = { + [questKeys.objectives] = {{{25284,"Warsong Peon Freed"}}}, + }, + [11631] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Imperean's Primal on Snarlfang's Totem"),0,{{"monster", 25455}}}}, + }, + [11632] = { + [questKeys.startedBy] = {nil,{187674},{34777}}, + }, + [11636] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to Garrosh's Landing"),0,{{"monster", 25459}}}}, + }, + [11637] = { + [questKeys.sourceItemId] = 34781, + }, + [11652] = { + [questKeys.objectives] = {{{25465}},nil,nil,nil,{{{27106,27107,27108,27110},27106,"Injured Warsong Soldier rescued"},{{25332,25333,25469,},25333,"Scourge Unit obliterated"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drive a tank"),0,{{"monster", 25334}}}}, + }, + [11653] = { + [questKeys.objectives] = {{{25432,"Crafty's Blaster Tested"},{25434,"Crafty's Blaster Tested"},},nil,nil,nil,}, + }, + [11654] = { + [questKeys.startedBy] = {{26115},nil,{34815}}, + [questKeys.preQuestSingle] = {11633}, + }, + [11656] = { + [questKeys.objectives] = {nil,{{188656,"The Serpent's Maw destroyed"},{188655,"The Kur Drakkar destroyed"},{188653,"Bor's Hammer destroyed"},{188657,"Bor's Anvil destroyed"}}}, + }, + [11664] = { + [questKeys.triggerEnd] = {"Mootoo Saved",{[zoneIDs.BOREAN_TUNDRA]={{31.19,54.44,},},},}, + }, + [11670] = { + [questKeys.objectives] = {{{25430,"Warsong Banner Planted in Magmothregar"},},nil,{{34870,nil},},nil,}, + [questKeys.requiredSourceItems] = {34869}, + }, + [11671] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Inquisitor Salrand"), 0, {{"monster", 25584}}}, + {{[zoneIDs.BOREAN_TUNDRA]={{41.8,39.1}}}, Questie.ICON_TYPE_EVENT, l10n("Use Beryl Shield Detonator"),}, + }, + }, + [11673] = { + [questKeys.triggerEnd] = {"Bonker Togglevolt escorted to safety.",{[zoneIDs.BOREAN_TUNDRA]={{53.84,13.85,},},},}, + }, + [11677] = { + [questKeys.objectives] = {nil,{{187879,"Plague Cauldron Neutralized"}}}, + }, + [11686] = { + [questKeys.objectives] = {nil,{{191697,"Scout Warsong Granary"},{191698,"Scout Torp's Farm"},{191699,"Scout Warsong Slaughterhouse"}}}, + }, + [11688] = { + [questKeys.preQuestSingle] = {}, + }, + [11690] = { + [questKeys.objectives] = {{{25596,"Kodo rescued"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the kodos to Farmer Torp"), 0, {{"monster", 25607}}}}, + }, + [11694] = { + [questKeys.objectives] = {nil,{{187879,"Plague Cauldron Neutralized"}}}, + }, + [11704] = { + [questKeys.preQuestSingle] = {11708}, + }, + [11705] = { + [questKeys.objectives] = {{{25618,"Varidus the Flenser Defeated"}}}, + }, + [11706] = { + [questKeys.objectives] = {{{25768},{25768,"Nerubian tunnels collapsed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use The Horn of Elemental Fury near the southern sinkhole"),0,{{"monster", 25664}}}}, + }, + [11708] = { + [questKeys.preQuestSingle] = {}, + [questKeys.objectives] = {{{25590,"Fizzcrank's tale listened to."}}}, + }, + [11711] = { + [questKeys.extraObjectives] = {{{[zoneIDs.BOREAN_TUNDRA]={{55.28,50.86}}}, Questie.ICON_TYPE_EVENT, l10n("Alliance Deserter Delivered")}}, + [questKeys.objectives] = {{{25761,"Alliance Deserter Delivered"}}}, + }, + [11712] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25814},25814,"Fizzcrank Gnome cursed & ported"}}}, + }, + [11713] = { + [questKeys.preQuestSingle] = {11796}, + }, + [11719] = { + [questKeys.triggerEnd] = {"Bloodspore Flower Used",{[zoneIDs.BOREAN_TUNDRA]={{52.07,52.46,},},},}, + }, + [11723] = { + [questKeys.objectives] = {{{25768},{25794,"Deploy the Shake-n-Quake 5000"}}}, + }, + [11728] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Throw Wolf Bait"),0,{{"monster", 25791}}}}, + }, + [11730] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25753,25758,25752},25753,"Robots reprogrammed"}}}, + }, + [11788] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),1,{{"object", 187984}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),2,{{"object", 187985}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),3,{{"object", 187986}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),4,{{"object", 187987}}}, + }, + }, + [11798] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use The Gearmaster's Manual"),0,{{"object", 190334}}}}, + }, + [11855] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [11865] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place fake fur near Caribou Traps"),0,{{"object", 187995},{"object", 187996},{"object", 187997},{"object", 187998},{"object", 187999},{"object", 188000},{"object", 188001},{"object", 188002},{"object", 188003},{"object", 188004},{"object", 188005},{"object", 188006},{"object", 188007},{"object", 188008}}}, + }, + }, + [11878] = { + [questKeys.objectives] = {{{25862,"Orphaned Mammoth Calf Delivered to Khu'nok"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver the orphan to Khu'nok"),0,{{"monster", 25861}}}}, + }, + [11879] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Wooly Mammoth Bull to assist in killing Kaw the Mammoth Destroyer"),0,{{"monster", 25743}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Kill Kaw the Mammoth Destroyer"), 0, {{"monster", 25802}}}, + }, + }, + [11880] = { + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [11881] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Jenny's Whistle near a crashed flying machine"),0,{{"object", 188019}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Return Jenny to safety without losing cargo"),0,{{"monster", 25849},}}, + }, + }, + [11887] = { + [questKeys.objectives] = {nil,nil,{{35276}}}, + }, + [11888] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [11890] = { + [questKeys.triggerEnd] = {"Fizzcrank Pumping Station environs inspected.",{[zoneIDs.BOREAN_TUNDRA]={{64.38,23.81}}}}, + }, + [11893] = { + [questKeys.objectives] = {{{24601}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Windsoul Totem to collect energy from killing Steam Ragers"),0,{{"monster", 24601}}}}, + }, + [11894] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Uncured Caribou Hide"),0,{{"object", 188086}}}}, + }, + [11895] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Storm Totem to summon Storm Tempest"),0,{{"monster", 26048}}}}, + }, + [11896] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25752,25753,25758},26082,}}}, + }, + [11898] = { + [questKeys.extraObjectives] = { + {{[zoneIDs.BOREAN_TUNDRA]={{86.55,28.59}}}, Questie.ICON_TYPE_EVENT, l10n("Enter teleporter to access Naxxanar"),}, + {{[zoneIDs.BOREAN_TUNDRA]={{86.80,30.12}}}, Questie.ICON_TYPE_EVENT, l10n("Use Naxxanar teleporters"),}, + }, + }, + [11899] = { + [questKeys.objectives] = {{{25814,"Gnome soul captured"},},nil,nil,nil,}, + [questKeys.preQuestSingle] = {11895}, + }, + [11905] = { + [questKeys.extraObjectives] = {{{[zoneIDs.THE_NEXUS_MAP]={{64.9,21.6}},[zoneIDs.THE_NEXUS]={{-1,-1}}}, Questie.ICON_TYPE_EVENT, l10n("Use Interdimensional Refabricator")}}, + }, + [11906] = { + [questKeys.preQuestSingle] = {11895}, + }, + [11907] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),1,{{"object", 187984}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),2,{{"object", 187985}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),3,{{"object", 187986}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Valve"),4,{{"object", 187987}}}, + }, + }, + [11908] = { + [questKeys.preQuestSingle] = {11902}, + }, + [11909] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Research the Gearmaster's Manual"),0,{{"object", 190334},{"object", 190335}}}}, + }, + [11913] = { + [questKeys.objectives] = {nil,{{188112,"Farshire Grain burnt"}}}, + }, + [11919] = { + [questKeys.objectives] = {{{26127,"Captured Nexus Drake"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the captured drake to Raelorasz"),0,{{"monster", 26117}}}}, + }, + [11930] = { + [questKeys.triggerEnd] = {"Secure Passage to Dragonblight",{[zoneIDs.DRAGONBLIGHT]={{10.29,53.83,},},},}, + }, + [11938] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{25378,25383,25386,25387,25393,25609},25378,"En'kilah Casualty"}}}, + }, + [11940] = { + [questKeys.objectives] = {{{26127,"Captured Nexus Drake"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the captured drake to Raelorasz"),0,{{"monster", 26117}}}}, + }, + [11945] = { + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11946] = { + [questKeys.requiredSourceItems] = {35671}, + }, + [11951] = { + [questKeys.requiredSourceItems] = {35671}, + }, + [11956] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ride Dusk"),0,{{"monster", 26191}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Open the phylactery"),0,{{"object", 188141}}}, + }, + }, + [11957] = { + [questKeys.requiredSourceItems] = {35671,35690}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Keristrasza"),0,{{"monster", 26206}}}, + {{[zoneIDs.BOREAN_TUNDRA]={{22,22.6}}}, Questie.ICON_TYPE_EVENT, l10n("Use Arcane Power Focus"),}, + }, + }, + [11959] = { + [questKeys.objectives] = {{{26196,"Loguhn's Blood Smeared"}}}, + }, + [11960] = { + [questKeys.reputationReward] = {{factionIDs.THE_KALUAK,500}}, + }, + [11967] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Keristrasza"),0,{{"monster", 26206}}}}, + }, + [11969] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Raelorasz' Spark"),0,{{"object", 194151}}}}, + }, + [11982] = { + [questKeys.objectives] = {{{26270,"Iron Dwarf Operations Disrupted"}}}, + [questKeys.preQuestSingle] = {}, + }, + [11984] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Enlist Budd's help"), 0, {{"monster", 26422}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Escort Budd to the Drak'Zin Ruins"), 0, {{"monster", 32663}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Budd's Tag Troll spell to stun Drakkari trolls"), 0, {{"monster", 26425}, {"monster", 26447}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Capture stunned Drakkari trolls with Bounty Hunter's Cage"), 0, {{"monster", 26425}, {"monster", 26447}}}, + }, + }, + [11989] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Dull Carving Knife near Drakuru"),0,{{"monster", 26423}}}}, + }, + [11991] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Frozen Mojo"),0,{{"object", 188287}}}}, + [questKeys.requiredSourceItems] = {35797,35799}, + }, + [11995] = { + [questKeys.exclusiveTo] = {12439}, + }, + [12000] = { + [questKeys.preQuestSingle] = {}, + }, + [12007] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering Zim'bo's Mojo"),0,{{"object", 400047}}}}, + [questKeys.requiredSourceItems] = {35797,35836}, + }, + [12014] = { + [questKeys.sourceItemId] = 35837, + }, + [12017] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Tu'u'gwar's Bait"),0,{{"object", 188370}}}}, + }, + [12019] = { + [questKeys.finishedBy] = {{26170,198875}}, + [questKeys.extraObjectives] = { + {{[zoneIDs.BOREAN_TUNDRA]={{86.6,28.6}}}, Questie.ICON_TYPE_EVENT, l10n("Teleport to the top of Naxxanar"),}, + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Thassarian"), 0, {{"monster", 198875}}}, + }, + }, + [12020] = { + [questKeys.preQuestSingle] = {}, + }, + [12022] = { + [questKeys.preQuestSingle] = {}, + [questKeys.requiredSourceItems] = {33096}, + }, + [12027] = { + [questKeys.triggerEnd] = {"Help Emily and Mr. Floppy return to the camp",{[zoneIDs.GRIZZLY_HILLS]={{53.81,33.33,},},},}, + }, + [12028] = { + [questKeys.objectives] = {nil,{{188416}}}, + }, + [12029] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26458,26570,26582,26583},26612,}}}, + }, + [12032] = { + [questKeys.objectives] = {{{26648,"Oacha'noa's compulsion obeyed."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Commune with Oacha'noa"),0,{{"object", 188422}}}}, + }, + [12033] = { + [questKeys.preQuestSingle] = {11916}, + [questKeys.objectives] = {nil,{{188423,}},nil,nil,}, + }, + [12034] = { + [questKeys.preQuestSingle] = {12008}, + }, + [12035] = { + [questKeys.objectives] = {{{25623,"Harvest Collector Rewired"},},nil,nil,nil,}, + }, + [12036] = { + [questKeys.triggerEnd] = {"Pit of Narjun Explored",{[zoneIDs.DRAGONBLIGHT]={{26.26,50.01,},},},}, + }, + [12037] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Search for Kurzel"),0,{{"monster", 27909}}}}, -- to use -1 instead of 0 when questie supports showing extraobjectives when quest complete + }, + [12038] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26458,26570,26582,26583},26612,}}}, + }, + [12039] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12049] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Throw the Explosive Charges when it opens its mouth wide"),0,{{"monster", 26293}}}}, + }, + [12050] = { + [questKeys.preQuestGroup] = {12046,12047}, + }, + [12052] = { + [questKeys.preQuestGroup] = {12046,12047}, + }, + [12053] = { + [questKeys.objectives] = {{{26678,"Warsong Battle Standard Defended"}}}, + }, + [12055] = { + [questKeys.startedBy] = {{26349},nil,{36742}}, + [questKeys.preQuestSingle] = {12000}, + }, + [12056] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12059] = { + [questKeys.startedBy] = {{26349},nil,{36746}}, + [questKeys.preQuestSingle] = {11999}, + }, + [12063] = { + [questKeys.preQuestSingle] = {12036}, + }, + [12065] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188445}}}, + }, + }, + [12066] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188445}}}, + }, + }, + [12067] = { + [questKeys.startedBy] = {{26762},nil,{36756}}, + }, + [12068] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Sacred Mojo"),0,{{"object", 400066}}}}, + [questKeys.requiredSourceItems] = {35797,36758}, + }, + [12069] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free Roanauk Icemist"),0,{{"object", 188463}}}}, + }, + [12075] = { + [questKeys.preQuestSingle] = {}, + }, + [12076] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Zort's Scraper when covered in Corrosive Spit"),0,{{"monster", 26358},{"monster", 26359}}}}, + }, + [12078] = { + [questKeys.preQuestSingle] = {12077}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Sturdy Crates to capture the worm spawn"),0,{{"monster", 26359}}}}, + }, + [12079] = { + [questKeys.preQuestSingle] = {12075}, + }, + [12080] = { + [questKeys.preQuestSingle] = {12076}, + }, + [12082] = { + [questKeys.triggerEnd] = {"Harrison has escorted you to safety.",{[zoneIDs.GRIZZLY_HILLS]={{73.51,24.02,},},},}, + }, + [12083] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188474}}}, + }, + }, + [12084] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ley line focus information retrieved"), 0, {{"object", 188474}}}, + }, + }, + [12085] = { + [questKeys.startedBy] = {{26815},nil,{36780}}, + }, + [12092] = { + [questKeys.preQuestSingle] = {12065}, + }, + [12095] = { + [questKeys.preQuestGroup] = {12089,12090,12091}, + }, + [12096] = { + [questKeys.preQuestSingle] = {12066}, + }, + [12097] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rokhan to call down Sarathstra"), 0, {{"monster", 26859}}},}, + }, + [12099] = { + [questKeys.objectives] = {{{26417,"Runed Giants Freed"}}}, + }, + [12100] = { + [questKeys.preQuestSingle] = {12034}, + }, + [12105] = { + [questKeys.startedBy] = {{27547},nil,{36940}}, + }, + [12107] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Ley Line Focus Control Talisman"),1,{{"object", 188491}}}, + }, + }, + [12110] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Ley Line Focus Control Talisman"),1,{{"object", 188491}}}, + }, + }, + [12111] = { + [questKeys.objectives] = {{{26615,},{26482,}}}, + }, + [12112] = { + [questKeys.preQuestGroup] = {12050,12052}, + }, + [12117] = { + [questKeys.nextQuestInChain] = 11958, + }, + [12118] = { + [questKeys.nextQuestInChain] = 11958, + }, + [12121] = { + [questKeys.objectives] = {{{27199,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Ring the gong outside Drakil'jin to summon Warlord Jin'arrak"),0,{{"object", 188510}}}, + }, + }, + [12124] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a drake to the top of the temple"),1,{{"monster", 26443}}}}, + }, + [12125] = { + [questKeys.objectives] = {{{26411}},nil,{{36828}}}, + }, + [12126] = { + [questKeys.objectives] = {{{26926}},nil,{{36836}}}, + }, + [12127] = { + [questKeys.objectives] = {{{26283}},nil,{{36846}}}, + }, + [12129] = { + [questKeys.sourceItemId] = 36849, + }, + [12132] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12125,12126,12127}, + }, + [12137] = { + [questKeys.sourceItemId] = 36859, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Speak with Gan'jo to return to life"),0,{{"monster", 26924}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Snow of Eternal Slumber on ancient Drakkari spirits"),0,{{"monster", 26811},{"monster", 26812}}}, + }, + }, + [12138] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26407,27017},26407,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Fight Lightning Sentries with Depleted War Golem deployed nearby"),0,{{"monster", 26407}}}, + }, + }, + [12146] = { + [questKeys.startedBy] = {{27004,27005},nil,{36855}}, + }, + [12147] = { + [questKeys.startedBy] = {{27004,27005},nil,{36856}}, + }, + [12150] = { + [questKeys.objectives] = {{{27003,}}}, + }, + [12151] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{57.09,76.26}}}, Questie.ICON_TYPE_EVENT, l10n("Blow the horn"),0}}, + }, + [12152] = { + [questKeys.requiredSourceItems] = {36870,36873,37063}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Place the Infused Drakkari Offering at the gongs outside Drakil'jin"),0,{{"object", 188510}}}, + }, + }, + [12157] = { + [questKeys.exclusiveTo] = {12171,12235,12297}, + }, + [12159] = { + [questKeys.objectives] = {{{26891,"Miner at Rest"}}}, + }, + [12165] = { + [questKeys.sourceItemId] = 36849, + }, + [12166] = { + [questKeys.objectives] = {{{26616,"Blighted Elk's corpse cleansed"},{26643,"Rabid Grizzly's corpse cleansed"},},nil,nil,nil,}, + }, + [12171] = { + [questKeys.exclusiveTo] = {12235,12297}, + }, + [12174] = { + [questKeys.exclusiveTo] = {12235,12298}, + }, + [12180] = { + [questKeys.preQuestSingle] = {12014}, + }, + [12181] = { + [questKeys.exclusiveTo] = {12188}, + }, + [12182] = { + [questKeys.exclusiveTo] = {}, + [questKeys.nextQuestInChain] = 12188, + }, + [12184] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26408,26409,26410,26414,27177},26408,}}}, + }, + [12185] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Intercept the message from Loken"),1,{{"object", 188596}}}, + }, + }, + [12188] = { + [questKeys.preQuestSingle] = {}, + }, + [12191] = { + [questKeys.preQuestSingle] = {}, + [questKeys.requiredSourceItems] = {33096}, + }, + [12198] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26407,27017},26407,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Fight Lightning Sentries with Depleted War Golem deployed nearby"),0,{{"monster", 26407}}}, + }, + }, + [12202] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{26408,26409,26410,26414,27177},26408,}}}, + }, + [12203] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Intercept the message from Loken"),1,{{"object", 188596}}}, + }, + }, + [12204] = { + [questKeys.preQuestSingle] = {12099,12058}, + [questKeys.preQuestGroup] = {}, + }, + [12206] = { + [questKeys.objectives] = {{{27349,"Flask of Blight tested"}}}, + }, + [12207] = { + [questKeys.preQuestSingle] = {12413}, + }, + [12208] = { + [questKeys.preQuestSingle] = {12412}, + }, + [12210] = { + [questKeys.preQuestSingle] = {12212}, + }, + [12211] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27202,27203,27206,27207,27209,27210,27211,27232,27233,27234,27235,27236,27237,27246,27247},27203,"Scarlet Onslaught corpses picked clean"}}}, + }, + [12213] = { + [questKeys.preQuestSingle] = {12413}, + }, + [12214] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27206,27213,27296,27028},27296,}}}, + }, + [12218] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Commandeer a Forsaken Blight Spreader"),1,{{"monster", 26523}}}, + }, + }, + [12222] = { + [questKeys.preQuestSingle] = {12294}, + }, + [12223] = { + [questKeys.preQuestSingle] = {12294}, + }, + [12224] = { + [questKeys.preQuestGroup] = {12221,12140,12072}, + }, + [12229] = { + [questKeys.preQuestGroup] = {12207,12213}, + }, + [12231] = { + [questKeys.objectives] = {{{27274,"Orsonn's Story"},{27275,"Kodian's Story"}}}, + [questKeys.preQuestGroup] = {12207,12213}, + }, + [12232] = { + [questKeys.objectives] = {nil,{{188673,}}}, + }, + [12236] = { + [questKeys.preQuestGroup] = {12241,12242}, + [questKeys.objectives] = {{{26633,}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tur Ragepaw to summon Ursoc"),0,{{"monster", 27328}}}}, + }, + [12237] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27315,27336,27345,27341},27315,"Helpless Villager Rescued"}}}, + }, + [12238] = { + [questKeys.requiredSourceItems] = {35797,38303}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Enduring Mojo"),0,{{"object", 190629}}}}, + }, + [12240] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{68.29,74.29}}}, Questie.ICON_TYPE_EVENT, l10n("Release the termites"),0}}, + }, + [12241] = { + [questKeys.preQuestGroup] = {12229,12231}, + }, + [12242] = { + [questKeys.preQuestGroup] = {12229,12231}, + }, + [12244] = { + [questKeys.objectives] = {{{27354}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Shredder"),0,{{"monster", 27371}}}}, + }, + [12247] = { + [questKeys.objectives] = {{{27274,"Orsonn's Story"},{27275,"Kodian's Story"}}}, + }, + [12249] = { + [questKeys.objectives] = {{{26633,}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tur Ragepaw to summon Ursoc"),0,{{"monster", 27328}}}}, + }, + [12252] = { + [questKeys.objectives] = {{{27209,"Torturer LeCraft fully questioned"},{27209}}} + }, + [12255] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride Flamebringer"),0,{{"monster", 27292}}}}, + }, + [12256] = { + [questKeys.preQuestSingle] = {12468}, + }, + [12258] = { + [questKeys.preQuestSingle] = {12251}, + }, + [12259] = { + [questKeys.preQuestGroup] = {12256,12257}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride Flamebringer"),0,{{"monster", 27292}}}}, + }, + [12260] = { + [questKeys.objectives] = {{{27202,}}}, + }, + [12261] = { + [questKeys.preQuestSingle] = {12447}, + [questKeys.objectives] = {{{27430,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Destructive Ward"),0,{{"object", 188707}}}, + }, + }, + [12262] = { + [questKeys.preQuestSingle] = {12447}, + }, + [12263] = { + [questKeys.triggerEnd] = {"Uncover the Magmawyrm Resurrection Chamber",{[zoneIDs.DRAGONBLIGHT]={{31.76,30.46,},},},}, + }, + [12264] = { + [questKeys.preQuestSingle] = {12263}, + [questKeys.objectives] = {{{27358},{27362},{27363}}}, + }, + [12265] = { + [questKeys.preQuestSingle] = {12263}, + }, + [12269] = { + [questKeys.preQuestSingle] = {12275}, + }, + [12270] = { + [questKeys.objectives] = {{{27354}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Shredder"),0,{{"monster", 27423}}}}, + }, + [12271] = { + [questKeys.startedBy] = {{27209},nil,{37432}}, + [questKeys.preQuestSingle] = {12245}, + }, + [12272] = { + [questKeys.preQuestSingle] = {12275}, + }, + [12273] = { + [questKeys.objectives] = {{{27237,},{27235,},{27234,},{27236,}}}, + }, + [12274] = { + [questKeys.objectives] = {nil,{{188713,"Abbey bell rung"}},nil,nil,{{{27245},27245,"High Abbot spoken with"}}}, + }, + [12277] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the Mine Bomb here"),0,{{"object", 188711}}}}, + }, + [12284] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27475,27482,},27475,"Alliance units eliminated"}}}, + }, + [12288] = { + [questKeys.objectives] = {{{27463,"Wounded Skirmishers Healed"}}}, + }, + [12289] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27456,27463},27456,"Horde units eliminated"}}}, + }, + [12291] = { + [questKeys.objectives] = {{{27226,"Forgotten Peasant Questioned"},{27225,"Forgotten Rifleman Questioned"},{27224,"Forgotten Knight Questioned"},{27229,"Forgotten Footman Questioned"}}}, + }, + [12296] = { + [questKeys.objectives] = {{{27482,"Westfall Infantry Healed"}}}, + }, + [12297] = { + [questKeys.preQuestSingle] = {11250}, + [questKeys.exclusiveTo] = {12171,12235}, + }, + [12298] = { + [questKeys.exclusiveTo] = {12174,12235}, + }, + [12301] = { + [questKeys.objectives] = {nil,{{189304,"The Forgotten Redeemed"}}}, + }, + [12307] = { + [questKeys.preQuestSingle] = {}, + }, + [12308] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"),0,{{"monster", 27409}}}}, + [questKeys.triggerEnd] = {"Escape from Silverbrook",{[zoneIDs.GRIZZLY_HILLS]={{32.37,59.14}}}}, + [questKeys.objectives] = {}, + }, + [12316] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27500,27550},27550,"Horde killed in Venture Bay"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in the shredder if you have the key"),0,{{"monster", 27496}}}}, + }, + [12317] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{27501,27549},27549,"Alliance killed in Venture Bay"}}}, + }, + [12323] = { + [questKeys.objectives] = {{{27570,"Venture Company Stragglers smoked out"}}}, + }, + [12324] = { + [questKeys.objectives] = {{{27570,"Venture Company Stragglers smoked out"}}}, + }, + [12321] = { + [questKeys.objectives] = {{{27577,"Righteous Sermon Heard"}}}, + }, + [12325] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get a ride to Thorson's Post"),0,{{"monster", 27661}}}}, + }, + [12326] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in"),0,{{"monster", 27587}}}}, + [questKeys.objectives] = {{{27607,"Plague Wagon Sabotaged"},{27588,"7th Legion Elite Safely Dropped Off"}}}, + }, + [12327] = { + [questKeys.triggerEnd] = {"Vision from the Past",{[zoneIDs.SILVERPINE_FOREST]={{46.53,76.18,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Gossamer Potion"),0,{{"object", 189972}}}}, + }, + [12330] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Tranquilizer Dart on Tatjana"),0,{{"monster", 27627}}}}, + [questKeys.triggerEnd] = {"Tatjana Delivered",{[zoneIDs.GRIZZLY_HILLS]={{57.77,41.7,},},},}, + }, + [12372] = { + [questKeys.objectivesText] = {"Devrestrasz at Wyrmrest Temple has asked you to slay 3 Azure Dragons, slay 5 Azure Drakes, and to destabilize the Azure Dragonshrine while riding a Wyrmrest Defender into battle."}, -- #4675 + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ride a Wyrmrest Defender to defend the Temple"), 0, {{"monster", 27629}}}, + }, + }, + [12412] = { + [questKeys.preQuestSingle] = {12259}, + }, + [12414] = { + [questKeys.objectives] = {{{26472,"Highland Mustangs returned"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Bring the mustangs to Squire Percy"), 0, {{"monster", 26377}}}}, + }, + [12415] = { + [questKeys.objectives] = {{{26472,}}}, + }, + [12419] = { + [questKeys.startedBy] = {{27680},nil,{37833}}, + }, + [12423] = { + [questKeys.startedBy] = {{27547},nil,{37830}}, + }, + [12427] = { + [questKeys.preQuestSingle] = {12413}, + [questKeys.triggerEnd] = {"Ironhide defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.2,64.68,},},},}, + [questKeys.objectives] = {{{27715,}}}, + }, + [12428] = { + [questKeys.triggerEnd] = {"Torgg Thundertotem defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.05,64.55,},},},}, + [questKeys.objectives] = {{{27716,}}}, + }, + [12429] = { + [questKeys.triggerEnd] = {"Rustblood defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.12,64.62,},},},}, + [questKeys.objectives] = {{{27717,}}}, + }, + [12430] = { + [questKeys.triggerEnd] = {"Horgrenn Hellcleave defeated",{[zoneIDs.GRIZZLY_HILLS]={{23.11,64.6,},},},}, + [questKeys.objectives] = {{{27718,}}}, + }, + [12431] = { + [questKeys.objectives] = {{{27727,}}}, + }, + [12432] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride the rocket!"), 0, {{"monster", 27593}}}}, + }, + [12434] = { + [questKeys.specialFlags] = 1, + [questKeys.preQuestSingle] = {12433}, + [questKeys.startedBy] = {{27565}}, + [questKeys.finishedBy] = {{27565}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12435] = { -- #4675 + [questKeys.name] = "Report to Lord Devrestrasz", + [questKeys.objectivesText] = {"Speak with Lord Devrestrasz at Wyrmrest Temple."}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a drake to the middle of the temple"), 0, {{"monster", 26949}}}}, + }, + [12437] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ride the rocket!"), 0, {{"monster", 27593}}}}, + }, + [12439] = { + [questKeys.exclusiveTo] = {11995,12000}, + }, + [12446] = { + [questKeys.specialFlags] = 1, + [questKeys.preQuestSingle] = {12443}, + [questKeys.startedBy] = {{27495}}, + [questKeys.finishedBy] = {{27495}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12453] = { + [questKeys.preQuestSingle] = {12412}, + [questKeys.objectives] = {{{26369,}}}, + }, + [12456] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DRAGONBLIGHT]={{64.6,77}}}, Questie.ICON_TYPE_EVENT, l10n("Use Skytalon Molts"),0}}, + }, + [12457] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Man the Chain Gun"),0,{{"monster", 27714}}},}, + }, + [12459] = { + [questKeys.objectives] = {{{26841,nil},{27808,nil},{27122,nil},},nil,nil,nil,}, + }, + [12462] = { + [questKeys.preQuestSingle] = {12326}, + }, + [12464] = { + [questKeys.preQuestSingle] = {}, + }, + [12467] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Wyrmbait"),0,{{"monster", 27843}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Destroy Icestorm"),0,{{"monster", 26287}}}, + }, + }, + [12468] = { + [questKeys.preQuestSingle] = {}, + }, + [12470] = { + [questKeys.objectives] = {{{27840,"Hourglass of Eternity protected"}}}, + }, + [12473] = { + [questKeys.objectives] = {{{27383,"Thel'zan the Duskbringer Defeated"}}}, + }, + [12478] = { + [questKeys.objectives] = {nil,{{190191,"Secrets of the Past Revealed"}}}, + }, + [12481] = { + [questKeys.objectives] = {{{24238,"Bjorn Halgurdsson insulted"},{24238,"Bjorn Halgurdsson defeated"}}}, + }, + [12484] = { + [questKeys.extraObjectives] = {{{[zoneIDs.GRIZZLY_HILLS]={{16.84,48.34}}}, Questie.ICON_TYPE_EVENT, l10n("Place Scourged Troll Mummy in the fire"),0}}, + }, + [12486] = { + [questKeys.preQuestSingle] = {11595,11596,11597}, + }, + [12491] = { + [questKeys.startedBy] = {{23872},nil,{38280}}, + }, + [12492] = { + [questKeys.startedBy] = {{23872},nil,{38281}}, + }, + [12498] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Slay Antiok's mount to make him vulnerable"),0,{{"monster", 28018}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Slay Grand Necrolord Antiok"),0,{{"monster", 28006}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"),0,{{"monster", 27996}}}, + }, + }, + [12500] = { + [questKeys.preQuestSingle] = {12498}, + }, + [12501] = { + [questKeys.finishedBy] = {{28039}}, + [questKeys.exclusiveTo] = {12563,12587}, + [questKeys.childQuests] = {12502,12509,12519,12541}, + }, + [12502] = { + [questKeys.parentQuest] = 12501, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Plant the Argent Crusade Banner"), 0, {{"object", 190522}}}}, + }, + [12503] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28023,28026,28246,28669,28022},28022,"Scourge at The Argent Stand destroyed"}}}, + }, + [12506] = { + [questKeys.triggerEnd] = {"Main building at the Altar of Sseratus investigated.",{[zoneIDs.ZUL_DRAK]={{40.32,39.46,},},},}, + }, + [12509] = { + [questKeys.parentQuest] = 12501, + }, + [12510] = { + [questKeys.sourceItemId] = 38323, + }, + [12512] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28133,28136},28133},{{28141,28142},28141},{{28143,28148},28143}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Escort rescued Crusaders to Dr. Rogers"), 0, {{"monster", 28125}}}}, + }, + [12516] = { + [questKeys.objectives] = {{{28068}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Muddled Mojo on Prophet of Sseratus before killing it"), 0, {{"monster", 28068}}}}, + }, + [12519] = { + [questKeys.parentQuest] = 12501, + }, + [12520] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + }, + [12521] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Take a ride to Sholazar Basin"), 0, {{"monster", 28160}}}}, + }, + [12527] = { + [questKeys.requiredSourceItems] = {38380}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Feed with Zul'Drak Rat"), 0, {{"monster", 28145}}}}, + }, + [12529] = { + [questKeys.requiredSourceItems] = {38619}, + }, + [12530] = { + [questKeys.requiredSourceItems] = {38619,38467}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Softknuckle Poker on Softknuckles"), 0, {{"monster", 28127}}}}, + }, + [12531] = { + [questKeys.requiredSourceItems] = {38621}, + }, + [12532] = { + [questKeys.requiredSourceItems] = {38621,38689}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12533,12534}, + }, + [12533] = { + [questKeys.requiredSourceItems] = {38621}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12529,12530}, + }, + [12534] = { + [questKeys.requiredSourceItems] = {38621}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12529,12530}, + }, + [12536] = { + [questKeys.requiredSourceItems] = {38512}, + [questKeys.triggerEnd] = {"Travel to Mistwhisper Refuge.",{[zoneIDs.SHOLAZAR_BASIN]={{46.31,39.88,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Captive Crocolisk"), 0, {{"monster", 28298}}}}, + }, + [12537] = { + [questKeys.requiredSourceItems] = {38510,38512}, + [questKeys.objectives] = {nil,{{190502,"Sabotage the Mistwhisper Weather Shrine"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the Skyreach Crystal Clusters"), 0, {{"object", 300213}}}}, + }, + [12538] = { + [questKeys.requiredSourceItems] = {38512}, + }, + [12539] = { + [questKeys.requiredSourceItems] = {38512}, + }, + [12540] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Injured Rainspeaker Oracle"), 0, {{"monster", 28217}}}}, + }, + [12541] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12544] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Soo-rahm's Incense"), 0, {{"object", 190507}}}}, + }, + [12545] = { + [questKeys.preQuestSingle] = {}, + }, + [12548] = { + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{40.35,83.08,}}}, Questie.ICON_TYPE_EVENT, l10n("Travel through the Waygate"),}}, + }, + [12549] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + }, + [12551] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12520,12549}, + }, + [12555] = { + [questKeys.objectives] = {{{28274,"Plague Sprayers webbed and destroyed"}}}, + }, + [12557] = { + [questKeys.objectives] = {nil,nil,{{38386},{38339},{38340},{38346}}}, + }, + [12561] = { + [questKeys.requiredSpell] = 54197, + }, + [12563] = { + [questKeys.finishedBy] = {{28039}}, + [questKeys.exclusiveTo] = {12501,12587}, + [questKeys.childQuests] = {12541,12564,12568,12585}, + }, + [12564] = { + [questKeys.parentQuest] = 12563, + }, + [12568] = { + [questKeys.parentQuest] = 12563, + [questKeys.objectives] = {nil,nil,nil,nil,{{{28260,28156},28260,"Argent Footman Corpse Incinerated"}}}, + }, + [12569] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Sandfern Disguise near the fallen log"), 0, {{"object", 190545}}}}, + }, + [12570] = { + [questKeys.triggerEnd] = {"Escort the Injured Rainspeaker Oracle to Rainspaker Canopy",{[zoneIDs.SHOLAZAR_BASIN]={{52.79,59.36}}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Start the escort"), 0, {{"monster", 28217}}}}, + }, + [12571] = { + [questKeys.requiredSourceItems] = {38622}, + }, + [12572] = { + [questKeys.requiredSourceItems] = {38622}, + }, + [12573] = { + [questKeys.sourceItemId] = 38622, + [questKeys.requiredSourceItems] = {38622,40364}, + [questKeys.objectives] = {{{28315,"Extend Peace Offering to Shaman Vekjik"}}}, + }, + [12574] = { + [questKeys.requiredSourceItems] = {38623}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12572,12573}, + }, + [12575] = { + [questKeys.requiredSourceItems] = {38623}, + }, + [12576] = { + [questKeys.requiredSourceItems] = {38623}, + }, + [12577] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12575,12576}, + }, + [12578] = { + [questKeys.requiredSourceItems] = {38624}, + [questKeys.triggerEnd] = {"Travel to Mosswalker Village.",{[zoneIDs.SHOLAZAR_BASIN]={{75.07,51.88,},},},}, + }, + [12579] = { + [questKeys.requiredSourceItems] = {38624}, + }, + [12580] = { + [questKeys.requiredSourceItems] = {38624}, + [questKeys.objectives] = {{{28113,"Mosswalker Victims Rescued"}}}, + }, + [12584] = { + [questKeys.preQuestGroup] = {12552}, + }, + [12585] = { + [questKeys.parentQuest] = 12563, + }, + [12587] = { + [questKeys.exclusiveTo] = {12501,12563}, + [questKeys.childQuests] = {12541,12588,12591,12594}, + }, + [12588] = { + [questKeys.objectives] = {nil,{{190550,"Ancient Dirt Mounds Investigated"}}}, + }, + [12589] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12523,12525}, + [questKeys.objectives] = {{{28054,"Shot apple on Lucky Wilhelm's Head"}}}, + }, + [12591] = { + [questKeys.objectives] = {nil,{{190555,"Nerubian Tunnels Collapsed"}}}, + }, + [12595] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + }, + [12596] = { + [questKeys.preQuestSingle] = {12740}, + [questKeys.preQuestGroup] = {}, + }, + [12598] = { + [questKeys.objectives] = {nil,{{190555,"Nerubian Tunnels Sealed"}}}, + }, + [12601] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12602] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Start the procedure"), 0, {{"monster", 28205}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Toss ingredients into the cauldron"), 0, {{"object", 190499}}}, + }, + [questKeys.objectives] = {nil,{{190499,"Truth Serum Created"}}}, + }, + [12603] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + }, + [12604] = { + [questKeys.preQuestSingle] = {12501,12563,12587}, + }, + [12605] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12556,12558,12569}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Break the egg"), 0, {{"monster", 28408}}}}, + }, + [12606] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28415,28413},28415}}}, + }, + [12607] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28379,28374},28379,}}}, + }, + [12615] = { + [questKeys.preQuestSingle] = {12516}, + }, + [12620] = { + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{49.64,37.41,}}}, Questie.ICON_TYPE_EVENT, l10n("Use Freya's Horn atop of the Glimmering Pillar"),}}, + }, + [12621] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Listen to what the Avatar of Freya has to say"), 0, {{"monster", 27801}}}}, + }, + [12622] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Kill Jin'Alai Trolls until their leaders appear"), 0, {{"monster", 28388},{"monster", 28504},{"object", 193768},{"object", 193769},{"object", 193770}}}}, + }, + [12629] = { + [questKeys.preQuestSingle] = {12637}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12643}, + [questKeys.nextQuestInChain] = 12648, + }, + [12630] = { + [questKeys.objectives] = {{{28519,"Hair Samples Collected"},},nil,nil,nil,}, + }, + [12631] = { + [questKeys.startedBy] = {nil,nil,{38660}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12633}, + [questKeys.nextQuestInChain] = 12637, + }, + [12632] = { + [questKeys.objectives] = {{{28404}}}, + }, + [12633] = { + [questKeys.startedBy] = {nil,nil,{38673}}, + [questKeys.preQuestSingle] = {12238}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12631}, + [questKeys.nextQuestInChain] = 12638, + }, + [12634] = { + [questKeys.preQuestGroup] = {12520,12549}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Pull Sturdy Vines to reveal fruit"), 0, {{"object", 190622}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Ask for a spare fruit"), 0, {{"monster", 28604}}}, + }, + }, + [12637] = { + [questKeys.preQuestSingle] = {12631}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12638}, + [questKeys.nextQuestInChain] = 12629, + }, + [12638] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12633,12238}, + [questKeys.exclusiveTo] = {12637}, + [questKeys.nextQuestInChain] = 12643, + }, + [12641] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Eye of Acherus Control Mechanism"), 0, {{"object", 191609}}}}, + }, + [12643] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12638,12238}, + [questKeys.exclusiveTo] = {12629}, + [questKeys.nextQuestInChain] = 12649, + }, + [12644] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Begin the distillation process"), 0, {{"monster", 28566}}}}, + }, + [12648] = { + [questKeys.preQuestSingle] = {12629}, + [questKeys.preQuestGroup] = {}, + [questKeys.exclusiveTo] = {12649}, + [questKeys.nextQuestInChain] = 12661, + }, + [12649] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12643,12238}, + [questKeys.exclusiveTo] = {12648}, + [questKeys.nextQuestInChain] = 12661, + }, + [12651] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12558,12556,12592}, + [questKeys.exclusiveTo] = {12654}, + [questKeys.nextQuestInChain] = 12654, + }, + [12652] = { + [questKeys.requiredRaces] = 2047, + [questKeys.preQuestSingle] = {12629,12643}, + [questKeys.exclusiveTo] = {12713}, + [questKeys.objectives] = {{{28565,}}}, + }, + [12659] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28465,28600},28622}}}, + }, + [12661] = { + [questKeys.preQuestSingle] = {12648,12649}, + [questKeys.preQuestGroup] = {}, + [questKeys.childQuests] = {12663,12664}, + [questKeys.exclusiveTo] = {}, + [questKeys.nextQuestInChain] = 12669, + [questKeys.requiredSourceItems] = {41390,38699}, + [questKeys.objectives] = {{{28503,"Overlord Drakuru's task complete"}}}, + [questKeys.extraObjectives] = {{{[zoneIDs.ZUL_DRAK]={{28.38,44.85}}}, Questie.ICON_TYPE_EVENT, l10n("Infiltrate Voltarus using Ensorcelled Choker")}}, + }, + [12662] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Heb'Jin's Drum to summon Heb'Jin"), 0, {{"object", 190695}}}}, + }, + [12663] = { + [questKeys.preQuestSingle] = {12649}, + [questKeys.exclusiveTo] = {12664,12648}, + [questKeys.parentQuest] = 12661, + [questKeys.objectives] = {{{28666,"Tour of Zul'Drak complete"}}}, + }, + [12664] = { + [questKeys.preQuestSingle] = {12648}, + [questKeys.exclusiveTo] = {12663,12649}, + [questKeys.parentQuest] = 12661, + [questKeys.objectives] = {{{28666,"Tour of Zul'Drak complete"}}}, + }, + [12665] = { + [questKeys.objectives] = {{{28671,"Quetz'lun's fate revealed."}}}, + }, + [12668] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28747,28748},28747,"Trolls killed near a Soul Font"}}}, + }, + [12669] = { + [questKeys.objectives] = {{{28503,"Drakuru's task complete"},{28739,"Blight Cauldrons diluted"}}}, + [questKeys.requiredSourceItems] = {39154,38699,41390}, + }, + [12671] = { + [questKeys.triggerEnd] = {"Reconnaissance Flight",{[zoneIDs.SHOLAZAR_BASIN]={{50.04,61.43,},},},}, + }, + [12673] = { + [questKeys.objectives] = {nil,{{190716}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Suggestion to mind control Blight Geist"), 0, {{"monster", 28750}}}}, + }, + [12674] = { + [questKeys.objectives] = {{{28752,"High Priest Mu'funu hexed at death"},{28754,"High Priestess Tua-Tua hexed at death"},{28756,"High Priest Hawinni hexed at death"}}}, + }, + [12676] = { + [questKeys.requiredSourceItems] = {39165,41390,38699}, + [questKeys.objectives] = {nil,{{190731,"Scourgewagons destroyed"}},nil,nil,{{{28503},28503,"Drakuru's task complete"}}}, + [questKeys.triggerEnd] = {"Learn Drakuru's secret",{[zoneIDs.ZUL_DRAK]={{27.07,46.16}}}}, + }, + [12677] = { + [questKeys.sourceItemId] = 38699, + [questKeys.requiredSourceItems] = {41390,38699}, + [questKeys.objectives] = {{{28503,"Drakuru's task complete"}},nil,{{39159}}}, + }, + [12680] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28605,28606,28607},28605,"Horse Successfully Stolen"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Deliver Stolen Horse"), 0, {{"monster", 28653}}}}, + }, + [12683] = { + [questKeys.objectives] = {{{28003,},{28003}}}, + [questKeys.preQuestSingle] = {}, + }, + [12685] = { + [questKeys.objectives] = {{{28671}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Quetz'lun's Ritual"), 0, {{"monster", 28672}}}}, + }, + [12686] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Empowerment to mind control Servant of Drakuru"), 0, {{"monster", 28802}}}, + }, + }, + [12687] = { + [questKeys.triggerEnd] = {"The Horseman's Challenge",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{52.41,34.59,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Dark Rider of Acherus and take his horse"), 0, {{"monster", 28768},{"monster", 28782}}}}, + }, + [12688] = { + [questKeys.triggerEnd] = {"Escort Engineer Helice out of Swindlegrin's Dig",{[zoneIDs.SHOLAZAR_BASIN]={{37.29,50.59,},},},}, + }, + [12690] = { + [questKeys.exclusiveTo] = {12710}, + [questKeys.requiredSourceItems] = {39238,38699}, + [questKeys.objectives] = {{{28844,"Drakkari Skullcrushers Slain"},{28873,"Drakkari Chieftain Lured"},},nil,nil,nil,}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Scepter of Command"), 0, {{"monster", 28843}}}}, + }, + [12692] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12695] = { + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12697] = { + [questKeys.preQuestGroup] = {12678,12679,12687,12733,}, + }, + [12698] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28819,28822,28891},28819,"Scarlet Ghoul Returned"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Return Scarlet Ghouls"), 0, {{"monster", 28658}}}}, + }, + [12699] = { + [questKeys.preQuestSingle] = {12523}, + }, + [12701] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Climb inside the Inconspicuous Mine Car"), 0, {{"object", 190767}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Scarlet Cannon"), 0, {{"monster", 28833}}}, + }, + }, + [12702] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12703] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the blood at the Shrine of Kartak"), 0, {{"object", 190782}}}}, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12704] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to High-Oracle Soo-say to retrieve a Gorloc companion"), 0, {{"monster", 28027}}}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.requiredSourceItems] = {38622,38623,38624}, + }, + [12705] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use the Tainted Crystal at the Great Lightning Stone"), 0, {{"object", 190781}}}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12707] = { + [questKeys.objectives] = {{{28861,"Mam'toth Disciples trampled to death"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Medallion of Mam'toth to calm and ride an Enraged Mammoth"),0,{{"monster", 28851}}}, + }, + }, + [12710] = { + [questKeys.sourceItemId] = 38699, + [questKeys.requiredSourceItems] = {38699,39319}, + [questKeys.objectives] = {{{28948,"Drakuru's upper chamber explored"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Open the coffin"), 0, {{"object", 190948}}}, + {{[zoneIDs.ZUL_DRAK]={{28.38,44.85}}}, Questie.ICON_TYPE_EVENT, l10n("Take the teleporter to Drakuru's upper chamber")}, + }, + }, + [12712] = { + [questKeys.sourceItemId] = 39313, + [questKeys.requiredSourceItems] = {39313,39314,39315,39316}, + }, + [12713] = { + [questKeys.objectives] = {nil,nil,{{40425,"Overlord Drakuru Defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use the Scepter of Domination to control it"), 0, {{"monster", 28931}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Go on top of the ziggurat with Drakuru"), 0, {{"monster", 28503}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Defeat Drakuru"), 0, {{"monster", 28998}}}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("After defeating Drakuru, go back down using this portal"), 0, {{"object", 202357}}}, + }, + }, + [12720] = { + [questKeys.triggerEnd] = {"\"Crimson Dawn\" Revealed",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{55.09,66.12},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Equip Keleseth's Persuaders and persuade Scarlet Crusaders"), 0, {{"monster", 28610},{"monster", 28936},{"monster", 28939},{"monster", 28940},}}}, + }, + [12721] = { + [questKeys.objectives] = {{{28952,"Akali unfettered from his chains."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Release Akali from his chains"), 0, {{"object", 191018}}}}, + }, + [12723] = { + [questKeys.preQuestGroup] = {12717,12720,12722}, + }, + [12726] = { + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.objectives] = {{{28862,},{28858,}}}, + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{26.51,35.63}}}, Questie.ICON_TYPE_EVENT, l10n("Use Drums of the Tempest at Stormwright's Shelf"),}}, + }, + [12730] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use the Prophet of Akali Convocation"), 0, {{"object", 191123}}}}, + }, + [12732] = { + [questKeys.requiredMinRep] = {1104,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Fill Rejek's Vial"), 0, {{"object", 191122}}}}, + }, + [12733] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28391,28394,28406},28391,"Death Knights defeated in a duel"}}}, + }, + [12734] = { + [questKeys.objectives] = {{{28086,"Blade blooded on Sapphire Hive Wasp"},{28096,"Blade blooded on Hardknuckle Charger"}},nil,nil,nil,{{{28109,28110},28109,"Blade Blooded on Mistwhisper members"}}}, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12735] = { + [questKeys.extraObjectives] = { + {{[zoneIDs.SHOLAZAR_BASIN]={{43,42}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Atha"), 1}, + {{[zoneIDs.SHOLAZAR_BASIN]={{49,63}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Ha-Khalan"), 2}, + {{[zoneIDs.SHOLAZAR_BASIN]={{46,74}}}, Questie.ICON_TYPE_EVENT, l10n("Use Chime of Cleansing to summon Spirit of Koosu"), 3}, + }, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12736] = { + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12737] = { + [questKeys.objectives] = {nil,{{191136,}}}, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12740] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{28028,28029},28028,}}}, + }, + [12741] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12752] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12753] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12754] = { + [questKeys.extraObjectives] = {{{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{60.9,75.5}}}, Questie.ICON_TYPE_EVENT, l10n("Use the Makeshift Cover"),}}, + }, + [12758] = { + [questKeys.requiredMinRep] = {1104,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Venture Co. Explosive on dead Stonewatcher"),0,{{"monster", 28877}}}}, + }, + [12759] = { + [questKeys.sourceItemId] = 39697, + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12760] = { + [questKeys.requiredMinRep] = {1104,9000}, + }, + [12761] = { + [questKeys.sourceItemId] = 39693, + [questKeys.requiredMinRep] = {1105,9000}, + }, + [12762] = { + [questKeys.requiredMinRep] = {1105,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Charge the Dormant Polished Crystal at the exposed Lifeblood Pillar"),2,{{"object", 300224}}}}, + }, + [12771] = { + [questKeys.preQuestSingle] = {12753}, + }, + [12772] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12773] = { + [questKeys.preQuestSingle] = {12772}, + }, + [12774] = { + [questKeys.preQuestSingle] = {12775}, + }, + [12775] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12776] = { + [questKeys.preQuestSingle] = {12777}, + }, + [12777] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12779] = { + [questKeys.extraObjectives] = {{{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{53.5,36.7}}}, Questie.ICON_TYPE_EVENT, l10n("Use the Horn of the Frostbrood"),}}, + }, + [12782] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12783] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12784] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12785] = { + [questKeys.preQuestSingle] = {12783}, + }, + [12786] = { + [questKeys.preQuestSingle] = {12784}, + }, + [12787] = { + [questKeys.preQuestSingle] = {12752}, + }, + [12788] = { + [questKeys.preQuestSingle] = {12782}, + }, + [12797] = { + [questKeys.extraObjectives] = {{{[zoneIDs.UN_GORO_CRATER]={{50.54,7.74,}}}, Questie.ICON_TYPE_EVENT, l10n("Travel through the Waygate"),}}, + }, + [12801] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Highlord Darion Mograine"), 0, {{"monster", 29173}}}, + {{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{38.8,38.4}}}, Questie.ICON_TYPE_EVENT, l10n("The Light of Dawn Uncovered"),}, + }, + }, + [12802] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Drink Drakuru's Elixir after gathering 5 Desperate Mojo"),0,{{"object", 188358}}}}, + [questKeys.requiredSourceItems] = {35797,36739,36743}, + }, + [12803] = { + [questKeys.requiredSpell] = 54197, + }, + [12804] = { + [questKeys.preQuestSingle] = {12520}, + }, + [12805] = { + [questKeys.objectives] = {{{29124,}}}, + }, + [12807] = { + [questKeys.objectives] = {{{29344,}}}, + }, + [12808] = { + [questKeys.startedBy] = {{18927,19148,19171,19172,19173,20102}}, + }, + [12809] = { + [questKeys.preQuestSingle] = {12808}, + }, + [12810] = { + [questKeys.objectives] = {{{29392,}}}, + }, + [12811] = { + [questKeys.startedBy] = {{19169,19175,19176,19177,19178,20102}}, + }, + [12812] = { + [questKeys.preQuestSingle] = {12811}, + }, + [12813] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29329,29330,29333,29338},29398}}}, + [questKeys.preQuestSingle] = {12807}, + }, + [12814] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29406,29405},29406}}}, + }, + [12815] = { + [questKeys.preQuestSingle] = {12814}, + }, + [12816] = { + [questKeys.triggerEnd] = {"Investigate a circle",{[zoneIDs.EVERSONG_WOODS]={{56.5,52,},},},}, + }, + [12817] = { + [questKeys.triggerEnd] = {"Investigate a circle",{[zoneIDs.AZUREMYST_ISLE]={{34.9,45.5,},},},}, + }, + [12821] = { + [questKeys.name] = "Cell Block Tango", + [questKeys.triggerEnd] = {"Garm Teleporter Activated",{[zoneIDs.STORM_PEAKS]={{50.7,81.9,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Activate the teleporter"), 0, {{"object", 191574}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {12820,12828,12832}, + [questKeys.sourceItemId] = 40731, + }, + [12823] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place Hardpacked Explosive Bundle at Frostgut's Altar"), 0, {{"object", 191842}}}}, + }, + [12828] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Retrieve U.D.E.D."), 0, {{"object", 191553}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Use U.D.E.D on Ironwool Mammoth"), 0, {{"monster", 29402}}}, + }, + }, + [12831] = { + [questKeys.preQuestSingle] = {}, + }, + [12832] = { + [questKeys.triggerEnd] = {"Escort the Injured Goblin Miner to K3.",{[zoneIDs.STORM_PEAKS]={{40.2,79,},},},}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Start the escort"), 0, {{"monster", 29434}}}}, + }, + [12838] = { + [questKeys.preQuestSingle] = {12807}, + }, + [12842] = { + [questKeys.triggerEnd] = {"Weapon emblazoned",{[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{47.28,31.36},{47.82,27.42},{50.43,28.17},},},}, + }, + [12847] = { + [questKeys.triggerEnd] = {"Arete's Gate summoned",{[zoneIDs.ICECROWN]={{9.53,47.01}}}}, + }, + [12851] = { + [questKeys.name] = "Bearly Hanging On", + [questKeys.objectives] = {{{29358},{29351}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount Icefang"), 0, {{"monster", 29598}}}, + }, + }, + [12852] = { + [questKeys.objectives] = {{{29621,}}}, + }, + [12855] = { + [questKeys.requiredSourceItems] = {40971,41430}, + [questKeys.preQuestSingle] = {12854}, + [questKeys.extraObjectives] = {{{[zoneIDs.STORM_PEAKS]={{36.4,64.2}}}, Questie.ICON_TYPE_EVENT, l10n("Use Frosthound's Collar at the Abandoned Camp")}}, + }, + [12856] = { + [questKeys.objectives] = {{{29639,"Rescued Brunnhildar Prisoners"},{29708,"Freed Proto-Drakes"}}}, + [questKeys.extraObjectives] = { + {{[zoneIDs.STORM_PEAKS]={{62.00,59.50}}}, Questie.ICON_TYPE_EVENT, l10n("Fly freed Proto-Drakes to safety while carrying rescued Brunnhildar Prisoners"),}, + }, + }, + [12858] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {40971,41130}, + }, + [12860] = { + [questKeys.requiredSourceItems] = {40971,41179}, + [questKeys.objectives] = {{{29746,"Hidden Data gathered"}}}, + }, + [12862] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Ricket for transportation"), 0, {{"monster", 29428}}}}, + }, + [12864] = { + [questKeys.objectives] = {{{29811,"Locate Missing Scout"}}}, + }, + [12865] = { + [questKeys.objectives] = {{{29854,"Stormcrest Eagles fed"}}}, + [questKeys.preQuestSingle] = {12863}, + }, + [12869] = { + [questKeys.preQuestGroup] = {12867,13417}, + }, + [12871] = { + [questKeys.requiredSourceItems] = {40971,41258}, + [questKeys.preQuestSingle] = {12872}, + }, + [12872] = { + [questKeys.requiredSourceItems] = {40971,44704}, + }, + [12874] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Fjorlin Frostbrow"), 0, {{"monster", 29732}}}}, + }, + [12876] = { + [questKeys.preQuestSingle] = {12874}, + }, + [12885] = { + [questKeys.preQuestSingle] = {12872}, + [questKeys.exclusiveTo] = {12930}, + [questKeys.sourceItemId] = 40971, + }, + [12886] = { + [questKeys.objectives] = {{{29694}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Hyldnir Harpoon to land on nearby Proto-Drakes"), 0, {{"monster", 29625}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Use Hyldnir Harpoon on Column Ornaments to dismount"), 0, {{"monster", 29754}}}, + }, + }, + [12887] = { + [questKeys.objectives] = {{{29747,"The Ocular has been destroyed"}}}, + }, + [12889] = { + [questKeys.requiredSkill] = {202,400}, + }, + [12892] = { + [questKeys.objectives] = {{{29747,"The Ocular has been destroyed"}}}, + }, + [12893] = { + [questKeys.objectives] = {{{29769},{29770},{29840}}}, + }, + [12896] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Tamper with General's Weapon Rack to summon General Lightsbane"), 0, {{"object", 191778},{"object", 191779}}}, + }, + }, + [12897] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Tamper with General's Weapon Rack to summon General Lightsbane"), 0, {{"object", 191778},{"object", 191779}}}, + }, + }, + [12906] = { + [questKeys.objectives] = {{{30146,"Exhausted Vrykul Disciplined"}}}, + }, + [12910] = { + [questKeys.sourceItemId] = 40971, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount Frostbite to track scent"), 0, {{"monster", 29857}}}, + }, + }, + [12913] = { + [questKeys.sourceItemId] = 40971, + }, + [12916] = { + [questKeys.objectives] = {nil,{{400065,"Scourge Enclosure Blown Up"}}}, + }, + [12919] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Let Gymer know you're ready"), 0, {{"monster", 29647}}}, + {{[zoneIDs.ZUL_DRAK]={{26.71,57.29}}}, Questie.ICON_TYPE_EVENT, l10n("Slay Scourge while riding Gymer"),}, + }, + }, + [12920] = { + [questKeys.preQuestSingle] = {12917}, + }, + [12924] = { + [questKeys.objectives] = {{{30099,"Fjorn's Anvil Brought to Dun Niffelem"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Pick up 'You Can't Miss Him' (12966)"), 0, {{"monster", 30105}}, {["hideIfQuestActive"] = 12966}}, + }, + }, + [12925] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12926] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {40971,41130}, + }, + [12927] = { + [questKeys.requiredSourceItems] = {40971,41179}, + [questKeys.objectives] = {{{29746,"Hidden Data gathered"}}}, + }, + [12928] = { + [questKeys.requiredSourceItems] = {40971,44704}, + }, + [12929] = { + [questKeys.preQuestSingle] = {12928}, + [questKeys.exclusiveTo] = {12930}, + [questKeys.sourceItemId] = 40971, + }, + [12932] = { -- This is the version of the quest you get if you have NOT completed 9977 + [questKeys.objectives] = {{{30014,"Yggdras Defeated"}}}, + [questKeys.exclusiveTo] = {12954,9977}, + [questKeys.nextQuestInChain] = 12933, + }, + [12933] = { + [questKeys.objectives] = {{{30017,"Stinkbeard Defeated"}}}, + [questKeys.preQuestSingle] = {12932,12954}, + }, + [12934] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30019,30024,30025,30026},30019,"Elemental Lord Defeated"}}}, + }, + [12935] = { + [questKeys.objectives] = {{{30020,"Orinoko Tuskbreaker Defeated"}}}, + }, + [12936] = { + [questKeys.objectives] = {{{30023,"Korrak the Bloodrager Defeated"}}}, + }, + [12939] = { + [questKeys.objectives] = {{{30037,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Challenge Flag on sparring Mjordin Combatants"), 0, {{"monster", 30037}}}, + }, + }, + [12940] = { + [questKeys.startedBy] = {nil,{400017}}, + [questKeys.finishedBy] = {nil,{400017}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12941] = { + [questKeys.startedBy] = {nil,{400016}}, + [questKeys.finishedBy] = {nil,{400016}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12942] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12944] = { + [questKeys.startedBy] = {nil,{400038}}, + [questKeys.finishedBy] = {nil,{400038}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12945] = { + [questKeys.startedBy] = {nil,{400039}}, + [questKeys.finishedBy] = {nil,{400039}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [12946] = { + [questKeys.startedBy] = {nil,{400019}}, + [questKeys.finishedBy] = {nil,{400019}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12947] = { + [questKeys.startedBy] = {nil,{400018}}, + [questKeys.finishedBy] = {nil,{400018}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [12948] = { + [questKeys.objectives] = {{{30022,"Vladof the Butcher Defeated"}}}, + }, + [12950] = { + [questKeys.startedBy] = {nil,{400032}}, + [questKeys.finishedBy] = {nil,{400032}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [12953] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use Harpoon Guns to burn Dry Haystacks"), 0, {{"monster", 30066}}}, + }, + }, + [12954] = { + [questKeys.objectives] = {{{30014,"Yggdras Defeated"}}}, + [questKeys.preQuestSingle] = {9977}, + [questKeys.exclusiveTo] = {12932}, + [questKeys.nextQuestInChain] = 12933, + }, + [12957] = { + [questKeys.objectives] = {{{29384},{29369}}}, + }, + [12966] = { + [questKeys.preQuestGroup] = {12915,12956}, + [questKeys.requiredMinRep] = {1119,0}, + [questKeys.finishedBy] = {{30127}}, + }, + [12967] = { + [questKeys.objectives] = {{{30120}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Ride Snorri"), 0, {{"monster", 30123}}}}, + }, + [12968] = { + [questKeys.preQuestSingle] = {12905}, + }, + [12970] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Listen to Lok'lira's proposal"), 0, {{"monster", 29975}}}, + }, + }, + [12973] = { + [questKeys.objectives] = {{{30405,"Accompany Brann Bronzebeard to Frosthold."}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Get in Brann's Flying Machine"), 0, {{"monster", 30134}}}}, + [questKeys.preQuestSingle] = {12880}, + }, + [12974] = { + [questKeys.exclusiveTo] = {12932,12954}, + }, + [12975] = { + [questKeys.preQuestSingle] = {12924}, + }, + [12977] = { + [questKeys.name] = "Hodir's Call", + [questKeys.objectives] = {{{29974,"Niffelem Forefather freed"},},nil,nil,nil,{{{30144,30135},30144,},},}, + [questKeys.preQuestSingle] = {12976}, + }, + [12978] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29370,29374,29380},29370,"Nidavelir Stormforged slain"}}}, + }, + [12979] = { + [questKeys.objectives] = {nil,nil,{{42204},},nil,nil,}, + }, + [12981] = { + [questKeys.preQuestSingle] = {12967}, + }, + [12982] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30186,30194,30195,30196},30186,"Ebon Blade Prisoners set free"}}}, + }, + [12985] = { + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Diamond Tipped Pick on the corpses of Dead Iron Giants"), 0, {{"monster", 29914},{"monster", 30163}}}}, + }, + [12987] = { + [questKeys.name] = "Placing Hodir's Helm", + [questKeys.requiredMinRep] = {1119,3000}, + }, + [12994] = { + [questKeys.requiredMinRep] = {1119,9000}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Ethereal Worg's Fang"), 0, {{"monster", 32569}}}}, + }, + [12995] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{29915,29919,30037,30243,30250,30409,30475,30483,30484,30632,30725,30751,29880},29880,"Ebon Blade Banner planted near vrykul corpse"}}}, + }, + [12996] = { + [questKeys.objectives] = {{{29352,"Kirgaraak Defeated"}}}, + }, + [12998] = { + [questKeys.objectives] = {nil,{{192181,"Attempt to secure the Heart of the Storm"}}}, + }, + [13001] = { + [questKeys.name] = "Forging Hodir's Spear", + [questKeys.requiredMinRep] = {1119,9000}, + }, + [13003] = { + [questKeys.name] = "How To Slay Your Dragon", + [questKeys.objectives] = {{{30275,"Wild Wyrm Slain"}}}, + [questKeys.preQuestSingle] = {13001}, + }, + [13005] = { + [questKeys.objectives] = {{{29984,"Iron Sentinel slain"},{29978,"Iron Dwarf Assailant slain"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_SLAY, l10n("Use the Horn of the Peaks and call on the Earthen to defeat Iron Dwarves and Iron Sentinels"), 0, {{"monster", 29984},{"monster",29978}}}}, + [questKeys.preQuestSingle] = {13057}, + }, + [13006] = { + [questKeys.name] = "A Viscous Cleaning", + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.preQuestSingle] = {12987}, + }, + [13007] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount Tamed Jormungar to fight Iron Colossus"),0,{{"monster", 30301},{"object", 192262}}},}, + }, + [13008] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30273,30268,30274},30273,}}}, + }, + [13010] = { + [questKeys.objectives] = {{{30105, nil, {["hideIfQuestActive"] = 12966}}},nil,nil,{1119,3000}}, + }, + [13011] = { + [questKeys.name] = "Culling Jorcuttar", + [questKeys.objectivesText] = {"King Jokkum in Dun Niffelem wants you to slay Jorcuttar in Hibernal Cavern."}, + [questKeys.requiredMinRep] = {1119,3000}, + [questKeys.requiredSourceItems] = {42733}, + [questKeys.extraObjectives] = {{{[zoneIDs.STORM_PEAKS]={{54.71,60.79}}}, Questie.ICON_TYPE_EVENT, l10n("Place Icemaw Bear Flank"), 0}} + }, + [13012] = { + [questKeys.startedBy] = {{30348}}, + [questKeys.finishedBy] = {{30348}}, + }, + [13013] = { + [questKeys.startedBy] = {{30357}}, + [questKeys.finishedBy] = {{30357}}, + }, + [13014] = { + [questKeys.startedBy] = {{30358}}, + [questKeys.finishedBy] = {{30358}}, + }, + [13015] = { + [questKeys.startedBy] = {{30359}}, + [questKeys.finishedBy] = {{30359}}, + }, + [13016] = { + [questKeys.startedBy] = {{30360}}, + [questKeys.finishedBy] = {{30360}}, + }, + [13017] = { + [questKeys.startedBy] = {{30531}}, + [questKeys.finishedBy] = {{30531}}, + }, + [13018] = { + [questKeys.startedBy] = {{30362}}, + [questKeys.finishedBy] = {{30362}}, + }, + [13019] = { + [questKeys.startedBy] = {{30363}}, + [questKeys.finishedBy] = {{30363}}, + }, + [13020] = { + [questKeys.startedBy] = {{30375}}, + [questKeys.finishedBy] = {{30375}}, + }, + [13021] = { + [questKeys.startedBy] = {{30536}}, + [questKeys.finishedBy] = {{30536}}, + }, + [13022] = { + [questKeys.startedBy] = {{30533}}, + [questKeys.finishedBy] = {{30533}}, + }, + [13023] = { + [questKeys.startedBy] = {{30534}}, + [questKeys.finishedBy] = {{30534}}, + }, + [13024] = { + [questKeys.startedBy] = {{30365}}, + [questKeys.finishedBy] = {{30365}}, + }, + [13025] = { + [questKeys.startedBy] = {{30367}}, + [questKeys.finishedBy] = {{30367}}, + }, + [13026] = { + [questKeys.startedBy] = {{30368}}, + [questKeys.finishedBy] = {{30368}}, + }, + [13027] = { + [questKeys.startedBy] = {{30369}}, + [questKeys.finishedBy] = {{30369}}, + }, + [13028] = { + [questKeys.startedBy] = {{30370}}, + [questKeys.finishedBy] = {{30370}}, + }, + [13029] = { + [questKeys.startedBy] = {{30371}}, + [questKeys.finishedBy] = {{30371}}, + }, + [13030] = { + [questKeys.startedBy] = {{30372}}, + [questKeys.finishedBy] = {{30372}}, + }, + [13031] = { + [questKeys.startedBy] = {{30373}}, + [questKeys.finishedBy] = {{30373}}, + }, + [13032] = { + [questKeys.startedBy] = {{30374}}, + [questKeys.finishedBy] = {{30374}}, + }, + [13033] = { + [questKeys.startedBy] = {{30364}}, + [questKeys.finishedBy] = {{30364}}, + }, + [13034] = { + [questKeys.preQuestSingle] = {}, + }, + [13035] = { + [questKeys.preQuestSingle] = {13057}, + }, + [13037] = { + [questKeys.objectives] = {{{30395}}}, + }, + [13038] = { + [questKeys.objectives] = {{{30448}}}, + [questKeys.preQuestSingle] = {13034}, + }, + [13039] = { + [questKeys.preQuestSingle] = {13036}, + }, + [13040] = { + [questKeys.preQuestSingle] = {13036}, + }, + [13042] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.objectives] = {{{30409,"Information beaten out of Apprentice Osterkilgr"},{30409}}}, + }, + [13043] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.startedBy] = {{30409},nil,{42772}}, + [questKeys.requiredSourceItems] = {}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Nergeld"), 0, {{"monster", 30403}}}, + }, + }, + [13044] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13008,13039,13040}, + }, + [13045] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Argent Skytalon"), 0, {{"monster", 30500}}}, + {{[zoneIDs.ICECROWN]={{86.85,76.61}}}, Questie.ICON_TYPE_EVENT, l10n("Drop Off Captured Crusader"), 0}, + }, + }, + [13046] = { + [questKeys.objectives] = {{{30422}}}, + [questKeys.requiredMinRep] = {1119,21000}, + }, + [13047] = { + [questKeys.preQuestGroup] = {13035,13005}, + [questKeys.objectives] = {{{30399,"Witness the Reckoning"}}}, + }, + [13048] = { + [questKeys.objectives] = {{{80000}}}, + [questKeys.preQuestGroup] = {13037,13038}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Attune the Lorehammer"), 0, {{"object", 192541},{"object", 192542},{"object", 192543},{"object", 192544},{"object", 192545},{"object", 192546}}}, + }, + }, + [13049] = { + [questKeys.preQuestGroup] = {13037,13038}, + }, + [13058] = { + [questKeys.preQuestGroup] = {13048,13049}, + [questKeys.extraObjectives] = { + {{[zoneIDs.STORM_PEAKS]={{64.4,46.7}}}, Questie.ICON_TYPE_OBJECT, l10n("Use the Lorehammer to travel back in time"), 0}, + {nil, Questie.ICON_TYPE_OBJECT, l10n("Defeat the North Wind"), 0, {{"monster", 30474}}}, + }, + }, + [13059] = { + [questKeys.objectives] = {nil,{{192560}},nil,nil,{{{30475},32821,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Volgur"), 0, {{"monster", 30483}}}, + {nil, Questie.ICON_TYPE_SLAY, l10n("Defeat Brita"), 0, {{"monster", 30484}}}, + }, + }, + [13060] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Talk to Ricket for transportation"), 0, {{"monster", 29428}}}, + }, + }, + [13064] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Listen to Thorim's history"), 0, {{"monster", 29445}}}, + }, + }, + [13065] = { + [questKeys.startedBy] = {{30537}}, + [questKeys.finishedBy] = {{30537}}, + }, + [13066] = { + [questKeys.startedBy] = {{30535}}, + [questKeys.finishedBy] = {{30535}}, + }, + [13067] = { + [questKeys.startedBy] = {{30538}}, + [questKeys.finishedBy] = {{30538}}, + }, + [13068] = { + [questKeys.preQuestSingle] = {13141}, + }, + [13069] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 30337}}}}, + }, + [13071] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 30272}}}}, + }, + [13073] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Speak to Arch Druid Lilliandra for transportation to Moonglade"), 0, {{"monster", 30630}}}}, + }, + [13086] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Mount Argent Cannon"), 0, {{"monster", 30236}}}, + }, + }, + [13091] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30725,29880,30632,30243,30250},30644,}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Possess a Water Terror"), 0, {{"object", 192774}}}, + }, + }, + [13092] = { + [questKeys.preQuestSingle] = {12999}, + [questKeys.specialFlags] = 0, + }, + [13093] = { + [questKeys.preQuestSingle] = {13092}, + }, + [13098] = { + [questKeys.preQuestSingle] = {}, + }, + [13106] = { + [questKeys.preQuestSingle] = {12896,12897}, + [questKeys.exclusiveTo] = {13119,13120}, + }, + [13109] = { + [questKeys.preQuestSingle] = {13047}, + }, + [13110] = { + [questKeys.objectives] = {{{30202}}}, + [questKeys.preQuestSingle] = {13104}, + }, + [13117] = { + [questKeys.preQuestSingle] = {}, + }, + [13118] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13121] = { + [questKeys.objectives] = {nil,{{192861}}}, + }, + [13122] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13125] = { + [questKeys.preQuestGroup] = {13122,13118}, + }, + [13129] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Dip Kurzel's Blouse Scrap on the remains of Novos the Summoner"), 0, {{"monster", 26631}}}}, + }, + [13130] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13133] = { + [questKeys.objectives] = {{{30886}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Wake Slumbering Mjordin until you find Iskalder"), 0, {{"monster", 30718}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Iskalder delivered to The Bone Witch"), 0, {{"monster", 30232}}}, + }, + }, + [13134] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13135] = { + [questKeys.preQuestSingle] = {13104}, + }, + [13136] = { + [questKeys.startedBy] = {{30597},nil,{43242}}, + [questKeys.objectives] = {nil,nil,{{43259}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13137] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Use the Battlescar Signal Fire to summon Iskalder"), 0, {{"object", 193024}}}, + }, + }, + [13138] = { + [questKeys.preQuestSingle] = {13136}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Bag of Jagged Shards near Malykriss Furnace"), 0, {{"object", 193004}}}}, + }, + [13139] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13125,13130,13135}, + }, + [13140] = { + [questKeys.preQuestSingle] = {13136}, + }, + [13141] = { + [questKeys.objectives] = {{{30989,"Battle for Crusaders' Pinnacle"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Plant the Blessed Banner of the Crusade"), 0, {{"object", 193003}}}}, + }, + [13142] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Blow the War Horn of Jotunheim to challenge Overthane Balargarde"), 0, {{"object", 193028}}}, + }, + }, + [13143] = { + [questKeys.objectives] = {{{30894}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Lead a subdued Lithe Stalker to the cliff above Vereth the Cunning"), 0, {{"monster", 31049}}}}, + }, + [13144] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{30689,31048},30689,}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13152,13211}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Free Burning Skeletons to destroy Chained Abominations"), 0, {{"object", 193060}}}}, + }, + [13145] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13146] = { + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Drag Scourge Bombs to Lumbering Atrocities"), 0, {{"monster", 30920}}}, + }, + }, + [13147] = { + [questKeys.objectives] = {{{30922}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13149] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Plagued Grain Crates Dispelled: 0/1"), 0, {{"object", 190094}}}}, + }, + [13151] = { + [questKeys.objectives] = {{{26533,"Mal'Ganis Defeated"}}}, + }, + [13152] = { + [questKeys.preQuestSingle]= {}, + [questKeys.preQuestGroup] = {13134,13138,13140}, + [questKeys.objectives] = {{{30993,"Patches freed"},{30992,"Help Patches kill Doctor Sabnok"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Free Patches"), 0, {{"object", 193025}}}}, + }, + [13153] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13154,13156,13195,13196,13197,13198}, + }, + [13154] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13153,13156,13195,13196,13197,13198}, + }, + [13155] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13172,13174}, + }, + [13156] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {236,13153,13154,13195,13196,13197,13198}, + }, + [13160] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of a Lithe Stalker"), 0, {{"object", 193424}}}}, + }, + [13164] = { + [questKeys.preQuestSingle]= {}, + [questKeys.preQuestGroup] = {13161,13162,13163}, + }, + [13168] = { + [questKeys.triggerEnd] = {"Seize Control of an Eidolon Watcher", {[zoneIDs.ICECROWN]={{44.19,24.69}}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Eye of Dominion"), 0, {{"object", 193058}}}}, + }, + [13169] = { + [questKeys.objectives] = {{{30952,"Hungering Plaguehounds fed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13170] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13171] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Seize Control of an Eidolon Watcher"), 0, {{"object", 193058}}}}, + }, + [13172] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13169,13170,13171}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Speak to Keritose Bloodblade to secure a Skeletal Gryphon"), 0, {{"monster", 30946}}}}, + }, + [13174] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13169,13170,13171}, + }, + [13177] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13179}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{30739,39019},39019,"Horde members slain"}}}, + }, + [13178] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13180}, + }, + [13179] = { + [questKeys.exclusiveTo] = {13177}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{30739,39019},39019,"Horde members slain"}}}, + }, + [13180] = { + [questKeys.exclusiveTo] = {13178}, + }, + [13181] = { + [questKeys.triggerEnd] = {"Victory in Lake Wintergrasp", {[zoneIDs.DALARAN]={{33,67.2}}}}, + }, + [13183] = { + [questKeys.triggerEnd] = {"Victory in Lake Wintergrasp", {[zoneIDs.DALARAN]={{58.2,25.6}}}}, + }, + [13185] = { + [questKeys.exclusiveTo] = {13223}, + }, + [13186] = { + [questKeys.exclusiveTo] = {13222}, + }, + [13190] = { + [questKeys.requiredSourceItems] = {43494}, + [questKeys.objectives] = {nil,{{193057,"Ahn'kahar Watcher Corpse Burned"}}}, + }, + [13191] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {{31106}}, + [questKeys.exclusiveTo] = {13192,13193,13194,13199,13200,13201,13202}, + }, + [13192] = { + [questKeys.exclusiveTo] = {13191,13193,13194,13199,13200,13201,13202}, + }, + [13193] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13191,13192,13194,13199,13200,13201,13202}, + }, + [13194] = { + [questKeys.startedBy] = {}, + [questKeys.exclusiveTo] = {13191,13192,13193,13199,13200,13201,13202}, + }, + [13195] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13196,13197,13198}, + }, + [13196] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13197,13198}, + }, + [13197] = { + [questKeys.finishedBy] = {{31108}}, + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13196,13198}, + }, + [13198] = { + [questKeys.exclusiveTo] = {236,13153,13154,13156,13195,13196,13197}, + }, + [13199] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13200,13201,13202}, + }, + [13200] = { + [questKeys.finishedBy] = {{31106}}, + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13201,13202}, + }, + [13201] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13200,13202}, + }, + [13202] = { + [questKeys.exclusiveTo] = {13191,13192,13193,13194,13199,13200,13201}, + }, + [13203] = { + [questKeys.exclusiveTo] = {11528,13966}, + }, + [13204] = { + [questKeys.startedBy] = {{30329},nil,{43512}}, + }, + [13211] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13134,13138,13140}, + }, + [13214] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31191,31192,31193,31194,31195,31196,},31191}}}, + }, + [13215] = { + [questKeys.objectives] = {{{31222}}}, + }, + [13216] = { + [questKeys.objectives] = {{{31242}}}, + }, + [13217] = { + [questKeys.objectives] = {{{31271}}}, + }, + [13218] = { + [questKeys.objectives] = {{{31277}}}, + }, + [13219] = { + [questKeys.objectives] = {{{14688}}}, + }, + [13220] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Crusader Olakin's Remains at the Sanctum of Reanimation Slab"), 0, {{"object", 193090}}}}, + }, + [13221] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13222] = { + [questKeys.exclusiveTo] = {13186}, + }, + [13223] = { + [questKeys.exclusiveTo] = {13185}, + }, + [13226] = { + [questKeys.nextQuestInChain] = 13036, + }, + [13227] = { + [questKeys.nextQuestInChain] = 13036, + }, + [13228] = { + [questKeys.objectives] = {{{31273,"Dying Berserker Questioned"}}}, + [questKeys.childQuests] = {13230}, + [questKeys.preQuestSingle] = {13224}, + }, + [13229] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13119,13120}, + }, + [13230] = { + [questKeys.parentQuest] = 13228, + [questKeys.preQuestSingle] = {13228}, + }, + [13231] = { + [questKeys.objectives] = {{{31304,"Dying Soldier Questioned"}}}, + [questKeys.childQuests] = {13232}, + [questKeys.preQuestSingle] = {13225}, + }, + [13232] = { + [questKeys.objectives] = {{{31304,"Dying Soldiers Slain"}}}, + [questKeys.parentQuest] = 13231, + [questKeys.preQuestSingle] = {13231}, + }, + [13233] = { + [questKeys.triggerEnd] = {"Kill horde players in Icecrown", {[zoneIDs.ICECROWN]={{60.9,41.3}}}}, + [questKeys.preQuestSingle] = {13231}, + }, + [13234] = { + [questKeys.preQuestSingle] = {13228}, + [questKeys.triggerEnd] = {"Kill alliance players in Icecrown", {[zoneIDs.ICECROWN]={{60.9,41.3}}}}, + }, + [13235] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Margrave Dhakar to fight Morbidus"), 0, {{"monster", 31306}}}}, + }, + [13236] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31254,32414,31276},31329}}}, + }, + [13238] = { + [questKeys.preQuestSingle] = {13228}, + }, + [13239] = { + [questKeys.preQuestSingle] = {13238}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13240] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13241,13243,13244}, + }, + [13241] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13243,13244}, + }, + [13242] = { + [questKeys.preQuestSingle] = {12500}, + }, + [13243] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13241,13244}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{27744,28341},27744}}}, + }, + [13244] = { + [questKeys.startedBy] = {{31439},nil,nil}, + [questKeys.finishedBy] = {{31439},nil,nil}, + [questKeys.exclusiveTo] = {13240,13241,13243}, + }, + [13245] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13246] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13247] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13248,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13248] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13249,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13249] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13250,13251,13252,13253,13254,13255,13256,14199}, + }, + [13250] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13251,13252,13253,13254,13255,13256,14199}, + }, + [13251] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13252,13253,13254,13255,13256,14199}, + }, + [13252] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13253,13254,13255,13256,14199}, + }, + [13253] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13254,13255,13256,14199}, + }, + [13254] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13255,13256,14199}, + }, + [13255] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13256,14199}, + }, + [13256] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,14199}, + }, + [13258] = { + [questKeys.preQuestGroup] = {12938,13224}, + }, + [13260] = { + [questKeys.preQuestSingle] = {13228}, + }, + [13261] = { + [questKeys.preQuestSingle] = {13239}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13264] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13237}, + }, + [13265] = { + [questKeys.requiredSpell] = -59390, + }, + [13267] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Begin the assault!"), 0, {{"monster", 31650}}}}, + }, + [13268] = { + [questKeys.requiredSpell] = -59390, + }, + [13269] = { + [questKeys.requiredSpell] = -59390, + }, + [13270] = { + [questKeys.requiredSpell] = -59390, + }, + [13272] = { + [questKeys.requiredSpell] = -59390, + }, + [13273] = { + [questKeys.preQuestSingle] = {12928}, + [questKeys.sourceItemId] = 40971, + }, + [13274] = { + [questKeys.sourceItemId] = 40971, + }, + [13276] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13264}, + }, + [13277] = { + [questKeys.preQuestSingle] = {13237}, + }, + [13278] = { + [questKeys.preQuestSingle] = {13277}, + }, + [13279] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + }, + [13280] = { + [questKeys.preQuestSingle] = {13296}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Plant Alliance Battle Standard"), 0, {{"object", 193565}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get in the Jumpbot"), 0, {{"monster", 31736}}}, + }, + }, + [13281] = { + [questKeys.sourceItemId] = 44010, + [questKeys.preQuestSingle] = {13279}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + }, + [13283] = { + [questKeys.preQuestSingle] = {13293}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Plant Horde Battle Standard"), 0, {{"object", 193565}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get in the Jumpbot"), 0, {{"monster", 31770}}}, + }, + }, + [13284] = { + [questKeys.preQuestSingle] = {13341}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31701,31737},31701,"Alliance troops escorted to Ymirheim"}}}, + }, + [13285] = { + [questKeys.sourceItemId] = 40971, + [questKeys.requiredSourceItems] = {}, + }, + [13286] = { + [questKeys.preQuestSingle] = {13231}, + }, + [13288] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13287}, + }, + [13289] = { + [questKeys.objectives] = {{{31142,"Icy Ghouls Exploded"},{31147,"Vicious Geists Exploded"},{31205,"Risen Alliance Soldiers Exploded"}}}, + [questKeys.preQuestSingle] = {13288}, + }, + [13290] = { + [questKeys.preQuestSingle] = {13231}, + }, + [13291] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Field Tests Conducted"}}}, + }, + [13292] = { + [questKeys.preQuestSingle] = {13291}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31137,31583},31137,"Frostbrood Skytalons Destroyed"}}}, + }, + [13293] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13294] = { + [questKeys.preQuestSingle] = {13287}, + }, + [13295] = { + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + }, + [13296] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13297] = { + [questKeys.sourceItemId] = 44010, + [questKeys.preQuestSingle] = {13295}, + [questKeys.objectives] = {{{31773,"Plague Cauldron Neutralized"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Pustulant Spinal Fluid"), 0, {{"monster", 31773}}}}, + }, + [13298] = { + [questKeys.preQuestSingle] = {13294}, + }, + [13300] = { + [questKeys.objectives] = {{{31397,"Saronite Mine Slave rescued"}}}, + [questKeys.preQuestSingle] = {13225}, + }, + [13301] = { + [questKeys.preQuestSingle] = {13340}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{31832,31833},31832,"Horde troops escorted to Ymirheim"}}}, + }, + [13302] = { + [questKeys.objectives] = {{{31397,"Saronite Mine Slave rescued"}}}, + [questKeys.preQuestSingle] = {13224}, + }, + [13305] = { + [questKeys.preQuestSingle] = {13304}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Board Refurbished Demolisher"), 0, {{"monster", 32370}}}}, + }, + [13306] = { + [questKeys.preQuestSingle] = {13366}, + }, + [13307] = { + [questKeys.preQuestSingle] = {13306}, + }, + [13308] = { + [questKeys.preQuestSingle] = {13224,13225}, + }, + [13309] = { + [questKeys.preQuestSingle] = {13341}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Hop on the turret"), 0, {{"monster", 32227}}}}, + [questKeys.objectives] = {{{32222,"Skybreaker Infiltrators dropped"}}}, + }, + [13310] = { + [questKeys.preQuestSingle] = {13340}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Hop on the turret"), 0, {{"monster", 31884}}}}, + [questKeys.objectives] = {{{31882,"Skybreaker Infiltrators dropped"}}}, + }, + [13312] = { + [questKeys.preQuestGroup] = {13306,13367}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Rune of Distortion near Grimkor's Orb to summon Grimkor the Wicked"), 0, {{"object", 193622}}}}, + }, + [13313] = { + [questKeys.preQuestSingle] = {13306}, + }, + [13314] = { + [questKeys.preQuestSingle] = {13332}, + }, + [13315] = { + [questKeys.preQuestSingle] = {13288}, + }, + [13316] = { + [questKeys.preQuestSingle] = {13329}, + }, + [13318] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13315}, + }, + [13319] = { + [questKeys.preQuestSingle] = {13315}, + }, + [13320] = { + [questKeys.preQuestSingle] = {13315}, + }, + [13321] = { + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13322] = { + [questKeys.preQuestSingle] = {13321}, + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13323] = { + [questKeys.preQuestSingle] = {13318}, + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + }, + [13328] = { + [questKeys.preQuestSingle] = {13329}, + }, + [13329] = { + [questKeys.objectives] = {{{32467,"Skeletal Reaver bones dissolved"}}}, + [questKeys.preQuestGroup] = {13307,13312}, + }, + [13330] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13331] = { + [questKeys.preQuestSingle] = {13313}, + }, + [13332] = { + [questKeys.preQuestSingle] = {13345}, + }, + [13333] = { + [questKeys.preQuestSingle] = {13314}, + }, + [13334] = { + [questKeys.preQuestSingle] = {13332}, + }, + [13335] = { + [questKeys.objectives] = {{{32467,"Skeletal Reaver bones dissolved"}}}, + [questKeys.preQuestGroup] = {13334,13337}, + }, + [13336] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13337] = { + [questKeys.preQuestGroup] = {13332,13346}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Rune of Distortion near Grimkor's Orb to summon Grimkor the Wicked"), 0, {{"object", 193622}}}}, + }, + [13338] = { + [questKeys.preQuestSingle] = {13335}, + }, + [13339] = { + [questKeys.preQuestSingle] = {13335}, + }, + [13340] = { + [questKeys.preQuestSingle] = {13224}, + }, + [13341] = { + [questKeys.preQuestSingle] = {13225}, + }, + [13342] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13318}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13343] = { + [questKeys.objectives] = {{{32327,"Hourglass of Eternity protected from the Infinite Dragonflight."}}}, + }, + [13344] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13342}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13345] = { + [questKeys.sourceItemId] = 44459, + [questKeys.preQuestSingle] = {13318}, + }, + [13346] = { + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13347] = { + [questKeys.preQuestSingle] = {12499}, + }, + [13350] = { + [questKeys.preQuestSingle] = {13346}, + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13351] = { + [questKeys.preQuestSingle] = {13264}, + }, + [13352] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13351}, + }, + [13353] = { + [questKeys.objectives] = {{{32236,"Dark Subjugator dragged and dropped"}}}, + [questKeys.preQuestSingle] = {13352}, + }, + [13354] = { + [questKeys.preQuestSingle] = {13351}, + }, + [13355] = { + [questKeys.preQuestSingle] = {13351}, + }, + [13356] = { + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13357] = { + [questKeys.preQuestSingle] = {13356}, + [questKeys.extraObjectives] = {{{[zoneIDs.ICECROWN]={{49.7,34.4},{49.1,34.2},{48.9,33.2}}}, Questie.ICON_TYPE_EVENT, l10n("Throw a Writhing Mass into a cauldron at Aldur'thar")}}, + }, + [13358] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13352}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13359] = { + [questKeys.preQuestSingle] = {13348}, + [questKeys.nextQuestInChain] = 13360, + }, + [13360] = { + [questKeys.preQuestSingle] = {13359}, + }, + [13361] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31395,32587,32588},32588,"The Prince's Destiny"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Pick it up"), 0, {{"object", 193980},{"object", 194023},{"object", 194024}}}}, + }, + [13363] = { + [questKeys.preQuestSingle] = {13362}, + }, + [13364] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tirion while wearing a Cultist Acolyte's Hood"), 0, {{"monster", 32239}}}}, + }, + [13365] = { + [questKeys.objectives] = {{{32316}}}, + [questKeys.preQuestSingle] = {13358}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Activate the Summoning Stone after collecting 5 Dark Matter"), 0, {{"object", 400015}}}}, + }, + [13366] = { + [questKeys.sourceItemId] = 44459, + [questKeys.preQuestSingle] = {13352}, + }, + [13367] = { + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13368] = { + [questKeys.preQuestSingle] = {13367}, + [questKeys.sourceItemId] = 44476, + [questKeys.requiredSourceItems] = {44477,44479,44478,44476,44480}, + }, + [13369] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Request a portal to Orgrimmar"), 0, {{"monster", 32346}}}}, + }, + [13372] = { + [questKeys.startedBy] = {{15989},nil,{44569}}, + }, + [13373] = { + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 0, {{"monster", 31839}}}}, + }, + [13375] = { + [questKeys.startedBy] = {{15989},nil,{44577}}, + }, + [13376] = { + [questKeys.preQuestSingle] = {13373}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 1, {{"monster", 31839}}}}, + [questKeys.objectives] = {{{32188},{32154},{31721}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13377] = { + [questKeys.objectives] = {{{32518,"Assist King Varian Wrynn"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Begin the assault!"), 0, {{"monster", 32401}}}}, + }, + [13379] = { + [questKeys.preQuestSingle] = {13239}, + }, + [13380] = { + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Karen No"), 0, {{"monster", 31648}}}}, + }, + [13382] = { + [questKeys.preQuestSingle] = {13380}, + [questKeys.objectives] = {{{32188},{32154},{31721}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13383] = { + [questKeys.preQuestSingle] = {13291}, + }, + [13386] = { + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {13225,12898}, + }, + [13390] = { + [questKeys.startedBy] = {{31237},{193195}}, + }, + [13394] = { + [questKeys.preQuestSingle] = {13393}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Board Refurbished Demolisher"), 0, {{"monster", 32370}}}}, + }, + [13395] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31254,32414,31276},31329}}}, + }, + [13398] = { + [questKeys.preQuestSingle] = {13396}, + }, + [13400] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{31395,32587,32588},32588,"The Prince's Destiny"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Pick it up"), 0, {{"object", 193980},{"object", 194023},{"object", 194024}}}}, + }, + [13403] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Tirion while wearing a Cultist Acolyte's Hood"), 0, {{"monster", 32239}}}}, + }, + [13404] = { + [questKeys.preQuestSingle] = {13380}, + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + }, + [13405] = { + [questKeys.triggerEnd] = {"Victory in Strand of the Ancients", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,11338,14163}, + }, + [13406] = { + [questKeys.preQuestSingle] = {13373}, + [questKeys.objectives] = {{{32179},{32188}},nil,nil,nil,{{{32182,32183},32182}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Rizzy Ratchwiggle"), 1, {{"monster", 31839}}}}, + }, + [13407] = { + [questKeys.triggerEnd] = {"Victory in Strand of the Ancients", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,11342,14164}, + }, + [13408] = { + [questKeys.preQuestSingle] = {10143,10483}, + }, + [13409] = { + [questKeys.preQuestSingle] = {10124}, + }, + [13410] = { + [questKeys.preQuestSingle] = {10143,10483}, + }, + [13411] = { + [questKeys.preQuestSingle] = {10124}, + }, + [13413] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 1, {{"monster", 32548}}}}, + }, + [13414] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 1, {{"monster", 32548}}}}, + }, + [13415] = { + [questKeys.requiredSourceItems] = {41197,40971}, + }, + [13416] = { + [questKeys.requiredSourceItems] = {41197,40971}, + }, + [13418] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to the ship"), 1, {{"monster", 31081}}}}, + }, + [13419] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Take a ride to the ship"), 1, {{"monster", 31085}}}}, + }, + [13420] = { + [questKeys.startedBy] = {nil,{193997},{44725}}, + [questKeys.requiredMinRep] = {1119,3000}, + }, + [13422] = { + [questKeys.preQuestSingle] = {12906}, + [questKeys.objectives] = {{{30146,"Exhausted Vrykul Disciplined"}}}, + [questKeys.exclusiveTo] = {13423,13424,13425}, + }, + [13423] = { + [questKeys.preQuestSingle] = {12971}, + [questKeys.exclusiveTo] = {13422,13424,13425}, + }, + [13424] = { + [questKeys.preQuestSingle] = {12997}, + [questKeys.exclusiveTo] = {13422,13423,13425}, + }, + [13425] = { + [questKeys.preQuestSingle] = {12925}, + [questKeys.exclusiveTo] = {13422,13423,13424}, + }, + [13426] = { + [questKeys.preQuestSingle] = {13285}, + [questKeys.nextQuestInChain] = 13034, + }, + [13427] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,14180}, + }, + [13428] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14181,14182,14183}, + }, + [13429] = { + [questKeys.triggerEnd] = {"Help Akama and Maiev enter the Black Temple.", {[zoneIDs.SHADOWMOON_VALLEY]={{71.05,46.11},{66.29,44.06}}}}, + [questKeys.exclusiveTo] = {10985}, + [questKeys.startedBy] = {{18528}}, + [questKeys.finishedBy] = {{18528}}, + [questKeys.preQuestSingle] = {10949}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Let Xi'ri know you're ready to battle"), 1, {{"monster", 18528}}}}, + }, + [13430] = { + [questKeys.exclusiveTo] = {10888}, + [questKeys.preQuestGroup] = {10884,10885,10886}, + }, + [13431] = { + [questKeys.exclusiveTo] = {10901}, + }, + [13432] = { + [questKeys.exclusiveTo] = {10445}, + }, + [13433] = { + [questKeys.startedBy] = {nil,{400041}}, + [questKeys.finishedBy] = {nil,{400041}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13434] = { + [questKeys.startedBy] = {nil,{400042}}, + [questKeys.finishedBy] = {nil,{400042}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13435] = { + [questKeys.startedBy] = {nil,{400040}}, + [questKeys.finishedBy] = {nil,{400040}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13436] = { + [questKeys.startedBy] = {nil,{400046}}, + [questKeys.finishedBy] = {nil,{400046}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13437] = { + [questKeys.startedBy] = {nil,{400045}}, + [questKeys.finishedBy] = {nil,{400045}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13438] = { + [questKeys.startedBy] = {nil,{400043}}, + [questKeys.finishedBy] = {nil,{400043}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13439] = { + [questKeys.startedBy] = {nil,{400044}}, + [questKeys.finishedBy] = {nil,{400044}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13440] = { + [questKeys.startedBy] = {nil,{194032}}, + [questKeys.finishedBy] = {nil,{194032}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13441] = { + [questKeys.startedBy] = {nil,{194033}}, + [questKeys.finishedBy] = {nil,{194033}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13442] = { + [questKeys.startedBy] = {nil,{194035}}, + [questKeys.finishedBy] = {nil,{194035}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13443] = { + [questKeys.startedBy] = {nil,{194036}}, + [questKeys.finishedBy] = {nil,{194036}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13444] = { + [questKeys.startedBy] = {nil,{194038}}, + [questKeys.finishedBy] = {nil,{194038}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13445] = { + [questKeys.startedBy] = {nil,{194040}}, + [questKeys.finishedBy] = {nil,{194040}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13446] = { + [questKeys.startedBy] = {nil,{194044}}, + [questKeys.finishedBy] = {nil,{194044}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13447] = { + [questKeys.startedBy] = {nil,{194045}}, + [questKeys.finishedBy] = {nil,{194045}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13448] = { + [questKeys.startedBy] = {nil,{400037}}, + [questKeys.finishedBy] = {nil,{400037}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13449] = { + [questKeys.startedBy] = {nil,{194049}}, + [questKeys.finishedBy] = {nil,{194049}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13450] = { + [questKeys.startedBy] = {nil,{194034}}, + [questKeys.finishedBy] = {nil,{194034}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13451] = { + [questKeys.startedBy] = {nil,{194037}}, + [questKeys.finishedBy] = {nil,{194037}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13452] = { + [questKeys.startedBy] = {nil,{400023}}, + [questKeys.finishedBy] = {nil,{400023}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13453] = { + [questKeys.startedBy] = {nil,{194039}}, + [questKeys.finishedBy] = {nil,{194039}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13454] = { + [questKeys.startedBy] = {nil,{194042}}, + [questKeys.finishedBy] = {nil,{194042}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13455] = { + [questKeys.startedBy] = {nil,{194043}}, + [questKeys.finishedBy] = {nil,{194043}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13456] = { + [questKeys.startedBy] = {nil,{400025}}, + [questKeys.finishedBy] = {nil,{400025}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13457] = { + [questKeys.startedBy] = {nil,{194046}}, + [questKeys.finishedBy] = {nil,{194046}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13458] = { + [questKeys.startedBy] = {nil,{194048}}, + [questKeys.finishedBy] = {nil,{194048}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13459] = { + [questKeys.startedBy] = {nil,{400026}}, + [questKeys.finishedBy] = {nil,{400026}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13460] = { + [questKeys.startedBy] = {nil,{400028}}, + [questKeys.finishedBy] = {nil,{400028}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13461] = { + [questKeys.startedBy] = {nil,{400033}}, + [questKeys.finishedBy] = {nil,{400033}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13462] = { + [questKeys.startedBy] = {nil,{400034}}, + [questKeys.finishedBy] = {nil,{400034}}, + [questKeys.requiredRaces] = raceIDs.NONE, + }, + [13464] = { + [questKeys.startedBy] = {nil,{400020}}, + [questKeys.finishedBy] = {nil,{400020}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13465] = { + [questKeys.startedBy] = {nil,{400022}}, + [questKeys.finishedBy] = {nil,{400022}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13466] = { + [questKeys.startedBy] = {nil,{400021}}, + [questKeys.finishedBy] = {nil,{400021}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13467] = { + [questKeys.startedBy] = {nil,{400029}}, + [questKeys.finishedBy] = {nil,{400029}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13468] = { + [questKeys.startedBy] = {nil,{400030}}, + [questKeys.finishedBy] = {nil,{400030}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13469] = { + [questKeys.startedBy] = {nil,{400027}}, + [questKeys.finishedBy] = {nil,{400027}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13470] = { + [questKeys.startedBy] = {nil,{400024}}, + [questKeys.finishedBy] = {nil,{400024}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13471] = { + [questKeys.startedBy] = {nil,{400035}}, + [questKeys.finishedBy] = {nil,{400035}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13473] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13474] = { + [questKeys.startedBy] = {nil,{194081}}, + [questKeys.finishedBy] = {nil,{194081}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13481] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + }, + [13482] = { + [questKeys.triggerEnd] = {"Escort Father Kamaros to safety", {[zoneIDs.ICECROWN]={{32,57.1}}}}, + }, + [13485] = { + [questKeys.startedBy] = {{32801}}, + [questKeys.finishedBy] = {{32801}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13486] = { + [questKeys.startedBy] = {{32802}}, + [questKeys.finishedBy] = {{32802}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13487] = { + [questKeys.startedBy] = {{32803}}, + [questKeys.finishedBy] = {{32803}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13488] = { + [questKeys.startedBy] = {{32804}}, + [questKeys.finishedBy] = {{32804}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13489] = { + [questKeys.startedBy] = {{32805}}, + [questKeys.finishedBy] = {{32805}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13490] = { + [questKeys.startedBy] = {{32806}}, + [questKeys.finishedBy] = {{32806}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13491] = { + [questKeys.startedBy] = {{32807}}, + [questKeys.finishedBy] = {{32807}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13492] = { + [questKeys.startedBy] = {{32808}}, + [questKeys.finishedBy] = {{32808}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13493] = { + [questKeys.startedBy] = {{32809}}, + [questKeys.finishedBy] = {{32809}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13494] = { + [questKeys.startedBy] = {{32810}}, + [questKeys.finishedBy] = {{32810}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13495] = { + [questKeys.startedBy] = {{32811}}, + [questKeys.finishedBy] = {{32811}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13496] = { + [questKeys.startedBy] = {{32812}}, + [questKeys.finishedBy] = {{32812}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13497] = { + [questKeys.startedBy] = {{32813}}, + [questKeys.finishedBy] = {{32813}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13498] = { + [questKeys.startedBy] = {{32814}}, + [questKeys.finishedBy] = {{32814}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13499] = { + [questKeys.startedBy] = {{32815}}, + [questKeys.finishedBy] = {{32815}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13500] = { + [questKeys.startedBy] = {{32816}}, + [questKeys.finishedBy] = {{32816}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13501] = { + [questKeys.startedBy] = {nil,{400031}}, + [questKeys.finishedBy] = {nil,{400031}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13548] = { + [questKeys.startedBy] = {nil,{400036}}, + [questKeys.finishedBy] = {nil,{400036}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13549] = { + [questKeys.objectives] = {{{29327,"Female Frost Leopards recovered"},{29319,"Female Icepaw Bears recovered"},},nil,nil,nil,}, + }, + [13559] = { + [questKeys.preQuestSingle] = {12924}, + }, + [13592] = { -- HUMAN A Valiant's Field Training + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13744,13749,13760,13755}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13593] = { -- HUMAN Valiant Of Stormwind + [questKeys.preQuestSingle] = {13725,13713,13723,13724}, + [questKeys.exclusiveTo] = {13684,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13600] = { -- HUMAN A Worthy Weapon + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13603] = { -- HUMAN A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13600,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13604] = { + [questKeys.startedBy] = {{32867,32927},nil,{45506}}, + }, + [13607] = { + [questKeys.triggerEnd] = {"Entrance to Celestial Planetarium located",{[zoneIDs.THE_ARCHIVUM]={{60,46.3}},[zoneIDs.ULDUAR]={{-1,-1}}}}, + [questKeys.preQuestSingle] = {13604}, + }, + [13616] = { -- HUMAN The Edge Of Winter + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13600,13603,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13625] = { + [questKeys.objectives] = {{{33229,"Use Thrust on Melee Target"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"},{33272,"Use Charge on vulnerable Charge Target"}}}, + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13627] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {}, + }, + [13631] = { + [questKeys.startedBy] = {{32871},nil,{46052}}, + }, + [13633] = { + [questKeys.preQuestSingle] = {13667}, + }, + [13634] = { + [questKeys.preQuestSingle] = {13668}, + }, + [13662] = { + [questKeys.preQuestSingle] = {7722}, + [questKeys.requiredMinRep] = {59,3000}, + [questKeys.requiredMaxRep] = {59,9000}, + }, + [13663] = { + [questKeys.objectives] = {{{33513,"Black Knight's Gryphon taken"}},nil,{{45121},{45122}}}, + }, + [13664] = { + [questKeys.preQuestSingle] = {13700,13701}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33870}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Cavin"), 0, {{"monster", 33522}}}, + }, + }, + [13665] = { -- HUMAN The Grand Melee + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13745,13750,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33800}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13666] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13669,13670}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + }, + [13669] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13666,13670}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + }, + [13670] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679,13666,13669}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + }, + [13671] = { + [questKeys.preQuestGroup] = {13828,13835,13837}, + [questKeys.exclusiveTo] = {13679}, + [questKeys.parentQuest] = 0, + }, + [13672] = { + [questKeys.childQuests] = {}, + }, + [13673] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13674,13675,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + }, + [13674] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13673,13675,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + }, + [13675] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13673,13674,13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + }, + [13676] = { + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13680}, + [questKeys.parentQuest] = 0, + }, + [13677] = { + [questKeys.objectives] = {{{33229,"Use Thrust on Melee Target"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"},{33272,"Use Charge on vulnerable Charge Target"}}}, + [questKeys.preQuestGroup] = {13829,13838,13839}, + [questKeys.exclusiveTo] = {13680}, + [questKeys.parentQuest] = 0, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13678] = { + [questKeys.childQuests] = {}, + }, + [13679] = { + [questKeys.objectives] = {{{33448,"Argent Valiant defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire David"), 0, {{"monster", 33447}}}, + }, + }, + [13680] = { + [questKeys.objectives] = {{{33448,"Argent Valiant defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire David"), 0, {{"monster", 33447}}}, + }, + }, + [13681] = { + [questKeys.startedBy] = {}, + [questKeys.finishedBy] = {}, + }, + [13682] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13697] = { -- ORC The Valiant's Charge + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13699] = { -- HUMAN The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33800}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13703] = { -- DWARF Valiant Of Ironforge + [questKeys.preQuestSingle] = {13699,13725,13724,13723}, + [questKeys.exclusiveTo] = {13685,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13704] = { -- GNOME Valiant Of Gnomeregan + [questKeys.preQuestSingle] = {13699,13725,13713,13724}, + [questKeys.exclusiveTo] = {13688,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13705] = { -- DRAENEI Valiant Of The Exodar + [questKeys.preQuestSingle] = {13699,13725,13713,13723}, + [questKeys.exclusiveTo] = {13690,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13706] = { -- NIGHT ELF Valiant Of Darnassus + [questKeys.preQuestSingle] = {13699,13724,13713,13723}, + [questKeys.exclusiveTo] = {13689,13686}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13707] = { -- ORC Valiant Of Orgrimmar + [questKeys.preQuestSingle] = {13727,13728,13729,13731}, + [questKeys.exclusiveTo] = {13691,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13708] = { -- TROLL Valiant Of Sen'jin + [questKeys.preQuestSingle] = {13726,13728,13729,13731}, + [questKeys.exclusiveTo] = {13693,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13709] = { -- TAUREN Valiant Of Thunder Bluff + [questKeys.preQuestSingle] = {13726,13727,13729,13731}, + [questKeys.exclusiveTo] = {13694,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13710] = { -- UNDEAD Valiant Of Undercity + [questKeys.preQuestSingle] = {13726,13727,13728,13731}, + [questKeys.exclusiveTo] = {13695,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13711] = { -- BLOOD ELF Valiant Of Silvermoon + [questKeys.preQuestSingle] = {13726,13727,13728,13729}, + [questKeys.exclusiveTo] = {13696,13687}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13713] = { -- DWARF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33795}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13714] = { -- DWARF The Valiant's Charge + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13715] = { -- GNOME The Valiant's Charge + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13716] = { -- DRAENEI The Valiant's Charge + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13717] = { -- NIGHT ELF The Valiant's Charge + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13718] = { -- HUMAN The Valiant's Charge + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13719] = { -- TROLL The Valiant's Charge + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13720] = { -- TAUREN The Valiant's Charge + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13721] = { -- UNDEAD The Valiant's Charge + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13722] = { -- BLOOD ELF The Valiant's Charge + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13723] = { -- GNOME The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33793}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13724] = { -- DRAENEI The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33790}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13725] = { -- NIGHT ELF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13726] = { -- ORC The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33799}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13727] = { -- TROLL The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13728] = { -- TAUREN The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33792}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13729] = { -- UNDEAD The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33798}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13731] = { -- BLOOD ELF The Valiant's Challenge + [questKeys.objectives] = {{{33707,"Argent Champion defeated"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33791}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Speak to Squire Danny"), 0, {{"monster", 33518}}}, + }, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13741] = { -- DWARF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13742] = { -- DWARF A Worthy Weapon + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13741,13743,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13743] = { -- DWARF The Edge Of Winter + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13600,13603,13616,13741,13742,13746,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13744] = { -- DWARF A Valiant's Field Training + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13592,13749,13755,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13745] = { -- DWARF The Grand Melee + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13665,13750,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33795}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13746] = { -- GNOME A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13747,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13747] = { -- GNOME A Worthy Weapon + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13746,13748,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13748] = { -- GNOME The Edge Of Winter + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13600,13603,13616,13741,13742,13743,13746,13747,13757,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13749] = { -- GNOME A Valiant's Field Training + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13592,13744,13755,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13750] = { -- GNOME The Grand Melee + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13665,13745,13761,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33793}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13752] = { -- DRAENEI A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13753] = { -- DRAENEI A Worthy Weapon + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13754] = { -- DRAENEI The Edge Of Winter + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13759,13752,13753}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13755] = { -- DRAENEI A Valiant's Field Training + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13592,13744,13749,13760}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13756] = { -- DRAENEI The Grand Melee + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13665,13745,13750,13761}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33790}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13757] = { -- NIGHT ELF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13758,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13758] = { -- NIGHT ELF A Worthy Weapon + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13759,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13759] = { -- NIGHT ELF The Edge Of Winter + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13600,13603,13616,13741,13742,13743,13746,13747,13748,13757,13758,13752,13753,13754}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13760] = { -- NIGHT ELF A Valiant's Field Training + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13592,13744,13749,13755}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13761] = { -- NIGHT ELF The Grand Melee + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13665,13745,13750,13756}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13762] = { -- ORC A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13763] = { -- ORC A Worthy Weapon + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13762,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13764] = { -- ORC The Edge Of Winter + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13762,13763,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13765] = { -- ORC A Valiant's Field Training + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13771,13776,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13767] = { -- ORC The Grand Melee + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13772,13777,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33799}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13768] = { -- TROLL A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13769] = { -- TROLL A Worthy Weapon + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13768,13770,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13770] = { -- TROLL The Edge Of Winter + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13762,13763,13764,13768,13769,13773,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13771] = { -- TROLL A Valiant's Field Training + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13765,13776,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13772] = { -- TROLL The Grand Melee + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13767,13777,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13773] = { -- TAUREN A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13774,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13774] = { -- TAUREN A Worthy Weapon + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13773,13775,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13775] = { -- TAUREN The Edge Of Winter + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13762,13763,13764,13768,13769,13770,13773,13774,13778,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13776] = { -- TAUREN A Valiant's Field Training + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13765,13771,13781,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13777] = { -- TAUREN The Grand Melee + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13767,13772,13782,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33792}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13778] = { -- UNDEAD A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13779,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13779] = { -- UNDEAD A Worthy Weapon + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13780,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13780] = { -- UNDEAD The Edge Of Winter + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13783,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13781] = { -- UNDEAD A Valiant's Field Training + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13765,13771,13776,13786}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13782] = { -- UNDEAD The Grand Melee + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13767,13772,13777,13787}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33798}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13783] = { -- BLOOD ELF A Blade Fit For A Champion + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13784,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Use Warts-B-Gone Lip Balm and /kiss a Lake Frog"), 0, {{"monster", 33224}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13784] = { -- BLOOD ELF A Worthy Weapon + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13785}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Place the flower offering"), 0, {{"monster", 33273}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13785] = { -- BLOOD ELF The Edge Of Winter + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13762,13763,13764,13768,13769,13770,13773,13774,13775,13778,13779,13780,13783,13784}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Everburning Ember"), 0, {{"monster", 33303}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13786] = { -- BLOOD ELF A Valiant's Field Training + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13765,13771,13776,13781}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13787] = { -- BLOOD ELF The Grand Melee + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13767,13772,13777,13782}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33791}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13788] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13789] = { + [questKeys.preQuestSingle] = {13700}, + }, + [13790] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794},{"monster", 33800},{"monster", 33793},{"monster", 33795},{"monster", 33790}}}}, + }, + [13791] = { + [questKeys.preQuestSingle] = {13700}, + }, + [13793] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33794},{"monster", 33800},{"monster", 33793},{"monster", 33795},{"monster", 33790}}}}, + }, + [13795] = { + [questKeys.preQuestSingle] = {13702,13732,13733,13734,13735,13736,13737,13738,13739,13740}, + }, + [13809] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13810] = { + [questKeys.preQuestSingle] = {13701}, + }, + [13811] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796},{"monster", 33798},{"monster", 33799},{"monster", 33791},{"monster", 33792}}}}, + }, + [13812] = { + [questKeys.preQuestSingle] = {13664}, + }, + [13813] = { + [questKeys.preQuestSingle] = {13701}, + }, + [13814] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33796},{"monster", 33798},{"monster", 33799},{"monster", 33791},{"monster", 33792}}}}, + }, + [13816] = { + [questKeys.triggerEnd] = {"Entrance to Celestial Planetarium located",{[zoneIDs.THE_ARCHIVUM]={{60,46.3}},[zoneIDs.ULDUAR]={{-1,-1}}}}, + [questKeys.preQuestSingle] = {13817}, + }, + [13817] = { + [questKeys.preQuestSingle] = {}, + [questKeys.startedBy] = {{32867,32927},nil,{45857}}, + }, + [13819] = { + [questKeys.startedBy] = {{32871},nil,{46053}}, + }, + [13820] = { + [questKeys.startedBy] = {{33817}}, + [questKeys.finishedBy] = {{33434}}, + [questKeys.exclusiveTo] = {13627}, + }, + [13825] = { + [questKeys.startedBy] = {{8125}}, + [questKeys.finishedBy] = {{8125}}, + -- [questKeys.exclusiveTo] = {6610}, -- This is not ideal. You can only do 13825 if you completed 6610 prior to Wotlk. But now with Wotlk you do 6610 and then can not do 13825 + [questKeys.requiredSkill] = {185,225}, + }, + [13826] = { + [questKeys.startedBy] = {{12919}}, + [questKeys.finishedBy] = {{12919}}, + -- [questKeys.exclusiveTo] = {6607}, -- This is not ideal. You can only do 13826 if you completed 6607 prior to Wotlk. But now with Wotlk you do 6607 and then can not do 13826 + [questKeys.requiredSkill] = {356,225}, + }, + [13828] = { + [questKeys.objectives] = {{{33973,"Jeran Lockwood's advice"},{33229,"Use Thrust on Melee Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13829] = { + [questKeys.objectives] = {{{33973,"Jeran Lockwood's advice"},{33229,"Use Thrust on Melee Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13830] = { + [questKeys.triggerEnd] = {"Discover the Ghostfish mystery",{[zoneIDs.SHOLAZAR_BASIN]={{48.89,62.29,},},},}, + }, + [13832] = { + [questKeys.extraObjectives] = {{{[zoneIDs.THE_UNDERBELLY]={{46,68}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Corroded Jewelry")}}, + }, + [13833] = { + [questKeys.extraObjectives] = {{{[zoneIDs.BOREAN_TUNDRA]={{57.5,33.2},{62.2,64.2},{45,45}}}, Questie.ICON_TYPE_SLAY, l10n("Slay any beast, jump in any water location and fish in the Pool of Blood"), 0}}, + }, + [13834] = { + [questKeys.extraObjectives] = {{{[zoneIDs.WINTERGRASP]={{70,36},{63,60},{50,44},{37.6,36},{56,66},{42,75},{34.7,19.5}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Terror Fish"), 0}}, + }, + [13835] = { + [questKeys.objectives] = {{{33974,"Valis Windchaser's advice"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13836] = { + [questKeys.extraObjectives] = {{{[zoneIDs.DALARAN]={{64,64}}}, Questie.ICON_TYPE_EVENT, l10n("Fish for Severed Arm")}}, + }, + [13837] = { + [questKeys.objectives] = {{{33972,"Rugan Steelbelly's advice"},{33272,"Charge vulnerable Charge Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33843}}}}, + }, + [13838] = { + [questKeys.objectives] = {{{33974,"Valis Windchaser's advice"},{33243,"Use Shield-Breaker on vulnerable Ranged Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13839] = { + [questKeys.objectives] = {{{33972,"Rugan Steelbelly's advice"},{33272,"Charge vulnerable Charge Target"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 33842}}}}, + }, + [13843] = { + [questKeys.startedBy] = {nil,{191761}}, + [questKeys.finishedBy] = {nil,{191761}}, + [questKeys.preQuestSingle] = {12889}, + [questKeys.requiredSpell] = -55252, + [questKeys.requiredSkill] = {profKeys.ENGINEERING,400}, + }, + [13846] = { + [questKeys.preQuestSingle] = {13700,13701}, + [questKeys.requiredMaxRep] = {1106,42000}, + }, + [13847] = { -- HUMAN At The Enemy's Gates + [questKeys.preQuestSingle] = {13684,13593}, + [questKeys.exclusiveTo] = {13699,13851,13852,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13850] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Melee attack Venomhide Ravasaur"), 0, {{"monster", 6508}}}}, + }, + [13851] = { -- DWARF At The Enemy's Gates + [questKeys.preQuestSingle] = {13685,13703}, + [questKeys.exclusiveTo] = {13713,13847,13852,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13852] = { -- GNOME At The Enemy's Gates + [questKeys.preQuestSingle] = {13688,13704}, + [questKeys.exclusiveTo] = {13723,13847,13851,13854,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13854] = { -- DRAENEI At The Enemy's Gates + [questKeys.preQuestSingle] = {13690,13705}, + [questKeys.exclusiveTo] = {13724,13847,13851,13852,13855}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13855] = { -- NIGHT ELF At The Enemy's Gates + [questKeys.preQuestSingle] = {13689,13706}, + [questKeys.exclusiveTo] = {13725,13847,13851,13852,13854}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [13856] = { -- ORC At The Enemy's Gates + [questKeys.preQuestSingle] = {13691,13707}, + [questKeys.exclusiveTo] = {13726,13857,13858,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13857] = { -- TROLL At The Enemy's Gates + [questKeys.preQuestSingle] = {13693,13708}, + [questKeys.exclusiveTo] = {13727,13856,13858,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13858] = { -- TAUREN At The Enemy's Gates + [questKeys.preQuestSingle] = {13694,13709}, + [questKeys.exclusiveTo] = {13728,13856,13857,13859,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13859] = { -- BLOOD ELF At The Enemy's Gates + [questKeys.preQuestSingle] = {13696,13711}, + [questKeys.exclusiveTo] = {13731,13856,13857,13858,13860}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13860] = { -- UNDEAD At The Enemy's Gates + [questKeys.preQuestSingle] = {13695,13710}, + [questKeys.exclusiveTo] = {13729,13856,13857,13858,13859}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [13861] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13862] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13863] = { + [questKeys.preQuestSingle] = {13701}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13864] = { + [questKeys.preQuestSingle] = {13700}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 34125}}}}, + }, + [13887] = { + [questKeys.preQuestSingle] = {13850}, + }, + [13906] = { + [questKeys.preQuestSingle] = {13887}, + }, + [13929] = { + [questKeys.triggerEnd] = {"Roo taken to visit Grizzlemaw", {[zoneIDs.GRIZZLY_HILLS]={{50.7,43.9}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13930] = { + [questKeys.triggerEnd] = {"Keken taken to visit Grizzlemaw", {[zoneIDs.GRIZZLY_HILLS]={{50.7,43.9}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13931] = { + [questKeys.preQuestSingle] = {11409}, + }, + [13932] = { + [questKeys.preQuestSingle] = {11318}, + }, + [13933] = { + [questKeys.triggerEnd] = {"Roo taken to visit Bronze Dragonshrine", {[zoneIDs.DRAGONBLIGHT]={{72,39}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13934] = { + [questKeys.triggerEnd] = {"Keken taken to visit Bronze Dragonshrine", {[zoneIDs.DRAGONBLIGHT]={{72,39}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13937] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Buy a Small Paper Zeppelin"), 0, {{"monster", 29478}}}}, + [questKeys.objectives] = {{{33533,"Throw Small Paper Zeppelin to Roo"},},nil,nil,nil,}, + [questKeys.preQuestGroup] = {13954,13956}, + [questKeys.nextQuestInChain] = 13959, + [questKeys.exclusiveTo] = {13927}, + }, + [13938] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Buy a Small Paper Zeppelin"), 0, {{"monster", 29478}}}}, + [questKeys.objectives] = {{{33532,"Throw Small Paper Zeppelin to Kekek"},},nil,nil,nil,}, + [questKeys.preQuestGroup] = {13955,13957}, + [questKeys.nextQuestInChain] = 13960, + [questKeys.exclusiveTo] = {13926}, + }, + [13950] = { + [questKeys.triggerEnd] = {"Roo taken to visit Winterfin Retreat", {[zoneIDs.BOREAN_TUNDRA]={{43.5,13.6}}}}, -- oracle orphan + [questKeys.preQuestSingle] = {13926}, + [questKeys.exclusiveTo] = {13927}, + }, + [13951] = { + [questKeys.triggerEnd] = {"Keken taken to visit Snowfall Glade", {[zoneIDs.DRAGONBLIGHT]={{46,61},{44,70}}}}, -- wolvar orphan + [questKeys.preQuestSingle] = {13927}, + [questKeys.exclusiveTo] = {13926}, + }, + [13954] = { + [questKeys.triggerEnd] = {"Roo taken to visit Alexstrasza the Life-Binder", {[zoneIDs.DRAGONBLIGHT]={{59.8,54.5}}}}, -- oracle orphan + [questKeys.preQuestGroup] = {13929,13933,13950}, + [questKeys.exclusiveTo] = {13927}, + }, + [13955] = { + [questKeys.triggerEnd] = {"Keken taken to visit Alexstrasza the Life-Binder", {[zoneIDs.DRAGONBLIGHT]={{59.8,54.5}}}}, -- wolvar orphan + [questKeys.preQuestGroup] = {13930,13934,13951}, + [questKeys.exclusiveTo] = {13926}, + }, + [13956] = { + [questKeys.triggerEnd] = {"Roo taken to visit The Etymidian", {[zoneIDs.UN_GORO_CRATER]={{47.38,9.21}}}}, -- oracle orphan + [questKeys.extraObjectives] = {{{[zoneIDs.SHOLAZAR_BASIN]={{40.3,83.3}}}, Questie.ICON_TYPE_EVENT, l10n("Use the waygate to teleport to Un'goro Crater")}}, + [questKeys.preQuestGroup] = {13929,13933,13950}, + [questKeys.exclusiveTo] = {13927}, + }, + [13957] = { + [questKeys.triggerEnd] = {"Keken taken to visit Hemet Nesingwary", {[zoneIDs.SHOLAZAR_BASIN]={{27.1,58.8}}}}, -- wolvar orphan + [questKeys.preQuestGroup] = {13930,13934,13951}, + [questKeys.exclusiveTo] = {13926}, + }, + [13959] = { + [questKeys.preQuestSingle] = {13937}, + [questKeys.exclusiveTo] = {13927}, + }, + [13960] = { + [questKeys.preQuestSingle] = {13938}, + [questKeys.exclusiveTo] = {13926}, + }, + [13966] = { + [questKeys.exclusiveTo] = {11528,13203}, + }, + [14016] = { + [questKeys.specialFlags] = nil, + [questKeys.questFlags] = 128, + [questKeys.objectives] = {nil,nil,nil,nil,{{{35127},35127,"Investigate the Black Knight's Grave"}}}, + }, + [14023] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14024, + }, + [14024] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14028, + [questKeys.preQuestSingle] = {14023}, + }, + [14028] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14030, + [questKeys.preQuestSingle] = {14024}, + }, + [14030] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14033, + [questKeys.preQuestSingle] = {14028}, + }, + [14033] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14035, + [questKeys.preQuestSingle] = {14030}, + }, + [14035] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.preQuestSingle] = {14033}, + }, + [14037] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14040, + }, + [14040] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14041, + [questKeys.preQuestSingle] = {14037}, + }, + [14041] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14043, + [questKeys.preQuestSingle] = {14040}, + }, + [14043] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14044, + [questKeys.preQuestSingle] = {14041}, + }, + [14044] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.nextQuestInChain] = 14047, + [questKeys.preQuestSingle] = {14043}, + }, + [14047] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + [questKeys.preQuestSingle] = {14044}, + }, + [14048] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14051] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14053] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14054] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14055] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14058] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14059] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14060] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14061] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14062] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14064] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14065] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.zoneOrSort] = sortKeys.PILGRIMS_BOUNTY, + }, + [14076] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use your drum near a Mysterious Snow Mound"), 0, {{"object", 195309}}}}, + }, + [14079] = { + [questKeys.requiredRaces] = raceIDs.HUMAN, + }, + [14081] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + }, + [14082] = { + [questKeys.requiredRaces] = raceIDs.DRAENEI, + }, + [14083] = { + [questKeys.requiredRaces] = raceIDs.DWARF, + }, + [14084] = { + [questKeys.requiredRaces] = raceIDs.GNOME, + }, + [14085] = { + [questKeys.requiredRaces] = raceIDs.NIGHT_ELF, + }, + [14086] = { + [questKeys.requiredRaces] = raceIDs.ORC, + }, + [14087] = { + [questKeys.requiredRaces] = raceIDs.TAUREN, + }, + [14088] = { + [questKeys.requiredRaces] = raceIDs.TROLL, + }, + [14089] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14090] = { + [questKeys.objectives] = {{{29618,"Snowblind Follower captured"}}}, + }, + [14092] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use your drum near a Mysterious Snow Mound"), 0, {{"object", 195309}}}}, + }, + [14101] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{50.4,15.6}}}, Questie.ICON_TYPE_EVENT, l10n("Summon Drottinn Hrothgar using the Kvaldir War Horn")}}, + }, + [14102] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{43.8,24.6}}}, Questie.ICON_TYPE_EVENT, l10n("Summon Mistcaller Yngvar using the Mistcaller's Charm")}}, + }, + [14103] = { + [questKeys.specialFlags] = 1, + [questKeys.startedBy] = {{28701}}, + [questKeys.finishedBy] = {{28701}}, + }, + [14104] = { + [questKeys.extraObjectives] = {{{[zoneIDs.HROTHGARS_LANDING]={{58.59,31.72}}}, Questie.ICON_TYPE_EVENT, l10n("Provoke Ornolf the Scarred using the Captured Kvaldir Banner")}}, + }, + [14107] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{32149},32149,"Fallen Hero's Spirit blessed"}}}, + }, + [14108] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Mount up"), 0, {{"monster", 35117}}}}, + [questKeys.objectives] = {{{34925,"Hurl Spears at North Sea Kraken"},{35092}}}, + }, + [14112] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Take chum"), 0, {{"object", 195352}}}}, + }, + [14141] = { + [questKeys.objectives] = {{{29618,"Snowblind Follower captured"}}}, + }, + [14145] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_LOOT, l10n("Take chum"), 0, {{"object", 195353}}}}, + }, + [14151] = { + [questKeys.objectives] = {}, + [questKeys.requiredSpell] = -66659, + [questKeys.requiredSkill] = {171,450}, + [questKeys.triggerEnd] = {"Epic Gem Transmutes", {[zoneIDs.DALARAN]={{42.25,32.06}}}}, + }, + [14163] = { + [questKeys.triggerEnd] = {"Victory in the Isle of Conquest", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.exclusiveTo] = {11335,11336,11337,11338,13405}, + }, + [14164] = { + [questKeys.triggerEnd] = {"Victory in the Isle of Conquest", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.exclusiveTo] = {11339,11340,11341,11342,13407}, + }, + [14178] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14179,14180,13427}, + }, + [14179] = { + [questKeys.triggerEnd] = {"Victory in the Eye of the Storm", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,13427}, + }, + [14180] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {14178,14179,13427}, + }, + [14181] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14182,14183}, + }, + [14182] = { + [questKeys.triggerEnd] = {"Victory in Eye of the Storm", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14181,14183}, + }, + [14183] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 70, + [questKeys.exclusiveTo] = {13428,14181,14182}, + }, + [14199] = { + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.exclusiveTo] = {13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256}, + }, + [14352] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [14349] = { + [questKeys.preQuestGroup] = {6022,6042,6133,6135,6136}, + }, + [14418] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14419] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14420] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14421] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD, + }, + [14444] = { + [questKeys.objectives] = {{{27990,"Ask Krasus about the hilt's origins"}}}, + }, + [14483] = { + [questKeys.startedBy] = {{36296},nil,{49641}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [20438] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ask Shandy Glossgleam to lend you a tabard"), 0, {{"monster", 36856}}}}, + }, + [24216] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24221}, + }, + [24217] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 20, + }, + [24218] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24220}, + }, + [24219] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 20, + }, + [24220] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24218}, + }, + [24221] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 50, + [questKeys.exclusiveTo] = {24216}, + }, + [24223] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{45.6,45.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24224,24427}, + }, + [24224] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ASHENVALE]={{61.8,83.8}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24223,24427}, + }, + [24225] = { + [questKeys.triggerEnd] = {"Victory in Warsong Gulch", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.THE_BARRENS]={{47,9.3}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24226,24426}, + }, + [24226] = { + [questKeys.triggerEnd] = {"Victory in Arathi Basin", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ARATHI_HIGHLANDS]={{73.3,30}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24225,24426}, + }, + [24426] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.ORGRIMMAR]={{80.68,30.51},{36.94,65.36}}, + [zoneIDs.THUNDER_BLUFF]={{57.8,76.4}}, + [zoneIDs.UNDERCITY]={{58.27,97.9}}, + [zoneIDs.SILVERMOON_CITY]={{97,38.3}}, + [zoneIDs.SHATTRATH_CITY]={{66.96,56.6}}, + [zoneIDs.DALARAN]={{58.19,20.59}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{63.3,60.2}}, + }}, + [questKeys.startedBy] = {{15350}}, + [questKeys.finishedBy] = {{15350}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24225,24226}, + }, + [24427] = { + [questKeys.triggerEnd] = {"Victory in Alterac Valley", { + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + [zoneIDs.ALTERAC_MOUNTAINS]={{39.4,82.2}}, + }}, + [questKeys.startedBy] = {{15351}}, + [questKeys.finishedBy] = {{15351}}, + [questKeys.requiredMaxLevel] = 60, + [questKeys.exclusiveTo] = {24223,24224}, + }, + [24428] = { + [questKeys.startedBy] = {{10184},nil,{49644}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24429] = { + [questKeys.startedBy] = {{10184},nil,{49643}}, + }, + [24431] = { + [questKeys.specialFlags] = 1, + }, + [24461] = { + [questKeys.sourceItemId] = 49723, + }, + [24498] = { + [questKeys.objectives] = {{{36494}},nil,nil,nil,{{{36764,36765,36766,36767},36764,"Alliance Slaves freed"}}}, + [questKeys.preQuestSingle] = {24683}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free the slave"), 1, {{"object", 202168}}}}, + }, + [24499] = { + [questKeys.objectives] = {{{36497},{36502}}}, + }, + [24500] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.finishedBy] = {{36955}}, + [questKeys.objectives] = {{{36955,"Find Jaina Proudmoore"},{36954,"Escape the Lich King"}}}, + }, + [24507] = { + [questKeys.objectives] = {{{36494}},nil,nil,nil,{{{36770,36771,36772,36773},36770,"Horde Slaves freed"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Free the slave"), 1, {{"object", 202168}}}}, + }, + [24510] = { + [questKeys.reputationReward] = {{1050,25}}, + }, + [24511] = { + [questKeys.objectives] = {{{36497},{36502}}}, + }, + [24535] = { + [questKeys.objectives] = {{{37205,"Thalorien's Blessing obtained"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Examine the remains"), 0, {{"monster", 37552}}}}, + }, + [24536] = { + [questKeys.objectives] = {{{3296}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Snagglebolt's Air Analyzer on perfumed guards"), 0, {{"monster", 3296}}}}, + }, + [24541] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab the package"), 0, {{"monster", 37671}}}}, + [questKeys.sourceItemId] = 49867, + }, + [24545] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.DEATH_KNIGHT, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {nil,{201742}}, + [questKeys.nextQuestInChain] = 24743, + [questKeys.requiredMinRep] = {1156,3000}, + }, + [24547] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24743}, + }, + [24548] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24757}, + [questKeys.nextQuestInChain] = 24912, + }, + [24549] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24912}, + [questKeys.nextQuestInChain] = 24748, + }, + [24553] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.requiredSourceItems] = {49879}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24555] = { + [questKeys.objectives] = {{{27990,"Ask Krasus about the hilt's origins"}}}, + }, + [24556] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Ask Shandy Glossgleam to lend you a tabard"), 0, {{"monster", 36856}}}}, + }, + [24559] = { + [questKeys.sourceItemId] = 49723, + }, + [24563] = { + [questKeys.objectives] = {{{37205,"Thalorien's Blessing obtained"}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Examine the remains"), 0, {{"monster", 37552}}}}, + }, + [24564] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24579] = { + [questKeys.exclusiveTo] = {24580,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24580] = { + [questKeys.exclusiveTo] = {24579,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24581] = { + [questKeys.exclusiveTo] = {24579,24580,24582,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24582] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24583,24584,24585,24586,24587,24588,24589,24590}, + }, + [24583] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24584,24585,24586,24587,24588,24589,24590}, + }, + [24584] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24585,24586,24587,24588,24589,24590}, + }, + [24585] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24586,24587,24588,24589,24590}, + }, + [24586] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24587,24588,24589,24590}, + }, + [24587] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24588,24589,24590}, + }, + [24588] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24589,24590}, + }, + [24589] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24590}, + }, + [24590] = { + [questKeys.exclusiveTo] = {24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24589}, + }, + [24594] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24595] = { + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.requiredSourceItems] = {49879}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24596] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24597] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24598] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_TALK, l10n("Ask the warden to take you to the Sunwell"), 0, {{"monster", 37523}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("After restoring Quel'Delar, go back to Dalaran"), 0, {{"object", 194481}}}, + }, + }, + [24609] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24610] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24611] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24612] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24613] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24614] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24615] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + -- Hackfix to hide the other two as a available once one of the random three dailies has been accepted + [24629] = { + [questKeys.exclusiveTo] = {24635, 24636}, + }, + [24635] = { + [questKeys.exclusiveTo] = {24629, 24636}, + }, + [24636] = { + [questKeys.exclusiveTo] = {24629, 24635}, + }, + [24638] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24645, 24647, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400048,"Chemical Wagon Destroyed"}},nil,nil,{{{37214},37214}}}, + [questKeys.requiredMaxLevel] = 13, + }, + [24645] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24647, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400049,"Chemical Wagon Destroyed"}},nil,nil,{{{37917},37917}}}, + [questKeys.requiredMaxLevel] = 22, + }, + [24647] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24648, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400052,"Chemical Wagon Destroyed"}},nil,nil,{{{37984},37984}}}, + [questKeys.requiredMaxLevel] = 31, + }, + [24648] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24649, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400053,"Chemical Wagon Destroyed"}},nil,nil,{{{38006},38006}}}, + [questKeys.requiredMaxLevel] = 40, + }, + [24649] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24650, 24651, 24652}, + [questKeys.objectives] = {nil,{{400054,"Chemical Wagon Destroyed"}},nil,nil,{{{38016},38016}}}, + [questKeys.requiredMaxLevel] = 50, + }, + [24650] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24651, 24652}, + [questKeys.objectives] = {nil,{{400055,"Chemical Wagon Destroyed"}},nil,nil,{{{38023},38023}}}, + [questKeys.requiredMaxLevel] = 60, + }, + [24651] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24650, 24652}, + [questKeys.objectives] = {nil,{{400056,"Chemical Wagon Destroyed"}},nil,nil,{{{38030},38030}}}, + [questKeys.requiredMaxLevel] = 70, + }, + [24652] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + [questKeys.startedBy] = {{37172}}, + [questKeys.finishedBy] = {{37172}}, + [questKeys.exclusiveTo] = {24638, 24645, 24647, 24648, 24649, 24650, 24651}, + [questKeys.objectives] = {nil,{{400057,"Chemical Wagon Destroyed"}},nil,nil,{{{38032},38032}}}, + }, + [24655] = { + [questKeys.objectives] = {nil,nil,nil,nil,{{{68,1976},1976}}}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Use Snagglebolt's Air Analyzer on perfumed guards"), 0, {{"monster", 68},{"monster", 1976}}}}, + }, + [24656] = { + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Grab the package"), 0, {{"monster", 38065}}}}, + [questKeys.sourceItemId] = 49867, + }, + [24658] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24659, 24660, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400050,"Chemical Wagon Destroyed"}},nil,nil,{{{37214},37214}}}, + [questKeys.requiredMaxLevel] = 13, + }, + [24659] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24660, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400051,"Chemical Wagon Destroyed"}},nil,nil,{{{37917},37917}}}, + [questKeys.requiredMaxLevel] = 22, + }, + [24660] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24662, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400052,"Chemical Wagon Destroyed"}},nil,nil,{{{37984},37984}}}, + [questKeys.requiredMaxLevel] = 31, + }, + [24662] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24663, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400053,"Chemical Wagon Destroyed"}},nil,nil,{{{38006},38006}}}, + [questKeys.requiredMaxLevel] = 40, + }, + [24663] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24664, 24665, 24666}, + [questKeys.objectives] = {nil,{{400054,"Chemical Wagon Destroyed"}},nil,nil,{{{38016},38016}}}, + [questKeys.requiredMaxLevel] = 50, + }, + [24664] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24665, 24666}, + [questKeys.objectives] = {nil,{{400055,"Chemical Wagon Destroyed"}},nil,nil,{{{38023},38023}}}, + [questKeys.requiredMaxLevel] = 60, + }, + [24665] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24664, 24666}, + [questKeys.objectives] = {nil,{{400056,"Chemical Wagon Destroyed"}},nil,nil,{{{38030},38030}}}, + [questKeys.requiredMaxLevel] = 70, + }, + [24666] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + [questKeys.startedBy] = {{38066}}, + [questKeys.finishedBy] = {{38066}}, + [questKeys.exclusiveTo] = {24658, 24659, 24660, 24662, 24663, 24664, 24665}, + [questKeys.objectives] = {nil,{{400057,"Chemical Wagon Destroyed"}},nil,nil,{{{38032},38032}}}, + }, + [24683] = { + [questKeys.preQuestSingle] = {24499}, + }, + [24710] = { + [questKeys.preQuestSingle] = {24498}, + }, + [24711] = { + [questKeys.preQuestSingle] = {24710}, + }, + [24743] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24545}, + [questKeys.nextQuestInChain] = 24547, + }, + [24745] = { + [questKeys.startedBy] = {{36296},nil,{50320}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + }, + [24748] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24549}, + [questKeys.objectives] = {{{36597,"Lich King Defeated"}}}, + }, + [24749] = { + [questKeys.preQuestSingle] = {24547}, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{36678,"Infuse Shadow's Edge with Unholy power then slay Putricide."}}}, + }, + [24756] = { + [questKeys.preQuestSingle] = {24749}, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{37955,"Infuse Shadow's Edge with Blood then defeat Lana'thel."}}}, + }, + [24757] = { + [questKeys.preQuestSingle] = {24756}, + [questKeys.nextQuestInChain] = 24548, + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.objectives] = {{{36853,"Infuse Shadow's Edge with Frost then slay Sindragosa."}}}, + }, + [24792] = { + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.preQuestSingle] = {24657}, + }, + [24793] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.preQuestSingle] = {24576}, + }, + [24795] = { + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24796] = { + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24798] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24799] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID + classIDs.PRIEST + classIDs.SHAMAN, + }, + [24800] = { + [questKeys.requiredRaces] = raceIDs.BLOOD_ELF, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24801] = { + [questKeys.requiredRaces] = raceIDs.UNDEAD + raceIDs.ORC + raceIDs.TROLL + raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.WARRIOR + classIDs.PALADIN + classIDs.ROGUE + classIDs.HUNTER + classIDs.DEATH_KNIGHT + classIDs.MAGE + classIDs.WARLOCK, + }, + [24802] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.finishedBy] = {{37554}}, + [questKeys.objectives] = {{{37554,"Find Sylvanas Windrunner"},{36954,"Escape the Lich King"}}}, + }, + [24803] = { + [questKeys.specialFlags] = 1, + }, + [24815] = { + [questKeys.requiredMinRep] = {1156,3000}, + }, + [24819] = { -- A Change of Heart - Destruction friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24811}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24820] = { -- A Change of Heart - Vengeance friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24810}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24821] = { -- A Change of Heart - Courage friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24808}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24822] = { -- A Change of Heart - Wisdom friendly - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24809}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [24823] = { -- Path of Destruction - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24828,24811}, + }, + [24825] = { -- Path of Wisdom - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24809}, + }, + [24826] = { -- Path of Vengeance - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24810}, + }, + [24827] = { -- Path of Courage - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24808}, + }, + [24828] = { -- Path of Destruction - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,24811}, + }, + [24829] = { -- Path of Destruction - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24823,24811}, + }, + [24830] = { -- Path of Wisdom - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24825,24809}, + }, + [24831] = { -- Path of Wisdom - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24830,24809}, + }, + [24832] = { -- Path of Vengeance - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24826,24810}, + }, + [24833] = { -- Path of Vengeance - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24832,24810}, + }, + [24834] = { -- Path of Courage - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24827,24808}, + }, + [24835] = { -- Path of Courage - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24834,24808}, + }, + [24836] = { -- A Change of Heart - Destruction honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24828,24811}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24837] = { -- A Change of Heart - wisdom honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24825,24809}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24838] = { -- A Change of Heart - vengeance honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24826,24810}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24839] = { -- A Change of Heart - courage honored - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24827,24808}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [24840] = { -- A Change of Heart - Destruction revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24823,24811}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24841] = { -- A Change of Heart - Wisdom revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24830,24809}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24842] = { -- A Change of Heart - Vengeance revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24832,24810}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24843] = { -- A Change of Heart - Courage revered - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24834,24808}, + [questKeys.exclusiveTo] = {24829,24831,24833,24835,25242}, + }, + [24844] = { -- A Change of Heart - Destruction exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24829,24811}, + }, + [24845] = { -- A Change of Heart - Wisdom exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24831,24809}, + }, + [24846] = { -- A Change of Heart - Vengeance exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24833,24810}, + }, + [24847] = { -- A Change of Heart - Courage exalted - ormus + [questKeys.startedBy] = {{38316}}, + [questKeys.finishedBy] = {{38316}}, + [questKeys.preQuestGroup] = {24835,24808}, + }, + [24857] = { + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + }, + [24869] = { -- 10man + [questKeys.startedBy] = {{38471}}, + [questKeys.finishedBy] = {{38471}}, + [questKeys.exclusiveTo] = {24870,24871,24872,24873,24874}, + }, + [24870] = { -- 10man + [questKeys.startedBy] = {{38491}}, + [questKeys.finishedBy] = {{38491}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.exclusiveTo] = {24869,24872,24873,24874}, + }, + [24871] = { -- 10man + [questKeys.startedBy] = {{38492}}, + [questKeys.finishedBy] = {{38492}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.exclusiveTo] = {24869,24872,24873,24874}, + }, + [24872] = { -- 10man + [questKeys.startedBy] = {{38589}}, + [questKeys.finishedBy] = {{38017}}, + [questKeys.exclusiveTo] = {24869,24870,24871,24873,24874}, + }, + [24873] = { -- 10man + [questKeys.startedBy] = {{38501}}, + [questKeys.finishedBy] = {{38501}}, + [questKeys.objectives] = {{{38501,"Return with two strains of Blight"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Slime Spray to get the Green Blight strain"), 0, {{"monster", 36627}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Gaseous Blight to get the Orange Blight strain"), 0, {{"monster", 36626}}}, + }, + [questKeys.exclusiveTo] = {24869,24870,24871,24872,24874}, + }, + [24874] = { -- 10man + [questKeys.startedBy] = {{38551}}, + [questKeys.finishedBy] = {{38558}}, + [questKeys.exclusiveTo] = {24869,24870,24871,24872,24873}, + }, + [24875] = { -- 25man + [questKeys.startedBy] = {{38471}}, + [questKeys.finishedBy] = {{38471}}, + [questKeys.exclusiveTo] = {24876,24877,24878,24879,24880}, + }, + [24876] = { -- 25man + [questKeys.startedBy] = {{38492}}, + [questKeys.finishedBy] = {{38492}}, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.exclusiveTo] = {24875,24878,24879,24880}, + }, + [24877] = { -- 25man + [questKeys.startedBy] = {{38491}}, + [questKeys.finishedBy] = {{38491}}, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.exclusiveTo] = {24875,24878,24879,24880}, + }, + [24878] = { -- 25man + [questKeys.startedBy] = {{38501}}, + [questKeys.finishedBy] = {{38501}}, + [questKeys.objectives] = {{{38501,"Return with two strains of Blight"}}}, + [questKeys.extraObjectives] = { + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Slime Spray to get the Green Blight strain"), 0, {{"monster", 36627}}}, + {nil, Questie.ICON_TYPE_EVENT, l10n("Get hit by Gaseous Blight to get the Orange Blight strain"), 0, {{"monster", 36626}}}, + }, + [questKeys.exclusiveTo] = {24875,24876,24877,24879,24880}, + }, + [24879] = { -- 25man + [questKeys.startedBy] = {{38551}}, + [questKeys.finishedBy] = {{38558}}, + [questKeys.exclusiveTo] = {24875,24876,24877,24878,24880}, + }, + [24880] = { -- 25man + [questKeys.startedBy] = {{38589}}, + [questKeys.finishedBy] = {{38017}}, + [questKeys.exclusiveTo] = {24875,24876,24877,24878,24879}, + }, + [24912] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24548}, + [questKeys.nextQuestInChain] = 24549, + }, + [24914] = { + [questKeys.startedBy] = {{36597},nil,{53135}}, + [questKeys.preQuestSingle] = {24549}, + }, + [24915] = { + [questKeys.startedBy] = {{37120}}, + [questKeys.finishedBy] = {{37120}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24916] = { + [questKeys.startedBy] = {{38606}}, + [questKeys.finishedBy] = {{38606}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24917] = { + [questKeys.startedBy] = {{38607}}, + [questKeys.finishedBy] = {{38607}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24918] = { + [questKeys.startedBy] = {{38609}}, + [questKeys.finishedBy] = {{38609}}, + [questKeys.preQuestSingle] = {24914}, + }, + [24919] = { + [questKeys.startedBy] = {{38608}}, + [questKeys.finishedBy] = {{38608}}, + [questKeys.preQuestSingle] = {24914}, + }, + [25199] = { + [questKeys.preQuestSingle] = {25229}, + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.objectives] = {{{39368,"Salute the Drill Sergeant"},{39368,"Roar with the Drill Sergeant"},{39368,"Cheer with the Drill Sergeant"},{39368,"Dance with the Drill Sergeant"}}}, + }, + [25212] = { + [questKeys.startedBy] = {{39386}}, + [questKeys.finishedBy] = {{39386}}, + [questKeys.preQuestSingle] = {25199}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Board the Flying Machine"), 0, {{"monster", 39396}}}}, + }, + [25229] = { + [questKeys.requiredLevel] = 1, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39253,39623},39623,"Gnomes Motivated"},{{39624,39466,39675},39466,"Motivated Gnomes Brought to Captain Sparknozzle"}}}, + }, + [25239] = { -- Path of Might - friendly to honored + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {24815,25238}, + }, + [25240] = { -- Path of Might - honored to revered + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25239,25238}, + }, + [25242] = { -- Path of Might - revered to exalted + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25240,25238}, + }, + [25246] = { -- A Change of Heart - might exalted - aronen + [questKeys.preQuestGroup] = {25242,25238}, + }, + [25247] = { -- A Change of Heart - might friendly - aronen + [questKeys.preQuestGroup] = {24815,25238}, + [questKeys.requiredMinRep] = {1156,3000}, + [questKeys.exclusiveTo] = {24825,24826,24827,24828,25239}, + }, + [25248] = { -- A Change of Heart - might honored - aronen + [questKeys.preQuestGroup] = {25238,25239}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [25249] = { -- A Change of Heart - might revered - aronen + [questKeys.preQuestGroup] = {25240,25238}, + [questKeys.exclusiveTo] = {24823,24830,24832,24834,25240}, + }, + [25283] = { + [questKeys.startedBy] = {{39678}}, + [questKeys.finishedBy] = {{39678}}, + [questKeys.preQuestSingle] = {}, + [questKeys.preQuestGroup] = {25212,25295}, + [questKeys.nextQuestInChain] = 25500, + }, + [25285] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25199}, + [questKeys.nextQuestInChain] = 25289, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39715}}}}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39682,39715},39715,"Ejection System Tested"}}}, + }, + [25286] = { + [questKeys.preQuestSingle] = {25283}, + [questKeys.exclusiveTo] = {25500}, + [questKeys.questLevel] = -1, + }, + [25287] = { + [questKeys.questLevel] = -1, + }, + [25289] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25285}, + [questKeys.nextQuestInChain] = 25295, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39716}}}}, + [questKeys.objectives] = {nil,nil,nil,nil,{{{39713,39716},39716,"Left Leg Servos Tested"},{{39713,39716},39716,"Right Leg Servos Tested"},{{39713,39716},39716,"Evasive Maneuver System Tested"}}}, + }, + [25295] = { + [questKeys.startedBy] = {{39675}}, + [questKeys.finishedBy] = {{39675}}, + [questKeys.preQuestSingle] = {25289}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Hop in"), 0, {{"monster", 39717}}}}, + [questKeys.objectives] = {{{39711,"Weapon System Tested"}}}, + }, + [25393] = { + [questKeys.requiredLevel] = 75, + [questKeys.questLevel] = -1, + }, + [25444] = { -- Da Perfect Spies + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Attune a Captured Frog"), 0, {{"monster", 40187}}}}, + }, + [25445] = { -- Zalazane's Fall + [questKeys.objectives] = {{{40502,"Zalazane Killed"}}}, + [questKeys.requiredLevel] = 75, + [questKeys.questLevel] = -1, + }, + [25446] = { -- Frogs Away! + [questKeys.nextQuestInChain] = 25461, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek and deploy the frogs on the white smoke"), 0, {{"monster", 40204}}}}, + }, + [25461] = { -- Trollin' For Volunteers + [questKeys.preQuestSingle] = {25446}, + [questKeys.nextQuestInChain] = 25470, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek for a ride"), 0, {{"monster", 40204}}}}, + }, + [25470] = { -- Lady Of Da Tigers + [questKeys.preQuestSingle] = {25461}, + }, + [25480] = { -- Dance Of De Spirits + [questKeys.nextQuestInChain] = 25495, + [questKeys.objectives] = {{{40352,"Dance of the Spirits"}}}, + }, + [25495] = { -- Preparin' For Battle + [questKeys.preQuestSingle] = {25480}, + [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Talk to Handler Marnlek for a ride"), 0, {{"monster", 40204}}}}, + }, + [25500] = { + [questKeys.preQuestSingle] = {25283}, + [questKeys.requiredMaxLevel] = 74, + [questKeys.exclusiveTo] = {25286}, + [questKeys.nextQuestInChain] = 25287, + }, + [26034] = { + [questKeys.preQuestSingle] = {26013}, + }, + [64845] = { + [questKeys.triggerEnd] = {"Victory in a battleground match", { + [zoneIDs.ALTERAC_MOUNTAINS] = {{39.4,82.2}}, + [zoneIDs.ARATHI_HIGHLANDS] = {{45.6,45.8}}, + [zoneIDs.ASHENVALE] = {{61.8,83.8}}, + [zoneIDs.DALARAN]={{29.79,75.78}}, + [zoneIDs.DARNASSUS]={{58.02,34.52}}, + [zoneIDs.IRONFORGE]={{70.41,91.10}}, + [zoneIDs.SHATTRATH_CITY]={{67.41,33.86}}, + [zoneIDs.STORMWIND_CITY]={{83.47,33.66}}, + [zoneIDs.THE_EXODAR]={{26.6,50.06}}, + [zoneIDs.WINTERGRASP]={{50.02,15.16}}, + }}, + }, + + ----- Boosted character quests ----- + [70395] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Meet with your class trainer in Stormwind."}, + [questKeys.zoneOrSort] = 1519, + }, + [70396] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Meet with your class trainer in Orgrimmar."}, + [questKeys.zoneOrSort] = 1637, + }, + [70397] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400009, "Open the Survival Kit"}, {400010, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70398] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400011, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70401] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [70411] = { + [questKeys.name] = "To the Dockmaster", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{26546,26548},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Use a scroll of teleportation from your inventory to reach the harbor and speak to the dock master."}, + [questKeys.requiredSourceItems] = {199335,199336}, + [questKeys.zoneOrSort] = 150, + }, + [70734] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400001, "Open the Survival Kit"}, {400002, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70735] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400005, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70736] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70737] = { + [questKeys.name] = "To the Zeppelin Master", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{26537,26539},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Use a scroll of teleportation from your inventory to reach the zeppelin tower and speak to the zeppelin master."}, + [questKeys.requiredSourceItems] = {199777,199778}, + [questKeys.zoneOrSort] = 1637, + }, + [70761] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400003, "Open the Survival Kit"}, {400004, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70762] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Meet with your Druid trainer in Thunder Bluff."}, + [questKeys.zoneOrSort] = 1638, + }, + [70764] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400006, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70765] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400008, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [70865] = { + [questKeys.name] = "To Shattrath City", + [questKeys.startedBy] = {{376,914,928,3036,3324,3328,3344,3406,5495,5497,5505,5515,5885,5994,13283,20407,23128},nil,nil}, + [questKeys.finishedBy] = {{19684},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Shattrath City and speak to the mysterious Haggard War Veteran."}, + [questKeys.requiredSourceItems] = {200068}, + [questKeys.zoneOrSort] = 3897, + }, + [70869] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [70870] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 70, + [questKeys.questLevel] = 70, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78136] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Meet with your class trainer in Stormwind."}, + [questKeys.zoneOrSort] = 1519, + }, + [78137] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Meet with your class trainer in Orgrimmar."}, + [questKeys.zoneOrSort] = 1637, + }, + [78138] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Meet with your Druid trainer in Thunder Bluff."}, + [questKeys.zoneOrSort] = 1638, + }, + [78140] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400009, "Open the Survival Kit"}, {400010, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78151] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400001, "Open the Survival Kit"}, {400002, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [78157] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400011, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78158] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{3036},nil,nil}, + [questKeys.finishedBy] = {{3036},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.TAUREN, + [questKeys.requiredClasses] = classIDs.DRUID, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400006, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1638, + }, + [78164] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400012, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1519, + }, + [78166] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{376,914,928,5495,5497,5505,5515,13283,20407},nil,nil}, + [questKeys.finishedBy] = {{26673},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Modera."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78167] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.finishedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400007, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 1637, + }, + [78168] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{3036,3324,3328,3344,3353,3406,5885,5994,23128},nil,nil}, + [questKeys.finishedBy] = {{26471},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Aethas Sunreaver."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78219] = { + [questKeys.name] = "A New Beginning", + [questKeys.startedBy] = {}, -- This quest is auto accept + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Meet with your Death Knight trainer in Acherus: The Ebon Hold."}, + [questKeys.zoneOrSort] = 4281, + }, + [78220] = { + [questKeys.name] = "Tools for Survival", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Open the survival kit and equip a weapon."}, + [questKeys.objectives] = {nil,{{400062, "Open the Survival Kit"}, {400063, "Equip a Weapon"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78221] = { + [questKeys.name] = "Combat Training", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Train a spell by speaking to your class trainer."}, + [questKeys.objectives] = {nil,{{400064, "Train a Spell"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78222] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400061, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78223] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{26673},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_ALLIANCE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Modera."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78224] = { + [questKeys.name] = "Talented", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{28471,28472,28474},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Activate the Talents interface and allocate 5 Talent Points."}, + [questKeys.objectives] = {nil,{{400061, "Spend 5 Talent Points"}},nil,nil,nil}, + [questKeys.zoneOrSort] = 4281, + }, + [78225] = { + [questKeys.name] = "To Northrend", + [questKeys.startedBy] = {{28471,28472,28474},nil,nil}, + [questKeys.finishedBy] = {{26471},nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.ALL_HORDE, + [questKeys.requiredClasses] = classIDs.DEATH_KNIGHT, + [questKeys.objectivesText] = {"Use the scroll of teleportation from your inventory to reach Northrend and speak to the Image of Archmage Aethas Sunreaver."}, + [questKeys.requiredSourceItems] = {210046,210047}, + [questKeys.zoneOrSort] = 65, + }, + [78752] = { + [questKeys.name] = "Proof of Demise: Titan Rune Protocol Gamma", + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"The Lich King's presence mustn't extend any further!","","The Council of Six has decreed that any strong enough fighter should take up arms and aid in keeping Azeroth safe!"}, + [questKeys.objectives] = {nil,nil,{{211206}}}, + [questKeys.zoneOrSort] = 4395, + [questKeys.questFlags] = 4232, + [questKeys.specialFlags] = 1, + [questKeys.reputationReward] = {{factionIDs.KIRIN_TOR,75}}, + }, + [78753] = { + [questKeys.name] = "Proof of Demise: Threats to Azeroth", + [questKeys.startedBy] = {{20735},nil,nil}, + [questKeys.finishedBy] = {{20735},nil,nil}, + [questKeys.requiredLevel] = 80, + [questKeys.questLevel] = 80, + [questKeys.requiredRaces] = raceIDs.NONE, + [questKeys.objectivesText] = {"We must continue putting pressure on all fronts!","","The Council of Six has decreed that any willing fighter should take up arms and aid in keeping Azeroth safe!"}, + [questKeys.objectives] = {nil,nil,{{211207}}}, + [questKeys.zoneOrSort] = 4395, + [questKeys.questFlags] = 4232, + [questKeys.specialFlags] = 1, + [questKeys.reputationReward] = {{factionIDs.KIRIN_TOR,75}}, + }, + } +end + +function _QuestieWotlkQuestFixes:InsertMissingQuestIds() + + -- Alliance boosted quests + QuestieDB.questData[70395] = {} -- A New Beginning + QuestieDB.questData[70397] = {} -- Tools for Survival + QuestieDB.questData[70398] = {} -- Combat Training + QuestieDB.questData[70401] = {} -- Talented + QuestieDB.questData[70411] = {} -- To the Dockmaster + QuestieDB.questData[70870] = {} -- Talented + QuestieDB.questData[78136] = {} -- A New Beginning + QuestieDB.questData[78140] = {} -- Tools for Survival + QuestieDB.questData[78157] = {} -- Combat Training + QuestieDB.questData[78164] = {} -- Talented + QuestieDB.questData[78166] = {} -- To Northrend + QuestieDB.questData[78222] = {} -- Talented DK + QuestieDB.questData[78223] = {} -- To Northrend DK + + -- Horde boosted quests + QuestieDB.questData[70396] = {} -- A New Beginning + QuestieDB.questData[70734] = {} -- Tools for Survival + QuestieDB.questData[70735] = {} -- Combat Training + QuestieDB.questData[70736] = {} -- Talented + QuestieDB.questData[70737] = {} -- To the Zeppelin Master + QuestieDB.questData[70761] = {} -- Tools for Survival + QuestieDB.questData[70762] = {} -- A New Beginning + QuestieDB.questData[70764] = {} -- Combat Training + QuestieDB.questData[70765] = {} -- Talented + QuestieDB.questData[70869] = {} -- Talented + QuestieDB.questData[78137] = {} -- A New Beginning + QuestieDB.questData[78138] = {} -- A New Beginning + QuestieDB.questData[78151] = {} -- Tools for Survival + QuestieDB.questData[78158] = {} -- Combat Training + QuestieDB.questData[78167] = {} -- Talented + QuestieDB.questData[78168] = {} -- To Northrend + QuestieDB.questData[78224] = {} -- Talented DK + QuestieDB.questData[78225] = {} -- To Northrend DK + + -- Neutral boosted quests + QuestieDB.questData[70865] = {} -- To Shattrath City + QuestieDB.questData[78219] = {} -- A New Beginning + QuestieDB.questData[78220] = {} -- Tools for Survival + QuestieDB.questData[78221] = {} -- Combat Training + + -- P4 quests + QuestieDB.questData[78752] = {} -- Proof of Demise: Titan Rune Protocol Gamma + QuestieDB.questData[78753] = {} -- Proof of Demise: Threats to Azeroth +end diff --git a/.history/Database/QuestieDB_20260222020255.lua b/.history/Database/QuestieDB_20260222020255.lua new file mode 100644 index 0000000..b81596d --- /dev/null +++ b/.history/Database/QuestieDB_20260222020255.lua @@ -0,0 +1,1872 @@ +---@class QuestieDB +local QuestieDB = QuestieLoader:CreateModule("QuestieDB") + +---@type QuestieDBPrivate +QuestieDB.private = QuestieDB.private or {} + +---@class QuestieDBPrivate +local _QuestieDB = QuestieDB.private + +------------------------- +--Import modules. +------------------------- +---@type QuestieLib +local QuestieLib = QuestieLoader:ImportModule("QuestieLib") +---@type QuestiePlayer +local QuestiePlayer = QuestieLoader:ImportModule("QuestiePlayer") +---@type QuestieCorrections +local QuestieCorrections = QuestieLoader:ImportModule("QuestieCorrections") +---@type QuestieProfessions +local QuestieProfessions = QuestieLoader:ImportModule("QuestieProfessions") +---@type DailyQuests +local DailyQuests = QuestieLoader:ImportModule("DailyQuests") +---@type QuestieReputation +local QuestieReputation = QuestieLoader:ImportModule("QuestieReputation") +---@type QuestieEvent +local QuestieEvent = QuestieLoader:ImportModule("QuestieEvent") +---@type DBCompiler +local QuestieDBCompiler = QuestieLoader:ImportModule("DBCompiler") +---@type ZoneDB +local ZoneDB = QuestieLoader:ImportModule("ZoneDB") +---@type l10n +local l10n = QuestieLoader:ImportModule("l10n") +---@type QuestLogCache +local QuestLogCache = QuestieLoader:ImportModule("QuestLogCache") + +---@type QuestieQuest +local QuestieQuest = QuestieLoader:ImportModule("QuestieQuest") +---@type QuestieQuestPrivate +local _QuestieQuest = QuestieQuest.private + +--- A list of quests that will never be available, used to quickly skip quests. +---@alias AutoBlacklistString "rep"|"skill"|"race"|"class" +---@type table +QuestieDB.autoBlacklist = {} + +local tinsert = table.insert +local bitband = bit.band + +-- questFlags https://github.com/cmangos/issues/wiki/Quest_template#questflags +local QUEST_FLAGS_DAILY = 4096 +local QUEST_FLAGS_WEEKLY = 32768 +-- Pre calculated 2 * QUEST_FLAGS, for testing a bit flag +local QUEST_FLAGS_DAILY_X2 = 2 * QUEST_FLAGS_DAILY +local QUEST_FLAGS_WEEKLY_X2 = 2 * QUEST_FLAGS_WEEKLY +--- COMPATIBILITY --- +local WOW_PROJECT_ID = QuestieCompat.WOW_PROJECT_ID +local WOW_PROJECT_CLASSIC = QuestieCompat.WOW_PROJECT_CLASSIC +local C_QuestLog = QuestieCompat.C_QuestLog +local GetQuestTagInfo = QuestieCompat.GetQuestTagInfo +local IsPlayerSpell = QuestieCompat.IsPlayerSpell +local IsSpellKnownOrOverridesKnown = QuestieCompat.IsSpellKnownOrOverridesKnown +local IsQuestFlaggedCompleted = QuestieCompat.IsQuestFlaggedCompleted or C_QuestLog.IsQuestFlaggedCompleted + +--- Tag corrections for quests for which the API returns the wrong values. +--- Strucute: [questId] = {tagId, "questType"} +---@type table +local questTagCorrections = { + [373] = {81, "Dungeon"}, + [4146] = {81, "Dungeon"}, + [5342] = {0, ""}, + [5344] = {0, ""}, + [6846] = {41, "PvP"}, + [6901] = {41, "PvP"}, + [7001] = {41, "PvP"}, + [7027] = {41, "PvP"}, + [7161] = {41, "PvP"}, + [7162] = {41, "PvP"}, + [7841] = {0, ""}, + [7842] = {0, ""}, + [7843] = {0, ""}, + [8122] = {41, "PvP"}, + [8386] = {41, "PvP"}, + [8404] = {41, "PvP"}, + [8405] = {41, "PvP"}, + [8406] = {41, "PvP"}, + [8407] = {41, "PvP"}, + [8408] = {41, "PvP"}, + [12170] = {41, "PvP"}, + [12244] = {41, "PvP"}, + [12268] = {41, "PvP"}, + [12270] = {41, "PvP"}, + [12280] = {41, "PvP"}, + [12284] = {41, "PvP"}, + [12288] = {41, "PvP"}, + [12289] = {41, "PvP"}, + [12296] = {41, "PvP"}, + [12314] = {41, "PvP"}, + [12315] = {41, "PvP"}, + [12316] = {41, "PvP"}, + [12317] = {41, "PvP"}, + [12323] = {41, "PvP"}, + [12324] = {41, "PvP"}, + [12432] = {41, "PvP"}, + [12433] = {41, "PvP"}, + [12434] = {41, "PvP"}, + [12437] = {41, "PvP"}, + [12443] = {41, "PvP"}, + [12446] = {41, "PvP"}, + [13199] = {41, "PvP"}, + [78680] = {1, "Elite"}, + [78681] = {1, "Elite"}, + [78684] = {1, "Elite"}, + [80098] = {1, "Elite"}, + [80147] = {1, "Elite"}, + [80148] = {1, "Elite"}, + [80149] = {1, "Elite"}, + [80150] = {1, "Elite"}, + [80151] = {1, "Elite"}, + [80152] = {1, "Elite"}, + [90014] = {1, "Elite"}, + [90054] = {1, "Elite"}, + [90070] = {1, "Elite"}, + [90081] = {1, "Elite"}, + [90091] = {1, "Elite"}, + [90094] = {1, "Elite"}, + [90113] = {1, "Elite"}, + [90114] = {1, "Elite"}, + [90116] = {1, "Elite"}, + [90119] = {1, "Elite"}, + [90122] = {1, "Elite"}, + [90151] = {1, "Elite"}, + [90152] = {1, "Elite"}, + [90159] = {1, "Elite"}, + [90163] = {1, "Elite"}, + [90166] = {1, "Elite"}, + [90169] = {1, "Elite"}, + [90175] = {1, "Elite"}, + [90190] = {1, "Elite"}, + [90202] = {1, "Elite"}, + [90204] = {1, "Elite"}, + [90221] = {1, "Elite"}, + [90225] = {1, "Elite"}, + [90230] = {1, "Elite"}, + [90269] = {1, "Elite"}, + [90271] = {1, "Elite"}, +} +-- 3.3.5 compatibility: fake Item API if missing (Retail style) +if not Item then + Item = {} +end + +if not Item.CreateFromItemID then + function Item:CreateFromItemID(itemID) + local obj = {} + + function obj:ContinueOnItemLoad(callback) + -- In 3.3.5 there is no async loading, so call the callback immediately + if callback then + callback() + end + end + + function obj:GetItemName() + local name = GetItemInfo(itemID) + return name or ("item:" .. tostring(itemID)) + end + + return obj + end +end + +-- race bitmask data, for easy access +local VANILLA = WOW_PROJECT_ID == WOW_PROJECT_CLASSIC + +QuestieDB.raceKeys = { + ALL_ALLIANCE = VANILLA and 77 or 1101, + ALL_HORDE = VANILLA and 178 or 690, + NONE = 0, + + HUMAN = 1, + ORC = 2, + DWARF = 4, + NIGHT_ELF = 8, + UNDEAD = 16, + TAUREN = 32, + GNOME = 64, + TROLL = 128, + --GOBLIN = 256, + BLOOD_ELF = 512, + DRAENEI = 1024 +} + +-- Combining these with "and" makes the order matter +-- 1 and 2 ~= 2 and 1 +QuestieDB.classKeys = { + NONE = 0, + + WARRIOR = 1, + PALADIN = 2, + HUNTER = 4, + ROGUE = 8, + PRIEST = 16, + DEATH_KNIGHT = 32, + SHAMAN = 64, + MAGE = 128, + WARLOCK = 256, + DRUID = 1024 +} + +QuestieDB.specialFlags = { + REPEATABLE = 1, +} + +_QuestieDB.questCache = {}; -- stores quest objects so they dont need to be regenerated +_QuestieDB.itemCache = {}; +_QuestieDB.npcCache = {}; +_QuestieDB.objectCache = {}; +_QuestieDB.zoneCache = {}; + +---A Memoized table for function Quest:CheckRace +--- +---Usage: checkRace[requiredRaces] +---@type table +local checkRace +---A Memoized table for function Quest:CheckClass +--- +---Usage: checkRace[requiredClasses] +---@type table +local checkClass + +---QuestieCorrections.hiddenQuests +local QuestieCorrectionshiddenQuests +---Questie.db.char.hidden +local Questiedbcharhidden + +QuestieDB.itemDataOverrides = {} +QuestieDB.npcDataOverrides = {} +QuestieDB.objectDataOverrides = {} +QuestieDB.questDataOverrides = {} + +QuestieDB.activeChildQuests = {} + + +function QuestieDB:Initialize() + + StaticPopupDialogs["QUESTIE_DATABASE_ERROR"] = { -- /run StaticPopup_Show ("QUESTIE_DATABASE_ERROR") + text = l10n("There was a problem initializing Questie's database. This can usually be fixed by recompiling the database."), + button1 = l10n("Recompile Database"), + button2 = l10n("Don't show again"), + OnAccept = function() + if Questie.IsSoD then + Questie.db.global.sod.dbIsCompiled = false + else + Questie.db.global.dbIsCompiled = false + end + ReloadUI() + end, + OnDecline = function() + Questie.db.profile.disableDatabaseWarnings = true + end, + OnShow = function(self) + self:SetFrameStrata("TOOLTIP") + end, + timeout = 0, + whileDead = true, + hideOnEscape = false, + preferredIndex = 3 + } + + -- For now we store both, the SoD database and the Era/HC database + local npcBin, npcPtrs, questBin, questPtrs, objBin, objPtrs, itemBin, itemPtrs + if Questie.IsSoD then + npcBin = Questie.db.global.sod.npcBin + npcPtrs = Questie.db.global.sod.npcPtrs + questBin = Questie.db.global.sod.questBin + questPtrs = Questie.db.global.sod.questPtrs + objBin = Questie.db.global.sod.objBin + objPtrs = Questie.db.global.sod.objPtrs + itemBin = Questie.db.global.sod.itemBin + itemPtrs = Questie.db.global.sod.itemPtrs + else + npcBin = Questie.db.global.npcBin + npcPtrs = Questie.db.global.npcPtrs + questBin = Questie.db.global.questBin + questPtrs = Questie.db.global.questPtrs + objBin = Questie.db.global.objBin + objPtrs = Questie.db.global.objPtrs + itemBin = Questie.db.global.itemBin + itemPtrs = Questie.db.global.itemPtrs + end + + QuestieDB.QueryNPC = QuestieDBCompiler:GetDBHandle(npcBin, npcPtrs, QuestieDBCompiler:BuildSkipMap(QuestieDB.npcCompilerTypes, QuestieDB.npcCompilerOrder), QuestieDB.npcKeys, QuestieDB.npcDataOverrides) + QuestieDB.QueryQuest = QuestieDBCompiler:GetDBHandle(questBin, questPtrs, QuestieDBCompiler:BuildSkipMap(QuestieDB.questCompilerTypes, QuestieDB.questCompilerOrder), QuestieDB.questKeys, QuestieDB.questDataOverrides) + QuestieDB.QueryObject = QuestieDBCompiler:GetDBHandle(objBin, objPtrs, QuestieDBCompiler:BuildSkipMap(QuestieDB.objectCompilerTypes, QuestieDB.objectCompilerOrder), QuestieDB.objectKeys, QuestieDB.objectDataOverrides) + QuestieDB.QueryItem = QuestieDBCompiler:GetDBHandle(itemBin, itemPtrs, QuestieDBCompiler:BuildSkipMap(QuestieDB.itemCompilerTypes, QuestieDB.itemCompilerOrder), QuestieDB.itemKeys, QuestieDB.itemDataOverrides) + + QuestieDB._QueryQuestSingle = QuestieDB.QueryQuest.QuerySingle + QuestieDB._QueryNPCSingle = QuestieDB.QueryNPC.QuerySingle + QuestieDB._QueryObjectSingle = QuestieDB.QueryObject.QuerySingle + QuestieDB._QueryItemSingle = QuestieDB.QueryItem.QuerySingle + + QuestieDB.NPCPointers = QuestieDB.QueryNPC.pointers + QuestieDB.QuestPointers = QuestieDB.QueryQuest.pointers + QuestieDB.ObjectPointers = QuestieDB.QueryObject.pointers + QuestieDB.ItemPointers = QuestieDB.QueryItem.pointers + + QuestieDB._QueryNPC = QuestieDB.QueryNPC.Query + QuestieDB._QueryQuest = QuestieDB.QueryQuest.Query + QuestieDB._QueryObject = QuestieDB.QueryObject.Query + QuestieDB._QueryItem = QuestieDB.QueryItem.Query + + QuestieDB.QueryNPC = QuestieDB._QueryNPC + QuestieDB.QueryQuest = QuestieDB._QueryQuest + QuestieDB.QueryObject = QuestieDB._QueryObject + QuestieDB.QueryItem = QuestieDB._QueryItem + + QuestieDB.QueryQuestSingle = QuestieDB._QueryQuestSingle + QuestieDB.QueryNPCSingle = QuestieDB._QueryNPCSingle + QuestieDB.QueryObjectSingle = QuestieDB._QueryObjectSingle + QuestieDB.QueryItemSingle = QuestieDB._QueryItemSingle + + -- data has been corrected, ensure cache is empty (something might have accessed the api before questie initialized) + _QuestieDB.questCache = {}; + _QuestieDB.itemCache = {}; + _QuestieDB.npcCache = {}; + _QuestieDB.objectCache = {}; + _QuestieDB.zoneCache = {}; + + --? This improves performance a lot, the regular functions still work but this is much faster because i caches + checkRace = QuestieLib:TableMemoizeFunction(QuestiePlayer.HasRequiredRace) + checkClass = QuestieLib:TableMemoizeFunction(QuestiePlayer.HasRequiredClass) + --? Set the localized versions of these. + QuestieCorrectionshiddenQuests = QuestieCorrections.hiddenQuests + Questiedbcharhidden = Questie.db.char.hidden +end + +function QuestieDB:GetObject(objectId) + if not objectId then + return nil + end + if _QuestieDB.objectCache[objectId] then + return _QuestieDB.objectCache[objectId]; + end + + --local rawdata = QuestieDB.objectData[objectId]; + local rawdata = QuestieDB.QueryObject(objectId, QuestieDB._objectAdapterQueryOrder) + + if not rawdata then + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieDB:GetObject] rawdata is nil for objectID:", objectId) + return nil + end + + local obj = { + id = objectId, + type = "object" + } + + for stringKey, intKey in pairs(QuestieDB.objectKeys) do + obj[stringKey] = rawdata[intKey] + end + --_QuestieDB.objectCache[objectId] = obj; + return obj; +end + +function QuestieDB:GetItem(itemId) + if (not itemId) or (itemId == 0) then + return nil + end + if _QuestieDB.itemCache[itemId] then + return _QuestieDB.itemCache[itemId]; + end + + local rawdata = QuestieDB.QueryItem(itemId, QuestieDB._itemAdapterQueryOrder) + + if not rawdata then + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieDB:GetItem] rawdata is nil for itemID:", itemId) + return nil + end + + local item = { + Id = itemId, + Sources = {}, + Hidden = QuestieCorrections.questItemBlacklist[itemId] + } + + for stringKey, intKey in pairs(QuestieDB.itemKeys) do + item[stringKey] = rawdata[intKey] + end + + local sources = item.Sources + + if rawdata[QuestieDB.itemKeys.npcDrops] then + for _, npcId in pairs(rawdata[QuestieDB.itemKeys.npcDrops]) do + sources[#sources+1] = { + Id = npcId, + Type = "monster", + } + end + end + + if rawdata[QuestieDB.itemKeys.vendors] then + for _, npcId in pairs(rawdata[QuestieDB.itemKeys.vendors]) do + sources[#sources+1] = { + Id = npcId, + Type = "monster", + } + end + end + + if rawdata[QuestieDB.itemKeys.objectDrops] then + for _, v in pairs(rawdata[QuestieDB.itemKeys.objectDrops]) do + sources[#sources+1] = { + Id = v, + Type = "object", + } + end + end + + return item +end + +---@param questId number +---@return boolean +function QuestieDB.IsRepeatable(questId) + local flags = QuestieDB.QueryQuestSingle(questId, "specialFlags") + return flags and bitband(flags, 1) ~= 0 +end + +---@param questId number +---@return boolean +function QuestieDB.IsDailyQuest(questId) + local flags = QuestieDB.QueryQuestSingle(questId, "questFlags") + -- test a bit flag: (value % (2*flag) >= flag) + return flags and (flags % QUEST_FLAGS_DAILY_X2) >= QUEST_FLAGS_DAILY +end + +---@param questId number +---@return boolean +function QuestieDB.IsWeeklyQuest(questId) + local flags = QuestieDB.QueryQuestSingle(questId, "questFlags") + -- test a bit flag: (value % (2*flag) >= flag) + return flags and (flags % QUEST_FLAGS_WEEKLY_X2) >= QUEST_FLAGS_WEEKLY +end + +---@param questId number +---@return boolean +function QuestieDB.IsDungeonQuest(questId) + local questType, _ = QuestieDB.GetQuestTagInfo(questId) + return questType == 81 +end + +---@param questId number +---@return boolean +function QuestieDB.IsRaidQuest(questId) + local questType, _ = QuestieDB.GetQuestTagInfo(questId) + return questType == 62 +end + +---@param questId number +---@return boolean +function QuestieDB.IsPvPQuest(questId) + local questType, _ = QuestieDB.GetQuestTagInfo(questId) + return questType == 41 +end + +---@param questId number +---@return boolean +function QuestieDB.IsGroupQuest(questId) + local questType, _ = QuestieDB.GetQuestTagInfo(questId) + return questType == 1 +end + +--[[ Commented out because not used anywhere +---@param questId number +---@return boolean +function QuestieDB:IsAQWarEffortQuest(questId) + return QuestieQuestBlacklist.AQWarEffortQuests[questId] +end +]]-- + +---@param class string +---@return number +function QuestieDB:GetZoneOrSortForClass(class) + return QuestieDB.sortKeys[class] +end + +--- Wrapper function for the GetQuestTagInfo API to correct +--- quests that are falsely marked by Blizzard +---@param questId number +---@return number|nil questType, string|nil questTag +function QuestieDB.GetQuestTagInfo(questId) + if questTagCorrections[questId] then + return questTagCorrections[questId][1], questTagCorrections[questId][2] + end + local questType, questTag = GetQuestTagInfo(questId) + + return questType, questTag +end + +---@param questId number +---@return boolean +function QuestieDB.IsActiveEventQuest(questId) + --! If you edit the logic here, also edit in QuestieDB:IsLevelRequirementsFulfilled + return QuestieEvent.activeQuests[questId] == true +end + +---@param exclusiveTo table +---@return boolean +function QuestieDB:IsExclusiveQuestInQuestLogOrComplete(exclusiveTo) + if (not exclusiveTo) then + return false + end + + for _, exId in pairs(exclusiveTo) do + if Questie.db.char.complete[exId] then + return true + end + end + return false +end + +---@param questId QuestId +---@param minLevel Level @The level a quest must have at least to be shown +---@param maxLevel Level @The level a quest can have at most to be shown +---@param playerLevel Level? @Pass player level to avoid calling UnitLevel or to use custom level +---@return boolean +function QuestieDB.IsLevelRequirementsFulfilled(questId, minLevel, maxLevel, playerLevel) + playerLevel = playerLevel or QuestiePlayer.GetPlayerLevel() + + local level, requiredLevel, requiredMaxLevel = QuestieLib.GetTbcLevel(questId, playerLevel) + requiredMaxLevel = requiredMaxLevel or 0 + --* QuestiePlayer.currentQuestlog[parentQuestId] logic is from QuestieDB.IsParentQuestActive, if you edit here, also edit there + local parentQuestId = QuestieDB.QueryQuestSingle(questId, "parentQuest") + if parentQuestId and QuestiePlayer.currentQuestlog[parentQuestId] then + -- If the quest is in the player's log already, there's no need to do any logic here, it must already be available + return true + end + + --* QuestieEvent.activeQuests[questId] logic is from QuestieDB.IsParentQuestActive, if you edit here, also edit there + if (Questie.db.profile.lowLevelStyle ~= Questie.LOWLEVEL_RANGE) and + minLevel > requiredLevel and + QuestieEvent.activeQuests[questId] then + return true + end + + if (Questie.IsSoD == true) and (QuestieDB.IsSoDRuneQuest(questId) == true) and (requiredLevel <= playerLevel) then + -- Season of Discovery Rune quests are still shown when trivial + return true + end + + if maxLevel >= level then + if (Questie.db.profile.lowLevelStyle ~= Questie.LOWLEVEL_ALL) and minLevel > level then + -- The quest level is too low and trivial quests are not shown + return false + end + else + if (Questie.db.profile.lowLevelStyle == Questie.LOWLEVEL_RANGE) or maxLevel < requiredLevel then + -- Either an absolute level range is set and maxLevel < level OR the maxLevel is manually set to a lower value + return false + end + end + + if maxLevel < requiredLevel then + -- Either the players level is not high enough or the maxLevel is manually set to a lower value + return false + end + + if requiredMaxLevel ~= 0 and playerLevel > requiredMaxLevel then + -- The players level exceeds the requiredMaxLevel of a quest + return false + end + + return true +end + +---@param parentID number +---@return boolean +function QuestieDB.IsParentQuestActive(parentID) + --! If you edit the logic here, also edit in QuestieDB:IsLevelRequirementsFulfilled + if (not parentID) or (parentID == 0) then + return false + end + if QuestiePlayer.currentQuestlog[parentID] then + return true + end + return false +end + +---@param preQuestGroup table +---@return boolean +function QuestieDB:IsPreQuestGroupFulfilled(preQuestGroup) + if not preQuestGroup then + return true + end + for preQuestIndex=1, #preQuestGroup do + -- If a quest is not complete and no exlusive quest is complete, the requirement is not fulfilled + if not Questie.db.char.complete[preQuestGroup[preQuestIndex]] then + local preQuest = QuestieDB.QueryQuestSingle(preQuestGroup[preQuestIndex], "exclusiveTo") + if (not preQuest) then + return false + end + + local anyExlusiveFinished = false + for i=1, #preQuest do + if Questie.db.char.complete[preQuest[i]] then + anyExlusiveFinished = true + end + end + if not anyExlusiveFinished then + return false + end + end + end + -- All preQuests are complete + return true +end + +---@param preQuestSingle number[] +---@return boolean +function QuestieDB:IsPreQuestSingleFulfilled(preQuestSingle) + if (not preQuestSingle) then + return true + end + for preQuestIndex=1, #preQuestSingle do + -- If a quest is complete the requirement is fulfilled + if Questie.db.char.complete[preQuestSingle[preQuestIndex]] then + return true + end + end + -- No preQuest is complete + return false +end + +---@param questId number +---@param debugPrint boolean? -- if true, IsDoable will print conclusions to debug channel +---@return boolean +function QuestieDB.IsDoable(questId, debugPrint) + + --! Before changing any logic in QuestieDB.IsDoable, make sure + --! to mirror the same logic to QuestieDB.IsDoableVerbose! + + -- IsDoable determines if the player is currently eligible for + -- a quest, and returns that result as true/false in order to + -- programmatically show/hide quests and determine further logic. + + -- IsDoableVerbose does the same logic, but returns human-readable + -- explanations as a string for display in the UI. + + -- These functions are maintained separately for performance, + -- because IsDoable is often called in a loop through every + -- quest in the DB in order to update icons, while + -- IsDoableVerbose is only called manually by the user. + + -- These are localized in the init function + if QuestieCorrectionshiddenQuests[questId] then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Quest " .. questId .. " is hidden automatically!") end + return false + end + + if Questiedbcharhidden[questId] then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Quest " .. questId .. " is hidden manually!") end + return false + end + + if C_QuestLog.IsOnQuest(questId) == true then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Quest " .. questId .. " is eligible because Player is on the quest!") end + return true + end + + if QuestieDB.activeChildQuests[questId] then -- The parent quest is active, so this quest is doable + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Quest " .. questId .. " is eligible because it's a child quest and the parent is active!") end + return true + -- this scenario actually returns true, so it skips the rest of the later checks, because + -- if we're on the parent quest then we implicitly know all other requirements are met + end + + local requiredRaces = QuestieDB.QueryQuestSingle(questId, "requiredRaces") + if (requiredRaces and not checkRace[requiredRaces]) then + QuestieDB.autoBlacklist[questId] = "race" + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Race requirement not fulfilled for quest " .. questId) end + return false + end + + -- Check the preQuestSingle field where just one of the required quests has to be complete for a quest to show up + local preQuestSingle = QuestieDB.QueryQuestSingle(questId, "preQuestSingle") + if preQuestSingle then + local isPreQuestSingleFulfilled = QuestieDB:IsPreQuestSingleFulfilled(preQuestSingle) + if not isPreQuestSingleFulfilled then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Pre-quest requirement not fulfilled for quest " .. questId) end + return false + end + end + + local requiredClasses = QuestieDB.QueryQuestSingle(questId, "requiredClasses") + if (requiredClasses and not checkClass[requiredClasses]) then + QuestieDB.autoBlacklist[questId] = "class" + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Class requirement not fulfilled for quest " .. questId) end + return false + end + + local requiredMinRep = QuestieDB.QueryQuestSingle(questId, "requiredMinRep") + local requiredMaxRep = QuestieDB.QueryQuestSingle(questId, "requiredMaxRep") + if (requiredMinRep or requiredMaxRep) then + local aboveMinRep, hasMinFaction, belowMaxRep, hasMaxFaction = QuestieReputation:HasFactionAndReputationLevel(requiredMinRep, requiredMaxRep) + if (not ((aboveMinRep and hasMinFaction) and (belowMaxRep and hasMaxFaction))) then + --- If we haven't got the faction for min or max we blacklist it + if not hasMinFaction or not hasMaxFaction then -- or not belowMaxRep -- This is something we could have done, but would break if you rep downwards + QuestieDB.autoBlacklist[questId] = "rep" + end + + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Player does not meet reputation requirements for quest " .. questId) end + return false + end + end + + local requiredSkill = QuestieDB.QueryQuestSingle(questId, "requiredSkill") + if (requiredSkill) then + local hasProfession, hasSkillLevel = QuestieProfessions:HasProfessionAndSkillLevel(requiredSkill) + if (not (hasProfession and hasSkillLevel)) then + --? We haven't got the profession so we blacklist it. + if(not hasProfession) then + QuestieDB.autoBlacklist[questId] = "skill" + end + + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Player does not meet profession requirements for quest " .. questId) end + return false + end + end + + --? PreQuestGroup and PreQuestSingle are mutualy exclusive to eachother and preQuestSingle is more prevalent + --? Only try group if single does not exist. + if not preQuestSingle then + -- Check the preQuestGroup field where every required quest has to be complete for a quest to show up + local preQuestGroup = QuestieDB.QueryQuestSingle(questId, "preQuestGroup") + if preQuestGroup then + local isPreQuestGroupFulfilled = QuestieDB:IsPreQuestGroupFulfilled(preQuestGroup) + if not isPreQuestGroupFulfilled then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Group pre-quest requirement not fulfilled for quest " .. questId) end + return false + end + end + end + + local parentQuest = QuestieDB.QueryQuestSingle(questId, "parentQuest") + if parentQuest and parentQuest ~= 0 then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Quest " .. questId .. " has an inactive parent quest") end + return false + end + + local nextQuestInChain = QuestieDB.QueryQuestSingle(questId, "nextQuestInChain") + if nextQuestInChain and nextQuestInChain ~= 0 then + if Questie.db.char.complete[nextQuestInChain] or QuestiePlayer.currentQuestlog[nextQuestInChain] then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Follow up quests already completed or in the quest log for quest " .. questId) end + return false + end + end + + -- Check if a quest which is exclusive to the current has already been completed or accepted + -- If yes the current quest can't be accepted + local ExclusiveQuestGroup = QuestieDB.QueryQuestSingle(questId, "exclusiveTo") + if ExclusiveQuestGroup then -- fix (DO NOT REVERT, tested thoroughly) + for _, v in pairs(ExclusiveQuestGroup) do + if Questie.db.char.complete[v] or QuestiePlayer.currentQuestlog[v] then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Player has completed a quest exclusive with quest " .. questId) end + return false + end + end + end + + if (not DailyQuests:IsActiveDailyQuest(questId)) then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Quest " .. questId .. " is a daily quest which isn't active today!") end + return false + end + + local requiredSpecialization = QuestieDB.QueryQuestSingle(questId, "requiredSpecialization") + if (requiredSpecialization) and (requiredSpecialization > 0) then + local hasSpecialization = QuestieProfessions:HasSpecialization(requiredSpecialization) + if (not hasSpecialization) then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Player does not meet profession specialization requirements for quest " .. questId) end + return false + end + end + + local requiredSpell = QuestieDB.QueryQuestSingle(questId, "requiredSpell") + if (requiredSpell) and (requiredSpell ~= 0) then + local hasSpell = IsSpellKnownOrOverridesKnown(math.abs(requiredSpell)) + local hasProfSpell = IsPlayerSpell(math.abs(requiredSpell)) + if (requiredSpell > 0) and (not hasSpell) and (not hasProfSpell) then --if requiredSpell is positive, we make the quest ineligible if the player does NOT have the spell + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Player does not meet learned spell requirements for quest " .. questId) end + return false + elseif (requiredSpell < 0) and (hasSpell or hasProfSpell) then --if requiredSpell is negative, we make the quest ineligible if the player DOES have the spell + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Player does not meet unlearned spell requirements for quest " .. questId) end + return false + end + end + + -- Check and see if the Quest requires an achievement before showing as available + if _QuestieDB:CheckAchievementRequirements(questId) == false then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Player does not meet achievement requirements for quest " .. questId) end + return false + end + + return true +end + +---@param questId number +---@param debugPrint boolean? -- if true, IsDoable will print conclusions to debug channel +---@param returnText boolean? -- if true, IsDoable will return plaintext explanation instead of true/false +---@param returnBrief boolean? -- if true and returnText is true, IsDoable will return a very brief explanation instead of a verbose one +---@return boolean +function QuestieDB.IsDoableVerbose(questId, debugPrint, returnText, returnBrief) + + --! Before changing any logic in QuestieDB.IsDoable, make sure + --! to mirror the same logic to QuestieDB.IsDoableVerbose! + + -- IsDoable determines if the player is currently eligible for + -- a quest, and returns that result as true/false in order to + -- programmatically show/hide quests and determine further logic. + + -- IsDoableVerbose does the same logic, but returns human-readable + -- explanations as a string for display in the UI. + + -- These functions are maintained separately for performance, + -- because IsDoable is often called in a loop through every + -- quest in the DB in order to update icons, while + -- IsDoableVerbose is only called manually by the user. + + if C_QuestLog.IsOnQuest(questId) == true then + local msg = "Quest " .. questId .. " is active!" + if returnText and returnBrief then + return "Eligible: Player is on quest" + elseif returnText and not returnBrief then + return msg + end + end + + -- These are localized in the init function + if QuestieCorrectionshiddenQuests[questId] then + local msg = "Quest " .. questId .. " is hidden automatically!" + if returnText and returnBrief then + return "Unknown: Automatically blacklisted" + elseif returnText and not returnBrief then + return msg + end + end + + if Questiedbcharhidden[questId] then + local msg = "Quest " .. questId .. " is hidden manually!" + if returnText and returnBrief then + return "Unknown: Manually blacklisted" + elseif returnText and not returnBrief then + return msg + end + end + + if Questiedbcharhidden[questId] then + local msg = "Quest " .. questId .. " is hidden manually!" + if returnText and returnBrief then + return "Unknown: Manually blacklisted" + elseif returnText and not returnBrief then + return msg + end + end + + if QuestieDB.activeChildQuests[questId] then -- The parent quest is active, so this quest is doable + local msg = "Quest " .. questId .. " is eligible because it's a child quest and the parent is active!" + if returnText and returnBrief then + return "Eligible: Parent active" + elseif returnText and not returnBrief then + return msg + end + end + + local requiredRaces = QuestieDB.QueryQuestSingle(questId, "requiredRaces") + if (requiredRaces and not checkRace[requiredRaces]) then + local msg = "Race requirement not fulfilled for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Race requirement" + elseif returnText and not returnBrief then + return msg + end + end + + -- Check the preQuestSingle field where just one of the required quests has to be complete for a quest to show up + local preQuestSingle = QuestieDB.QueryQuestSingle(questId, "preQuestSingle") + if preQuestSingle then + local isPreQuestSingleFulfilled = QuestieDB:IsPreQuestSingleFulfilled(preQuestSingle) + if not isPreQuestSingleFulfilled then + local msg = "Pre-quest requirement not fulfilled for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Incomplete pre-quest" + elseif returnText and not returnBrief then + return msg + end + end + end + + local requiredClasses = QuestieDB.QueryQuestSingle(questId, "requiredClasses") + if (requiredClasses and not checkClass[requiredClasses]) then + QuestieDB.autoBlacklist[questId] = "class" + local msg = "Class requirement not fulfilled for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Class requirement" + elseif returnText and not returnBrief then + return msg + end + end + + local requiredMinRep = QuestieDB.QueryQuestSingle(questId, "requiredMinRep") + local requiredMaxRep = QuestieDB.QueryQuestSingle(questId, "requiredMaxRep") + if (requiredMinRep or requiredMaxRep) then + local aboveMinRep, hasMinFaction, belowMaxRep, hasMaxFaction = QuestieReputation:HasFactionAndReputationLevel(requiredMinRep, requiredMaxRep) + if (not ((aboveMinRep and hasMinFaction) and (belowMaxRep and hasMaxFaction))) then + --- If we haven't got the faction for min or max we blacklist it + if not hasMinFaction or not hasMaxFaction then -- or not belowMaxRep -- This is something we could have done, but would break if you rep downwards + QuestieDB.autoBlacklist[questId] = "rep" + end + + local msg = "Player does not meet reputation requirements for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Reputation requirement" + elseif returnText and not returnBrief then + return msg + end + end + end + + local requiredSkill = QuestieDB.QueryQuestSingle(questId, "requiredSkill") + if (requiredSkill) then + local hasProfession, hasSkillLevel = QuestieProfessions:HasProfessionAndSkillLevel(requiredSkill) + if (not (hasProfession and hasSkillLevel)) then + --? We haven't got the profession so we blacklist it. + if(not hasProfession) then + QuestieDB.autoBlacklist[questId] = "skill" + end + + local msg = "Player does not meet profession requirements for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Profession requirement" + elseif returnText and not returnBrief then + return msg + end + end + end + + --? PreQuestGroup and PreQuestSingle are mutualy exclusive to eachother and preQuestSingle is more prevalent + --? Only try group if single does not exist. + if not preQuestSingle then + -- Check the preQuestGroup field where every required quest has to be complete for a quest to show up + local preQuestGroup = QuestieDB.QueryQuestSingle(questId, "preQuestGroup") + if preQuestGroup then + local isPreQuestGroupFulfilled = QuestieDB:IsPreQuestGroupFulfilled(preQuestGroup) + if not isPreQuestGroupFulfilled then + local msg = "Group pre-quest requirement not fulfilled for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Incomplete pre-quest group" + elseif returnText and not returnBrief then + return msg + end + end + end + end + + local parentQuest = QuestieDB.QueryQuestSingle(questId, "parentQuest") + if parentQuest and parentQuest ~= 0 then + local msg = "Quest " .. questId .. " has an inactive parent quest" + if returnText and returnBrief then + return "Ineligible: Inactive parent" + elseif returnText and not returnBrief then + return msg + end + end + + local nextQuestInChain = QuestieDB.QueryQuestSingle(questId, "nextQuestInChain") + if nextQuestInChain and nextQuestInChain ~= 0 then + if Questie.db.char.complete[nextQuestInChain] or QuestiePlayer.currentQuestlog[nextQuestInChain] then + local msg = "Follow up quests already completed or in the quest log for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Later quest completed" + elseif returnText and not returnBrief then + return msg + end + end + end + + -- Check if a quest which is exclusive to the current has already been completed or accepted + -- If yes the current quest can't be accepted + local ExclusiveQuestGroup = QuestieDB.QueryQuestSingle(questId, "exclusiveTo") + if ExclusiveQuestGroup then -- fix (DO NOT REVERT, tested thoroughly) + for _, v in pairs(ExclusiveQuestGroup) do + if Questie.db.char.complete[v] or QuestiePlayer.currentQuestlog[v] then + local msg = "Player has completed a quest exclusive with quest " .. questId + if returnText and returnBrief then + return "Ineligible: Exclusive quest completed" + elseif returnText and not returnBrief then + return msg + end + end + end + end + + if (not DailyQuests:IsActiveDailyQuest(questId)) then + local msg = "Quest " .. questId .. " is a daily quest which isn't active today!" + if returnText and returnBrief then + return "Ineligible: Inactive daily" + elseif returnText and not returnBrief then + return msg + end + end + + local requiredSpecialization = QuestieDB.QueryQuestSingle(questId, "requiredSpecialization") + if (requiredSpecialization) and (requiredSpecialization > 0) then + local hasSpecialization = QuestieProfessions:HasSpecialization(requiredSpecialization) + if (not hasSpecialization) then + local msg = "Player does not meet profession specialization requirements for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Profession specialization requirement" + elseif returnText and not returnBrief then + return msg + end + end + end + + local requiredSpell = QuestieDB.QueryQuestSingle(questId, "requiredSpell") + if (requiredSpell) and (requiredSpell ~= 0) then + local hasSpell = IsSpellKnownOrOverridesKnown(math.abs(requiredSpell)) + local hasProfSpell = IsPlayerSpell(math.abs(requiredSpell)) + if (requiredSpell > 0) and (not hasSpell) and (not hasProfSpell) then --if requiredSpell is positive, we make the quest ineligible if the player does NOT have the spell + local msg = "Player does not meet learned spell requirements for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Spell not yet learned" + elseif returnText and not returnBrief then + return msg + end + elseif (requiredSpell < 0) and (hasSpell or hasProfSpell) then --if requiredSpell is negative, we make the quest ineligible if the player DOES have the spell + local msg = "Player does not meet unlearned spell requirements for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Already learned spell" + elseif returnText and not returnBrief then + return msg + end + end + end + + -- Check and see if the Quest requires an achievement before showing as available + if _QuestieDB:CheckAchievementRequirements(questId) == false then + local msg = "Player does not meet achievement requirements for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Achievement requirement" + elseif returnText and not returnBrief then + return msg + end + end + + if returnText then + if IsQuestFlaggedCompleted(questId) then + if returnBrief then + return "Already complete" + else + return "Player has already completed quest " .. questId .. "!" + end + else + return "Player is eligible for quest " .. questId .. "!" + end + else + return "" + end +end + +---@param questId number +---@return number @Complete = 1, Failed = -1, Incomplete = 0 +function QuestieDB.IsComplete(questId) + local questLogEntry = QuestLogCache.questLog_DO_NOT_MODIFY[questId] -- DO NOT MODIFY THE RETURNED TABLE + local noQuestItem = not QuestieQuest:CheckQuestSourceItem(questId) + + --[[ pseudo: + if no questLogEntry then return 0 + if has questLogEntry.isComplete then return questLogEntry.isComplete + if no objectives and an item is needed but not obtained then return 0 + if no objectives then return 1 + if all objectives are finished then return 1 + return 0 + --]] + + if not questLogEntry then return 0 end + if questLogEntry.isComplete == 1 or questLogEntry.isComplete == -1 then + return questLogEntry.isComplete + end + + local objectives = questLogEntry.objectives + if not objectives or #objectives == 0 then + -- Before assuming an empty objective list means the quest is done, check if we *expect* objectives from the DB. + -- On WotLK private servers, GetQuestObjectives sometimes transiently returns nil during cache rebuilds, + -- which leads to IsComplete prematurely returning 1 and unloading map icons in the middle of a quest. + local expectedObjectives = QuestieDB.GetQuest(questId) and QuestieDB.GetQuest(questId).ObjectiveData + if expectedObjectives and #expectedObjectives > 0 then + return 0 + end + + return (noQuestItem and 0) or 1 + end + + -- Check if every objective is fulfilled. Use numFulfilled == numRequired rather than the + -- finished flag, because finished is only set by QuestLogCache when the server sends + -- isComplete=1 via GetQuestLogTitle. For quests using consumable items (e.g. Cold Iron Key + -- for quest 12843), the key is consumed and numFulfilled/numRequired update immediately, + -- but isComplete=1 may not arrive until the player physically visits the turn-in NPC. + local allDone = true + for _, obj in ipairs(objectives) do + if obj.numRequired and obj.numRequired > 0 and obj.numFulfilled ~= obj.numRequired then + allDone = false + break + end + end + + return allDone and 1 or 0 +end + +---@param self Quest +---@return number @Complete = 1, Failed = -1, Incomplete = 0 +local function _IsComplete(self) + return QuestieDB.IsComplete(self.Id) +end + +---@param questLevel number the level of the quest +---@return boolean @Returns true if the quest should be grey, false otherwise +function QuestieDB.IsTrivial(questLevel) + if questLevel == -1 then + return false -- Scaling quests are never trivial + end + + local levelDiff = questLevel - QuestiePlayer.GetPlayerLevel(); + if (levelDiff >= 5) then + return false -- Red + elseif (levelDiff >= 3) then + return false -- Orange + elseif (levelDiff >= -2) then + return false -- Yellow + elseif (-levelDiff <= GetQuestGreenRange("player")) then + return false -- Green + else + return true -- Grey + end +end + +---@return number +local _GetIconScale = function() + return Questie.db.profile.objectScale or 1 +end + +---@param questId QuestId +---@return Quest|nil @The quest object or nil if the quest is missing +function QuestieDB.GetQuest(questId) -- /dump QuestieDB.GetQuest(867) + if not questId then + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieDB.GetQuest] No questId.") + return nil + end + if _QuestieDB.questCache[questId] then + return _QuestieDB.questCache[questId]; + end + + local rawdata = QuestieDB.QueryQuest(questId, QuestieDB._questAdapterQueryOrder) + + if (not rawdata) then + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieDB.GetQuest] rawdata is nil for questID:", questId) + return nil + end + + ---@class Quest + ---@field public Id QuestId + ---@field public name Name + ---@field public startedBy StartedBy + ---@field public finishedBy FinishedBy + ---@field public requiredLevel Level + ---@field public questLevel Level + ---@field public requiredRaces number @bitmask + ---@field public requiredClasses number @bitmask + ---@field public objectivesText string[] + ---@field public triggerEnd { [1]: string, [2]: table} + ---@field public objectives RawObjectives + ---@field public sourceItemId ItemId + ---@field public preQuestGroup QuestId[] + ---@field public preQuestSingle QuestId[] + ---@field public childQuests QuestId[] + ---@field public inGroupWith QuestId[] + ---@field public exclusiveTo QuestId[] + ---@field public zoneOrSort ZoneOrSort + ---@field public requiredSkill SkillPair + ---@field public requiredMinRep ReputationPair + ---@field public requiredMaxRep ReputationPair + ---@field public requiredSourceItems ItemId[] + ---@field public nextQuestInChain number + ---@field public questFlags number @bitmask: see https://github.com/cmangos/issues/wiki/Quest_template#questflags + ---@field public specialFlags number @bitmask: 1 = Repeatable, 2 = Needs event, 4 = Monthly reset (req. 1). See https://github.com/cmangos/issues/wiki/Quest_template#specialflags + ---@field public parentQuest QuestId + ---@field public reputationReward ReputationPair[] + ---@field public extraObjectives ExtraObjective[] + ---@field public requiredMaxLevel Level + local QO = { + Id = questId + } + + -- General filling of the QuestObjective with all database values + local questKeys = QuestieDB.questKeys + for stringKey, intKey in pairs(questKeys) do + QO[stringKey] = rawdata[intKey] + end + + local questLevel, requiredLevel = QuestieLib.GetTbcLevel(questId) + QO.level = questLevel + QO.requiredLevel = requiredLevel + + ---@type StartedBy + local startedBy = QO.startedBy + QO.Starts = { + NPC = startedBy and startedBy[1], + GameObject = startedBy and startedBy[2], + Item = startedBy and startedBy[3], + } + QO.isHidden = rawdata.hidden or QuestieCorrections.hiddenQuests[questId] + QO.Description = QO.objectivesText + if QO.specialFlags then + QO.IsRepeatable = bitband(QO.specialFlags, 1) ~= 0 + end + + QO.IsComplete = _IsComplete + + ---@type FinishedBy + local finishedBy = QO.finishedBy + if finishedBy and finishedBy[1] then + for _, id in pairs(finishedBy[1]) do + if id then + QO.Finisher = { + Type = "monster", + Id = id, + ---@type Name @We have to hard-type it here because of the function + Name = QuestieDB.QueryNPCSingle(id, "name") + } + end + end + end + if finishedBy and finishedBy[2] then + for _, id in pairs(finishedBy[2]) do + if id then + -- Some custom servers (like Ascension) incorrectly place Item IDs in the GameObject finisher array. + -- We verify the object actually exists in the ObjectDB before assigning it as a Finisher, + -- to prevent "rawdata is nil for objectID" errors during Arrow/Map updates. + local objectName = QuestieDB.QueryObjectSingle(id, "name") + if objectName then + QO.Finisher = { + Type = "object", + Id = id, + Name = objectName + } + else + Questie:Debug(Questie.DEBUG_INFO, "[QuestieDB:GetQuest] Ignored invalid object finisher ID:", id, "for quest:", questId) + end + end + end + end + + --- to differentiate from the current quest log info. + --- Quest objectives generated from DB+Corrections. + --- Data itself is for example for monster type { Type = "monster", Id = 16518, Text = "Nestlewood Owlkin inoculated" } + ---@type Objective[] + QO.ObjectiveData = {} + + ---@type RawObjectives + local objectives = QO.objectives + if objectives then + if objectives[1] then + for _, creatureObjective in pairs(objectives[1]) do + if creatureObjective then + ---@type NpcObjective + QO.ObjectiveData[#QO.ObjectiveData+1] = { + Type = "monster", + Id = creatureObjective[1], + Text = creatureObjective[2] + } + end + end + end + if objectives[2] then + for _, objectObjective in pairs(objectives[2]) do + if objectObjective then + ---@type ObjectObjective + QO.ObjectiveData[#QO.ObjectiveData+1] = { + Type = "object", + Id = objectObjective[1], + Text = objectObjective[2] + } + end + end + end + if objectives[3] then + for _, itemObjective in pairs(objectives[3]) do + if itemObjective then + ---@type ItemObjective + QO.ObjectiveData[#QO.ObjectiveData+1] = { + Type = "item", + Id = itemObjective[1], + Text = itemObjective[2] + } + end + end + end + if objectives[4] then + ---@type ReputationObjective + QO.ObjectiveData[#QO.ObjectiveData+1] = { + Type = "reputation", + Id = objectives[4][1], + RequiredRepValue = objectives[4][2] + } + end + if objectives[5] and type(objectives[5]) == "table" and #objectives[5] > 0 then + for _, creditObjective in pairs(objectives[5]) do + ---@type KillObjective + local killCreditObjective = { + Type = "killcredit", + IdList = creditObjective[1], + RootId = creditObjective[2], + Text = creditObjective[3] + } + + --? There are quest(s) which have the killCredit at first so we need to switch them + -- Place the kill credit objective first + if QuestieCorrections.killCreditObjectiveFirst[questId] then + tinsert(QO.ObjectiveData, 1, killCreditObjective); + else + tinsert(QO.ObjectiveData, killCreditObjective); + end + end + end + if objectives[6] then + for index, spellObjective in pairs(objectives[6]) do + if spellObjective then + ---@type SpellObjective + QO.ObjectiveData[#QO.ObjectiveData+1] = { + Type = "spell", + Id = spellObjective[1], + Text = spellObjective[2], + ItemSourceId = spellObjective[3], + } + QO.SpellItemId = spellObjective[3] + end + end + end + end + + -- Events need to be added at the end of ObjectiveData + local triggerEnd = QO.triggerEnd + if triggerEnd then + ---@type TriggerEndObjective + QO.ObjectiveData[#QO.ObjectiveData+1] = { + Type = "event", + Text = triggerEnd[1], + Coordinates = triggerEnd[2] + } + end + + local preQuestGroup = QO.preQuestGroup + local preQuestSingle = QO.preQuestSingle + if preQuestGroup and preQuestSingle and next(preQuestGroup) and next(preQuestSingle) then + Questie:Debug(Questie.DEBUG_CRITICAL, "ERRRRORRRRRRR not mutually exclusive for questID:", questId) + end + + --- Quest objectives generated from quest log in QuestieQuest.lua -> QuestieQuest:PopulateQuestLogInfo(quest) + --- Includes also icons drawn to maps, and other stuff. + ---@type table + QO.Objectives = {} + + QO.SpecialObjectives = {} + + ---@type ItemId[] + local requiredSourceItems = QO.requiredSourceItems + if requiredSourceItems then + for _, itemId in pairs(requiredSourceItems) do + if itemId then + -- Make sure requiredSourceItems aren't already an objective + local itemObjPresent = false + if objectives[3] then + for _, itemObjective in pairs(objectives[3]) do + if itemObjective then + if itemId == itemObjective[1] then + itemObjPresent = true + break + end + end + end + end + + -- Make an objective for requiredSourceItem + if not itemObjPresent then + QO.SpecialObjectives[itemId] = { + Type = "item", + Id = itemId, + ---@type string @We have to hard-type it here because of the function + Description = QuestieDB.QueryItemSingle(itemId, "name") + } + end + end + end + end + + ---@type ExtraObjective[] + local extraObjectives = QO.extraObjectives + if extraObjectives then + for index, o in pairs(extraObjectives) do + local specialObjective = { + Icon = o[2], + Description = o[3], + RealObjectiveIndex = o[4], + HideCondition = o[6], + } + if o[1] then -- custom spawn + specialObjective.spawnList = {{ + Name = o[3], + Spawns = o[1], + Icon = o[2], + GetIconScale = _GetIconScale, + IconScale = _GetIconScale(), + }} + end + if o[5] then -- db ref + specialObjective.Type = o[5][1][1] + specialObjective.Id = o[5][1][2] + local spawnList = {} + + for _, ref in pairs(o[5]) do + for k, v in pairs(_QuestieQuest.objectiveSpawnListCallTable[ref[1]](ref[2], specialObjective)) do + -- we want to be able to override the icon in the corrections (e.g. Questie.ICON_TYPE_OBJECT on objects instead of Questie.ICON_TYPE_LOOT) + v.Icon = o[2] + spawnList[k] = v + end + end + + specialObjective.spawnList = spawnList + end + QO.SpecialObjectives[index] = specialObjective + end + end + + _QuestieDB.questCache[questId] = QO + return QO +end + +QuestieDB._CreatureLevelCache = {} +---@param quest Quest +---@return table @List of creature names with their min-max level and rank +function QuestieDB:GetCreatureLevels(quest) + if quest and QuestieDB._CreatureLevelCache[quest.Id] then + return QuestieDB._CreatureLevelCache[quest.Id] + end + local creatureLevels = {} + + local function _CollectCreatureLevels(npcIds) + for _, npcId in pairs(npcIds) do + local npc = QuestieDB:GetNPC(npcId) + if npc and not creatureLevels[npc.name] then + creatureLevels[npc.name] = {npc.minLevel, npc.maxLevel, npc.rank} + end + end + end + + if quest.objectives then + if quest.objectives[1] then -- Killing creatures + for _, creatureObjective in pairs(quest.objectives[1]) do + local npcId = creatureObjective[1] + _CollectCreatureLevels({npcId}) + end + end + if quest.objectives[3] then -- Looting items from creatures + for _, itemObjective in pairs(quest.objectives[3]) do + local itemId = itemObjective[1] + local npcIds = QuestieDB.QueryItemSingle(itemId, "npcDrops") + if npcIds then + _CollectCreatureLevels(npcIds) + end + end + end + end + if quest.Id then + QuestieDB._CreatureLevelCache[quest.Id] = creatureLevels + end + return creatureLevels +end + +local playerFaction = UnitFactionGroup("player") +local factionReactions = { + A = (playerFaction == "Alliance") or nil, + H = (playerFaction == "Horde") or nil, + AH = true, +} +-- +-- +--function __TEST() +-- local questsWithoutTriggerEnd = { +-- 869, +-- 944, +-- 1448, +-- 6185, +-- 9260, +-- 9261, +-- 9262, +-- 9263, +-- 9264, +-- 9265, +-- 12032, +-- 12036, +-- 12816, +-- 12817, +-- 13564, +-- 13639, +-- 13881, +-- 13961, +-- 14066, +-- 14165, +-- 14389, +-- 24452, +-- 24618, +-- 25081, +-- 25325, +-- 25621, +-- 25715, +-- 25930, +-- 26258, +-- 26512, +-- 26930, +-- 26975, +-- 27007, +-- 27044, +-- 27152, +-- 27341, +-- 27349, +-- 27610, +-- 27704, +-- 28228, +-- 28635, +-- 28732, +-- 29392, +-- 29415, +-- 29536, +-- 29539, +-- } +-- +-- local corrections = {} +-- +-- -- Read QuestieDB to check if the quest has a triggerEnd +-- for _, questId in pairs(questsWithoutTriggerEnd) do +-- local quest = QuestieDB.GetQuest(questId) +-- if (not quest) then +-- print("Quest " .. questId .. " not found in QuestieDB") +-- corrections[questId] = true +-- else +-- if quest.triggerEnd then +-- print("Quest " .. questId .. " has a triggerEnd") +-- else +-- print("Quest " .. questId .. " does not have a triggerEnd") +-- corrections[questId] = true +-- end +-- end +-- end +-- +-- Questie.db.global.__TEST = corrections +--end +local a = { + [869] = true, + [13564] = true, + [13639] = true, + [13881] = true, + [13961] = true, + [14165] = true, + + [27610] = true, + [27044] = true, + [26930] = true, + [14066] = true, + [28635] = true, + [25930] = true, + [27007] = true, + [14389] = true, + [27704] = true, + [24618] = true, + [26258] = true, + [26512] = true, + [29539] = true, + [27341] = true, + [29536] = true, + [29415] = true, + [29392] = true, + [28732] = true, + [28228] = true, + [27152] = true, + [27349] = true, + [24452] = true, + [25325] = true, + [26975] = true, + [25621] = true, + [25715] = true, + [25081] = true, +} + +---@param npcId number +---@return table +function QuestieDB:GetNPC(npcId) + if not npcId then + return nil + end + if _QuestieDB.npcCache[npcId] then + return _QuestieDB.npcCache[npcId] + end + + local rawdata = QuestieDB.QueryNPC(npcId, QuestieDB._npcAdapterQueryOrder) + if (not rawdata) then + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieDB:GetNPC] rawdata is nil for npcID:", npcId) + return nil + end + + local npcKeys = QuestieDB.npcKeys + local npc = { + id = npcId, + type = "monster", + } + for stringKey, intKey in pairs(npcKeys) do + npc[stringKey] = rawdata[intKey] + end + + local friendlyToFaction = rawdata[npcKeys.friendlyToFaction] + npc.friendly = (not friendlyToFaction) and true or factionReactions[friendlyToFaction] + + _QuestieDB.npcCache[npcId] = npc + return npc +end + +--[[ + https://github.com/cmangos/issues/wiki/AreaTable.dbc + Example to differentiate between Dungeon and Zone infront of a Dungeon: + 1337 Uldaman = The Dungeon (MapID ~= 0, AreaID = 0) + 1517 Uldaman = Cave infront of the Dungeon (MapID = 0, AreaID = 3 (Badlands)) + + Check `l10n.zoneLookup` for the available IDs +]] +---@param zoneId number +---@return table +function QuestieDB:GetQuestsByZoneId(zoneId) + if not zoneId then + return nil; + end + -- is in cache return that + if _QuestieDB.zoneCache[zoneId] then + return _QuestieDB.zoneCache[zoneId] + end + local zoneQuests = {}; + local alternativeZoneID = ZoneDB:GetAlternativeZoneId(zoneId) + -- loop over all quests to populate a zone + for qid, _ in pairs(QuestieDB.QuestPointers or QuestieDB.questData) do + local quest = QuestieDB.GetQuest(qid); + if quest then + if quest.zoneOrSort > 0 then + if (quest.zoneOrSort == zoneId or (alternativeZoneID and quest.zoneOrSort == alternativeZoneID)) then + zoneQuests[qid] = quest; + end + elseif quest.Starts.NPC and (not zoneQuests[qid]) then + local npc = QuestieDB:GetNPC(quest.Starts.NPC[1]); + if npc and npc.friendly and npc.spawns then + for zone, _ in pairs(npc.spawns) do + if zone == zoneId or (alternativeZoneID and zone == alternativeZoneID) then + zoneQuests[qid] = quest; + end + end + end + elseif quest.Starts.GameObject and (not zoneQuests[qid]) then + local obj = QuestieDB:GetObject(quest.Starts.GameObject[1]); + if obj and obj.spawns then + for zone, _ in pairs(obj.spawns) do + if zone == zoneId or (alternativeZoneID and zone == alternativeZoneID) then + zoneQuests[qid] = quest; + end + end + end + end + end + end + _QuestieDB.zoneCache[zoneId] = zoneQuests; + return zoneQuests; +end + +--------------------------------------------------------------------------------------------------- +-- Modifications to objectDB +function _QuestieDB:DeleteGatheringNodes() + local prune = { -- gathering nodes + 1617,1618,1619,1620,1621,1622,1623,1624,1628, -- herbs + + 1731,1732,1733,1734,1735,123848,150082,175404,176643,177388,324,150079,176645,2040,123310 -- mining + } + local objectSpawnsKey = QuestieDB.objectKeys.spawns + for i=1, #prune do + local id = prune[i] + QuestieDB.objectData[id][objectSpawnsKey] = nil + end +end + +--------------------------------------------------------------------------------------------------- +-- Modifications to questDB + +function _QuestieDB:CheckAchievementRequirements(questId) + -- So far the only Quests that we know of that requires an earned Achievement are the ones offered by: + -- https://www.wowhead.com/wotlk/npc=35094/crusader-silverdawn + -- Get Kraken (14108) + -- The Fate Of The Fallen (14107) + -- This NPC requires these earned Achievements baseed on a Players home faction: + -- https://www.wowhead.com/wotlk/achievement=2817/exalted-argent-champion-of-the-alliance + -- https://www.wowhead.com/wotlk/achievement=2816/exalted-argent-champion-of-the-horde + if questId == 14101 or questId == 14102 or questId == 14104 or questId == 14105 or questId == 14107 or questId == 14108 then + local retN = QuestieCompat.Is335 and 4 or 13 + if select(retN, GetAchievementInfo(2817)) or select(retN, GetAchievementInfo(2816)) then + return true + end + + return false + end +end + +function _QuestieDB:HideClassAndRaceQuests() + local questKeys = QuestieDB.questKeys + for _, entry in pairs(QuestieDB.questData) do + -- check requirements, set hidden flag if not met + local requiredClasses = entry[questKeys.requiredClasses] + if (requiredClasses) and (requiredClasses ~= 0) then + if (not QuestiePlayer.HasRequiredClass(requiredClasses)) then + entry.hidden = true + end + end + local requiredRaces = entry[questKeys.requiredRaces] + if (requiredRaces) and (requiredRaces ~= 0) and (requiredRaces ~= 255) then + if (not QuestiePlayer.HasRequiredRace(requiredRaces)) then + entry.hidden = true + end + end + end + Questie:Debug(Questie.DEBUG_DEVELOP, "Other class and race quests hidden"); +end + +-- This function is intended for usage with Gossip and Greeting frames, where there's a list of quests but no QuestIDs are +-- obtainable until entering the specific quest dialog. +-- This is a bruteforce method for obtaining a QuestID with no input other than a quest name, and the ID of the questgiver. +-- It compares the name of the quest entry with the names of every quest that questgiver can either start or end. +---@param name string? @The name of the quest entry +---@param questgiverGUID string? @Should be UnitGUID("questnpc") +---@param questStarter boolean @Should be True if this is an available quest, False if this is an "active" quest (quest ender) +---@return number +function QuestieDB.GetQuestIDFromName(name, questgiverGUID, questStarter) + local questID = 0 -- worst case, we end up returning an ID of 0 if we can't find a match; any function relying on this one should handle 0 cleanly + if questgiverGUID then + local questgiverID = tonumber(questgiverGUID:match("-(%d+)-%x+$"), 10) + local unit_type = strsplit("-", questgiverGUID) + local questsStarted + local questsEnded + if unit_type == "Creature" then -- if questgiver is an NPC + questsStarted = QuestieDB.QueryNPCSingle(questgiverID, "questStarts") + questsEnded = QuestieDB.QueryNPCSingle(questgiverID, "questEnds") + elseif unit_type == "GameObject" then -- if questgiver is an object (it's rare for an object to have a gossip/greeting frame, but Wanted Boards exist; see object 2713) + questsStarted = QuestieDB.QueryObjectSingle(questgiverID, "questStarts") + questsEnded = QuestieDB.QueryObjectSingle(questgiverID, "questEnds") + else + return questID; -- If the questgiver is not an NPC or object, bail! + end + -- iterate through every questEnds entry in our questgiver's DB, and check if each quest name matches this greeting frame entry + if questStarter == true then + if questsStarted then + for _, id in pairs(questsStarted) do + if (name == QuestieDB.QueryQuestSingle(id, "name")) and (QuestieDB.IsDoable(id)) then + -- the QuestieDB.IsDoable check is important to filter out identically named quests + questID = id + end + end + elseif Questie.IsSoD == false then -- don't print these errors in SoD, as we expect missing data when new quests release; debug offers will handle these scenarios instead + Questie:Error("Database mismatch! No entries found that match quest name. Please report this on Github or Discord!") + Questie:Error("Queststarter is: " .. unit_type .. " " .. questgiverID) + Questie:Error("Quest name is: " .. name) + Questie:Error("Client info is: " .. GetBuildInfo() .. "; " .. QuestieLib:GetAddonVersionString()) + end + else + if questsEnded then + for _, id in pairs(questsEnded) do + if (name == QuestieDB.QueryQuestSingle(id, "name")) and (QuestieDB.IsDoable(id)) and QuestiePlayer.currentQuestlog[id] then + questID = id + end + end + elseif Questie.IsSoD == false then -- don't print these errors in SoD, as we expect missing data when new quests release; debug offers will handle these scenarios instead + Questie:Error("Database mismatch! No entries found that match quest name. Please report this on Github or Discord!") + Questie:Error("Questender is: " .. unit_type .. " " .. questgiverID) + Questie:Error("Quest name is: " .. name) + Questie:Error("Client info is: " .. GetBuildInfo() .. "; " .. QuestieLib:GetAddonVersionString()) + end + end + end + return questID; +end + +QuestieDB.waypointPresets = { + ORGRIMS_HAMMER = {[ZoneDB.zoneIDs.ICECROWN]={{{62.37,30.60},{61.93,30.93},{61.48,31.24},{61.08,31.55},{60.74,31.92},{60.46,32.44},{60.26,33.11},{60.14,33.85},{60.11,34.63},{60.17,35.35},{60.31,36.01},{60.56,36.66},{60.84,37.33},{61.15,38.00},{61.44,38.67},{61.71,39.28},{62.00,39.92},{62.31,40.55},{62.60,41.20},{62.90,41.83},{63.05,42.20},{63.33,42.85},{63.58,43.53},{63.85,44.19},{64.08,44.86},{64.33,45.50},{64.45,45.87},{64.69,46.56},{64.94,47.21},{65.16,47.87},{65.43,48.51},{65.71,49.15},{66.03,49.77},{66.36,50.46},{66.72,51.10},{67.07,51.67},{67.41,52.08},{67.82,52.37},{68.31,52.47},{68.80,52.38},{69.23,51.98},{69.45,51.56},{69.57,51.13},{69.67,50.59},{69.73,49.96},{69.77,49.26},{69.79,48.48},{69.80,47.62},{69.79,46.68},{69.79,45.68},{69.78,44.90},{69.78,44.25},{69.76,43.55},{69.75,42.80},{69.72,42.01},{69.70,41.20},{69.67,40.38},{69.64,39.54},{69.61,38.71},{69.58,37.88},{69.55,37.07},{69.52,36.28},{69.49,35.54},{69.46,34.83},{69.45,34.18},{69.42,33.50},{69.41,32.46},{69.42,31.52},{69.45,30.67},{69.47,29.92},{69.48,29.25},{69.46,28.65},{69.42,28.12},{69.35,27.83},{69.11,27.19},{68.71,26.77},{68.23,26.54},{67.71,26.51},{67.24,26.55},{66.81,26.76},{66.35,27.09},{65.90,27.52},{65.44,27.95},{65.01,28.39},{64.58,28.73},{64.16,29.10},{63.74,29.43},{63.34,29.79},{62.94,30.11},{62.65,30.37},{62.37,30.60}}}}, + THE_SKYBREAKER = {[ZoneDB.zoneIDs.ICECROWN]={{{63.59,52.34},{63.44,51.88},{63.30,51.52},{63.15,51.19},{63.01,50.85},{62.85,50.52},{62.68,50.17},{62.50,49.78},{62.31,49.36},{62.09,48.88},{61.86,48.33},{61.81,48.20},{61.67,47.88},{61.52,47.52},{61.37,47.13},{61.19,46.74},{61.02,46.32},{60.84,45.88},{60.65,45.44},{60.46,44.99},{60.28,44.53},{60.09,44.08},{59.90,43.63},{59.72,43.18},{59.54,42.75},{59.36,42.34},{59.20,41.94},{59.04,41.56},{58.89,41.22},{58.75,40.87},{58.52,40.30},{58.32,39.77},{58.14,39.27},{57.97,38.80},{57.81,38.39},{57.65,38.03},{57.49,37.72},{57.31,37.50},{57.12,37.34},{56.87,37.29},{56.57,37.39},{56.27,37.60},{55.97,37.88},{55.72,38.23},{55.53,38.61},{55.43,38.95},{55.43,39.09},{55.46,39.49},{55.52,39.92},{55.62,40.39},{55.76,40.88},{55.89,41.38},{56.02,41.85},{56.17,42.25},{56.33,42.68},{56.51,43.13},{56.70,43.56},{56.88,43.99},{57.05,44.39},{57.22,44.74},{57.42,45.15},{57.64,45.52},{57.83,45.81},{58.03,46.14},{58.23,46.56},{58.41,46.90},{58.60,47.25},{58.80,47.62},{59.00,48.03},{59.19,48.46},{59.36,48.84},{59.53,49.22},{59.69,49.63},{59.86,50.04},{60.03,50.46},{60.19,50.90},{60.36,51.32},{60.51,51.74},{60.65,52.17},{60.79,52.59},{60.94,53.02},{61.07,53.46},{61.23,53.89},{61.39,54.30},{61.55,54.72},{61.70,55.18},{61.88,55.65},{62.05,56.14},{62.23,56.58},{62.43,56.95},{62.65,57.21},{62.87,57.30},{62.95,57.27},{63.22,57.16},{63.52,56.97},{63.81,56.68},{64.07,56.32},{64.26,55.91},{64.33,55.47},{64.30,55.11},{64.25,54.72},{64.16,54.30},{64.04,53.84},{63.91,53.36},{63.76,52.88},{63.59,52.34}}}}, +} + + +-- ========================= +-- Ascension custom DB merge +-- ========================= +local function _Asc_LoadIfString(data, label) + if not data then return nil end + if type(data) == "string" then + local fn, err = loadstring(data) + if not fn then + if Questie and Questie.Debug then + Questie:Debug(Questie.DEBUG_CRITICAL, "[AscensionDB] loadstring failed for " .. tostring(label) .. ": " .. tostring(err)) + end + return nil + end + local ok, tbl = pcall(fn) + if not ok then + if Questie and Questie.Debug then + Questie:Debug(Questie.DEBUG_CRITICAL, "[AscensionDB] executing chunk failed for " .. tostring(label) .. ": " .. tostring(tbl)) + end + return nil + end + return tbl + end + return data +end + +local function _Asc_MergeInto(dst, src) + if type(dst) ~= "table" or type(src) ~= "table" then return end + for id, entry in pairs(src) do + dst[id] = entry -- overwrite = true + end +end + +function QuestieDB:LoadAscensionQuestData() + local A = QuestieLoader:ImportModule("AscensionDB") + if not A then return end + local data = _Asc_LoadIfString(A.questData, "AscensionDB.questData") + QuestieDB.questDataOverrides = QuestieDB.questDataOverrides or {} + _Asc_MergeInto(QuestieDB.questDataOverrides, data) +end + +function QuestieDB:LoadAscensionNpcData() + local A = QuestieLoader:ImportModule("AscensionDB") + if not A then return end + local data = _Asc_LoadIfString(A.npcData, "AscensionDB.npcData") + QuestieDB.npcDataOverrides = QuestieDB.npcDataOverrides or {} + _Asc_MergeInto(QuestieDB.npcDataOverrides, data) +end + +function QuestieDB:LoadAscensionObjectData() + local A = QuestieLoader:ImportModule("AscensionDB") + if not A then return end + local data = _Asc_LoadIfString(A.objectData, "AscensionDB.objectData") + QuestieDB.objectDataOverrides = QuestieDB.objectDataOverrides or {} + _Asc_MergeInto(QuestieDB.objectDataOverrides, data) +end + +function QuestieDB:LoadAscensionItemData() + local A = QuestieLoader:ImportModule("AscensionDB") + if not A then return end + local data = _Asc_LoadIfString(A.itemData, "AscensionDB.itemData") + QuestieDB.itemDataOverrides = QuestieDB.itemDataOverrides or {} + _Asc_MergeInto(QuestieDB.itemDataOverrides, data) +end + + +return QuestieDB diff --git a/.history/Database/QuestieDB_20260222030203.lua b/.history/Database/QuestieDB_20260222030203.lua new file mode 100644 index 0000000..8ab350b --- /dev/null +++ b/.history/Database/QuestieDB_20260222030203.lua @@ -0,0 +1,1875 @@ +---@class QuestieDB +local QuestieDB = QuestieLoader:CreateModule("QuestieDB") + +---@type QuestieDBPrivate +QuestieDB.private = QuestieDB.private or {} + +---@class QuestieDBPrivate +local _QuestieDB = QuestieDB.private + +------------------------- +--Import modules. +------------------------- +---@type QuestieLib +local QuestieLib = QuestieLoader:ImportModule("QuestieLib") +---@type QuestiePlayer +local QuestiePlayer = QuestieLoader:ImportModule("QuestiePlayer") +---@type QuestieCorrections +local QuestieCorrections = QuestieLoader:ImportModule("QuestieCorrections") +---@type QuestieProfessions +local QuestieProfessions = QuestieLoader:ImportModule("QuestieProfessions") +---@type DailyQuests +local DailyQuests = QuestieLoader:ImportModule("DailyQuests") +---@type QuestieReputation +local QuestieReputation = QuestieLoader:ImportModule("QuestieReputation") +---@type QuestieEvent +local QuestieEvent = QuestieLoader:ImportModule("QuestieEvent") +---@type DBCompiler +local QuestieDBCompiler = QuestieLoader:ImportModule("DBCompiler") +---@type ZoneDB +local ZoneDB = QuestieLoader:ImportModule("ZoneDB") +---@type l10n +local l10n = QuestieLoader:ImportModule("l10n") +---@type QuestLogCache +local QuestLogCache = QuestieLoader:ImportModule("QuestLogCache") + +---@type QuestieQuest +local QuestieQuest = QuestieLoader:ImportModule("QuestieQuest") +---@type QuestieQuestPrivate +local _QuestieQuest = QuestieQuest.private + +--- A list of quests that will never be available, used to quickly skip quests. +---@alias AutoBlacklistString "rep"|"skill"|"race"|"class" +---@type table +QuestieDB.autoBlacklist = {} + +local tinsert = table.insert +local bitband = bit.band + +-- questFlags https://github.com/cmangos/issues/wiki/Quest_template#questflags +local QUEST_FLAGS_DAILY = 4096 +local QUEST_FLAGS_WEEKLY = 32768 +-- Pre calculated 2 * QUEST_FLAGS, for testing a bit flag +local QUEST_FLAGS_DAILY_X2 = 2 * QUEST_FLAGS_DAILY +local QUEST_FLAGS_WEEKLY_X2 = 2 * QUEST_FLAGS_WEEKLY +--- COMPATIBILITY --- +local WOW_PROJECT_ID = QuestieCompat.WOW_PROJECT_ID +local WOW_PROJECT_CLASSIC = QuestieCompat.WOW_PROJECT_CLASSIC +local C_QuestLog = QuestieCompat.C_QuestLog +local GetQuestTagInfo = QuestieCompat.GetQuestTagInfo +local IsPlayerSpell = QuestieCompat.IsPlayerSpell +local IsSpellKnownOrOverridesKnown = QuestieCompat.IsSpellKnownOrOverridesKnown +local IsQuestFlaggedCompleted = QuestieCompat.IsQuestFlaggedCompleted or C_QuestLog.IsQuestFlaggedCompleted + +--- Tag corrections for quests for which the API returns the wrong values. +--- Strucute: [questId] = {tagId, "questType"} +---@type table +local questTagCorrections = { + [373] = {81, "Dungeon"}, + [4146] = {81, "Dungeon"}, + [5342] = {0, ""}, + [5344] = {0, ""}, + [6846] = {41, "PvP"}, + [6901] = {41, "PvP"}, + [7001] = {41, "PvP"}, + [7027] = {41, "PvP"}, + [7161] = {41, "PvP"}, + [7162] = {41, "PvP"}, + [7841] = {0, ""}, + [7842] = {0, ""}, + [7843] = {0, ""}, + [8122] = {41, "PvP"}, + [8386] = {41, "PvP"}, + [8404] = {41, "PvP"}, + [8405] = {41, "PvP"}, + [8406] = {41, "PvP"}, + [8407] = {41, "PvP"}, + [8408] = {41, "PvP"}, + [12170] = {41, "PvP"}, + [12244] = {41, "PvP"}, + [12268] = {41, "PvP"}, + [12270] = {41, "PvP"}, + [12280] = {41, "PvP"}, + [12284] = {41, "PvP"}, + [12288] = {41, "PvP"}, + [12289] = {41, "PvP"}, + [12296] = {41, "PvP"}, + [12314] = {41, "PvP"}, + [12315] = {41, "PvP"}, + [12316] = {41, "PvP"}, + [12317] = {41, "PvP"}, + [12323] = {41, "PvP"}, + [12324] = {41, "PvP"}, + [12432] = {41, "PvP"}, + [12433] = {41, "PvP"}, + [12434] = {41, "PvP"}, + [12437] = {41, "PvP"}, + [12443] = {41, "PvP"}, + [12446] = {41, "PvP"}, + [13199] = {41, "PvP"}, + [78680] = {1, "Elite"}, + [78681] = {1, "Elite"}, + [78684] = {1, "Elite"}, + [80098] = {1, "Elite"}, + [80147] = {1, "Elite"}, + [80148] = {1, "Elite"}, + [80149] = {1, "Elite"}, + [80150] = {1, "Elite"}, + [80151] = {1, "Elite"}, + [80152] = {1, "Elite"}, + [90014] = {1, "Elite"}, + [90054] = {1, "Elite"}, + [90070] = {1, "Elite"}, + [90081] = {1, "Elite"}, + [90091] = {1, "Elite"}, + [90094] = {1, "Elite"}, + [90113] = {1, "Elite"}, + [90114] = {1, "Elite"}, + [90116] = {1, "Elite"}, + [90119] = {1, "Elite"}, + [90122] = {1, "Elite"}, + [90151] = {1, "Elite"}, + [90152] = {1, "Elite"}, + [90159] = {1, "Elite"}, + [90163] = {1, "Elite"}, + [90166] = {1, "Elite"}, + [90169] = {1, "Elite"}, + [90175] = {1, "Elite"}, + [90190] = {1, "Elite"}, + [90202] = {1, "Elite"}, + [90204] = {1, "Elite"}, + [90221] = {1, "Elite"}, + [90225] = {1, "Elite"}, + [90230] = {1, "Elite"}, + [90269] = {1, "Elite"}, + [90271] = {1, "Elite"}, +} +-- 3.3.5 compatibility: fake Item API if missing (Retail style) +if not Item then + Item = {} +end + +if not Item.CreateFromItemID then + function Item:CreateFromItemID(itemID) + local obj = {} + + function obj:ContinueOnItemLoad(callback) + -- In 3.3.5 there is no async loading, so call the callback immediately + if callback then + callback() + end + end + + function obj:GetItemName() + local name = GetItemInfo(itemID) + return name or ("item:" .. tostring(itemID)) + end + + return obj + end +end + +-- race bitmask data, for easy access +local VANILLA = WOW_PROJECT_ID == WOW_PROJECT_CLASSIC + +QuestieDB.raceKeys = { + ALL_ALLIANCE = VANILLA and 77 or 1101, + ALL_HORDE = VANILLA and 178 or 690, + NONE = 0, + + HUMAN = 1, + ORC = 2, + DWARF = 4, + NIGHT_ELF = 8, + UNDEAD = 16, + TAUREN = 32, + GNOME = 64, + TROLL = 128, + --GOBLIN = 256, + BLOOD_ELF = 512, + DRAENEI = 1024 +} + +-- Combining these with "and" makes the order matter +-- 1 and 2 ~= 2 and 1 +QuestieDB.classKeys = { + NONE = 0, + + WARRIOR = 1, + PALADIN = 2, + HUNTER = 4, + ROGUE = 8, + PRIEST = 16, + DEATH_KNIGHT = 32, + SHAMAN = 64, + MAGE = 128, + WARLOCK = 256, + DRUID = 1024 +} + +QuestieDB.specialFlags = { + REPEATABLE = 1, +} + +_QuestieDB.questCache = {}; -- stores quest objects so they dont need to be regenerated +_QuestieDB.itemCache = {}; +_QuestieDB.npcCache = {}; +_QuestieDB.objectCache = {}; +_QuestieDB.zoneCache = {}; + +---A Memoized table for function Quest:CheckRace +--- +---Usage: checkRace[requiredRaces] +---@type table +local checkRace +---A Memoized table for function Quest:CheckClass +--- +---Usage: checkRace[requiredClasses] +---@type table +local checkClass + +---QuestieCorrections.hiddenQuests +local QuestieCorrectionshiddenQuests +---Questie.db.char.hidden +local Questiedbcharhidden + +QuestieDB.itemDataOverrides = {} +QuestieDB.npcDataOverrides = {} +QuestieDB.objectDataOverrides = {} +QuestieDB.questDataOverrides = {} + +QuestieDB.activeChildQuests = {} + + +function QuestieDB:Initialize() + + StaticPopupDialogs["QUESTIE_DATABASE_ERROR"] = { -- /run StaticPopup_Show ("QUESTIE_DATABASE_ERROR") + text = l10n("There was a problem initializing Questie's database. This can usually be fixed by recompiling the database."), + button1 = l10n("Recompile Database"), + button2 = l10n("Don't show again"), + OnAccept = function() + if Questie.IsSoD then + Questie.db.global.sod.dbIsCompiled = false + else + Questie.db.global.dbIsCompiled = false + end + ReloadUI() + end, + OnDecline = function() + Questie.db.profile.disableDatabaseWarnings = true + end, + OnShow = function(self) + self:SetFrameStrata("TOOLTIP") + end, + timeout = 0, + whileDead = true, + hideOnEscape = false, + preferredIndex = 3 + } + + -- For now we store both, the SoD database and the Era/HC database + local npcBin, npcPtrs, questBin, questPtrs, objBin, objPtrs, itemBin, itemPtrs + if Questie.IsSoD then + npcBin = Questie.db.global.sod.npcBin + npcPtrs = Questie.db.global.sod.npcPtrs + questBin = Questie.db.global.sod.questBin + questPtrs = Questie.db.global.sod.questPtrs + objBin = Questie.db.global.sod.objBin + objPtrs = Questie.db.global.sod.objPtrs + itemBin = Questie.db.global.sod.itemBin + itemPtrs = Questie.db.global.sod.itemPtrs + else + npcBin = Questie.db.global.npcBin + npcPtrs = Questie.db.global.npcPtrs + questBin = Questie.db.global.questBin + questPtrs = Questie.db.global.questPtrs + objBin = Questie.db.global.objBin + objPtrs = Questie.db.global.objPtrs + itemBin = Questie.db.global.itemBin + itemPtrs = Questie.db.global.itemPtrs + end + + QuestieDB.QueryNPC = QuestieDBCompiler:GetDBHandle(npcBin, npcPtrs, QuestieDBCompiler:BuildSkipMap(QuestieDB.npcCompilerTypes, QuestieDB.npcCompilerOrder), QuestieDB.npcKeys, QuestieDB.npcDataOverrides) + QuestieDB.QueryQuest = QuestieDBCompiler:GetDBHandle(questBin, questPtrs, QuestieDBCompiler:BuildSkipMap(QuestieDB.questCompilerTypes, QuestieDB.questCompilerOrder), QuestieDB.questKeys, QuestieDB.questDataOverrides) + QuestieDB.QueryObject = QuestieDBCompiler:GetDBHandle(objBin, objPtrs, QuestieDBCompiler:BuildSkipMap(QuestieDB.objectCompilerTypes, QuestieDB.objectCompilerOrder), QuestieDB.objectKeys, QuestieDB.objectDataOverrides) + QuestieDB.QueryItem = QuestieDBCompiler:GetDBHandle(itemBin, itemPtrs, QuestieDBCompiler:BuildSkipMap(QuestieDB.itemCompilerTypes, QuestieDB.itemCompilerOrder), QuestieDB.itemKeys, QuestieDB.itemDataOverrides) + + QuestieDB._QueryQuestSingle = QuestieDB.QueryQuest.QuerySingle + QuestieDB._QueryNPCSingle = QuestieDB.QueryNPC.QuerySingle + QuestieDB._QueryObjectSingle = QuestieDB.QueryObject.QuerySingle + QuestieDB._QueryItemSingle = QuestieDB.QueryItem.QuerySingle + + QuestieDB.NPCPointers = QuestieDB.QueryNPC.pointers + QuestieDB.QuestPointers = QuestieDB.QueryQuest.pointers + QuestieDB.ObjectPointers = QuestieDB.QueryObject.pointers + QuestieDB.ItemPointers = QuestieDB.QueryItem.pointers + + QuestieDB._QueryNPC = QuestieDB.QueryNPC.Query + QuestieDB._QueryQuest = QuestieDB.QueryQuest.Query + QuestieDB._QueryObject = QuestieDB.QueryObject.Query + QuestieDB._QueryItem = QuestieDB.QueryItem.Query + + QuestieDB.QueryNPC = QuestieDB._QueryNPC + QuestieDB.QueryQuest = QuestieDB._QueryQuest + QuestieDB.QueryObject = QuestieDB._QueryObject + QuestieDB.QueryItem = QuestieDB._QueryItem + + QuestieDB.QueryQuestSingle = QuestieDB._QueryQuestSingle + QuestieDB.QueryNPCSingle = QuestieDB._QueryNPCSingle + QuestieDB.QueryObjectSingle = QuestieDB._QueryObjectSingle + QuestieDB.QueryItemSingle = QuestieDB._QueryItemSingle + + -- data has been corrected, ensure cache is empty (something might have accessed the api before questie initialized) + _QuestieDB.questCache = {}; + _QuestieDB.itemCache = {}; + _QuestieDB.npcCache = {}; + _QuestieDB.objectCache = {}; + _QuestieDB.zoneCache = {}; + + --? This improves performance a lot, the regular functions still work but this is much faster because i caches + checkRace = QuestieLib:TableMemoizeFunction(QuestiePlayer.HasRequiredRace) + checkClass = QuestieLib:TableMemoizeFunction(QuestiePlayer.HasRequiredClass) + --? Set the localized versions of these. + QuestieCorrectionshiddenQuests = QuestieCorrections.hiddenQuests + Questiedbcharhidden = Questie.db.char.hidden +end + +function QuestieDB:GetObject(objectId) + if not objectId then + return nil + end + if _QuestieDB.objectCache[objectId] then + return _QuestieDB.objectCache[objectId]; + end + + --local rawdata = QuestieDB.objectData[objectId]; + local rawdata = QuestieDB.QueryObject(objectId, QuestieDB._objectAdapterQueryOrder) + + if not rawdata then + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieDB:GetObject] rawdata is nil for objectID:", objectId) + return nil + end + + local obj = { + id = objectId, + type = "object" + } + + for stringKey, intKey in pairs(QuestieDB.objectKeys) do + obj[stringKey] = rawdata[intKey] + end + --_QuestieDB.objectCache[objectId] = obj; + return obj; +end + +function QuestieDB:GetItem(itemId) + if (not itemId) or (itemId == 0) then + return nil + end + if _QuestieDB.itemCache[itemId] then + return _QuestieDB.itemCache[itemId]; + end + + local rawdata = QuestieDB.QueryItem(itemId, QuestieDB._itemAdapterQueryOrder) + + if not rawdata then + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieDB:GetItem] rawdata is nil for itemID:", itemId) + return nil + end + + local item = { + Id = itemId, + Sources = {}, + Hidden = QuestieCorrections.questItemBlacklist[itemId] + } + + for stringKey, intKey in pairs(QuestieDB.itemKeys) do + item[stringKey] = rawdata[intKey] + end + + local sources = item.Sources + + if rawdata[QuestieDB.itemKeys.npcDrops] then + for _, npcId in pairs(rawdata[QuestieDB.itemKeys.npcDrops]) do + sources[#sources+1] = { + Id = npcId, + Type = "monster", + } + end + end + + if rawdata[QuestieDB.itemKeys.vendors] then + for _, npcId in pairs(rawdata[QuestieDB.itemKeys.vendors]) do + sources[#sources+1] = { + Id = npcId, + Type = "monster", + } + end + end + + if rawdata[QuestieDB.itemKeys.objectDrops] then + for _, v in pairs(rawdata[QuestieDB.itemKeys.objectDrops]) do + sources[#sources+1] = { + Id = v, + Type = "object", + } + end + end + + return item +end + +---@param questId number +---@return boolean +function QuestieDB.IsRepeatable(questId) + local flags = QuestieDB.QueryQuestSingle(questId, "specialFlags") + return flags and bitband(flags, 1) ~= 0 +end + +---@param questId number +---@return boolean +function QuestieDB.IsDailyQuest(questId) + local flags = QuestieDB.QueryQuestSingle(questId, "questFlags") + -- test a bit flag: (value % (2*flag) >= flag) + return flags and (flags % QUEST_FLAGS_DAILY_X2) >= QUEST_FLAGS_DAILY +end + +---@param questId number +---@return boolean +function QuestieDB.IsWeeklyQuest(questId) + local flags = QuestieDB.QueryQuestSingle(questId, "questFlags") + -- test a bit flag: (value % (2*flag) >= flag) + return flags and (flags % QUEST_FLAGS_WEEKLY_X2) >= QUEST_FLAGS_WEEKLY +end + +---@param questId number +---@return boolean +function QuestieDB.IsDungeonQuest(questId) + local questType, _ = QuestieDB.GetQuestTagInfo(questId) + return questType == 81 +end + +---@param questId number +---@return boolean +function QuestieDB.IsRaidQuest(questId) + local questType, _ = QuestieDB.GetQuestTagInfo(questId) + return questType == 62 +end + +---@param questId number +---@return boolean +function QuestieDB.IsPvPQuest(questId) + local questType, _ = QuestieDB.GetQuestTagInfo(questId) + return questType == 41 +end + +---@param questId number +---@return boolean +function QuestieDB.IsGroupQuest(questId) + local questType, _ = QuestieDB.GetQuestTagInfo(questId) + return questType == 1 +end + +--[[ Commented out because not used anywhere +---@param questId number +---@return boolean +function QuestieDB:IsAQWarEffortQuest(questId) + return QuestieQuestBlacklist.AQWarEffortQuests[questId] +end +]]-- + +---@param class string +---@return number +function QuestieDB:GetZoneOrSortForClass(class) + return QuestieDB.sortKeys[class] +end + +--- Wrapper function for the GetQuestTagInfo API to correct +--- quests that are falsely marked by Blizzard +---@param questId number +---@return number|nil questType, string|nil questTag +function QuestieDB.GetQuestTagInfo(questId) + if questTagCorrections[questId] then + return questTagCorrections[questId][1], questTagCorrections[questId][2] + end + local questType, questTag = GetQuestTagInfo(questId) + + return questType, questTag +end + +---@param questId number +---@return boolean +function QuestieDB.IsActiveEventQuest(questId) + --! If you edit the logic here, also edit in QuestieDB:IsLevelRequirementsFulfilled + return QuestieEvent.activeQuests[questId] == true +end + +---@param exclusiveTo table +---@return boolean +function QuestieDB:IsExclusiveQuestInQuestLogOrComplete(exclusiveTo) + if (not exclusiveTo) then + return false + end + + for _, exId in pairs(exclusiveTo) do + if Questie.db.char.complete[exId] then + return true + end + end + return false +end + +---@param questId QuestId +---@param minLevel Level @The level a quest must have at least to be shown +---@param maxLevel Level @The level a quest can have at most to be shown +---@param playerLevel Level? @Pass player level to avoid calling UnitLevel or to use custom level +---@return boolean +function QuestieDB.IsLevelRequirementsFulfilled(questId, minLevel, maxLevel, playerLevel) + playerLevel = playerLevel or QuestiePlayer.GetPlayerLevel() + + local level, requiredLevel, requiredMaxLevel = QuestieLib.GetTbcLevel(questId, playerLevel) + requiredMaxLevel = requiredMaxLevel or 0 + --* QuestiePlayer.currentQuestlog[parentQuestId] logic is from QuestieDB.IsParentQuestActive, if you edit here, also edit there + local parentQuestId = QuestieDB.QueryQuestSingle(questId, "parentQuest") + if parentQuestId and QuestiePlayer.currentQuestlog[parentQuestId] then + -- If the quest is in the player's log already, there's no need to do any logic here, it must already be available + return true + end + + --* QuestieEvent.activeQuests[questId] logic is from QuestieDB.IsParentQuestActive, if you edit here, also edit there + if (Questie.db.profile.lowLevelStyle ~= Questie.LOWLEVEL_RANGE) and + minLevel > requiredLevel and + QuestieEvent.activeQuests[questId] then + return true + end + + if (Questie.IsSoD == true) and (QuestieDB.IsSoDRuneQuest(questId) == true) and (requiredLevel <= playerLevel) then + -- Season of Discovery Rune quests are still shown when trivial + return true + end + + if maxLevel >= level then + if (Questie.db.profile.lowLevelStyle ~= Questie.LOWLEVEL_ALL) and minLevel > level then + -- The quest level is too low and trivial quests are not shown + return false + end + else + if (Questie.db.profile.lowLevelStyle == Questie.LOWLEVEL_RANGE) or maxLevel < requiredLevel then + -- Either an absolute level range is set and maxLevel < level OR the maxLevel is manually set to a lower value + return false + end + end + + if maxLevel < requiredLevel then + -- Either the players level is not high enough or the maxLevel is manually set to a lower value + return false + end + + if requiredMaxLevel ~= 0 and playerLevel > requiredMaxLevel then + -- The players level exceeds the requiredMaxLevel of a quest + return false + end + + return true +end + +---@param parentID number +---@return boolean +function QuestieDB.IsParentQuestActive(parentID) + --! If you edit the logic here, also edit in QuestieDB:IsLevelRequirementsFulfilled + if (not parentID) or (parentID == 0) then + return false + end + if QuestiePlayer.currentQuestlog[parentID] then + return true + end + return false +end + +---@param preQuestGroup table +---@return boolean +function QuestieDB:IsPreQuestGroupFulfilled(preQuestGroup) + if not preQuestGroup then + return true + end + for preQuestIndex=1, #preQuestGroup do + -- If a quest is not complete and no exlusive quest is complete, the requirement is not fulfilled + if not Questie.db.char.complete[preQuestGroup[preQuestIndex]] then + local preQuest = QuestieDB.QueryQuestSingle(preQuestGroup[preQuestIndex], "exclusiveTo") + if (not preQuest) then + return false + end + + local anyExlusiveFinished = false + for i=1, #preQuest do + if Questie.db.char.complete[preQuest[i]] then + anyExlusiveFinished = true + end + end + if not anyExlusiveFinished then + return false + end + end + end + -- All preQuests are complete + return true +end + +---@param preQuestSingle number[] +---@return boolean +function QuestieDB:IsPreQuestSingleFulfilled(preQuestSingle) + if (not preQuestSingle) then + return true + end + for preQuestIndex=1, #preQuestSingle do + -- If a quest is complete the requirement is fulfilled + if Questie.db.char.complete[preQuestSingle[preQuestIndex]] then + return true + end + end + -- No preQuest is complete + return false +end + +---@param questId number +---@param debugPrint boolean? -- if true, IsDoable will print conclusions to debug channel +---@return boolean +function QuestieDB.IsDoable(questId, debugPrint) + + --! Before changing any logic in QuestieDB.IsDoable, make sure + --! to mirror the same logic to QuestieDB.IsDoableVerbose! + + -- IsDoable determines if the player is currently eligible for + -- a quest, and returns that result as true/false in order to + -- programmatically show/hide quests and determine further logic. + + -- IsDoableVerbose does the same logic, but returns human-readable + -- explanations as a string for display in the UI. + + -- These functions are maintained separately for performance, + -- because IsDoable is often called in a loop through every + -- quest in the DB in order to update icons, while + -- IsDoableVerbose is only called manually by the user. + + -- These are localized in the init function + if QuestieCorrectionshiddenQuests[questId] then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Quest " .. questId .. " is hidden automatically!") end + return false + end + + if Questiedbcharhidden[questId] then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Quest " .. questId .. " is hidden manually!") end + return false + end + + if C_QuestLog.IsOnQuest(questId) == true then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Quest " .. questId .. " is eligible because Player is on the quest!") end + return true + end + + if QuestieDB.activeChildQuests[questId] then -- The parent quest is active, so this quest is doable + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Quest " .. questId .. " is eligible because it's a child quest and the parent is active!") end + return true + -- this scenario actually returns true, so it skips the rest of the later checks, because + -- if we're on the parent quest then we implicitly know all other requirements are met + end + + local requiredRaces = QuestieDB.QueryQuestSingle(questId, "requiredRaces") + if (requiredRaces and not checkRace[requiredRaces]) then + QuestieDB.autoBlacklist[questId] = "race" + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Race requirement not fulfilled for quest " .. questId) end + return false + end + + -- Check the preQuestSingle field where just one of the required quests has to be complete for a quest to show up + local preQuestSingle = QuestieDB.QueryQuestSingle(questId, "preQuestSingle") + if preQuestSingle then + local isPreQuestSingleFulfilled = QuestieDB:IsPreQuestSingleFulfilled(preQuestSingle) + if not isPreQuestSingleFulfilled then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Pre-quest requirement not fulfilled for quest " .. questId) end + return false + end + end + + local requiredClasses = QuestieDB.QueryQuestSingle(questId, "requiredClasses") + if (requiredClasses and not checkClass[requiredClasses]) then + QuestieDB.autoBlacklist[questId] = "class" + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Class requirement not fulfilled for quest " .. questId) end + return false + end + + local requiredMinRep = QuestieDB.QueryQuestSingle(questId, "requiredMinRep") + local requiredMaxRep = QuestieDB.QueryQuestSingle(questId, "requiredMaxRep") + if (requiredMinRep or requiredMaxRep) then + local aboveMinRep, hasMinFaction, belowMaxRep, hasMaxFaction = QuestieReputation:HasFactionAndReputationLevel(requiredMinRep, requiredMaxRep) + if (not ((aboveMinRep and hasMinFaction) and (belowMaxRep and hasMaxFaction))) then + --- If we haven't got the faction for min or max we blacklist it + if not hasMinFaction or not hasMaxFaction then -- or not belowMaxRep -- This is something we could have done, but would break if you rep downwards + QuestieDB.autoBlacklist[questId] = "rep" + end + + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Player does not meet reputation requirements for quest " .. questId) end + return false + end + end + + local requiredSkill = QuestieDB.QueryQuestSingle(questId, "requiredSkill") + if (requiredSkill) then + local hasProfession, hasSkillLevel = QuestieProfessions:HasProfessionAndSkillLevel(requiredSkill) + if (not (hasProfession and hasSkillLevel)) then + --? We haven't got the profession so we blacklist it. + if(not hasProfession) then + QuestieDB.autoBlacklist[questId] = "skill" + end + + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Player does not meet profession requirements for quest " .. questId) end + return false + end + end + + --? PreQuestGroup and PreQuestSingle are mutualy exclusive to eachother and preQuestSingle is more prevalent + --? Only try group if single does not exist. + if not preQuestSingle then + -- Check the preQuestGroup field where every required quest has to be complete for a quest to show up + local preQuestGroup = QuestieDB.QueryQuestSingle(questId, "preQuestGroup") + if preQuestGroup then + local isPreQuestGroupFulfilled = QuestieDB:IsPreQuestGroupFulfilled(preQuestGroup) + if not isPreQuestGroupFulfilled then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Group pre-quest requirement not fulfilled for quest " .. questId) end + return false + end + end + end + + local parentQuest = QuestieDB.QueryQuestSingle(questId, "parentQuest") + if parentQuest and parentQuest ~= 0 then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Quest " .. questId .. " has an inactive parent quest") end + return false + end + + local nextQuestInChain = QuestieDB.QueryQuestSingle(questId, "nextQuestInChain") + if nextQuestInChain and nextQuestInChain ~= 0 then + if Questie.db.char.complete[nextQuestInChain] or QuestiePlayer.currentQuestlog[nextQuestInChain] then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Follow up quests already completed or in the quest log for quest " .. questId) end + return false + end + end + + -- Check if a quest which is exclusive to the current has already been completed or accepted + -- If yes the current quest can't be accepted + local ExclusiveQuestGroup = QuestieDB.QueryQuestSingle(questId, "exclusiveTo") + if ExclusiveQuestGroup then -- fix (DO NOT REVERT, tested thoroughly) + for _, v in pairs(ExclusiveQuestGroup) do + if Questie.db.char.complete[v] or QuestiePlayer.currentQuestlog[v] then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Player has completed a quest exclusive with quest " .. questId) end + return false + end + end + end + + if (not DailyQuests:IsActiveDailyQuest(questId)) then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Quest " .. questId .. " is a daily quest which isn't active today!") end + return false + end + + local requiredSpecialization = QuestieDB.QueryQuestSingle(questId, "requiredSpecialization") + if (requiredSpecialization) and (requiredSpecialization > 0) then + local hasSpecialization = QuestieProfessions:HasSpecialization(requiredSpecialization) + if (not hasSpecialization) then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Player does not meet profession specialization requirements for quest " .. questId) end + return false + end + end + + local requiredSpell = QuestieDB.QueryQuestSingle(questId, "requiredSpell") + if (requiredSpell) and (requiredSpell ~= 0) then + local hasSpell = IsSpellKnownOrOverridesKnown(math.abs(requiredSpell)) + local hasProfSpell = IsPlayerSpell(math.abs(requiredSpell)) + if (requiredSpell > 0) and (not hasSpell) and (not hasProfSpell) then --if requiredSpell is positive, we make the quest ineligible if the player does NOT have the spell + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Player does not meet learned spell requirements for quest " .. questId) end + return false + elseif (requiredSpell < 0) and (hasSpell or hasProfSpell) then --if requiredSpell is negative, we make the quest ineligible if the player DOES have the spell + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Player does not meet unlearned spell requirements for quest " .. questId) end + return false + end + end + + -- Check and see if the Quest requires an achievement before showing as available + if _QuestieDB:CheckAchievementRequirements(questId) == false then + if debugPrint then Questie:Debug(Questie.DEBUG_SPAM, "[QuestieDB.IsDoable] Player does not meet achievement requirements for quest " .. questId) end + return false + end + + return true +end + +---@param questId number +---@param debugPrint boolean? -- if true, IsDoable will print conclusions to debug channel +---@param returnText boolean? -- if true, IsDoable will return plaintext explanation instead of true/false +---@param returnBrief boolean? -- if true and returnText is true, IsDoable will return a very brief explanation instead of a verbose one +---@return boolean +function QuestieDB.IsDoableVerbose(questId, debugPrint, returnText, returnBrief) + + --! Before changing any logic in QuestieDB.IsDoable, make sure + --! to mirror the same logic to QuestieDB.IsDoableVerbose! + + -- IsDoable determines if the player is currently eligible for + -- a quest, and returns that result as true/false in order to + -- programmatically show/hide quests and determine further logic. + + -- IsDoableVerbose does the same logic, but returns human-readable + -- explanations as a string for display in the UI. + + -- These functions are maintained separately for performance, + -- because IsDoable is often called in a loop through every + -- quest in the DB in order to update icons, while + -- IsDoableVerbose is only called manually by the user. + + if C_QuestLog.IsOnQuest(questId) == true then + local msg = "Quest " .. questId .. " is active!" + if returnText and returnBrief then + return "Eligible: Player is on quest" + elseif returnText and not returnBrief then + return msg + end + end + + -- These are localized in the init function + if QuestieCorrectionshiddenQuests[questId] then + local msg = "Quest " .. questId .. " is hidden automatically!" + if returnText and returnBrief then + return "Unknown: Automatically blacklisted" + elseif returnText and not returnBrief then + return msg + end + end + + if Questiedbcharhidden[questId] then + local msg = "Quest " .. questId .. " is hidden manually!" + if returnText and returnBrief then + return "Unknown: Manually blacklisted" + elseif returnText and not returnBrief then + return msg + end + end + + if Questiedbcharhidden[questId] then + local msg = "Quest " .. questId .. " is hidden manually!" + if returnText and returnBrief then + return "Unknown: Manually blacklisted" + elseif returnText and not returnBrief then + return msg + end + end + + if QuestieDB.activeChildQuests[questId] then -- The parent quest is active, so this quest is doable + local msg = "Quest " .. questId .. " is eligible because it's a child quest and the parent is active!" + if returnText and returnBrief then + return "Eligible: Parent active" + elseif returnText and not returnBrief then + return msg + end + end + + local requiredRaces = QuestieDB.QueryQuestSingle(questId, "requiredRaces") + if (requiredRaces and not checkRace[requiredRaces]) then + local msg = "Race requirement not fulfilled for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Race requirement" + elseif returnText and not returnBrief then + return msg + end + end + + -- Check the preQuestSingle field where just one of the required quests has to be complete for a quest to show up + local preQuestSingle = QuestieDB.QueryQuestSingle(questId, "preQuestSingle") + if preQuestSingle then + local isPreQuestSingleFulfilled = QuestieDB:IsPreQuestSingleFulfilled(preQuestSingle) + if not isPreQuestSingleFulfilled then + local msg = "Pre-quest requirement not fulfilled for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Incomplete pre-quest" + elseif returnText and not returnBrief then + return msg + end + end + end + + local requiredClasses = QuestieDB.QueryQuestSingle(questId, "requiredClasses") + if (requiredClasses and not checkClass[requiredClasses]) then + QuestieDB.autoBlacklist[questId] = "class" + local msg = "Class requirement not fulfilled for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Class requirement" + elseif returnText and not returnBrief then + return msg + end + end + + local requiredMinRep = QuestieDB.QueryQuestSingle(questId, "requiredMinRep") + local requiredMaxRep = QuestieDB.QueryQuestSingle(questId, "requiredMaxRep") + if (requiredMinRep or requiredMaxRep) then + local aboveMinRep, hasMinFaction, belowMaxRep, hasMaxFaction = QuestieReputation:HasFactionAndReputationLevel(requiredMinRep, requiredMaxRep) + if (not ((aboveMinRep and hasMinFaction) and (belowMaxRep and hasMaxFaction))) then + --- If we haven't got the faction for min or max we blacklist it + if not hasMinFaction or not hasMaxFaction then -- or not belowMaxRep -- This is something we could have done, but would break if you rep downwards + QuestieDB.autoBlacklist[questId] = "rep" + end + + local msg = "Player does not meet reputation requirements for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Reputation requirement" + elseif returnText and not returnBrief then + return msg + end + end + end + + local requiredSkill = QuestieDB.QueryQuestSingle(questId, "requiredSkill") + if (requiredSkill) then + local hasProfession, hasSkillLevel = QuestieProfessions:HasProfessionAndSkillLevel(requiredSkill) + if (not (hasProfession and hasSkillLevel)) then + --? We haven't got the profession so we blacklist it. + if(not hasProfession) then + QuestieDB.autoBlacklist[questId] = "skill" + end + + local msg = "Player does not meet profession requirements for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Profession requirement" + elseif returnText and not returnBrief then + return msg + end + end + end + + --? PreQuestGroup and PreQuestSingle are mutualy exclusive to eachother and preQuestSingle is more prevalent + --? Only try group if single does not exist. + if not preQuestSingle then + -- Check the preQuestGroup field where every required quest has to be complete for a quest to show up + local preQuestGroup = QuestieDB.QueryQuestSingle(questId, "preQuestGroup") + if preQuestGroup then + local isPreQuestGroupFulfilled = QuestieDB:IsPreQuestGroupFulfilled(preQuestGroup) + if not isPreQuestGroupFulfilled then + local msg = "Group pre-quest requirement not fulfilled for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Incomplete pre-quest group" + elseif returnText and not returnBrief then + return msg + end + end + end + end + + local parentQuest = QuestieDB.QueryQuestSingle(questId, "parentQuest") + if parentQuest and parentQuest ~= 0 then + local msg = "Quest " .. questId .. " has an inactive parent quest" + if returnText and returnBrief then + return "Ineligible: Inactive parent" + elseif returnText and not returnBrief then + return msg + end + end + + local nextQuestInChain = QuestieDB.QueryQuestSingle(questId, "nextQuestInChain") + if nextQuestInChain and nextQuestInChain ~= 0 then + if Questie.db.char.complete[nextQuestInChain] or QuestiePlayer.currentQuestlog[nextQuestInChain] then + local msg = "Follow up quests already completed or in the quest log for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Later quest completed" + elseif returnText and not returnBrief then + return msg + end + end + end + + -- Check if a quest which is exclusive to the current has already been completed or accepted + -- If yes the current quest can't be accepted + local ExclusiveQuestGroup = QuestieDB.QueryQuestSingle(questId, "exclusiveTo") + if ExclusiveQuestGroup then -- fix (DO NOT REVERT, tested thoroughly) + for _, v in pairs(ExclusiveQuestGroup) do + if Questie.db.char.complete[v] or QuestiePlayer.currentQuestlog[v] then + local msg = "Player has completed a quest exclusive with quest " .. questId + if returnText and returnBrief then + return "Ineligible: Exclusive quest completed" + elseif returnText and not returnBrief then + return msg + end + end + end + end + + if (not DailyQuests:IsActiveDailyQuest(questId)) then + local msg = "Quest " .. questId .. " is a daily quest which isn't active today!" + if returnText and returnBrief then + return "Ineligible: Inactive daily" + elseif returnText and not returnBrief then + return msg + end + end + + local requiredSpecialization = QuestieDB.QueryQuestSingle(questId, "requiredSpecialization") + if (requiredSpecialization) and (requiredSpecialization > 0) then + local hasSpecialization = QuestieProfessions:HasSpecialization(requiredSpecialization) + if (not hasSpecialization) then + local msg = "Player does not meet profession specialization requirements for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Profession specialization requirement" + elseif returnText and not returnBrief then + return msg + end + end + end + + local requiredSpell = QuestieDB.QueryQuestSingle(questId, "requiredSpell") + if (requiredSpell) and (requiredSpell ~= 0) then + local hasSpell = IsSpellKnownOrOverridesKnown(math.abs(requiredSpell)) + local hasProfSpell = IsPlayerSpell(math.abs(requiredSpell)) + if (requiredSpell > 0) and (not hasSpell) and (not hasProfSpell) then --if requiredSpell is positive, we make the quest ineligible if the player does NOT have the spell + local msg = "Player does not meet learned spell requirements for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Spell not yet learned" + elseif returnText and not returnBrief then + return msg + end + elseif (requiredSpell < 0) and (hasSpell or hasProfSpell) then --if requiredSpell is negative, we make the quest ineligible if the player DOES have the spell + local msg = "Player does not meet unlearned spell requirements for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Already learned spell" + elseif returnText and not returnBrief then + return msg + end + end + end + + -- Check and see if the Quest requires an achievement before showing as available + if _QuestieDB:CheckAchievementRequirements(questId) == false then + local msg = "Player does not meet achievement requirements for quest " .. questId + if returnText and returnBrief then + return "Ineligible: Achievement requirement" + elseif returnText and not returnBrief then + return msg + end + end + + if returnText then + if IsQuestFlaggedCompleted(questId) then + if returnBrief then + return "Already complete" + else + return "Player has already completed quest " .. questId .. "!" + end + else + return "Player is eligible for quest " .. questId .. "!" + end + else + return "" + end +end + +---@param questId number +---@return number @Complete = 1, Failed = -1, Incomplete = 0 +function QuestieDB.IsComplete(questId) + local questLogEntry = QuestLogCache.questLog_DO_NOT_MODIFY[questId] -- DO NOT MODIFY THE RETURNED TABLE + local noQuestItem = not QuestieQuest:CheckQuestSourceItem(questId) + + --[[ pseudo: + if no questLogEntry then return 0 + if has questLogEntry.isComplete then return questLogEntry.isComplete + if no objectives and an item is needed but not obtained then return 0 + if no objectives then return 1 + if all objectives are finished then return 1 + return 0 + --]] + + if not questLogEntry then return 0 end + if questLogEntry.isComplete == 1 or questLogEntry.isComplete == -1 then + return questLogEntry.isComplete + end + + local objectives = questLogEntry.objectives + if not objectives or #objectives == 0 then + -- Before assuming an empty objective list means the quest is done, check if we *expect* objectives from the DB. + -- On WotLK private servers, GetQuestObjectives sometimes transiently returns nil during cache rebuilds, + -- which leads to IsComplete prematurely returning 1 and unloading map icons in the middle of a quest. + local expectedObjectives = QuestieDB.GetQuest(questId) and QuestieDB.GetQuest(questId).ObjectiveData + if expectedObjectives and #expectedObjectives > 0 then + return 0 + end + + return (noQuestItem and 0) or 1 + end + + -- Check if every objective is fulfilled. Use numFulfilled == numRequired rather than the + -- finished flag, because finished is only set by QuestLogCache when the server sends + -- isComplete=1 via GetQuestLogTitle. For quests using consumable items (e.g. Cold Iron Key + -- for quest 12843), the key is consumed and numFulfilled/numRequired update immediately, + -- but isComplete=1 may not arrive until the player physically visits the turn-in NPC. + local allDone = true + for _, obj in ipairs(objectives) do + if obj.numRequired and obj.numRequired > 0 and obj.numFulfilled ~= obj.numRequired then + allDone = false + break + end + end + + return allDone and 1 or 0 +end + +---@param self Quest +---@return number @Complete = 1, Failed = -1, Incomplete = 0 +local function _IsComplete(self) + return QuestieDB.IsComplete(self.Id) +end + +---@param questLevel number the level of the quest +---@return boolean @Returns true if the quest should be grey, false otherwise +function QuestieDB.IsTrivial(questLevel) + if questLevel == -1 then + return false -- Scaling quests are never trivial + end + + local levelDiff = questLevel - QuestiePlayer.GetPlayerLevel(); + if (levelDiff >= 5) then + return false -- Red + elseif (levelDiff >= 3) then + return false -- Orange + elseif (levelDiff >= -2) then + return false -- Yellow + elseif (-levelDiff <= GetQuestGreenRange("player")) then + return false -- Green + else + return true -- Grey + end +end + +---@return number +local _GetIconScale = function() + return Questie.db.profile.objectScale or 1 +end + +---@param questId QuestId +---@return Quest|nil @The quest object or nil if the quest is missing +function QuestieDB.GetQuest(questId) -- /dump QuestieDB.GetQuest(867) + if not questId then + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieDB.GetQuest] No questId.") + return nil + end + if _QuestieDB.questCache[questId] then + return _QuestieDB.questCache[questId]; + end + + local rawdata = QuestieDB.QueryQuest(questId, QuestieDB._questAdapterQueryOrder) + + if (not rawdata) then + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieDB.GetQuest] rawdata is nil for questID:", questId) + return nil + end + + ---@class Quest + ---@field public Id QuestId + ---@field public name Name + ---@field public startedBy StartedBy + ---@field public finishedBy FinishedBy + ---@field public requiredLevel Level + ---@field public questLevel Level + ---@field public requiredRaces number @bitmask + ---@field public requiredClasses number @bitmask + ---@field public objectivesText string[] + ---@field public triggerEnd { [1]: string, [2]: table} + ---@field public objectives RawObjectives + ---@field public sourceItemId ItemId + ---@field public preQuestGroup QuestId[] + ---@field public preQuestSingle QuestId[] + ---@field public childQuests QuestId[] + ---@field public inGroupWith QuestId[] + ---@field public exclusiveTo QuestId[] + ---@field public zoneOrSort ZoneOrSort + ---@field public requiredSkill SkillPair + ---@field public requiredMinRep ReputationPair + ---@field public requiredMaxRep ReputationPair + ---@field public requiredSourceItems ItemId[] + ---@field public nextQuestInChain number + ---@field public questFlags number @bitmask: see https://github.com/cmangos/issues/wiki/Quest_template#questflags + ---@field public specialFlags number @bitmask: 1 = Repeatable, 2 = Needs event, 4 = Monthly reset (req. 1). See https://github.com/cmangos/issues/wiki/Quest_template#specialflags + ---@field public parentQuest QuestId + ---@field public reputationReward ReputationPair[] + ---@field public extraObjectives ExtraObjective[] + ---@field public requiredMaxLevel Level + local QO = { + Id = questId + } + + -- General filling of the QuestObjective with all database values + local questKeys = QuestieDB.questKeys + for stringKey, intKey in pairs(questKeys) do + QO[stringKey] = rawdata[intKey] + end + + local questLevel, requiredLevel = QuestieLib.GetTbcLevel(questId) + QO.level = questLevel + QO.requiredLevel = requiredLevel + + ---@type StartedBy + local startedBy = QO.startedBy + QO.Starts = { + NPC = startedBy and startedBy[1], + GameObject = startedBy and startedBy[2], + Item = startedBy and startedBy[3], + } + QO.isHidden = rawdata.hidden or QuestieCorrections.hiddenQuests[questId] + QO.Description = QO.objectivesText + if QO.specialFlags then + QO.IsRepeatable = bitband(QO.specialFlags, 1) ~= 0 + end + + QO.IsComplete = _IsComplete + + ---@type FinishedBy + local finishedBy = QO.finishedBy + if finishedBy and finishedBy[1] then + for _, id in pairs(finishedBy[1]) do + if id then + QO.Finisher = { + Type = "monster", + Id = id, + ---@type Name @We have to hard-type it here because of the function + Name = QuestieDB.QueryNPCSingle(id, "name") + } + end + end + end + if finishedBy and finishedBy[2] then + for _, id in pairs(finishedBy[2]) do + if id then + -- Some custom servers (like Ascension) incorrectly place Item IDs in the GameObject finisher array. + -- We verify the object actually exists in the ObjectDB before assigning it as a Finisher, + -- to prevent "rawdata is nil for objectID" errors during Arrow/Map updates. + local objectName = QuestieDB.QueryObjectSingle(id, "name") + if objectName then + QO.Finisher = { + Type = "object", + Id = id, + Name = objectName + } + else + Questie:Debug(Questie.DEBUG_INFO, "[QuestieDB:GetQuest] Ignored invalid object finisher ID:", id, "for quest:", questId) + end + end + end + end + + --- to differentiate from the current quest log info. + --- Quest objectives generated from DB+Corrections. + --- Data itself is for example for monster type { Type = "monster", Id = 16518, Text = "Nestlewood Owlkin inoculated" } + ---@type Objective[] + QO.ObjectiveData = {} + + ---@type RawObjectives + local objectives = QO.objectives + if objectives then + if objectives[1] then + for _, creatureObjective in pairs(objectives[1]) do + if creatureObjective then + ---@type NpcObjective + QO.ObjectiveData[#QO.ObjectiveData+1] = { + Type = "monster", + Id = creatureObjective[1], + Text = creatureObjective[2], + HideCondition = creatureObjective[3], + } + end + end + end + if objectives[2] then + for _, objectObjective in pairs(objectives[2]) do + if objectObjective then + ---@type ObjectObjective + QO.ObjectiveData[#QO.ObjectiveData+1] = { + Type = "object", + Id = objectObjective[1], + Text = objectObjective[2], + HideCondition = objectObjective[3], + } + end + end + end + if objectives[3] then + for _, itemObjective in pairs(objectives[3]) do + if itemObjective then + ---@type ItemObjective + QO.ObjectiveData[#QO.ObjectiveData+1] = { + Type = "item", + Id = itemObjective[1], + Text = itemObjective[2], + HideCondition = itemObjective[3], + } + end + end + end + if objectives[4] then + ---@type ReputationObjective + QO.ObjectiveData[#QO.ObjectiveData+1] = { + Type = "reputation", + Id = objectives[4][1], + RequiredRepValue = objectives[4][2] + } + end + if objectives[5] and type(objectives[5]) == "table" and #objectives[5] > 0 then + for _, creditObjective in pairs(objectives[5]) do + ---@type KillObjective + local killCreditObjective = { + Type = "killcredit", + IdList = creditObjective[1], + RootId = creditObjective[2], + Text = creditObjective[3] + } + + --? There are quest(s) which have the killCredit at first so we need to switch them + -- Place the kill credit objective first + if QuestieCorrections.killCreditObjectiveFirst[questId] then + tinsert(QO.ObjectiveData, 1, killCreditObjective); + else + tinsert(QO.ObjectiveData, killCreditObjective); + end + end + end + if objectives[6] then + for index, spellObjective in pairs(objectives[6]) do + if spellObjective then + ---@type SpellObjective + QO.ObjectiveData[#QO.ObjectiveData+1] = { + Type = "spell", + Id = spellObjective[1], + Text = spellObjective[2], + ItemSourceId = spellObjective[3], + } + QO.SpellItemId = spellObjective[3] + end + end + end + end + + -- Events need to be added at the end of ObjectiveData + local triggerEnd = QO.triggerEnd + if triggerEnd then + ---@type TriggerEndObjective + QO.ObjectiveData[#QO.ObjectiveData+1] = { + Type = "event", + Text = triggerEnd[1], + Coordinates = triggerEnd[2] + } + end + + local preQuestGroup = QO.preQuestGroup + local preQuestSingle = QO.preQuestSingle + if preQuestGroup and preQuestSingle and next(preQuestGroup) and next(preQuestSingle) then + Questie:Debug(Questie.DEBUG_CRITICAL, "ERRRRORRRRRRR not mutually exclusive for questID:", questId) + end + + --- Quest objectives generated from quest log in QuestieQuest.lua -> QuestieQuest:PopulateQuestLogInfo(quest) + --- Includes also icons drawn to maps, and other stuff. + ---@type table + QO.Objectives = {} + + QO.SpecialObjectives = {} + + ---@type ItemId[] + local requiredSourceItems = QO.requiredSourceItems + if requiredSourceItems then + for _, itemId in pairs(requiredSourceItems) do + if itemId then + -- Make sure requiredSourceItems aren't already an objective + local itemObjPresent = false + if objectives[3] then + for _, itemObjective in pairs(objectives[3]) do + if itemObjective then + if itemId == itemObjective[1] then + itemObjPresent = true + break + end + end + end + end + + -- Make an objective for requiredSourceItem + if not itemObjPresent then + QO.SpecialObjectives[itemId] = { + Type = "item", + Id = itemId, + ---@type string @We have to hard-type it here because of the function + Description = QuestieDB.QueryItemSingle(itemId, "name") + } + end + end + end + end + + ---@type ExtraObjective[] + local extraObjectives = QO.extraObjectives + if extraObjectives then + for index, o in pairs(extraObjectives) do + local specialObjective = { + Icon = o[2], + Description = o[3], + RealObjectiveIndex = o[4], + HideCondition = o[6], + } + if o[1] then -- custom spawn + specialObjective.spawnList = {{ + Name = o[3], + Spawns = o[1], + Icon = o[2], + GetIconScale = _GetIconScale, + IconScale = _GetIconScale(), + }} + end + if o[5] then -- db ref + specialObjective.Type = o[5][1][1] + specialObjective.Id = o[5][1][2] + local spawnList = {} + + for _, ref in pairs(o[5]) do + for k, v in pairs(_QuestieQuest.objectiveSpawnListCallTable[ref[1]](ref[2], specialObjective)) do + -- we want to be able to override the icon in the corrections (e.g. Questie.ICON_TYPE_OBJECT on objects instead of Questie.ICON_TYPE_LOOT) + v.Icon = o[2] + spawnList[k] = v + end + end + + specialObjective.spawnList = spawnList + end + QO.SpecialObjectives[index] = specialObjective + end + end + + _QuestieDB.questCache[questId] = QO + return QO +end + +QuestieDB._CreatureLevelCache = {} +---@param quest Quest +---@return table @List of creature names with their min-max level and rank +function QuestieDB:GetCreatureLevels(quest) + if quest and QuestieDB._CreatureLevelCache[quest.Id] then + return QuestieDB._CreatureLevelCache[quest.Id] + end + local creatureLevels = {} + + local function _CollectCreatureLevels(npcIds) + for _, npcId in pairs(npcIds) do + local npc = QuestieDB:GetNPC(npcId) + if npc and not creatureLevels[npc.name] then + creatureLevels[npc.name] = {npc.minLevel, npc.maxLevel, npc.rank} + end + end + end + + if quest.objectives then + if quest.objectives[1] then -- Killing creatures + for _, creatureObjective in pairs(quest.objectives[1]) do + local npcId = creatureObjective[1] + _CollectCreatureLevels({npcId}) + end + end + if quest.objectives[3] then -- Looting items from creatures + for _, itemObjective in pairs(quest.objectives[3]) do + local itemId = itemObjective[1] + local npcIds = QuestieDB.QueryItemSingle(itemId, "npcDrops") + if npcIds then + _CollectCreatureLevels(npcIds) + end + end + end + end + if quest.Id then + QuestieDB._CreatureLevelCache[quest.Id] = creatureLevels + end + return creatureLevels +end + +local playerFaction = UnitFactionGroup("player") +local factionReactions = { + A = (playerFaction == "Alliance") or nil, + H = (playerFaction == "Horde") or nil, + AH = true, +} +-- +-- +--function __TEST() +-- local questsWithoutTriggerEnd = { +-- 869, +-- 944, +-- 1448, +-- 6185, +-- 9260, +-- 9261, +-- 9262, +-- 9263, +-- 9264, +-- 9265, +-- 12032, +-- 12036, +-- 12816, +-- 12817, +-- 13564, +-- 13639, +-- 13881, +-- 13961, +-- 14066, +-- 14165, +-- 14389, +-- 24452, +-- 24618, +-- 25081, +-- 25325, +-- 25621, +-- 25715, +-- 25930, +-- 26258, +-- 26512, +-- 26930, +-- 26975, +-- 27007, +-- 27044, +-- 27152, +-- 27341, +-- 27349, +-- 27610, +-- 27704, +-- 28228, +-- 28635, +-- 28732, +-- 29392, +-- 29415, +-- 29536, +-- 29539, +-- } +-- +-- local corrections = {} +-- +-- -- Read QuestieDB to check if the quest has a triggerEnd +-- for _, questId in pairs(questsWithoutTriggerEnd) do +-- local quest = QuestieDB.GetQuest(questId) +-- if (not quest) then +-- print("Quest " .. questId .. " not found in QuestieDB") +-- corrections[questId] = true +-- else +-- if quest.triggerEnd then +-- print("Quest " .. questId .. " has a triggerEnd") +-- else +-- print("Quest " .. questId .. " does not have a triggerEnd") +-- corrections[questId] = true +-- end +-- end +-- end +-- +-- Questie.db.global.__TEST = corrections +--end +local a = { + [869] = true, + [13564] = true, + [13639] = true, + [13881] = true, + [13961] = true, + [14165] = true, + + [27610] = true, + [27044] = true, + [26930] = true, + [14066] = true, + [28635] = true, + [25930] = true, + [27007] = true, + [14389] = true, + [27704] = true, + [24618] = true, + [26258] = true, + [26512] = true, + [29539] = true, + [27341] = true, + [29536] = true, + [29415] = true, + [29392] = true, + [28732] = true, + [28228] = true, + [27152] = true, + [27349] = true, + [24452] = true, + [25325] = true, + [26975] = true, + [25621] = true, + [25715] = true, + [25081] = true, +} + +---@param npcId number +---@return table +function QuestieDB:GetNPC(npcId) + if not npcId then + return nil + end + if _QuestieDB.npcCache[npcId] then + return _QuestieDB.npcCache[npcId] + end + + local rawdata = QuestieDB.QueryNPC(npcId, QuestieDB._npcAdapterQueryOrder) + if (not rawdata) then + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieDB:GetNPC] rawdata is nil for npcID:", npcId) + return nil + end + + local npcKeys = QuestieDB.npcKeys + local npc = { + id = npcId, + type = "monster", + } + for stringKey, intKey in pairs(npcKeys) do + npc[stringKey] = rawdata[intKey] + end + + local friendlyToFaction = rawdata[npcKeys.friendlyToFaction] + npc.friendly = (not friendlyToFaction) and true or factionReactions[friendlyToFaction] + + _QuestieDB.npcCache[npcId] = npc + return npc +end + +--[[ + https://github.com/cmangos/issues/wiki/AreaTable.dbc + Example to differentiate between Dungeon and Zone infront of a Dungeon: + 1337 Uldaman = The Dungeon (MapID ~= 0, AreaID = 0) + 1517 Uldaman = Cave infront of the Dungeon (MapID = 0, AreaID = 3 (Badlands)) + + Check `l10n.zoneLookup` for the available IDs +]] +---@param zoneId number +---@return table +function QuestieDB:GetQuestsByZoneId(zoneId) + if not zoneId then + return nil; + end + -- is in cache return that + if _QuestieDB.zoneCache[zoneId] then + return _QuestieDB.zoneCache[zoneId] + end + local zoneQuests = {}; + local alternativeZoneID = ZoneDB:GetAlternativeZoneId(zoneId) + -- loop over all quests to populate a zone + for qid, _ in pairs(QuestieDB.QuestPointers or QuestieDB.questData) do + local quest = QuestieDB.GetQuest(qid); + if quest then + if quest.zoneOrSort > 0 then + if (quest.zoneOrSort == zoneId or (alternativeZoneID and quest.zoneOrSort == alternativeZoneID)) then + zoneQuests[qid] = quest; + end + elseif quest.Starts.NPC and (not zoneQuests[qid]) then + local npc = QuestieDB:GetNPC(quest.Starts.NPC[1]); + if npc and npc.friendly and npc.spawns then + for zone, _ in pairs(npc.spawns) do + if zone == zoneId or (alternativeZoneID and zone == alternativeZoneID) then + zoneQuests[qid] = quest; + end + end + end + elseif quest.Starts.GameObject and (not zoneQuests[qid]) then + local obj = QuestieDB:GetObject(quest.Starts.GameObject[1]); + if obj and obj.spawns then + for zone, _ in pairs(obj.spawns) do + if zone == zoneId or (alternativeZoneID and zone == alternativeZoneID) then + zoneQuests[qid] = quest; + end + end + end + end + end + end + _QuestieDB.zoneCache[zoneId] = zoneQuests; + return zoneQuests; +end + +--------------------------------------------------------------------------------------------------- +-- Modifications to objectDB +function _QuestieDB:DeleteGatheringNodes() + local prune = { -- gathering nodes + 1617,1618,1619,1620,1621,1622,1623,1624,1628, -- herbs + + 1731,1732,1733,1734,1735,123848,150082,175404,176643,177388,324,150079,176645,2040,123310 -- mining + } + local objectSpawnsKey = QuestieDB.objectKeys.spawns + for i=1, #prune do + local id = prune[i] + QuestieDB.objectData[id][objectSpawnsKey] = nil + end +end + +--------------------------------------------------------------------------------------------------- +-- Modifications to questDB + +function _QuestieDB:CheckAchievementRequirements(questId) + -- So far the only Quests that we know of that requires an earned Achievement are the ones offered by: + -- https://www.wowhead.com/wotlk/npc=35094/crusader-silverdawn + -- Get Kraken (14108) + -- The Fate Of The Fallen (14107) + -- This NPC requires these earned Achievements baseed on a Players home faction: + -- https://www.wowhead.com/wotlk/achievement=2817/exalted-argent-champion-of-the-alliance + -- https://www.wowhead.com/wotlk/achievement=2816/exalted-argent-champion-of-the-horde + if questId == 14101 or questId == 14102 or questId == 14104 or questId == 14105 or questId == 14107 or questId == 14108 then + local retN = QuestieCompat.Is335 and 4 or 13 + if select(retN, GetAchievementInfo(2817)) or select(retN, GetAchievementInfo(2816)) then + return true + end + + return false + end +end + +function _QuestieDB:HideClassAndRaceQuests() + local questKeys = QuestieDB.questKeys + for _, entry in pairs(QuestieDB.questData) do + -- check requirements, set hidden flag if not met + local requiredClasses = entry[questKeys.requiredClasses] + if (requiredClasses) and (requiredClasses ~= 0) then + if (not QuestiePlayer.HasRequiredClass(requiredClasses)) then + entry.hidden = true + end + end + local requiredRaces = entry[questKeys.requiredRaces] + if (requiredRaces) and (requiredRaces ~= 0) and (requiredRaces ~= 255) then + if (not QuestiePlayer.HasRequiredRace(requiredRaces)) then + entry.hidden = true + end + end + end + Questie:Debug(Questie.DEBUG_DEVELOP, "Other class and race quests hidden"); +end + +-- This function is intended for usage with Gossip and Greeting frames, where there's a list of quests but no QuestIDs are +-- obtainable until entering the specific quest dialog. +-- This is a bruteforce method for obtaining a QuestID with no input other than a quest name, and the ID of the questgiver. +-- It compares the name of the quest entry with the names of every quest that questgiver can either start or end. +---@param name string? @The name of the quest entry +---@param questgiverGUID string? @Should be UnitGUID("questnpc") +---@param questStarter boolean @Should be True if this is an available quest, False if this is an "active" quest (quest ender) +---@return number +function QuestieDB.GetQuestIDFromName(name, questgiverGUID, questStarter) + local questID = 0 -- worst case, we end up returning an ID of 0 if we can't find a match; any function relying on this one should handle 0 cleanly + if questgiverGUID then + local questgiverID = tonumber(questgiverGUID:match("-(%d+)-%x+$"), 10) + local unit_type = strsplit("-", questgiverGUID) + local questsStarted + local questsEnded + if unit_type == "Creature" then -- if questgiver is an NPC + questsStarted = QuestieDB.QueryNPCSingle(questgiverID, "questStarts") + questsEnded = QuestieDB.QueryNPCSingle(questgiverID, "questEnds") + elseif unit_type == "GameObject" then -- if questgiver is an object (it's rare for an object to have a gossip/greeting frame, but Wanted Boards exist; see object 2713) + questsStarted = QuestieDB.QueryObjectSingle(questgiverID, "questStarts") + questsEnded = QuestieDB.QueryObjectSingle(questgiverID, "questEnds") + else + return questID; -- If the questgiver is not an NPC or object, bail! + end + -- iterate through every questEnds entry in our questgiver's DB, and check if each quest name matches this greeting frame entry + if questStarter == true then + if questsStarted then + for _, id in pairs(questsStarted) do + if (name == QuestieDB.QueryQuestSingle(id, "name")) and (QuestieDB.IsDoable(id)) then + -- the QuestieDB.IsDoable check is important to filter out identically named quests + questID = id + end + end + elseif Questie.IsSoD == false then -- don't print these errors in SoD, as we expect missing data when new quests release; debug offers will handle these scenarios instead + Questie:Error("Database mismatch! No entries found that match quest name. Please report this on Github or Discord!") + Questie:Error("Queststarter is: " .. unit_type .. " " .. questgiverID) + Questie:Error("Quest name is: " .. name) + Questie:Error("Client info is: " .. GetBuildInfo() .. "; " .. QuestieLib:GetAddonVersionString()) + end + else + if questsEnded then + for _, id in pairs(questsEnded) do + if (name == QuestieDB.QueryQuestSingle(id, "name")) and (QuestieDB.IsDoable(id)) and QuestiePlayer.currentQuestlog[id] then + questID = id + end + end + elseif Questie.IsSoD == false then -- don't print these errors in SoD, as we expect missing data when new quests release; debug offers will handle these scenarios instead + Questie:Error("Database mismatch! No entries found that match quest name. Please report this on Github or Discord!") + Questie:Error("Questender is: " .. unit_type .. " " .. questgiverID) + Questie:Error("Quest name is: " .. name) + Questie:Error("Client info is: " .. GetBuildInfo() .. "; " .. QuestieLib:GetAddonVersionString()) + end + end + end + return questID; +end + +QuestieDB.waypointPresets = { + ORGRIMS_HAMMER = {[ZoneDB.zoneIDs.ICECROWN]={{{62.37,30.60},{61.93,30.93},{61.48,31.24},{61.08,31.55},{60.74,31.92},{60.46,32.44},{60.26,33.11},{60.14,33.85},{60.11,34.63},{60.17,35.35},{60.31,36.01},{60.56,36.66},{60.84,37.33},{61.15,38.00},{61.44,38.67},{61.71,39.28},{62.00,39.92},{62.31,40.55},{62.60,41.20},{62.90,41.83},{63.05,42.20},{63.33,42.85},{63.58,43.53},{63.85,44.19},{64.08,44.86},{64.33,45.50},{64.45,45.87},{64.69,46.56},{64.94,47.21},{65.16,47.87},{65.43,48.51},{65.71,49.15},{66.03,49.77},{66.36,50.46},{66.72,51.10},{67.07,51.67},{67.41,52.08},{67.82,52.37},{68.31,52.47},{68.80,52.38},{69.23,51.98},{69.45,51.56},{69.57,51.13},{69.67,50.59},{69.73,49.96},{69.77,49.26},{69.79,48.48},{69.80,47.62},{69.79,46.68},{69.79,45.68},{69.78,44.90},{69.78,44.25},{69.76,43.55},{69.75,42.80},{69.72,42.01},{69.70,41.20},{69.67,40.38},{69.64,39.54},{69.61,38.71},{69.58,37.88},{69.55,37.07},{69.52,36.28},{69.49,35.54},{69.46,34.83},{69.45,34.18},{69.42,33.50},{69.41,32.46},{69.42,31.52},{69.45,30.67},{69.47,29.92},{69.48,29.25},{69.46,28.65},{69.42,28.12},{69.35,27.83},{69.11,27.19},{68.71,26.77},{68.23,26.54},{67.71,26.51},{67.24,26.55},{66.81,26.76},{66.35,27.09},{65.90,27.52},{65.44,27.95},{65.01,28.39},{64.58,28.73},{64.16,29.10},{63.74,29.43},{63.34,29.79},{62.94,30.11},{62.65,30.37},{62.37,30.60}}}}, + THE_SKYBREAKER = {[ZoneDB.zoneIDs.ICECROWN]={{{63.59,52.34},{63.44,51.88},{63.30,51.52},{63.15,51.19},{63.01,50.85},{62.85,50.52},{62.68,50.17},{62.50,49.78},{62.31,49.36},{62.09,48.88},{61.86,48.33},{61.81,48.20},{61.67,47.88},{61.52,47.52},{61.37,47.13},{61.19,46.74},{61.02,46.32},{60.84,45.88},{60.65,45.44},{60.46,44.99},{60.28,44.53},{60.09,44.08},{59.90,43.63},{59.72,43.18},{59.54,42.75},{59.36,42.34},{59.20,41.94},{59.04,41.56},{58.89,41.22},{58.75,40.87},{58.52,40.30},{58.32,39.77},{58.14,39.27},{57.97,38.80},{57.81,38.39},{57.65,38.03},{57.49,37.72},{57.31,37.50},{57.12,37.34},{56.87,37.29},{56.57,37.39},{56.27,37.60},{55.97,37.88},{55.72,38.23},{55.53,38.61},{55.43,38.95},{55.43,39.09},{55.46,39.49},{55.52,39.92},{55.62,40.39},{55.76,40.88},{55.89,41.38},{56.02,41.85},{56.17,42.25},{56.33,42.68},{56.51,43.13},{56.70,43.56},{56.88,43.99},{57.05,44.39},{57.22,44.74},{57.42,45.15},{57.64,45.52},{57.83,45.81},{58.03,46.14},{58.23,46.56},{58.41,46.90},{58.60,47.25},{58.80,47.62},{59.00,48.03},{59.19,48.46},{59.36,48.84},{59.53,49.22},{59.69,49.63},{59.86,50.04},{60.03,50.46},{60.19,50.90},{60.36,51.32},{60.51,51.74},{60.65,52.17},{60.79,52.59},{60.94,53.02},{61.07,53.46},{61.23,53.89},{61.39,54.30},{61.55,54.72},{61.70,55.18},{61.88,55.65},{62.05,56.14},{62.23,56.58},{62.43,56.95},{62.65,57.21},{62.87,57.30},{62.95,57.27},{63.22,57.16},{63.52,56.97},{63.81,56.68},{64.07,56.32},{64.26,55.91},{64.33,55.47},{64.30,55.11},{64.25,54.72},{64.16,54.30},{64.04,53.84},{63.91,53.36},{63.76,52.88},{63.59,52.34}}}}, +} + + +-- ========================= +-- Ascension custom DB merge +-- ========================= +local function _Asc_LoadIfString(data, label) + if not data then return nil end + if type(data) == "string" then + local fn, err = loadstring(data) + if not fn then + if Questie and Questie.Debug then + Questie:Debug(Questie.DEBUG_CRITICAL, "[AscensionDB] loadstring failed for " .. tostring(label) .. ": " .. tostring(err)) + end + return nil + end + local ok, tbl = pcall(fn) + if not ok then + if Questie and Questie.Debug then + Questie:Debug(Questie.DEBUG_CRITICAL, "[AscensionDB] executing chunk failed for " .. tostring(label) .. ": " .. tostring(tbl)) + end + return nil + end + return tbl + end + return data +end + +local function _Asc_MergeInto(dst, src) + if type(dst) ~= "table" or type(src) ~= "table" then return end + for id, entry in pairs(src) do + dst[id] = entry -- overwrite = true + end +end + +function QuestieDB:LoadAscensionQuestData() + local A = QuestieLoader:ImportModule("AscensionDB") + if not A then return end + local data = _Asc_LoadIfString(A.questData, "AscensionDB.questData") + QuestieDB.questDataOverrides = QuestieDB.questDataOverrides or {} + _Asc_MergeInto(QuestieDB.questDataOverrides, data) +end + +function QuestieDB:LoadAscensionNpcData() + local A = QuestieLoader:ImportModule("AscensionDB") + if not A then return end + local data = _Asc_LoadIfString(A.npcData, "AscensionDB.npcData") + QuestieDB.npcDataOverrides = QuestieDB.npcDataOverrides or {} + _Asc_MergeInto(QuestieDB.npcDataOverrides, data) +end + +function QuestieDB:LoadAscensionObjectData() + local A = QuestieLoader:ImportModule("AscensionDB") + if not A then return end + local data = _Asc_LoadIfString(A.objectData, "AscensionDB.objectData") + QuestieDB.objectDataOverrides = QuestieDB.objectDataOverrides or {} + _Asc_MergeInto(QuestieDB.objectDataOverrides, data) +end + +function QuestieDB:LoadAscensionItemData() + local A = QuestieLoader:ImportModule("AscensionDB") + if not A then return end + local data = _Asc_LoadIfString(A.itemData, "AscensionDB.itemData") + QuestieDB.itemDataOverrides = QuestieDB.itemDataOverrides or {} + _Asc_MergeInto(QuestieDB.itemDataOverrides, data) +end + + +return QuestieDB diff --git a/.history/Modules/Arrow/QuestieArrow_20260222020313.lua b/.history/Modules/Arrow/QuestieArrow_20260222020313.lua new file mode 100644 index 0000000..626d7ff --- /dev/null +++ b/.history/Modules/Arrow/QuestieArrow_20260222020313.lua @@ -0,0 +1,765 @@ +---@class QuestieArrow +local QuestieArrow = QuestieLoader:CreateModule("QuestieArrow") + +---@type ZoneDB +local ZoneDB = QuestieLoader:ImportModule("ZoneDB") +---@type QuestieLib +local QuestieLib = QuestieLoader:ImportModule("QuestieLib") +---@type QuestieMap +local QuestieMap = QuestieLoader:ImportModule("QuestieMap") +---@type QuestieTracker +local QuestieTracker = QuestieLoader:ImportModule("QuestieTracker") +---@type QuestieDB +local QuestieDB = QuestieLoader:ImportModule("QuestieDB") +---@type QuestiePlayer +local QuestiePlayer = QuestieLoader:ImportModule("QuestiePlayer") +---@type QuestieQuest +local QuestieQuest = QuestieLoader:ImportModule("QuestieQuest") + +local HBD = QuestieCompat.HBD or LibStub("HereBeDragonsQuestie-2.0") + +local atan2 = math.atan2 +local pi = math.pi +local floor = math.floor +local abs = math.abs +local max = math.max +local min = math.min + +local ARROW_SHEET_SIZE = 512 +local ARROW_CELL_W = 56 +local ARROW_CELL_H = 42 +local ARROW_SHEET_COLS = 9 +local ARROW_SHEET_ROWS = 12 +local ARROW_TOTAL_CELLS = ARROW_SHEET_COLS * ARROW_SHEET_ROWS + +local UPDATE_THROTTLE_SECONDS = 0.05 +local RECALC_NEAREST_SECONDS = 1.0 +local TRACKER_REFRESH_THROTTLE_SECONDS = 0.5 + +---@type Frame? +local arrowFrame = nil +---@type Frame? +local driverFrame = nil + +-- Current auto-tracked targets sorted by distance +local sortedTargets = {} +local hasManualTarget = false + +local lastPopulateByQuestId = {} + +local function _IsArrowEnabled() + if not Questie or not Questie.db or not Questie.db.profile then + return true + end + return Questie.db.profile.arrowEnabled ~= false +end + +local function _GetArrowScale() + if not Questie or not Questie.db or not Questie.db.profile then + return 1 + end + return Questie.db.profile.arrowScale or 1 +end + +local function _SetArrowScale(scale) + if not Questie or not Questie.db or not Questie.db.profile then + return + end + Questie.db.profile.arrowScale = scale +end + +local function _GetProfilePosition() + if not Questie or not Questie.db or not Questie.db.profile then + return nil + end + return Questie.db.profile.arrowPosition +end + +local function _SaveProfilePosition(point, relativePoint, x, y) + if not Questie or not Questie.db or not Questie.db.profile then + return + end + Questie.db.profile.arrowPosition = { + point = point, + relativePoint = relativePoint, + x = x, + y = y, + } +end + +local function modulo(val, by) + return val - floor(val / by) * by +end + +local function GetColorGradient(perc) + if perc <= 0.5 then + return 1, perc * 2, 0 + else + return 2 - perc * 2, 1, 0 + end +end + +local function ResolveIconTexture(icon) + if not icon then + return nil + end + + if type(icon) == "string" then + return icon + end + + if type(icon) == "number" then + if Questie and Questie.usedIcons then + return Questie.usedIcons[icon] + end + return nil + end + + return nil +end + +local function _ApplyOutline(fontString) + if not fontString or not fontString.GetFont or not fontString.SetFont then + return + end + + local font, size, flags = fontString:GetFont() + if not font then + return + end + + flags = flags or "" + if not string.find(flags, "OUTLINE", 1, true) then + if flags ~= "" then + flags = flags .. ",OUTLINE" + else + flags = "OUTLINE" + end + end + + fontString:SetFont(font, size, flags) +end + +local function EnsureArrowFrame() + if arrowFrame then + return + end + + arrowFrame = CreateFrame("Frame", "QuestieArrowFrame", UIParent) + + local pos = _GetProfilePosition() + if pos and pos.point and pos.relativePoint and pos.x and pos.y then + arrowFrame:SetPoint(pos.point, UIParent, pos.relativePoint, pos.x, pos.y) + else + arrowFrame:SetPoint("CENTER", 0, -100) + end + + -- Make room for the objective icon below the arrow (no overlap) + arrowFrame:SetWidth(56) + arrowFrame:SetHeight(64) + arrowFrame:SetScale(_GetArrowScale()) + arrowFrame:SetClampedToScreen(true) + arrowFrame:SetMovable(true) + arrowFrame:EnableMouse(true) + arrowFrame:EnableMouseWheel(true) + arrowFrame:RegisterForDrag("LeftButton") + arrowFrame:SetScript("OnDragStart", function(self) + if IsShiftKeyDown() then + self:StartMoving() + end + end) + arrowFrame:SetScript("OnDragStop", function(self) + self:StopMovingOrSizing() + + local point, _, relativePoint, x, y = self:GetPoint(1) + if point and relativePoint and x and y then + _SaveProfilePosition(point, relativePoint, x, y) + end + end) + + arrowFrame:SetScript("OnMouseWheel", function(self, delta) + if not IsShiftKeyDown() then + return + end + + local scale = _GetArrowScale() or 1 + local step = 0.05 + if delta and delta > 0 then + scale = scale + step + else + scale = scale - step + end + + if scale < 0.5 then scale = 0.5 end + if scale > 2.0 then scale = 2.0 end + + _SetArrowScale(scale) + self:SetScale(scale) + end) + + -- Arrow sprite sheet texture (108 cells: 9 columns, 12 rows) + arrowFrame.arrow = arrowFrame:CreateTexture(nil, "MEDIUM") + arrowFrame.arrow:SetTexture(QuestieLib.AddonPath .. "Icons\\arrow.tga") + -- Render at native cell size; use frame scaling if you want it larger. + arrowFrame.arrow:SetWidth(ARROW_CELL_W) + arrowFrame.arrow:SetHeight(ARROW_CELL_H) + arrowFrame.arrow:SetPoint("TOP", arrowFrame, "TOP", 0, 0) + arrowFrame.arrow:SetTexCoord(0, 0.109375, 0, 0.08203125) -- First cell + + -- Quest icon texture at bottom (pfQuest style) + arrowFrame.icon = arrowFrame:CreateTexture(nil, "OVERLAY") + arrowFrame.icon:SetWidth(28) + arrowFrame.icon:SetHeight(28) + arrowFrame.icon:SetPoint("BOTTOM", arrowFrame.arrow, "BOTTOM", 0, -20) + + arrowFrame.title = arrowFrame:CreateFontString(nil, "OVERLAY", "GameFontNormal") + arrowFrame.title:SetPoint("TOP", arrowFrame.icon, "BOTTOM", 0, -2) + arrowFrame.title:SetJustifyH("CENTER") + _ApplyOutline(arrowFrame.title) + + arrowFrame.distance = arrowFrame:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall") + arrowFrame.distance:SetPoint("TOP", arrowFrame.title, "BOTTOM", 0, -2) + arrowFrame.distance:SetJustifyH("CENTER") + arrowFrame.distance:SetTextColor(1, 1, 1, 1) + _ApplyOutline(arrowFrame.distance) + + arrowFrame._lastUpdate = 0 + arrowFrame._lastRecalc = 0 + arrowFrame._lastTarget = nil + + -- Right-click to clear manual target and resume auto-tracking + arrowFrame:EnableMouse(true) + arrowFrame:SetScript("OnMouseUp", function(self, button) + if button == "RightButton" then + hasManualTarget = false + sortedTargets = {} + QuestieArrow:Refresh() + end + end) + + arrowFrame:SetScript("OnUpdate", function(self) + local now = GetTime() + + local target = sortedTargets[1] + if not target then + self:Hide() + return + end + + if not self:IsShown() then + self:Show() + end + + if (self._lastUpdate or 0) + UPDATE_THROTTLE_SECONDS > now then + return + end + self._lastUpdate = now + + local playerX, playerY, playerInstance = HBD:GetPlayerWorldPosition() + if not playerX or not playerY or not playerInstance then + self.distance:SetText("Distance: --") + return + end + + local targetX, targetY, targetInstance = HBD:GetWorldCoordinatesFromZone(target.x / 100.0, target.y / 100.0, + target.uiMapId) + if not targetX or not targetY or not targetInstance then + self.distance:SetText("Distance: --") + return + end + + if targetInstance ~= playerInstance then + self:Hide() + return + end + + -- Calculate arrow direction using pfQuest's method, but in world coordinates + -- (map coordinates break when the target is in a different zone) + local xDelta = (playerX - targetX) * 1.5 + local yDelta = (playerY - targetY) + local angle = atan2(xDelta, -(yDelta)) + angle = angle > 0 and (pi * 2) - angle or -angle + if angle < 0 then angle = angle + (pi * 2) end + + local player = GetPlayerFacing and GetPlayerFacing() or 0 + angle = angle - player + + -- Calculate color gradient based on direction + local perc = abs(((pi - abs(angle)) / pi)) + local r, g, b = GetColorGradient(perc) + + -- Select sprite sheet cell + local cell = modulo(floor(angle / (pi * 2) * ARROW_TOTAL_CELLS + 0.5), ARROW_TOTAL_CELLS) + local column = modulo(cell, ARROW_SHEET_COLS) + local row = floor(cell / ARROW_SHEET_COLS) + local xstart = (column * ARROW_CELL_W) / ARROW_SHEET_SIZE + local ystart = (row * ARROW_CELL_H) / ARROW_SHEET_SIZE + local xend = ((column + 1) * ARROW_CELL_W) / ARROW_SHEET_SIZE + local yend = ((row + 1) * ARROW_CELL_H) / ARROW_SHEET_SIZE + + -- Avoid bleeding from neighboring cells when texture filtering is enabled. + local padX = 0.5 / ARROW_SHEET_SIZE + local padY = 0.5 / ARROW_SHEET_SIZE + xstart = xstart + padX + ystart = ystart + padY + xend = xend - padX + yend = yend - padY + + -- Calculate distance and alpha + local dist = HBD:GetWorldDistance(targetInstance, playerX, playerY, targetX, targetY) + if dist then + local area = 1 + local alpha = dist - area + alpha = alpha > 1 and 1 or alpha + alpha = alpha < 0.5 and 0.5 or alpha + + local texalpha = (1 - alpha) * 2 + texalpha = texalpha > 1 and 1 or texalpha + texalpha = texalpha < 0 and 0 or texalpha + + r, g, b = r + texalpha, g + texalpha, b + texalpha + + self.arrow:SetTexCoord(xstart, xend, ystart, yend) + self.arrow:SetVertexColor(r, g, b) + self.arrow:SetAlpha(alpha) + + local distText = string.format("%.1f", dist) + self.distance:SetText("Distance: " .. distText) + end + + -- Update title and icon when target changes + if target ~= self._lastTarget then + self._lastTarget = target + + local title = target.title or "" + if target.questLevel then + title = "[" .. target.questLevel .. "] " .. title + end + self.title:SetText(Questie:Colorize(title, "gold")) + + if target.iconPath then + self.icon:SetTexture(target.iconPath) + self.icon:Show() + else + self.icon:Hide() + end + end + end) + + arrowFrame:Hide() +end + +local function EnsureDriverFrame() + if driverFrame then + return + end + + driverFrame = CreateFrame("Frame", "QuestieArrowDriverFrame", UIParent) + driverFrame:Show() + driverFrame._lastRecalc = 0 + + driverFrame:SetScript("OnUpdate", function(self) + local now = GetTime() + if (self._lastRecalc or 0) + RECALC_NEAREST_SECONDS < now then + self._lastRecalc = now + if not _IsArrowEnabled() then + if arrowFrame then + arrowFrame:Hide() + end + return + end + QuestieArrow:Refresh() + end + end) +end + +-- Gather all objectives from tracked quests and sort by distance +function QuestieArrow:UpdateNearestTargets() + -- Don't override manual targets with auto-updates + if hasManualTarget then + return + end + + sortedTargets = {} + + if not Questie.db or not Questie.db.char then + return + end + + local playerX, playerY, playerInstance = HBD:GetPlayerWorldPosition() + if not playerX or not playerY or not playerInstance then + return + end + + local tracked = Questie.db.char.TrackedQuests or {} + local hasTracked = next(tracked) ~= nil + + -- Auto mode logic: If autoTrack is on OR NOTHING is tracked + local usingAutoLogic = Questie.db.profile.autoTrackQuests or not hasTracked + local playerZoneId = QuestiePlayer:GetCurrentZoneId() + + local function _CollectQuestTargets(quest) + if not quest then + return + end + + -- Avoid spamming QuestieQuest:PopulateQuestLogInfo (it can trigger marker rebuilds and flicker). + -- Only populate when objective completion flags are missing, and throttle per quest id. + if QuestieQuest and QuestieQuest.PopulateQuestLogInfo and quest.Id then + local needsPopulate = false + + if not quest.Objectives and not quest.SpecialObjectives then + needsPopulate = true + else + local function _HasMissingCompletedFlag(list) + if not list then return false end + for _, obj in pairs(list) do + if obj and obj.Completed == nil then + return true + end + end + return false + end + + if _HasMissingCompletedFlag(quest.Objectives) or _HasMissingCompletedFlag(quest.SpecialObjectives) then + needsPopulate = true + end + end + + if needsPopulate then + local now = GetTime() + local last = lastPopulateByQuestId[quest.Id] or 0 + if (last + 2.0) < now then + lastPopulateByQuestId[quest.Id] = now + QuestieQuest:PopulateQuestLogInfo(quest) + end + end + end + + local isComplete = quest.isComplete or (QuestieDB.IsComplete(quest.Id) == 1) + if isComplete then + quest.isComplete = true + end + + local function _GetCompleteIconType() + local iconType = Questie.ICON_TYPE_COMPLETE + if QuestieDB and QuestieDB.IsActiveEventQuest and QuestieDB.IsActiveEventQuest(quest.Id) then + iconType = Questie.ICON_TYPE_EVENTQUEST_COMPLETE + elseif QuestieDB and QuestieDB.IsPvPQuest and QuestieDB.IsPvPQuest(quest.Id) then + iconType = Questie.ICON_TYPE_PVPQUEST_COMPLETE + elseif quest.IsRepeatable then + iconType = Questie.ICON_TYPE_REPEATABLE_COMPLETE + end + return iconType + end + + local function _CollectFinisherSpawns(finisher) + if not finisher then + return + end + + local iconPath = ResolveIconTexture(_GetCompleteIconType()) + + if finisher.spawns then + for finisherZone, spawns in pairs(finisher.spawns) do + if finisherZone and spawns then + for _, coords in ipairs(spawns) do + if coords and coords[1] and coords[2] then + if coords[1] == -1 or coords[2] == -1 then + local dungeonLocation = ZoneDB:GetDungeonLocation(finisherZone) + if dungeonLocation then + for _, value in ipairs(dungeonLocation) do + local zone = value[1] + local x = value[2] + local y = value[3] + -- Auto Logic: Hide distant quests (different zone) + if not (usingAutoLogic and zone ~= playerZoneId) then + local uiMapId = ZoneDB:GetUiMapIdByAreaId(zone) + if uiMapId and x and y then + local targetX, targetY, targetInstance = HBD:GetWorldCoordinatesFromZone(x / 100.0, y / 100.0, uiMapId) + if targetX and targetY and targetInstance then + local dist = HBD:GetWorldDistance(targetInstance, playerX, playerY, targetX, targetY) + if dist then + if targetInstance ~= playerInstance then + dist = 500000 + dist * 100 + end + table.insert(sortedTargets, { + x = x, y = y, uiMapId = uiMapId, title = quest.name, questLevel = quest.level, iconPath = iconPath, distance = dist, + }) + end + end + end + end + end + end + else + -- Auto Logic: Hide distant quests (different zone) + if not (usingAutoLogic and finisherZone ~= playerZoneId) then + local x = coords[1] + local y = coords[2] + local uiMapId = ZoneDB:GetUiMapIdByAreaId(finisherZone) + if uiMapId then + local targetX, targetY, targetInstance = HBD:GetWorldCoordinatesFromZone(x / 100.0, y / 100.0, uiMapId) + if targetX and targetY and targetInstance then + local dist = HBD:GetWorldDistance(targetInstance, playerX, playerY, targetX, targetY) + if dist then + if targetInstance ~= playerInstance then + dist = 500000 + dist * 100 + end + table.insert(sortedTargets, { + x = x, y = y, uiMapId = uiMapId, title = quest.name, questLevel = quest.level, iconPath = iconPath, distance = dist, + }) + end + end + end + end + end + end + end + end + end + end + + if finisher.waypoints then + for zone, waypoints in pairs(finisher.waypoints) do + -- Auto Logic: Hide distant quests (different zone) + if not (usingAutoLogic and zone ~= playerZoneId) then + if waypoints and waypoints[1] and waypoints[1][1] and waypoints[1][1][1] then + local x = waypoints[1][1][1] + local y = waypoints[1][1][2] + local uiMapId = ZoneDB:GetUiMapIdByAreaId(zone) + if uiMapId and x and y then + local targetX, targetY, targetInstance = HBD:GetWorldCoordinatesFromZone(x / 100.0, y / 100.0, uiMapId) + if targetX and targetY and targetInstance then + local dist = HBD:GetWorldDistance(targetInstance, playerX, playerY, targetX, targetY) + if dist then + if targetInstance ~= playerInstance then + dist = 500000 + dist * 100 + end + table.insert(sortedTargets, { + x = x, y = y, uiMapId = uiMapId, title = quest.name, questLevel = quest.level, iconPath = iconPath, distance = dist, + }) + end + end + end + end + end + end + end + end + + local function _CollectObjective(objective) + if not objective or not objective.spawnList then + return + end + + if QuestieQuest.ShouldHideObjective(objective) then + return + end + + if objective.Completed == true or objective.Completed == 1 then + return + end + + -- If the objective is numerically fulfilled but the server hasn't sent the Completed flag yet + if objective.Needed and objective.Collected and type(objective.Needed) == "number" and type(objective.Collected) == "number" then + if objective.Collected >= objective.Needed then + return + end + end + + for _, spawnData in pairs(objective.spawnList) do + if spawnData and spawnData.Spawns then + for zone, spawns in pairs(spawnData.Spawns) do + -- Auto Logic: Hide distant quests (different zone) + if not (usingAutoLogic and zone ~= playerZoneId) then + for _, spawn in pairs(spawns) do + local uiMapId = ZoneDB:GetUiMapIdByAreaId(zone) + if uiMapId then + local targetX, targetY, targetInstance = HBD:GetWorldCoordinatesFromZone(spawn[1] / 100.0, spawn[2] / 100.0, uiMapId) + if targetX and targetY and targetInstance then + local dist = HBD:GetWorldDistance(targetInstance, playerX, playerY, targetX, targetY) + if dist then + if targetInstance ~= playerInstance then + dist = 500000 + dist * 100 + end + table.insert(sortedTargets, { + x = spawn[1], y = spawn[2], uiMapId = uiMapId, title = quest.name, questLevel = quest.level, + iconPath = ResolveIconTexture(objective.Icon) or ResolveIconTexture(spawnData and spawnData.Icon), distance = dist, + }) + end + end + end + end + end + end + end + end + end + + -- Main Logic Route for this quest target + if isComplete then + if quest.Finisher and quest.Finisher.Id and quest.Finisher.Type then + local finisher + if quest.Finisher.Type == "monster" and QuestieDB and QuestieDB.GetNPC then + finisher = QuestieDB:GetNPC(quest.Finisher.Id) + elseif quest.Finisher.Type == "object" and QuestieDB and QuestieDB.GetObject then + finisher = QuestieDB:GetObject(quest.Finisher.Id) + end + + _CollectFinisherSpawns(finisher) + end + -- If the quest is complete, do not add normal objectives to the arrow! + return + end + + if quest.Objectives then + for _, objective in pairs(quest.Objectives) do + _CollectObjective(objective) + end + end + if quest.SpecialObjectives then + for _, objective in pairs(quest.SpecialObjectives) do + _CollectObjective(objective) + end + end + end + + if QuestiePlayer and QuestiePlayer.currentQuestlog then + for questId, quest in pairs(QuestiePlayer.currentQuestlog) do + if type(quest) == "table" then + local shouldTrack = false + if usingAutoLogic then + -- If using auto logic (implicit or explicit), verify not explicitly hidden + if not Questie.db.char.AutoUntrackedQuests[questId] then + shouldTrack = true + end + else + -- Strict manual tracking + if Questie.db.char.TrackedQuests[questId] then + shouldTrack = true + end + end + + if shouldTrack then + _CollectQuestTargets(quest) + end + end + end + end + + -- Sort by distance + table.sort(sortedTargets, function(a, b) return a.distance < b.distance end) +end + +function QuestieArrow:Refresh() + if not _IsArrowEnabled() then + if arrowFrame then + arrowFrame:Hide() + end + return + end + + if hasManualTarget then + EnsureArrowFrame() + arrowFrame:Show() + return + end + + QuestieArrow:UpdateNearestTargets() + + EnsureArrowFrame() + if sortedTargets[1] then + arrowFrame:Show() + else + arrowFrame:Hide() + end +end + +-- Manual target setting (called from tracker TomTom bind) +---@param title string +---@param zoneOrUiMapId number +---@param x number +---@param y number +function QuestieArrow:SetTarget(title, zoneOrUiMapId, x, y) + if not _IsArrowEnabled() then + return + end + -- For manual targets, insert at front of sorted list + local uiMapId = ZoneDB:GetUiMapIdByAreaId(zoneOrUiMapId) or zoneOrUiMapId + + hasManualTarget = true + sortedTargets = { { + x = x, + y = y, + uiMapId = uiMapId, + title = title, + distance = 0, -- Manual targets always go first + } } + + EnsureArrowFrame() + arrowFrame:Show() +end + +function QuestieArrow:ClearTarget() + hasManualTarget = false + sortedTargets = {} + + if arrowFrame then + arrowFrame:Hide() + end +end + +function QuestieArrow:Initialize() + EnsureArrowFrame() + + EnsureDriverFrame() + + -- Refresh immediately on tracker updates (quest progress, objective completion, etc.) + if QuestieTracker and QuestieTracker.Update and hooksecurefunc then + local lastTrackerRefresh = 0 + hooksecurefunc(QuestieTracker, "Update", function() + if hasManualTarget or not _IsArrowEnabled() then + return + end + + local now = GetTime() + if (lastTrackerRefresh + TRACKER_REFRESH_THROTTLE_SECONDS) > now then + return + end + + lastTrackerRefresh = now + QuestieArrow:Refresh() + end) + end + + QuestieArrow:Refresh() +end + +-- Debug function to show current arrow target coordinates +function QuestieArrow:PrintTargetCoords() + if not sortedTargets or not sortedTargets[1] then + print("Questie Arrow: No target currently set!") + return + end + local target = sortedTargets[1] + print("Questie Arrow Target:") + print(" Quest: " .. tostring(target.title)) + print(" Level: " .. tostring(target.questLevel)) + print(" Zone Coords: " .. string.format("%.1f, %.1f", target.x, target.y)) + print(" UI Map ID: " .. tostring(target.uiMapId)) + print(" Distance: " .. string.format("%.0f", target.distance)) +end + +-- Also expose sortedTargets for external access +function QuestieArrow:GetTargets() + return sortedTargets +end + +-- Hook into Refresh to show debug info when arrow updates +local _OriginalRefresh = QuestieArrow.Refresh +QuestieArrow.Refresh = function(self, ...) + _OriginalRefresh(self, ...) + -- You can uncomment the line below to see debug output every refresh: + -- QuestieArrow:PrintTargetCoords() +end diff --git a/.history/Modules/Quest/QuestEventHandler_20260222101028.lua b/.history/Modules/Quest/QuestEventHandler_20260222101028.lua new file mode 100644 index 0000000..491ebe2 --- /dev/null +++ b/.history/Modules/Quest/QuestEventHandler_20260222101028.lua @@ -0,0 +1,718 @@ +---@class QuestEventHandler +local QuestEventHandler = QuestieLoader:CreateModule("QuestEventHandler") +---@class QuestEventHandlerPrivate +local _QuestEventHandler = QuestEventHandler.private + +local _QuestLogUpdateQueue = {} -- Helper module +local questLogUpdateQueue = {} -- The actual queue + +---@type QuestEventHandlerPrivate +QuestEventHandler.private = QuestEventHandler.private or {} +---@type QuestLogCache +local QuestLogCache = QuestieLoader:ImportModule("QuestLogCache") +---@type QuestieQuest +local QuestieQuest = QuestieLoader:ImportModule("QuestieQuest") +---@type QuestieJourney +local QuestieJourney = QuestieLoader:ImportModule("QuestieJourney") +---@type QuestieNameplate +local QuestieNameplate = QuestieLoader:ImportModule("QuestieNameplate") +---@type QuestieLib +local QuestieLib = QuestieLoader:ImportModule("QuestieLib") +---@type QuestieDB +local QuestieDB = QuestieLoader:ImportModule("QuestieDB") +---@type QuestieAnnounce +local QuestieAnnounce = QuestieLoader:ImportModule("QuestieAnnounce") +---@type IsleOfQuelDanas +local IsleOfQuelDanas = QuestieLoader:ImportModule("IsleOfQuelDanas") +---@type QuestieCombatQueue +local QuestieCombatQueue = QuestieLoader:ImportModule("QuestieCombatQueue") +---@type QuestieTracker +local QuestieTracker = QuestieLoader:ImportModule("QuestieTracker") +---@type l10n +local l10n = QuestieLoader:ImportModule("l10n") +---@type QuestiePlayer +local QuestiePlayer = QuestieLoader:ImportModule("QuestiePlayer") + +--- COMPATIBILITY --- +local C_Timer = QuestieCompat.C_Timer +local GetQuestLogTitle = QuestieCompat.GetQuestLogTitle +local GetItemInfo = QuestieCompat.GetItemInfo + +local tableRemove = table.remove + +local QUEST_LOG_STATES = { + QUEST_ACCEPTED = "QUEST_ACCEPTED", + QUEST_TURNED_IN = "QUEST_TURNED_IN", + QUEST_REMOVED = "QUEST_REMOVED", + QUEST_ABANDONED = "QUEST_ABANDONED" +} + +local eventFrame = CreateFrame("Frame", "QuestieQuestEventFrame") +local questLog = {} +local questLogUpdateQueueSize = 1 +local skipNextUQLCEvent = false +local doFullQuestLogScan = false +local deletedQuestItem = false + +--- Registers all events that are required for questing (accepting, removing, objective updates, ...) +function QuestEventHandler:RegisterEvents() + Questie:Debug(Questie.DEBUG_DEVELOP, "[Quest Event] RegisterEvents") + eventFrame:RegisterEvent("QUEST_ACCEPTED") + eventFrame:RegisterEvent("QUEST_TURNED_IN") + eventFrame:RegisterEvent("QUEST_REMOVED") + eventFrame:RegisterEvent("QUEST_LOG_UPDATE") + eventFrame:RegisterEvent("QUEST_WATCH_UPDATE") + eventFrame:RegisterEvent("UNIT_QUEST_LOG_CHANGED") + eventFrame:RegisterEvent("ZONE_CHANGED_NEW_AREA") + eventFrame:RegisterEvent("NEW_RECIPE_LEARNED") -- Spell objectives; Runes in SoD count as recipes because "Engraving" is a profession? + --eventFrame:RegisterEvent("SPELLS_CHANGED") -- Spell objectives + eventFrame:RegisterEvent("BAG_UPDATE_DELAYED") -- Catch quest item loots that bypass QUEST_WATCH_UPDATE (e.g. autoloot bots) + + eventFrame:RegisterEvent("PLAYER_INTERACTION_MANAGER_FRAME_HIDE") + + eventFrame:RegisterEvent("CHAT_MSG_COMBAT_FACTION_CHANGE") + eventFrame:SetScript("OnEvent", _QuestEventHandler.OnEvent) + + -- StaticPopup dialog hooks. Deleteing Quest items do not always trigger a Quest Log Update. + hooksecurefunc("StaticPopup_Show", function(...) + -- Hook StaticPopup_Show. If we find the "DELETE_ITEM" dialog, check for Quest Items and notify the player. + local which, text_arg1 = ... + if which == "DELETE_ITEM" then + local quest + local questName + local foundQuestItem = false + + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest] StaticPopup_Show: Item Name: ", text_arg1) + + if deletedQuestItem == true then + deletedQuestItem = false + end + + for questLogIndex = 1, 75 do + local title, _, _, isHeader, _, _, _, questId = GetQuestLogTitle(questLogIndex) + + if (not title) then + break + end + + if (not isHeader) then + quest = QuestieDB.GetQuest(questId) + + if quest then + local info = StaticPopupDialogs[which] + local sourceItemId, soureItemName, sourceItemType, soureClassID + local reqSourceItemId, reqSoureItemName, reqSourceItemType, reqSoureClassID + + if quest.sourceItemId then + sourceItemId = quest.sourceItemId + + if sourceItemId then + soureItemName, _, _, _, _, sourceItemType, _, _, _, _, _, soureClassID = GetItemInfo(sourceItemId) + end + end + + if quest.requiredSourceItems then + reqSourceItemId = quest.requiredSourceItems[1] + + if reqSourceItemId then + reqSoureItemName, _, _, _, _, reqSourceItemType, _, _, _, _, _, reqSoureClassID = GetItemInfo(reqSourceItemId) + end + end + + if sourceItemId and soureItemName and sourceItemType and soureClassID and (sourceItemType == "Quest" or soureClassID == 12) and QuestieDB.QueryItemSingle(sourceItemId, "class") == 12 and text_arg1 == soureItemName then + questName = quest.name + foundQuestItem = true + break + elseif reqSourceItemId and reqSoureItemName and reqSourceItemType and reqSoureClassID and (reqSourceItemType == "Quest" or reqSoureClassID == 12) and QuestieDB.QueryItemSingle(reqSourceItemId, "class") == 12 and text_arg1 == reqSoureItemName then + questName = quest.name + foundQuestItem = true + break + else + if quest.Objectives and #quest.Objectives > 0 then + for _, objective in pairs(quest.Objectives) do + if text_arg1 == objective.Description then + questName = quest.name + foundQuestItem = true + break + end + end + end + end + end + end + end + + if foundQuestItem and quest and questName then + local frame, text + + for i = 1, STATICPOPUP_NUMDIALOGS do + frame = _G["StaticPopup" .. i] + if (frame:IsShown()) and ((frame.text.text_arg1 == text_arg1) or (string.find(frame.text:GetText(), text_arg1))) then + text = _G[frame:GetName() .. "Text"] + break + end + end + + if frame ~= nil and text ~= nil then + local updateText = l10n("Quest Item %%s might be needed for the quest %%s. \n\nAre you sure you want to delete this?") + text:SetFormattedText(updateText, text_arg1, questName) + text.text_arg1 = updateText + + StaticPopup_Resize(frame, which) + deletedQuestItem = true + + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest] StaticPopup_Show: Quest Item Detected. Updating Static Popup.") + end + end + end + end) + + hooksecurefunc("DeleteCursorItem", function() + -- Hook DeleteCursorItem so we know when the player clicks the Accept button + if deletedQuestItem then + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest] DeleteCursorItem: Quest Item deleted. Update all quests.") + + C_Timer.After(0.25, function() + _QuestEventHandler:UpdateAllQuests() + deletedQuestItem = false + end) + end + end) + + _QuestEventHandler:InitQuestLog() +end + +--- On Login mark all quests in the quest log with QUEST_ACCEPTED state +function _QuestEventHandler:InitQuestLog() + -- Fill the QuestLogCache for first time + local cacheMiss, changes = QuestLogCache.CheckForChanges(nil) + -- if cacheMiss then + -- TODO actually can happen in rare edge case if player accepts new quest during questie init. *cough* + -- or if someone managed to overflow game cache already at this point. + --Questie:Error("Did you accept a quest during InitQuestLog? Please report on Github or Discord. Game's quest log cache is not ok. This shouldn't happen. Questie may malfunction.") + -- end + + for questId, _ in pairs(changes) do + questLog[questId] = { + state = QUEST_LOG_STATES.QUEST_ACCEPTED + } + QuestieLib:CacheItemNames(questId) + end +end + +--- Fires when a quest is accepted in anyway. +---@param questLogIndex number +---@param questId number +function _QuestEventHandler:QuestAccepted(questLogIndex, questId) + questId = questId or select(8, GetQuestLogTitle(questLogIndex)) + Questie:Debug(Questie.DEBUG_DEVELOP, "[Quest Event] QUEST_ACCEPTED", questLogIndex, questId) + + if questLog[questId] and questLog[questId].timer then + -- We had a QUEST_REMOVED event which started this timer and now it was accepted again. + -- So the quest was abandoned before, because QUEST_TURNED_IN would have run before QUEST_ACCEPTED. + questLog[questId].timer:Cancel() + questLog[questId].timer = nil + QuestieCombatQueue:Queue(function() + _QuestEventHandler:MarkQuestAsAbandoned(questId) + end) + end + + questLog[questId] = {} + + -- Timed quests do not need a full Quest Log Update. + -- TODO: Add achievement timers later. + local questTimers = GetQuestTimers(questId) + if type(questTimers) == "number" then + skipNextUQLCEvent = false + else + skipNextUQLCEvent = true + end + + QuestieCombatQueue:Queue(function() + QuestieLib:CacheItemNames(questId) + _QuestEventHandler:HandleQuestAccepted(questId) + QuestieTracker:Update() + end) + + Questie:Debug(Questie.DEBUG_DEVELOP, "[Quest Event] QUEST_ACCEPTED - skipNextUQLCEvent - ", skipNextUQLCEvent) +end + +---@param questId number +---@return boolean true @if the function was successful, false otherwise +function _QuestEventHandler:HandleQuestAccepted(questId) + local idx = QuestieCompat.GetQuestLogIndexByID(questId) + if not idx then + _QuestLogUpdateQueue:Insert(function() + return _QuestEventHandler:HandleQuestAccepted(questId) + end) + return false + end + -- We first check the quest objectives and retry in the next QLU event if they are not correct yet + local cacheMiss, changes = QuestLogCache.CheckForChanges({ [questId] = true }) + if cacheMiss then + -- if cacheMiss, no need to check changes as only 1 questId + Questie:Debug(Questie.DEBUG_INFO, "Objectives are not cached yet") + _QuestLogUpdateQueue:Insert(function() + return _QuestEventHandler:HandleQuestAccepted(questId) + end) + + return false + end + + Questie:Debug(Questie.DEBUG_INFO, "Objectives are correct. Calling accept logic. quest:", questId) + questLog[questId].state = QUEST_LOG_STATES.QUEST_ACCEPTED + QuestieQuest:SetObjectivesDirty(questId) + + QuestieJourney:AcceptQuest(questId) + QuestieAnnounce:AcceptedQuest(questId) + + local isLastIslePhase = Questie.db.global.isleOfQuelDanasPhase == IsleOfQuelDanas.MAX_ISLE_OF_QUEL_DANAS_PHASES + if Questie.IsWotlk and (not isLastIslePhase) and IsleOfQuelDanas.CheckForActivePhase(questId) then + QuestieQuest:SmoothReset() + else + QuestieQuest:AcceptQuest(questId) + end + QuestieCompat.C_Timer.After(0.2, function() + QuestieTracker:Update() + end) + return true +end + +--- Fires when a quest is turned in +---@param questId number +---@param xpReward number +---@param moneyReward number +function _QuestEventHandler:QuestTurnedIn(questId, xpReward, moneyReward) + Questie:Debug(Questie.DEBUG_DEVELOP, "[Quest Event] QUEST_TURNED_IN", xpReward, moneyReward, questId) + + -- Block UpdateQuest from redrawing objective pins while completion is in-flight + QuestiePlayer.pendingCompleteQuestIds[questId] = true + + if questLog[questId] and questLog[questId].timer then + -- Cancel the timer so the quest is not marked as abandoned + questLog[questId].timer:Cancel() + questLog[questId].timer = nil + end + + Questie:Debug(Questie.DEBUG_INFO, "Quest:", questId, "was turned in and is completed") + + if questLog[questId] then + -- There are quests which you just turn in so there is no preceding QUEST_ACCEPTED event and questLog[questId] + -- is empty + questLog[questId].state = QUEST_LOG_STATES.QUEST_TURNED_IN + elseif QuestieCompat.Is335 then + questLog[questId] = {state = QUEST_LOG_STATES.QUEST_TURNED_IN} + end + + local parentQuest = QuestieDB.QueryQuestSingle(questId, "parentQuest") + + if parentQuest and parentQuest > 0 then + -- Quests like "The Warsong Reports" have child quests which are just turned in. These child quests only + -- fire QUEST_TURNED_IN + QUEST_LOG_UPDATE + Questie:Debug(Questie.DEBUG_DEVELOP, "Quest:", questId, "Has a Parent Quest - do a full Quest Log check") + doFullQuestLogScan = true + end + + local itemName, _, _, quality, _, itemID = GetQuestLogRewardInfo(GetNumQuestLogRewards(questId), questId) + + if (itemID ~= nil or itemName ~= nil) and quality == 1 then + Questie:Debug(Questie.DEBUG_DEVELOP, "Quest:", questId, "Recieved a possible Quest Item - do a full Quest Log check") + doFullQuestLogScan = true + skipNextUQLCEvent = false + else + skipNextUQLCEvent = true + end + + QuestLogCache.RemoveQuest(questId) + QuestieQuest:SetObjectivesDirty(questId) -- is this necessary? should whole quest.Objectives be cleared at some point of quest removal? + + -- Don't immediately mark as complete, wait for QUEST_REMOVED to confirm it was actually turned in + -- This prevents completed quests from being saved as turned in when abandoned + -- QuestieQuest:CompleteQuest(questId) + -- QuestieJourney:CompleteQuest(questId) + -- QuestieAnnounce:CompletedQuest(questId) + -- questLog[questId] = nil + +QuestieCombatQueue:Queue(function() + QuestieTracker:Update() +end) +end + +--- Fires when a quest is removed from the quest log. This includes turning it in and abandoning it. +---@param questId number +function _QuestEventHandler:QuestRemoved(questId) + Questie:Debug(Questie.DEBUG_DEVELOP, "[Quest Event] QUEST_REMOVED", questId) + doFullQuestLogScan = false + + if (not questLog[questId]) then + questLog[questId] = {} + end + + -- The party members don't care whether a quest was turned in or abandoned, so we can just broadcast here + Questie:SendMessage("QC_ID_BROADCAST_QUEST_REMOVE", questId) + + -- QUEST_TURNED_IN was called before QUEST_REMOVED --> quest was turned in + if questLog[questId].state == QUEST_LOG_STATES.QUEST_TURNED_IN then + Questie:Debug(Questie.DEBUG_INFO, "Quest:", questId, "was turned in before. Completing quest.") + + -- Ensure the guard is set in case QUEST_REMOVED fires before the combat queue drains + QuestiePlayer.pendingCompleteQuestIds[questId] = true + + -- Now that we confirmed the quest was actually turned in (not abandoned), mark it as complete + QuestieQuest:CompleteQuest(questId) + QuestieJourney:CompleteQuest(questId) + QuestieAnnounce:CompletedQuest(questId) + + questLog[questId] = nil + return + end + + -- QUEST_REMOVED can fire before QUEST_TURNED_IN. If QUEST_TURNED_IN is not called after X seconds the quest + -- was abandoned + questLog[questId] = { + state = QUEST_LOG_STATES.QUEST_REMOVED, + timer = C_Timer.NewTicker(1, function() + _QuestEventHandler:MarkQuestAsAbandoned(questId) + end, 1) + } + skipNextUQLCEvent = true + Questie:Debug(Questie.DEBUG_DEVELOP, "[Quest Event] QUEST_REMOVED - skipNextUQLCEvent - ", skipNextUQLCEvent) +end + +---@param questId number +function _QuestEventHandler:MarkQuestAsAbandoned(questId) + Questie:Debug(Questie.DEBUG_DEVELOP, "QuestEventHandler:MarkQuestAsAbandoned") + local questEntry = questLog[questId] + + -- so we don't attempt to index a nil value. + if (not questEntry) then + Questie:Debug(Questie.DEBUG_DEVELOP, "QuestEventHandler:MarkQuestAsAbandoned - questLog entry missing for", questId) + return + end + + if questEntry.state == QUEST_LOG_STATES.QUEST_REMOVED then + -- Check if objectives were completed before the quest was removed. + -- This handles auto-complete quests that disappear from the log without firing QUEST_TURNED_IN properly. + -- If objectives were complete, treat it as a completion (not abandonment) so objective pins get hidden. + local objectivesWereComplete = false + local quest = QuestieDB.GetQuest(questId) + if quest then + local isComplete = QuestieDB.IsComplete(questId) + objectivesWereComplete = (isComplete == 1) + + -- Check for Ebonhold auto-complete quests which might be removed before IsComplete returns 1 + local desc = quest.Description + if type(desc) == "table" then desc = desc[1] end + + if (not objectivesWereComplete) and desc and type(desc) == "string" then + if string.find(desc, "automatically rewarded") then + Questie:Debug(Questie.DEBUG_INFO, "Quest:", questId, "detected as auto-complete by description") + objectivesWereComplete = true + end + end + end + + if objectivesWereComplete then + -- Objectives were complete, so this was likely an auto-complete quest. + -- Mark as complete instead of abandoned so objective pins get hidden. + Questie:Debug(Questie.DEBUG_INFO, "Quest:", questId, "objectives were complete - treating as completed (auto-complete quest)") + questEntry.state = QUEST_LOG_STATES.QUEST_TURNED_IN + + QuestLogCache.RemoveQuest(questId) + QuestieQuest:CompleteQuest(questId) + QuestieJourney:CompleteQuest(questId) + QuestieAnnounce:CompletedQuest(questId) + questLog[questId] = nil + else + Questie:Debug(Questie.DEBUG_INFO, "Quest:", questId, "was abandoned") + questEntry.state = QUEST_LOG_STATES.QUEST_ABANDONED + + QuestLogCache.RemoveQuest(questId) + QuestieQuest:SetObjectivesDirty(questId) -- is this necessary? should whole quest.Objectives be cleared at some point of quest removal? + + QuestieQuest:AbandonedQuest(questId) + QuestieJourney:AbandonQuest(questId) + QuestieAnnounce:AbandonedQuest(questId) + questLog[questId] = nil + end + end +end + +---Fires when the quest log changed in any way. This event fires very often! +function _QuestEventHandler:QuestLogUpdate() + Questie:Debug(Questie.DEBUG_DEVELOP, "[Quest Event] QUEST_LOG_UPDATE") + + local continueQueuing = true + -- Some of the other quest event didn't have the required information and ordered to wait for the next QLU. + -- We are now calling the function which the event added. + while continueQueuing and next(questLogUpdateQueue) do + continueQueuing = _QuestLogUpdateQueue:GetFirst()() + end + + if doFullQuestLogScan then + doFullQuestLogScan = false + -- Function call updates doFullQuestLogScan. Order matters. + _QuestEventHandler:UpdateAllQuests() + else + _QuestEventHandler:CleanupRemovedQuestsFallback() + QuestieCombatQueue:Queue(function() + QuestieTracker:Update() + end) + end +end + +--- Fires whenever a quest objective progressed +---@param questId number +function _QuestEventHandler:QuestWatchUpdate(questId) + Questie:Debug(Questie.DEBUG_DEVELOP, "[Quest Event] QUEST_WATCH_UPDATE", questId) + + -- We do a full scan even though we have the questId because many QUEST_WATCH_UPDATE can fire before + -- a QUEST_LOG_UPDATE. Also not every QUEST_WATCH_UPDATE gets a single QUEST_LOG_UPDATE and doing a full + -- scan is less error prone + doFullQuestLogScan = true +end + +local _UnitQuestLogChangedCallback = function() + -- We also check in here because UNIT_QUEST_LOG_CHANGED is fired before the relevant events + -- (Accept, removed, ...) + if (not skipNextUQLCEvent) then + doFullQuestLogScan = true + else + doFullQuestLogScan = false + skipNextUQLCEvent = false + Questie:Debug(Questie.DEBUG_INFO, "Skipping UnitQuestLogChanged") + end + return true +end + +--- Fires when an objective changed in the quest log of the unitTarget. The required data is not available yet though +---@param unitTarget string +function _QuestEventHandler:UnitQuestLogChanged(unitTarget) + Questie:Debug(Questie.DEBUG_DEVELOP, "[Quest Event] UNIT_QUEST_LOG_CHANGED", unitTarget) + Questie:Debug(Questie.DEBUG_DEVELOP, "[Quest Event] UNIT_QUEST_LOG_CHANGED - skipNextUQLCEvent - ", skipNextUQLCEvent) + + -- There seem to be quests which don't trigger a QUEST_WATCH_UPDATE. + -- We don't add a full check to the queue if skipNextUQLCEvent == true (from QUEST_WATCH_UPDATE or QUEST_TURNED_IN) + if (not skipNextUQLCEvent) then + doFullQuestLogScan = true + _QuestLogUpdateQueue:Insert(_UnitQuestLogChangedCallback) + else + Questie:Debug(Questie.DEBUG_INFO, "Skipping UnitQuestLogChanged") + end + skipNextUQLCEvent = false +end + + +-- Fallback cleanup: some servers remove quests without firing QUEST_REMOVED reliably. +-- This compares Questie's currentQuestlog vs the game's quest log and removes stale quests. +function _QuestEventHandler:CleanupRemovedQuestsFallback() + local gameQuestIds = {} + local numEntries = select(1, GetNumQuestLogEntries()) or 0 + for questLogIndex = 1, numEntries do + local title, _, _, isHeader, _, _, _, qid = GetQuestLogTitle(questLogIndex) + if title and qid and qid > 0 and (not isHeader) then + gameQuestIds[qid] = true + end + end + + if QuestiePlayer and QuestiePlayer.currentQuestlog then + local removedQuestIds = {} + for questId in pairs(QuestiePlayer.currentQuestlog) do + if questId and questId > 0 and (not gameQuestIds[questId]) then + removedQuestIds[#removedQuestIds + 1] = questId + end + end + + for i = 1, #removedQuestIds do + local questId = removedQuestIds[i] + + -- Quest disappeared from log (abandoned or auto-turned-in) + -- Check if this quest was confirmed as turned in (not just objectives complete) + local wasTurnedIn = questLog[questId] and questLog[questId].state == QUEST_LOG_STATES.QUEST_TURNED_IN + local wasAlreadyComplete = Questie.db.char.complete and Questie.db.char.complete[questId] + + QuestLogCache.RemoveQuest(questId) + QuestieQuest:SetObjectivesDirty(questId) + + -- Only mark as complete if it was actually turned in OR already marked complete from previous session + -- Don't use quest.WasComplete because that's set when objectives complete, not when quest is turned in + if wasTurnedIn or wasAlreadyComplete then + QuestieQuest:CompleteQuest(questId) + else + QuestieQuest:AbandonedQuest(questId) + QuestieJourney:AbandonQuest(questId) + QuestieAnnounce:AbandonedQuest(questId) + end + + questLog[questId] = nil + end + + if #removedQuestIds > 0 then + QuestieNameplate:UpdateNameplate() + QuestieCombatQueue:Queue(function() + QuestieTracker:Update() + end) + end + end +end + +--- Does a full scan of the quest log and updates every quest that is in the QUEST_ACCEPTED state and which hash changed +--- since the last check +function _QuestEventHandler:UpdateAllQuests() + Questie:Debug(Questie.DEBUG_INFO, "Running full questlog check") + local questIdsToCheck = {} + + -- TODO replace with a ready table so no need to generate at each call + for questId, data in pairs(questLog) do + if data.state == QUEST_LOG_STATES.QUEST_ACCEPTED then + questIdsToCheck[questId] = true + end + end + + local cacheMiss, changes = QuestLogCache.CheckForChanges(questIdsToCheck) + + if next(changes) then + for questId, objIds in pairs(changes) do + --Questie:Debug(Questie.DEBUG_INFO, "Quest:", questId, "objectives:", table.concat(objIds, ","), "will be updated") + Questie:Debug(Questie.DEBUG_INFO, "Quest:", questId, "will be updated") + QuestieQuest:SetObjectivesDirty(questId) + + QuestieNameplate:UpdateNameplate() + QuestieQuest:UpdateQuest(questId) + end + QuestieCombatQueue:Queue(function() + C_Timer.After(1.0, function() + QuestieTracker:Update() + end) + end) + else + Questie:Debug(Questie.DEBUG_INFO, "Nothing to update") + end + + + _QuestEventHandler:CleanupRemovedQuestsFallback() + + -- Do UpdateAllQuests() again at next QUEST_LOG_UPDATE if there was "cacheMiss" (game's cache and addon's cache didn't have all required data yet) + doFullQuestLogScan = doFullQuestLogScan or cacheMiss +end + +local lastTimeQuestRelatedFrameClosedEvent = -1 +--- Blizzard does not fire any event when quest items are received or retrieved from sources other than looting. +--- So we hook events which fires once or twice after closing certain frames and do a full quest log check. +function _QuestEventHandler:QuestRelatedFrameClosed(event) + local now = math.floor(GetTime()) + -- Don't do update if event fired twice + if lastTimeQuestRelatedFrameClosedEvent ~= now then + Questie:Debug(Questie.DEBUG_DEVELOP, "[Quest Event]", event) + + lastTimeQuestRelatedFrameClosedEvent = now + _QuestEventHandler:UpdateAllQuests() + QuestieTracker:Update() + end +end + +function _QuestEventHandler:ReputationChange() + Questie:Debug(Questie.DEBUG_DEVELOP, "[Quest Event] CHAT_MSG_COMBAT_FACTION_CHANGE") + + -- Reputational quest progression doesn't fire UNIT_QUEST_LOG_CHANGED event, only QUEST_LOG_UPDATE event. + doFullQuestLogScan = true +end + +--- Helper function to insert a callback to the questLogUpdateQueue and increase the index +function _QuestLogUpdateQueue:Insert(callback) + questLogUpdateQueue[questLogUpdateQueueSize] = callback + questLogUpdateQueueSize = questLogUpdateQueueSize + 1 +end + +--- Helper function to retrieve the first element of questLogUpdateQueue +---@return function @The callback that was inserted first into questLogUpdateQueue +function _QuestLogUpdateQueue:GetFirst() + questLogUpdateQueueSize = questLogUpdateQueueSize - 1 + return tableRemove(questLogUpdateQueue, 1) +end + +local trackerMinimizedByDungeon = false +function _QuestEventHandler:ZoneChangedNewArea() + Questie:Debug(Questie.DEBUG_DEVELOP, "[EVENT] ZONE_CHANGED_NEW_AREA") + -- By my tests it takes a full 6-7 seconds for the world to load. There are a lot of + -- backend Questie updates that occur when a player zones in/out of an instance. This + -- is necessary to get everything back into it's "normal" state after all the updates. + local isInInstance, instanceType = IsInInstance() + + if isInInstance then + C_Timer.After(8, function() + Questie:Debug(Questie.DEBUG_DEVELOP, "[EVENT] ZONE_CHANGED_NEW_AREA: Entering Instance") + if Questie.db.profile.hideTrackerInDungeons then + trackerMinimizedByDungeon = true + + QuestieCombatQueue:Queue(function() + QuestieTracker:Collapse() + end) + end + end) + + -- We only want this to fire outside of an instance if the player isn't dead and we need to reset the Tracker + elseif (not Questie.db.char.isTrackerExpanded and not UnitIsGhost("player")) and trackerMinimizedByDungeon == true then + C_Timer.After(8, function() + Questie:Debug(Questie.DEBUG_DEVELOP, "[EVENT] ZONE_CHANGED_NEW_AREA: Exiting Instance") + if Questie.db.profile.hideTrackerInDungeons then + trackerMinimizedByDungeon = false + + QuestieCombatQueue:Queue(function() + QuestieTracker:Expand() + end) + end + end) + end +end + +--- Is executed whenever an event is fired and triggers relevant event handling. +---@param event string +function _QuestEventHandler:OnEvent(event, ...) + if event == "QUEST_ACCEPTED" then + _QuestEventHandler:QuestAccepted(...) + elseif event == "QUEST_TURNED_IN" then + _QuestEventHandler:QuestTurnedIn(...) + elseif event == "QUEST_REMOVED" then + _QuestEventHandler:QuestRemoved(...) + elseif event == "QUEST_LOG_UPDATE" then + _QuestEventHandler:QuestLogUpdate() + elseif event == "QUEST_WATCH_UPDATE" then + _QuestEventHandler:QuestWatchUpdate(...) + elseif event == "UNIT_QUEST_LOG_CHANGED" and select(1, ...) == "player" then + _QuestEventHandler:UnitQuestLogChanged(...) + elseif event == "ZONE_CHANGED_NEW_AREA" then + _QuestEventHandler:ZoneChangedNewArea() + elseif event == "NEW_RECIPE_LEARNED" then + Questie:Debug(Questie.DEBUG_DEVELOP, "[EVENT] NEW_RECIPE_LEARNED (QuestEventHandler)") + doFullQuestLogScan = true -- If this event is related to a spell objective, a QUEST_LOG_UPDATE will be fired afterwards + elseif event == "BAG_UPDATE_DELAYED" then + -- Autoloot bots can bypass the standard loot frame, skipping QUEST_WATCH_UPDATE for the last items looted. + -- Flag a full scan and trigger the update immediately so the tracker refreshes. + doFullQuestLogScan = true + _QuestEventHandler:QuestLogUpdate() + elseif event == "PLAYER_INTERACTION_MANAGER_FRAME_HIDE" then + local eventType = select(1, ...) + if eventType == 1 then + event = "TRADE_CLOSED" + elseif eventType == 5 then + event = "MERCHANT_CLOSED" + elseif eventType == 8 then + event = "BANKFRAME_CLOSED" + elseif eventType == 10 then + event = "GUILDBANKFRAME_CLOSED" + elseif eventType == 12 then + event = "VENDOR_CLOSED" + elseif eventType == 17 then + event = "MAIL_CLOSED" + elseif eventType == 21 then + event = "AUCTION_HOUSE_CLOSED" + else + -- Unknown event which we will simply ignore + return + end + _QuestEventHandler:QuestRelatedFrameClosed(event) + elseif event == "CHAT_MSG_COMBAT_FACTION_CHANGE" then + _QuestEventHandler:ReputationChange() + end +end diff --git a/.history/Modules/Quest/QuestieQuest_20260222020307.lua b/.history/Modules/Quest/QuestieQuest_20260222020307.lua new file mode 100644 index 0000000..63628c2 --- /dev/null +++ b/.history/Modules/Quest/QuestieQuest_20260222020307.lua @@ -0,0 +1,1755 @@ +--- COMPATIBILITY --- +local IsQuestFlaggedCompleted = QuestieCompat.IsQuestFlaggedCompleted or C_QuestLog.IsQuestFlaggedCompleted + +---@class QuestieQuest +local QuestieQuest = QuestieLoader:CreateModule("QuestieQuest") +---@type QuestieQuestPrivate +QuestieQuest.private = QuestieQuest.private or {} +local _QuestieQuest = QuestieQuest.private +------------------------- +--Import modules. +------------------------- +---@type QuestieProfessions +local QuestieProfessions = QuestieLoader:ImportModule("QuestieProfessions") +---@type QuestieReputation +local QuestieReputation = QuestieLoader:ImportModule("QuestieReputation") +---@type QuestieTooltips +local QuestieTooltips = QuestieLoader:ImportModule("QuestieTooltips") +---@type QuestieTracker +local QuestieTracker = QuestieLoader:ImportModule("QuestieTracker") +---@type QuestieDBMIntegration +local QuestieDBMIntegration = QuestieLoader:ImportModule("QuestieDBMIntegration") +---@type QuestieMap +local QuestieMap = QuestieLoader:ImportModule("QuestieMap") +---@type QuestieLib +local QuestieLib = QuestieLoader:ImportModule("QuestieLib") +---@type QuestiePlayer +local QuestiePlayer = QuestieLoader:ImportModule("QuestiePlayer") +---@type TaskQueue +local TaskQueue = QuestieLoader:ImportModule("TaskQueue") +---@type QuestieDB +local QuestieDB = QuestieLoader:ImportModule("QuestieDB") +---@type ZoneDB +local ZoneDB = QuestieLoader:ImportModule("ZoneDB") +---@type QuestieCombatQueue +local QuestieCombatQueue = QuestieLoader:ImportModule("QuestieCombatQueue") +---@type QuestieAnnounce +local QuestieAnnounce = QuestieLoader:ImportModule("QuestieAnnounce") +---@type QuestieMenu +local QuestieMenu = QuestieLoader:ImportModule("QuestieMenu") +---@type l10n +local l10n = QuestieLoader:ImportModule("l10n") +---@type QuestLogCache +local QuestLogCache = QuestieLoader:ImportModule("QuestLogCache") +---@type ThreadLib +local ThreadLib = QuestieLoader:ImportModule("ThreadLib") +---@type AvailableQuests +local AvailableQuests = QuestieLoader:ImportModule("AvailableQuests") + +--- COMPATIBILITY --- +local C_Timer = QuestieCompat.C_Timer +local GetQuestsCompleted = QuestieCompat.GetQuestsCompleted +local xpcall = QuestieCompat.xpcall + +--We should really try and squeeze out all the performance we can, especially in this. +local tostring = tostring; +local tinsert = table.insert; +local pairs = pairs; +local ipairs = ipairs; +local yield = coroutine.yield +local NewThread = ThreadLib.ThreadSimple + +local NOP_FUNCTION = function() +end +local ERR_FUNCTION = function(err) + print(err) + print(debugstack()) +end + +-- forward declaration +local _UnloadAlreadySpawnedIcons +local _RegisterObjectiveTooltips, _DetermineIconsToDraw, _GetIconsSortedByDistance +local _DrawObjectiveIcons, _DrawObjectiveWaypoints + +local HBD = QuestieCompat.HBD or LibStub("HereBeDragonsQuestie-2.0") + +function QuestieQuest:Initialize() + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest]: Getting all completed quests") + Questie.db.char.complete = GetQuestsCompleted() + + QuestieProfessions:Update() + QuestieReputation:Update(true) +end + +---@param category AutoBlacklistString +function QuestieQuest.ResetAutoblacklistCategory(category) + Questie:Debug(Questie.DEBUG_SPAM, "[QuestieQuest]: Resetting autoblacklist category", category) + for questId, questCategory in pairs(QuestieDB.autoBlacklist) do + if questCategory == category then + QuestieDB.autoBlacklist[questId] = nil + end + end +end + +function QuestieQuest:ToggleNotes(showIcons) + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:ToggleNotes] showIcons:", showIcons) + QuestieQuest:GetAllQuestIds() -- add notes that weren't added from previous hidden state + + if showIcons then + _QuestieQuest:ShowQuestIcons() + _QuestieQuest:ShowManualIcons() + else + _QuestieQuest:HideQuestIcons() + _QuestieQuest:HideManualIcons() + end +end + +function _QuestieQuest:ShowQuestIcons() + local trackerHiddenQuests = Questie.db.char.TrackerHiddenQuests + for questId, frameList in pairs(QuestieMap.questIdFrames) do + if (not trackerHiddenQuests) or (not trackerHiddenQuests[questId]) then -- Skip quests which are completely hidden from the Tracker menu + for _, frameName in pairs(frameList) do -- this may seem a bit expensive, but its actually really fast due to the order things are checked + ---@type IconFrame + local icon = _G[frameName]; + if not icon.data then + error("Desync! Icon has not been removed correctly, but has already been reset. Skipping frame \"" .. + frameName .. "\" for quest " .. questId) + else + local objectiveString = tostring(questId) .. " " .. tostring(icon.data.ObjectiveIndex) + if (not Questie.db.char.TrackerHiddenObjectives) or (not Questie.db.char.TrackerHiddenObjectives[objectiveString]) then + if icon ~= nil and icon.hidden and (not icon:ShouldBeHidden()) then + icon:FakeShow() + + if icon.data.lineFrames then + for _, lineIcon in pairs(icon.data.lineFrames) do + lineIcon:FakeShow() + end + end + end + if (icon.data.QuestData.FadeIcons or (icon.data.ObjectiveData and icon.data.ObjectiveData.FadeIcons)) and icon.data.Type ~= "complete" then + icon:FadeOut() + else + icon:FadeIn() + end + end + end + end + end + end +end + +function _QuestieQuest:ShowManualIcons() + for _, frameList in pairs(QuestieMap.manualFrames) do + for _, frameName in pairs(frameList) do + local icon = _G[frameName]; + if icon ~= nil and icon.hidden and (not icon:ShouldBeHidden()) then -- check for function to make sure its a frame + icon:FakeShow() + end + end + end +end + +function _QuestieQuest:HideQuestIcons() + for _, frameList in pairs(QuestieMap.questIdFrames) do + for _, frameName in pairs(frameList) do -- this may seem a bit expensive, but its actually really fast due to the order things are checked + local icon = _G[frameName]; + if icon ~= nil and (not icon.hidden) and icon:ShouldBeHidden() then -- check for function to make sure its a frame + -- Hides Objective Icons + icon:FakeHide() + + -- Hides Objective Tooltips + QuestieTooltips:RemoveQuest(icon.data.Id) + + if icon.data.lineFrames then + for _, lineIcon in pairs(icon.data.lineFrames) do + lineIcon:FakeHide() + end + end + end + if (icon.data.QuestData.FadeIcons or (icon.data.ObjectiveData and icon.data.ObjectiveData.FadeIcons)) and icon.data.Type ~= "complete" then + icon:FadeOut() + else + icon:FadeIn() + end + end + end +end + +function _QuestieQuest:HideManualIcons() + for _, frameList in pairs(QuestieMap.manualFrames) do + for _, frameName in pairs(frameList) do + local icon = _G[frameName]; + if icon ~= nil and (not icon.hidden) and icon:ShouldBeHidden() then -- check for function to make sure its a frame + icon:FakeHide() + end + end + end +end + +function QuestieQuest:ClearAllNotes() + for questId in pairs(QuestiePlayer.currentQuestlog) do + local quest = QuestieDB.GetQuest(questId) + + if not quest then + return + end + + for _, s in pairs(quest.Objectives) do + s.AlreadySpawned = {} + end + + if next(quest.SpecialObjectives) then + for _, s in pairs(quest.SpecialObjectives) do + s.AlreadySpawned = {} + end + end + end + + for _, frameList in pairs(QuestieMap.questIdFrames) do + for _, frameName in pairs(frameList) do + local icon = _G[frameName] + if icon and icon.Unload then + icon:Unload() + end + end + end + + QuestieMap.questIdFrames = {} +end + +function QuestieQuest:ClearAllToolTips() + for questId in pairs(QuestiePlayer.currentQuestlog) do + local quest = QuestieDB.GetQuest(questId) + + if not quest then + return + end + + if quest.Objectives then + for _, objective in pairs(quest.Objectives) do + if objective.hasRegisteredTooltips then + objective.hasRegisteredTooltips = false + end + + if objective.registeredItemTooltips then + objective.registeredItemTooltips = false + end + end + end + + if quest.ObjectiveData then + for _, objective in pairs(quest.ObjectiveData) do + if objective.hasRegisteredTooltips then + objective.hasRegisteredTooltips = false + end + + if objective.registeredItemTooltips then + objective.registeredItemTooltips = false + end + end + end + + if next(quest.SpecialObjectives) then + for _, objective in pairs(quest.SpecialObjectives) do + if objective.hasRegisteredTooltips then + objective.hasRegisteredTooltips = false + end + + if objective.registeredItemTooltips then + objective.registeredItemTooltips = false + end + end + end + end + + QuestieTooltips.lookupByKey = {} + QuestieTooltips.lookupKeyByQuestId = {} +end + +-- This is only needed for SmoothReset(), normally special objectives don't need to update +---@param questId number +local function _UpdateSpecials(questId) + local quest = QuestieDB.GetQuest(questId) + if quest and next(quest.SpecialObjectives) then + for _, objective in pairs(quest.SpecialObjectives) do + local result, err = xpcall(QuestieQuest.PopulateObjective, ERR_FUNCTION, QuestieQuest, quest, 0, objective, + true) + if not result then + Questie:Error("[QuestieQuest]: [SpecialObjectives] " .. + l10n("There was an error populating objectives for %s %s %s %s", quest.name or "No quest name", + quest.Id or "No quest id", 0 or "No objective", err or "No error")); + end + end + end +end + +function QuestieQuest:SmoothReset() + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:SmoothReset]") + if QuestieQuest._isResetting then + QuestieQuest._resetAgain = true + return + end + QuestieQuest._isResetting = true + QuestieQuest._resetNeedsAvailables = false + + -- bit of a hack (there has to be a better way to do logic like this + QuestieDBMIntegration:ClearAll() + local stepTable = { + function() + -- Wait until game cache has quest log okay. + return QuestLogCache.TestGameCache() + end, + function() + return #QuestieMap._mapDrawQueue == 0 and + #QuestieMap._minimapDrawQueue == 0 -- wait until draw queue is finished + end, + function() + QuestieQuest:ClearAllNotes() + QuestieQuest:ClearAllToolTips() + return true + end, + function() + QuestieMenu:OnLogin(true) -- remove icons + return true + end, + function() + return #QuestieMap._mapDrawQueue == 0 and + #QuestieMap._minimapDrawQueue == 0 -- wait until draw queue is finished + end, + function() + -- reset quest log + QuestiePlayer.currentQuestlog = {} + + --- reset the blacklist + QuestieDB.autoBlacklist = {} + + -- make sure complete db is correct + Questie.db.char.complete = GetQuestsCompleted() + QuestieProfessions:Update() + QuestieReputation:Update(true) + + -- populate QuestiePlayer.currentQuestlog + QuestieQuest:GetAllQuestIdsNoObjectives() + QuestieQuest._nextRestQuest = next(QuestiePlayer.currentQuestlog) + return true + end, + function() + QuestieMenu:OnLogin() + return true + end, + function() + QuestieQuest._resetNeedsAvailables = true + AvailableQuests.CalculateAndDrawAll(function() QuestieQuest._resetNeedsAvailables = false end) + return true + end, + function() + for _ = 1, 64 do + if QuestieQuest._nextRestQuest then + QuestieQuest:UpdateQuest(QuestieQuest._nextRestQuest) + _UpdateSpecials(QuestieQuest._nextRestQuest) + QuestieQuest._nextRestQuest = next(QuestiePlayer.currentQuestlog, QuestieQuest._nextRestQuest) + else + QuestieCombatQueue:Queue(function() + C_Timer.After(2.0, function() + QuestieTracker:Update() + end) + end) + break + end + end + return not QuestieQuest._nextRestQuest + end, + function() + return (not QuestieQuest._resetNeedsAvailables) and #QuestieMap._mapDrawQueue == 0 and + #QuestieMap._minimapDrawQueue == 0 + end, + function() + QuestieQuest._isResetting = nil + if QuestieQuest._resetAgain then + QuestieQuest._resetAgain = nil + QuestieQuest:SmoothReset() + end + return true + end + } + local step = 1 + local ticker + ticker = C_Timer.NewTicker(0.01, function() + if stepTable[step]() then + step = step + 1 + if not stepTable[step] then + ticker:Cancel() + end + end + if QuestieQuest._resetAgain and not QuestieQuest._resetNeedsAvailables then -- we can stop the current reset + ticker:Cancel() + QuestieQuest._resetAgain = nil + QuestieQuest._isResetting = nil + QuestieQuest:SmoothReset() + end + end) +end + +---@param questId number +---@return boolean +function QuestieQuest:ShouldShowQuestNotes(questId) + if not Questie.db.profile.hideUntrackedQuestsMapIcons then + return true + end + + local autoWatch = Questie.db.profile.autoTrackQuests + local trackedAuto = autoWatch and + (not Questie.db.char.AutoUntrackedQuests or not Questie.db.char.AutoUntrackedQuests[questId]) + local trackedManual = not autoWatch and (Questie.db.char.TrackedQuests and Questie.db.char.TrackedQuests[questId]) + return trackedAuto or trackedManual +end + +function QuestieQuest:HideQuest(id) + Questie.db.char.hidden[id] = true + QuestieMap:UnloadQuestFrames(id) + QuestieTooltips:RemoveQuest(id) +end + +function QuestieQuest:UnhideQuest(id) + Questie.db.char.hidden[id] = nil + AvailableQuests.CalculateAndDrawAll() +end + +local allianceTournamentMarkerQuests = { [13684] = true, [13685] = true, [13688] = true, [13689] = true, [13690] = true, + [13593] = true, [13703] = true, [13704] = true, [13705] = true, [13706] = true } +local hordeTournamentMarkerQuests = { [13691] = true, [13693] = true, [13694] = true, [13695] = true, [13696] = true, + [13707] = true, [13708] = true, [13709] = true, [13710] = true, [13711] = true } + +---@param questId number +function QuestieQuest:AcceptQuest(questId) + local quest = QuestieDB.GetQuest(questId) + + if quest then + local complete = QuestieDB.IsComplete(questId) + -- If any of these flags exsist then this quest has already once been accepted and is probobly in a failed state + if (quest.WasComplete or quest.isComplete or complete == 0 or complete == -1) and (QuestiePlayer.currentQuestlog[questId]) then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Accepted Quest:", questId, + " Warning: This quest was once accepted and needs to be reset.") + + -- Reset quest log + QuestiePlayer.currentQuestlog[questId] = nil + + -- Reset quest objectives + quest.Objectives = {} + + -- Reset quest flags + quest.WasComplete = nil + quest.isComplete = nil + + -- Reset tooltips + QuestieTooltips:RemoveQuest(questId) + end + + if not QuestiePlayer.currentQuestlog[questId] then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Accepted Quest:", questId) + + QuestiePlayer.currentQuestlog[questId] = quest + + if allianceTournamentMarkerQuests[questId] then + Questie.db.char.complete[13686] = true -- Alliance Tournament Eligibility Marker + elseif hordeTournamentMarkerQuests[questId] then + Questie.db.char.complete[13687] = true -- Horde Tournament Eligibility Marker + end + + TaskQueue:Queue( + -- Get all the Frames for the quest and unload them, the available quest icon for example. + function() QuestieMap:UnloadQuestFrames(questId) end, + -- Make sure there isn't any lingering tooltip data hanging around in the quest table. + function() QuestieTooltips:RemoveQuest(questId) end, + function() + -- Re-accepted quest can be collapsed. Expand it. Especially dailies. + if Questie.db.char.collapsedQuests then + Questie.db.char.collapsedQuests[questId] = nil + end + -- Re-accepted quest can be untracked. Clear it. Especially timed quests. + if Questie.db.char.AutoUntrackedQuests[questId] then + Questie.db.char.AutoUntrackedQuests[questId] = nil + end + end, + function() QuestieQuest:PopulateQuestLogInfo(quest) end, + function() + -- This needs to happen after QuestieQuest:PopulateQuestLogInfo because that is the place where quest.Objectives is generated + Questie:SendMessage("QC_ID_BROADCAST_QUEST_UPDATE", questId) + end, + function() QuestieQuest:PopulateObjectiveNotes(quest) end, + function() AvailableQuests.CalculateAndDrawAll() end, + function() + QuestieCombatQueue:Queue(function() + QuestieTracker:Update() + end) + end + ) + else + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Accepted Quest:", questId, + " Warning: Quest already exists, not adding") + end + end +end + +local allianceChampionMarkerQuests = { [13699] = true, [13713] = true, [13723] = true, [13724] = true, [13725] = true } +local hordeChampionMarkerQuests = { [13726] = true, [13727] = true, [13728] = true, [13729] = true, [13731] = true } + +---@param questId number +function QuestieQuest:CompleteQuest(questId) + -- Skip quests which are turn in only and are not added to the quest log in the first place + local questLogEntry = QuestiePlayer.currentQuestlog[questId] + if questLogEntry then + -- Only reset flags if the entry is a table (not a legacy number) + if type(questLogEntry) == "table" then + questLogEntry.WasComplete = nil + questLogEntry.isComplete = nil + end + QuestiePlayer.currentQuestlog[questId] = nil; + end + + -- Only quests that are daily quests or aren't repeatable should be marked complete, + -- otherwise objectives for repeatable quests won't track correctly - #1433 + if QuestieCompat.Is335 then + QuestieCompat.SetQuestComplete(questId) + else + Questie.db.char.complete[questId] = (not QuestieDB.IsRepeatable(questId)) or QuestieDB.IsDailyQuest(questId) or + QuestieDB.IsWeeklyQuest(questId); + end + + if allianceChampionMarkerQuests[questId] then + Questie.db.char.complete[13700] = true -- Alliance Champion Marker + Questie.db.char.complete[13686] = nil -- Alliance Tournament Eligibility Marker + elseif hordeChampionMarkerQuests[questId] then + Questie.db.char.complete[13701] = true -- Horde Champion Marker + Questie.db.char.complete[13687] = nil -- Horde Tournament Eligibility Marker + end + QuestieMap:UnloadQuestFrames(questId) + + -- Clear the pending-complete guard now that frames are unloaded + if QuestiePlayer.pendingCompleteQuestIds then + QuestiePlayer.pendingCompleteQuestIds[questId] = nil + end + + if (QuestieMap.questIdFrames[questId]) then + Questie:Error("Just removed all frames but the framelist seems to still be there!", questId) + end + + -- Delayed verification to ensure all objective icons are removed + -- This handles race conditions where AvailableQuests might redraw icons or UnloadQuestFrames misses some + C_Timer.After(0.5, function() + if QuestieMap.questIdFrames[questId] then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:CompleteQuest] Lingering frames detected for quest:", + questId, "- forcing cleanup") + QuestieMap:UnloadQuestFrames(questId) + end + end) + + QuestieTooltips:RemoveQuest(questId) + QuestieTracker:RemoveQuest(questId) + QuestieCombatQueue:Queue(function() + QuestieTracker:Update() + end) + + -- TODO: Should this be done first? Because CalculateAndDrawAll looks at QuestieMap.questIdFrames[QuestId] to add available + AvailableQuests.CalculateAndDrawAll() + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Completed Quest:", questId) +end + +---@param questId number +function QuestieQuest:AbandonedQuest(questId) + -- NOTE: Some servers remove quests without firing QUEST_REMOVED reliably. + -- Always cleanup frames/tracker even if the quest isn't currently in QuestiePlayer.currentQuestlog. + if QuestiePlayer.currentQuestlog then + QuestiePlayer.currentQuestlog[questId] = nil + end + + QuestieMap:UnloadQuestFrames(questId) + + local quest = QuestieDB.GetQuest(questId) + if quest then + -- Reset quest objectives + quest.Objectives = {} + + -- Reset quest flags + quest.WasComplete = nil + quest.isComplete = nil + + if allianceTournamentMarkerQuests[questId] then + Questie.db.char.complete[13686] = nil -- Alliance Tournament Eligibility Marker + elseif hordeTournamentMarkerQuests[questId] then + Questie.db.char.complete[13687] = nil -- Horde Tournament Eligibility Marker + end + + local childQuests = QuestieDB.QueryQuestSingle(questId, "childQuests") + if childQuests then + for _, childQuestId in pairs(childQuests) do + Questie.db.char.complete[childQuestId] = nil + QuestLogCache.RemoveQuest(childQuestId) + end + end + end + + AvailableQuests.UnloadUndoable() + + QuestieTracker:RemoveQuest(questId) + QuestieTooltips:RemoveQuest(questId) + QuestieCombatQueue:Queue(function() + QuestieTracker:Update() + end) + + AvailableQuests.CalculateAndDrawAll() + + -- Delayed verification to ensure all objective icons are removed + -- This handles race conditions where QuestieQuest:UpdateQuest might redraw icons + -- just as we are abandoning the quest + C_Timer.After(0.5, function() + if QuestieMap.questIdFrames[questId] then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:AbandonedQuest] Lingering frames detected for quest:", + questId, "- forcing cleanup") + QuestieMap:UnloadQuestFrames(questId) + end + end) + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Abandoned Quest:", questId) +end + +---@param questId number +function QuestieQuest:UpdateQuest(questId) + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:UpdateQuest]", questId) + + ---@type Quest + local quest = QuestieDB.GetQuest(questId) + + local sourceItemId = (quest and tonumber(quest.sourceItemId)) or 0 + + if quest and (not Questie.db.char.complete[questId] or QuestiePlayer.currentQuestlog[questId]) then + -- Skip this update if the quest is mid-completion to avoid redrawing objective pins + -- that CompleteQuest is about to remove via UnloadQuestFrames. + if QuestiePlayer.pendingCompleteQuestIds and QuestiePlayer.pendingCompleteQuestIds[questId] then + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:UpdateQuest] Skipping - quest is pending completion:", questId) + return + end + QuestieQuest:PopulateQuestLogInfo(quest) + + if QuestieQuest:ShouldShowQuestNotes(questId) then + QuestieQuest:UpdateObjectiveNotes(quest) + else + QuestieTooltips:RemoveQuest(questId) + end + + local isComplete = QuestieDB.IsComplete(questId) + + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:UpdateQuest] QuestDB:IsComplete() flag is: " .. isComplete) + + if isComplete == 1 then + -- Quest is complete + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:UpdateQuest] Quest is: Complete!") + + QuestieMap:UnloadQuestFrames(questId) + QuestieQuest:AddFinisher(quest) + quest.WasComplete = true + elseif isComplete == -1 then + -- Failed quests should be shown as available again + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:UpdateQuest] Quest has: Failed!") + + QuestieMap:UnloadQuestFrames(questId) + QuestieTooltips:RemoveQuest(questId) + AvailableQuests.DrawAvailableQuest(quest) + + -- Reset any collapsed quest flags + if Questie.db.char.collapsedQuests then + Questie.db.char.collapsedQuests[questId] = nil + end + elseif isComplete == 0 then + -- Quest was somehow reset back to incomplete after being completed (quest.WasComplete == true). + -- The "or" check looks for a sourceItemId then checks to see if it's NOT in the players bag. + -- Player destroyed quest items? Or some other quest mechanic removed the needed quest item. + -- Check if all objectives are already complete before treating a missing source item as a reset. + -- Some quests use consumable key items (e.g. Cold Iron Key for quest 12843). After using the key + -- the item leaves the bag, making CheckQuestSourceItem return false. Without this guard, Questie + -- would reset the quest and draw the key-drop NPC on the map even though all objectives are done. + local allObjectivesComplete = false + if quest.Objectives and #quest.Objectives > 0 then + local doneCount = 0 + for i = 1, #quest.Objectives do + if quest.Objectives[i] and quest.Objectives[i].Completed == true then + doneCount = doneCount + 1 + end + end + allObjectivesComplete = (doneCount == #quest.Objectives) + end + + if quest and not allObjectivesComplete and (quest.WasComplete or (sourceItemId > 0 and QuestieQuest:CheckQuestSourceItem(questId) == false)) then + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest:UpdateQuest] Quest was once complete or Quest Item(s) were removed. Resetting quest.") + + -- Reset quest objectives + quest.Objectives = {} + + -- Reset quest flags + quest.WasComplete = nil + quest.isComplete = nil + + -- Reset tooltips + QuestieTooltips:RemoveQuest(questId) + + QuestieQuest:CheckQuestSourceItem(questId, true) + QuestieMap:UnloadQuestFrames(questId) + + -- Reset any collapsed quest flags + if Questie.db.char.collapsedQuests then + Questie.db.char.collapsedQuests[questId] = nil + end + + QuestieQuest:PopulateQuestLogInfo(quest) + QuestieQuest:PopulateObjectiveNotes(quest) + AvailableQuests.CalculateAndDrawAll() + else + -- Sometimes objective(s) are all complete but the quest doesn't get flagged as "1". So far the only + -- quests I've found that does this are quests involving an item(s). Checks all objective(s) and if they + -- are all complete, simulate a "Complete Quest" so the quest finisher appears on the map. + if quest.Objectives and #quest.Objectives > 0 then + local numCompleteObjectives = 0 + + for i = 1, #quest.Objectives do + if quest.Objectives[i] and quest.Objectives[i].Completed and quest.Objectives[i].Completed == true then + numCompleteObjectives = numCompleteObjectives + 1 + end + end + + if numCompleteObjectives == #quest.Objectives then + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest:UpdateQuest] All Quest Objective(s) are Complete! Manually setting quest to Complete!") + QuestieMap:UnloadQuestFrames(questId) + QuestieQuest:AddFinisher(quest) + quest.WasComplete = true + quest.isComplete = true + else + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest:UpdateQuest] Quest Objective Status is: " .. + numCompleteObjectives .. ", out of: " .. #quest.Objectives .. ". No updates required.") + end + end + end + end + + Questie:SendMessage("QC_ID_BROADCAST_QUEST_UPDATE", questId) + end +end + +---@param questId number +function QuestieQuest:SetObjectivesDirty(questId) + local quest = QuestieDB.GetQuest(questId) + + if quest then + for _, objective in pairs(quest.Objectives) do + objective.isUpdated = false + end + end +end + +--Run this if you want to update the entire table +function QuestieQuest:GetAllQuestIds() + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest] Getting all quests") + + QuestiePlayer.currentQuestlog = {} + + for questId, data in pairs(QuestLogCache.questLog_DO_NOT_MODIFY) do -- DO NOT MODIFY THE RETURNED TABLE + local quest = QuestieDB.GetQuest(questId) + + if not quest then + if not Questie._sessionWarnings[questId] then + if not Questie.IsSoD then + Questie:Error(l10n( + "The quest %s is missing from Questie's database. Please report this on GitHub or Discord!", + tostring(questId))) + end + Questie._sessionWarnings[questId] = true + end + + QuestiePlayer.currentQuestlog[questId] = questId -- legacy behavior + else + local complete = QuestieDB.IsComplete(questId) + + QuestiePlayer.currentQuestlog[questId] = quest + quest.LocalizedName = data.title + + if complete == -1 then + QuestieQuest:UpdateQuest(questId) + else + -- Only draw the source item objective when the quest is not yet complete. + -- If the quest is complete (complete == 1), the source item was consumed during + -- the quest (e.g. Cold Iron Key for quest 12843) and should not draw its drop NPC. + if complete == 1 then + -- Mark the quest object as complete so QuestieArrow collects finisher spawns + -- instead of objective spawns. Without this, the arrow falls through to the + -- objective collection path and picks up any stale fake item objectives. + quest.isComplete = true + quest.WasComplete = true + else + QuestieQuest:CheckQuestSourceItem(questId, true) + end + QuestieQuest:PopulateQuestLogInfo(quest) + + if QuestieQuest:ShouldShowQuestNotes(questId) then + QuestieQuest:PopulateObjectiveNotes(quest) + else + QuestieTooltips:RemoveQuest(questId) + end + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Adding the quest", questId, + QuestiePlayer.currentQuestlog[questId]) + end + end + + QuestieCombatQueue:Queue(function() + QuestieTracker:Update() + end) +end + +-- This checks and manually adds quest item tooltips for sourceItems +local function _AddSourceItemObjective(quest) + local sourceItemId = tonumber(quest.sourceItemId) or 0 + if sourceItemId <= 0 then + return + end + + local questObjectives = QuestieDB.QueryQuestSingle(quest.Id, "objectives") + local itemObjectives = questObjectives and questObjectives[3] + + -- If sourceItemId is already part of an item objective, do nothing + if itemObjectives then + for _, itemObjectiveIndex in pairs(itemObjectives) do + for _, itemObjectiveId in pairs(itemObjectiveIndex) do + if itemObjectiveId == sourceItemId then + Questie:Debug(Questie.DEBUG_INFO, + "[QuestieQuest:_AddSourceItemObjective] This item is already part of a quest objective.") + return + end + end + end + end + + local itemName = QuestieDB.QueryItemSingle(sourceItemId, "name") + if not itemName then + return + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:_AddSourceItemObjective] Adding Source Item Id for:", sourceItemId) + + local fakeObjective = { + Id = quest.Id, + IsSourceItem = true, + QuestData = quest, + Index = 1, + Needed = 1, + Collected = 1, + text = itemName, + Description = itemName + } + + QuestieTooltips:RegisterObjectiveTooltip(quest.Id, "i_" .. sourceItemId, fakeObjective); +end + +-- This checks and manually adds quest item tooltips for SpellItems +local function _AddSpellItemObjective(quest) + if not quest.SpellItemId then + return + end + + local questObjectives = QuestieDB.QueryQuestSingle(quest.Id, "objectives") + local spellObjectives = questObjectives and questObjectives[6] + if not spellObjectives then + return + end + + local depthIndex = 1 -- TODO: What is better for this? + local needed = (quest.Objectives and quest.Objectives[depthIndex] and quest.Objectives[depthIndex].Needed) or 0 + local collected = (quest.Objectives and quest.Objectives[depthIndex] and quest.Objectives[depthIndex].Collected) or 0 + local desc = (quest.Objectives and quest.Objectives[depthIndex] and quest.Objectives[depthIndex].Description) or "" + + local fakeObjective = { + Id = quest.Id, + IsSourceItem = true, + QuestData = quest, + Index = 1, + Needed = needed, + Collected = collected, + text = nil, + Description = desc, + } + + QuestieTooltips:RegisterObjectiveTooltip(quest.Id, "i_" .. quest.SpellItemId, fakeObjective); +end + + +-- This checks and manually adds quest item tooltips for requiredSourceItems +local function _AddRequiredSourceItemObjective(quest) + if not quest.requiredSourceItems then + return + end + + local questObjectives = QuestieDB.QueryQuestSingle(quest.Id, "objectives") + local itemObjectives = questObjectives and questObjectives[3] + + for index, requiredSourceItemId in pairs(quest.requiredSourceItems) do + local alreadyInObjectives = false + + if itemObjectives then + for _, itemObjectiveIndex in pairs(itemObjectives) do + for _, itemObjectiveId in pairs(itemObjectiveIndex) do + if itemObjectiveId == requiredSourceItemId or quest.sourceItemId == requiredSourceItemId then + Questie:Debug(Questie.DEBUG_INFO, + "[QuestieQuest:_AddRequiredSourceItemObjective] This item is already part of a quest objective.") + alreadyInObjectives = true + break + end + end + if alreadyInObjectives then + break + end + end + end + + if not alreadyInObjectives then + local itemName = QuestieDB.QueryItemSingle(requiredSourceItemId, "name") + if itemName then + Questie:Debug(Questie.DEBUG_INFO, + "[QuestieQuest:_AddRequiredSourceItemObjective] Adding Source Item Id for:", requiredSourceItemId) + + local fakeObjective = { + Id = quest.Id, + IsRequiredSourceItem = true, + QuestData = quest, + Index = index, + text = itemName, + Description = itemName + } + + QuestieTooltips:RegisterObjectiveTooltip(quest.Id, "i_" .. requiredSourceItemId, fakeObjective); + end + end + end +end + + + +function QuestieQuest:GetAllQuestIdsNoObjectives() + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest] Getting all quests without objectives") + QuestiePlayer.currentQuestlog = {} + + for questId, data in pairs(QuestLogCache.questLog_DO_NOT_MODIFY) do -- DO NOT MODIFY THE RETURNED TABLE + local quest = QuestieDB.GetQuest(questId) + + if not quest then + if not Questie._sessionWarnings[questId] then + if not Questie.IsSoD then + Questie:Error(l10n( + "The quest %s is missing from Questie's database. Please report this on GitHub or Discord!", + tostring(questId))) + end + Questie._sessionWarnings[questId] = true + end + + QuestiePlayer.currentQuestlog[questId] = questId + else + QuestiePlayer.currentQuestlog[questId] = quest + quest.LocalizedName = data.title + _AddSourceItemObjective(quest) + _AddRequiredSourceItemObjective(quest) + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Adding the quest", questId, + QuestiePlayer.currentQuestlog[questId]) + end + end +end + +-- iterate all notes, update / remove as needed +---@param quest Quest +function QuestieQuest:UpdateObjectiveNotes(quest) + if (not QuestiePlayer.currentQuestlog) or (not QuestiePlayer.currentQuestlog[quest.Id]) then + return + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] UpdateObjectiveNotes:", quest.Id) + for objectiveIndex, objective in pairs(quest.Objectives) do + local result, err = xpcall(QuestieQuest.PopulateObjective, ERR_FUNCTION, QuestieQuest, quest, objectiveIndex, + objective, false) + if (not result) then + Questie:Debug(Questie.DEBUG_ELEVATED, "[QuestieQuest] There was an error populating objectives for", + quest.name, quest.Id, objectiveIndex, err) + end + end + + if next(quest.SpecialObjectives) then + for _, objective in pairs(quest.SpecialObjectives) do + local result, err = xpcall(QuestieQuest.PopulateObjective, ERR_FUNCTION, QuestieQuest, quest, 0, objective, + true) + if not result then + Questie:Error("[QuestieQuest]: [SpecialObjectives] " .. + l10n("There was an error populating objectives for %s %s %s %s", quest.name or "No quest name", + quest.Id or "No quest id", 0 or "No objective", err or "No error")); + end + end + end +end + +-- This function is used to check the players bags for an item that matches quest.sourceItemId. +-- A good example for this edge case is [18] The Price of Shoes (118) where upon acceptance, Verner's Note (1283) is given +-- to the player and the Quest is immediately flagged as Complete. If the note is destroyed then a slightly modified version +-- of QuestieDB.IsComplete() that uses this function, returns zero allowing the quest updates to properly set the quests state. +---@param questId number @QuestID +---@param makeObjective boolean @If set to true, then this will create an incomplete objective for the missing quest item +---@return boolean @Returns true if quest.sourceItemId matches an item in a players bag +function QuestieQuest:CheckQuestSourceItem(questId, makeObjective) + local quest = QuestieDB.GetQuest(questId) + local sourceItem = true + + -- Ascension/custom quests may omit sourceItemId (nil). Normalize to 0. + local sourceItemId = (quest and tonumber(quest.sourceItemId)) or 0 + + if quest and sourceItemId > 0 then + for bag = -2, 4 do + local numSlots = QuestieCompat.GetContainerNumSlots(bag) or 0 + for slot = 1, numSlots do + local itemId = select(10, QuestieCompat.GetContainerItemInfo(bag, slot)) + if itemId == sourceItemId then + return true + end + end + + sourceItem = false + end + + -- If we are missing the sourceItem for zero objective quests then make an objective for it so the + -- player has a visual indication as to what item is missing and so the quest has a "tag" of some kind. + -- Also double check the quests leaderboard and make sure an objective doesn't already exist. + if (not sourceItem) and makeObjective and (not QuestieQuest:GetAllLeaderBoardDetails(quest.Id)[1]) then + local itemName = QuestieDB.QueryItemSingle(sourceItemId, "name") or ("Item " .. tostring(sourceItemId)) + quest.Objectives = { + [1] = { + Description = itemName, + Type = "item", + Needed = 1, + Collected = 0, + Completed = false, + Id = sourceItemId, + questId = quest.Id + } + } + end + else + return true + end + + return false +end + +local function _GetIconScaleForAvailable() + return Questie.db.profile.availableScale or 1.3 +end + +---@param quest Quest +function QuestieQuest:AddFinisher(quest) + --We should never ever add the quest if IsQuestFlaggedComplete true. + local questId = quest.Id + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Adding finisher for quest", questId) + + local complete = QuestieDB.IsComplete(questId) + + if (QuestiePlayer.currentQuestlog[questId] and (IsQuestFlaggedCompleted(questId) == false) and (complete == 1 or complete == 0) and (not Questie.db.char.complete[questId])) then + local finisher, key + + if quest.Finisher ~= nil then + if quest.Finisher.Type == "monster" then + finisher = QuestieDB:GetNPC(quest.Finisher.Id) + key = "m_" .. quest.Finisher.Id + elseif quest.Finisher.Type == "object" then + finisher = QuestieDB:GetObject(quest.Finisher.Id) + key = "o_" .. quest.Finisher.Id + else + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieQuest] Unhandled finisher type:", quest.Finisher.Type, + questId, quest.name) + end + else + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieQuest] Quest has no finisher:", questId, quest.name) + end + + if finisher ~= nil then + -- Certain race conditions can occur when the NPC/Objects are both the Quest Starter and Quest Finisher + -- which can result in duplicate Quest Title tooltips appearing. DrawAvailableQuest() would have already + -- registered this NPC/Object so, the appropriate tooltip lines are already present. This checks and clears + -- any duplicate keys before registering the Quest Finisher. + + -- Clear duplicate keys if they exist + if QuestieTooltips.lookupByKey[key] then + if QuestieTooltips:GetTooltip(key) ~= nil and #QuestieTooltips:GetTooltip(key) > 1 then + for ttline = 1, #QuestieTooltips:GetTooltip(key) do + for index, line in pairs(QuestieTooltips:GetTooltip(key)) do + if (ttline == index) then + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest] AddFinisher - Removing duplicate Quest Title!") + + -- Remove duplicate Quest Title + QuestieTooltips.lookupByKey[key][tostring(questId) .. " " .. finisher.name] = nil + + -- Now check to see if the dup has a Special Objective + local objText = string.match(line, ".*|cFFcbcbcb.*") + + if objText then + local objIndex + + -- Grab the Special Objective index + if quest.SpecialObjectives[1] then + objIndex = quest.SpecialObjectives[1].Index + end + + if objIndex then + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest] AddFinisher - Removing Special Objective!") + + -- Remove Special Objective Text + QuestieTooltips.lookupByKey[key][tostring(questId) .. " " .. objIndex] = nil + end + end + end + end + end + end + end + + QuestieTooltips:RegisterQuestStartTooltip(questId, finisher.name, finisher.id, key) + + local finisherIcons = {} + local finisherLocs = {} + + for finisherZone, spawns in pairs(finisher.spawns or {}) do + if (finisherZone ~= nil and spawns ~= nil) then + for _, coords in ipairs(spawns) do + local data = { + Id = questId, + Icon = Questie.ICON_TYPE_COMPLETE, + GetIconScale = _GetIconScaleForAvailable, + IconScale = _GetIconScaleForAvailable(), + Type = "complete", + QuestData = quest, + Name = finisher.name, + IsObjectiveNote = false, + } + + if QuestieDB.IsActiveEventQuest(quest.Id) then + data.Icon = Questie.ICON_TYPE_EVENTQUEST_COMPLETE + elseif QuestieDB.IsPvPQuest(quest.Id) then + data.Icon = Questie.ICON_TYPE_PVPQUEST_COMPLETE + elseif quest.IsRepeatable then + data.Icon = Questie.ICON_TYPE_REPEATABLE_COMPLETE + end + + if (coords[1] == -1 or coords[2] == -1) then + local dungeonLocation = ZoneDB:GetDungeonLocation(finisherZone) + if dungeonLocation ~= nil then + for _, value in ipairs(dungeonLocation) do + local zone = value[1]; + local x = value[2]; + local y = value[3]; + + QuestieMap:DrawWorldIcon(data, zone, x, y) + end + end + else + local x = coords[1]; + local y = coords[2]; + + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest] Adding world icon as finisher:", + finisherZone, x, y) + finisherIcons[finisherZone] = QuestieMap:DrawWorldIcon(data, finisherZone, x, y) + + if not finisherLocs[finisherZone] then + finisherLocs[finisherZone] = { x, y } + end + end + end + end + end + + if finisher.waypoints then + for zone, waypoints in pairs(finisher.waypoints) do + if (not ZoneDB.IsDungeonZone(zone)) then + if not finisherIcons[zone] and waypoints[1] and waypoints[1][1] and waypoints[1][1][1] then + local data = { + Id = questId, + Icon = Questie.ICON_TYPE_COMPLETE, + GetIconScale = _GetIconScaleForAvailable, + IconScale = _GetIconScaleForAvailable(), + Type = "complete", + QuestData = quest, + Name = finisher.name, + IsObjectiveNote = false, + } + + if QuestieDB.IsActiveEventQuest(quest.Id) then + data.Icon = Questie.ICON_TYPE_EVENTQUEST_COMPLETE + elseif QuestieDB.IsPvPQuest(quest.Id) then + data.Icon = Questie.ICON_TYPE_PVPQUEST_COMPLETE + elseif quest.IsRepeatable then + data.Icon = Questie.ICON_TYPE_REPEATABLE_COMPLETE + end + + finisherIcons[zone] = QuestieMap:DrawWorldIcon(data, zone, waypoints[1][1][1], + waypoints[1][1][2]) + finisherLocs[zone] = { waypoints[1][1][1], waypoints[1][1][2] } + end + + QuestieMap:DrawWaypoints(finisherIcons[zone], waypoints, zone) + end + end + end + else + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieQuest] finisher or finisher.spawns == nil for questId", + questId) + end + end +end + +---@param objective any +function QuestieQuest.ShouldHideObjective(objective) + if not objective.HideCondition then + return false + end + + if objective.HideCondition.hideIfQuestActive then + local questId = objective.HideCondition.hideIfQuestActive + if QuestiePlayer.currentQuestlog[questId] then + return true + end + end + + return false +end + +---@param quest Quest +---@param objectiveIndex ObjectiveIndex +---@param objective QuestObjective +---@param blockItemTooltips any +function QuestieQuest:PopulateObjective(quest, objectiveIndex, objective, blockItemTooltips) -- must be p-called + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:PopulateObjective]", objective.Description) + + if (not objective.Update) then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:PopulateObjective] - Quest is already updated. --> Exiting!") + return + end + + objective:Update() + + if QuestieQuest.ShouldHideObjective(objective) then + _UnloadAlreadySpawnedIcons(objective) + return + end + + local completed = objective.Completed + local objectiveData = quest.ObjectiveData[objective.Index] or + objective -- the reason for "or objective" is to handle "SpecialObjectives" aka non-listed objectives (demonic runestones for closing the portal) + + if (not objective.spawnList or (not next(objective.spawnList))) and _QuestieQuest.objectiveSpawnListCallTable[objectiveData.Type] then + objective.spawnList = _QuestieQuest.objectiveSpawnListCallTable[objectiveData.Type](objective.Id, objective, + objectiveData); + end + + -- Tooltips should always show. + -- For completed and uncompleted objectives + _RegisterObjectiveTooltips(objective, quest.Id, blockItemTooltips) + + if completed or quest.isComplete then + _UnloadAlreadySpawnedIcons(objective) + return + end + + if (not objective.Color) then + objective.Color = QuestieLib:ColorWheel() + end + + if objective.spawnList and next(objective.spawnList) then + local maxPerType = 300 + + if Questie.db.profile.enableIconLimit and Questie.db.profile.iconLimit < maxPerType then + maxPerType = Questie.db.profile.iconLimit + end + + local closestStarter = QuestieMap:FindClosestStarter() + local objectiveCenter = closestStarter[quest.Id] + + local zoneCount = 0 + local zones = {} + local objectiveZone + + for _, spawnData in pairs(objective.spawnList) do + for zone in pairs(spawnData.Spawns) do + zones[zone] = true + end + end + + for zone in pairs(zones) do + objectiveZone = zone + zoneCount = zoneCount + 1 + end + + if zoneCount == 1 then -- this objective happens in 1 zone, clustering should be relative to that zone + local x, y = HBD:GetWorldCoordinatesFromZone(0.5, 0.5, ZoneDB:GetUiMapIdByAreaId(objectiveZone)) + objectiveCenter = { x = x, y = y } + end + + local iconsToDraw, _ = _DetermineIconsToDraw(quest, objective, objectiveIndex, objectiveCenter) + local icon, iconPerZone = _DrawObjectiveIcons(quest.Id, iconsToDraw, objective, maxPerType) + _DrawObjectiveWaypoints(objective, icon, iconPerZone) + end +end + +_RegisterObjectiveTooltips = function(objective, questId, blockItemTooltips) + Questie:Debug(Questie.DEBUG_INFO, "Registering objective tooltips for", objective.Description) + + if objective.spawnList then + if (not objective.hasRegisteredTooltips) then + for id, spawnData in pairs(objective.spawnList) do + if spawnData.TooltipKey and (not objective.AlreadySpawned[id]) then + QuestieTooltips:RegisterObjectiveTooltip(questId, spawnData.TooltipKey, objective) + end + end + + objective.hasRegisteredTooltips = true + end + else + -- No spawnList and no Id means there is nothing Questie can draw for this objective. + -- This covers server-tracked trigger objectives (e.g. "complete N quests in zone" for + -- quest 50150) which may have any objectiveType from the server, not just "event". + if not objective.Id then + objective.hasRegisteredTooltips = true + return + end + Questie:Error("[QuestieQuest]: [Tooltips] " .. + l10n("There was an error populating objectives for %s %s %s %s", objective.Description or "No objective text", + questId or "No quest id", 0 or "No objective", "No error")) + end + + if (not objective.registeredItemTooltips) and objective.Type == "item" and (not blockItemTooltips) and objective.Id then + local itemName = QuestieDB.QueryItemSingle(objective.Id, "name") + + if itemName then + QuestieTooltips:RegisterObjectiveTooltip(questId, "i_" .. objective.Id, objective) + end + + objective.registeredItemTooltips = true + end +end + +_UnloadAlreadySpawnedIcons = function(objective) + if objective.AlreadySpawned and next(objective.AlreadySpawned) then + for id, spawn in pairs(objective.AlreadySpawned) do + if spawn then + for _, mapIcon in pairs(spawn.mapRefs) do + mapIcon:Unload() + end + for _, minimapIcon in pairs(spawn.minimapRefs) do + minimapIcon:Unload() + end + spawn.mapRefs = {} + spawn.minimapRefs = {} + end + end + objective.AlreadySpawned = {} + end +end + +---@param quest Quest +---@param objective QuestObjective +---@param objectiveIndex ObjectiveIndex +---@param objectiveCenter {x:X, y:Y} +_DetermineIconsToDraw = function(quest, objective, objectiveIndex, objectiveCenter) + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:_DetermineIconsToDraw]") + + local iconsToDraw = {} + local spawnItemId + + for id, spawnData in pairs(objective.spawnList) do + if spawnData.ItemId then + spawnItemId = spawnData.ItemId + end + + if (not objective.Icon) and spawnData.Icon then + objective.Icon = spawnData.Icon + end + + if (not objective.AlreadySpawned[id]) and (not objective.Completed) and Questie.db.profile.enableObjectives then + local data = { + Id = quest.Id, + ObjectiveIndex = objectiveIndex, + QuestData = quest, + ObjectiveData = objective, + Icon = spawnData.Icon, + IconColor = quest.Color, + GetIconScale = spawnData.GetIconScale, + IconScale = spawnData.GetIconScale(), + Name = spawnData.Name, + Type = objective.Type, + ObjectiveTargetId = spawnData.Id + } + + objective.AlreadySpawned[id] = { + data = data, + minimapRefs = {}, + mapRefs = {}, + } + + for zone, spawns in pairs(spawnData.Spawns) do + local uiMapId = ZoneDB:GetUiMapIdByAreaId(zone) + for _, spawn in pairs(spawns) do + if (spawn[1] and spawn[2]) then + local drawIcon = { + AlreadySpawnedId = id, + data = data, + zone = zone, + AreaID = zone, + UiMapID = uiMapId, + x = spawn[1], + y = spawn[2], + worldX = 0, + worldY = 0, + distance = 0, + touched = nil, -- TODO change. This is meant to let lua reserve memory for all keys needed for sure. + } + local x, y, _ = HBD:GetWorldCoordinatesFromZone(drawIcon.x / 100, drawIcon.y / 100, uiMapId) + x = x or 0 + y = y or 0 + -- Cache world coordinates for clustering calculations + drawIcon.worldX = x + drawIcon.worldY = y + -- There are instances when X and Y are not in the same map such as in dungeons etc, we default to 0 if it is not set + -- This will create a distance of 0 but it doesn't matter. + local distance = QuestieLib:Euclid(objectiveCenter.x or 0, objectiveCenter.y or 0, x, y); + drawIcon.distance = distance or 0 -- cache for clustering + -- there can be multiple icons at same distance at different directions + --local distance = floor(distance) + local iconList = iconsToDraw[distance] + if iconList then + iconList[#iconList + 1] = drawIcon + else + iconsToDraw[distance] = { drawIcon } + end + end + end + end + end + end + + return iconsToDraw, spawnItemId +end + +_DrawObjectiveIcons = function(questId, iconsToDraw, objective, maxPerType) + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:_DrawObjectiveIcons] Adding Icons for quest:", questId) + + local spawnedIconCount = 0 + local icon + local iconPerZone = {} + + local range = Questie.db.profile.clusterLevelHotzone + + local iconCount, orderedList = _GetIconsSortedByDistance(iconsToDraw) + + if orderedList[1] and orderedList[1].Icon == Questie.ICON_TYPE_OBJECT then -- new clustering / limit code should prevent problems, always show all object notes + range = range * 0.2; -- Only use 20% of the default range. + end + + local hotzones = QuestieMap.utils:CalcHotzones(orderedList, range, iconCount); + + for i = 1, #hotzones do + local hotzone = hotzones[i] + if (spawnedIconCount > maxPerType) then + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest] Too many icons for quest:", questId) + break; + end + + --Any icondata will do because they are all the same + icon = hotzone[1]; + + local spawnsMapRefs = objective.AlreadySpawned[icon.AlreadySpawnedId].mapRefs + local spawnsMinimapRefs = objective.AlreadySpawned[icon.AlreadySpawnedId].minimapRefs + + local centerX, centerY = QuestieMap.utils.CenterPoint(hotzone) + + local dungeonLocation = ZoneDB:GetDungeonLocation(icon.zone) + + if dungeonLocation and centerX == -1 and centerY == -1 then + if dungeonLocation[2] then -- We have more than 1 instance entrance (e.g. Blackrock dungeons) + local secondDungeonLocation = dungeonLocation[2] + + icon.zone = secondDungeonLocation[1] + centerX = secondDungeonLocation[2] + centerY = secondDungeonLocation[3] + + local iconMap, iconMini = QuestieMap:DrawWorldIcon(icon.data, icon.zone, centerX, centerY) -- clustering code takes care of duplicates as long as min-dist is more than 0 + + if iconMap and iconMini then + iconPerZone[icon.zone] = { iconMap, centerX, centerY } + spawnsMapRefs[#spawnsMapRefs + 1] = iconMap + spawnsMinimapRefs[#spawnsMinimapRefs + 1] = iconMini + end + + spawnedIconCount = spawnedIconCount + 1; + end + + local firstDungeonLocation = dungeonLocation[1] + icon.zone = firstDungeonLocation[1] + centerX = firstDungeonLocation[2] + centerY = firstDungeonLocation[3] + end + + local iconMap, iconMini = QuestieMap:DrawWorldIcon(icon.data, icon.zone, centerX, centerY) -- clustering code takes care of duplicates as long as min-dist is more than 0 + + if iconMap and iconMini then + iconPerZone[icon.zone] = { iconMap, centerX, centerY } + spawnsMapRefs[#spawnsMapRefs + 1] = iconMap + spawnsMinimapRefs[#spawnsMinimapRefs + 1] = iconMini + end + + spawnedIconCount = spawnedIconCount + 1; + end + + return icon, iconPerZone +end + +_GetIconsSortedByDistance = function(icons) + local iconCount = 0; + local orderedList = {} + local distances = {} + + local i = 0 + + for distance in pairs(icons) do + i = i + 1 + distances[i] = distance + end + + table.sort(distances) + + -- use the keys to retrieve the values in the sorted order + for distIndex = 1, #distances do + local iconsAtDisntace = icons[distances[distIndex]] + + for iconIndex = 1, #iconsAtDisntace do + local icon = iconsAtDisntace[iconIndex] + + iconCount = iconCount + 1 + orderedList[iconCount] = icon + end + end + + return iconCount, orderedList +end + +_DrawObjectiveWaypoints = function(objective, icon, iconPerZone) + for _, spawnData in pairs(objective.spawnList) do -- spawnData.Name, spawnData.Spawns + if spawnData.Waypoints then + for zone, waypoints in pairs(spawnData.Waypoints) do + local firstWaypoint = waypoints[1][1] + + if (not iconPerZone[zone]) and icon and firstWaypoint[1] ~= -1 and firstWaypoint[2] ~= -1 then -- spawn an icon in this zone for the mob + local iconMap, iconMini = QuestieMap:DrawWorldIcon(icon.data, zone, firstWaypoint[1], + firstWaypoint[2]) -- clustering code takes care of duplicates as long as min-dist is more than 0 + + if iconMap and iconMini then + iconPerZone[zone] = { iconMap, firstWaypoint[1], firstWaypoint[2] } + tinsert(objective.AlreadySpawned[icon.AlreadySpawnedId].mapRefs, iconMap); + tinsert(objective.AlreadySpawned[icon.AlreadySpawnedId].minimapRefs, iconMini); + end + end + + local ipz = iconPerZone[zone] + + if ipz then + QuestieMap:DrawWaypoints(ipz[1], waypoints, zone, spawnData.Hostile and { 1, 0.2, 0, 0.7 } or nil) + end + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:_DrawObjectiveWaypoints]") + end + end +end + +---@param quest Quest +function QuestieQuest:PopulateObjectiveNotes(quest) -- this should be renamed to PopulateNotes as it also handles finishers now + if (not quest) then + return + end + + if QuestieDB.IsComplete(quest.Id) == 1 then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:PopulateObjectiveNotes] Quest Complete! Adding Finisher for:", + quest.Id) + + QuestieQuest:UpdateQuest(quest.Id) + _AddSourceItemObjective(quest) + _AddRequiredSourceItemObjective(quest) + _AddSpellItemObjective(quest) + + return + end + + if (not quest.Color) then + quest.Color = QuestieLib:ColorWheel() + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:PopulateObjectiveNotes] Populating objectives for:", quest.Id) + + QuestieQuest:UpdateObjectiveNotes(quest) + _AddSourceItemObjective(quest) + _AddRequiredSourceItemObjective(quest) + _AddSpellItemObjective(quest) +end + +---@param quest Quest +---@return true? +function QuestieQuest:PopulateQuestLogInfo(quest) + if (not quest) then + return nil + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:PopulateQuestLogInfo] ", quest.Id) + + local questLogEngtry = QuestLogCache.GetQuest(quest.Id) -- DO NOT MODIFY THE RETURNED TABLE + + if (not questLogEngtry) then return end + + if questLogEngtry.isComplete ~= nil and questLogEngtry.isComplete == 1 then + quest.isComplete = true + end + + --Uses the category order to draw the quests and trusts the database order. + + local questObjectives = QuestieQuest:GetAllLeaderBoardDetails(quest.Id) or {} -- DO NOT MODIFY THE RETURNED TABLE + + for objectiveIndex, objective in pairs(questObjectives) do + if objective.type and string.len(objective.type) > 1 then + if (not quest.ObjectiveData) or (not quest.ObjectiveData[objectiveIndex]) then + Questie:Error(l10n("Missing objective data for quest "), quest.Id, " ", objective.text) + else + if not quest.Objectives[objectiveIndex] then + quest.Objectives[objectiveIndex] = { + Id = quest.ObjectiveData[objectiveIndex].Id, + Index = objectiveIndex, + questId = quest.Id, + _lastUpdate = 0, + Description = objective.text, + spawnList = {}, + AlreadySpawned = {}, + Update = _QuestieQuest.ObjectiveUpdate, + Coordinates = quest.ObjectiveData[objectiveIndex].Coordinates, -- Only for type "event" + RequiredRepValue = quest.ObjectiveData[objectiveIndex].RequiredRepValue + } + end + + quest.Objectives[objectiveIndex]:Update() + end + end + + if (not quest.Objectives[objectiveIndex]) or (not quest.Objectives[objectiveIndex].Id) then + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest:PopulateQuestLogInfo] Error finding entry ID for objective", objectiveIndex, + objective.type, objective.text, "of questId:", quest.Id) + end + end + + -- find special unlisted objectives + if next(quest.SpecialObjectives) then + for index, specialObjective in pairs(quest.SpecialObjectives) do + if (not specialObjective.Description) then + specialObjective.Description = "Special objective" + end + + specialObjective.questId = quest.Id + + if specialObjective.RealObjectiveIndex and quest.Objectives[specialObjective.RealObjectiveIndex] then + -- This specialObjective is an extraObjective and has a RealObjectiveIndex set + specialObjective.Completed = quest.Objectives[specialObjective.RealObjectiveIndex].Completed + specialObjective.Update = function(self) + self.Completed = quest.Objectives[self.RealObjectiveIndex].Completed + end + elseif specialObjective.Type == "item" and specialObjective.Id then + specialObjective.Completed = GetItemCount(specialObjective.Id) > 0 + specialObjective.Update = function(self) + self.Completed = GetItemCount(self.Id) > 0 + end + else + specialObjective.Update = NOP_FUNCTION + end + + specialObjective.Index = 64 + index -- offset to not conflict with real objectives + specialObjective.AlreadySpawned = specialObjective.AlreadySpawned or {} + end + end + + if #quest.Objectives == 0 and #quest.SpecialObjectives == 0 and (not quest.ObjectiveData or #quest.ObjectiveData == 0) and ((quest.triggerEnd and #quest.triggerEnd > 0) or (quest.Finisher and quest.Finisher.Id ~= nil)) then + -- Some quests when picked up will be flagged isComplete == 0 but the quest.Objective table or quest.SpecialObjectives table is nil. This + -- check assumes the Quest should have been flagged questLogEngtry.isComplete == 1. We're specifically looking for a quest.triggerEnd or + -- a quest.Finisher.Id because this might throw an error if there is nothing to populate when we call QuestieQuest:AddFinisher(). + -- We added a check for quest.ObjectiveData to ensure we don't prematurely complete quests that are just waiting for the server to sync their objectives. + QuestieMap:UnloadQuestFrames(quest.Id) + QuestieQuest:AddFinisher(quest) + quest.isComplete = true + end + + return true +end + +---@param self QuestObjective @quest.Objectives[] entry +function _QuestieQuest.ObjectiveUpdate(self) + if self.isUpdated then + return + end + + local questObjectives = QuestieQuest:GetAllLeaderBoardDetails(self.questId) -- DO NOT MODIFY THE RETURNED TABLE + + if questObjectives and questObjectives[self.Index] then + local obj = questObjectives[self.Index] -- DO NOT EDIT THE TABLE + if (obj.type) then + -- fixes for api bug + local numFulfilled = obj.numFulfilled or 0 + local numRequired = obj.numRequired or 0 + local finished = obj.finished or false -- ensure its boolean false and not nil (hack) + + self.Type = obj.type; + self.Description = obj.text + self.Collected = tonumber(numFulfilled); + self.Needed = tonumber(numRequired); + self.Completed = (self.Needed == self.Collected and self.Needed > 0) or + (finished and (self.Needed == 0 or (not self.Needed))) -- some objectives get removed on PLAYER_LOGIN because isComplete is set to true at random???? + -- Mark objective updated + self.isUpdated = true + end + end +end + +---@param questId number +---@return table|nil @DO NOT EDIT RETURNED TABLE +function QuestieQuest:GetAllLeaderBoardDetails(questId) + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:GetAllLeaderBoardDetails] for questId", questId) + + local questObjectives = QuestLogCache.GetQuestObjectives(questId) -- DO NOT MODIFY THE RETURNED TABLE + if (not questObjectives) then return end + + for _, objective in pairs(questObjectives) do -- DO NOT MODIFY THE RETURNED TABLE + -- TODO Move this to QuestEventHandler module or QuestieQuest:AcceptQuest( ) + QuestieQuest:UpdateQuest( ) (accept quest one required to register objectives without progress) + -- TODO After ^^^ moving remove this function and use "QuestLogCache.GetQuest(questId).objectives -- DO NOT MODIFY THE RETURNED TABLE" in place of it. + QuestieAnnounce:ObjectiveChanged(questId, objective.text, objective.numFulfilled, objective.numRequired) + end + + return questObjectives +end + +function QuestieQuest.DrawDailyQuest(questId) + if QuestieDB.IsDoable(questId) then + local quest = QuestieDB.GetQuest(questId) + AvailableQuests.DrawAvailableQuest(quest) + end +end + +return QuestieQuest diff --git a/.history/Modules/Quest/QuestieQuest_20260222022818.lua b/.history/Modules/Quest/QuestieQuest_20260222022818.lua new file mode 100644 index 0000000..b112ded --- /dev/null +++ b/.history/Modules/Quest/QuestieQuest_20260222022818.lua @@ -0,0 +1,1760 @@ +--- COMPATIBILITY --- +local IsQuestFlaggedCompleted = QuestieCompat.IsQuestFlaggedCompleted or C_QuestLog.IsQuestFlaggedCompleted + +---@class QuestieQuest +local QuestieQuest = QuestieLoader:CreateModule("QuestieQuest") +---@type QuestieQuestPrivate +QuestieQuest.private = QuestieQuest.private or {} +local _QuestieQuest = QuestieQuest.private +------------------------- +--Import modules. +------------------------- +---@type QuestieProfessions +local QuestieProfessions = QuestieLoader:ImportModule("QuestieProfessions") +---@type QuestieReputation +local QuestieReputation = QuestieLoader:ImportModule("QuestieReputation") +---@type QuestieTooltips +local QuestieTooltips = QuestieLoader:ImportModule("QuestieTooltips") +---@type QuestieTracker +local QuestieTracker = QuestieLoader:ImportModule("QuestieTracker") +---@type QuestieDBMIntegration +local QuestieDBMIntegration = QuestieLoader:ImportModule("QuestieDBMIntegration") +---@type QuestieMap +local QuestieMap = QuestieLoader:ImportModule("QuestieMap") +---@type QuestieLib +local QuestieLib = QuestieLoader:ImportModule("QuestieLib") +---@type QuestiePlayer +local QuestiePlayer = QuestieLoader:ImportModule("QuestiePlayer") +---@type TaskQueue +local TaskQueue = QuestieLoader:ImportModule("TaskQueue") +---@type QuestieDB +local QuestieDB = QuestieLoader:ImportModule("QuestieDB") +---@type ZoneDB +local ZoneDB = QuestieLoader:ImportModule("ZoneDB") +---@type QuestieCombatQueue +local QuestieCombatQueue = QuestieLoader:ImportModule("QuestieCombatQueue") +---@type QuestieAnnounce +local QuestieAnnounce = QuestieLoader:ImportModule("QuestieAnnounce") +---@type QuestieMenu +local QuestieMenu = QuestieLoader:ImportModule("QuestieMenu") +---@type l10n +local l10n = QuestieLoader:ImportModule("l10n") +---@type QuestLogCache +local QuestLogCache = QuestieLoader:ImportModule("QuestLogCache") +---@type ThreadLib +local ThreadLib = QuestieLoader:ImportModule("ThreadLib") +---@type AvailableQuests +local AvailableQuests = QuestieLoader:ImportModule("AvailableQuests") + +--- COMPATIBILITY --- +local C_Timer = QuestieCompat.C_Timer +local GetQuestsCompleted = QuestieCompat.GetQuestsCompleted +local xpcall = QuestieCompat.xpcall + +--We should really try and squeeze out all the performance we can, especially in this. +local tostring = tostring; +local tinsert = table.insert; +local pairs = pairs; +local ipairs = ipairs; +local yield = coroutine.yield +local NewThread = ThreadLib.ThreadSimple + +local NOP_FUNCTION = function() +end +local ERR_FUNCTION = function(err) + print(err) + print(debugstack()) +end + +-- forward declaration +local _UnloadAlreadySpawnedIcons +local _RegisterObjectiveTooltips, _DetermineIconsToDraw, _GetIconsSortedByDistance +local _DrawObjectiveIcons, _DrawObjectiveWaypoints + +local HBD = QuestieCompat.HBD or LibStub("HereBeDragonsQuestie-2.0") + +function QuestieQuest:Initialize() + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest]: Getting all completed quests") + Questie.db.char.complete = GetQuestsCompleted() + + QuestieProfessions:Update() + QuestieReputation:Update(true) +end + +---@param category AutoBlacklistString +function QuestieQuest.ResetAutoblacklistCategory(category) + Questie:Debug(Questie.DEBUG_SPAM, "[QuestieQuest]: Resetting autoblacklist category", category) + for questId, questCategory in pairs(QuestieDB.autoBlacklist) do + if questCategory == category then + QuestieDB.autoBlacklist[questId] = nil + end + end +end + +function QuestieQuest:ToggleNotes(showIcons) + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:ToggleNotes] showIcons:", showIcons) + QuestieQuest:GetAllQuestIds() -- add notes that weren't added from previous hidden state + + if showIcons then + _QuestieQuest:ShowQuestIcons() + _QuestieQuest:ShowManualIcons() + else + _QuestieQuest:HideQuestIcons() + _QuestieQuest:HideManualIcons() + end +end + +function _QuestieQuest:ShowQuestIcons() + local trackerHiddenQuests = Questie.db.char.TrackerHiddenQuests + for questId, frameList in pairs(QuestieMap.questIdFrames) do + if (not trackerHiddenQuests) or (not trackerHiddenQuests[questId]) then -- Skip quests which are completely hidden from the Tracker menu + for _, frameName in pairs(frameList) do -- this may seem a bit expensive, but its actually really fast due to the order things are checked + ---@type IconFrame + local icon = _G[frameName]; + if not icon.data then + error("Desync! Icon has not been removed correctly, but has already been reset. Skipping frame \"" .. + frameName .. "\" for quest " .. questId) + else + local objectiveString = tostring(questId) .. " " .. tostring(icon.data.ObjectiveIndex) + if (not Questie.db.char.TrackerHiddenObjectives) or (not Questie.db.char.TrackerHiddenObjectives[objectiveString]) then + if icon ~= nil and icon.hidden and (not icon:ShouldBeHidden()) then + icon:FakeShow() + + if icon.data.lineFrames then + for _, lineIcon in pairs(icon.data.lineFrames) do + lineIcon:FakeShow() + end + end + end + if (icon.data.QuestData.FadeIcons or (icon.data.ObjectiveData and icon.data.ObjectiveData.FadeIcons)) and icon.data.Type ~= "complete" then + icon:FadeOut() + else + icon:FadeIn() + end + end + end + end + end + end +end + +function _QuestieQuest:ShowManualIcons() + for _, frameList in pairs(QuestieMap.manualFrames) do + for _, frameName in pairs(frameList) do + local icon = _G[frameName]; + if icon ~= nil and icon.hidden and (not icon:ShouldBeHidden()) then -- check for function to make sure its a frame + icon:FakeShow() + end + end + end +end + +function _QuestieQuest:HideQuestIcons() + for _, frameList in pairs(QuestieMap.questIdFrames) do + for _, frameName in pairs(frameList) do -- this may seem a bit expensive, but its actually really fast due to the order things are checked + local icon = _G[frameName]; + if icon ~= nil and (not icon.hidden) and icon:ShouldBeHidden() then -- check for function to make sure its a frame + -- Hides Objective Icons + icon:FakeHide() + + -- Hides Objective Tooltips + QuestieTooltips:RemoveQuest(icon.data.Id) + + if icon.data.lineFrames then + for _, lineIcon in pairs(icon.data.lineFrames) do + lineIcon:FakeHide() + end + end + end + if (icon.data.QuestData.FadeIcons or (icon.data.ObjectiveData and icon.data.ObjectiveData.FadeIcons)) and icon.data.Type ~= "complete" then + icon:FadeOut() + else + icon:FadeIn() + end + end + end +end + +function _QuestieQuest:HideManualIcons() + for _, frameList in pairs(QuestieMap.manualFrames) do + for _, frameName in pairs(frameList) do + local icon = _G[frameName]; + if icon ~= nil and (not icon.hidden) and icon:ShouldBeHidden() then -- check for function to make sure its a frame + icon:FakeHide() + end + end + end +end + +function QuestieQuest:ClearAllNotes() + for questId in pairs(QuestiePlayer.currentQuestlog) do + local quest = QuestieDB.GetQuest(questId) + + if not quest then + return + end + + for _, s in pairs(quest.Objectives) do + s.AlreadySpawned = {} + end + + if next(quest.SpecialObjectives) then + for _, s in pairs(quest.SpecialObjectives) do + s.AlreadySpawned = {} + end + end + end + + for _, frameList in pairs(QuestieMap.questIdFrames) do + for _, frameName in pairs(frameList) do + local icon = _G[frameName] + if icon and icon.Unload then + icon:Unload() + end + end + end + + QuestieMap.questIdFrames = {} +end + +function QuestieQuest:ClearAllToolTips() + for questId in pairs(QuestiePlayer.currentQuestlog) do + local quest = QuestieDB.GetQuest(questId) + + if not quest then + return + end + + if quest.Objectives then + for _, objective in pairs(quest.Objectives) do + if objective.hasRegisteredTooltips then + objective.hasRegisteredTooltips = false + end + + if objective.registeredItemTooltips then + objective.registeredItemTooltips = false + end + end + end + + if quest.ObjectiveData then + for _, objective in pairs(quest.ObjectiveData) do + if objective.hasRegisteredTooltips then + objective.hasRegisteredTooltips = false + end + + if objective.registeredItemTooltips then + objective.registeredItemTooltips = false + end + end + end + + if next(quest.SpecialObjectives) then + for _, objective in pairs(quest.SpecialObjectives) do + if objective.hasRegisteredTooltips then + objective.hasRegisteredTooltips = false + end + + if objective.registeredItemTooltips then + objective.registeredItemTooltips = false + end + end + end + end + + QuestieTooltips.lookupByKey = {} + QuestieTooltips.lookupKeyByQuestId = {} +end + +-- This is only needed for SmoothReset(), normally special objectives don't need to update +---@param questId number +local function _UpdateSpecials(questId) + local quest = QuestieDB.GetQuest(questId) + if quest and next(quest.SpecialObjectives) then + for _, objective in pairs(quest.SpecialObjectives) do + local result, err = xpcall(QuestieQuest.PopulateObjective, ERR_FUNCTION, QuestieQuest, quest, 0, objective, + true) + if not result then + Questie:Error("[QuestieQuest]: [SpecialObjectives] " .. + l10n("There was an error populating objectives for %s %s %s %s", quest.name or "No quest name", + quest.Id or "No quest id", 0 or "No objective", err or "No error")); + end + end + end +end + +function QuestieQuest:SmoothReset() + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:SmoothReset]") + if QuestieQuest._isResetting then + QuestieQuest._resetAgain = true + return + end + QuestieQuest._isResetting = true + QuestieQuest._resetNeedsAvailables = false + + -- bit of a hack (there has to be a better way to do logic like this + QuestieDBMIntegration:ClearAll() + local stepTable = { + function() + -- Wait until game cache has quest log okay. + return QuestLogCache.TestGameCache() + end, + function() + return #QuestieMap._mapDrawQueue == 0 and + #QuestieMap._minimapDrawQueue == 0 -- wait until draw queue is finished + end, + function() + QuestieQuest:ClearAllNotes() + QuestieQuest:ClearAllToolTips() + return true + end, + function() + QuestieMenu:OnLogin(true) -- remove icons + return true + end, + function() + return #QuestieMap._mapDrawQueue == 0 and + #QuestieMap._minimapDrawQueue == 0 -- wait until draw queue is finished + end, + function() + -- reset quest log + QuestiePlayer.currentQuestlog = {} + + --- reset the blacklist + QuestieDB.autoBlacklist = {} + + -- make sure complete db is correct + Questie.db.char.complete = GetQuestsCompleted() + QuestieProfessions:Update() + QuestieReputation:Update(true) + + -- populate QuestiePlayer.currentQuestlog + QuestieQuest:GetAllQuestIdsNoObjectives() + QuestieQuest._nextRestQuest = next(QuestiePlayer.currentQuestlog) + return true + end, + function() + QuestieMenu:OnLogin() + return true + end, + function() + QuestieQuest._resetNeedsAvailables = true + AvailableQuests.CalculateAndDrawAll(function() QuestieQuest._resetNeedsAvailables = false end) + return true + end, + function() + for _ = 1, 64 do + if QuestieQuest._nextRestQuest then + QuestieQuest:UpdateQuest(QuestieQuest._nextRestQuest) + _UpdateSpecials(QuestieQuest._nextRestQuest) + QuestieQuest._nextRestQuest = next(QuestiePlayer.currentQuestlog, QuestieQuest._nextRestQuest) + else + QuestieCombatQueue:Queue(function() + C_Timer.After(2.0, function() + QuestieTracker:Update() + end) + end) + break + end + end + return not QuestieQuest._nextRestQuest + end, + function() + return (not QuestieQuest._resetNeedsAvailables) and #QuestieMap._mapDrawQueue == 0 and + #QuestieMap._minimapDrawQueue == 0 + end, + function() + QuestieQuest._isResetting = nil + if QuestieQuest._resetAgain then + QuestieQuest._resetAgain = nil + QuestieQuest:SmoothReset() + end + return true + end + } + local step = 1 + local ticker + ticker = C_Timer.NewTicker(0.01, function() + if stepTable[step]() then + step = step + 1 + if not stepTable[step] then + ticker:Cancel() + end + end + if QuestieQuest._resetAgain and not QuestieQuest._resetNeedsAvailables then -- we can stop the current reset + ticker:Cancel() + QuestieQuest._resetAgain = nil + QuestieQuest._isResetting = nil + QuestieQuest:SmoothReset() + end + end) +end + +---@param questId number +---@return boolean +function QuestieQuest:ShouldShowQuestNotes(questId) + if not Questie.db.profile.hideUntrackedQuestsMapIcons then + return true + end + + local autoWatch = Questie.db.profile.autoTrackQuests + local trackedAuto = autoWatch and + (not Questie.db.char.AutoUntrackedQuests or not Questie.db.char.AutoUntrackedQuests[questId]) + local trackedManual = not autoWatch and (Questie.db.char.TrackedQuests and Questie.db.char.TrackedQuests[questId]) + return trackedAuto or trackedManual +end + +function QuestieQuest:HideQuest(id) + Questie.db.char.hidden[id] = true + QuestieMap:UnloadQuestFrames(id) + QuestieTooltips:RemoveQuest(id) +end + +function QuestieQuest:UnhideQuest(id) + Questie.db.char.hidden[id] = nil + AvailableQuests.CalculateAndDrawAll() +end + +local allianceTournamentMarkerQuests = { [13684] = true, [13685] = true, [13688] = true, [13689] = true, [13690] = true, + [13593] = true, [13703] = true, [13704] = true, [13705] = true, [13706] = true } +local hordeTournamentMarkerQuests = { [13691] = true, [13693] = true, [13694] = true, [13695] = true, [13696] = true, + [13707] = true, [13708] = true, [13709] = true, [13710] = true, [13711] = true } + +---@param questId number +function QuestieQuest:AcceptQuest(questId) + local quest = QuestieDB.GetQuest(questId) + + if quest then + local complete = QuestieDB.IsComplete(questId) + -- If any of these flags exsist then this quest has already once been accepted and is probobly in a failed state + if (quest.WasComplete or quest.isComplete or complete == 0 or complete == -1) and (QuestiePlayer.currentQuestlog[questId]) then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Accepted Quest:", questId, + " Warning: This quest was once accepted and needs to be reset.") + + -- Reset quest log + QuestiePlayer.currentQuestlog[questId] = nil + + -- Reset quest objectives + quest.Objectives = {} + + -- Reset quest flags + quest.WasComplete = nil + quest.isComplete = nil + + -- Reset tooltips + QuestieTooltips:RemoveQuest(questId) + end + + if not QuestiePlayer.currentQuestlog[questId] then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Accepted Quest:", questId) + + QuestiePlayer.currentQuestlog[questId] = quest + + if allianceTournamentMarkerQuests[questId] then + Questie.db.char.complete[13686] = true -- Alliance Tournament Eligibility Marker + elseif hordeTournamentMarkerQuests[questId] then + Questie.db.char.complete[13687] = true -- Horde Tournament Eligibility Marker + end + + TaskQueue:Queue( + -- Get all the Frames for the quest and unload them, the available quest icon for example. + function() QuestieMap:UnloadQuestFrames(questId) end, + -- Make sure there isn't any lingering tooltip data hanging around in the quest table. + function() QuestieTooltips:RemoveQuest(questId) end, + function() + -- Re-accepted quest can be collapsed. Expand it. Especially dailies. + if Questie.db.char.collapsedQuests then + Questie.db.char.collapsedQuests[questId] = nil + end + -- Re-accepted quest can be untracked. Clear it. Especially timed quests. + if Questie.db.char.AutoUntrackedQuests[questId] then + Questie.db.char.AutoUntrackedQuests[questId] = nil + end + end, + function() QuestieQuest:PopulateQuestLogInfo(quest) end, + function() + -- This needs to happen after QuestieQuest:PopulateQuestLogInfo because that is the place where quest.Objectives is generated + Questie:SendMessage("QC_ID_BROADCAST_QUEST_UPDATE", questId) + end, + function() QuestieQuest:PopulateObjectiveNotes(quest) end, + function() AvailableQuests.CalculateAndDrawAll() end, + function() + QuestieCombatQueue:Queue(function() + QuestieTracker:Update() + end) + end, + function() + if QuestieArrow and QuestieArrow.Refresh then + QuestieArrow:Refresh() + end + end + ) + else + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Accepted Quest:", questId, + " Warning: Quest already exists, not adding") + end + end +end + +local allianceChampionMarkerQuests = { [13699] = true, [13713] = true, [13723] = true, [13724] = true, [13725] = true } +local hordeChampionMarkerQuests = { [13726] = true, [13727] = true, [13728] = true, [13729] = true, [13731] = true } + +---@param questId number +function QuestieQuest:CompleteQuest(questId) + -- Skip quests which are turn in only and are not added to the quest log in the first place + local questLogEntry = QuestiePlayer.currentQuestlog[questId] + if questLogEntry then + -- Only reset flags if the entry is a table (not a legacy number) + if type(questLogEntry) == "table" then + questLogEntry.WasComplete = nil + questLogEntry.isComplete = nil + end + QuestiePlayer.currentQuestlog[questId] = nil; + end + + -- Only quests that are daily quests or aren't repeatable should be marked complete, + -- otherwise objectives for repeatable quests won't track correctly - #1433 + if QuestieCompat.Is335 then + QuestieCompat.SetQuestComplete(questId) + else + Questie.db.char.complete[questId] = (not QuestieDB.IsRepeatable(questId)) or QuestieDB.IsDailyQuest(questId) or + QuestieDB.IsWeeklyQuest(questId); + end + + if allianceChampionMarkerQuests[questId] then + Questie.db.char.complete[13700] = true -- Alliance Champion Marker + Questie.db.char.complete[13686] = nil -- Alliance Tournament Eligibility Marker + elseif hordeChampionMarkerQuests[questId] then + Questie.db.char.complete[13701] = true -- Horde Champion Marker + Questie.db.char.complete[13687] = nil -- Horde Tournament Eligibility Marker + end + QuestieMap:UnloadQuestFrames(questId) + + -- Clear the pending-complete guard now that frames are unloaded + if QuestiePlayer.pendingCompleteQuestIds then + QuestiePlayer.pendingCompleteQuestIds[questId] = nil + end + + if (QuestieMap.questIdFrames[questId]) then + Questie:Error("Just removed all frames but the framelist seems to still be there!", questId) + end + + -- Delayed verification to ensure all objective icons are removed + -- This handles race conditions where AvailableQuests might redraw icons or UnloadQuestFrames misses some + C_Timer.After(0.5, function() + if QuestieMap.questIdFrames[questId] then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:CompleteQuest] Lingering frames detected for quest:", + questId, "- forcing cleanup") + QuestieMap:UnloadQuestFrames(questId) + end + end) + + QuestieTooltips:RemoveQuest(questId) + QuestieTracker:RemoveQuest(questId) + QuestieCombatQueue:Queue(function() + QuestieTracker:Update() + end) + + -- TODO: Should this be done first? Because CalculateAndDrawAll looks at QuestieMap.questIdFrames[QuestId] to add available + AvailableQuests.CalculateAndDrawAll() + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Completed Quest:", questId) +end + +---@param questId number +function QuestieQuest:AbandonedQuest(questId) + -- NOTE: Some servers remove quests without firing QUEST_REMOVED reliably. + -- Always cleanup frames/tracker even if the quest isn't currently in QuestiePlayer.currentQuestlog. + if QuestiePlayer.currentQuestlog then + QuestiePlayer.currentQuestlog[questId] = nil + end + + QuestieMap:UnloadQuestFrames(questId) + + local quest = QuestieDB.GetQuest(questId) + if quest then + -- Reset quest objectives + quest.Objectives = {} + + -- Reset quest flags + quest.WasComplete = nil + quest.isComplete = nil + + if allianceTournamentMarkerQuests[questId] then + Questie.db.char.complete[13686] = nil -- Alliance Tournament Eligibility Marker + elseif hordeTournamentMarkerQuests[questId] then + Questie.db.char.complete[13687] = nil -- Horde Tournament Eligibility Marker + end + + local childQuests = QuestieDB.QueryQuestSingle(questId, "childQuests") + if childQuests then + for _, childQuestId in pairs(childQuests) do + Questie.db.char.complete[childQuestId] = nil + QuestLogCache.RemoveQuest(childQuestId) + end + end + end + + AvailableQuests.UnloadUndoable() + + QuestieTracker:RemoveQuest(questId) + QuestieTooltips:RemoveQuest(questId) + QuestieCombatQueue:Queue(function() + QuestieTracker:Update() + end) + + AvailableQuests.CalculateAndDrawAll() + + -- Delayed verification to ensure all objective icons are removed + -- This handles race conditions where QuestieQuest:UpdateQuest might redraw icons + -- just as we are abandoning the quest + C_Timer.After(0.5, function() + if QuestieMap.questIdFrames[questId] then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:AbandonedQuest] Lingering frames detected for quest:", + questId, "- forcing cleanup") + QuestieMap:UnloadQuestFrames(questId) + end + end) + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Abandoned Quest:", questId) +end + +---@param questId number +function QuestieQuest:UpdateQuest(questId) + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:UpdateQuest]", questId) + + ---@type Quest + local quest = QuestieDB.GetQuest(questId) + + local sourceItemId = (quest and tonumber(quest.sourceItemId)) or 0 + + if quest and (not Questie.db.char.complete[questId] or QuestiePlayer.currentQuestlog[questId]) then + -- Skip this update if the quest is mid-completion to avoid redrawing objective pins + -- that CompleteQuest is about to remove via UnloadQuestFrames. + if QuestiePlayer.pendingCompleteQuestIds and QuestiePlayer.pendingCompleteQuestIds[questId] then + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:UpdateQuest] Skipping - quest is pending completion:", questId) + return + end + QuestieQuest:PopulateQuestLogInfo(quest) + + if QuestieQuest:ShouldShowQuestNotes(questId) then + QuestieQuest:UpdateObjectiveNotes(quest) + else + QuestieTooltips:RemoveQuest(questId) + end + + local isComplete = QuestieDB.IsComplete(questId) + + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:UpdateQuest] QuestDB:IsComplete() flag is: " .. isComplete) + + if isComplete == 1 then + -- Quest is complete + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:UpdateQuest] Quest is: Complete!") + + QuestieMap:UnloadQuestFrames(questId) + QuestieQuest:AddFinisher(quest) + quest.WasComplete = true + elseif isComplete == -1 then + -- Failed quests should be shown as available again + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:UpdateQuest] Quest has: Failed!") + + QuestieMap:UnloadQuestFrames(questId) + QuestieTooltips:RemoveQuest(questId) + AvailableQuests.DrawAvailableQuest(quest) + + -- Reset any collapsed quest flags + if Questie.db.char.collapsedQuests then + Questie.db.char.collapsedQuests[questId] = nil + end + elseif isComplete == 0 then + -- Quest was somehow reset back to incomplete after being completed (quest.WasComplete == true). + -- The "or" check looks for a sourceItemId then checks to see if it's NOT in the players bag. + -- Player destroyed quest items? Or some other quest mechanic removed the needed quest item. + -- Check if all objectives are already complete before treating a missing source item as a reset. + -- Some quests use consumable key items (e.g. Cold Iron Key for quest 12843). After using the key + -- the item leaves the bag, making CheckQuestSourceItem return false. Without this guard, Questie + -- would reset the quest and draw the key-drop NPC on the map even though all objectives are done. + local allObjectivesComplete = false + if quest.Objectives and #quest.Objectives > 0 then + local doneCount = 0 + for i = 1, #quest.Objectives do + if quest.Objectives[i] and quest.Objectives[i].Completed == true then + doneCount = doneCount + 1 + end + end + allObjectivesComplete = (doneCount == #quest.Objectives) + end + + if quest and not allObjectivesComplete and (quest.WasComplete or (sourceItemId > 0 and QuestieQuest:CheckQuestSourceItem(questId) == false)) then + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest:UpdateQuest] Quest was once complete or Quest Item(s) were removed. Resetting quest.") + + -- Reset quest objectives + quest.Objectives = {} + + -- Reset quest flags + quest.WasComplete = nil + quest.isComplete = nil + + -- Reset tooltips + QuestieTooltips:RemoveQuest(questId) + + QuestieQuest:CheckQuestSourceItem(questId, true) + QuestieMap:UnloadQuestFrames(questId) + + -- Reset any collapsed quest flags + if Questie.db.char.collapsedQuests then + Questie.db.char.collapsedQuests[questId] = nil + end + + QuestieQuest:PopulateQuestLogInfo(quest) + QuestieQuest:PopulateObjectiveNotes(quest) + AvailableQuests.CalculateAndDrawAll() + else + -- Sometimes objective(s) are all complete but the quest doesn't get flagged as "1". So far the only + -- quests I've found that does this are quests involving an item(s). Checks all objective(s) and if they + -- are all complete, simulate a "Complete Quest" so the quest finisher appears on the map. + if quest.Objectives and #quest.Objectives > 0 then + local numCompleteObjectives = 0 + + for i = 1, #quest.Objectives do + if quest.Objectives[i] and quest.Objectives[i].Completed and quest.Objectives[i].Completed == true then + numCompleteObjectives = numCompleteObjectives + 1 + end + end + + if numCompleteObjectives == #quest.Objectives then + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest:UpdateQuest] All Quest Objective(s) are Complete! Manually setting quest to Complete!") + QuestieMap:UnloadQuestFrames(questId) + QuestieQuest:AddFinisher(quest) + quest.WasComplete = true + quest.isComplete = true + else + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest:UpdateQuest] Quest Objective Status is: " .. + numCompleteObjectives .. ", out of: " .. #quest.Objectives .. ". No updates required.") + end + end + end + end + + Questie:SendMessage("QC_ID_BROADCAST_QUEST_UPDATE", questId) + end +end + +---@param questId number +function QuestieQuest:SetObjectivesDirty(questId) + local quest = QuestieDB.GetQuest(questId) + + if quest then + for _, objective in pairs(quest.Objectives) do + objective.isUpdated = false + end + end +end + +--Run this if you want to update the entire table +function QuestieQuest:GetAllQuestIds() + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest] Getting all quests") + + QuestiePlayer.currentQuestlog = {} + + for questId, data in pairs(QuestLogCache.questLog_DO_NOT_MODIFY) do -- DO NOT MODIFY THE RETURNED TABLE + local quest = QuestieDB.GetQuest(questId) + + if not quest then + if not Questie._sessionWarnings[questId] then + if not Questie.IsSoD then + Questie:Error(l10n( + "The quest %s is missing from Questie's database. Please report this on GitHub or Discord!", + tostring(questId))) + end + Questie._sessionWarnings[questId] = true + end + + QuestiePlayer.currentQuestlog[questId] = questId -- legacy behavior + else + local complete = QuestieDB.IsComplete(questId) + + QuestiePlayer.currentQuestlog[questId] = quest + quest.LocalizedName = data.title + + if complete == -1 then + QuestieQuest:UpdateQuest(questId) + else + -- Only draw the source item objective when the quest is not yet complete. + -- If the quest is complete (complete == 1), the source item was consumed during + -- the quest (e.g. Cold Iron Key for quest 12843) and should not draw its drop NPC. + if complete == 1 then + -- Mark the quest object as complete so QuestieArrow collects finisher spawns + -- instead of objective spawns. Without this, the arrow falls through to the + -- objective collection path and picks up any stale fake item objectives. + quest.isComplete = true + quest.WasComplete = true + else + QuestieQuest:CheckQuestSourceItem(questId, true) + end + QuestieQuest:PopulateQuestLogInfo(quest) + + if QuestieQuest:ShouldShowQuestNotes(questId) then + QuestieQuest:PopulateObjectiveNotes(quest) + else + QuestieTooltips:RemoveQuest(questId) + end + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Adding the quest", questId, + QuestiePlayer.currentQuestlog[questId]) + end + end + + QuestieCombatQueue:Queue(function() + QuestieTracker:Update() + end) +end + +-- This checks and manually adds quest item tooltips for sourceItems +local function _AddSourceItemObjective(quest) + local sourceItemId = tonumber(quest.sourceItemId) or 0 + if sourceItemId <= 0 then + return + end + + local questObjectives = QuestieDB.QueryQuestSingle(quest.Id, "objectives") + local itemObjectives = questObjectives and questObjectives[3] + + -- If sourceItemId is already part of an item objective, do nothing + if itemObjectives then + for _, itemObjectiveIndex in pairs(itemObjectives) do + for _, itemObjectiveId in pairs(itemObjectiveIndex) do + if itemObjectiveId == sourceItemId then + Questie:Debug(Questie.DEBUG_INFO, + "[QuestieQuest:_AddSourceItemObjective] This item is already part of a quest objective.") + return + end + end + end + end + + local itemName = QuestieDB.QueryItemSingle(sourceItemId, "name") + if not itemName then + return + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:_AddSourceItemObjective] Adding Source Item Id for:", sourceItemId) + + local fakeObjective = { + Id = quest.Id, + IsSourceItem = true, + QuestData = quest, + Index = 1, + Needed = 1, + Collected = 1, + text = itemName, + Description = itemName + } + + QuestieTooltips:RegisterObjectiveTooltip(quest.Id, "i_" .. sourceItemId, fakeObjective); +end + +-- This checks and manually adds quest item tooltips for SpellItems +local function _AddSpellItemObjective(quest) + if not quest.SpellItemId then + return + end + + local questObjectives = QuestieDB.QueryQuestSingle(quest.Id, "objectives") + local spellObjectives = questObjectives and questObjectives[6] + if not spellObjectives then + return + end + + local depthIndex = 1 -- TODO: What is better for this? + local needed = (quest.Objectives and quest.Objectives[depthIndex] and quest.Objectives[depthIndex].Needed) or 0 + local collected = (quest.Objectives and quest.Objectives[depthIndex] and quest.Objectives[depthIndex].Collected) or 0 + local desc = (quest.Objectives and quest.Objectives[depthIndex] and quest.Objectives[depthIndex].Description) or "" + + local fakeObjective = { + Id = quest.Id, + IsSourceItem = true, + QuestData = quest, + Index = 1, + Needed = needed, + Collected = collected, + text = nil, + Description = desc, + } + + QuestieTooltips:RegisterObjectiveTooltip(quest.Id, "i_" .. quest.SpellItemId, fakeObjective); +end + + +-- This checks and manually adds quest item tooltips for requiredSourceItems +local function _AddRequiredSourceItemObjective(quest) + if not quest.requiredSourceItems then + return + end + + local questObjectives = QuestieDB.QueryQuestSingle(quest.Id, "objectives") + local itemObjectives = questObjectives and questObjectives[3] + + for index, requiredSourceItemId in pairs(quest.requiredSourceItems) do + local alreadyInObjectives = false + + if itemObjectives then + for _, itemObjectiveIndex in pairs(itemObjectives) do + for _, itemObjectiveId in pairs(itemObjectiveIndex) do + if itemObjectiveId == requiredSourceItemId or quest.sourceItemId == requiredSourceItemId then + Questie:Debug(Questie.DEBUG_INFO, + "[QuestieQuest:_AddRequiredSourceItemObjective] This item is already part of a quest objective.") + alreadyInObjectives = true + break + end + end + if alreadyInObjectives then + break + end + end + end + + if not alreadyInObjectives then + local itemName = QuestieDB.QueryItemSingle(requiredSourceItemId, "name") + if itemName then + Questie:Debug(Questie.DEBUG_INFO, + "[QuestieQuest:_AddRequiredSourceItemObjective] Adding Source Item Id for:", requiredSourceItemId) + + local fakeObjective = { + Id = quest.Id, + IsRequiredSourceItem = true, + QuestData = quest, + Index = index, + text = itemName, + Description = itemName + } + + QuestieTooltips:RegisterObjectiveTooltip(quest.Id, "i_" .. requiredSourceItemId, fakeObjective); + end + end + end +end + + + +function QuestieQuest:GetAllQuestIdsNoObjectives() + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest] Getting all quests without objectives") + QuestiePlayer.currentQuestlog = {} + + for questId, data in pairs(QuestLogCache.questLog_DO_NOT_MODIFY) do -- DO NOT MODIFY THE RETURNED TABLE + local quest = QuestieDB.GetQuest(questId) + + if not quest then + if not Questie._sessionWarnings[questId] then + if not Questie.IsSoD then + Questie:Error(l10n( + "The quest %s is missing from Questie's database. Please report this on GitHub or Discord!", + tostring(questId))) + end + Questie._sessionWarnings[questId] = true + end + + QuestiePlayer.currentQuestlog[questId] = questId + else + QuestiePlayer.currentQuestlog[questId] = quest + quest.LocalizedName = data.title + _AddSourceItemObjective(quest) + _AddRequiredSourceItemObjective(quest) + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Adding the quest", questId, + QuestiePlayer.currentQuestlog[questId]) + end + end +end + +-- iterate all notes, update / remove as needed +---@param quest Quest +function QuestieQuest:UpdateObjectiveNotes(quest) + if (not QuestiePlayer.currentQuestlog) or (not QuestiePlayer.currentQuestlog[quest.Id]) then + return + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] UpdateObjectiveNotes:", quest.Id) + for objectiveIndex, objective in pairs(quest.Objectives) do + local result, err = xpcall(QuestieQuest.PopulateObjective, ERR_FUNCTION, QuestieQuest, quest, objectiveIndex, + objective, false) + if (not result) then + Questie:Debug(Questie.DEBUG_ELEVATED, "[QuestieQuest] There was an error populating objectives for", + quest.name, quest.Id, objectiveIndex, err) + end + end + + if next(quest.SpecialObjectives) then + for _, objective in pairs(quest.SpecialObjectives) do + local result, err = xpcall(QuestieQuest.PopulateObjective, ERR_FUNCTION, QuestieQuest, quest, 0, objective, + true) + if not result then + Questie:Error("[QuestieQuest]: [SpecialObjectives] " .. + l10n("There was an error populating objectives for %s %s %s %s", quest.name or "No quest name", + quest.Id or "No quest id", 0 or "No objective", err or "No error")); + end + end + end +end + +-- This function is used to check the players bags for an item that matches quest.sourceItemId. +-- A good example for this edge case is [18] The Price of Shoes (118) where upon acceptance, Verner's Note (1283) is given +-- to the player and the Quest is immediately flagged as Complete. If the note is destroyed then a slightly modified version +-- of QuestieDB.IsComplete() that uses this function, returns zero allowing the quest updates to properly set the quests state. +---@param questId number @QuestID +---@param makeObjective boolean @If set to true, then this will create an incomplete objective for the missing quest item +---@return boolean @Returns true if quest.sourceItemId matches an item in a players bag +function QuestieQuest:CheckQuestSourceItem(questId, makeObjective) + local quest = QuestieDB.GetQuest(questId) + local sourceItem = true + + -- Ascension/custom quests may omit sourceItemId (nil). Normalize to 0. + local sourceItemId = (quest and tonumber(quest.sourceItemId)) or 0 + + if quest and sourceItemId > 0 then + for bag = -2, 4 do + local numSlots = QuestieCompat.GetContainerNumSlots(bag) or 0 + for slot = 1, numSlots do + local itemId = select(10, QuestieCompat.GetContainerItemInfo(bag, slot)) + if itemId == sourceItemId then + return true + end + end + + sourceItem = false + end + + -- If we are missing the sourceItem for zero objective quests then make an objective for it so the + -- player has a visual indication as to what item is missing and so the quest has a "tag" of some kind. + -- Also double check the quests leaderboard and make sure an objective doesn't already exist. + if (not sourceItem) and makeObjective and (not QuestieQuest:GetAllLeaderBoardDetails(quest.Id)[1]) then + local itemName = QuestieDB.QueryItemSingle(sourceItemId, "name") or ("Item " .. tostring(sourceItemId)) + quest.Objectives = { + [1] = { + Description = itemName, + Type = "item", + Needed = 1, + Collected = 0, + Completed = false, + Id = sourceItemId, + questId = quest.Id + } + } + end + else + return true + end + + return false +end + +local function _GetIconScaleForAvailable() + return Questie.db.profile.availableScale or 1.3 +end + +---@param quest Quest +function QuestieQuest:AddFinisher(quest) + --We should never ever add the quest if IsQuestFlaggedComplete true. + local questId = quest.Id + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Adding finisher for quest", questId) + + local complete = QuestieDB.IsComplete(questId) + + if (QuestiePlayer.currentQuestlog[questId] and (IsQuestFlaggedCompleted(questId) == false) and (complete == 1 or complete == 0) and (not Questie.db.char.complete[questId])) then + local finisher, key + + if quest.Finisher ~= nil then + if quest.Finisher.Type == "monster" then + finisher = QuestieDB:GetNPC(quest.Finisher.Id) + key = "m_" .. quest.Finisher.Id + elseif quest.Finisher.Type == "object" then + finisher = QuestieDB:GetObject(quest.Finisher.Id) + key = "o_" .. quest.Finisher.Id + else + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieQuest] Unhandled finisher type:", quest.Finisher.Type, + questId, quest.name) + end + else + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieQuest] Quest has no finisher:", questId, quest.name) + end + + if finisher ~= nil then + -- Certain race conditions can occur when the NPC/Objects are both the Quest Starter and Quest Finisher + -- which can result in duplicate Quest Title tooltips appearing. DrawAvailableQuest() would have already + -- registered this NPC/Object so, the appropriate tooltip lines are already present. This checks and clears + -- any duplicate keys before registering the Quest Finisher. + + -- Clear duplicate keys if they exist + if QuestieTooltips.lookupByKey[key] then + if QuestieTooltips:GetTooltip(key) ~= nil and #QuestieTooltips:GetTooltip(key) > 1 then + for ttline = 1, #QuestieTooltips:GetTooltip(key) do + for index, line in pairs(QuestieTooltips:GetTooltip(key)) do + if (ttline == index) then + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest] AddFinisher - Removing duplicate Quest Title!") + + -- Remove duplicate Quest Title + QuestieTooltips.lookupByKey[key][tostring(questId) .. " " .. finisher.name] = nil + + -- Now check to see if the dup has a Special Objective + local objText = string.match(line, ".*|cFFcbcbcb.*") + + if objText then + local objIndex + + -- Grab the Special Objective index + if quest.SpecialObjectives[1] then + objIndex = quest.SpecialObjectives[1].Index + end + + if objIndex then + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest] AddFinisher - Removing Special Objective!") + + -- Remove Special Objective Text + QuestieTooltips.lookupByKey[key][tostring(questId) .. " " .. objIndex] = nil + end + end + end + end + end + end + end + + QuestieTooltips:RegisterQuestStartTooltip(questId, finisher.name, finisher.id, key) + + local finisherIcons = {} + local finisherLocs = {} + + for finisherZone, spawns in pairs(finisher.spawns or {}) do + if (finisherZone ~= nil and spawns ~= nil) then + for _, coords in ipairs(spawns) do + local data = { + Id = questId, + Icon = Questie.ICON_TYPE_COMPLETE, + GetIconScale = _GetIconScaleForAvailable, + IconScale = _GetIconScaleForAvailable(), + Type = "complete", + QuestData = quest, + Name = finisher.name, + IsObjectiveNote = false, + } + + if QuestieDB.IsActiveEventQuest(quest.Id) then + data.Icon = Questie.ICON_TYPE_EVENTQUEST_COMPLETE + elseif QuestieDB.IsPvPQuest(quest.Id) then + data.Icon = Questie.ICON_TYPE_PVPQUEST_COMPLETE + elseif quest.IsRepeatable then + data.Icon = Questie.ICON_TYPE_REPEATABLE_COMPLETE + end + + if (coords[1] == -1 or coords[2] == -1) then + local dungeonLocation = ZoneDB:GetDungeonLocation(finisherZone) + if dungeonLocation ~= nil then + for _, value in ipairs(dungeonLocation) do + local zone = value[1]; + local x = value[2]; + local y = value[3]; + + QuestieMap:DrawWorldIcon(data, zone, x, y) + end + end + else + local x = coords[1]; + local y = coords[2]; + + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest] Adding world icon as finisher:", + finisherZone, x, y) + finisherIcons[finisherZone] = QuestieMap:DrawWorldIcon(data, finisherZone, x, y) + + if not finisherLocs[finisherZone] then + finisherLocs[finisherZone] = { x, y } + end + end + end + end + end + + if finisher.waypoints then + for zone, waypoints in pairs(finisher.waypoints) do + if (not ZoneDB.IsDungeonZone(zone)) then + if not finisherIcons[zone] and waypoints[1] and waypoints[1][1] and waypoints[1][1][1] then + local data = { + Id = questId, + Icon = Questie.ICON_TYPE_COMPLETE, + GetIconScale = _GetIconScaleForAvailable, + IconScale = _GetIconScaleForAvailable(), + Type = "complete", + QuestData = quest, + Name = finisher.name, + IsObjectiveNote = false, + } + + if QuestieDB.IsActiveEventQuest(quest.Id) then + data.Icon = Questie.ICON_TYPE_EVENTQUEST_COMPLETE + elseif QuestieDB.IsPvPQuest(quest.Id) then + data.Icon = Questie.ICON_TYPE_PVPQUEST_COMPLETE + elseif quest.IsRepeatable then + data.Icon = Questie.ICON_TYPE_REPEATABLE_COMPLETE + end + + finisherIcons[zone] = QuestieMap:DrawWorldIcon(data, zone, waypoints[1][1][1], + waypoints[1][1][2]) + finisherLocs[zone] = { waypoints[1][1][1], waypoints[1][1][2] } + end + + QuestieMap:DrawWaypoints(finisherIcons[zone], waypoints, zone) + end + end + end + else + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieQuest] finisher or finisher.spawns == nil for questId", + questId) + end + end +end + +---@param objective any +function QuestieQuest.ShouldHideObjective(objective) + if not objective.HideCondition then + return false + end + + if objective.HideCondition.hideIfQuestActive then + local questId = objective.HideCondition.hideIfQuestActive + if QuestiePlayer.currentQuestlog[questId] then + return true + end + end + + return false +end + +---@param quest Quest +---@param objectiveIndex ObjectiveIndex +---@param objective QuestObjective +---@param blockItemTooltips any +function QuestieQuest:PopulateObjective(quest, objectiveIndex, objective, blockItemTooltips) -- must be p-called + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:PopulateObjective]", objective.Description) + + if (not objective.Update) then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:PopulateObjective] - Quest is already updated. --> Exiting!") + return + end + + objective:Update() + + if QuestieQuest.ShouldHideObjective(objective) then + _UnloadAlreadySpawnedIcons(objective) + return + end + + local completed = objective.Completed + local objectiveData = quest.ObjectiveData[objective.Index] or + objective -- the reason for "or objective" is to handle "SpecialObjectives" aka non-listed objectives (demonic runestones for closing the portal) + + if (not objective.spawnList or (not next(objective.spawnList))) and _QuestieQuest.objectiveSpawnListCallTable[objectiveData.Type] then + objective.spawnList = _QuestieQuest.objectiveSpawnListCallTable[objectiveData.Type](objective.Id, objective, + objectiveData); + end + + -- Tooltips should always show. + -- For completed and uncompleted objectives + _RegisterObjectiveTooltips(objective, quest.Id, blockItemTooltips) + + if completed or quest.isComplete then + _UnloadAlreadySpawnedIcons(objective) + return + end + + if (not objective.Color) then + objective.Color = QuestieLib:ColorWheel() + end + + if objective.spawnList and next(objective.spawnList) then + local maxPerType = 300 + + if Questie.db.profile.enableIconLimit and Questie.db.profile.iconLimit < maxPerType then + maxPerType = Questie.db.profile.iconLimit + end + + local closestStarter = QuestieMap:FindClosestStarter() + local objectiveCenter = closestStarter[quest.Id] + + local zoneCount = 0 + local zones = {} + local objectiveZone + + for _, spawnData in pairs(objective.spawnList) do + for zone in pairs(spawnData.Spawns) do + zones[zone] = true + end + end + + for zone in pairs(zones) do + objectiveZone = zone + zoneCount = zoneCount + 1 + end + + if zoneCount == 1 then -- this objective happens in 1 zone, clustering should be relative to that zone + local x, y = HBD:GetWorldCoordinatesFromZone(0.5, 0.5, ZoneDB:GetUiMapIdByAreaId(objectiveZone)) + objectiveCenter = { x = x, y = y } + end + + local iconsToDraw, _ = _DetermineIconsToDraw(quest, objective, objectiveIndex, objectiveCenter) + local icon, iconPerZone = _DrawObjectiveIcons(quest.Id, iconsToDraw, objective, maxPerType) + _DrawObjectiveWaypoints(objective, icon, iconPerZone) + end +end + +_RegisterObjectiveTooltips = function(objective, questId, blockItemTooltips) + Questie:Debug(Questie.DEBUG_INFO, "Registering objective tooltips for", objective.Description) + + if objective.spawnList then + if (not objective.hasRegisteredTooltips) then + for id, spawnData in pairs(objective.spawnList) do + if spawnData.TooltipKey and (not objective.AlreadySpawned[id]) then + QuestieTooltips:RegisterObjectiveTooltip(questId, spawnData.TooltipKey, objective) + end + end + + objective.hasRegisteredTooltips = true + end + else + -- No spawnList and no Id means there is nothing Questie can draw for this objective. + -- This covers server-tracked trigger objectives (e.g. "complete N quests in zone" for + -- quest 50150) which may have any objectiveType from the server, not just "event". + if not objective.Id then + objective.hasRegisteredTooltips = true + return + end + Questie:Error("[QuestieQuest]: [Tooltips] " .. + l10n("There was an error populating objectives for %s %s %s %s", objective.Description or "No objective text", + questId or "No quest id", 0 or "No objective", "No error")) + end + + if (not objective.registeredItemTooltips) and objective.Type == "item" and (not blockItemTooltips) and objective.Id then + local itemName = QuestieDB.QueryItemSingle(objective.Id, "name") + + if itemName then + QuestieTooltips:RegisterObjectiveTooltip(questId, "i_" .. objective.Id, objective) + end + + objective.registeredItemTooltips = true + end +end + +_UnloadAlreadySpawnedIcons = function(objective) + if objective.AlreadySpawned and next(objective.AlreadySpawned) then + for id, spawn in pairs(objective.AlreadySpawned) do + if spawn then + for _, mapIcon in pairs(spawn.mapRefs) do + mapIcon:Unload() + end + for _, minimapIcon in pairs(spawn.minimapRefs) do + minimapIcon:Unload() + end + spawn.mapRefs = {} + spawn.minimapRefs = {} + end + end + objective.AlreadySpawned = {} + end +end + +---@param quest Quest +---@param objective QuestObjective +---@param objectiveIndex ObjectiveIndex +---@param objectiveCenter {x:X, y:Y} +_DetermineIconsToDraw = function(quest, objective, objectiveIndex, objectiveCenter) + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:_DetermineIconsToDraw]") + + local iconsToDraw = {} + local spawnItemId + + for id, spawnData in pairs(objective.spawnList) do + if spawnData.ItemId then + spawnItemId = spawnData.ItemId + end + + if (not objective.Icon) and spawnData.Icon then + objective.Icon = spawnData.Icon + end + + if (not objective.AlreadySpawned[id]) and (not objective.Completed) and Questie.db.profile.enableObjectives then + local data = { + Id = quest.Id, + ObjectiveIndex = objectiveIndex, + QuestData = quest, + ObjectiveData = objective, + Icon = spawnData.Icon, + IconColor = quest.Color, + GetIconScale = spawnData.GetIconScale, + IconScale = spawnData.GetIconScale(), + Name = spawnData.Name, + Type = objective.Type, + ObjectiveTargetId = spawnData.Id + } + + objective.AlreadySpawned[id] = { + data = data, + minimapRefs = {}, + mapRefs = {}, + } + + for zone, spawns in pairs(spawnData.Spawns) do + local uiMapId = ZoneDB:GetUiMapIdByAreaId(zone) + for _, spawn in pairs(spawns) do + if (spawn[1] and spawn[2]) then + local drawIcon = { + AlreadySpawnedId = id, + data = data, + zone = zone, + AreaID = zone, + UiMapID = uiMapId, + x = spawn[1], + y = spawn[2], + worldX = 0, + worldY = 0, + distance = 0, + touched = nil, -- TODO change. This is meant to let lua reserve memory for all keys needed for sure. + } + local x, y, _ = HBD:GetWorldCoordinatesFromZone(drawIcon.x / 100, drawIcon.y / 100, uiMapId) + x = x or 0 + y = y or 0 + -- Cache world coordinates for clustering calculations + drawIcon.worldX = x + drawIcon.worldY = y + -- There are instances when X and Y are not in the same map such as in dungeons etc, we default to 0 if it is not set + -- This will create a distance of 0 but it doesn't matter. + local distance = QuestieLib:Euclid(objectiveCenter.x or 0, objectiveCenter.y or 0, x, y); + drawIcon.distance = distance or 0 -- cache for clustering + -- there can be multiple icons at same distance at different directions + --local distance = floor(distance) + local iconList = iconsToDraw[distance] + if iconList then + iconList[#iconList + 1] = drawIcon + else + iconsToDraw[distance] = { drawIcon } + end + end + end + end + end + end + + return iconsToDraw, spawnItemId +end + +_DrawObjectiveIcons = function(questId, iconsToDraw, objective, maxPerType) + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:_DrawObjectiveIcons] Adding Icons for quest:", questId) + + local spawnedIconCount = 0 + local icon + local iconPerZone = {} + + local range = Questie.db.profile.clusterLevelHotzone + + local iconCount, orderedList = _GetIconsSortedByDistance(iconsToDraw) + + if orderedList[1] and orderedList[1].Icon == Questie.ICON_TYPE_OBJECT then -- new clustering / limit code should prevent problems, always show all object notes + range = range * 0.2; -- Only use 20% of the default range. + end + + local hotzones = QuestieMap.utils:CalcHotzones(orderedList, range, iconCount); + + for i = 1, #hotzones do + local hotzone = hotzones[i] + if (spawnedIconCount > maxPerType) then + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest] Too many icons for quest:", questId) + break; + end + + --Any icondata will do because they are all the same + icon = hotzone[1]; + + local spawnsMapRefs = objective.AlreadySpawned[icon.AlreadySpawnedId].mapRefs + local spawnsMinimapRefs = objective.AlreadySpawned[icon.AlreadySpawnedId].minimapRefs + + local centerX, centerY = QuestieMap.utils.CenterPoint(hotzone) + + local dungeonLocation = ZoneDB:GetDungeonLocation(icon.zone) + + if dungeonLocation and centerX == -1 and centerY == -1 then + if dungeonLocation[2] then -- We have more than 1 instance entrance (e.g. Blackrock dungeons) + local secondDungeonLocation = dungeonLocation[2] + + icon.zone = secondDungeonLocation[1] + centerX = secondDungeonLocation[2] + centerY = secondDungeonLocation[3] + + local iconMap, iconMini = QuestieMap:DrawWorldIcon(icon.data, icon.zone, centerX, centerY) -- clustering code takes care of duplicates as long as min-dist is more than 0 + + if iconMap and iconMini then + iconPerZone[icon.zone] = { iconMap, centerX, centerY } + spawnsMapRefs[#spawnsMapRefs + 1] = iconMap + spawnsMinimapRefs[#spawnsMinimapRefs + 1] = iconMini + end + + spawnedIconCount = spawnedIconCount + 1; + end + + local firstDungeonLocation = dungeonLocation[1] + icon.zone = firstDungeonLocation[1] + centerX = firstDungeonLocation[2] + centerY = firstDungeonLocation[3] + end + + local iconMap, iconMini = QuestieMap:DrawWorldIcon(icon.data, icon.zone, centerX, centerY) -- clustering code takes care of duplicates as long as min-dist is more than 0 + + if iconMap and iconMini then + iconPerZone[icon.zone] = { iconMap, centerX, centerY } + spawnsMapRefs[#spawnsMapRefs + 1] = iconMap + spawnsMinimapRefs[#spawnsMinimapRefs + 1] = iconMini + end + + spawnedIconCount = spawnedIconCount + 1; + end + + return icon, iconPerZone +end + +_GetIconsSortedByDistance = function(icons) + local iconCount = 0; + local orderedList = {} + local distances = {} + + local i = 0 + + for distance in pairs(icons) do + i = i + 1 + distances[i] = distance + end + + table.sort(distances) + + -- use the keys to retrieve the values in the sorted order + for distIndex = 1, #distances do + local iconsAtDisntace = icons[distances[distIndex]] + + for iconIndex = 1, #iconsAtDisntace do + local icon = iconsAtDisntace[iconIndex] + + iconCount = iconCount + 1 + orderedList[iconCount] = icon + end + end + + return iconCount, orderedList +end + +_DrawObjectiveWaypoints = function(objective, icon, iconPerZone) + for _, spawnData in pairs(objective.spawnList) do -- spawnData.Name, spawnData.Spawns + if spawnData.Waypoints then + for zone, waypoints in pairs(spawnData.Waypoints) do + local firstWaypoint = waypoints[1][1] + + if (not iconPerZone[zone]) and icon and firstWaypoint[1] ~= -1 and firstWaypoint[2] ~= -1 then -- spawn an icon in this zone for the mob + local iconMap, iconMini = QuestieMap:DrawWorldIcon(icon.data, zone, firstWaypoint[1], + firstWaypoint[2]) -- clustering code takes care of duplicates as long as min-dist is more than 0 + + if iconMap and iconMini then + iconPerZone[zone] = { iconMap, firstWaypoint[1], firstWaypoint[2] } + tinsert(objective.AlreadySpawned[icon.AlreadySpawnedId].mapRefs, iconMap); + tinsert(objective.AlreadySpawned[icon.AlreadySpawnedId].minimapRefs, iconMini); + end + end + + local ipz = iconPerZone[zone] + + if ipz then + QuestieMap:DrawWaypoints(ipz[1], waypoints, zone, spawnData.Hostile and { 1, 0.2, 0, 0.7 } or nil) + end + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:_DrawObjectiveWaypoints]") + end + end +end + +---@param quest Quest +function QuestieQuest:PopulateObjectiveNotes(quest) -- this should be renamed to PopulateNotes as it also handles finishers now + if (not quest) then + return + end + + if QuestieDB.IsComplete(quest.Id) == 1 then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:PopulateObjectiveNotes] Quest Complete! Adding Finisher for:", + quest.Id) + + QuestieQuest:UpdateQuest(quest.Id) + _AddSourceItemObjective(quest) + _AddRequiredSourceItemObjective(quest) + _AddSpellItemObjective(quest) + + return + end + + if (not quest.Color) then + quest.Color = QuestieLib:ColorWheel() + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:PopulateObjectiveNotes] Populating objectives for:", quest.Id) + + QuestieQuest:UpdateObjectiveNotes(quest) + _AddSourceItemObjective(quest) + _AddRequiredSourceItemObjective(quest) + _AddSpellItemObjective(quest) +end + +---@param quest Quest +---@return true? +function QuestieQuest:PopulateQuestLogInfo(quest) + if (not quest) then + return nil + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:PopulateQuestLogInfo] ", quest.Id) + + local questLogEngtry = QuestLogCache.GetQuest(quest.Id) -- DO NOT MODIFY THE RETURNED TABLE + + if (not questLogEngtry) then return end + + if questLogEngtry.isComplete ~= nil and questLogEngtry.isComplete == 1 then + quest.isComplete = true + end + + --Uses the category order to draw the quests and trusts the database order. + + local questObjectives = QuestieQuest:GetAllLeaderBoardDetails(quest.Id) or {} -- DO NOT MODIFY THE RETURNED TABLE + + for objectiveIndex, objective in pairs(questObjectives) do + if objective.type and string.len(objective.type) > 1 then + if (not quest.ObjectiveData) or (not quest.ObjectiveData[objectiveIndex]) then + Questie:Error(l10n("Missing objective data for quest "), quest.Id, " ", objective.text) + else + if not quest.Objectives[objectiveIndex] then + quest.Objectives[objectiveIndex] = { + Id = quest.ObjectiveData[objectiveIndex].Id, + Index = objectiveIndex, + questId = quest.Id, + _lastUpdate = 0, + Description = objective.text, + spawnList = {}, + AlreadySpawned = {}, + Update = _QuestieQuest.ObjectiveUpdate, + Coordinates = quest.ObjectiveData[objectiveIndex].Coordinates, -- Only for type "event" + RequiredRepValue = quest.ObjectiveData[objectiveIndex].RequiredRepValue + } + end + + quest.Objectives[objectiveIndex]:Update() + end + end + + if (not quest.Objectives[objectiveIndex]) or (not quest.Objectives[objectiveIndex].Id) then + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest:PopulateQuestLogInfo] Error finding entry ID for objective", objectiveIndex, + objective.type, objective.text, "of questId:", quest.Id) + end + end + + -- find special unlisted objectives + if next(quest.SpecialObjectives) then + for index, specialObjective in pairs(quest.SpecialObjectives) do + if (not specialObjective.Description) then + specialObjective.Description = "Special objective" + end + + specialObjective.questId = quest.Id + + if specialObjective.RealObjectiveIndex and quest.Objectives[specialObjective.RealObjectiveIndex] then + -- This specialObjective is an extraObjective and has a RealObjectiveIndex set + specialObjective.Completed = quest.Objectives[specialObjective.RealObjectiveIndex].Completed + specialObjective.Update = function(self) + self.Completed = quest.Objectives[self.RealObjectiveIndex].Completed + end + elseif specialObjective.Type == "item" and specialObjective.Id then + specialObjective.Completed = GetItemCount(specialObjective.Id) > 0 + specialObjective.Update = function(self) + self.Completed = GetItemCount(self.Id) > 0 + end + else + specialObjective.Update = NOP_FUNCTION + end + + specialObjective.Index = 64 + index -- offset to not conflict with real objectives + specialObjective.AlreadySpawned = specialObjective.AlreadySpawned or {} + end + end + + if #quest.Objectives == 0 and #quest.SpecialObjectives == 0 and (not quest.ObjectiveData or #quest.ObjectiveData == 0) and ((quest.triggerEnd and #quest.triggerEnd > 0) or (quest.Finisher and quest.Finisher.Id ~= nil)) then + -- Some quests when picked up will be flagged isComplete == 0 but the quest.Objective table or quest.SpecialObjectives table is nil. This + -- check assumes the Quest should have been flagged questLogEngtry.isComplete == 1. We're specifically looking for a quest.triggerEnd or + -- a quest.Finisher.Id because this might throw an error if there is nothing to populate when we call QuestieQuest:AddFinisher(). + -- We added a check for quest.ObjectiveData to ensure we don't prematurely complete quests that are just waiting for the server to sync their objectives. + QuestieMap:UnloadQuestFrames(quest.Id) + QuestieQuest:AddFinisher(quest) + quest.isComplete = true + end + + return true +end + +---@param self QuestObjective @quest.Objectives[] entry +function _QuestieQuest.ObjectiveUpdate(self) + if self.isUpdated then + return + end + + local questObjectives = QuestieQuest:GetAllLeaderBoardDetails(self.questId) -- DO NOT MODIFY THE RETURNED TABLE + + if questObjectives and questObjectives[self.Index] then + local obj = questObjectives[self.Index] -- DO NOT EDIT THE TABLE + if (obj.type) then + -- fixes for api bug + local numFulfilled = obj.numFulfilled or 0 + local numRequired = obj.numRequired or 0 + local finished = obj.finished or false -- ensure its boolean false and not nil (hack) + + self.Type = obj.type; + self.Description = obj.text + self.Collected = tonumber(numFulfilled); + self.Needed = tonumber(numRequired); + self.Completed = (self.Needed == self.Collected and self.Needed > 0) or + (finished and (self.Needed == 0 or (not self.Needed))) -- some objectives get removed on PLAYER_LOGIN because isComplete is set to true at random???? + -- Mark objective updated + self.isUpdated = true + end + end +end + +---@param questId number +---@return table|nil @DO NOT EDIT RETURNED TABLE +function QuestieQuest:GetAllLeaderBoardDetails(questId) + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:GetAllLeaderBoardDetails] for questId", questId) + + local questObjectives = QuestLogCache.GetQuestObjectives(questId) -- DO NOT MODIFY THE RETURNED TABLE + if (not questObjectives) then return end + + for _, objective in pairs(questObjectives) do -- DO NOT MODIFY THE RETURNED TABLE + -- TODO Move this to QuestEventHandler module or QuestieQuest:AcceptQuest( ) + QuestieQuest:UpdateQuest( ) (accept quest one required to register objectives without progress) + -- TODO After ^^^ moving remove this function and use "QuestLogCache.GetQuest(questId).objectives -- DO NOT MODIFY THE RETURNED TABLE" in place of it. + QuestieAnnounce:ObjectiveChanged(questId, objective.text, objective.numFulfilled, objective.numRequired) + end + + return questObjectives +end + +function QuestieQuest.DrawDailyQuest(questId) + if QuestieDB.IsDoable(questId) then + local quest = QuestieDB.GetQuest(questId) + AvailableQuests.DrawAvailableQuest(quest) + end +end + +return QuestieQuest diff --git a/.history/Modules/Quest/QuestieQuest_20260222030217.lua b/.history/Modules/Quest/QuestieQuest_20260222030217.lua new file mode 100644 index 0000000..a48c433 --- /dev/null +++ b/.history/Modules/Quest/QuestieQuest_20260222030217.lua @@ -0,0 +1,1769 @@ +--- COMPATIBILITY --- +local IsQuestFlaggedCompleted = QuestieCompat.IsQuestFlaggedCompleted or C_QuestLog.IsQuestFlaggedCompleted + +---@class QuestieQuest +local QuestieQuest = QuestieLoader:CreateModule("QuestieQuest") +---@type QuestieQuestPrivate +QuestieQuest.private = QuestieQuest.private or {} +local _QuestieQuest = QuestieQuest.private +------------------------- +--Import modules. +------------------------- +---@type QuestieProfessions +local QuestieProfessions = QuestieLoader:ImportModule("QuestieProfessions") +---@type QuestieReputation +local QuestieReputation = QuestieLoader:ImportModule("QuestieReputation") +---@type QuestieTooltips +local QuestieTooltips = QuestieLoader:ImportModule("QuestieTooltips") +---@type QuestieTracker +local QuestieTracker = QuestieLoader:ImportModule("QuestieTracker") +---@type QuestieDBMIntegration +local QuestieDBMIntegration = QuestieLoader:ImportModule("QuestieDBMIntegration") +---@type QuestieMap +local QuestieMap = QuestieLoader:ImportModule("QuestieMap") +---@type QuestieLib +local QuestieLib = QuestieLoader:ImportModule("QuestieLib") +---@type QuestiePlayer +local QuestiePlayer = QuestieLoader:ImportModule("QuestiePlayer") +---@type TaskQueue +local TaskQueue = QuestieLoader:ImportModule("TaskQueue") +---@type QuestieDB +local QuestieDB = QuestieLoader:ImportModule("QuestieDB") +---@type ZoneDB +local ZoneDB = QuestieLoader:ImportModule("ZoneDB") +---@type QuestieCombatQueue +local QuestieCombatQueue = QuestieLoader:ImportModule("QuestieCombatQueue") +---@type QuestieAnnounce +local QuestieAnnounce = QuestieLoader:ImportModule("QuestieAnnounce") +---@type QuestieMenu +local QuestieMenu = QuestieLoader:ImportModule("QuestieMenu") +---@type l10n +local l10n = QuestieLoader:ImportModule("l10n") +---@type QuestLogCache +local QuestLogCache = QuestieLoader:ImportModule("QuestLogCache") +---@type ThreadLib +local ThreadLib = QuestieLoader:ImportModule("ThreadLib") +---@type AvailableQuests +local AvailableQuests = QuestieLoader:ImportModule("AvailableQuests") + +--- COMPATIBILITY --- +local C_Timer = QuestieCompat.C_Timer +local GetQuestsCompleted = QuestieCompat.GetQuestsCompleted +local xpcall = QuestieCompat.xpcall + +--We should really try and squeeze out all the performance we can, especially in this. +local tostring = tostring; +local tinsert = table.insert; +local pairs = pairs; +local ipairs = ipairs; +local yield = coroutine.yield +local NewThread = ThreadLib.ThreadSimple + +local NOP_FUNCTION = function() +end +local ERR_FUNCTION = function(err) + print(err) + print(debugstack()) +end + +-- forward declaration +local _UnloadAlreadySpawnedIcons +local _RegisterObjectiveTooltips, _DetermineIconsToDraw, _GetIconsSortedByDistance +local _DrawObjectiveIcons, _DrawObjectiveWaypoints + +local HBD = QuestieCompat.HBD or LibStub("HereBeDragonsQuestie-2.0") + +function QuestieQuest:Initialize() + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest]: Getting all completed quests") + Questie.db.char.complete = GetQuestsCompleted() + + QuestieProfessions:Update() + QuestieReputation:Update(true) +end + +---@param category AutoBlacklistString +function QuestieQuest.ResetAutoblacklistCategory(category) + Questie:Debug(Questie.DEBUG_SPAM, "[QuestieQuest]: Resetting autoblacklist category", category) + for questId, questCategory in pairs(QuestieDB.autoBlacklist) do + if questCategory == category then + QuestieDB.autoBlacklist[questId] = nil + end + end +end + +function QuestieQuest:ToggleNotes(showIcons) + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:ToggleNotes] showIcons:", showIcons) + QuestieQuest:GetAllQuestIds() -- add notes that weren't added from previous hidden state + + if showIcons then + _QuestieQuest:ShowQuestIcons() + _QuestieQuest:ShowManualIcons() + else + _QuestieQuest:HideQuestIcons() + _QuestieQuest:HideManualIcons() + end +end + +function _QuestieQuest:ShowQuestIcons() + local trackerHiddenQuests = Questie.db.char.TrackerHiddenQuests + for questId, frameList in pairs(QuestieMap.questIdFrames) do + if (not trackerHiddenQuests) or (not trackerHiddenQuests[questId]) then -- Skip quests which are completely hidden from the Tracker menu + for _, frameName in pairs(frameList) do -- this may seem a bit expensive, but its actually really fast due to the order things are checked + ---@type IconFrame + local icon = _G[frameName]; + if not icon.data then + error("Desync! Icon has not been removed correctly, but has already been reset. Skipping frame \"" .. + frameName .. "\" for quest " .. questId) + else + local objectiveString = tostring(questId) .. " " .. tostring(icon.data.ObjectiveIndex) + if (not Questie.db.char.TrackerHiddenObjectives) or (not Questie.db.char.TrackerHiddenObjectives[objectiveString]) then + if icon ~= nil and icon.hidden and (not icon:ShouldBeHidden()) then + icon:FakeShow() + + if icon.data.lineFrames then + for _, lineIcon in pairs(icon.data.lineFrames) do + lineIcon:FakeShow() + end + end + end + if (icon.data.QuestData.FadeIcons or (icon.data.ObjectiveData and icon.data.ObjectiveData.FadeIcons)) and icon.data.Type ~= "complete" then + icon:FadeOut() + else + icon:FadeIn() + end + end + end + end + end + end +end + +function _QuestieQuest:ShowManualIcons() + for _, frameList in pairs(QuestieMap.manualFrames) do + for _, frameName in pairs(frameList) do + local icon = _G[frameName]; + if icon ~= nil and icon.hidden and (not icon:ShouldBeHidden()) then -- check for function to make sure its a frame + icon:FakeShow() + end + end + end +end + +function _QuestieQuest:HideQuestIcons() + for _, frameList in pairs(QuestieMap.questIdFrames) do + for _, frameName in pairs(frameList) do -- this may seem a bit expensive, but its actually really fast due to the order things are checked + local icon = _G[frameName]; + if icon ~= nil and (not icon.hidden) and icon:ShouldBeHidden() then -- check for function to make sure its a frame + -- Hides Objective Icons + icon:FakeHide() + + -- Hides Objective Tooltips + QuestieTooltips:RemoveQuest(icon.data.Id) + + if icon.data.lineFrames then + for _, lineIcon in pairs(icon.data.lineFrames) do + lineIcon:FakeHide() + end + end + end + if (icon.data.QuestData.FadeIcons or (icon.data.ObjectiveData and icon.data.ObjectiveData.FadeIcons)) and icon.data.Type ~= "complete" then + icon:FadeOut() + else + icon:FadeIn() + end + end + end +end + +function _QuestieQuest:HideManualIcons() + for _, frameList in pairs(QuestieMap.manualFrames) do + for _, frameName in pairs(frameList) do + local icon = _G[frameName]; + if icon ~= nil and (not icon.hidden) and icon:ShouldBeHidden() then -- check for function to make sure its a frame + icon:FakeHide() + end + end + end +end + +function QuestieQuest:ClearAllNotes() + for questId in pairs(QuestiePlayer.currentQuestlog) do + local quest = QuestieDB.GetQuest(questId) + + if not quest then + return + end + + for _, s in pairs(quest.Objectives) do + s.AlreadySpawned = {} + end + + if next(quest.SpecialObjectives) then + for _, s in pairs(quest.SpecialObjectives) do + s.AlreadySpawned = {} + end + end + end + + for _, frameList in pairs(QuestieMap.questIdFrames) do + for _, frameName in pairs(frameList) do + local icon = _G[frameName] + if icon and icon.Unload then + icon:Unload() + end + end + end + + QuestieMap.questIdFrames = {} +end + +function QuestieQuest:ClearAllToolTips() + for questId in pairs(QuestiePlayer.currentQuestlog) do + local quest = QuestieDB.GetQuest(questId) + + if not quest then + return + end + + if quest.Objectives then + for _, objective in pairs(quest.Objectives) do + if objective.hasRegisteredTooltips then + objective.hasRegisteredTooltips = false + end + + if objective.registeredItemTooltips then + objective.registeredItemTooltips = false + end + end + end + + if quest.ObjectiveData then + for _, objective in pairs(quest.ObjectiveData) do + if objective.hasRegisteredTooltips then + objective.hasRegisteredTooltips = false + end + + if objective.registeredItemTooltips then + objective.registeredItemTooltips = false + end + end + end + + if next(quest.SpecialObjectives) then + for _, objective in pairs(quest.SpecialObjectives) do + if objective.hasRegisteredTooltips then + objective.hasRegisteredTooltips = false + end + + if objective.registeredItemTooltips then + objective.registeredItemTooltips = false + end + end + end + end + + QuestieTooltips.lookupByKey = {} + QuestieTooltips.lookupKeyByQuestId = {} +end + +-- This is only needed for SmoothReset(), normally special objectives don't need to update +---@param questId number +local function _UpdateSpecials(questId) + local quest = QuestieDB.GetQuest(questId) + if quest and next(quest.SpecialObjectives) then + for _, objective in pairs(quest.SpecialObjectives) do + local result, err = xpcall(QuestieQuest.PopulateObjective, ERR_FUNCTION, QuestieQuest, quest, 0, objective, + true) + if not result then + Questie:Error("[QuestieQuest]: [SpecialObjectives] " .. + l10n("There was an error populating objectives for %s %s %s %s", quest.name or "No quest name", + quest.Id or "No quest id", 0 or "No objective", err or "No error")); + end + end + end +end + +function QuestieQuest:SmoothReset() + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:SmoothReset]") + if QuestieQuest._isResetting then + QuestieQuest._resetAgain = true + return + end + QuestieQuest._isResetting = true + QuestieQuest._resetNeedsAvailables = false + + -- bit of a hack (there has to be a better way to do logic like this + QuestieDBMIntegration:ClearAll() + local stepTable = { + function() + -- Wait until game cache has quest log okay. + return QuestLogCache.TestGameCache() + end, + function() + return #QuestieMap._mapDrawQueue == 0 and + #QuestieMap._minimapDrawQueue == 0 -- wait until draw queue is finished + end, + function() + QuestieQuest:ClearAllNotes() + QuestieQuest:ClearAllToolTips() + return true + end, + function() + QuestieMenu:OnLogin(true) -- remove icons + return true + end, + function() + return #QuestieMap._mapDrawQueue == 0 and + #QuestieMap._minimapDrawQueue == 0 -- wait until draw queue is finished + end, + function() + -- reset quest log + QuestiePlayer.currentQuestlog = {} + + --- reset the blacklist + QuestieDB.autoBlacklist = {} + + -- make sure complete db is correct + Questie.db.char.complete = GetQuestsCompleted() + QuestieProfessions:Update() + QuestieReputation:Update(true) + + -- populate QuestiePlayer.currentQuestlog + QuestieQuest:GetAllQuestIdsNoObjectives() + QuestieQuest._nextRestQuest = next(QuestiePlayer.currentQuestlog) + return true + end, + function() + QuestieMenu:OnLogin() + return true + end, + function() + QuestieQuest._resetNeedsAvailables = true + AvailableQuests.CalculateAndDrawAll(function() QuestieQuest._resetNeedsAvailables = false end) + return true + end, + function() + for _ = 1, 64 do + if QuestieQuest._nextRestQuest then + QuestieQuest:UpdateQuest(QuestieQuest._nextRestQuest) + _UpdateSpecials(QuestieQuest._nextRestQuest) + QuestieQuest._nextRestQuest = next(QuestiePlayer.currentQuestlog, QuestieQuest._nextRestQuest) + else + QuestieCombatQueue:Queue(function() + C_Timer.After(2.0, function() + QuestieTracker:Update() + end) + end) + break + end + end + return not QuestieQuest._nextRestQuest + end, + function() + return (not QuestieQuest._resetNeedsAvailables) and #QuestieMap._mapDrawQueue == 0 and + #QuestieMap._minimapDrawQueue == 0 + end, + function() + QuestieQuest._isResetting = nil + if QuestieQuest._resetAgain then + QuestieQuest._resetAgain = nil + QuestieQuest:SmoothReset() + end + return true + end + } + local step = 1 + local ticker + ticker = C_Timer.NewTicker(0.01, function() + if stepTable[step]() then + step = step + 1 + if not stepTable[step] then + ticker:Cancel() + end + end + if QuestieQuest._resetAgain and not QuestieQuest._resetNeedsAvailables then -- we can stop the current reset + ticker:Cancel() + QuestieQuest._resetAgain = nil + QuestieQuest._isResetting = nil + QuestieQuest:SmoothReset() + end + end) +end + +---@param questId number +---@return boolean +function QuestieQuest:ShouldShowQuestNotes(questId) + if not Questie.db.profile.hideUntrackedQuestsMapIcons then + return true + end + + local autoWatch = Questie.db.profile.autoTrackQuests + local trackedAuto = autoWatch and + (not Questie.db.char.AutoUntrackedQuests or not Questie.db.char.AutoUntrackedQuests[questId]) + local trackedManual = not autoWatch and (Questie.db.char.TrackedQuests and Questie.db.char.TrackedQuests[questId]) + return trackedAuto or trackedManual +end + +function QuestieQuest:HideQuest(id) + Questie.db.char.hidden[id] = true + QuestieMap:UnloadQuestFrames(id) + QuestieTooltips:RemoveQuest(id) +end + +function QuestieQuest:UnhideQuest(id) + Questie.db.char.hidden[id] = nil + AvailableQuests.CalculateAndDrawAll() +end + +local allianceTournamentMarkerQuests = { [13684] = true, [13685] = true, [13688] = true, [13689] = true, [13690] = true, + [13593] = true, [13703] = true, [13704] = true, [13705] = true, [13706] = true } +local hordeTournamentMarkerQuests = { [13691] = true, [13693] = true, [13694] = true, [13695] = true, [13696] = true, + [13707] = true, [13708] = true, [13709] = true, [13710] = true, [13711] = true } + +---@param questId number +function QuestieQuest:AcceptQuest(questId) + local quest = QuestieDB.GetQuest(questId) + + if quest then + local complete = QuestieDB.IsComplete(questId) + -- If any of these flags exsist then this quest has already once been accepted and is probobly in a failed state + if (quest.WasComplete or quest.isComplete or complete == 0 or complete == -1) and (QuestiePlayer.currentQuestlog[questId]) then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Accepted Quest:", questId, + " Warning: This quest was once accepted and needs to be reset.") + + -- Reset quest log + QuestiePlayer.currentQuestlog[questId] = nil + + -- Reset quest objectives + quest.Objectives = {} + + -- Reset quest flags + quest.WasComplete = nil + quest.isComplete = nil + + -- Reset tooltips + QuestieTooltips:RemoveQuest(questId) + end + + if not QuestiePlayer.currentQuestlog[questId] then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Accepted Quest:", questId) + + QuestiePlayer.currentQuestlog[questId] = quest + + if allianceTournamentMarkerQuests[questId] then + Questie.db.char.complete[13686] = true -- Alliance Tournament Eligibility Marker + elseif hordeTournamentMarkerQuests[questId] then + Questie.db.char.complete[13687] = true -- Horde Tournament Eligibility Marker + end + + TaskQueue:Queue( + -- Get all the Frames for the quest and unload them, the available quest icon for example. + function() QuestieMap:UnloadQuestFrames(questId) end, + -- Make sure there isn't any lingering tooltip data hanging around in the quest table. + function() QuestieTooltips:RemoveQuest(questId) end, + function() + -- Re-accepted quest can be collapsed. Expand it. Especially dailies. + if Questie.db.char.collapsedQuests then + Questie.db.char.collapsedQuests[questId] = nil + end + -- Re-accepted quest can be untracked. Clear it. Especially timed quests. + if Questie.db.char.AutoUntrackedQuests[questId] then + Questie.db.char.AutoUntrackedQuests[questId] = nil + end + end, + function() QuestieQuest:PopulateQuestLogInfo(quest) end, + function() + -- This needs to happen after QuestieQuest:PopulateQuestLogInfo because that is the place where quest.Objectives is generated + Questie:SendMessage("QC_ID_BROADCAST_QUEST_UPDATE", questId) + end, + function() QuestieQuest:PopulateObjectiveNotes(quest) end, + function() AvailableQuests.CalculateAndDrawAll() end, + function() + QuestieCombatQueue:Queue(function() + QuestieTracker:Update() + end) + end, + function() + if QuestieArrow and QuestieArrow.Refresh then + QuestieArrow:Refresh() + end + end + ) + else + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Accepted Quest:", questId, + " Warning: Quest already exists, not adding") + end + end +end + +local allianceChampionMarkerQuests = { [13699] = true, [13713] = true, [13723] = true, [13724] = true, [13725] = true } +local hordeChampionMarkerQuests = { [13726] = true, [13727] = true, [13728] = true, [13729] = true, [13731] = true } + +---@param questId number +function QuestieQuest:CompleteQuest(questId) + -- Skip quests which are turn in only and are not added to the quest log in the first place + local questLogEntry = QuestiePlayer.currentQuestlog[questId] + if questLogEntry then + -- Only reset flags if the entry is a table (not a legacy number) + if type(questLogEntry) == "table" then + questLogEntry.WasComplete = nil + questLogEntry.isComplete = nil + end + QuestiePlayer.currentQuestlog[questId] = nil; + end + + -- Only quests that are daily quests or aren't repeatable should be marked complete, + -- otherwise objectives for repeatable quests won't track correctly - #1433 + if QuestieCompat.Is335 then + QuestieCompat.SetQuestComplete(questId) + else + Questie.db.char.complete[questId] = (not QuestieDB.IsRepeatable(questId)) or QuestieDB.IsDailyQuest(questId) or + QuestieDB.IsWeeklyQuest(questId); + end + + if allianceChampionMarkerQuests[questId] then + Questie.db.char.complete[13700] = true -- Alliance Champion Marker + Questie.db.char.complete[13686] = nil -- Alliance Tournament Eligibility Marker + elseif hordeChampionMarkerQuests[questId] then + Questie.db.char.complete[13701] = true -- Horde Champion Marker + Questie.db.char.complete[13687] = nil -- Horde Tournament Eligibility Marker + end + QuestieMap:UnloadQuestFrames(questId) + + -- Clear the pending-complete guard now that frames are unloaded + if QuestiePlayer.pendingCompleteQuestIds then + QuestiePlayer.pendingCompleteQuestIds[questId] = nil + end + + if (QuestieMap.questIdFrames[questId]) then + Questie:Error("Just removed all frames but the framelist seems to still be there!", questId) + end + + -- Delayed verification to ensure all objective icons are removed + -- This handles race conditions where AvailableQuests might redraw icons or UnloadQuestFrames misses some + C_Timer.After(0.5, function() + if QuestieMap.questIdFrames[questId] then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:CompleteQuest] Lingering frames detected for quest:", + questId, "- forcing cleanup") + QuestieMap:UnloadQuestFrames(questId) + end + end) + + QuestieTooltips:RemoveQuest(questId) + QuestieTracker:RemoveQuest(questId) + QuestieCombatQueue:Queue(function() + QuestieTracker:Update() + end) + + -- TODO: Should this be done first? Because CalculateAndDrawAll looks at QuestieMap.questIdFrames[QuestId] to add available + AvailableQuests.CalculateAndDrawAll() + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Completed Quest:", questId) +end + +---@param questId number +function QuestieQuest:AbandonedQuest(questId) + -- NOTE: Some servers remove quests without firing QUEST_REMOVED reliably. + -- Always cleanup frames/tracker even if the quest isn't currently in QuestiePlayer.currentQuestlog. + if QuestiePlayer.currentQuestlog then + QuestiePlayer.currentQuestlog[questId] = nil + end + + QuestieMap:UnloadQuestFrames(questId) + + local quest = QuestieDB.GetQuest(questId) + if quest then + -- Reset quest objectives + quest.Objectives = {} + + -- Reset quest flags + quest.WasComplete = nil + quest.isComplete = nil + + if allianceTournamentMarkerQuests[questId] then + Questie.db.char.complete[13686] = nil -- Alliance Tournament Eligibility Marker + elseif hordeTournamentMarkerQuests[questId] then + Questie.db.char.complete[13687] = nil -- Horde Tournament Eligibility Marker + end + + local childQuests = QuestieDB.QueryQuestSingle(questId, "childQuests") + if childQuests then + for _, childQuestId in pairs(childQuests) do + Questie.db.char.complete[childQuestId] = nil + QuestLogCache.RemoveQuest(childQuestId) + end + end + end + + AvailableQuests.UnloadUndoable() + + QuestieTracker:RemoveQuest(questId) + QuestieTooltips:RemoveQuest(questId) + QuestieCombatQueue:Queue(function() + QuestieTracker:Update() + end) + + AvailableQuests.CalculateAndDrawAll() + + -- Delayed verification to ensure all objective icons are removed + -- This handles race conditions where QuestieQuest:UpdateQuest might redraw icons + -- just as we are abandoning the quest + C_Timer.After(0.5, function() + if QuestieMap.questIdFrames[questId] then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:AbandonedQuest] Lingering frames detected for quest:", + questId, "- forcing cleanup") + QuestieMap:UnloadQuestFrames(questId) + end + end) + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Abandoned Quest:", questId) +end + +---@param questId number +function QuestieQuest:UpdateQuest(questId) + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:UpdateQuest]", questId) + + ---@type Quest + local quest = QuestieDB.GetQuest(questId) + + local sourceItemId = (quest and tonumber(quest.sourceItemId)) or 0 + + if quest and (not Questie.db.char.complete[questId] or QuestiePlayer.currentQuestlog[questId]) then + -- Skip this update if the quest is mid-completion to avoid redrawing objective pins + -- that CompleteQuest is about to remove via UnloadQuestFrames. + if QuestiePlayer.pendingCompleteQuestIds and QuestiePlayer.pendingCompleteQuestIds[questId] then + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:UpdateQuest] Skipping - quest is pending completion:", questId) + return + end + QuestieQuest:PopulateQuestLogInfo(quest) + + if QuestieQuest:ShouldShowQuestNotes(questId) then + QuestieQuest:UpdateObjectiveNotes(quest) + else + QuestieTooltips:RemoveQuest(questId) + end + + local isComplete = QuestieDB.IsComplete(questId) + + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:UpdateQuest] QuestDB:IsComplete() flag is: " .. isComplete) + + if isComplete == 1 then + -- Quest is complete + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:UpdateQuest] Quest is: Complete!") + + QuestieMap:UnloadQuestFrames(questId) + QuestieQuest:AddFinisher(quest) + quest.WasComplete = true + elseif isComplete == -1 then + -- Failed quests should be shown as available again + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:UpdateQuest] Quest has: Failed!") + + QuestieMap:UnloadQuestFrames(questId) + QuestieTooltips:RemoveQuest(questId) + AvailableQuests.DrawAvailableQuest(quest) + + -- Reset any collapsed quest flags + if Questie.db.char.collapsedQuests then + Questie.db.char.collapsedQuests[questId] = nil + end + elseif isComplete == 0 then + -- Quest was somehow reset back to incomplete after being completed (quest.WasComplete == true). + -- The "or" check looks for a sourceItemId then checks to see if it's NOT in the players bag. + -- Player destroyed quest items? Or some other quest mechanic removed the needed quest item. + -- Check if all objectives are already complete before treating a missing source item as a reset. + -- Some quests use consumable key items (e.g. Cold Iron Key for quest 12843). After using the key + -- the item leaves the bag, making CheckQuestSourceItem return false. Without this guard, Questie + -- would reset the quest and draw the key-drop NPC on the map even though all objectives are done. + local allObjectivesComplete = false + if quest.Objectives and #quest.Objectives > 0 then + local doneCount = 0 + for i = 1, #quest.Objectives do + if quest.Objectives[i] and quest.Objectives[i].Completed == true then + doneCount = doneCount + 1 + end + end + allObjectivesComplete = (doneCount == #quest.Objectives) + end + + if quest and not allObjectivesComplete and (quest.WasComplete or (sourceItemId > 0 and QuestieQuest:CheckQuestSourceItem(questId) == false)) then + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest:UpdateQuest] Quest was once complete or Quest Item(s) were removed. Resetting quest.") + + -- Reset quest objectives + quest.Objectives = {} + + -- Reset quest flags + quest.WasComplete = nil + quest.isComplete = nil + + -- Reset tooltips + QuestieTooltips:RemoveQuest(questId) + + QuestieQuest:CheckQuestSourceItem(questId, true) + QuestieMap:UnloadQuestFrames(questId) + + -- Reset any collapsed quest flags + if Questie.db.char.collapsedQuests then + Questie.db.char.collapsedQuests[questId] = nil + end + + QuestieQuest:PopulateQuestLogInfo(quest) + QuestieQuest:PopulateObjectiveNotes(quest) + AvailableQuests.CalculateAndDrawAll() + else + -- Sometimes objective(s) are all complete but the quest doesn't get flagged as "1". So far the only + -- quests I've found that does this are quests involving an item(s). Checks all objective(s) and if they + -- are all complete, simulate a "Complete Quest" so the quest finisher appears on the map. + if quest.Objectives and #quest.Objectives > 0 then + local numCompleteObjectives = 0 + + for i = 1, #quest.Objectives do + if quest.Objectives[i] and quest.Objectives[i].Completed and quest.Objectives[i].Completed == true then + numCompleteObjectives = numCompleteObjectives + 1 + end + end + + if numCompleteObjectives == #quest.Objectives then + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest:UpdateQuest] All Quest Objective(s) are Complete! Manually setting quest to Complete!") + QuestieMap:UnloadQuestFrames(questId) + QuestieQuest:AddFinisher(quest) + quest.WasComplete = true + quest.isComplete = true + else + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest:UpdateQuest] Quest Objective Status is: " .. + numCompleteObjectives .. ", out of: " .. #quest.Objectives .. ". No updates required.") + end + end + end + end + + Questie:SendMessage("QC_ID_BROADCAST_QUEST_UPDATE", questId) + end +end + +---@param questId number +function QuestieQuest:SetObjectivesDirty(questId) + local quest = QuestieDB.GetQuest(questId) + + if quest then + for _, objective in pairs(quest.Objectives) do + objective.isUpdated = false + end + end +end + +--Run this if you want to update the entire table +function QuestieQuest:GetAllQuestIds() + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest] Getting all quests") + + QuestiePlayer.currentQuestlog = {} + + for questId, data in pairs(QuestLogCache.questLog_DO_NOT_MODIFY) do -- DO NOT MODIFY THE RETURNED TABLE + local quest = QuestieDB.GetQuest(questId) + + if not quest then + if not Questie._sessionWarnings[questId] then + if not Questie.IsSoD then + Questie:Error(l10n( + "The quest %s is missing from Questie's database. Please report this on GitHub or Discord!", + tostring(questId))) + end + Questie._sessionWarnings[questId] = true + end + + QuestiePlayer.currentQuestlog[questId] = questId -- legacy behavior + else + local complete = QuestieDB.IsComplete(questId) + + QuestiePlayer.currentQuestlog[questId] = quest + quest.LocalizedName = data.title + + if complete == -1 then + QuestieQuest:UpdateQuest(questId) + else + -- Only draw the source item objective when the quest is not yet complete. + -- If the quest is complete (complete == 1), the source item was consumed during + -- the quest (e.g. Cold Iron Key for quest 12843) and should not draw its drop NPC. + if complete == 1 then + -- Mark the quest object as complete so QuestieArrow collects finisher spawns + -- instead of objective spawns. Without this, the arrow falls through to the + -- objective collection path and picks up any stale fake item objectives. + quest.isComplete = true + quest.WasComplete = true + else + QuestieQuest:CheckQuestSourceItem(questId, true) + end + QuestieQuest:PopulateQuestLogInfo(quest) + + if QuestieQuest:ShouldShowQuestNotes(questId) then + QuestieQuest:PopulateObjectiveNotes(quest) + else + QuestieTooltips:RemoveQuest(questId) + end + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Adding the quest", questId, + QuestiePlayer.currentQuestlog[questId]) + end + end + + QuestieCombatQueue:Queue(function() + QuestieTracker:Update() + end) +end + +-- This checks and manually adds quest item tooltips for sourceItems +local function _AddSourceItemObjective(quest) + local sourceItemId = tonumber(quest.sourceItemId) or 0 + if sourceItemId <= 0 then + return + end + + local questObjectives = QuestieDB.QueryQuestSingle(quest.Id, "objectives") + local itemObjectives = questObjectives and questObjectives[3] + + -- If sourceItemId is already part of an item objective, do nothing + if itemObjectives then + for _, itemObjectiveIndex in pairs(itemObjectives) do + for _, itemObjectiveId in pairs(itemObjectiveIndex) do + if itemObjectiveId == sourceItemId then + Questie:Debug(Questie.DEBUG_INFO, + "[QuestieQuest:_AddSourceItemObjective] This item is already part of a quest objective.") + return + end + end + end + end + + local itemName = QuestieDB.QueryItemSingle(sourceItemId, "name") + if not itemName then + return + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:_AddSourceItemObjective] Adding Source Item Id for:", sourceItemId) + + local fakeObjective = { + Id = quest.Id, + IsSourceItem = true, + QuestData = quest, + Index = 1, + Needed = 1, + Collected = 1, + text = itemName, + Description = itemName + } + + QuestieTooltips:RegisterObjectiveTooltip(quest.Id, "i_" .. sourceItemId, fakeObjective); +end + +-- This checks and manually adds quest item tooltips for SpellItems +local function _AddSpellItemObjective(quest) + if not quest.SpellItemId then + return + end + + local questObjectives = QuestieDB.QueryQuestSingle(quest.Id, "objectives") + local spellObjectives = questObjectives and questObjectives[6] + if not spellObjectives then + return + end + + local depthIndex = 1 -- TODO: What is better for this? + local needed = (quest.Objectives and quest.Objectives[depthIndex] and quest.Objectives[depthIndex].Needed) or 0 + local collected = (quest.Objectives and quest.Objectives[depthIndex] and quest.Objectives[depthIndex].Collected) or 0 + local desc = (quest.Objectives and quest.Objectives[depthIndex] and quest.Objectives[depthIndex].Description) or "" + + local fakeObjective = { + Id = quest.Id, + IsSourceItem = true, + QuestData = quest, + Index = 1, + Needed = needed, + Collected = collected, + text = nil, + Description = desc, + } + + QuestieTooltips:RegisterObjectiveTooltip(quest.Id, "i_" .. quest.SpellItemId, fakeObjective); +end + + +-- This checks and manually adds quest item tooltips for requiredSourceItems +local function _AddRequiredSourceItemObjective(quest) + if not quest.requiredSourceItems then + return + end + + local questObjectives = QuestieDB.QueryQuestSingle(quest.Id, "objectives") + local itemObjectives = questObjectives and questObjectives[3] + + for index, requiredSourceItemId in pairs(quest.requiredSourceItems) do + local alreadyInObjectives = false + + if itemObjectives then + for _, itemObjectiveIndex in pairs(itemObjectives) do + for _, itemObjectiveId in pairs(itemObjectiveIndex) do + if itemObjectiveId == requiredSourceItemId or quest.sourceItemId == requiredSourceItemId then + Questie:Debug(Questie.DEBUG_INFO, + "[QuestieQuest:_AddRequiredSourceItemObjective] This item is already part of a quest objective.") + alreadyInObjectives = true + break + end + end + if alreadyInObjectives then + break + end + end + end + + if not alreadyInObjectives then + local itemName = QuestieDB.QueryItemSingle(requiredSourceItemId, "name") + if itemName then + Questie:Debug(Questie.DEBUG_INFO, + "[QuestieQuest:_AddRequiredSourceItemObjective] Adding Source Item Id for:", requiredSourceItemId) + + local fakeObjective = { + Id = quest.Id, + IsRequiredSourceItem = true, + QuestData = quest, + Index = index, + text = itemName, + Description = itemName + } + + QuestieTooltips:RegisterObjectiveTooltip(quest.Id, "i_" .. requiredSourceItemId, fakeObjective); + end + end + end +end + + + +function QuestieQuest:GetAllQuestIdsNoObjectives() + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest] Getting all quests without objectives") + QuestiePlayer.currentQuestlog = {} + + for questId, data in pairs(QuestLogCache.questLog_DO_NOT_MODIFY) do -- DO NOT MODIFY THE RETURNED TABLE + local quest = QuestieDB.GetQuest(questId) + + if not quest then + if not Questie._sessionWarnings[questId] then + if not Questie.IsSoD then + Questie:Error(l10n( + "The quest %s is missing from Questie's database. Please report this on GitHub or Discord!", + tostring(questId))) + end + Questie._sessionWarnings[questId] = true + end + + QuestiePlayer.currentQuestlog[questId] = questId + else + QuestiePlayer.currentQuestlog[questId] = quest + quest.LocalizedName = data.title + _AddSourceItemObjective(quest) + _AddRequiredSourceItemObjective(quest) + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Adding the quest", questId, + QuestiePlayer.currentQuestlog[questId]) + end + end +end + +-- iterate all notes, update / remove as needed +---@param quest Quest +function QuestieQuest:UpdateObjectiveNotes(quest) + if (not QuestiePlayer.currentQuestlog) or (not QuestiePlayer.currentQuestlog[quest.Id]) then + return + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] UpdateObjectiveNotes:", quest.Id) + for objectiveIndex, objective in pairs(quest.Objectives) do + local result, err = xpcall(QuestieQuest.PopulateObjective, ERR_FUNCTION, QuestieQuest, quest, objectiveIndex, + objective, false) + if (not result) then + Questie:Debug(Questie.DEBUG_ELEVATED, "[QuestieQuest] There was an error populating objectives for", + quest.name, quest.Id, objectiveIndex, err) + end + end + + if next(quest.SpecialObjectives) then + for _, objective in pairs(quest.SpecialObjectives) do + local result, err = xpcall(QuestieQuest.PopulateObjective, ERR_FUNCTION, QuestieQuest, quest, 0, objective, + true) + if not result then + Questie:Error("[QuestieQuest]: [SpecialObjectives] " .. + l10n("There was an error populating objectives for %s %s %s %s", quest.name or "No quest name", + quest.Id or "No quest id", 0 or "No objective", err or "No error")); + end + end + end +end + +-- This function is used to check the players bags for an item that matches quest.sourceItemId. +-- A good example for this edge case is [18] The Price of Shoes (118) where upon acceptance, Verner's Note (1283) is given +-- to the player and the Quest is immediately flagged as Complete. If the note is destroyed then a slightly modified version +-- of QuestieDB.IsComplete() that uses this function, returns zero allowing the quest updates to properly set the quests state. +---@param questId number @QuestID +---@param makeObjective boolean @If set to true, then this will create an incomplete objective for the missing quest item +---@return boolean @Returns true if quest.sourceItemId matches an item in a players bag +function QuestieQuest:CheckQuestSourceItem(questId, makeObjective) + local quest = QuestieDB.GetQuest(questId) + local sourceItem = true + + -- Ascension/custom quests may omit sourceItemId (nil). Normalize to 0. + local sourceItemId = (quest and tonumber(quest.sourceItemId)) or 0 + + if quest and sourceItemId > 0 then + for bag = -2, 4 do + local numSlots = QuestieCompat.GetContainerNumSlots(bag) or 0 + for slot = 1, numSlots do + local itemId = select(10, QuestieCompat.GetContainerItemInfo(bag, slot)) + if itemId == sourceItemId then + return true + end + end + + sourceItem = false + end + + -- If we are missing the sourceItem for zero objective quests then make an objective for it so the + -- player has a visual indication as to what item is missing and so the quest has a "tag" of some kind. + -- Also double check the quests leaderboard and make sure an objective doesn't already exist. + if (not sourceItem) and makeObjective and (not QuestieQuest:GetAllLeaderBoardDetails(quest.Id)[1]) then + local itemName = QuestieDB.QueryItemSingle(sourceItemId, "name") or ("Item " .. tostring(sourceItemId)) + quest.Objectives = { + [1] = { + Description = itemName, + Type = "item", + Needed = 1, + Collected = 0, + Completed = false, + Id = sourceItemId, + questId = quest.Id + } + } + end + else + return true + end + + return false +end + +local function _GetIconScaleForAvailable() + return Questie.db.profile.availableScale or 1.3 +end + +---@param quest Quest +function QuestieQuest:AddFinisher(quest) + --We should never ever add the quest if IsQuestFlaggedComplete true. + local questId = quest.Id + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Adding finisher for quest", questId) + + local complete = QuestieDB.IsComplete(questId) + + if (QuestiePlayer.currentQuestlog[questId] and (IsQuestFlaggedCompleted(questId) == false) and (complete == 1 or complete == 0) and (not Questie.db.char.complete[questId])) then + local finisher, key + + if quest.Finisher ~= nil then + if quest.Finisher.Type == "monster" then + finisher = QuestieDB:GetNPC(quest.Finisher.Id) + key = "m_" .. quest.Finisher.Id + elseif quest.Finisher.Type == "object" then + finisher = QuestieDB:GetObject(quest.Finisher.Id) + key = "o_" .. quest.Finisher.Id + else + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieQuest] Unhandled finisher type:", quest.Finisher.Type, + questId, quest.name) + end + else + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieQuest] Quest has no finisher:", questId, quest.name) + end + + if finisher ~= nil then + -- Certain race conditions can occur when the NPC/Objects are both the Quest Starter and Quest Finisher + -- which can result in duplicate Quest Title tooltips appearing. DrawAvailableQuest() would have already + -- registered this NPC/Object so, the appropriate tooltip lines are already present. This checks and clears + -- any duplicate keys before registering the Quest Finisher. + + -- Clear duplicate keys if they exist + if QuestieTooltips.lookupByKey[key] then + if QuestieTooltips:GetTooltip(key) ~= nil and #QuestieTooltips:GetTooltip(key) > 1 then + for ttline = 1, #QuestieTooltips:GetTooltip(key) do + for index, line in pairs(QuestieTooltips:GetTooltip(key)) do + if (ttline == index) then + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest] AddFinisher - Removing duplicate Quest Title!") + + -- Remove duplicate Quest Title + QuestieTooltips.lookupByKey[key][tostring(questId) .. " " .. finisher.name] = nil + + -- Now check to see if the dup has a Special Objective + local objText = string.match(line, ".*|cFFcbcbcb.*") + + if objText then + local objIndex + + -- Grab the Special Objective index + if quest.SpecialObjectives[1] then + objIndex = quest.SpecialObjectives[1].Index + end + + if objIndex then + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest] AddFinisher - Removing Special Objective!") + + -- Remove Special Objective Text + QuestieTooltips.lookupByKey[key][tostring(questId) .. " " .. objIndex] = nil + end + end + end + end + end + end + end + + QuestieTooltips:RegisterQuestStartTooltip(questId, finisher.name, finisher.id, key) + + local finisherIcons = {} + local finisherLocs = {} + + for finisherZone, spawns in pairs(finisher.spawns or {}) do + if (finisherZone ~= nil and spawns ~= nil) then + for _, coords in ipairs(spawns) do + local data = { + Id = questId, + Icon = Questie.ICON_TYPE_COMPLETE, + GetIconScale = _GetIconScaleForAvailable, + IconScale = _GetIconScaleForAvailable(), + Type = "complete", + QuestData = quest, + Name = finisher.name, + IsObjectiveNote = false, + } + + if QuestieDB.IsActiveEventQuest(quest.Id) then + data.Icon = Questie.ICON_TYPE_EVENTQUEST_COMPLETE + elseif QuestieDB.IsPvPQuest(quest.Id) then + data.Icon = Questie.ICON_TYPE_PVPQUEST_COMPLETE + elseif quest.IsRepeatable then + data.Icon = Questie.ICON_TYPE_REPEATABLE_COMPLETE + end + + if (coords[1] == -1 or coords[2] == -1) then + local dungeonLocation = ZoneDB:GetDungeonLocation(finisherZone) + if dungeonLocation ~= nil then + for _, value in ipairs(dungeonLocation) do + local zone = value[1]; + local x = value[2]; + local y = value[3]; + + QuestieMap:DrawWorldIcon(data, zone, x, y) + end + end + else + local x = coords[1]; + local y = coords[2]; + + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest] Adding world icon as finisher:", + finisherZone, x, y) + finisherIcons[finisherZone] = QuestieMap:DrawWorldIcon(data, finisherZone, x, y) + + if not finisherLocs[finisherZone] then + finisherLocs[finisherZone] = { x, y } + end + end + end + end + end + + if finisher.waypoints then + for zone, waypoints in pairs(finisher.waypoints) do + if (not ZoneDB.IsDungeonZone(zone)) then + if not finisherIcons[zone] and waypoints[1] and waypoints[1][1] and waypoints[1][1][1] then + local data = { + Id = questId, + Icon = Questie.ICON_TYPE_COMPLETE, + GetIconScale = _GetIconScaleForAvailable, + IconScale = _GetIconScaleForAvailable(), + Type = "complete", + QuestData = quest, + Name = finisher.name, + IsObjectiveNote = false, + } + + if QuestieDB.IsActiveEventQuest(quest.Id) then + data.Icon = Questie.ICON_TYPE_EVENTQUEST_COMPLETE + elseif QuestieDB.IsPvPQuest(quest.Id) then + data.Icon = Questie.ICON_TYPE_PVPQUEST_COMPLETE + elseif quest.IsRepeatable then + data.Icon = Questie.ICON_TYPE_REPEATABLE_COMPLETE + end + + finisherIcons[zone] = QuestieMap:DrawWorldIcon(data, zone, waypoints[1][1][1], + waypoints[1][1][2]) + finisherLocs[zone] = { waypoints[1][1][1], waypoints[1][1][2] } + end + + QuestieMap:DrawWaypoints(finisherIcons[zone], waypoints, zone) + end + end + end + else + Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieQuest] finisher or finisher.spawns == nil for questId", + questId) + end + end +end + +---@param objective any +function QuestieQuest.ShouldHideObjective(objective) + local hideCondition = objective.HideCondition + if not hideCondition then + return false + end + + if hideCondition.hideIfQuestActive then + local questId = hideCondition.hideIfQuestActive + if QuestiePlayer.currentQuestlog[questId] or (Questie.db and Questie.db.char and Questie.db.char.complete and Questie.db.char.complete[questId]) then + return true + end + end + + if hideCondition.hideIfQuestComplete then + local questId = hideCondition.hideIfQuestComplete + if Questie.db and Questie.db.char and Questie.db.char.complete and Questie.db.char.complete[questId] then + return true + end + end + + return false +end + +---@param quest Quest +---@param objectiveIndex ObjectiveIndex +---@param objective QuestObjective +---@param blockItemTooltips any +function QuestieQuest:PopulateObjective(quest, objectiveIndex, objective, blockItemTooltips) -- must be p-called + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:PopulateObjective]", objective.Description) + + if (not objective.Update) then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:PopulateObjective] - Quest is already updated. --> Exiting!") + return + end + + objective:Update() + + if QuestieQuest.ShouldHideObjective(objective) then + _UnloadAlreadySpawnedIcons(objective) + return + end + + local completed = objective.Completed + local objectiveData = quest.ObjectiveData[objective.Index] or + objective -- the reason for "or objective" is to handle "SpecialObjectives" aka non-listed objectives (demonic runestones for closing the portal) + + if (not objective.spawnList or (not next(objective.spawnList))) and _QuestieQuest.objectiveSpawnListCallTable[objectiveData.Type] then + objective.spawnList = _QuestieQuest.objectiveSpawnListCallTable[objectiveData.Type](objective.Id, objective, + objectiveData); + end + + -- Tooltips should always show. + -- For completed and uncompleted objectives + _RegisterObjectiveTooltips(objective, quest.Id, blockItemTooltips) + + if completed or quest.isComplete then + _UnloadAlreadySpawnedIcons(objective) + return + end + + if (not objective.Color) then + objective.Color = QuestieLib:ColorWheel() + end + + if objective.spawnList and next(objective.spawnList) then + local maxPerType = 300 + + if Questie.db.profile.enableIconLimit and Questie.db.profile.iconLimit < maxPerType then + maxPerType = Questie.db.profile.iconLimit + end + + local closestStarter = QuestieMap:FindClosestStarter() + local objectiveCenter = closestStarter[quest.Id] + + local zoneCount = 0 + local zones = {} + local objectiveZone + + for _, spawnData in pairs(objective.spawnList) do + for zone in pairs(spawnData.Spawns) do + zones[zone] = true + end + end + + for zone in pairs(zones) do + objectiveZone = zone + zoneCount = zoneCount + 1 + end + + if zoneCount == 1 then -- this objective happens in 1 zone, clustering should be relative to that zone + local x, y = HBD:GetWorldCoordinatesFromZone(0.5, 0.5, ZoneDB:GetUiMapIdByAreaId(objectiveZone)) + objectiveCenter = { x = x, y = y } + end + + local iconsToDraw, _ = _DetermineIconsToDraw(quest, objective, objectiveIndex, objectiveCenter) + local icon, iconPerZone = _DrawObjectiveIcons(quest.Id, iconsToDraw, objective, maxPerType) + _DrawObjectiveWaypoints(objective, icon, iconPerZone) + end +end + +_RegisterObjectiveTooltips = function(objective, questId, blockItemTooltips) + Questie:Debug(Questie.DEBUG_INFO, "Registering objective tooltips for", objective.Description) + + if objective.spawnList then + if (not objective.hasRegisteredTooltips) then + for id, spawnData in pairs(objective.spawnList) do + if spawnData.TooltipKey and (not objective.AlreadySpawned[id]) then + QuestieTooltips:RegisterObjectiveTooltip(questId, spawnData.TooltipKey, objective) + end + end + + objective.hasRegisteredTooltips = true + end + else + -- No spawnList and no Id means there is nothing Questie can draw for this objective. + -- This covers server-tracked trigger objectives (e.g. "complete N quests in zone" for + -- quest 50150) which may have any objectiveType from the server, not just "event". + if not objective.Id then + objective.hasRegisteredTooltips = true + return + end + Questie:Error("[QuestieQuest]: [Tooltips] " .. + l10n("There was an error populating objectives for %s %s %s %s", objective.Description or "No objective text", + questId or "No quest id", 0 or "No objective", "No error")) + end + + if (not objective.registeredItemTooltips) and objective.Type == "item" and (not blockItemTooltips) and objective.Id then + local itemName = QuestieDB.QueryItemSingle(objective.Id, "name") + + if itemName then + QuestieTooltips:RegisterObjectiveTooltip(questId, "i_" .. objective.Id, objective) + end + + objective.registeredItemTooltips = true + end +end + +_UnloadAlreadySpawnedIcons = function(objective) + if objective.AlreadySpawned and next(objective.AlreadySpawned) then + for id, spawn in pairs(objective.AlreadySpawned) do + if spawn then + for _, mapIcon in pairs(spawn.mapRefs) do + mapIcon:Unload() + end + for _, minimapIcon in pairs(spawn.minimapRefs) do + minimapIcon:Unload() + end + spawn.mapRefs = {} + spawn.minimapRefs = {} + end + end + objective.AlreadySpawned = {} + end +end + +---@param quest Quest +---@param objective QuestObjective +---@param objectiveIndex ObjectiveIndex +---@param objectiveCenter {x:X, y:Y} +_DetermineIconsToDraw = function(quest, objective, objectiveIndex, objectiveCenter) + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:_DetermineIconsToDraw]") + + local iconsToDraw = {} + local spawnItemId + + for id, spawnData in pairs(objective.spawnList) do + if spawnData.ItemId then + spawnItemId = spawnData.ItemId + end + + if (not objective.Icon) and spawnData.Icon then + objective.Icon = spawnData.Icon + end + + if (not objective.AlreadySpawned[id]) and (not objective.Completed) and Questie.db.profile.enableObjectives then + local data = { + Id = quest.Id, + ObjectiveIndex = objectiveIndex, + QuestData = quest, + ObjectiveData = objective, + Icon = spawnData.Icon, + IconColor = quest.Color, + GetIconScale = spawnData.GetIconScale, + IconScale = spawnData.GetIconScale(), + Name = spawnData.Name, + Type = objective.Type, + ObjectiveTargetId = spawnData.Id + } + + objective.AlreadySpawned[id] = { + data = data, + minimapRefs = {}, + mapRefs = {}, + } + + for zone, spawns in pairs(spawnData.Spawns) do + local uiMapId = ZoneDB:GetUiMapIdByAreaId(zone) + for _, spawn in pairs(spawns) do + if (spawn[1] and spawn[2]) then + local drawIcon = { + AlreadySpawnedId = id, + data = data, + zone = zone, + AreaID = zone, + UiMapID = uiMapId, + x = spawn[1], + y = spawn[2], + worldX = 0, + worldY = 0, + distance = 0, + touched = nil, -- TODO change. This is meant to let lua reserve memory for all keys needed for sure. + } + local x, y, _ = HBD:GetWorldCoordinatesFromZone(drawIcon.x / 100, drawIcon.y / 100, uiMapId) + x = x or 0 + y = y or 0 + -- Cache world coordinates for clustering calculations + drawIcon.worldX = x + drawIcon.worldY = y + -- There are instances when X and Y are not in the same map such as in dungeons etc, we default to 0 if it is not set + -- This will create a distance of 0 but it doesn't matter. + local distance = QuestieLib:Euclid(objectiveCenter.x or 0, objectiveCenter.y or 0, x, y); + drawIcon.distance = distance or 0 -- cache for clustering + -- there can be multiple icons at same distance at different directions + --local distance = floor(distance) + local iconList = iconsToDraw[distance] + if iconList then + iconList[#iconList + 1] = drawIcon + else + iconsToDraw[distance] = { drawIcon } + end + end + end + end + end + end + + return iconsToDraw, spawnItemId +end + +_DrawObjectiveIcons = function(questId, iconsToDraw, objective, maxPerType) + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:_DrawObjectiveIcons] Adding Icons for quest:", questId) + + local spawnedIconCount = 0 + local icon + local iconPerZone = {} + + local range = Questie.db.profile.clusterLevelHotzone + + local iconCount, orderedList = _GetIconsSortedByDistance(iconsToDraw) + + if orderedList[1] and orderedList[1].Icon == Questie.ICON_TYPE_OBJECT then -- new clustering / limit code should prevent problems, always show all object notes + range = range * 0.2; -- Only use 20% of the default range. + end + + local hotzones = QuestieMap.utils:CalcHotzones(orderedList, range, iconCount); + + for i = 1, #hotzones do + local hotzone = hotzones[i] + if (spawnedIconCount > maxPerType) then + Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest] Too many icons for quest:", questId) + break; + end + + --Any icondata will do because they are all the same + icon = hotzone[1]; + + local spawnsMapRefs = objective.AlreadySpawned[icon.AlreadySpawnedId].mapRefs + local spawnsMinimapRefs = objective.AlreadySpawned[icon.AlreadySpawnedId].minimapRefs + + local centerX, centerY = QuestieMap.utils.CenterPoint(hotzone) + + local dungeonLocation = ZoneDB:GetDungeonLocation(icon.zone) + + if dungeonLocation and centerX == -1 and centerY == -1 then + if dungeonLocation[2] then -- We have more than 1 instance entrance (e.g. Blackrock dungeons) + local secondDungeonLocation = dungeonLocation[2] + + icon.zone = secondDungeonLocation[1] + centerX = secondDungeonLocation[2] + centerY = secondDungeonLocation[3] + + local iconMap, iconMini = QuestieMap:DrawWorldIcon(icon.data, icon.zone, centerX, centerY) -- clustering code takes care of duplicates as long as min-dist is more than 0 + + if iconMap and iconMini then + iconPerZone[icon.zone] = { iconMap, centerX, centerY } + spawnsMapRefs[#spawnsMapRefs + 1] = iconMap + spawnsMinimapRefs[#spawnsMinimapRefs + 1] = iconMini + end + + spawnedIconCount = spawnedIconCount + 1; + end + + local firstDungeonLocation = dungeonLocation[1] + icon.zone = firstDungeonLocation[1] + centerX = firstDungeonLocation[2] + centerY = firstDungeonLocation[3] + end + + local iconMap, iconMini = QuestieMap:DrawWorldIcon(icon.data, icon.zone, centerX, centerY) -- clustering code takes care of duplicates as long as min-dist is more than 0 + + if iconMap and iconMini then + iconPerZone[icon.zone] = { iconMap, centerX, centerY } + spawnsMapRefs[#spawnsMapRefs + 1] = iconMap + spawnsMinimapRefs[#spawnsMinimapRefs + 1] = iconMini + end + + spawnedIconCount = spawnedIconCount + 1; + end + + return icon, iconPerZone +end + +_GetIconsSortedByDistance = function(icons) + local iconCount = 0; + local orderedList = {} + local distances = {} + + local i = 0 + + for distance in pairs(icons) do + i = i + 1 + distances[i] = distance + end + + table.sort(distances) + + -- use the keys to retrieve the values in the sorted order + for distIndex = 1, #distances do + local iconsAtDisntace = icons[distances[distIndex]] + + for iconIndex = 1, #iconsAtDisntace do + local icon = iconsAtDisntace[iconIndex] + + iconCount = iconCount + 1 + orderedList[iconCount] = icon + end + end + + return iconCount, orderedList +end + +_DrawObjectiveWaypoints = function(objective, icon, iconPerZone) + for _, spawnData in pairs(objective.spawnList) do -- spawnData.Name, spawnData.Spawns + if spawnData.Waypoints then + for zone, waypoints in pairs(spawnData.Waypoints) do + local firstWaypoint = waypoints[1][1] + + if (not iconPerZone[zone]) and icon and firstWaypoint[1] ~= -1 and firstWaypoint[2] ~= -1 then -- spawn an icon in this zone for the mob + local iconMap, iconMini = QuestieMap:DrawWorldIcon(icon.data, zone, firstWaypoint[1], + firstWaypoint[2]) -- clustering code takes care of duplicates as long as min-dist is more than 0 + + if iconMap and iconMini then + iconPerZone[zone] = { iconMap, firstWaypoint[1], firstWaypoint[2] } + tinsert(objective.AlreadySpawned[icon.AlreadySpawnedId].mapRefs, iconMap); + tinsert(objective.AlreadySpawned[icon.AlreadySpawnedId].minimapRefs, iconMini); + end + end + + local ipz = iconPerZone[zone] + + if ipz then + QuestieMap:DrawWaypoints(ipz[1], waypoints, zone, spawnData.Hostile and { 1, 0.2, 0, 0.7 } or nil) + end + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:_DrawObjectiveWaypoints]") + end + end +end + +---@param quest Quest +function QuestieQuest:PopulateObjectiveNotes(quest) -- this should be renamed to PopulateNotes as it also handles finishers now + if (not quest) then + return + end + + if QuestieDB.IsComplete(quest.Id) == 1 then + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:PopulateObjectiveNotes] Quest Complete! Adding Finisher for:", + quest.Id) + + QuestieQuest:UpdateQuest(quest.Id) + _AddSourceItemObjective(quest) + _AddRequiredSourceItemObjective(quest) + _AddSpellItemObjective(quest) + + return + end + + if (not quest.Color) then + quest.Color = QuestieLib:ColorWheel() + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:PopulateObjectiveNotes] Populating objectives for:", quest.Id) + + QuestieQuest:UpdateObjectiveNotes(quest) + _AddSourceItemObjective(quest) + _AddRequiredSourceItemObjective(quest) + _AddSpellItemObjective(quest) +end + +---@param quest Quest +---@return true? +function QuestieQuest:PopulateQuestLogInfo(quest) + if (not quest) then + return nil + end + + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:PopulateQuestLogInfo] ", quest.Id) + + local questLogEngtry = QuestLogCache.GetQuest(quest.Id) -- DO NOT MODIFY THE RETURNED TABLE + + if (not questLogEngtry) then return end + + if questLogEngtry.isComplete ~= nil and questLogEngtry.isComplete == 1 then + quest.isComplete = true + end + + --Uses the category order to draw the quests and trusts the database order. + + local questObjectives = QuestieQuest:GetAllLeaderBoardDetails(quest.Id) or {} -- DO NOT MODIFY THE RETURNED TABLE + + for objectiveIndex, objective in pairs(questObjectives) do + if objective.type and string.len(objective.type) > 1 then + if (not quest.ObjectiveData) or (not quest.ObjectiveData[objectiveIndex]) then + Questie:Error(l10n("Missing objective data for quest "), quest.Id, " ", objective.text) + else + if not quest.Objectives[objectiveIndex] then + quest.Objectives[objectiveIndex] = { + Id = quest.ObjectiveData[objectiveIndex].Id, + Index = objectiveIndex, + questId = quest.Id, + _lastUpdate = 0, + Description = objective.text, + spawnList = {}, + AlreadySpawned = {}, + Update = _QuestieQuest.ObjectiveUpdate, + Coordinates = quest.ObjectiveData[objectiveIndex].Coordinates, -- Only for type "event" + RequiredRepValue = quest.ObjectiveData[objectiveIndex].RequiredRepValue, + HideCondition = quest.ObjectiveData[objectiveIndex].HideCondition + } + end + + quest.Objectives[objectiveIndex]:Update() + end + end + + if (not quest.Objectives[objectiveIndex]) or (not quest.Objectives[objectiveIndex].Id) then + Questie:Debug(Questie.DEBUG_DEVELOP, + "[QuestieQuest:PopulateQuestLogInfo] Error finding entry ID for objective", objectiveIndex, + objective.type, objective.text, "of questId:", quest.Id) + end + end + + -- find special unlisted objectives + if next(quest.SpecialObjectives) then + for index, specialObjective in pairs(quest.SpecialObjectives) do + if (not specialObjective.Description) then + specialObjective.Description = "Special objective" + end + + specialObjective.questId = quest.Id + + if specialObjective.RealObjectiveIndex and quest.Objectives[specialObjective.RealObjectiveIndex] then + -- This specialObjective is an extraObjective and has a RealObjectiveIndex set + specialObjective.Completed = quest.Objectives[specialObjective.RealObjectiveIndex].Completed + specialObjective.Update = function(self) + self.Completed = quest.Objectives[self.RealObjectiveIndex].Completed + end + elseif specialObjective.Type == "item" and specialObjective.Id then + specialObjective.Completed = GetItemCount(specialObjective.Id) > 0 + specialObjective.Update = function(self) + self.Completed = GetItemCount(self.Id) > 0 + end + else + specialObjective.Update = NOP_FUNCTION + end + + specialObjective.Index = 64 + index -- offset to not conflict with real objectives + specialObjective.AlreadySpawned = specialObjective.AlreadySpawned or {} + end + end + + if #quest.Objectives == 0 and #quest.SpecialObjectives == 0 and (not quest.ObjectiveData or #quest.ObjectiveData == 0) and ((quest.triggerEnd and #quest.triggerEnd > 0) or (quest.Finisher and quest.Finisher.Id ~= nil)) then + -- Some quests when picked up will be flagged isComplete == 0 but the quest.Objective table or quest.SpecialObjectives table is nil. This + -- check assumes the Quest should have been flagged questLogEngtry.isComplete == 1. We're specifically looking for a quest.triggerEnd or + -- a quest.Finisher.Id because this might throw an error if there is nothing to populate when we call QuestieQuest:AddFinisher(). + -- We added a check for quest.ObjectiveData to ensure we don't prematurely complete quests that are just waiting for the server to sync their objectives. + QuestieMap:UnloadQuestFrames(quest.Id) + QuestieQuest:AddFinisher(quest) + quest.isComplete = true + end + + return true +end + +---@param self QuestObjective @quest.Objectives[] entry +function _QuestieQuest.ObjectiveUpdate(self) + if self.isUpdated then + return + end + + local questObjectives = QuestieQuest:GetAllLeaderBoardDetails(self.questId) -- DO NOT MODIFY THE RETURNED TABLE + + if questObjectives and questObjectives[self.Index] then + local obj = questObjectives[self.Index] -- DO NOT EDIT THE TABLE + if (obj.type) then + -- fixes for api bug + local numFulfilled = obj.numFulfilled or 0 + local numRequired = obj.numRequired or 0 + local finished = obj.finished or false -- ensure its boolean false and not nil (hack) + + self.Type = obj.type; + self.Description = obj.text + self.Collected = tonumber(numFulfilled); + self.Needed = tonumber(numRequired); + self.Completed = (self.Needed == self.Collected and self.Needed > 0) or + (finished and (self.Needed == 0 or (not self.Needed))) -- some objectives get removed on PLAYER_LOGIN because isComplete is set to true at random???? + -- Mark objective updated + self.isUpdated = true + end + end +end + +---@param questId number +---@return table|nil @DO NOT EDIT RETURNED TABLE +function QuestieQuest:GetAllLeaderBoardDetails(questId) + Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest:GetAllLeaderBoardDetails] for questId", questId) + + local questObjectives = QuestLogCache.GetQuestObjectives(questId) -- DO NOT MODIFY THE RETURNED TABLE + if (not questObjectives) then return end + + for _, objective in pairs(questObjectives) do -- DO NOT MODIFY THE RETURNED TABLE + -- TODO Move this to QuestEventHandler module or QuestieQuest:AcceptQuest( ) + QuestieQuest:UpdateQuest( ) (accept quest one required to register objectives without progress) + -- TODO After ^^^ moving remove this function and use "QuestLogCache.GetQuest(questId).objectives -- DO NOT MODIFY THE RETURNED TABLE" in place of it. + QuestieAnnounce:ObjectiveChanged(questId, objective.text, objective.numFulfilled, objective.numRequired) + end + + return questObjectives +end + +function QuestieQuest.DrawDailyQuest(questId) + if QuestieDB.IsDoable(questId) then + local quest = QuestieDB.GetQuest(questId) + AvailableQuests.DrawAvailableQuest(quest) + end +end + +return QuestieQuest diff --git a/.history/Questie-335_20260222013933.toc b/.history/Questie-335_20260222013933.toc new file mode 100644 index 0000000..fa141ef --- /dev/null +++ b/.history/Questie-335_20260222013933.toc @@ -0,0 +1,250 @@ +## Interface: 30300 +## Title: Questie - Ebonhold +## Author: Questie Team +## Notes: A standalone Classic QuestHelper +## Notes-esMX: Ayundante de misión +## Notes-esES: Ayundante de misión +## Notes-ptBR: Ajudante de missão +## Notes-frFR: Assistant de quête +## Version: 9.8.2 +## RequiredDeps: +## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu +## SavedVariables: QuestieConfig +## SavedVariablesPerCharacter: QuestieConfigCharacter +## X-Curse-Project-ID: 334372 +## X-Wago-ID: qv634BKb +## X-WOW_PROJECT_ID: 11 + +# Loader module +Modules\Libs\QuestieLoader.lua + +# COMPATIBILITY +Modules\QuestieCompat.lua +Compat\embeds.xml + +Modules\VersionCheck.lua + +# Thread Manager +Modules\Libs\ThreadLib.lua +#Message Handler +Modules\Libs\MessageHandler.lua + +#Quest XP +Database\QuestXP\QuestieXP.lua +Database\QuestXP\DB\xpDB-wotlk.lua + +# stream module (used by DB) +Modules\QuestieStream.lua + +# Zones +Database\Zones\zoneTables.lua +# Ascension Custom Zones +Database\Ascension\Zones\AscensionZoneTables.lua +Database\Ascension\Zones\AscensionUiMapData.lua +# Ebonhold Custom Zones +Database\Ebonhold\Zones\EbonholdZoneTables.lua +Database\Ebonhold\Zones\EbonholdUiMapData.lua +Database\Zones\zoneDB.lua + + +# Databases +Database\Wotlk\wotlkItemDB.lua +Database\Wotlk\wotlkNpcDB.lua +Database\Wotlk\wotlkObjectDB.lua +Database\Wotlk\wotlkQuestDB.lua +Database\QuestieDB.lua +Database\questDB.lua +Database\objectDB.lua +Database\npcDB.lua +Database\itemDB.lua +Database\Constants.lua +Database\MeetingStones.lua + +# Ascension Custom Database +Database\Ascension\Bronzebeard\AscensionNpcDB.lua +Database\Ascension\Bronzebeard\AscensionObjectDB.lua +Database\Ascension\Bronzebeard\AscensionItemDB.lua +Database\Ascension\Bronzebeard\AscensionQuestDB.lua +Database\Ascension\AscensionLoader.lua + +# Ebonhold Custom Database +Database\Ebonhold\Ebonhold\EbonholdNpcDB.lua +Database\Ebonhold\Ebonhold\EbonholdObjectDB.lua +Database\Ebonhold\Ebonhold\EbonholdItemDB.lua +Database\Ebonhold\Ebonhold\EbonholdQuestDB.lua +Database\Ebonhold\EbonholdLoader.lua + + +# Corrections +Database\Corrections\AutoTableUpdates.lua +Database\Corrections\QuestieCorrections.lua +Database\Corrections\QuestieItemBlacklist.lua +Database\Corrections\QuestieNPCBlacklist.lua +Database\Corrections\QuestieQuestBlacklist.lua +#Database\Corrections\SoMPhases.lua +Database\Corrections\QuestieEvent.lua + +# Automatic General Corrections +Database\Corrections\Automatic\itemStartFixes.lua +Database\Corrections\Automatic\classicQuestReputationFixes.lua + +# Classic Corrections +Database\Corrections\classicQuestFixes.lua +Database\Corrections\classicNPCFixes.lua +Database\Corrections\classicItemFixes.lua +Database\Corrections\classicObjectFixes.lua + +# TBC Corrections +Database\Corrections\tbcQuestFixes.lua +Database\Corrections\tbcNPCFixes.lua +Database\Corrections\tbcItemFixes.lua +Database\Corrections\tbcObjectFixes.lua + +# Wotlk Corrections +Database\Corrections\wotlkQuestFixes.lua +Database\Corrections\wotlkNPCFixes.lua +Database\Corrections\wotlkItemFixes.lua +Database\Corrections\wotlkObjectFixes.lua + +# Compiler +Database\compiler.lua + +# Localization +Localization\l10n.lua +Localization\Translations\Translations.xml + +Localization\lookups\lookupQuestCategories.lua +Localization\lookups\lookupZones.lua +Localization\lookups\Wotlk\lookupItems\lookupItems.xml +Localization\lookups\Wotlk\lookupNpcs\lookupNpcs.xml +Localization\lookups\Wotlk\lookupObjects\lookupObjects.xml +Localization\lookups\Wotlk\lookupQuests\lookupQuests.xml + +# Libs +Modules\Libs\QuestieLib.lua +Modules\Libs\QuestieSerializer.lua +Modules\Libs\QuestieCombatQueue.lua +Modules\Libs\RamerDouglasPeucker.lua + +# Modules +Modules\QuestieValidateGameCache.lua +Modules\Arrow\QuestieArrow.lua +Modules\QuestieInit.lua +Modules\MinimapIcon.lua +Modules\QuestieProfessions.lua +Modules\QuestieReputation.lua +Modules\QuestieEventHandler.lua +Modules\QuestieLearner.lua +Modules\Migration.lua +Modules\QuestieMenu\Townsfolk.lua +Modules\QuestieMenu\ClassTrainers.lua +Modules\QuestieMenu\Mailboxes.lua +Modules\QuestieMenu\MeetingStones.lua +Modules\QuestieMenu\ProfessionTrainers.lua +Modules\QuestieMenu\QuestieMenu.lua +Modules\QuestieAnnounce.lua +Modules\QuestieShutUp.lua +Modules\Sounds.lua +Modules\TaskQueue.lua +Modules\QuestiePlayer.lua +#Modules\QuestieDebugOffer.lua +Modules\WorldMapButton\WorldMapButton.lua +#Modules\WorldMapButton\QuestieWorldMapButtonTemplate.xml + +# QuestLinks +Modules\QuestLinks\ChatFilter.lua +Modules\QuestLinks\Hooks.lua +Modules\QuestLinks\Link.lua + +# Tooltips +Modules\Tooltips\Tooltip.lua +Modules\Tooltips\MapIconTooltip.lua +Modules\Tooltips\TooltipHandler.lua + +# Auto +Modules\Auto\QuestieAuto.lua +Modules\Auto\Privates.lua +Modules\Auto\DisallowedIDs.lua + +# FramePool +Modules\FramePool\QuestieFramePool.lua +Modules\FramePool\QuestieFrame.lua + +# Map +Modules\Map\QuestieMap.lua +Modules\Map\QuestieMapUtils.lua +#Modules\Map\HBDHooks.lua +Modules\Map\WeaponMasterSkills.lua + + +# Quest +Modules\Quest\AvailableQuests.lua +Modules\Quest\QuestLogCache.lua +Modules\Quest\DailyQuests.lua +Modules\Quest\IsleOfQuelDanas.lua +Modules\Quest\QuestEventHandler.lua +Modules\Quest\QuestgiverFrame.lua +Modules\Quest\QuestieQuest.lua +Modules\Quest\QuestieQuestPrivates.lua + +Modules\QuestieNameplate.lua +Modules\QuestieCoordinates.lua + +# Network +Modules\Network\QuestieComms.lua +Modules\Network\QuestieCommsData.lua + +# Journey +Modules\Journey\QuestieJourney.lua +Modules\Journey\QuestieJourneyPrivates.lua +Modules\Journey\QuestieJourneyUtils.lua +Modules\Journey\History.lua +Modules\Journey\QuestDetailsFrame.lua +Modules\Journey\tabs\MyJourney\Note.lua +Modules\Journey\tabs\MyJourney\MyJourney.lua +Modules\Journey\tabs\MyJourney\MyJourneyTab.lua +Modules\Journey\tabs\QuestsByZone\QuestsByZone.lua +Modules\Journey\tabs\QuestsByZone\QuestsByZoneTab.lua +#Modules\Journey\tabs\Search\Search.lua +#Modules\Journey\tabs\Search\SearchTab.lua +Modules\Journey\QuestieSearch.lua +Modules\Journey\QuestieSearchResults.lua + +# Tracker +Modules\Tracker\QuestieTracker.lua +Modules\Tracker\TrackerUtils.lua +Modules\Tracker\TrackerMenu.lua +Modules\Tracker\TrackerFadeTicker.lua +Modules\Tracker\TrackerBaseFrame.lua +Modules\Tracker\TrackerHeaderFrame.lua +Modules\Tracker\TrackerQuestFrame.lua +Modules\Tracker\TrackerQuestTimers.lua +Modules\Tracker\TrackerLinePool.lua + +# Tutorial +Modules\Tutorial\ChooseObjectiveType.lua +Modules\Tutorial\Tutorial.lua + +#Modules\QuestieDBMIntegration.lua +Modules\QuestieSlash.lua + +# Options +Modules\Options\QuestieOptions.lua +Modules\Options\QuestieOptionsDefaults.lua +Modules\Options\QuestieOptionsUtils.lua +Modules\Options\AdvancedTab\QuestieOptionsAdvanced.lua +Modules\Options\AutoTab\QuestieOptionsAuto.lua +Modules\Options\DBMTab\QuestieOptionsDBM.lua +Modules\Options\GeneralTab\QuestieOptionsGeneral.lua +Modules\Options\IconsTab\QuestieOptionsIcons.lua +Modules\Options\NameplateTab\QuestieOptionsNameplate.lua +Modules\Options\TrackerTab\QuestieOptionsTracker.lua + +# Cleanup +Modules\QuestieCleanup.lua + +# Profiler +Modules\QuestieProfiler.lua + +# Main +Questie.lua diff --git a/.history/Questie-335_20260222101628.toc b/.history/Questie-335_20260222101628.toc new file mode 100644 index 0000000..8337013 --- /dev/null +++ b/.history/Questie-335_20260222101628.toc @@ -0,0 +1,250 @@ +## Interface: 30300 +## Title: Questie - Ebonhold +## Author: Questie Team +## Notes: A standalone Classic QuestHelper +## Notes-esMX: Ayundante de misión +## Notes-esES: Ayundante de misión +## Notes-ptBR: Ajudante de missão +## Notes-frFR: Assistant de quête +## Version: 9.8.4 +## RequiredDeps: +## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu +## SavedVariables: QuestieConfig +## SavedVariablesPerCharacter: QuestieConfigCharacter +## X-Curse-Project-ID: 334372 +## X-Wago-ID: qv634BKb +## X-WOW_PROJECT_ID: 11 + +# Loader module +Modules\Libs\QuestieLoader.lua + +# COMPATIBILITY +Modules\QuestieCompat.lua +Compat\embeds.xml + +Modules\VersionCheck.lua + +# Thread Manager +Modules\Libs\ThreadLib.lua +#Message Handler +Modules\Libs\MessageHandler.lua + +#Quest XP +Database\QuestXP\QuestieXP.lua +Database\QuestXP\DB\xpDB-wotlk.lua + +# stream module (used by DB) +Modules\QuestieStream.lua + +# Zones +Database\Zones\zoneTables.lua +# Ascension Custom Zones +Database\Ascension\Zones\AscensionZoneTables.lua +Database\Ascension\Zones\AscensionUiMapData.lua +# Ebonhold Custom Zones +Database\Ebonhold\Zones\EbonholdZoneTables.lua +Database\Ebonhold\Zones\EbonholdUiMapData.lua +Database\Zones\zoneDB.lua + + +# Databases +Database\Wotlk\wotlkItemDB.lua +Database\Wotlk\wotlkNpcDB.lua +Database\Wotlk\wotlkObjectDB.lua +Database\Wotlk\wotlkQuestDB.lua +Database\QuestieDB.lua +Database\questDB.lua +Database\objectDB.lua +Database\npcDB.lua +Database\itemDB.lua +Database\Constants.lua +Database\MeetingStones.lua + +# Ascension Custom Database +Database\Ascension\Bronzebeard\AscensionNpcDB.lua +Database\Ascension\Bronzebeard\AscensionObjectDB.lua +Database\Ascension\Bronzebeard\AscensionItemDB.lua +Database\Ascension\Bronzebeard\AscensionQuestDB.lua +Database\Ascension\AscensionLoader.lua + +# Ebonhold Custom Database +Database\Ebonhold\Ebonhold\EbonholdNpcDB.lua +Database\Ebonhold\Ebonhold\EbonholdObjectDB.lua +Database\Ebonhold\Ebonhold\EbonholdItemDB.lua +Database\Ebonhold\Ebonhold\EbonholdQuestDB.lua +Database\Ebonhold\EbonholdLoader.lua + + +# Corrections +Database\Corrections\AutoTableUpdates.lua +Database\Corrections\QuestieCorrections.lua +Database\Corrections\QuestieItemBlacklist.lua +Database\Corrections\QuestieNPCBlacklist.lua +Database\Corrections\QuestieQuestBlacklist.lua +#Database\Corrections\SoMPhases.lua +Database\Corrections\QuestieEvent.lua + +# Automatic General Corrections +Database\Corrections\Automatic\itemStartFixes.lua +Database\Corrections\Automatic\classicQuestReputationFixes.lua + +# Classic Corrections +Database\Corrections\classicQuestFixes.lua +Database\Corrections\classicNPCFixes.lua +Database\Corrections\classicItemFixes.lua +Database\Corrections\classicObjectFixes.lua + +# TBC Corrections +Database\Corrections\tbcQuestFixes.lua +Database\Corrections\tbcNPCFixes.lua +Database\Corrections\tbcItemFixes.lua +Database\Corrections\tbcObjectFixes.lua + +# Wotlk Corrections +Database\Corrections\wotlkQuestFixes.lua +Database\Corrections\wotlkNPCFixes.lua +Database\Corrections\wotlkItemFixes.lua +Database\Corrections\wotlkObjectFixes.lua + +# Compiler +Database\compiler.lua + +# Localization +Localization\l10n.lua +Localization\Translations\Translations.xml + +Localization\lookups\lookupQuestCategories.lua +Localization\lookups\lookupZones.lua +Localization\lookups\Wotlk\lookupItems\lookupItems.xml +Localization\lookups\Wotlk\lookupNpcs\lookupNpcs.xml +Localization\lookups\Wotlk\lookupObjects\lookupObjects.xml +Localization\lookups\Wotlk\lookupQuests\lookupQuests.xml + +# Libs +Modules\Libs\QuestieLib.lua +Modules\Libs\QuestieSerializer.lua +Modules\Libs\QuestieCombatQueue.lua +Modules\Libs\RamerDouglasPeucker.lua + +# Modules +Modules\QuestieValidateGameCache.lua +Modules\Arrow\QuestieArrow.lua +Modules\QuestieInit.lua +Modules\MinimapIcon.lua +Modules\QuestieProfessions.lua +Modules\QuestieReputation.lua +Modules\QuestieEventHandler.lua +Modules\QuestieLearner.lua +Modules\Migration.lua +Modules\QuestieMenu\Townsfolk.lua +Modules\QuestieMenu\ClassTrainers.lua +Modules\QuestieMenu\Mailboxes.lua +Modules\QuestieMenu\MeetingStones.lua +Modules\QuestieMenu\ProfessionTrainers.lua +Modules\QuestieMenu\QuestieMenu.lua +Modules\QuestieAnnounce.lua +Modules\QuestieShutUp.lua +Modules\Sounds.lua +Modules\TaskQueue.lua +Modules\QuestiePlayer.lua +#Modules\QuestieDebugOffer.lua +Modules\WorldMapButton\WorldMapButton.lua +#Modules\WorldMapButton\QuestieWorldMapButtonTemplate.xml + +# QuestLinks +Modules\QuestLinks\ChatFilter.lua +Modules\QuestLinks\Hooks.lua +Modules\QuestLinks\Link.lua + +# Tooltips +Modules\Tooltips\Tooltip.lua +Modules\Tooltips\MapIconTooltip.lua +Modules\Tooltips\TooltipHandler.lua + +# Auto +Modules\Auto\QuestieAuto.lua +Modules\Auto\Privates.lua +Modules\Auto\DisallowedIDs.lua + +# FramePool +Modules\FramePool\QuestieFramePool.lua +Modules\FramePool\QuestieFrame.lua + +# Map +Modules\Map\QuestieMap.lua +Modules\Map\QuestieMapUtils.lua +#Modules\Map\HBDHooks.lua +Modules\Map\WeaponMasterSkills.lua + + +# Quest +Modules\Quest\AvailableQuests.lua +Modules\Quest\QuestLogCache.lua +Modules\Quest\DailyQuests.lua +Modules\Quest\IsleOfQuelDanas.lua +Modules\Quest\QuestEventHandler.lua +Modules\Quest\QuestgiverFrame.lua +Modules\Quest\QuestieQuest.lua +Modules\Quest\QuestieQuestPrivates.lua + +Modules\QuestieNameplate.lua +Modules\QuestieCoordinates.lua + +# Network +Modules\Network\QuestieComms.lua +Modules\Network\QuestieCommsData.lua + +# Journey +Modules\Journey\QuestieJourney.lua +Modules\Journey\QuestieJourneyPrivates.lua +Modules\Journey\QuestieJourneyUtils.lua +Modules\Journey\History.lua +Modules\Journey\QuestDetailsFrame.lua +Modules\Journey\tabs\MyJourney\Note.lua +Modules\Journey\tabs\MyJourney\MyJourney.lua +Modules\Journey\tabs\MyJourney\MyJourneyTab.lua +Modules\Journey\tabs\QuestsByZone\QuestsByZone.lua +Modules\Journey\tabs\QuestsByZone\QuestsByZoneTab.lua +#Modules\Journey\tabs\Search\Search.lua +#Modules\Journey\tabs\Search\SearchTab.lua +Modules\Journey\QuestieSearch.lua +Modules\Journey\QuestieSearchResults.lua + +# Tracker +Modules\Tracker\QuestieTracker.lua +Modules\Tracker\TrackerUtils.lua +Modules\Tracker\TrackerMenu.lua +Modules\Tracker\TrackerFadeTicker.lua +Modules\Tracker\TrackerBaseFrame.lua +Modules\Tracker\TrackerHeaderFrame.lua +Modules\Tracker\TrackerQuestFrame.lua +Modules\Tracker\TrackerQuestTimers.lua +Modules\Tracker\TrackerLinePool.lua + +# Tutorial +Modules\Tutorial\ChooseObjectiveType.lua +Modules\Tutorial\Tutorial.lua + +#Modules\QuestieDBMIntegration.lua +Modules\QuestieSlash.lua + +# Options +Modules\Options\QuestieOptions.lua +Modules\Options\QuestieOptionsDefaults.lua +Modules\Options\QuestieOptionsUtils.lua +Modules\Options\AdvancedTab\QuestieOptionsAdvanced.lua +Modules\Options\AutoTab\QuestieOptionsAuto.lua +Modules\Options\DBMTab\QuestieOptionsDBM.lua +Modules\Options\GeneralTab\QuestieOptionsGeneral.lua +Modules\Options\IconsTab\QuestieOptionsIcons.lua +Modules\Options\NameplateTab\QuestieOptionsNameplate.lua +Modules\Options\TrackerTab\QuestieOptionsTracker.lua + +# Cleanup +Modules\QuestieCleanup.lua + +# Profiler +Modules\QuestieProfiler.lua + +# Main +Questie.lua diff --git a/CHANGELOG.md b/CHANGELOG.md index dcb52a8..21bdfda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## v9.8.5 + +### New Ebonhold Quests +- **Outland**: Blade's Edge Trophy (includes missing Blade's Edge Mountains spawn tracking data for Morcrush, Hemathion, Speaker Mar'grom). +- **Azeroth**: Arathi Trophy (includes missing Arathi Highlands spawn tracking data for Darbel Montrose, Singer, Foulbelly, Ruul Onestone, Kovork, Molok the Crusher, Zalas Witherbark, Nimar the Slayer, Geomancer Flintdagger, Prince Nazjak). + ## v9.8.4 ### Fixes diff --git a/Database/Corrections/wotlkQuestFixes.lua b/Database/Corrections/wotlkQuestFixes.lua index ad3d488..4faec00 100644 --- a/Database/Corrections/wotlkQuestFixes.lua +++ b/Database/Corrections/wotlkQuestFixes.lua @@ -2724,7 +2724,7 @@ function QuestieWotlkQuestFixes:Load() [12924] = { [questKeys.objectives] = {{{30099,"Fjorn's Anvil Brought to Dun Niffelem"}}}, [questKeys.extraObjectives] = { - {nil, Questie.ICON_TYPE_TALK, l10n("Ask King Jokkum to allow Thorim's armor to be reforged"), 0, {{"monster", 30105}}}, + {nil, Questie.ICON_TYPE_TALK, l10n("Pick up 'You Can't Miss Him' (12966)"), 0, {{"monster", 30105}}, {["hideIfQuestActive"] = 12966}}, }, }, [12925] = { @@ -2828,6 +2828,7 @@ function QuestieWotlkQuestFixes:Load() [12966] = { [questKeys.preQuestGroup] = {12915,12956}, [questKeys.requiredMinRep] = {1119,0}, + [questKeys.finishedBy] = {{30127}}, }, [12967] = { [questKeys.objectives] = {{{30120}}}, @@ -2916,7 +2917,7 @@ function QuestieWotlkQuestFixes:Load() [questKeys.objectives] = {nil,nil,nil,nil,{{{30273,30268,30274},30273,}}}, }, [13010] = { - [questKeys.objectives] = {{{30105}},nil,nil,{1119,3000}}, + [questKeys.objectives] = {{{30105, nil, {["hideIfQuestActive"] = 12966}}},nil,nil,{1119,3000}}, }, [13011] = { [questKeys.name] = "Culling Jorcuttar", diff --git a/Database/Ebonhold/Ebonhold/EbonholdNpcDB.lua b/Database/Ebonhold/Ebonhold/EbonholdNpcDB.lua index e379e64..a66239e 100644 --- a/Database/Ebonhold/Ebonhold/EbonholdNpcDB.lua +++ b/Database/Ebonhold/Ebonhold/EbonholdNpcDB.lua @@ -143,7 +143,22 @@ EbonholdDB.npcData = EbonholdDB.npcData or { [1911] = {'Deeb',12600,12600,13,13,4,{[85] = {{57.2,28.2},{57.4,29.2},{57.6,28.2},{57.6,29},{58,25},{58,26.4},{58.2,26.6},{58.6,27.6},{58.6,28.6},{58.8,27.2},{59.6,27},{59.6,28.6},{60,30},{61.4,29.8},{62,28.4},{62.2,29.6},{62.4,26.6},{62.4,29},{62.6,28.6},{62.8,29.6},{63.2,27.4},{63.2,27.6},{63.2,31},{63.6,28},{63.8,26.8},{63.8,29.4}}},nil,85,nil,nil,16,nil,"",0}, [1910] = {'Muad',12600,12600,12,12,4,{[85] = {{33.4,42.8},{33.4,43.8},{33.6,43},{34,43.8},{34.2,41.6},{34.2,44.6},{34.4,41.2},{34.6,41},{34.6,42},{34.8,44.2},{34.8,44.8},{34.8,45.8},{35,39.8},{35.2,43.4},{35.8,46.4},{36.2,38},{36.2,42.4},{36.2,44.2},{36.2,44.6},{36.4,39.4},{36.4,40.2},{36.4,41.2},{36.4,42.8},{36.6,38},{36.6,42},{36.6,43.4},{36.6,43.6},{36.8,39},{36.8,40},{36.8,40.8},{36.8,44.6},{37.6,39.2},{37.6,40.4},{37.6,41.2},{37.6,41.6},{37.8,43.4}}},nil,85,nil,nil,16,nil,"",0}, [10358] = {'Fellicent\'s Shade',12600,12600,11,11,4,{[85] = {{71.4,61.6},{73.4,60},{74.2,60.4},{74.2,63.2},{74.4,59.4},{74.4,60.8},{74.4,61.6},{74.6,63.8},{74.8,60.6},{75,59.4},{75,59.8},{75.2,58.4},{75.2,61.8},{75.4,63},{75.6,59.4},{75.8,58.4},{75.8,63.6},{76.2,59.6},{76.4,57.4},{76.4,61.4},{76.4,61.8},{76.4,62.6},{76.6,59.4},{76.6,61.8},{76.6,62.6},{76.8,60.2},{76.8,61.2},{77,64.2},{77.6,60.8},{77.6,61.6},{77.8,63.2},{78.2,65.4}}},nil,85,nil,nil,16,nil,"",0}, - [1533] = {'Tormented Spirit',12600,12600,10,10,4,{[85] = {{43,34.8},{43.4,31.2},{43.4,32.4},{43.4,32.6},{43.4,34.2},{43.8,31.4},{43.8,32},{44,32.6},{44,34.6},{44,36.2},{44.2,36.6},{44.4,28.6},{44.4,34.2},{44.6,29.6},{44.6,31.4},{44.6,31.6},{44.6,33.2},{44.8,34.4},{45,37.6},{45.2,36.6},{45.4,35.4},{45.4,36.4},{45.6,31.6},{45.6,33.8},{46,35.4},{46,36.6},{46,37.6},{46.2,29.4},{46.4,30},{46.4,30.8},{46.4,36.2},{46.6,30.4},{46.6,37},{46.8,35.4},{47,31.4},{47,32},{47,37.8},{47.4,32.8},{47.4,35.6},{47.6,31.4},{47.6,31.8},{47.6,32.6},{47.8,35.2},{47.8,36.6},{48,34.4},{48.2,35.8},{48.4,40.2},{48.6,31.8},{48.6,34.2},{48.6,34.8},{49,37},{49.6,39}}},nil,85,nil,nil,16,nil,"",0}, + -- Quest 50176 Arathi Trophy: Rare NPCs in Arathi Highlands (zone 45) + [2598] = {'Darbel Montrose',12600,12600,29,30,4,{[45] = {{25.2,66.2},{25.8,59.2},{25.8,66.2},{26.4,62.4},{27,65.2},{27.2,66},{27.4,62.8},{27.4,63.8},{27.6,61},{27.6,63.6},{27.6,66.2},{27.8,60.2},{27.8,62.4},{28,62.8},{28.4,64.8},{28.6,61.8},{28.6,64},{28.6,64.8},{29.2,60.2},{29.4,60.8},{29.6,60.6},{29.8,60.2},{29.8,62.4},{29.8,62.8},{29.8,64}}},nil,45,nil,nil,16,nil,"",0}, + [2600] = {'Singer',12600,12600,28,29,4,{[45] = {{30.2,26.2},{30.2,28.8},{31,27.8},{31.2,26.2},{31.2,26.6},{31.8,31.8},{32,28},{32.4,26.4},{32.4,26.6},{32.4,29.6},{32.4,30.8},{32.6,30.2},{32.6,31.2},{33.4,26.2},{33.4,27.4},{33.4,27.6},{33.4,29.4},{33.4,31.6},{33.6,27.4},{33.6,27.8},{33.6,30.2},{34.6,32},{34.8,31.4},{35,30},{35.4,35.2},{36.2,28.4}}},nil,45,nil,nil,16,nil,"",0}, + [2601] = {'Foulbelly',12600,12600,28,29,4,{[45] = {{18,66.2},{18.8,66},{18.8,67.6},{19.4,64.4},{19.4,65.2},{19.8,65.2},{19.8,65.6},{20,64.4},{20,66.6},{20.2,67.6},{20.6,67.4},{21.4,66.2},{21.6,65.4},{21.6,66.8}}},nil,45,nil,nil,16,nil,"",0}, + [2602] = {'Ruul Onestone',12600,12600,31,31,4,{[45] = {{17.4,68.4},{17.4,68.6},{18.2,68.4},{18.2,68.6}}},nil,45,nil,nil,16,nil,"",0}, + [2603] = {'Kovork',12600,12600,31,31,4,{[45] = {{31.4,45.8},{31.6,45.8},{32.6,46}}},nil,45,nil,nil,16,nil,"",0}, + [2604] = {'Molok the Crusher',12600,12600,31,31,4,{[45] = {{53.4,79.4},{53.4,79.8},{53.6,79.8},{53.8,79.4},{54,77.6},{54.4,77.4},{54.6,78.2},{54.6,79},{54.8,80.2}}},nil,45,nil,nil,16,nil,"",0}, + [2605] = {'Zalas Witherbark',12600,12600,31,32,4,{[45] = {{66,82},{67.4,80.4},{67.4,81.2},{67.4,81.6},{67.6,80.2},{67.6,80.6},{68.2,82},{68.6,80.8},{69,82.6},{69.2,79.4},{69.2,79.6},{69.2,81.8},{69.6,79.6},{69.6,81.2},{69.6,82.2},{69.8,79}}},nil,45,nil,nil,16,nil,"",0}, + [2606] = {'Nimar the Slayer',12600,12600,28,29,4,{[45] = {{60.2,71.8},{60.2,73.2},{60.4,73.8},{60.6,75.2},{61,73.6},{61.2,71.8},{61.2,72.6},{61.4,71.2},{61.6,74},{61.8,72.6},{62.4,71.4},{62.4,71.6},{62.6,67.6},{62.6,71.8},{63,68.6},{63,74},{63.2,66.2},{63.4,67.2},{63.6,67.4},{63.8,63.6},{63.8,64.8},{63.8,67.8},{63.8,69},{64.2,73},{64.2,74.4},{64.4,63.4},{64.4,66.2},{64.4,74.6},{64.6,66.2},{64.6,69},{64.6,74.6},{64.8,63},{65,73.4},{65,73.8},{65.2,61.2},{65.4,56.6},{65.6,57.6},{65.8,62.2},{65.8,74.8},{66,60.2},{66.2,64},{66.4,62.6},{66.4,64.8},{66.6,62.4},{66.6,62.6},{67,63.8},{67.2,61.2},{67.6,62.4},{68.4,59.8},{68.6,61.2},{69.4,54.6},{69.8,52.8},{70.2,64},{70.2,66.2},{71,59},{71.2,62.6},{71.2,63.6},{71.2,64.8},{71.2,66.6},{71.4,65.8},{71.8,63},{72,65.8},{72,66.6},{72.2,61.2},{72.4,64.2},{72.4,64.8},{72.6,65.8},{72.8,64.2},{72.8,65},{73.2,67},{73.6,63.8}}},nil,45,nil,nil,16,nil,"",0}, + [2609] = {'Geomancer Flintdagger',12600,12600,28,29,4,{[45] = {{82.8,32.2},{82.8,32.6},{83.6,31.4},{83.6,34.6},{84.2,32.8},{84.4,28.4},{84.4,28.6},{84.4,32.2},{84.6,28.4},{84.6,28.6},{84.8,29.6},{85.2,31.4},{85.4,31.6},{85.6,31.4},{85.6,31.6}}},nil,45,nil,nil,16,nil,"",0}, + [2779] = {'Prince Nazjak',12600,12600,32,32,4,{[45] = {{19.8,88.8},{20.2,82.4},{20.6,83.4},{20.8,84},{21.2,84.6},{21.2,89.2},{21.2,89.6},{21.6,82.8},{21.6,86},{21.6,89},{21.8,83.6},{21.8,84.8},{22.4,89.6},{22.8,84.4},{23,84.8},{23,86.2},{23,88},{23.2,82.2},{23.2,83.2},{23.4,89},{23.6,83.8},{23.6,89.4},{23.6,89.8},{24,88.4}}},nil,45,nil,nil,16,nil,"",0}, + + -- Quest 50195 Blade's Edge Trophy: Rare NPCs in Blade's Edge Mountains (zone 3522) + [18690] = {'Morcrush',12600,12600,69,69,4,{[3522] = {{59.2,23},{59.2,24.4},{59.4,20.2},{59.4,25.2},{59.6,20.4},{59.6,24.4},{59.6,25.4},{60,20.6},{60.2,23.2},{60.8,24.8},{61,20.8},{61,23},{61.2,23.8},{61.4,18.8},{61.4,21.8},{61.4,54.6},{61.8,21},{61.8,22.6},{61.8,54.4},{62,19.4},{62,19.6},{62.6,51},{62.6,52.4},{62.6,53.2},{63.8,51},{65,49.2},{65,53.4},{65.2,47.2},{65.2,50.4},{66.6,65},{66.8,48.4},{67,49},{67.2,68.2},{67.4,46.8},{67.4,66.2},{67.4,70.2},{67.6,47.2},{67.6,48.2},{67.6,65.6},{67.8,64.4},{67.8,65.4},{67.8,70.2},{67.8,73.4},{68,33.6},{68,67.4},{68,74.4},{68.2,67.6},{68.2,68.6},{68.2,75.6},{68.4,32.4},{68.4,33.2},{68.4,71.6},{68.6,64.4},{68.6,65.8},{68.6,68},{68.6,71.8},{68.6,74.8},{68.8,31.8},{68.8,64.6},{68.8,73},{69,29.8},{69.2,45},{69.4,33.8},{69.4,73.8},{69.6,32.8},{69.6,45},{70,28.6},{70,44.2},{70.2,34.2},{70.8,41.8},{71,41.4},{71.2,29.4},{71.6,30.2},{71.6,33.4},{73.2,29.8},{73.4,29.2},{73.6,24.6},{74,23.8},{74,29},{74.2,27.4},{74.4,23.4},{74.8,23.4},{76.8,23.8},{77.8,24.4},{77.8,28.8},{77.8,30},{78.4,26.8},{78.4,28}}},nil,3522,nil,nil,16,nil,"",0}, + [18692] = {'Hemathion',12600,12600,68,69,4,{[3522] = {{27.4,54.4},{27.6,72},{27.8,67.6},{28,65.6},{28.2,65},{28.4,63.2},{28.4,67.2},{28.4,69.8},{28.6,64.4},{29,43.8},{29.2,44.6},{29.2,49.6},{29.2,50.8},{29.4,47.6},{29.4,49.4},{29.4,68},{29.4,68.6},{29.4,70.2},{29.4,70.8},{29.6,50.4},{29.6,63.6},{29.6,66.6},{29.6,68.2},{29.6,70.2},{29.6,71},{29.8,43.6},{29.8,51.2},{29.8,68.6},{30,43.2},{30,44.8},{30,48.6},{30,71.6},{30.2,45.8},{30.2,48.2},{30.2,53.6},{30.2,63.4},{30.2,64.8},{30.4,46.6},{30.4,51.6},{30.4,66.2},{30.6,44.6},{30.6,46.8},{30.6,51.4},{30.6,67},{30.6,68.8},{30.6,72.4},{30.6,72.6},{30.8,44},{30.8,68.2},{30.8,70.8},{31,45.6},{31.2,50.4},{31.2,52},{31.2,70},{31.4,52.6},{31.4,55.6},{31.6,55},{31.6,55.8},{32,53},{32.2,51.4},{32.2,52},{32.2,53.8},{32.6,52.6},{32.8,51.6},{32.8,54.6}}},nil,3522,nil,nil,16,nil,"",0}, + [18693] = {'Speaker Mar\'grom',12600,12600,68,68,4,{[3522] = {{39.8,56},{40.2,56.6},{40.8,55.8},{41,49.2},{41,55},{41.2,49.6},{41.2,50.6},{41.4,48},{41.6,54},{41.8,51},{41.8,53.2},{42,55.6},{42.2,82},{42.4,50},{42.6,49.6},{42.8,49.2},{42.8,81.2},{43.4,80.4},{43.6,80.8},{43.8,79},{44.4,78},{44.6,75.4},{45,76.8},{45.8,76.8},{45.8,79.6},{46.2,78.8},{46.4,78.2},{46.6,78.2},{46.6,79.6},{46.8,76.2},{47,75.4},{47,76.8},{55.4,36.2},{55.8,25.4},{55.8,36},{56,26.4},{56.2,24.4},{56.2,26.8},{56.2,34.8},{56.6,27.4},{56.6,33.8},{57.2,28.2},{57.4,29.4},{57.4,33.4},{57.6,30},{57.6,30.6},{57.6,33.4},{57.8,32},{64.2,19.2},{64.4,19.6},{65,20.2},{65.2,21.2},{65.2,21.6},{65.6,22.4},{66,23.4},{66.2,23.6},{66.2,24.8},{66.2,26.2},{66.4,26.6},{67,26.8},{67.6,24.2}}},nil,3522,nil,nil,16,nil,"",0}, } diff --git a/Database/Ebonhold/Ebonhold/EbonholdQuestDB.lua b/Database/Ebonhold/Ebonhold/EbonholdQuestDB.lua index 9168df1..98c1843 100644 --- a/Database/Ebonhold/Ebonhold/EbonholdQuestDB.lua +++ b/Database/Ebonhold/Ebonhold/EbonholdQuestDB.lua @@ -782,6 +782,36 @@ EbonholdDB.questData = EbonholdDB.questData or { [30] = 1, -- Kill count (only 1 rare needed) }, + + -- Quest 50176: Arathi Trophy + -- Kill 1 rare in Arathi Highlands + [50176] = { + [1] = "Arathi Trophy", -- Quest name + [2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}} + [4] = 25, -- Quest level + [5] = 20, -- Min level + [17] = 45, -- Zone (Arathi Highlands) + [8] = { + "This is a custom objective. Upon completion, you will automatically receive the assigned reward. If you die, the quest will be removed from your quest log. This quest is automatically rewarded upon completion.", + "Kill 1 Rare in Arathi Highlands" + }, + [10] = { + nil, -- [1] creatureObjective (not used) + nil, -- [2] objectObjective (not used) + nil, -- [3] itemObjective (not used) + nil, -- [4] reputationObjective (not used) + { -- [5] killCreditObjective + { + -- 10 rare NPCs in Arathi Highlands + { 2598, 2603, 2600, 2604, 2606, 2779, 2605, 2609, 2602, 2601 }, + 2606, -- RootId: Nimar the Slayer (representative rare) + "Rare slain" + } + } + }, + + [30] = 1, -- Kill count (only 1 rare needed) + }, [50150] = { [1] = "Storm Peak Orders", [2] = { nil, { 600600 } }, @@ -795,9 +825,35 @@ EbonholdDB.questData = EbonholdDB.questData or { [9] = { "Complete 6 Quests", nil }, }, + -- Quest 50195: Blade's Edge Trophy + -- Kill 1 rare in Blade's Edge Mountains + [50195] = { + [1] = "Blade's Edge Trophy", -- Quest name + [2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}} + [4] = 70, -- Quest level + [5] = 67, -- Min level + [17] = 3522, -- Zone (Blade's Edge Mountains) + [8] = { + "This is a custom objective. Upon completion, you will automatically receive the assigned reward. If you die, the quest will be removed from your quest log. This quest is automatically rewarded upon completion.", + "Kill 1 Rare in Blade's Edge Mountains" + }, + [10] = { + nil, -- [1] creatureObjective (not used) + nil, -- [2] objectObjective (not used) + nil, -- [3] itemObjective (not used) + nil, -- [4] reputationObjective (not used) + { -- [5] killCreditObjective + { + -- 3 rare NPCs in Blade's Edge Mountains + { 18690, 18692, 18693 }, + 18692, -- RootId: Hemathion (representative rare) + "Rare slain" + } + } + }, - - + [30] = 1, -- Kill count (only 1 rare needed) + }, } diff --git a/Database/QuestieDB.lua b/Database/QuestieDB.lua index fd8b5f8..8ab350b 100644 --- a/Database/QuestieDB.lua +++ b/Database/QuestieDB.lua @@ -1275,7 +1275,8 @@ function QuestieDB.GetQuest(questId) -- /dump QuestieDB.GetQuest(867) QO.ObjectiveData[#QO.ObjectiveData+1] = { Type = "monster", Id = creatureObjective[1], - Text = creatureObjective[2] + Text = creatureObjective[2], + HideCondition = creatureObjective[3], } end end @@ -1287,7 +1288,8 @@ function QuestieDB.GetQuest(questId) -- /dump QuestieDB.GetQuest(867) QO.ObjectiveData[#QO.ObjectiveData+1] = { Type = "object", Id = objectObjective[1], - Text = objectObjective[2] + Text = objectObjective[2], + HideCondition = objectObjective[3], } end end @@ -1299,7 +1301,8 @@ function QuestieDB.GetQuest(questId) -- /dump QuestieDB.GetQuest(867) QO.ObjectiveData[#QO.ObjectiveData+1] = { Type = "item", Id = itemObjective[1], - Text = itemObjective[2] + Text = itemObjective[2], + HideCondition = itemObjective[3], } end end @@ -1410,6 +1413,7 @@ function QuestieDB.GetQuest(questId) -- /dump QuestieDB.GetQuest(867) Icon = o[2], Description = o[3], RealObjectiveIndex = o[4], + HideCondition = o[6], } if o[1] then -- custom spawn specialObjective.spawnList = {{ diff --git a/Modules/Arrow/QuestieArrow.lua b/Modules/Arrow/QuestieArrow.lua index 543d3b2..626d7ff 100644 --- a/Modules/Arrow/QuestieArrow.lua +++ b/Modules/Arrow/QuestieArrow.lua @@ -553,6 +553,10 @@ function QuestieArrow:UpdateNearestTargets() return end + if QuestieQuest.ShouldHideObjective(objective) then + return + end + if objective.Completed == true or objective.Completed == 1 then return end diff --git a/Modules/Quest/QuestieQuest.lua b/Modules/Quest/QuestieQuest.lua index 4e2f727..a48c433 100644 --- a/Modules/Quest/QuestieQuest.lua +++ b/Modules/Quest/QuestieQuest.lua @@ -482,6 +482,11 @@ function QuestieQuest:AcceptQuest(questId) QuestieCombatQueue:Queue(function() QuestieTracker:Update() end) + end, + function() + if QuestieArrow and QuestieArrow.Refresh then + QuestieArrow:Refresh() + end end ) else @@ -1213,6 +1218,30 @@ function QuestieQuest:AddFinisher(quest) end end +---@param objective any +function QuestieQuest.ShouldHideObjective(objective) + local hideCondition = objective.HideCondition + if not hideCondition then + return false + end + + if hideCondition.hideIfQuestActive then + local questId = hideCondition.hideIfQuestActive + if QuestiePlayer.currentQuestlog[questId] or (Questie.db and Questie.db.char and Questie.db.char.complete and Questie.db.char.complete[questId]) then + return true + end + end + + if hideCondition.hideIfQuestComplete then + local questId = hideCondition.hideIfQuestComplete + if Questie.db and Questie.db.char and Questie.db.char.complete and Questie.db.char.complete[questId] then + return true + end + end + + return false +end + ---@param quest Quest ---@param objectiveIndex ObjectiveIndex ---@param objective QuestObjective @@ -1226,6 +1255,12 @@ function QuestieQuest:PopulateObjective(quest, objectiveIndex, objective, blockI end objective:Update() + + if QuestieQuest.ShouldHideObjective(objective) then + _UnloadAlreadySpawnedIcons(objective) + return + end + local completed = objective.Completed local objectiveData = quest.ObjectiveData[objective.Index] or objective -- the reason for "or objective" is to handle "SpecialObjectives" aka non-listed objectives (demonic runestones for closing the portal) @@ -1621,7 +1656,8 @@ function QuestieQuest:PopulateQuestLogInfo(quest) AlreadySpawned = {}, Update = _QuestieQuest.ObjectiveUpdate, Coordinates = quest.ObjectiveData[objectiveIndex].Coordinates, -- Only for type "event" - RequiredRepValue = quest.ObjectiveData[objectiveIndex].RequiredRepValue + RequiredRepValue = quest.ObjectiveData[objectiveIndex].RequiredRepValue, + HideCondition = quest.ObjectiveData[objectiveIndex].HideCondition } end diff --git a/Questie-335.toc b/Questie-335.toc index 8337013..b74a287 100644 --- a/Questie-335.toc +++ b/Questie-335.toc @@ -6,7 +6,7 @@ ## Notes-esES: Ayundante de misión ## Notes-ptBR: Ajudante de missão ## Notes-frFR: Assistant de quête -## Version: 9.8.4 +## Version: 9.8.5 ## RequiredDeps: ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## SavedVariables: QuestieConfig