Docs: Update Changelog with new Ascension quests
This commit is contained in:
@@ -1,5 +1,17 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## v9.7.5
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- **[Quest]** Fixed an issue where re-accepted quests (e.g., repeatable custom quests) would not show objective pins/icons on the map.
|
||||||
|
|
||||||
|
### 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
|
## v9.7.4
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
@@ -52,6 +64,14 @@
|
|||||||
- Objective: Kill 30 Elementals. Includes 12 Elemental NPC types.
|
- Objective: Kill 30 Elementals. Includes 12 Elemental NPC types.
|
||||||
- **[New]** Added **Redridge Trophy** (ID 50160) and **Zangarmarsh Trophy** (ID 50192).
|
- **[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.
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
- **[Tracker]** **Combat Update Fix**: Tracker now updates objectives immediately during combat without causing Lua errors or taint.
|
- **[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).
|
- **[Tracker]** **Bag Update Fix**: Quest progress now updates immediately when looting items (fixes delay with loot bots).
|
||||||
|
|||||||
@@ -44,6 +44,25 @@ end
|
|||||||
-- Apply Ascension custom uiMapId->areaId mappings into ZoneDB (used by map/Journey)
|
-- Apply Ascension custom uiMapId->areaId mappings into ZoneDB (used by map/Journey)
|
||||||
function AscensionLoader:ApplyZoneTables()
|
function AscensionLoader:ApplyZoneTables()
|
||||||
if _zonesApplied then return end
|
if _zonesApplied then return end
|
||||||
|
|
||||||
|
-- Skip if not on Ascension server (check if we should even be here)
|
||||||
|
if _G.IsAscensionServer == nil and (not Questie or not Questie.db or not Questie.db.profile or not Questie.db.profile.ascensionMode) then
|
||||||
|
-- Check if there's actual Ascension data - if quest IDs >= 100000, it's likely Ascension
|
||||||
|
local hasAscensionQuests = false
|
||||||
|
if AscensionDB and AscensionDB.questData then
|
||||||
|
for questId, _ in pairs(AscensionDB.questData or {}) do
|
||||||
|
if type(questId) == "number" and questId >= 100000 then
|
||||||
|
hasAscensionQuests = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not hasAscensionQuests then
|
||||||
|
_zonesApplied = true -- Mark as done to prevent rechecking
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if not AscensionZoneTables or not AscensionZoneTables.uiMapIdToAreaId then return end
|
if not AscensionZoneTables or not AscensionZoneTables.uiMapIdToAreaId then return end
|
||||||
|
|
||||||
local ZoneDB = QuestieLoader:ImportModule("ZoneDB")
|
local ZoneDB = QuestieLoader:ImportModule("ZoneDB")
|
||||||
@@ -104,6 +123,51 @@ end
|
|||||||
-- Inject Ascension tables into QuestieDB *Overrides* so QueryQuestSingle/QueryNPCSingle can see them
|
-- Inject Ascension tables into QuestieDB *Overrides* so QueryQuestSingle/QueryNPCSingle can see them
|
||||||
function AscensionLoader:InjectOverrides()
|
function AscensionLoader:InjectOverrides()
|
||||||
if _overridesInjected then return end
|
if _overridesInjected then return end
|
||||||
|
|
||||||
|
-- Ascension data should only load on Ascension servers
|
||||||
|
-- Check if this is an Ascension server by looking for a global or profile setting
|
||||||
|
local isAscension = false
|
||||||
|
|
||||||
|
-- Method 1: Check for Ascension-specific global (servers may set this)
|
||||||
|
if _G.IsAscensionServer then
|
||||||
|
isAscension = true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Method 2: Check profile setting
|
||||||
|
if Questie and Questie.db and Questie.db.profile and Questie.db.profile.ascensionMode then
|
||||||
|
isAscension = true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Method 3: Check if there's actually Ascension quest data loaded
|
||||||
|
-- (this is a fallback - if AscensionDB has real data, use it)
|
||||||
|
if not isAscension and AscensionDB and AscensionDB.questData then
|
||||||
|
local questDataType = type(AscensionDB.questData)
|
||||||
|
-- If it's a table with entries, it's likely real Ascension data
|
||||||
|
if questDataType == "table" then
|
||||||
|
local hasData = false
|
||||||
|
for _ in pairs(AscensionDB.questData) do
|
||||||
|
hasData = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
if hasData then
|
||||||
|
-- Only use Ascension data if quest ID ranges suggest it's not standard WoW
|
||||||
|
-- Standard WoW quest IDs are typically < 100000
|
||||||
|
for questId, _ in pairs(AscensionDB.questData) do
|
||||||
|
if type(questId) == "number" and questId >= 100000 then
|
||||||
|
isAscension = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not isAscension then
|
||||||
|
-- Not an Ascension server, skip loading Ascension data
|
||||||
|
_overridesInjected = true -- Mark as done to prevent rechecking
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
_overridesInjected = true
|
_overridesInjected = true
|
||||||
|
|
||||||
-- Apply zone tables FIRST, before any ZoneDB functions use the local variables
|
-- Apply zone tables FIRST, before any ZoneDB functions use the local variables
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ AscensionDB.questData = AscensionDB.questData or {
|
|||||||
[1660003]={[1]="Accursed Sisterhood",[2]={{161702}},[3]={{161702}},[4]=3,[5]=6,[6]=1101,[7]=nil,[8]={"Purify the belongings of the former abbess, scattered throughout the Secret Inquisitorial Dungeon."},[9]=nil,[10]={nil,{{999005,"Abbess’ Journal purified"},{999006,"Abbess’s Staff purified"},{999007,"Heretical Idol purified"},{999008,"Jeweled Relic purified"}}},[11]=nil,[12]=nil,[13]={1660002},[14]=nil,[15]=nil,[16]=nil,[17]=9},
|
[1660003]={[1]="Accursed Sisterhood",[2]={{161702}},[3]={{161702}},[4]=3,[5]=6,[6]=1101,[7]=nil,[8]={"Purify the belongings of the former abbess, scattered throughout the Secret Inquisitorial Dungeon."},[9]=nil,[10]={nil,{{999005,"Abbess’ Journal purified"},{999006,"Abbess’s Staff purified"},{999007,"Heretical Idol purified"},{999008,"Jeweled Relic purified"}}},[11]=nil,[12]=nil,[13]={1660002},[14]=nil,[15]=nil,[16]=nil,[17]=9},
|
||||||
[1660004]={[1]="Words That Shepherd Madness",[2]={{161702}},[3]={{161701}},[4]=3,[5]=6,[6]=1101,[7]=nil,[8]={"Find the hidden path leading to the top of the waterfall and confront the sins of the former abbess of Northshire."},[9]=nil,[10]={[2]={{999010,"Hidden Path found"},{999011,"Ruined Estate discovered"},{999012,"Wayward Theologian confronted"}}},[11]=nil,[12]=nil,[13]={1660003},[14]=nil,[15]=nil,[16]=nil,[17]=9},
|
[1660004]={[1]="Words That Shepherd Madness",[2]={{161702}},[3]={{161701}},[4]=3,[5]=6,[6]=1101,[7]=nil,[8]={"Find the hidden path leading to the top of the waterfall and confront the sins of the former abbess of Northshire."},[9]=nil,[10]={[2]={{999010,"Hidden Path found"},{999011,"Ruined Estate discovered"},{999012,"Wayward Theologian confronted"}}},[11]=nil,[12]=nil,[13]={1660003},[14]=nil,[15]=nil,[16]=nil,[17]=9},
|
||||||
[1660036]={[1]="Oracular Idol",[2]={nil,nil,{559159}},[3]={{161844}},[4]=3,[5]=6,[6]=1101,[7]=nil,[8]={"Collect three Prophet's Oracular Orbs from the murloc oracles roaming the Shadewell Spring."},[9]=nil,[10]={nil,nil,{{559159,"Prophet's Oracular Orb"}}},[11]=559159,[12]=nil,[13]=nil,[14]=nil,[15]=nil,[16]=nil,[17]=9},
|
[1660036]={[1]="Oracular Idol",[2]={nil,nil,{559159}},[3]={{161844}},[4]=3,[5]=6,[6]=1101,[7]=nil,[8]={"Collect three Prophet's Oracular Orbs from the murloc oracles roaming the Shadewell Spring."},[9]=nil,[10]={nil,nil,{{559159,"Prophet's Oracular Orb"}}},[11]=559159,[12]=nil,[13]=nil,[14]=nil,[15]=nil,[16]=nil,[17]=9},
|
||||||
[100074]={[1]="A Betrayal Within",[2]={{5055565}},[3]={{240}},[4]=4,[5]=8,[6]=1101,[7]=nil,[8]={"","Return to Marshal Dughan."},[9]=nil,[10]=nil,[11]=nil,[12]=nil,[13]=nil,[14]=nil,[15]=nil,[16]=nil,[17]=12},
|
[100074]={[1]="A Betrayal Within",[2]={nil,{5055565}},[3]={{240}},[4]=4,[5]=8,[6]=1101,[7]=nil,[8]={"","Return to Marshal Dughan."},[9]=nil,[10]=nil,[11]=nil,[12]=nil,[13]=nil,[14]=nil,[15]=nil,[16]=nil,[17]=12},
|
||||||
[1660055]={[1]="The Maid I Left Behind",[2]={{161700}},[3]={{162800}},[4]=6,[5]=8,[6]=1101,[7]=nil,[8]=nil,[9]=nil,[10]=nil,[11]=nil,[12]=nil,[13]={1660004},[14]=nil,[15]=nil,[16]=nil,[17]=12},
|
[1660055]={[1]="The Maid I Left Behind",[2]={{161700}},[3]={{162800}},[4]=6,[5]=8,[6]=1101,[7]=nil,[8]=nil,[9]=nil,[10]=nil,[11]=nil,[12]=nil,[13]={1660004},[14]=nil,[15]=nil,[16]=nil,[17]=12},
|
||||||
[1660038]={[1]="The Saddest Among Us",[2]={{161702}},[3]={{161702}},[4]=3,[5]=6,[6]=1101,[7]=nil,[8]={"Defeat the Cursed Censor in the Secret Inquisitorial Dungeon."},[9]=nil,[10]={[1]={{161712,"Accursed Censor slain"}}},[11]=nil,[12]=nil,[13]={1660002},[14]=nil,[15]=nil,[16]=nil,[17]=9},
|
[1660038]={[1]="The Saddest Among Us",[2]={{161702}},[3]={{161702}},[4]=3,[5]=6,[6]=1101,[7]=nil,[8]={"Defeat the Cursed Censor in the Secret Inquisitorial Dungeon."},[9]=nil,[10]={[1]={{161712,"Accursed Censor slain"}}},[11]=nil,[12]=nil,[13]={1660002},[14]=nil,[15]=nil,[16]=nil,[17]=9},
|
||||||
[1660005]={[1]="The Threat Swept Downstream",[2]={{161705}},[3]={{161705}},[4]=3,[5]=6,[6]=1101,[7]=nil,[8]={"Defeat the Defias lurking in the ruined tower and thin the ranks of the Shadewell murlocs atop the waterfall, across the rope bridge."},[9]=nil,[10]={[1]={{161736,"Defias Plunderer slain"},{161716,"Shadewell Murloc slain"}}},[11]=nil,[12]=nil,[13]={1660003},[14]=nil,[15]=nil,[16]=nil,[17]=9},
|
[1660005]={[1]="The Threat Swept Downstream",[2]={{161705}},[3]={{161705}},[4]=3,[5]=6,[6]=1101,[7]=nil,[8]={"Defeat the Defias lurking in the ruined tower and thin the ranks of the Shadewell murlocs atop the waterfall, across the rope bridge."},[9]=nil,[10]={[1]={{161736,"Defias Plunderer slain"},{161716,"Shadewell Murloc slain"}}},[11]=nil,[12]=nil,[13]={1660003},[14]=nil,[15]=nil,[16]=nil,[17]=9},
|
||||||
|
|||||||
@@ -880,9 +880,6 @@ function QuestieWotlkQuestFixes:Load()
|
|||||||
[11418] = {
|
[11418] = {
|
||||||
[questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Feathered Charm on Steelfeather"), 0, {{"monster", 24514},}}},
|
[questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_EVENT, l10n("Use Feathered Charm on Steelfeather"), 0, {{"monster", 24514},}}},
|
||||||
},
|
},
|
||||||
[11420] = {
|
|
||||||
[questKeys.extraObjectives] = {{{[zoneIDs.HOWLING_FJORD]={{56.6,49.1}}}, Questie.ICON_TYPE_EVENT, l10n("Entrance to Utgarde Catacombs"),}},
|
|
||||||
},
|
|
||||||
[11421] = {
|
[11421] = {
|
||||||
[questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Commandeer Crykul Harpoon Gun"),0,{{"object",190512}}}},
|
[questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_OBJECT, l10n("Commandeer Crykul Harpoon Gun"),0,{{"object",190512}}}},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
local EbonholdDB = QuestieLoader:CreateModule("EbonholdDB")
|
local EbonholdDB = QuestieLoader:CreateModule("EbonholdDB")
|
||||||
|
|
||||||
EbonholdDB.npcData = EbonholdDB.npcData or {
|
EbonholdDB.npcData = EbonholdDB.npcData or {
|
||||||
|
-- Quest 11420/11426/11427/11436: The Path to Payback - Update Guard Captain Zorek coordinates
|
||||||
|
[23728] = {'Guard Captain Zorek',29820,29820,73,73,1,{[495]={{60.1,62.4}}},nil,495,nil,nil,1892,"A","",3},
|
||||||
-- Quest 50030 Corrections: Full Spawn Data for Borean Tundra Elementals
|
-- Quest 50030 Corrections: Full Spawn Data for Borean Tundra Elementals
|
||||||
-- Overrides existing sparse data in WotLK DB
|
-- Overrides existing sparse data in WotLK DB
|
||||||
[24601] = {'Steam Rager',9291,9291,70,71,0,{[3537] = {{67,25.4},{67.4,22},{67.4,26.4},{67.4,26.8},{68,26},{68,27},{68.2,23},{68.2,23.6},{68.4,22.4},{68.4,25},{68.4,28.2},{68.8,24.8},{68.8,31.2},{69.2,23.8},{69.2,26.8},{69.2,27.8},{69.4,22.2},{69.4,22.8},{69.4,26.4},{69.4,29},{69.4,30},{69.6,22.4},{69.6,24.4},{69.6,28.2},{69.8,22.8},{69.8,32},{70,29.4},{70.2,36.6},{70.4,25.4},{70.4,25.6},{70.4,26.6},{70.4,29.8},{70.4,30.8},{70.4,36},{70.6,29.4},{70.8,36.4},{71,22.2},{71,22.6},{71,24.4},{71,25.8},{71,28.2},{71,36.6},{71.2,38.4},{71.4,25.4},{71.4,27.2},{71.4,30.4},{71.4,31.2},{71.4,32.4},{71.4,33.2},{71.4,34},{71.4,35},{71.4,39.4},{71.4,39.6},{71.6,22},{71.6,29.6},{71.6,31},{71.6,39.4},{71.8,25.8},{71.8,27.2},{71.8,33.6},{71.8,42.2},{72,24.6},{72,28.6},{72,32.6},{72,37.6},{72.2,24.2},{72.2,28.4},{72.2,32.4},{72.2,35.2},{72.2,35.8},{72.2,36.6},{72.4,21},{72.4,23.4},{72.4,40.4},{72.4,41.2},{72.6,24.4},{72.6,27.2},{72.6,30.2},{72.6,31.4},{72.6,32.4},{72.6,33.4},{72.6,33.6},{72.6,35.4},{72.6,36.4},{72.6,36.6},{72.8,25.4},{72.8,41.6},{73,23.4},{73,26.2},{73,28.2},{73.2,38.2},{73.2,39.4},{73.2,40.2},{73.2,40.6},{73.4,28.6},{73.6,24.4},{73.6,26},{73.6,27.2},{73.6,40.4},{73.6,40.6},{73.8,25.2},{73.8,28},{73.8,29.2},{73.8,38.6},{74.2,30.2},{74.2,30.6},{74.2,37.4},{74.2,37.8},{74.4,31.6},{74.4,33.4},{74.4,34.2},{74.4,35},{74.4,35.8},{74.6,29.4},{74.6,30},{74.6,31.8},{74.6,36.8},{74.6,38.4},{74.6,39.4},{74.6,39.8},{74.8,30.8},{74.8,33.6},{74.8,34.6},{74.8,35.6},{75.4,33.4},{75.6,29},{75.6,33.4},{75.6,33.8},{75.6,34.6},{75.6,35.8},{75.8,38.2},{76.4,32.4},{76.4,37.4},{76.6,32},{76.8,36},{77,37.8},{77.4,37},{77.6,37}}},nil,3537,nil,nil,91,nil,"",0},
|
[24601] = {'Steam Rager',9291,9291,70,71,0,{[3537] = {{67,25.4},{67.4,22},{67.4,26.4},{67.4,26.8},{68,26},{68,27},{68.2,23},{68.2,23.6},{68.4,22.4},{68.4,25},{68.4,28.2},{68.8,24.8},{68.8,31.2},{69.2,23.8},{69.2,26.8},{69.2,27.8},{69.4,22.2},{69.4,22.8},{69.4,26.4},{69.4,29},{69.4,30},{69.6,22.4},{69.6,24.4},{69.6,28.2},{69.8,22.8},{69.8,32},{70,29.4},{70.2,36.6},{70.4,25.4},{70.4,25.6},{70.4,26.6},{70.4,29.8},{70.4,30.8},{70.4,36},{70.6,29.4},{70.8,36.4},{71,22.2},{71,22.6},{71,24.4},{71,25.8},{71,28.2},{71,36.6},{71.2,38.4},{71.4,25.4},{71.4,27.2},{71.4,30.4},{71.4,31.2},{71.4,32.4},{71.4,33.2},{71.4,34},{71.4,35},{71.4,39.4},{71.4,39.6},{71.6,22},{71.6,29.6},{71.6,31},{71.6,39.4},{71.8,25.8},{71.8,27.2},{71.8,33.6},{71.8,42.2},{72,24.6},{72,28.6},{72,32.6},{72,37.6},{72.2,24.2},{72.2,28.4},{72.2,32.4},{72.2,35.2},{72.2,35.8},{72.2,36.6},{72.4,21},{72.4,23.4},{72.4,40.4},{72.4,41.2},{72.6,24.4},{72.6,27.2},{72.6,30.2},{72.6,31.4},{72.6,32.4},{72.6,33.4},{72.6,33.6},{72.6,35.4},{72.6,36.4},{72.6,36.6},{72.8,25.4},{72.8,41.6},{73,23.4},{73,26.2},{73,28.2},{73.2,38.2},{73.2,39.4},{73.2,40.2},{73.2,40.6},{73.4,28.6},{73.6,24.4},{73.6,26},{73.6,27.2},{73.6,40.4},{73.6,40.6},{73.8,25.2},{73.8,28},{73.8,29.2},{73.8,38.6},{74.2,30.2},{74.2,30.6},{74.2,37.4},{74.2,37.8},{74.4,31.6},{74.4,33.4},{74.4,34.2},{74.4,35},{74.4,35.8},{74.6,29.4},{74.6,30},{74.6,31.8},{74.6,36.8},{74.6,38.4},{74.6,39.4},{74.6,39.8},{74.8,30.8},{74.8,33.6},{74.8,34.6},{74.8,35.6},{75.4,33.4},{75.6,29},{75.6,33.4},{75.6,33.8},{75.6,34.6},{75.6,35.8},{75.8,38.2},{76.4,32.4},{76.4,37.4},{76.6,32},{76.8,36},{77,37.8},{77.4,37},{77.6,37}}},nil,3537,nil,nil,91,nil,"",0},
|
||||||
@@ -84,6 +86,65 @@ EbonholdDB.npcData = EbonholdDB.npcData or {
|
|||||||
[29460] = {'Frigid Proto-Drake',12600,12600,80,80,0,{[67] = {{53.6,66},{54.4,65.4},{54.8,65.2},{55.2,67},{55.2,67.6},{55.6,65.8},{56,64.2},{56,64.6},{56.8,64.4},{57,64.6},{57,65.6},{57.2,63.2},{57.8,63.8},{58.2,61.6},{58.4,63},{58.6,62.6},{58.8,62.2},{59.6,57.6},{59.6,58.6},{59.8,61.6},{60.2,60.8},{60.6,60.4},{60.8,60.8},{63.4,62.4},{64,61.8},{64.6,60.6}}},nil,67,nil,nil,16,nil,"",0},
|
[29460] = {'Frigid Proto-Drake',12600,12600,80,80,0,{[67] = {{53.6,66},{54.4,65.4},{54.8,65.2},{55.2,67},{55.2,67.6},{55.6,65.8},{56,64.2},{56,64.6},{56.8,64.4},{57,64.6},{57,65.6},{57.2,63.2},{57.8,63.8},{58.2,61.6},{58.4,63},{58.6,62.6},{58.8,62.2},{59.6,57.6},{59.6,58.6},{59.8,61.6},{60.2,60.8},{60.6,60.4},{60.8,60.8},{63.4,62.4},{64,61.8},{64.6,60.6}}},nil,67,nil,nil,16,nil,"",0},
|
||||||
[30275] = {'Wild Wyrm',12600,12600,80,80,0,{[67] = {{51.2,64.4},{53.2,66.6},{54,64.4},{54.2,66.6},{54.6,66.6},{55,65.8},{55.4,65.2},{56,64.6},{56,66.6},{56.2,66.4},{56.4,64.2},{56.6,63},{56.6,65.2},{56.6,65.6},{56.6,66.6},{57,64.4},{57.4,59.8},{58,63},{58.2,64},{58.4,57.8},{58.4,61.6},{59,57.6},{59,59.6},{59,61.8},{59.6,61.8},{59.8,61.4},{60,58},{60,60.4},{60.4,59.4},{60.6,58.4},{61,61},{61.4,58.6}}},nil,67,nil,nil,16,nil,"",0},
|
[30275] = {'Wild Wyrm',12600,12600,80,80,0,{[67] = {{51.2,64.4},{53.2,66.6},{54,64.4},{54.2,66.6},{54.6,66.6},{55,65.8},{55.4,65.2},{56,64.6},{56,66.6},{56.2,66.4},{56.4,64.2},{56.6,63},{56.6,65.2},{56.6,65.6},{56.6,66.6},{57,64.4},{57.4,59.8},{58,63},{58.2,64},{58.4,57.8},{58.4,61.6},{59,57.6},{59,59.6},{59,61.8},{59.6,61.8},{59.8,61.4},{60,58},{60,60.4},{60.4,59.4},{60.6,58.4},{61,61},{61.4,58.6}}},nil,67,nil,nil,16,nil,"",0},
|
||||||
[30461] = {'Veranus',12600,12600,80,80,0,{[67] = {{38.8,65.4},{38.8,65.6}}},nil,67,nil,nil,16,nil,"",0},
|
[30461] = {'Veranus',12600,12600,80,80,0,{[67] = {{38.8,65.4},{38.8,65.6}}},nil,67,nil,nil,16,nil,"",0},
|
||||||
|
-- Quest 50094 Wild Basin: Sholazar Basin (zone 3711) beasts
|
||||||
|
-- All hostile beasts scraped from Sholazar Basin filter page
|
||||||
|
[32485] = {'King Krush',12600,12600,75,75,0,{[3711] = {{26.0,73.0},{28.0,45.0},{30.0,38.0},{32.0,36.0},{37.0,28.0},{47.0,42.0},{50.0,43.0},{51.0,82.0},{52.0,85.0},{55.0,83.0},{57.0,80.0},{59.0,83.0},{64.0,79.0},{65.0,82.0},{67.0,78.0}}},nil,3711,nil,nil,39,nil,"",0},
|
||||||
|
[28009] = {'Shardhorn Rhino',12600,12600,75,76,0,{[3711] = {{22.0,51.0},{24.0,47.0},{26.0,46.0},{28.0,41.0},{30.0,39.0},{32.0,37.0},{35.0,43.0},{37.0,43.0},{40.0,43.0},{42.0,47.0},{44.0,50.0},{47.0,54.0},{49.0,59.0},{52.0,45.0}}},nil,3711,nil,nil,43,nil,"",0},
|
||||||
|
[32481] = {'Aotona',12600,12600,75,75,0,{[3711] = {{40.0,59.0},{42.0,67.0},{43.0,52.0},{45.0,68.0},{47.0,55.0},{51.0,72.0},{54.0,51.0},{57.0,65.0}}},nil,3711,nil,nil,2,nil,"",0},
|
||||||
|
[28097] = {'Pitch',12600,12600,76,76,0,{[3711] = {{50.0,76.0},{50.0,77.0},{51.0,76.0},{51.0,77.0}}},nil,3711,nil,nil,1,nil,"",0},
|
||||||
|
[28083] = {'Serfex the Reaver',12600,12600,78,78,0,{[3711] = {{50.0,85.0},{51.0,86.0},{52.0,86.0},{58.0,83.0},{59.0,85.0}}},nil,3711,nil,nil,6,nil,"",0},
|
||||||
|
[28001] = {'Dreadsaber',12600,12600,75,76,0,{[3711] = {{22.0,50.0},{24.0,47.0},{26.0,43.0},{28.0,41.0},{30.0,37.0},{32.0,37.0},{35.0,41.0},{37.0,41.0},{40.0,42.0},{42.0,50.0},{45.0,53.0},{47.0,48.0},{50.0,50.0}}},nil,3711,nil,nil,1,nil,"",0},
|
||||||
|
[28213] = {'Hardknuckle Matriarch',12600,12600,77,77,0,{[3711] = {{65.0,75.0},{66.0,73.0},{66.0,74.0},{67.0,72.0},{67.0,73.0},{68.0,72.0}}},nil,3711,nil,nil,2,nil,"",0},
|
||||||
|
[28297] = {'Shango',12600,12600,76,76,0,{[3711] = {{31.0,37.0},{32.0,35.0},{33.0,32.0},{34.0,31.0},{35.0,31.0}}},nil,3711,nil,nil,1,nil,"",0},
|
||||||
|
[28358] = {'Venomtip',12600,12600,77,77,0,{[3711] = {{53.0,50.0},{56.0,50.0},{57.0,51.0},{58.0,52.0},{59.0,53.0},{60.0,55.0}}},nil,3711,nil,nil,20,nil,"",0},
|
||||||
|
[28317] = {'Bushwhacker',12600,12600,76,76,0,{[3711] = {{46.0,63.0},{46.0,64.0},{47.0,63.0},{47.0,64.0}}},nil,3711,nil,nil,8,nil,"",0},
|
||||||
|
[28096] = {'Hardknuckle Charger',12600,12600,76,77,0,{[3711] = {{55.0,69.0},{57.0,66.0},{58.0,64.0},{60.0,67.0},{62.0,67.0},{64.0,70.0},{66.0,70.0},{68.0,70.0},{70.0,69.0},{72.0,70.0},{74.0,69.0}}},nil,3711,nil,nil,2,nil,"",0},
|
||||||
|
[28325] = {'Ravenous Mangal Crocolisk',12600,12600,76,80,0,{[3711] = {{54.0,64.0},{54.0,65.0},{55.0,63.0},{56.0,65.0},{57.0,62.0}}},nil,3711,nil,nil,6,nil,"",0},
|
||||||
|
[28288] = {'Farunn',12600,12600,76,76,0,{[3711] = {{42.0,38.0},{46.0,41.0},{47.0,41.0},{48.0,43.0},{49.0,44.0}}},nil,3711,nil,nil,6,nil,"",0},
|
||||||
|
[28399] = {'Zeptek the Destroyer',12600,12600,77,77,0,{[3711] = {{41.0,19.0},{41.0,20.0},{42.0,20.0}}},nil,3711,nil,nil,42,nil,"",0},
|
||||||
|
[29044] = {'Goretalon Matriarch',12600,12600,78,78,0,{[3711] = {{57.0,23.0},{59.0,23.0},{60.0,22.0},{60.0,23.0}}},nil,3711,nil,nil,2,nil,"",0},
|
||||||
|
[28086] = {'Sapphire Hive Wasp',12600,12600,76,77,0,{[3711] = {{43.0,78.0},{50.0,80.0},{51.0,83.0},{54.0,84.0},{56.0,80.0},{58.0,79.0},{60.0,75.0},{62.0,76.0}}},nil,3711,nil,nil,44,nil,"",0},
|
||||||
|
[28011] = {'Emperor Cobra',12600,12600,75,76,0,{[3711] = {{36.0,58.0},{40.0,52.0},{42.0,51.0},{45.0,51.0},{47.0,58.0},{50.0,48.0},{52.0,48.0},{55.0,48.0},{57.0,52.0},{59.0,56.0}}},nil,3711,nil,nil,35,nil,"",0},
|
||||||
|
[28085] = {'Sapphire Hive Drone',12600,12600,76,77,0,{[3711] = {{43.0,77.0},{48.0,79.0},{51.0,78.0},{54.0,75.0},{57.0,74.0},{60.0,70.0},{63.0,73.0},{65.0,76.0}}},nil,3711,nil,nil,44,nil,"",0},
|
||||||
|
[28380] = {'Shattertusk Bull',12600,12600,76,77,0,{[3711] = {{35.0,31.0},{37.0,27.0},{40.0,29.0},{43.0,29.0},{49.0,43.0},{52.0,41.0},{54.0,30.0},{57.0,35.0},{60.0,33.0},{62.0,33.0}}},nil,3711,nil,nil,21,nil,"",0},
|
||||||
|
[28847] = {'Siltslither Eel',12600,12600,1,77,0,{[3711] = {{47.0,62.0},{48.0,62.0},{48.0,64.0},{49.0,63.0}}},nil,3711,nil,nil,35,nil,"",0},
|
||||||
|
[29033] = {'Spirit of Atha',12600,12600,79,80,0,{[3711] = {{35.0,41.0},{37.0,35.0},{38.0,36.0},{40.0,42.0},{42.0,39.0},{44.0,42.0}}},nil,3711,nil,nil,46,nil,"",0},
|
||||||
|
[28010] = {'Stranded Thresher',12600,12600,75,76,0,{[3711] = {{46.0,62.0},{48.0,60.0},{50.0,62.0},{72.0,65.0},{73.0,64.0}}},nil,3711,nil,nil,35,nil,"",0},
|
||||||
|
[28002] = {'Mangal Crocolisk',12600,12600,75,76,0,{[3711] = {{20.0,59.0},{22.0,58.0},{25.0,58.0},{30.0,59.0},{35.0,58.0},{40.0,53.0},{45.0,55.0},{50.0,50.0},{53.0,68.0}}},nil,3711,nil,nil,6,nil,"",0},
|
||||||
|
[29034] = {'Spirit of Koosu',12600,12600,78,80,0,{[3711] = {{44.0,74.0},{48.0,68.0},{50.0,69.0},{56.0,85.0},{58.0,84.0},{60.0,85.0}}},nil,3711,nil,nil,46,nil,"",0},
|
||||||
|
[28129] = {'Longneck Grazer',12600,12600,75,76,0,{[3711] = {{21.0,61.0},{24.0,62.0},{27.0,63.0},{30.0,64.0},{33.0,64.0},{36.0,80.0},{40.0,86.0},{44.0,86.0},{48.0,86.0}}},nil,3711,nil,nil,21,nil,"",0},
|
||||||
|
[28004] = {'Goretalon Roc',12600,12600,75,76,0,{[3711] = {{54.0,23.0},{55.0,24.0},{56.0,23.0},{57.0,25.0},{58.0,26.0},{59.0,26.0},{60.0,27.0},{61.0,29.0}}},nil,3711,nil,nil,2,nil,"",0},
|
||||||
|
[28087] = {'Sapphire Hive Queen',12600,12600,78,78,0,{[3711] = {{57.0,79.0},{57.0,80.0},{58.0,80.0}}},nil,3711,nil,nil,44,nil,"",0},
|
||||||
|
[29018] = {'Spirit of Ha-Khalan',12600,12600,78,80,0,{[3711] = {{46.0,61.0},{48.0,60.0},{50.0,61.0},{51.0,63.0}}},nil,3711,nil,nil,46,nil,"",0},
|
||||||
|
[28003] = {'Bittertide Hydra',12600,12600,75,76,0,{[3711] = {{32.0,38.0},{35.0,36.0},{38.0,37.0},{41.0,37.0},{43.0,40.0},{45.0,43.0},{48.0,43.0}}},nil,3711,nil,nil,38,nil,"",0},
|
||||||
|
-- Requested WotLK Rare Spawns
|
||||||
|
[32422] = {'Grocklar',12600,12600,73,74,4,{[394] = {{9.6,39.0},{10.4,39.8},{10.6,40.6},{11.2,42.2},{11.2,70.6},{11.4,42.6},{11.4,54.0},{11.6,42.8},{12.0,57.0},{12.0,70.8},{12.2,44.4},{12.2,54.8},{12.4,49.8},{12.4,53.0},{12.4,54.4},{12.6,53.6},{12.8,45.6},{12.8,50.0},{12.8,70.8},{13.0,54.6},{13.0,70.4},{13.2,48.4},{13.2,49.0},{13.2,51.4},{13.6,48.2},{14.0,52.4},{14.0,54.8},{14.2,53.0},{14.2,53.6},{14.2,69.4},{14.4,70.2},{14.6,50.0},{14.6,50.6},{14.6,51.6},{15.4,69.8},{15.8,69.8},{16.6,70.2},{17.4,70.6},{17.8,69.2},{18.4,72.2},{18.6,68.8},{18.6,72.4},{19.8,72.2},{20.2,56.0},{21.0,60.8},{21.2,71.8},{21.4,57.2},{21.4,71.4},{21.6,57.6},{21.6,67.8},{21.8,56.8},{21.8,71.2},{22.0,72.0},{22.8,72.4},{23.0,57.4},{23.2,58.2},{23.8,56.2},{24.2,57.2},{24.4,54.8},{24.8,58.6},{24.8,61.6},{25.0,55.0},{25.0,56.4},{25.0,59.6},{25.2,56.8},{25.8,55.2}}},nil,394,nil,nil,35,nil,"",0},
|
||||||
|
[32429] = {'Seething Hate',12600,12600,73,73,4,{[394] = {{26.6,44.2},{28.0,45.4},{28.2,45.6},{28.8,46.4},{34.2,49.2},{34.2,49.6},{34.4,48.4},{34.6,48.8},{34.8,48.2},{38.4,49.0},{38.6,49.6},{38.8,49.2},{39.6,51.0},{40.2,49.2},{40.2,49.6}}},nil,394,nil,nil,35,nil,"",0},
|
||||||
|
[32438] = {'Syreian the Bonecarver',12600,12600,73,73,4,{[394] = {{61.2,35.0},{61.2,35.8},{61.6,35.6},{63.0,36.8},{64.2,35.8},{64.8,29.6},{65.2,31.2},{65.4,35.8},{65.6,29.6},{65.6,33.2},{65.6,35.8},{65.6,37.8},{65.8,34.2},{66.0,29.2},{66.2,40.8},{66.4,40.0},{66.6,41.4},{66.6,42.6},{66.8,36.8},{66.8,38.4},{66.8,41.6},{67.0,28.2},{67.6,27.0},{68.6,31.6},{68.8,30.4},{68.8,31.4},{69.0,32.8},{69.2,27.2},{69.4,28.8},{70.4,33.4},{70.4,33.8},{70.6,33.6},{71.4,35.0},{71.6,34.8},{72.4,36.6},{73.0,36.0},{73.4,37.6},{74.2,43.0},{74.4,35.8},{74.4,38.2},{74.6,39.0},{75.0,38.0},{75.0,41.6},{75.6,38.2},{75.8,41.0}}},nil,394,nil,nil,35,nil,"",0},
|
||||||
|
[38453] = {'Arcturis',12600,12600,74,74,4,{[394] = {{30.4,55.0},{31.0,55.4},{31.0,55.8},{32.8,55.2}}},nil,394,nil,nil,35,nil,"",0},
|
||||||
|
-- Quest 50203 Zul'Drak Trophy: Rare NPCs in Zul'Drak (zone 66)
|
||||||
|
[33776] = {'Gondria',12600,12600,77,77,4,{[66] = {{61.4,61.4},{61.4,62.4},{61.4,63},{62,63.2},{63,43.2},{63,43.6},{63.2,42.4},{63.6,42.8},{63.6,43.6},{66.8,77.8},{67.2,77.2},{67.6,79.2},{67.8,78.2},{68,77.4},{69.2,48},{69.6,48},{69.8,48.8},{77,70.4},{77.2,70.6},{77.6,70},{78.2,71.2}}},nil,66,nil,nil,35,nil,"",0},
|
||||||
|
[32471] = {'Griegen',12600,12600,75,75,4,{[66] = {{13.2,56.2},{13.4,54.8},{14.4,56},{14.4,56.8},{14.6,55.4},{14.6,56.2},{17.2,71},{17.2,71.8},{18,70.8},{20.6,71.2},{21,78.8},{21.2,79.6},{21.6,70.2},{22.4,60.8},{22.8,61.2},{22.8,62},{24.4,62},{25,75.4},{25.2,77.2},{26.2,71},{26.4,53.8},{26.4,55.2},{26.4,70.2},{26.6,55.6},{26.6,56.6},{26.6,70.2},{26.6,71.2},{26.8,54.4},{27,54.8}}},nil,66,nil,nil,16,nil,"",0},
|
||||||
|
[32475] = {'Terror Spinner',12600,12600,76,76,4,{[66] = {{52.4,31.6},{52.6,32.6},{53,32},{53.4,31.2},{60.6,37},{61.4,35.4},{61.4,36},{61.6,33.8},{61.6,35.8},{62.2,33.2},{70.8,28.8},{71.2,23},{71.2,24.2},{71.4,27.4},{71.6,23},{71.8,24},{71.8,25},{71.8,29.8},{72.4,27.6},{73.4,68.4},{73.6,66},{74.4,67.4},{74.8,66.4},{75.2,67},{76.4,42.8},{76.4,43.8},{76.6,68.8},{77.2,42.6},{81.4,34.2},{81.4,35},{81.6,34.6}}, [67] = {{72,75}}},nil,66,nil,nil,16,nil,"",0},
|
||||||
|
[32447] = {'Zul\'drak Sentinel',12600,12600,76,76,4,{[66]={{21.2,87.2},{22.2,82.4},{22.2,83},{22.4,83.6},{22.8,83},{23,82.2},{23.6,82.4},{24.2,87},{24.4,83},{25.2,82.8},{25.6,83.4},{26.4,82.2},{27,82.6},{28,82.6},{28.4,82.2},{28.6,73.8},{28.8,72.4},{28.8,82.8},{29,75},{29,77.6},{29,81.2},{29,81.8},{29.2,75.8},{29.4,79.2},{29.4,79.8},{29.6,82.4},{39.6,67.4},{40,51.8},{40,59.8},{40.4,53},{40.4,54.4},{40.4,55},{40.4,56.2},{40.4,56.6},{40.4,58},{40.4,59.4},{40.4,61},{40.4,61.6},{40.4,62.6},{40.8,52.6},{41.4,55.4},{41.4,69.8},{41.8,56},{42.2,70},{42.8,71},{43.2,54.6},{43.2,71.8},{43.6,72.6},{44.2,54.4},{44.2,55.2},{44.4,73.8},{44.6,67.6},{45,67},{45,74.4},{45.2,59.4},{45.2,74.8},{45.6,59.2},{45.6,59.6},{45.8,75.8},{46,60.6},{46,61.6},{46,64.4},{46,66},{46,66.6},{46.4,65.2},{46.4,77.2},{46.6,77.2},{46.8,61},{46.8,64.4},{46.8,65.8},{46.8,78},{47.2,79},{47.4,63.2},{48,79.6},{48.4,79.4},{49,81.2},{50.6,83},{50.8,84}}},nil,66,nil,nil,16,nil,"",0},
|
||||||
|
-- Quest 50153 Morogh Trophy: Rare NPCs in Dun Morogh (zone 1)
|
||||||
|
[1132] = {'Timber',12600,12600,10,10,4,{[1] = {{30.6,44.2},{31.8,38.0},{34.6,41.2},{37.2,40.2}}},nil,1,nil,nil,1,nil,"",0},
|
||||||
|
[1130] = {'Bjarn',12600,12600,12,12,4,{[1] = {{50.8,59.4},{55.4,55.4},{59.6,60.6},{65.0,59.6}}},nil,1,nil,nil,1,nil,"",0},
|
||||||
|
[8503] = {'Gibblewilt',12600,12600,10,10,4,{[1] = {{24.0,43.4},{25.0,44.6},{26.4,36.6},{28.6,35.6}}},nil,1,nil,nil,1,nil,"",0},
|
||||||
|
[1260] = {'Great Father Arctikus',12600,12600,10,10,4,{[1] = {{21.0,51.0},{23.0,52.4},{25.4,49.4},{29.6,48.4}}},nil,1,nil,nil,1,nil,"",0},
|
||||||
|
[1137] = {'Edan the Howler',12600,12600,10,10,4,{[1] = {{38.4,48.2},{40.8,45.4},{42.2,49.4},{43.6,49.6}}},nil,1,nil,nil,1,nil,"",0},
|
||||||
|
[1119] = {'Hammerspine',12600,12600,12,12,4,{[1] = {{71.4,51.4},{71.6,50.2},{72.2,53.6},{73.0,51.8}}},nil,1,nil,nil,1,nil,"",0},
|
||||||
|
-- Quest 50164 Tirisfal Trophy: Rare NPCs in Tirisfal Glades (zone 85)
|
||||||
|
[10357] = {'Ressan the Needler',12600,12600,11,11,4,{[85] = {{42,68.2},{42.2,69},{42.4,67.2},{42.6,68.8},{43,66.4},{43,67.8},{43.2,64.4},{43.4,67},{43.6,66.2},{43.6,67},{44,65},{44.2,68.2},{45,66.8},{45.4,64.4},{45.4,65.6},{45.8,62.6},{45.8,65.4},{45.8,66.8},{46.2,64.4},{46.4,65.8},{46.6,65.4},{46.6,66},{46.8,64.2},{48.4,65.6},{49.2,63.2},{49.2,65.2},{49.4,62.2},{49.4,64.4},{49.4,65.8},{49.4,66.6},{49.6,63.4},{49.6,64.6},{49.8,65.6},{49.8,66.6},{50.2,64.4},{51,66.2},{51.2,63.8},{51.4,62.2},{51.4,63.4},{51.4,65.2},{51.8,62.2},{51.8,66.2},{52.2,60},{52.2,63},{52.2,65},{52.4,61.2},{52.4,63.8},{52.6,62.2},{52.6,63.2},{52.6,63.8},{52.8,64.6},{53.4,67},{54.4,75.2},{54.8,67.4},{55.2,59.4},{55.2,59.8},{55.4,61},{55.4,61.8},{55.4,62.6},{55.6,59.4},{55.6,60},{55.6,61.8},{55.8,62.6},{56,61},{56.2,63.6},{56.6,60.2},{56.6,61.6},{56.8,61},{57,56.4},{57,59},{57.4,63},{58.2,62}}},nil,85,nil,nil,16,nil,"",0},
|
||||||
|
[10359] = {'Sr\'iskulk',12600,12600,10,10,4,{[85] = {{79.6,47},{81.8,51.6},{82.2,54.2},{83,54.4},{83,55.8},{83.4,53.2},{83.4,54.8},{83.6,54.6},{83.8,53},{83.8,54.4},{83.8,56},{84,48.2},{84.2,50},{84.4,49.2},{84.4,50.6},{84.4,52.2},{84.6,50.2},{85,55.4},{85.2,48.2},{85.2,49.4},{85.2,50.8},{85.6,50.4},{88,50},{88.2,50.6},{88.4,51.8},{88.4,52.6},{88.4,53.8},{88.6,50.4},{88.8,48.6},{88.8,51},{88.8,53.6},{89,45.4},{89,52.6},{89.2,47.6},{89.2,51.6},{89.4,40.2},{89.4,41.4},{89.4,42},{89.4,46},{89.4,47.4},{89.6,41.2},{89.6,41.6},{89.6,43.4},{89.6,46},{89.6,47},{89.8,49.6},{90,53.6},{90.2,47.6},{90.6,44}}},nil,85,nil,nil,16,nil,"",0},
|
||||||
|
[10356] = {'Bayne',12600,12600,10,10,4,{[85] = {{38,44.6},{39.2,41.2},{39.4,42},{39.4,42.6},{39.4,44},{40,40.4},{40,41.4},{40.2,43},{40.2,49.4},{40.2,53.4},{40.2,54.8},{40.4,42.4},{40.4,43.6},{40.6,42},{40.6,43},{40.8,41.4},{41,51},{41,54.6},{41.4,43.8},{41.4,52},{41.4,52.8},{41.4,53.8},{41.6,41.2},{41.6,53.6},{41.6,55},{41.8,42.4},{42,51.4},{42,52.6},{42.2,52.4},{42.6,53.8},{42.8,51.6},{42.8,55},{43,51.4},{43,52.6},{43.8,54.6},{44.2,52.8},{44.2,54},{44.8,50},{45,54},{45.2,51},{45.4,52},{45.4,52.8},{45.8,52.8},{46,51.4},{46.2,50},{46.2,51.6},{46.6,51.4},{46.6,52.4},{46.6,55},{46.6,56.2},{46.8,53.2},{46.8,54.4},{47,50.2},{47.6,51.8},{47.6,53.2},{48.4,49.2},{48.4,51.4},{49,50.8},{49,52.4},{49.4,50.2},{49.6,47.2},{49.8,49},{50,50.2},{50,50.8},{50.2,52.8},{50.4,52.4},{50.6,51},{51.2,50.4},{51.4,48.2},{51.4,48.8},{51.4,52.2},{52.6,53.4},{55.4,40.8},{55.6,39.4},{56.2,41.6},{56.4,40.4},{56.4,40.8},{56.6,41.6},{57,38.4},{57,39.8},{57.2,39.4},{57.2,41.2},{57.2,42.8},{57.6,41.2},{57.6,42},{58,39},{58.2,39.6},{58.6,39.8},{59,38.8},{59.2,47}}},nil,85,nil,nil,16,nil,"",0},
|
||||||
|
[1936] = {'Farmer Solliden',12600,12600,10,10,4,{[85] = {{34.2,50.2},{34.4,51.4},{34.4,52.2},{34.6,51.4},{34.6,52.2},{34.8,52.6},{35,50.4},{35.6,52},{36.4,49.4},{36.4,50},{36.8,49.6},{36.8,50.8},{37,53},{37.2,48.4},{37.2,52},{37.4,49},{37.6,49},{37.8,52.8},{38,51.4},{38,51.8},{38,53.6},{38.2,50},{38.6,50.8},{38.6,52},{38.8,49.4},{39,52.6},{39.8,54.4},{40,51.6}}},nil,85,nil,nil,16,nil,"",0},
|
||||||
|
[1531] = {'Lost Soul',12600,12600,10,10,4,{[85] = {{44.4,37.4},{44.4,37.6},{44.6,37.6},{44.8,37.2},{45,40.4},{45.8,43},{46,36.8},{46.4,40.4},{47,39.4},{47,40},{47.2,40.6},{47.4,35.4},{48,35},{48.4,36},{48.6,35.4},{48.6,36.2},{49,37.6},{49.4,37.4},{52.4,49},{53,45.2},{53.2,46.2},{53.2,46.6},{53.2,48.4},{53.2,48.6},{53.2,49.6},{53.6,45.4},{53.6,46.4},{53.6,46.6},{53.6,48.2},{53.6,49.2}}},nil,85,nil,nil,16,nil,"",0},
|
||||||
|
[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},
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Backward compatibility
|
-- Backward compatibility
|
||||||
|
|||||||
@@ -568,6 +568,263 @@ EbonholdDB.questData = EbonholdDB.questData or {
|
|||||||
"Complete 6 quests in Azuremyst Isle"
|
"Complete 6 quests in Azuremyst Isle"
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- Quest 50094: Wild Basin
|
||||||
|
-- Kill 75 beasts in Sholazar Basin
|
||||||
|
[50094] = {
|
||||||
|
[1] = "Wild Basin", -- Quest name
|
||||||
|
[2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}}
|
||||||
|
[4] = 68, -- Required level (Min level)
|
||||||
|
[5] = 73, -- Quest level
|
||||||
|
[17] = 3711, -- Zone (Sholazar Basin)
|
||||||
|
[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 Beasts in Sholazar Basin"
|
||||||
|
},
|
||||||
|
[10] = {
|
||||||
|
nil, -- [1] creatureObjective (not used)
|
||||||
|
nil, -- [2] objectObjective (not used)
|
||||||
|
nil, -- [3] itemObjective (not used)
|
||||||
|
nil, -- [4] reputationObjective (not used)
|
||||||
|
{ -- [5] killCreditObjective
|
||||||
|
{
|
||||||
|
-- All 29 beast NPCs in Sholazar Basin (hostile to both factions)
|
||||||
|
{ 32485, 28009, 32481, 28097, 28083, 28001, 28213, 28297, 28358, 28317, 28096, 28325, 28288, 28399, 29044, 28086, 28011, 28085, 28380, 28847, 29033, 28010, 28002, 29034, 28129, 28004, 28087, 29018, 28003 },
|
||||||
|
28001, -- RootId: Dreadsaber (representative beast)
|
||||||
|
"Beasts slain"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
[30] = 75, -- Kill count (75 beasts as per quest name)
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Quest 50202: Grizzly Trophy
|
||||||
|
-- Kill 1 rare in Grizzly Hills
|
||||||
|
[50202] = {
|
||||||
|
[1] = "Grizzly Trophy", -- Quest name
|
||||||
|
[2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}}
|
||||||
|
[4] = 74, -- Quest level
|
||||||
|
[5] = 71, -- Min level
|
||||||
|
[17] = 394, -- Zone (Grizzly Hills)
|
||||||
|
[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 Grizzly Hills"
|
||||||
|
},
|
||||||
|
[10] = {
|
||||||
|
nil, -- [1] creatureObjective (not used)
|
||||||
|
nil, -- [2] objectObjective (not used)
|
||||||
|
nil, -- [3] itemObjective (not used)
|
||||||
|
nil, -- [4] reputationObjective (not used)
|
||||||
|
{ -- [5] killCreditObjective
|
||||||
|
{
|
||||||
|
-- 4 rare NPCs in Grizzly Hills
|
||||||
|
{ 38453, 32429, 32422, 32438 }, -- Arcturis, Seething Hate, Grocklar, Syreian the Bonecarver
|
||||||
|
38453, -- RootId: Arcturis (representative rare)
|
||||||
|
"Rare slain"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
[30] = 1, -- Kill count (only 1 rare needed)
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Quest 50203: Zul'Drak Trophy
|
||||||
|
-- Kill 1 rare in Zul'Drak
|
||||||
|
[50203] = {
|
||||||
|
[1] = "Zul'Drak Trophy", -- Quest name
|
||||||
|
[2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}}
|
||||||
|
[4] = 77, -- Quest level
|
||||||
|
[5] = 74, -- Min level
|
||||||
|
[17] = 66, -- Zone (Zul'Drak)
|
||||||
|
[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 Zul'Drak"
|
||||||
|
},
|
||||||
|
[10] = {
|
||||||
|
nil, -- [1] creatureObjective (not used)
|
||||||
|
nil, -- [2] objectObjective (not used)
|
||||||
|
nil, -- [3] itemObjective (not used)
|
||||||
|
nil, -- [4] reputationObjective (not used)
|
||||||
|
{ -- [5] killCreditObjective
|
||||||
|
{
|
||||||
|
-- 4 rare NPCs in Zul'Drak
|
||||||
|
{ 33776, 32471, 32475, 32447 }, -- Gondria, Griegen, Terror Spinner, Zul'drak Sentinel
|
||||||
|
33776, -- RootId: Gondria (representative rare)
|
||||||
|
"Rare slain"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
[30] = 1, -- Kill count (only 1 rare needed)
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Quest 50149: Basin Expeditions
|
||||||
|
-- Complete 6 quests in Sholazar Basin (Any Quest)
|
||||||
|
[50149] = {
|
||||||
|
[1] = "Basin Expeditions", -- Quest name
|
||||||
|
[2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}}
|
||||||
|
[4] = 76, -- Quest level
|
||||||
|
[5] = 74, -- Min level
|
||||||
|
[17] = 3711, -- Zone (Sholazar Basin)
|
||||||
|
[8] = {
|
||||||
|
"This quest requires completing any 6 quests in Sholazar Basin. 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.",
|
||||||
|
"Complete 6 quests in Sholazar Basin"
|
||||||
|
},
|
||||||
|
[10] = {
|
||||||
|
nil, -- [1] creatureObjective (not used)
|
||||||
|
nil, -- [2] objectObjective (not used)
|
||||||
|
nil, -- [3] itemObjective (not used)
|
||||||
|
nil, -- [4] reputationObjective (not used)
|
||||||
|
nil -- [5] killCreditObjective
|
||||||
|
},
|
||||||
|
[12] = { { 50149, "Complete 6 quests in Sholazar Basin" } }, -- Special objective
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Quest 50099: Shadow of Teldrassil
|
||||||
|
-- Complete 6 quests in Teldrassil (Any Quest)
|
||||||
|
[50099] = {
|
||||||
|
[1] = "Shadow of Teldrassil", -- Quest name
|
||||||
|
[2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}}
|
||||||
|
[4] = 1, -- Min level
|
||||||
|
[5] = 60, -- Quest level
|
||||||
|
[17] = 141, -- Zone (Teldrassil)
|
||||||
|
[8] = {
|
||||||
|
"This quest requires completing any 6 quests in Teldrassil. The quest will automatically complete once the objective is met.",
|
||||||
|
"Complete 6 quests in Teldrassil"
|
||||||
|
},
|
||||||
|
[10] = {
|
||||||
|
nil, -- [1] creatureObjective (not used)
|
||||||
|
nil, -- [2] objectObjective (not used)
|
||||||
|
nil, -- [3] itemObjective (not used)
|
||||||
|
nil, -- [4] reputationObjective (not used)
|
||||||
|
nil -- [5] killCreditObjective
|
||||||
|
},
|
||||||
|
[12] = { { 50099, "Complete 6 quests in Teldrassil" } }, -- Special objective
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Quest 50108: Trials of Durotar
|
||||||
|
-- Complete 6 quests in Durotar (Any Quest)
|
||||||
|
[50108] = {
|
||||||
|
[1] = "Trials of Durotar", -- Quest name
|
||||||
|
[2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}}
|
||||||
|
[4] = 1, -- Min level
|
||||||
|
[5] = 60, -- Quest level
|
||||||
|
[17] = 14, -- Zone (Durotar)
|
||||||
|
[8] = {
|
||||||
|
"This quest requires completing any 6 quests in Durotar. The quest will automatically complete once the objective is met.",
|
||||||
|
"Complete 6 quests in Durotar"
|
||||||
|
},
|
||||||
|
[10] = {
|
||||||
|
nil, -- [1] creatureObjective (not used)
|
||||||
|
nil, -- [2] objectObjective (not used)
|
||||||
|
nil, -- [3] itemObjective (not used)
|
||||||
|
nil, -- [4] reputationObjective (not used)
|
||||||
|
nil -- [5] killCreditObjective
|
||||||
|
},
|
||||||
|
[12] = { { 50108, "Complete 6 quests in Durotar" } }, -- Special objective
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Quest 50111: Song of the Woods
|
||||||
|
-- Complete 6 quests in Eversong Woods (Any Quest)
|
||||||
|
[50111] = {
|
||||||
|
[1] = "Song of the Woods", -- Quest name
|
||||||
|
[2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}}
|
||||||
|
[4] = 1, -- Min level
|
||||||
|
[5] = 60, -- Quest level
|
||||||
|
[17] = 3430, -- Zone (Eversong Woods)
|
||||||
|
[8] = {
|
||||||
|
"This quest requires completing any 6 quests in Eversong Woods. The quest will automatically complete once the objective is met.",
|
||||||
|
"Complete 6 quests in Eversong Woods"
|
||||||
|
},
|
||||||
|
[10] = {
|
||||||
|
nil, -- [1] creatureObjective (not used)
|
||||||
|
nil, -- [2] objectObjective (not used)
|
||||||
|
nil, -- [3] itemObjective (not used)
|
||||||
|
nil, -- [4] reputationObjective (not used)
|
||||||
|
nil -- [5] killCreditObjective
|
||||||
|
},
|
||||||
|
[12] = { { 50111, "Complete 6 quests in Eversong Woods" } }, -- Special objective
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Quest 50153: Morogh Trophy
|
||||||
|
-- Kill 1 rare in Dun Morogh
|
||||||
|
[50153] = {
|
||||||
|
[1] = "Morogh Trophy", -- Quest name
|
||||||
|
[2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}}
|
||||||
|
[4] = 10, -- Quest level
|
||||||
|
[5] = 1, -- Min level
|
||||||
|
[17] = 1, -- Zone (Dun Morogh)
|
||||||
|
[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 Dun Morogh"
|
||||||
|
},
|
||||||
|
[10] = {
|
||||||
|
nil, -- [1] creatureObjective (not used)
|
||||||
|
nil, -- [2] objectObjective (not used)
|
||||||
|
nil, -- [3] itemObjective (not used)
|
||||||
|
nil, -- [4] reputationObjective (not used)
|
||||||
|
{ -- [5] killCreditObjective
|
||||||
|
{
|
||||||
|
-- 6 rare NPCs in Dun Morogh
|
||||||
|
{ 1132, 1130, 8503, 1260, 1137, 1119 }, -- Timber, Bjarn, Gibblewilt, Great Father Arctikus, Edan the Howler, Hammerspine
|
||||||
|
1132, -- RootId: Timber (representative rare)
|
||||||
|
"Rare slain"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
[30] = 1, -- Kill count (only 1 rare needed)
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Quest 50164: Tirisfal Trophy
|
||||||
|
-- Kill 1 rare in Tirisfal Glades
|
||||||
|
[50164] = {
|
||||||
|
[1] = "Tirisfal Trophy", -- Quest name
|
||||||
|
[2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}}
|
||||||
|
[4] = 10, -- Quest level
|
||||||
|
[5] = 1, -- Min level
|
||||||
|
[17] = 85, -- Zone (Tirisfal Glades)
|
||||||
|
[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 Tirisfal Glades"
|
||||||
|
},
|
||||||
|
[10] = {
|
||||||
|
nil, -- [1] creatureObjective (not used)
|
||||||
|
nil, -- [2] objectObjective (not used)
|
||||||
|
nil, -- [3] itemObjective (not used)
|
||||||
|
nil, -- [4] reputationObjective (not used)
|
||||||
|
{ -- [5] killCreditObjective
|
||||||
|
{
|
||||||
|
-- 9 rare NPCs in Tirisfal Glades
|
||||||
|
{ 10357, 10359, 10356, 1936, 1531, 1911, 1910, 10358, 1533 }, -- Ressan the Needler, Sri'skulk, Bayne, Farmer Solliden, Lost Soul, Deeb, Muad, Fellicent's Shade, Tormented Spirit
|
||||||
|
10357, -- RootId: Ressan the Needler (representative rare)
|
||||||
|
"Rare slain"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
[30] = 1, -- Kill count (only 1 rare needed)
|
||||||
|
},
|
||||||
|
[50150] = {
|
||||||
|
[1] = "Storm Peak Orders",
|
||||||
|
[2] = { nil, { 600600 } },
|
||||||
|
[4] = 80,
|
||||||
|
[5] = 77,
|
||||||
|
[17] = 67,
|
||||||
|
[8] = {
|
||||||
|
"Complete any 6 quests in The Storm Peaks.",
|
||||||
|
"Complete 6 Quests"
|
||||||
|
},
|
||||||
|
[10] = {
|
||||||
|
nil, nil, nil, nil, nil
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Backward compatibility
|
-- Backward compatibility
|
||||||
|
|||||||
@@ -17400,7 +17400,7 @@ QuestieDB.npcData = [[return {
|
|||||||
[23725] = {'Stone Giant',26946,26946,70,70,1,{[495]={{69.77,29.82},{68.18,30.54},{65.88,29.01},{70.41,23.92},{71.95,23.22}}},nil,495,nil,nil,634,nil,"",0},
|
[23725] = {'Stone Giant',26946,26946,70,70,1,{[495]={{69.77,29.82},{68.18,30.54},{65.88,29.01},{70.41,23.92},{71.95,23.22}}},nil,495,nil,nil,634,nil,"",0},
|
||||||
[23726] = {'Stone Lord',1,1,1,1,1,nil,nil,0,nil,nil,35,"AH","",0},
|
[23726] = {'Stone Lord',1,1,1,1,1,nil,nil,0,nil,nil,35,"AH","",0},
|
||||||
[23727] = {'Invis Raptor Credit',40,40,1,1,0,{[15]={{41.5,11.78}}},nil,15,nil,nil,35,"AH","",0},
|
[23727] = {'Invis Raptor Credit',40,40,1,1,0,{[15]={{41.5,11.78}}},nil,15,nil,nil,35,"AH","",0},
|
||||||
[23728] = {'Guard Captain Zorek',29820,29820,73,73,1,{[495]={{60.12,62.43}}},{[495]={{{60.12,62.43},{60.12,62.43},{60.12,62.43}}}},495,{11420,11426,11427},{11420,11426,11436},1892,"A","",3},
|
[23728] = {'Guard Captain Zorek',29820,29820,73,73,1,{[495]={{60.1,62.4}}},{[495]={{{60.1,62.4},{60.1,62.4},{60.1,62.4}}}},495,{11420,11426,11427},{11420,11426,11436},1892,"A","",3},
|
||||||
[23729] = {'Baron Ulrik von Stromhearth',25524,25524,75,75,1,{[495]={{58.77,62.76}}},nil,495,{12794},nil,2007,"AH","",3},
|
[23729] = {'Baron Ulrik von Stromhearth',25524,25524,75,75,1,{[495]={{58.77,62.76}}},nil,495,{12794},nil,2007,"AH","",3},
|
||||||
[23730] = {'Harold Lagras',9291,9291,71,71,0,{[495]={{62.8,58.54}}},{[495]={{{62.87,58.78},{62.91,58.89},{62.99,59.1},{63.03,59.41},{63.04,59.72},{63.05,60.03},{63.04,59.65},{63.02,59.38},{63.0,59.17},{62.98,59.07},{62.93,58.94},{62.87,58.77},{62.77,58.46}}}},495,{11443},{11443},1892,"A","",2},
|
[23730] = {'Harold Lagras',9291,9291,71,71,0,{[495]={{62.8,58.54}}},{[495]={{{62.87,58.78},{62.91,58.89},{62.99,59.1},{63.03,59.41},{63.04,59.72},{63.05,60.03},{63.04,59.65},{63.02,59.38},{63.0,59.17},{62.98,59.07},{62.93,58.94},{62.87,58.77},{62.77,58.46}}}},495,{11443},{11443},1892,"A","",2},
|
||||||
[23731] = {'Innkeeper Hazel Lagras',5060,5060,67,67,0,{[495]={{58.39,62.45}}},nil,495,nil,nil,1892,"A","Innkeeper",66179},
|
[23731] = {'Innkeeper Hazel Lagras',5060,5060,67,67,0,{[495]={{58.39,62.45}}},nil,495,nil,nil,1892,"A","Innkeeper",66179},
|
||||||
|
|||||||
@@ -398,14 +398,6 @@ function QuestieArrow:UpdateNearestTargets()
|
|||||||
local usingAutoLogic = Questie.db.profile.autoTrackQuests or not hasTracked
|
local usingAutoLogic = Questie.db.profile.autoTrackQuests or not hasTracked
|
||||||
local playerZoneId = QuestiePlayer:GetCurrentZoneId()
|
local playerZoneId = QuestiePlayer:GetCurrentZoneId()
|
||||||
|
|
||||||
-- Auto mode logic: If autoTrack is on OR NOTHING is tracked
|
|
||||||
local usingAutoLogic = Questie.db.profile.autoTrackQuests or not hasTracked
|
|
||||||
local playerZoneId = QuestiePlayer:GetCurrentZoneId()
|
|
||||||
|
|
||||||
-- 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)
|
local function _CollectQuestTargets(quest)
|
||||||
if not quest then
|
if not quest then
|
||||||
return
|
return
|
||||||
@@ -772,3 +764,31 @@ function QuestieArrow:Initialize()
|
|||||||
|
|
||||||
QuestieArrow:Refresh()
|
QuestieArrow:Refresh()
|
||||||
end
|
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
|
||||||
|
|||||||
@@ -382,16 +382,50 @@ function _QuestEventHandler:MarkQuestAsAbandoned(questId)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if questEntry.state == QUEST_LOG_STATES.QUEST_REMOVED then
|
if questEntry.state == QUEST_LOG_STATES.QUEST_REMOVED then
|
||||||
Questie:Debug(Questie.DEBUG_INFO, "Quest:", questId, "was abandoned")
|
-- Check if objectives were completed before the quest was removed.
|
||||||
questEntry.state = QUEST_LOG_STATES.QUEST_ABANDONED
|
-- 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)
|
||||||
|
|
||||||
QuestLogCache.RemoveQuest(questId)
|
-- Check for Ebonhold auto-complete quests which might be removed before IsComplete returns 1
|
||||||
QuestieQuest:SetObjectivesDirty(questId) -- is this necessary? should whole quest.Objectives be cleared at some point of quest removal?
|
local desc = quest.Description
|
||||||
|
if type(desc) == "table" then desc = desc[1] end
|
||||||
|
|
||||||
QuestieQuest:AbandonedQuest(questId)
|
if (not objectivesWereComplete) and desc and type(desc) == "string" then
|
||||||
QuestieJourney:AbandonQuest(questId)
|
if string.find(desc, "automatically rewarded") then
|
||||||
QuestieAnnounce:AbandonedQuest(questId)
|
Questie:Debug(Questie.DEBUG_INFO, "Quest:", questId, "detected as auto-complete by description")
|
||||||
questLog[questId] = nil
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -595,6 +595,17 @@ function QuestieQuest:AbandonedQuest(questId)
|
|||||||
|
|
||||||
AvailableQuests.CalculateAndDrawAll()
|
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)
|
Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] Abandoned Quest:", questId)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -607,7 +618,7 @@ function QuestieQuest:UpdateQuest(questId)
|
|||||||
|
|
||||||
local sourceItemId = (quest and tonumber(quest.sourceItemId)) or 0
|
local sourceItemId = (quest and tonumber(quest.sourceItemId)) or 0
|
||||||
|
|
||||||
if quest and (not Questie.db.char.complete[questId]) then
|
if quest and (not Questie.db.char.complete[questId] or QuestiePlayer.currentQuestlog[questId]) then
|
||||||
QuestieQuest:PopulateQuestLogInfo(quest)
|
QuestieQuest:PopulateQuestLogInfo(quest)
|
||||||
|
|
||||||
if QuestieQuest:ShouldShowQuestNotes(questId) then
|
if QuestieQuest:ShouldShowQuestNotes(questId) then
|
||||||
|
|||||||
@@ -2275,24 +2275,10 @@ function QuestieTracker.RemoveQuestWatch(index, isQuestie)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if questId then
|
if questId then
|
||||||
-- Check if quest is complete - if so, don't untrack it so the finisher can still be shown
|
|
||||||
local quest = QuestieDB.GetQuest(questId)
|
|
||||||
local isComplete = quest and QuestieDB.IsComplete(questId)
|
|
||||||
|
|
||||||
-- If quest is complete but has a finisher, keep it tracked so arrow can show turn-in location
|
|
||||||
if isComplete == 1 and quest and quest.Finisher then
|
|
||||||
Questie:Debug(Questie.DEBUG_DEVELOP,
|
|
||||||
"[QuestieTracker.RemoveQuestWatch] - Quest complete with finisher, keeping tracked:", questId)
|
|
||||||
-- Still update tracker but don't untrack
|
|
||||||
QuestieCombatQueue:Queue(function()
|
|
||||||
QuestieTracker:Update()
|
|
||||||
end)
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
QuestieTracker:UntrackQuestId(questId)
|
QuestieTracker:UntrackQuestId(questId)
|
||||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieTracker.RemoveQuestWatch] - by Blizzard", questId)
|
Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieTracker.RemoveQuestWatch] - by Blizzard", questId)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieTracker.RemoveQuestWatch] - by Questie")
|
Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieTracker.RemoveQuestWatch] - by Questie")
|
||||||
@@ -2301,11 +2287,10 @@ end
|
|||||||
|
|
||||||
function QuestieTracker:UntrackQuestId(questId)
|
function QuestieTracker:UntrackQuestId(questId)
|
||||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieTracker:UntrackQuestId] - ", questId)
|
Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieTracker:UntrackQuestId] - ", questId)
|
||||||
if not Questie.db.profile.autoTrackQuests then
|
-- Always remove from tracked quests when manually untracking
|
||||||
Questie.db.char.TrackedQuests[questId] = nil
|
Questie.db.char.TrackedQuests[questId] = nil
|
||||||
else
|
-- Also remove from auto-untracked so it doesn't get re-tracked
|
||||||
Questie.db.char.AutoUntrackedQuests[questId] = true
|
Questie.db.char.AutoUntrackedQuests[questId] = nil
|
||||||
end
|
|
||||||
|
|
||||||
if Questie.db.profile.hideUntrackedQuestsMapIcons then
|
if Questie.db.profile.hideUntrackedQuestsMapIcons then
|
||||||
-- Hides objective icons for untracked quests.
|
-- Hides objective icons for untracked quests.
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@
|
|||||||
## Notes-esES: Ayundante de misión
|
## Notes-esES: Ayundante de misión
|
||||||
## Notes-ptBR: Ajudante de missão
|
## Notes-ptBR: Ajudante de missão
|
||||||
## Notes-frFR: Assistant de quête
|
## Notes-frFR: Assistant de quête
|
||||||
## Version: 9.7.4
|
## Version: 9.7.5
|
||||||
## RequiredDeps:
|
## RequiredDeps:
|
||||||
## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu
|
## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu
|
||||||
## SavedVariables: QuestieConfig
|
## SavedVariables: QuestieConfig
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Questie (3.3.5a)
|
# Questie (3.3.5a)
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||
[](https://xurkon.github.io/PE-Questie/)
|
[](https://xurkon.github.io/PE-Questie/)
|
||||||
[](https://www.patreon.com/Xurkon)
|
[](https://www.patreon.com/Xurkon)
|
||||||
|
|||||||
+1
-1
@@ -164,7 +164,7 @@
|
|||||||
<h1>Questie (3.3.5a)</h1>
|
<h1>Questie (3.3.5a)</h1>
|
||||||
<p class="subtitle">Developer documentation for Project Ascension & Project Ebonhold compatibility layers and core engine refinements.</p>
|
<p class="subtitle">Developer documentation for Project Ascension & Project Ebonhold compatibility layers and core engine refinements.</p>
|
||||||
<div style="display: flex; justify-content: center; gap: 10px;">
|
<div style="display: flex; justify-content: center; gap: 10px;">
|
||||||
<code>Version: v9.7.2</code>
|
<code>Version: v9.7.5</code>
|
||||||
<code>Branch: feature/ebonhold-compat</code>
|
<code>Branch: feature/ebonhold-compat</code>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user