v9.9.2 — Final pre-refactor release: update version, changelog, docs, and README

This commit is contained in:
Xurkon
2026-03-04 22:15:23 -06:00
parent 87d0b0c3bc
commit 89c3b3173d
5 changed files with 145 additions and 9 deletions
+38
View File
@@ -1,5 +1,43 @@
# Changelog
## v9.9.2 — Final Pre-Refactor Release
> ⚠️ **This is the final stable release before a major architectural refactoring.** All active features and quest data from previous releases are preserved. Future versions will introduce breaking changes to improve multi-server support, the database plugin system, and the zone registration API.
### New Ebonhold Quests
#### 🗺️ Azeroth
| ID | Quest | Zone | Type |
|----|-------|------|------|
| 50187 | Western Plaguelands Trophy | Western Plaguelands | Kill 1 Rare (tracked rares) |
### NPC Data
- **classicNpcDB.lua** / **EbonholdNpcDB.lua**: Injected spawn coordinates for Western Plaguelands rare NPCs to support quest 50187.
### Documentation
- Completed a full deep-dive code audit of the entire addon codebase.
- Identified areas for improvement including server-agnostic design, version detection improvements, a plugin architecture for custom server databases, configurable level caps, and several code quality issues.
- Audit findings exported to the project research folder.
---
## v9.9.1
### New Ebonhold Quests
#### 🗺️ Azeroth
| ID | Quest | Zone | Type |
|----|-------|------|------|
| 50057 | Brood of the Black Flight | Burning Steppes | Kill 30 Dragonkin (10 NPCs tracked) |
### NPC Data
- **EbonholdNpcDB.lua**: Injected spawn coordinates for 10 Dragonkin NPCs in Burning Steppes (IDs 7040-7049) to support quest 50057.
## v9.9.0
### New Ebonhold Quests
@@ -4,6 +4,16 @@ EbonholdDB.npcData = EbonholdDB.npcData or {
[32398] = { "King Ping", nil, nil, 71, 71, 2, { [495] = { { 25.6, 69.2 }, { 26.0, 63.8 }, { 26.6, 63.2 }, { 30.4, 71.4 }, { 30.8, 56.4 }, { 30.8, 70.8 }, { 31.0, 71.6 }, { 31.2, 56.6 }, { 31.2, 57.6 }, { 31.6, 77.4 }, { 31.8, 75.4 }, { 32.2, 75.8 }, { 32.6, 78.8 }, { 33.0, 80.2 }, { 33.4, 80.6 }, { 33.6, 80.2 }, { 33.6, 81.0 } } }, nil, 495, nil, nil, 12 },
[32377] = { "Perobas the Bloodthirster", nil, nil, 71, 71, 2, { [495] = { { 47.8, 5.8 }, { 50.0, 4.6 }, { 50.4, 4.4 }, { 50.6, 4.2 }, { 52.4, 10.8 }, { 53.0, 11.8 }, { 53.2, 12.6 }, { 53.8, 11.8 }, { 60.0, 19.8 }, { 60.6, 21.0 }, { 60.8, 22.0 }, { 61.0, 19.8 }, { 68.2, 17.8 }, { 68.4, 17.2 }, { 68.6, 16.8 }, { 69.4, 14.2 }, { 71.2, 13.2 }, { 71.2, 14.6 }, { 71.4, 14.0 }, { 71.6, 14.4 }, { 72.2, 13.4 } } }, nil, 495, nil, nil, 12 },
[32386] = { "Vigdis the War Maiden", nil, nil, 71, 71, 2, { [495] = { { 68.4, 46.0 }, { 68.4, 58.4 }, { 68.6, 48.6 }, { 68.8, 47.8 }, { 68.8, 59.0 }, { 70.0, 50.4 }, { 70.0, 56.8 }, { 70.0, 57.6 }, { 70.4, 49.2 }, { 70.6, 50.2 }, { 71.0, 52.2 }, { 71.0, 56.8 }, { 71.2, 55.4 }, { 71.2, 55.6 }, { 71.6, 44.4 }, { 71.6, 45.6 }, { 71.8, 47.0 }, { 72.2, 42.8 }, { 72.2, 48.6 }, { 72.2, 52.6 }, { 72.4, 44.8 }, { 72.4, 50.6 }, { 72.6, 46.0 }, { 72.6, 52.4 }, { 72.6, 61.2 }, { 72.8, 39.2 }, { 72.8, 41.0 }, { 72.8, 44.4 }, { 72.8, 49.0 }, { 72.8, 51.4 }, { 72.8, 61.8 }, { 73.0, 40.2 }, { 73.0, 48.0 }, { 73.2, 44.6 }, { 73.2, 53.2 }, { 73.6, 45.4 }, { 73.8, 49.6 }, { 73.8, 61.4 }, { 74.0, 52.6 }, { 74.2, 45.8 }, { 74.2, 47.8 }, { 74.2, 59.2 }, { 74.4, 54.6 }, { 74.4, 60.2 }, { 74.6, 50.0 }, { 74.6, 51.4 }, { 74.6, 54.8 }, { 74.8, 45.2 }, { 74.8, 56.6 }, { 74.8, 58.4 }, { 75.0, 48.2 }, { 75.0, 52.6 }, { 75.6, 45.2 }, { 76.2, 42.8 } } }, nil, 495, nil, nil, 12 },
[7040] = { "Black Dragonspawn", nil, nil, 52, 53, 1, { [46] = { { 85.41, 27.2 }, { 83.57, 28.6 }, { 56.96, 61.45 }, { 87.21, 39.79 }, { 90.47, 37.34 }, { 82.35, 26.62 }, { 58.26, 64.5 }, { 87.2, 35.15 }, { 90.44, 38.44 }, { 75.54, 62.52 }, { 86.97, 28.34 }, { 88.48, 36.45 }, { 56.1, 64.35 }, { 92.19, 54.61 }, { 93.86, 55.37 }, { 92.78, 57.53 }, { 90.5, 54.29 }, { 56.33, 60.61 }, { 90.47, 52.28 }, { 86.82, 26.3 } } }, nil, 46, nil, nil, 103 },
[7041] = { "Black Wyrmkin", nil, nil, 53, 54, 1, { [46] = { { 88.37, 39.97 }, { 77.87, 62.23 }, { 58.44, 60.82 }, { 88.93, 37.64 }, { 77.32, 61.9 }, { 76.7, 62.5 }, { 89.19, 35.49 }, { 57.51, 62.19 }, { 84.67, 28.67 }, { 84.71, 26.89 }, { 83.99, 26.9 }, { 91.38, 55.93 }, { 91.8, 53.16 }, { 92.77, 53.76 }, { 91.6, 50.35 }, { 88.29, 37.47 }, { 57.59, 60.56 }, { 77.14, 61.57 } } }, nil, 46, nil, nil, 103 },
[7042] = { "Flamescale Dragonspawn", nil, nil, 56, 57, 1, { [46] = { { 20.84, 45.04 }, { 30.68, 61.44 }, { 22.3, 45.17 }, { 20.17, 48.79 }, { 33.8, 71.2 }, { 32.92, 66.48 }, { 34.68, 48.65 }, { 31.69, 66.49 }, { 32.59, 71.06 }, { 23.41, 47.57 }, { 31.19, 59.11 }, { 34.47, 68.92 } } }, nil, 46, nil, nil, 103 },
[7043] = { "Flamescale Wyrmkin", nil, nil, 57, 58, 1, { [46] = { { 29.98, 60.53 }, { 37.2, 49.1 }, { 32.54, 62.37 }, { 32.36, 60.6 }, { 30.03, 62.81 }, { 21.44, 46.43 }, { 19.91, 45.36 }, { 33.7, 69.84 }, { 32.3, 69.47 }, { 30.91, 62.33 }, { 31.44, 61.33 }, { 36.9, 47.25 }, { 21.65, 47.41 }, { 35.75, 49.08 }, { 36.09, 48.57 } } }, nil, 46, nil, nil, 103 },
[7044] = { "Black Drake", nil, nil, 50, 52, 1, { [46] = { { 89.94, 43.86 }, { 84.9, 28.47 }, { 89.5, 56.96 } } }, { [46] = { { { 89.96, 43.86 }, { 89.99, 44.74 }, { 90.07, 46.4 }, { 89.95, 48.47 }, { 90.54, 49.75 }, { 90.66, 50.69 }, { 90.68, 51.68 }, { 90.65, 52.73 }, { 90.02, 53.21 }, { 88.83, 53.58 }, { 89.03, 50.61 }, { 89.19, 49.39 }, { 89.45, 47.86 }, { 89.26, 46.76 }, { 89.02, 45.61 }, { 89.53, 44.81 }, { 89.83, 44.1 } }, { { 84.91, 28.51 }, { 85.56, 29.06 }, { 86.35, 29.73 }, { 87.56, 30.77 }, { 88.9, 31.47 }, { 89.65, 32.07 }, { 90.27, 33.21 }, { 90.62, 34.25 }, { 90.31, 35.58 }, { 89.95, 35.87 }, { 89.56, 35.54 }, { 88.91, 34.27 }, { 87.76, 32.12 }, { 86.74, 30.92 }, { 86.02, 30.68 }, { 85.66, 29.86 }, { 85.12, 28.91 } }, { { 89.02, 57.48 }, { 87.82, 58.51 }, { 87.0, 58.89 }, { 85.76, 59.23 }, { 85.0, 59.12 }, { 84.04, 58.85 }, { 83.4, 58.53 }, { 82.87, 58.41 }, { 82.43, 58.81 }, { 81.98, 59.75 }, { 81.96, 60.38 }, { 82.31, 61.04 }, { 82.66, 61.33 }, { 83.13, 61.42 }, { 83.8, 61.26 }, { 84.5, 61.08 }, { 85.1, 60.93 }, { 85.52, 60.7 }, { 86.17, 60.03 }, { 87.45, 59.17 }, { 89.49, 58.05 }, { 90.89, 58.15 }, { 91.89, 58.36 }, { 93.16, 57.98 }, { 93.75, 57.24 }, { 93.85, 56.88 }, { 93.89, 56.36 }, { 93.71, 55.73 }, { 93.32, 55.0 }, { 93.0, 54.44 }, { 92.27, 53.6 }, { 91.95, 53.03 }, { 91.74, 52.69 }, { 91.23, 52.48 }, { 90.74, 52.76 }, { 89.89, 54.41 }, { 89.78, 55.27 }, { 89.49, 56.53 } } } }, 46, nil, nil, 103 },
[7045] = { "Scalding Drake", nil, nil, 53, 55, 1, { [46] = { { 60.28, 59.02 }, { 63.73, 58.42 } } }, { [46] = { { { 60.18, 59.02 }, { 60.13, 59.32 }, { 60.02, 59.68 }, { 59.67, 60.38 }, { 58.9, 61.33 }, { 57.97, 62.36 }, { 57.46, 63.02 }, { 56.95, 64.35 }, { 55.79, 63.79 }, { 55.23, 63.83 }, { 54.46, 63.8 }, { 53.51, 63.66 }, { 51.91, 63.62 }, { 51.46, 63.79 }, { 50.95, 63.56 }, { 50.49, 62.87 }, { 50.29, 62.6 }, { 50.09, 62.27 }, { 49.99, 62.04 }, { 49.74, 61.59 }, { 48.89, 60.43 }, { 49.46, 59.95 }, { 49.9, 59.25 }, { 50.05, 58.81 }, { 50.42, 58.39 }, { 50.87, 58.31 }, { 51.05, 58.04 }, { 51.72, 57.47 }, { 52.35, 57.39 }, { 52.58, 57.43 }, { 53.53, 57.55 }, { 54.36, 58.41 }, { 54.63, 58.96 }, { 55.16, 59.32 }, { 55.74, 59.18 }, { 56.21, 58.98 }, { 56.72, 58.49 }, { 57.95, 58.86 }, { 58.45, 59.35 }, { 59.09, 59.64 }, { 59.95, 59.65 } }, { { 63.77, 58.53 }, { 64.46, 59.11 }, { 65.35, 59.82 }, { 65.8, 60.29 }, { 66.53, 60.57 }, { 66.87, 60.26 }, { 67.46, 59.59 }, { 68.03, 59.47 }, { 68.4, 59.38 }, { 68.77, 59.3 }, { 69.26, 59.24 }, { 69.86, 58.96 }, { 71.01, 58.59 }, { 71.65, 58.59 }, { 72.37, 59.25 }, { 72.45, 58.33 }, { 71.98, 57.62 }, { 71.52, 57.81 }, { 70.81, 58.33 }, { 69.99, 58.71 }, { 68.45, 59.34 }, { 68.08, 59.45 }, { 67.54, 59.46 }, { 66.7, 59.47 }, { 65.85, 59.48 }, { 65.27, 59.42 }, { 64.78, 59.23 }, { 64.3, 58.88 } } } }, 46, nil, nil, 103 },
[7046] = { "Searscale Drake", nil, nil, 56, 58, 1, { [46] = { { 17.44, 52.46 }, { 32.02, 61.97 }, { 24.54, 67.17 } } }, { [46] = { { { 17.32, 52.66 }, { 17.01, 53.57 }, { 17.04, 55.22 }, { 17.38, 56.98 }, { 17.5, 57.64 }, { 18.0, 58.4 }, { 18.72, 58.97 }, { 19.33, 59.4 }, { 19.75, 59.56 }, { 19.06, 59.25 }, { 17.83, 58.1 }, { 17.43, 57.24 }, { 17.38, 56.3 }, { 17.32, 54.62 }, { 17.72, 53.02 }, { 18.02, 51.2 }, { 17.46, 49.27 }, { 17.71, 48.01 }, { 18.11, 47.13 }, { 18.58, 46.92 }, { 18.74, 47.4 }, { 18.85, 48.27 }, { 18.87, 48.73 }, { 18.89, 49.72 }, { 18.44, 50.69 }, { 17.62, 52.07 } } } }, 46, nil, nil, 103 },
[7047] = { "Black Broodling", nil, nil, 51, 52, 0, { [46] = { { 86.92, 30.55 }, { 84.87, 31.86 }, { 91.86, 38.48 }, { 81.01, 28.2 }, { 91.67, 35.54 }, { 81.37, 26.48 }, { 88.32, 29.78 }, { 87.8, 33.45 }, { 91.59, 33.36 }, { 89.47, 43.89 }, { 90.53, 45.22 }, { 90.48, 50.92 }, { 90.57, 47.39 }, { 84.59, 62.1 } } }, nil, 46, nil, nil, 103 },
[7048] = { "Scalding Broodling", nil, nil, 53, 54, 0, { [46] = { { 57.59, 31.63 }, { 38.74, 46.15 }, { 61.13, 31.24 }, { 55.73, 64.44 }, { 63.78, 57.27 }, { 73.18, 27.12 }, { 70.94, 62.13 }, { 59.86, 63.91 }, { 37.81, 62.51 }, { 72.4, 28.17 }, { 34.62, 55.43 }, { 78.39, 27.5 }, { 40.92, 48.81 }, { 52.67, 26.04 }, { 59.19, 32.29 }, { 64.36, 60.61 } } }, nil, 46, nil, nil, 103 },
[7049] = { "Flamescale Broodling", nil, nil, 55, 56, 0, { [46] = { { 24.82, 47.18 }, { 24.33, 67.37 }, { 28.66, 57.82 }, { 22.48, 68.9 }, { 23.35, 70.57 }, { 22.32, 58.87 }, { 25.37, 45.74 }, { 16.96, 55.36 } } }, nil, 46, nil, nil, 103 },
}
-- Backward compatibility
+95 -7
View File
@@ -2,6 +2,63 @@
local EbonholdDB = QuestieLoader:CreateModule("EbonholdDB")
EbonholdDB.questData = EbonholdDB.questData or {
-- Quest 50023: Elemental Frostfall
-- Kill 30 elementals in Winterspring
[50023] = {
[1] = "Elemental Frostfall", -- Quest name
[2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}}
[4] = 55, -- Min level
[5] = 60, -- Quest level
[17] = 618, -- Zone (Winterspring)
[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 30 Elementals in Winterspring"
},
[10] = {
nil, -- [1] creatureObjective (not used)
nil, -- [2] objectObjective (not used)
nil, -- [3] itemObjective (not used)
nil, -- [4] reputationObjective (not used)
{ -- [5] killCreditObjective
{
-- 2 elemental NPCs in Winterspring
{ 14457, 14458 },
14457, -- RootId: Princess Tempestria
"Elemental slain"
}
}
},
[30] = 30, -- Kill count
},
-- Quest 50057: Brood of the Black Flight
-- Started by object 600600
[50057] = {
[1] = "Brood of the Black Flight", -- Quest name
[2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}}
[4] = 55, -- Quest level
[5] = 48, -- Min level
[17] = 46, -- Zone (Burning Steppes)
[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 Dragonkin in the Burning Steppes."
},
[10] = {
nil, -- [1] creatureObjective
nil, -- [2] objectObjective
nil, -- [3] itemObjective
nil, -- [4] reputationObjective
{ -- [5] killCreditObjective
{
{ 7040, 7041, 7042, 7043, 7044, 7045, 7046, 7047, 7048, 7049 }, -- IdList
7040, -- RootId (Black Dragonspawn)
"Dragonkin slain" -- Text
}
}
},
[30] = 30, -- Kill count
},
-- Quest 50026: Elemental Balance
-- Started by object 600600, kills of NPCs 17156 or 17157 count (both are elementals)
[50026] = {
@@ -121,6 +178,36 @@ EbonholdDB.questData = EbonholdDB.questData or {
[30] = 1, -- Kill count (only 1 rare needed)
},
-- Quest 50187: Western Plaguelands Trophy
-- Kill 1 rare in Western Plaguelands
[50187] = {
[1] = "Western Plaguelands Trophy", -- Quest name
[2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}}
[4] = 50, -- Min level
[5] = 55, -- Quest level
[17] = 28, -- Zone (Western Plaguelands)
[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 Western Plaguelands"
},
[10] = {
nil, -- [1] creatureObjective (not used)
nil, -- [2] objectObjective (not used)
nil, -- [3] itemObjective (not used)
nil, -- [4] reputationObjective (not used)
{ -- [5] killCreditObjective
{
-- 11 rare NPCs in Western Plaguelands
{ 1837, 1838, 1839, 1841, 1843, 1844, 1847, 1848, 1850, 1851, 1885 },
1848, -- RootId: Lord Maldazzar (representative rare)
"Rare slain"
}
}
},
[30] = 1, -- Kill count (only 1 rare needed)
},
-- Quest 50160: Redridge Trophy
-- Kill 1 rare in Redridge Mountains
[50160] = {
@@ -1616,19 +1703,20 @@ EbonholdDB.questData = EbonholdDB.questData or {
"Kill Sandstone Giants"
},
[10] = {
nil, -- [1] creatureObjective (not used)
nil, -- [2] objectObjective (not used)
nil, -- [3] itemObjective (not used)
nil, -- [4] reputationObjective (not used)
{ -- [5] killCreditObjective
nil, -- [1] creatureObjective (not used)
nil, -- [2] objectObjective (not used)
nil, -- [3] itemObjective (not used)
nil, -- [4] reputationObjective (not used)
{ -- [5] killCreditObjective
{
{ 5469 }, -- All NPC IDs
5469, -- Root ID (Icon/Text)
{ 5466, 5467, 5469, 5470 }, -- All giant NPC IDs: Coast Strider, Deep Dweller, Dune Smasher, Raging Dune Smasher
5469, -- Root ID (Icon/Text)
"Sandstone Giants slain"
}
}
},
[30] = 30, -- Objective Count
},
}
+1 -1
View File
@@ -6,7 +6,7 @@
## Notes-esES: Ayundante de misión
## Notes-ptBR: Ajudante de missão
## Notes-frFR: Assistant de quête
## Version: 9.9.0
## Version: 9.9.2
## RequiredDeps:
## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu
## SavedVariables: QuestieConfig
+1 -1
View File
@@ -2,7 +2,7 @@
# Questie (3.3.5a)
![Version](https://img.shields.io/badge/version-v9.9.0-blue.svg?style=for-the-badge)
![Version](https://img.shields.io/badge/version-v9.9.2-blue.svg?style=for-the-badge)
![Downloads](https://img.shields.io/github/downloads/Xurkon/PE-Questie/total?style=for-the-badge&color=e67e22)
[![Documentation](https://img.shields.io/badge/Documentation-View%20Docs-58a6ff?style=for-the-badge)](https://xurkon.github.io/PE-Questie/)
[![Patreon](https://img.shields.io/badge/Patreon-F96854?style=for-the-badge&logo=patreon&logoColor=white)](https://www.patreon.com/Xurkon)