-- The database under ./db is autogenerated. Changing the entries there -- will result in a data loss whenever a new database gets extracted. -- To be able to customize and/or fix entries that aren't yet detected -- by the extractor logic, this file here can be used to save overwrites. -- -- This pack is the TurtleWoW database with the Octo pack folded in, so this -- file carries three things in order: -- 1. records the Octo DB has that the TurtleWoW build does not -- 2. the Octo pack's own corrections -- 3. the TurtleWoW pack's own corrections -- Records come first so that anything indexing into them further down finds -- them present. do -- Octo-only records, carried over from the pfQuest-octo database -- 24 entries where the Octo DB holds real data the Kludge Bureau turtle build -- does not: either it has no entry for that id, or only a "_" placeholder. -- Kept here rather than patched into the autogenerated files under ./db, so a -- future database refresh cannot silently drop them. -- quests: 1 absent from the turtle build, 0 only a placeholder there pfDB["quests"]["data-turtle"][1704] = { ["class"] = 1, ["end"] = { ["U"] = { 6169 }, }, ["lvl"] = 28, ["min"] = 20, ["pre"] = { 1701 }, ["race"] = 589, ["start"] = { ["U"] = { 5413 }, }, } -- units: 6 absent from the turtle build, 0 only a placeholder there pfDB["units"]["data-turtle"][5327] = { ["coords"] = { [1] = { 28.1, 59.4, 357, 300 }, [2] = { 26, 59.2, 357, 300 }, [3] = { 34, 56.3, 357, 300 }, [4] = { 35.4, 52.2, 357, 300 }, [5] = { 35.9, 51.6, 357, 300 }, [6] = { 37.2, 50, 357, 300 }, [7] = { 36, 48.6, 357, 300 }, [8] = { 39.6, 48.4, 357, 300 }, [9] = { 37.9, 45.8, 357, 300 }, [10] = { 39.7, 45.2, 357, 300 }, [11] = { 36.8, 44.1, 357, 300 }, [12] = { 37.7, 42.2, 357, 300 }, [13] = { 36.8, 41.9, 357, 300 }, [14] = { 33.2, 32.1, 357, 300 }, }, ["lvl"] = "44-45", ["rnk"] = "1", } pfDB["units"]["data-turtle"][7044] = { ["coords"] = { [1] = { 89.9, 43.9, 46, 500 }, [2] = { 91.5, 37.7, 46, 500 }, [3] = { 84.9, 28.5, 46, 500 }, }, ["lvl"] = "50-52", ["rnk"] = "1", } pfDB["units"]["data-turtle"][11661] = { ["coords"] = { [1] = { 32.3, 48.9, 2717, 7200 }, [2] = { 32.5, 47.1, 2717, 7200 }, }, ["lvl"] = "62", ["rnk"] = "1", } pfDB["units"]["data-turtle"][12259] = { ["coords"] = { [1] = { 32.8, 48, 2717, 604800 }, }, ["lvl"] = "63", ["rnk"] = "3", } pfDB["units"]["data-turtle"][12360] = { ["coords"] = { [1] = { 31, 62.1, 141, 120 }, [2] = { 25.4, 50, 141, 300 }, [3] = { 66.5, 73, 1657, 120 }, [4] = { 39.4, 14.9, 1657, 300 }, }, ["fac"] = "AH", ["lvl"] = "1-2", } pfDB["units"]["data-turtle"][62229] = { ["coords"] = {}, ["lvl"] = "34-35", } -- objects: 5 absent from the turtle build, 0 only a placeholder there pfDB["objects"]["data-turtle"][944] = { ["coords"] = { [1] = { 39.1, 91.4, 139, 25 }, }, ["fac"] = "AH", } pfDB["objects"]["data-turtle"][21145] = { ["coords"] = { [1] = { 30.7, 62.8, 141, 300 }, [2] = { 64.7, 76.3, 1657, 300 }, }, } pfDB["objects"]["data-turtle"][181021] = { ["coords"] = { [1] = { 54.1, 34.6, 1, 120 }, [2] = { 45.5, 12.1, 14, 120 }, [3] = { 46.4, 9.2, 14, 120 }, [4] = { 30.9, 57.1, 141, 120 }, [5] = { 31.2, 57.1, 141, 120 }, [6] = { 31.6, 57.1, 141, 120 }, [7] = { 36.1, 54.4, 141, 120 }, [8] = { 35.2, 54.4, 141, 120 }, [9] = { 30.9, 53.6, 141, 120 }, [10] = { 31.2, 53.5, 141, 120 }, [11] = { 31.5, 53.5, 141, 120 }, [12] = { 38.9, 29.3, 215, 120 }, [13] = { 18.8, 84.2, 1537, 120 }, [14] = { 20.4, 82.3, 1537, 120 }, [15] = { 16.9, 80.7, 1537, 120 }, [16] = { 21.9, 80.4, 1537, 120 }, [17] = { 18.4, 78.7, 1537, 120 }, [18] = { 20, 76.8, 1537, 120 }, [19] = { 58.9, 13.7, 1537, 120 }, [20] = { 58.9, 13.7, 1537, 900 }, [21] = { 39.5, 12.4, 1537, 120 }, [22] = { 39.5, 12.4, 1537, 900 }, [23] = { 49.1, 95.4, 1637, 120 }, [24] = { 52.5, 84.3, 1637, 120 }, [25] = { 46.2, 65.6, 1637, 120 }, [26] = { 47.3, 65.5, 1637, 120 }, [27] = { 45.6, 64.2, 1637, 120 }, [28] = { 46.1, 62.9, 1637, 120 }, [29] = { 47, 62.7, 1637, 120 }, [30] = { 17.8, 60.6, 1637, 120 }, [31] = { 44.7, 61.5, 1638, 120 }, [32] = { 66.1, 49, 1657, 120 }, [33] = { 67.5, 49, 1657, 120 }, [34] = { 69.1, 48.9, 1657, 120 }, [35] = { 90.7, 35.8, 1657, 120 }, [36] = { 86.5, 35.7, 1657, 120 }, [37] = { 65.8, 31.8, 1657, 120 }, [38] = { 67.2, 31.8, 1657, 120 }, [39] = { 68.7, 31.7, 1657, 120 }, }, } pfDB["objects"]["data-turtle"][186250] = { ["coords"] = { [1] = { 30.4, 63, 141, 300 }, [2] = { 30.3, 62.9, 141, 300 }, [3] = { 63.4, 77.5, 1657, 300 }, [4] = { 62.9, 77, 1657, 300 }, }, } pfDB["objects"]["data-turtle"][1000373] = { ["coords"] = { [1] = { 49.6, 73.5, 10, 25 }, [2] = { 21.2, 69.6, 10, 25 }, [3] = { 22.2, 69, 10, 25 }, [4] = { 22, 67.8, 10, 25 }, [5] = { 20.8, 67.4, 10, 25 }, [6] = { 73, 53.8, 10, 25 }, [7] = { 73.4, 53.2, 10, 25 }, [8] = { 75.7, 42.3, 10, 25 }, [9] = { 16.5, 71.2, 11, 25 }, [10] = { 20.5, 69.1, 11, 25 }, [11] = { 20, 69, 11, 25 }, [12] = { 41.7, 88.1, 12, 25 }, [13] = { 41.1, 87.3, 12, 25 }, [14] = { 42.6, 86.8, 12, 25 }, [15] = { 41.9, 86.8, 12, 25 }, [16] = { 40.8, 86.7, 12, 25 }, [17] = { 32.7, 86.4, 12, 25 }, [18] = { 41.1, 86.2, 12, 25 }, [19] = { 42.1, 86, 12, 25 }, [20] = { 41.5, 85.9, 12, 25 }, [21] = { 32, 85.4, 12, 25 }, [22] = { 33.3, 85.4, 12, 25 }, [23] = { 32.6, 84.4, 12, 25 }, [24] = { 69.3, 80.2, 12, 25 }, [25] = { 70.1, 79.3, 12, 25 }, [26] = { 68.9, 78.9, 12, 25 }, [27] = { 69.4, 78.2, 12, 25 }, [28] = { 34.3, 57.8, 12, 25 }, [29] = { 34.1, 51.4, 12, 25 }, [30] = { 35, 51.2, 12, 25 }, [31] = { 35.6, 50.5, 12, 25 }, [32] = { 33.9, 50.5, 12, 25 }, [33] = { 34.9, 50.5, 12, 25 }, [34] = { 34.9, 50.2, 12, 25 }, [35] = { 34.9, 49.9, 12, 25 }, [36] = { 54.1, 49.7, 12, 25 }, [37] = { 33.8, 49.5, 12, 25 }, [38] = { 33.7, 48.3, 12, 25 }, [39] = { 53.9, 47.8, 12, 25 }, [40] = { 63, 95.7, 14, 25 }, [41] = { 60.8, 90.2, 14, 25 }, [42] = { 55.4, 34.5, 14, 25 }, [43] = { 43.6, 30.1, 14, 25 }, [44] = { 48.4, 15.7, 14, 25 }, [45] = { 42.8, 15.1, 14, 25 }, [46] = { 42.1, 8.9, 14, 25 }, [47] = { 41.6, 42.6, 16, 300 }, [48] = { 42.4, 93.2, 17, 300 }, [49] = { 78.1, 47, 17, 25 }, [50] = { 77, 44.2, 17, 25 }, [51] = { 46.1, 38.1, 17, 25 }, [52] = { 46.4, 38.1, 17, 25 }, [53] = { 46.5, 37.9, 17, 25 }, [54] = { 45.9, 37.5, 17, 25 }, [55] = { 46.5, 37.4, 17, 25 }, [56] = { 46.2, 37.1, 17, 25 }, [57] = { 46, 37.1, 17, 25 }, [58] = { 60.9, 24.7, 17, 300 }, [59] = { 54, 20.7, 17, 25 }, [60] = { 35, 87.8, 33, 25 }, [61] = { 60.3, 87.6, 36, 25 }, [62] = { 59.6, 86, 36, 25 }, [63] = { 59.2, 85.6, 36, 25 }, [64] = { 60, 85.5, 36, 25 }, [65] = { 83.1, 80.4, 36, 25 }, [66] = { 40.5, 19.3, 36, 25 }, [67] = { 38.1, 13.6, 36, 25 }, [68] = { 51.1, 23.5, 40, 25 }, [69] = { 52, 22.8, 40, 25 }, [70] = { 50.5, 21.8, 40, 25 }, [71] = { 51.2, 20.5, 40, 25 }, [72] = { 58.8, 18.2, 40, 25 }, [73] = { 58, 18.2, 40, 25 }, [74] = { 20.4, 46.2, 44, 25 }, [75] = { 63.1, 58.6, 45, 25 }, [76] = { 63.2, 58.2, 45, 25 }, [77] = { 61.6, 57.7, 45, 25 }, [78] = { 61, 57.6, 45, 25 }, [79] = { 55.4, 40.3, 45, 25 }, [80] = { 55, 39.6, 45, 25 }, [81] = { 32.4, 29, 45, 25 }, [82] = { 32.5, 28.3, 45, 25 }, [83] = { 36, 52, 85, 25 }, [84] = { 35.6, 52, 85, 25 }, [85] = { 35.5, 51.7, 85, 25 }, [86] = { 36.9, 51.6, 85, 25 }, [87] = { 34.7, 51.6, 85, 25 }, [88] = { 35.4, 51.3, 85, 25 }, [89] = { 36.1, 51.3, 85, 25 }, [90] = { 36.9, 50.7, 85, 25 }, [91] = { 35.3, 50.4, 85, 25 }, [92] = { 36.1, 50.4, 85, 25 }, [93] = { 34.9, 50.3, 85, 25 }, [94] = { 36.9, 50, 85, 25 }, [95] = { 35.3, 49.6, 85, 25 }, [96] = { 36.1, 49.6, 85, 25 }, [97] = { 34.7, 49.4, 85, 25 }, [98] = { 36.9, 49.4, 85, 25 }, [99] = { 23.3, 61.3, 141, 25 }, [100] = { 27.3, 61.1, 141, 25 }, [101] = { 31.2, 56.4, 141, 25 }, [102] = { 23.5, 48.2, 141, 25 }, [103] = { 43.6, 76.3, 148, 25 }, [104] = { 68.3, 19.1, 148, 300 }, [105] = { 44.7, 59.4, 215, 25 }, [106] = { 44.2, 59.4, 215, 25 }, [107] = { 45, 58.7, 215, 25 }, [108] = { 44.3, 58.7, 215, 25 }, [109] = { 44.1, 58.3, 215, 25 }, [110] = { 44.6, 58.1, 215, 25 }, [111] = { 51.1, 38.5, 215, 25 }, [112] = { 47.6, 29.9, 215, 25 }, [113] = { 51.2, 28.4, 215, 25 }, [114] = { 39.9, 25.2, 215, 25 }, [115] = { 45.7, 22.6, 215, 25 }, [116] = { 45.6, 21.4, 215, 25 }, [117] = { 47, 16, 215, 25 }, [118] = { 64.1, 62.4, 267, 25 }, [119] = { 64.7, 62.2, 267, 25 }, [120] = { 63.8, 61.9, 267, 25 }, [121] = { 65.3, 60.8, 267, 25 }, [122] = { 64.3, 60.4, 267, 25 }, [123] = { 53.9, 56.5, 267, 25 }, [124] = { 53.9, 56, 267, 25 }, [125] = { 34.5, 46.9, 267, 25 }, [126] = { 35, 46.9, 267, 25 }, [127] = { 34.1, 46.8, 267, 25 }, [128] = { 35.5, 46.7, 267, 25 }, [129] = { 34.3, 46.2, 267, 25 }, [130] = { 35.9, 46, 267, 25 }, [131] = { 35.7, 45.6, 267, 25 }, [132] = { 34.7, 45.3, 267, 25 }, [133] = { 35.2, 45, 267, 25 }, [134] = { 34.2, 41.3, 267, 25 }, [135] = { 34.9, 41.1, 267, 25 }, [136] = { 35.6, 41.1, 267, 25 }, [137] = { 35.7, 40.6, 267, 25 }, [138] = { 34.2, 40.4, 267, 25 }, [139] = { 34.9, 40.3, 267, 25 }, [140] = { 31.6, 38.5, 267, 25 }, [141] = { 31.3, 38.3, 267, 25 }, [142] = { 30.6, 38.1, 267, 25 }, [143] = { 31.2, 37.2, 267, 25 }, [144] = { 31.6, 37.1, 267, 25 }, [145] = { 30.5, 36.8, 267, 25 }, [146] = { 33.8, 35.5, 267, 25 }, [147] = { 61.6, 25.1, 267, 25 }, [148] = { 61, 23.7, 267, 25 }, [149] = { 60.6, 23.3, 267, 25 }, [150] = { 61.4, 23.2, 267, 25 }, [151] = { 81.5, 18.8, 267, 25 }, [152] = { 22.4, 52.5, 331, 25 }, [153] = { 51.5, 60.6, 357, 300 }, [154] = { 51.5, 60.4, 357, 300 }, [155] = { 51.5, 59.9, 357, 300 }, [156] = { 51.6, 59.6, 357, 300 }, [157] = { 51.5, 59.3, 357, 300 }, [158] = { 49.1, 19.3, 357, 25 }, [159] = { 43.6, 17.6, 357, 25 }, [160] = { 43.7, 16.5, 357, 25 }, [161] = { 44.1, 16.4, 357, 25 }, [162] = { 43.5, 16.3, 357, 25 }, [163] = { 43.7, 16, 357, 25 }, [164] = { 28.2, 24.4, 400, 300 }, [165] = { 31.1, 36.7, 440, 300 }, [166] = { 78.4, 64.7, 490, 300 }, [167] = { 38.3, 12.6, 490, 300 }, [168] = { 37.2, 11.5, 490, 300 }, [169] = { 35.8, 41.3, 493, 25 }, [170] = { 54.5, 49, 1497, 25 }, [171] = { 69.3, 71.3, 1519, 25 }, [172] = { 37, 67, 1519, 25 }, [173] = { 33.8, 64.6, 1519, 25 }, [174] = { 35.7, 62.9, 1519, 25 }, [175] = { 55.1, 59.3, 1537, 25 }, [176] = { 36.3, 83.3, 1637, 25 }, [177] = { 49.8, 41.2, 1638, 25 }, [178] = { 78.4, 28.5, 1638, 25 }, [179] = { 77.7, 22.4, 1638, 25 }, [180] = { 29.4, 69, 1657, 25 }, [181] = { 48.7, 68.3, 1657, 25 }, [182] = { 67.3, 45.4, 1657, 25 }, [183] = { 30.1, 6.3, 1657, 25 }, [184] = { 36.2, 93.5, 3478, 25 }, [185] = { 35.3, 92.9, 3478, 25 }, [186] = { 36.6, 92.6, 3478, 25 }, [187] = { 36.4, 92.5, 3478, 25 }, [188] = { 35.9, 91.5, 3478, 25 }, [189] = { 36.4, 91.2, 3478, 25 }, [190] = { 89.7, 9.9, 5179, 25 }, [191] = { 90.2, 9.9, 5179, 25 }, [192] = { 89.4, 9.8, 5179, 25 }, [193] = { 90.6, 9.7, 5179, 25 }, [194] = { 89.5, 9.2, 5179, 25 }, [195] = { 91, 9.1, 5179, 25 }, [196] = { 90.8, 8.7, 5179, 25 }, [197] = { 89.9, 8.5, 5179, 25 }, [198] = { 90.4, 8.2, 5179, 25 }, [199] = { 89.5, 5, 5179, 25 }, [200] = { 90.1, 4.9, 5179, 25 }, [201] = { 90.7, 4.8, 5179, 25 }, [202] = { 90.8, 4.4, 5179, 25 }, [203] = { 89.5, 4.2, 5179, 25 }, [204] = { 90.1, 4.1, 5179, 25 }, [205] = { 87.2, 2.6, 5179, 25 }, [206] = { 86.9, 2.4, 5179, 25 }, [207] = { 86.3, 2.2, 5179, 25 }, [208] = { 86.9, 1.4, 5179, 25 }, [209] = { 87.2, 1.3, 5179, 25 }, [210] = { 86.3, 1.1, 5179, 25 }, }, } -- items: 3 absent from the turtle build, 7 only a placeholder there pfDB["items"]["data-turtle"][3053] = { ["U"] = { [2344] = 1.5, [62114] = 1.5, [62115] = 1.5, [62117] = 1.5, [62131] = 1.5, [62132] = 1.5, [62133] = 1.5, [62134] = 1.5, }, } pfDB["items"]["data-turtle"][9425] = { ["U"] = { [4848] = 0.02, [4853] = 0.06, [4855] = 0.02, [4860] = 0.02, [7012] = 0.02, [7023] = 0.02, [7320] = 0.02, [7321] = 0.02, [61364] = 0.02, [61365] = 0.02, [61388] = 0.02, [61389] = 0.02, [61390] = 0.02, [61391] = 0.02, [61417] = 0.02, }, } pfDB["items"]["data-turtle"][50234] = { ["V"] = { [50070] = 0, }, } pfDB["items"]["data-turtle"][50235] = { ["V"] = { [50070] = 0, }, } pfDB["items"]["data-turtle"][50238] = { ["V"] = { [51531] = 0, [51533] = 0, }, } pfDB["items"]["data-turtle"][60002] = { ["V"] = { [50070] = 0, }, } pfDB["items"]["data-turtle"][65029] = { ["V"] = { [50070] = 0, }, } pfDB["items"]["data-turtle"][65031] = { ["V"] = { [50070] = 0, }, } pfDB["items"]["data-turtle"][81187] = { ["V"] = { [50070] = 0, [51531] = 0, [51533] = 0, [61644] = 0, [81057] = 0, }, } pfDB["items"]["data-turtle"][81278] = { ["V"] = { [81063] = 0, }, } -- minimap: 1 absent from the turtle build, 0 only a placeholder there -- minimap and meta are top-level pfDB keys, not nested under a -- "data-turtle" field like the other databases -- see -- db/minimap-turtle.lua and the separate handling at the bottom of -- patchtable.lua. Using the nested path here made this line throw, -- which aborted the rest of the file and silently dropped 166 of the -- corrections below it. pfDB["minimap-turtle"][2041] = { 1513.0, 1003.0 } -- quests-itemreq: 1 absent from the turtle build, 0 only a placeholder there pfDB["quests-itemreq"]["data-turtle"][15209] = { [-177528] = "18987", [-944] = "18987", } end -- ==== corrections carried over from pfQuest-octo ==== do -- custom mounts: strip mass-attributed drop sources (2026-08-11) -- Reported in Discord: a level-6 Venture Co. Lumber Worker (61675) on the -- goblin starter island showed "Onyxian Drake 2.50%" in its loot tooltip, -- and a second report of "mounts on non possible creatures". -- -- Cause is in the extracted data, not the display: 21 custom mount items -- carry ["U"] tables attributing them to 240-977 ordinary units each, at -- uniform 0.5/1/2.5/5 percent chances -- unit 6 (Kobold Vermin) included, -- and 61675 is on four of the lists. The custom mounts with REAL drop -- sources (30000-30007: chargers, crocolisks, two crabs) have 1-7 specific -- units, so the artifact class is unmistakable: everything at >=50 sources -- is a flattened template, not a drop table. Deliberately NOT touched: -- world-drop materials (varied per-unit chances), pickpocket pouches, and -- the jewelcrafting plans seeded into shared recipe pools -- those look -- like server design, not extraction error. -- -- Only ["U"] is removed; vendor/object/container sources stay. Runs before -- patchtable.lua merges data-turtle, so the merged database never carries -- the fake sources. pfExtend rebuilds its cached loot DB via the pack -- version, so tooltips heal on the first login after updating. local massmounts = { 30008, 30009, 30010, 30011, 30012, 30013, 30014, 30015, 30016, 30017, 30018, 30019, 30020, 30021, 30022, 30023, 30024, 30025, 30026, 30040, 81091, } for _, id in pairs(massmounts) do if pfDB["items"]["data-turtle"][id] then pfDB["items"]["data-turtle"][id]["U"] = nil end end end do -- quests: restore missing objective data (2026-08-11, /db checkdb report) -- Reported by a player in Moonwhisper Coast using /db checkdb: four quests -- flagged with no objective data. Two are collect/find quests in the pack -- whose targets exist in the data with spawns exactly where the quest -- happens -- verified by hand per the corrections.lua doctrine (name matches -- the objective text, spawns in the quest's zone): -- 41990 Phasmophobia -- "Collect Maras'ethil Relics in the ruins" -> -- objects 2020322-2020325 "Maras'ethil Relic", all zone 5642 only, -- quest ender Olgra (62899) in 5642 -- 41920 Fallen One Cargo -- "Find Maghan's lost cargo" -> -- object 2020265 "Maghan's Cargo", zone 5642 only -- Applied only where ["obj"] is absent, so real data ships ahead of this. -- (The other two flagged quests: 6570 is a base-database gap corrected in -- pfQuest's own corrections.lua; 40823 is a talk-to quest and legitimately -- draws no pins.) local objfix = { [41990] = { ["O"] = { 2020322, 2020323, 2020324, 2020325 } }, [41920] = { ["O"] = { 2020265 } }, } for qid, obj in pairs(objfix) do local entry = pfDB["quests"]["data-turtle"][qid] if entry and not entry["obj"] then entry["obj"] = obj end end end do -- quests: restore missing objective data (2026-08-12, /db checkdb reports) -- Two more player reports covering 20 log quests around Moonwhisper Coast. -- Same doctrine as the block above: a correction is added only when the -- unit's name matches what the objective text names, and its spawns sit in -- zone 5642 where the quest says they should. Everything here was checked -- by hand against units-turtle.lua coordinates. -- -- Kill quests, targets named in the objective line: -- 41993 Hiding in the Shade -- "Kill the Shadewalkers of An'she's -- Respite" -> Shadewalker Brute/Bonerattler/Sharpshooter -- (62996/62999/63000), one cluster at 41-47,18-23. Suntail (62997) -- and Matriarch Ohanzee (62998) stand among them but are not "the -- Shadewalkers", so they are left out. -- 41994 Shade Mother -- "Kill Matriarch Ohanzee" -> 62998, -- single spawn 42.9,19.2 inside the Shadewalker camp. -- 41948 Wanted: Growlpaw -- Growlpaw -> 63081, single spawn -- 53.6,95.2 in the bearfolk village "in the far south". The stolen -- wares and the turn-in NPC (Chief Defender Hamaam) are not in the -- database -- Moro'gai Village (zone 5649) has zero extracted -- spawns -- so the kill pin is all that can be restored. -- 42011 Collectors of Draenethyst -- "Retrieve one Starshard from the -- Starshard Collectors" -> 62826. -- 42013 The Windhorn Burden -- "Slay the Druids of the Moth and -- Disciples of Lo'sho" -> 63061/63062, Grove of the Moon cluster. -- 42019 The Mighty Elekk -- "Bring an Elekk Tusk" -> Moonwhisper -- Elekk (63008), five roaming spawns ("rare, almost nomadic"). -- 42046 Ritual Ready -- "Bring 7 Stagwing Feathers" -> -- Azureshimmer Stagwing (63036), 24 spawns in the fields. -- -- Collect quests whose objective line names the holders (the collectable -- itself is not in the database, so the named source is pinned instead): -- 42064 Blackroot Hold -- "Recover the stolen expedition supplies -- from the Blackroot furbolgs" -> the nine Blackroot units, both -- camps of their village to the south (y 77-95). -- 42069 The Withered Den -- "Find what caused the expedition to -- wither in the Barrow Den north of Sunsworn Camp" -> Withered -- Ranger/Explorer/Researcher (63152/63153/63154), a tight cluster -- at 53-55,68-69 just north of the camp (56,71) -- the withered -- expedition itself, marking the den. -- -- Reported but NOT fixable from this database (nothing to reference): -- 41997 Taste for Hydra -- no hydra unit carries spawns anywhere. -- 42010 Powerless Runestone -- the Frozen Highborne Vials (Owl Wing -- Thicket ground objects) are not in the object data; the turn-in -- spire (Keeper N'las, 63183) already pins. -- 42066 Ghosts of Maras'ethil -- no artifact objects exist; the ruins -- hold 41990's "Maras'ethil Relic" spawns, but borrowing another -- quest's objects would be a guess, not a verification. -- 42067 Heaven Falling Down -- no Meteor Shard object; Servitor's -- Sanctuary is a named subzone (5670) but spawns only record the -- parent zone, so no Fallen One cluster can be verified as it. -- 41909 Glowing Draenethyst Cluster -- no text, no start, no end: the -- entry is an id and levels, nothing more. -- 41912 An Ill Omen / 41944 The Long Hunt -- pure deliveries, and their -- Moro'gai Village turn-in NPCs are part of the zone-5649 gap. -- 40823 / 42049 / 6823 -- talk-to or reputation quests; no -- objective data is correct for them. -- 6570 Emberstrife -- vanilla-database gap, already corrected -- in pfQuest's own corrections.lua (2026-08-11). local objfix = { [41993] = { ["U"] = { 62996, 62999, 63000 } }, [41994] = { ["U"] = { 62998 } }, [41948] = { ["U"] = { 63081 } }, [42011] = { ["U"] = { 62826 } }, [42013] = { ["U"] = { 63061, 63062 } }, [42019] = { ["U"] = { 63008 } }, [42046] = { ["U"] = { 63036 } }, [42064] = { ["U"] = { 62786, 62787, 62788, 62789, 62790, 62791, 62792, 62793, 63092 } }, [42069] = { ["U"] = { 63152, 63153, 63154 } }, } for qid, obj in pairs(objfix) do local entry = pfDB["quests"]["data-turtle"][qid] if entry and not entry["obj"] then entry["obj"] = obj end end end do -- quests: restore missing objective data in bulk (2026-08-12, 1.0.8 audit) -- Result of the full-database audit: of 6,889 merged quests, 2,580 carry no -- ["obj"]. 1,265 are talk/delivery texts and 9 reputation grinds (no -- objectives is CORRECT for them), 39 are deprecated, and 659 name nothing -- that exists in the database (the genuinely-absent class). The remainder -- went through a name-match pipeline holding the same doctrine as the -- blocks above -- a unit/item name from the database appearing in the -- quest's own objective text, spawns/sources verified, quest enders and -- location mentions excluded -- and every surviving row was reviewed by -- hand. 56 ship here; 268 more had matches but not proof (object-only -- matches, cross-zone name reuse, ambiguous intent) and are documented in -- the audit report rather than guessed at. -- Items ship only when their own drop-source table intersects units named -- in the same text, which is what keeps carried delivery items out. -- Applied only where ["obj"] is absent, so real data ships ahead of this. local objfix = { [2] = { ["I"] = { 16305 } }, -- Sharptalon's Claw [23] = { ["I"] = { 16303 } }, -- Ursangous's Paw [24] = { ["I"] = { 16304 } }, -- Shadumbra's Head [269] = { ["U"] = { 288 } }, -- Seeking Wisdom [281] = { ["U"] = { 285 } }, -- Reclaiming Goods [285] = { ["U"] = { 285 } }, -- Search More Hovels [361] = { ["U"] = { 1656 } }, -- A Letter Undelivered [636] = { ["U"] = { 2755 } }, -- Legends of the Earth [770] = { ["U"] = { 3056 } }, -- The Demon Scarred Cloak [883] = { ["I"] = { 5099 } }, -- Lakota'mani [884] = { ["I"] = { 5102 } }, -- Owatanka [885] = { ["I"] = { 5103 } }, -- Washte Pawne [1098] = { ["U"] = { 3849 } }, -- Deathstalkers in Shadowfang [1265] = { ["U"] = { 4966 } }, -- The Missing Diplomat [2969] = { ["U"] = { 5278 } }, -- Freedom for All Creatures [2986] = { ["U"] = { 5901 } }, -- Call of Water [3446] = { ["U"] = { 14834 } }, -- Into the Depths [4863] = { ["U"] = { 10301 } }, -- Enraged Wildkin [4866] = { ["U"] = { 10596 } }, -- Mother's Milk [5048] = { ["U"] = { 10778 } }, -- Good Natured Emma [5049] = { ["U"] = { 10778 } }, -- The Jeremiah Blues [6000] = { ["U"] = { 6122 } }, -- Swearing to Gakin [6601] = { ["U"] = { 11872 } }, -- Ascension... [8183] = { ["I"] = { 19802 } }, -- The Heart of Hakkar [40033] = { ["U"] = { 61987 } }, -- Finding Akh Z'ador [40572] = { ["U"] = { 4972 } }, -- Aid Kagoro [40948] = { ["U"] = { 61458 } }, -- Wolf Amongst Sheep [41169] = { ["U"] = { 61748 } }, -- Bearer Of Bad News [41234] = { ["U"] = { 61843 } }, -- To Raise An Ancient [41324] = { ["U"] = { 61987 } }, -- Novice In A Barren Land [41552] = { ["U"] = { 73102 } }, -- Renewed Teachings [41825] = { ["I"] = { 58180 } }, -- The Matron Will Know [41898] = { ["U"] = { 62786, 62789, 62791, 62794 } }, -- Twisted Relations [41930] = { ["U"] = { 62934 } }, -- Proof of Conviction [41931] = { ["U"] = { 62871 }, ["I"] = { 42171 } }, -- The Corruption of Timbermaw Hold [41952] = { ["U"] = { 63092 } }, -- Out of the Moonlight [41969] = { ["U"] = { 9690 }, ["I"] = { 42250 } }, -- Raiments of Ritual [41995] = { ["U"] = { 63116 } }, -- Mindless Monster [42003] = { ["I"] = { 12662, 42296 } }, -- The Silver Blade [42005] = { ["U"] = { 60748 } }, -- The Rift Calls [42014] = { ["U"] = { 63063, 63067 } }, -- Roots of the Grove [42015] = { ["U"] = { 63064 } }, -- Lady Stargazer [42016] = { ["U"] = { 63066 } }, -- In Lucid Dreams [42047] = { ["U"] = { 63164 } }, -- Back to Sleep [42052] = { ["U"] = { 62827 } }, -- In Blue Defiance [42053] = { ["U"] = { 62830, 62831 } }, -- Jawtaker [42056] = { ["U"] = { 63199 } }, -- Garments of the Three Siblings [42075] = { ["U"] = { 63037, 63039 } }, -- Price of Betrayal [42077] = { ["U"] = { 63068 } }, -- Mothshroud Falls [42088] = { ["U"] = { 62996, 62999, 63000 } }, -- An’she’s Respite [42090] = { ["U"] = { 63148, 63149 } }, -- Serpents Without Heads [42092] = { ["U"] = { 62830 } }, -- A Star That Calls Back [42094] = { ["U"] = { 63061, 63065, 63066 } }, -- The Moth’s Heresy [42096] = { ["U"] = { 63142, 63146 } }, -- The Rot of Elun’aran [42097] = { ["U"] = { 63141 } }, -- Keeper of the Broken Grove [80341] = { ["U"] = { 1201 } }, -- Taming the Beast } for qid, obj in pairs(objfix) do local entry = pfDB["quests"]["data-turtle"][qid] if entry and not entry["obj"] then entry["obj"] = obj end end end do -- quests: site-authoritative corrections, batch 1 (2026-08-12, 1.0.9) -- Source: the server's own database as rendered by octowow.st/db, crawled -- and parsed in full (all 6,889 known quest ids; tooling and caches in -- Documents\OctoWoW Works\octowow-db). Two absent-only sets: -- -- objfix -- kill/interact objectives the pack lacked, every id verified to -- exist with spawns in the merged data. 41982 (Destroy the Deathtotem) was -- demoted from the 1.0.8 name-match batch as unverifiable; the site data -- settles it as npc 62781. -- -- maskfix -- race/class requirements the pack never carried. The Tauren -- priest chain had only its race mask, which is why a Tauren druid saw -- "Light of An'she" pinned (player report by Dusk): race passed and there -- was no class field to filter on. Values are the site's literal masks -- (class 16 priest, 64 shaman, 128 mage). -- -- Still pending from the same crawl: 923 collect quests whose pins need -- item drop-sources (item pages still crawling), and 665 pack-vs-site -- objective differences held for a compared review, not blind overwrite. local objfix = { [41906] = { ["O"] = { 3000203 } }, -- No Mercy For The Wicked [41916] = { ["U"] = { 62992 } }, -- The Elder's End [41939] = { ["U"] = { 62783 } }, -- Vortalus' Edict [41943] = { ["U"] = { 13282, 12236 } }, -- Foul Waters [41967] = { ["U"] = { 4124, 4248 } }, -- The Need to Survive [41978] = { ["U"] = { 62760 } }, -- The Wrath of Malgan [41982] = { ["U"] = { 62781 } }, -- Destroy the Deathtotem [41996] = { ["U"] = { 63001 } }, -- Siren's Song [42000] = { ["U"] = { 62890, 62891, 62889 } }, -- Highborne Burden [42038] = { ["U"] = { 63170, 63167, 63166 } }, -- The Frostmane War [42039] = { ["U"] = { 63131 } }, -- Chieftain Ubukaz [42042] = { ["U"] = { 63173, 63172, 63145, 63144 } }, -- Led Astray } for qid, obj in pairs(objfix) do local entry = pfDB["quests"]["data-turtle"][qid] if entry and not entry["obj"] then entry["obj"] = obj end end local maskfix = { [40053] = { class = 128 }, -- Hidden Secrets [40056] = { race = 589 }, -- Zinfizzlex's Portable Shredder Unit [41873] = { race = 589 }, -- Brangar's Journal [41938] = { class = 64 }, -- Windtorn Crest Stone [41939] = { class = 64 }, -- Vortalus' Edict [42055] = { class = 16 }, -- In Favor of the Three Siblings [42056] = { class = 16 }, -- Garments of the Three Siblings [42057] = { class = 16 }, -- Light of An'she [42058] = { class = 16 }, -- Light of An'she [42059] = { class = 16 }, -- Spiritwalk [42060] = { class = 16 }, -- Spiritwalk [42079] = { class = 16 }, -- Secrets of Moonwhisper } for qid, fix in pairs(maskfix) do local entry = pfDB["quests"]["data-turtle"][qid] if entry then if fix.race and not entry["race"] then entry["race"] = fix.race end if fix.class and not entry["class"] then entry["class"] = fix.class end end end end do -- quests + items: site-authoritative collect batch (2026-08-13, 1.0.10) -- The item pages of the server database are crawled and parsed; this ships -- every collect quest whose objective items have a known source. 197 quests -- gain ["I"] objectives (166 draw pins immediately). The 20 item entries -- below are Moonwhisper collectables whose ground objects the extraction -- carried all along under ids nothing referenced -- including the Frozen -- Highborne Vials, the Meteor Shard and the Maras'ethil-era relics that -- 1.0.8 had classified as genuinely absent. Drop percents are the site's. -- 726 collect quests stay unfixed: no source is listed even server-side. -- Absent-only throughout, like every block above. local objfix = { [78] = { ["I"] = { 921 } }, -- The Legend of Stalvan [337] = { ["I"] = { 2794 } }, -- An Old History Book [351] = { ["I"] = { 8623 } }, -- Find OOX-17/TN! [373] = { ["I"] = { 2874 } }, -- The Unsent Letter [383] = { ["I"] = { 2885 } }, -- Vital Intelligence [460] = { ["I"] = { 3317 } }, -- Resting in Pieces [485] = { ["I"] = { 8704 } }, -- Find OOX-09/HL! [521] = { ["I"] = { 3554 } }, -- The Crown of Will [522] = { ["I"] = { 3668 } }, -- Assassin's Contract [531] = { ["I"] = { 2713 } }, -- Vyrin's Revenge [551] = { ["I"] = { 3706 } }, -- The Ensorcelled Parchment [554] = { ["I"] = { 3706 } }, -- Stormpike's Deciphering [708] = { ["I"] = { 4613 } }, -- The Black Box [723] = { ["I"] = { 4635 } }, -- Prospect of Faith [724] = { ["I"] = { 4635 } }, -- Prospect of Faith [819] = { ["I"] = { 4926 } }, -- Chen's Empty Keg [824] = { ["I"] = { 16408 } }, -- Je'neu of the Earthen Ring [832] = { ["I"] = { 4903 } }, -- Burning Shadows [897] = { ["I"] = { 5138 } }, -- The Harvester [906] = { ["I"] = { 5072 } }, -- Betrayal from Within [909] = { ["I"] = { 16782 } }, -- Baron Aquanis [922] = { ["I"] = { 5168 } }, -- Rellian Greenspyre [927] = { ["I"] = { 5179 } }, -- The Moss-twined Heart [968] = { ["I"] = { 5352 } }, -- The Powers Below [1024] = { ["I"] = { 5463 } }, -- Raene's Cleansing [1091] = { ["I"] = { 5717 } }, -- Kaela's Update [1183] = { ["I"] = { 5852 } }, -- Goblin Sponsorship [1188] = { ["I"] = { 5862 } }, -- Safety First [1245] = { ["I"] = { 5947 } }, -- The Missing Diplomat [1262] = { ["I"] = { 5942 } }, -- Report to Zor [1392] = { ["I"] = { 6196 } }, -- Noboru the Cudgel [1423] = { ["I"] = { 6172 } }, -- The Lost Supplies [1457] = { ["I"] = { 6245 } }, -- The Karnitol Shipwreck [1480] = { ["I"] = { 20310 } }, -- The Corrupter [1898] = { ["I"] = { 7231 } }, -- The Deathstalkers [1918] = { ["I"] = { 16408 } }, -- The Befouled Element [1978] = { ["I"] = { 7294 } }, -- The Deathstalkers [2198] = { ["I"] = { 7666 } }, -- The Shattered Necklace [2766] = { ["I"] = { 8705 } }, -- Find OOX-22/FE! [2871] = { ["I"] = { 9248 } }, -- Delivering the Relic [2876] = { ["I"] = { 9250 } }, -- Ship Schedules [2945] = { ["I"] = { 9326 } }, -- Grime-Encrusted Ring [2978] = { ["I"] = { 9370 } }, -- The Gordunni Scroll [3002] = { ["I"] = { 9371 } }, -- The Gordunni Orb [3366] = { ["I"] = { 10441 } }, -- The Glowing Shard [3373] = { ["I"] = { 10454 } }, -- The Essence of Eranikus [3507] = { ["I"] = { 10597 } }, -- Betrayed [3513] = { ["I"] = { 10621 } }, -- The Runed Scroll [3518] = { ["I"] = { 10538 } }, -- Delivery to Magatha [3541] = { ["I"] = { 10539 } }, -- Delivery to Jes'rimon [3542] = { ["I"] = { 10540 } }, -- Delivery to Andron Gant [3561] = { ["I"] = { 10541 } }, -- Delivery to Archmage Xylem [3884] = { ["I"] = { 11116 } }, -- Williden's Journal [4142] = { ["I"] = { 11316 } }, -- A Visit to Gregan [4264] = { ["I"] = { 11446 } }, -- A Crumpled Up Note [4451] = { ["I"] = { 11818 } }, -- The Key to Freedom [4722] = { ["I"] = { 12289 } }, -- Beached Sea Turtle [4723] = { ["I"] = { 12242 } }, -- Beached Sea Creature [4882] = { ["I"] = { 12558 } }, -- Guarding Secrets [4883] = { ["I"] = { 12558 } }, -- Guarding Secrets [5083] = { ["I"] = { 12771 } }, -- Winterfall Firewater [5089] = { ["I"] = { 12780 } }, -- General Drakkisath's Command [5123] = { ["I"] = { 12842 } }, -- The Final Piece [5128] = { ["I"] = { 12842 } }, -- Words of the High Chief [5202] = { ["I"] = { 13140 } }, -- A Strange Red Key [5262] = { ["I"] = { 13250 } }, -- The Truth Comes Crashing Down [5462] = { ["I"] = { 13585 } }, -- The Dying, Ras Frostwhisper [5463] = { ["I"] = { 13585 } }, -- Menethil's Gift [5582] = { ["I"] = { 13920 } }, -- Healthy Dragon Scale [6522] = { ["I"] = { 17008 } }, -- An Unholy Alliance [6564] = { ["I"] = { 16790 } }, -- Allegiance to the Old Gods [6844] = { ["I"] = { 17346 } }, -- Umber, Archivist [6922] = { ["I"] = { 16782 } }, -- Baron Aquanis [6981] = { ["I"] = { 10441 } }, -- The Glowing Shard [7490] = { ["I"] = { 18422 } }, -- Victory for the Horde [7495] = { ["I"] = { 18423 } }, -- Victory for the Alliance [7498] = { ["I"] = { 18356 } }, -- Garona: A Study on Stealth and Treachery [7499] = { ["I"] = { 18357 } }, -- Codex of Defense [7500] = { ["I"] = { 18358 } }, -- The Arcanist's Cookbook [7501] = { ["I"] = { 18359 } }, -- The Light and How To Swing It [7502] = { ["I"] = { 18360 } }, -- Harnessing Shadows [7503] = { ["I"] = { 18361 } }, -- The Greatest Race of Hunters [7504] = { ["I"] = { 18362 } }, -- Holy Bologna: What the Light Won't Tell You [7505] = { ["I"] = { 18363 } }, -- Frost Shock and You [7506] = { ["I"] = { 18364 } }, -- The Emerald Dream... [7507] = { ["I"] = { 18401 } }, -- Foror's Compendium [7632] = { ["I"] = { 18703 } }, -- The Ancient Leaf [7644] = { ["I"] = { 18792 } }, -- Blessed Arcanite Barding [7735] = { ["I"] = { 18969 } }, -- Pristine Yeti Hide [7738] = { ["I"] = { 18972 } }, -- Perfect Yeti Hide [7781] = { ["I"] = { 19003 } }, -- The Lord of Blackrock [7783] = { ["I"] = { 19002 } }, -- The Lord of Blackrock [7787] = { ["I"] = { 19018 } }, -- Rise, Thunderfury! [7937] = { ["I"] = { 19423 } }, -- Your Fortune Awaits You... [7938] = { ["I"] = { 19424 } }, -- Your Fortune Awaits You... [7944] = { ["I"] = { 19443 } }, -- Your Fortune Awaits You... [7945] = { ["I"] = { 19452 } }, -- Your Fortune Awaits You... [8308] = { ["I"] = { 20461 } }, -- Brann Bronzebeard's Lost Letter [8446] = { ["I"] = { 20644 } }, -- Shrouded in Nightmare [8470] = { ["I"] = { 20741 } }, -- Deadwood Ritual Totem [8471] = { ["I"] = { 20742 } }, -- Winterfall Ritual Totem [8552] = { ["I"] = { 3985 } }, -- The Monogrammed Sash [8784] = { ["I"] = { 21230 } }, -- Secrets of the Qiraji [8791] = { ["I"] = { 21220 } }, -- The Fall of Ossirian [8801] = { ["I"] = { 21221 } }, -- C'Thun's Legacy [8802] = { ["I"] = { 21221 } }, -- The Savior of Kalimdor [9120] = { ["I"] = { 22520 } }, -- The Fall of Kel'Thuzad [40231] = { ["I"] = { 60188 } }, -- The Forgotten Tome [40236] = { ["I"] = { 60319 } }, -- The Secrets of Darkforging [40389] = { ["I"] = { 4866 } }, -- Zalazane's Fall [40391] = { ["I"] = { 60521 } }, -- A Hunt for Honor [40695] = { ["I"] = { 60935 } }, -- The Sputtervalve Fix [40696] = { ["I"] = { 60935 } }, -- The Fixed Sputtervalve Conductor [40723] = { ["I"] = { 60817 } }, -- Honoring Treaties [40749] = { ["I"] = { 60989 } }, -- Translating The Unknown [40797] = { ["I"] = { 61153 } }, -- A Foul Effigy [40931] = { ["I"] = { 61474 } }, -- The Gilneas Lighthouse III [41042] = { ["I"] = { 61742 } }, -- The Word of the Archdruid [41063] = { ["I"] = { 61759 } }, -- Scythe of the Goddess [41064] = { ["I"] = { 61759 } }, -- Scythe of the Goddess [41066] = { ["I"] = { 61759 } }, -- Scythe of the Goddess [41091] = { ["I"] = { 61775 } }, -- Finding a Demon Hunter [41195] = { ["I"] = { 41122 } }, -- Message for the Windrunner [41352] = { ["I"] = { 41398 } }, -- Auntie Tillia [41377] = { ["I"] = { 61759 } }, -- Scythe of the Goddess [41380] = { ["I"] = { 61759 } }, -- Scythe of the Goddess [41806] = { ["I"] = { 41907 } }, -- Dragonfire Bombs! [41820] = { ["I"] = { 41924 } }, -- To My Father, Vol'jin [41899] = { ["I"] = { 41996 } }, -- Blackroot Totems [41905] = { ["I"] = { 42072 } }, -- Dark Iron Aggression [41907] = { ["I"] = { 42073 } }, -- Riverhorn Village [41908] = { ["I"] = { 42001 } }, -- Raw Draenethyst Formation [41909] = { ["I"] = { 42015 } }, -- Glowing Draenethyst Cluster [41911] = { ["I"] = { 42133 } }, -- Wolf in Sheep's Clothing [41913] = { ["I"] = { 42134, 42135, 8831, 42001 } }, -- Draenei Divination [41914] = { ["I"] = { 42137, 42138 } }, -- Hooves and Horns, Clad in Red [41918] = { ["I"] = { 42139 } }, -- Silken Song [41919] = { ["I"] = { 42139 } }, -- More Silk for the Wounded [41935] = { ["I"] = { 42179, 42178 } }, -- Rite of Resurrection [41936] = { ["I"] = { 42181, 42180 } }, -- Twisting Rift Crystal [41938] = { ["I"] = { 42206 } }, -- Windtorn Crest Stone [41940] = { ["I"] = { 42207, 42208, 42209, 42210 } }, -- Elemental Cores [41941] = { ["I"] = { 42211 } }, -- Duality of Flame [41942] = { ["I"] = { 42212, 42213 } }, -- The Plaguewood [41944] = { ["I"] = { 42216, 42010 } }, -- The Long Hunt [41945] = { ["I"] = { 42217 } }, -- Respect the Elderly [41947] = { ["I"] = { 42218 } }, -- Wanted: Tama’an the Ruthless [41949] = { ["I"] = { 42221 } }, -- Horns of their Allies [41950] = { ["I"] = { 42222 } }, -- Parcel to Nowhere [41951] = { ["I"] = { 42222 } }, -- Merchant’s Knowledge [41953] = { ["I"] = { 42224 } }, -- Draenethyst Recovery [41955] = { ["I"] = { 42215, 42225, 42226, 42227 } }, -- Tricolored Hide-ra [41956] = { ["I"] = { 58306 } }, -- Bounty: Head of Highlord Bolvar Fordragon [41957] = { ["I"] = { 58307 } }, -- Bounty: Head of King Magni Bronzebeard [41958] = { ["I"] = { 58309 } }, -- Bounty: Head of Arch Druid Fandral Staghelm [41959] = { ["I"] = { 58308 } }, -- Bounty: Head of Cairne Bloodhoof [41960] = { ["I"] = { 58310 } }, -- Bounty: Head of Thrall [41961] = { ["I"] = { 58311 } }, -- Bounty: Head of Lady Sylvanas Windrunner [41968] = { ["I"] = { 42246 } }, -- Worthy of Cloudhoof [41974] = { ["I"] = { 42258 } }, -- Glimmering Hydra Scale [41976] = { ["I"] = { 42262 } }, -- In Search of Tauren Relics [41977] = { ["I"] = { 42262 } }, -- Relics of the Windhorn Tribe [41984] = { ["I"] = { 19221 } }, -- Restocking for Vacation [41987] = { ["I"] = { 22527 } }, -- Core of the Elements [41989] = { ["I"] = { 42273 } }, -- Slithering Snakes [41991] = { ["I"] = { 42000 } }, -- Preparation for Hibernation [41992] = { ["I"] = { 42278 } }, -- Youngest Sibling, Always Last [41997] = { ["I"] = { 42279 } }, -- Taste for Hydra [41998] = { ["I"] = { 42001 } }, -- Collecting Draenethyst [41999] = { ["I"] = { 42280 } }, -- Before They Hatch [42001] = { ["I"] = { 42281 } }, -- What Upsets the Elements? [42008] = { ["I"] = { 42300 } }, -- The Finest Pelt [42010] = { ["I"] = { 42301 } }, -- Powerless Runestone [42017] = { ["I"] = { 42304 } }, -- Heart Full of Shadows [42018] = { ["I"] = { 42304 } }, -- Gifting the Matron [42037] = { ["I"] = { 42320 } }, -- Airfield Supplies [42040] = { ["I"] = { 42326 } }, -- A Grave Misunderstanding! [42043] = { ["I"] = { 42336 } }, -- Belated Preservation [42065] = { ["I"] = { 42351 } }, -- Falling the Fallen [42066] = { ["I"] = { 42352, 42353, 42354, 42355 } }, -- Ghosts of Maras’ethil [42067] = { ["I"] = { 42356 } }, -- Heaven Falling Down [42074] = { ["I"] = { 42380 } }, -- Seeking the Truth [42076] = { ["I"] = { 42381 } }, -- Return to the Dream [42079] = { ["I"] = { 42385 } }, -- Secrets of Moonwhisper [42082] = { ["I"] = { 42387, 42388 } }, -- Starstrider Headdress [42083] = { ["I"] = { 42389 } }, -- The Rod of Preservation [42084] = { ["I"] = { 42390 } }, -- A Tale of Scales [42086] = { ["I"] = { 42394 } }, -- Echoes of Nendis [42087] = { ["I"] = { 42395 } }, -- The Light of Elunaris [42089] = { ["I"] = { 42396 } }, -- Scales of the Tideblade [42093] = { ["I"] = { 42397 } }, -- Feathers on Point [55051] = { ["I"] = { 81334 } }, -- Return to Port! [70057] = { ["I"] = { 70035 } }, -- A Simple Memory [80321] = { ["I"] = { 80868 } }, -- [Deprecated] The Lies that Bind Us [80322] = { ["I"] = { 80868 } }, -- [Deprecated] The Lies That Bind Us [80323] = { ["I"] = { 80868 } }, -- [Deprecated] The Lies That Bind Us [80404] = { ["I"] = { 81284 } }, -- Delivery for Drazzit } for qid, obj in pairs(objfix) do local entry = pfDB["quests"]["data-turtle"][qid] if entry and not entry["obj"] then entry["obj"] = obj end end local itemfix = { [42072] = { ["O"] = { [2020263] = 100 } }, [42073] = { ["O"] = { [2020264] = 100 } }, [42178] = { ["O"] = { [179703] = 30 } }, [42180] = { ["O"] = { [179703] = 30 } }, [42211] = { ["O"] = { [2020310] = 100 } }, [42213] = { ["O"] = { [2020311] = 100 } }, [42262] = { ["O"] = { [2020320] = 100 } }, [42273] = { ["O"] = { [2020321] = 100 } }, [42278] = { ["O"] = { [2020326] = 100 } }, [42280] = { ["O"] = { [2020327] = 100 } }, [42301] = { ["O"] = { [2020334] = 100 } }, [42320] = { ["O"] = { [2020338] = 100 } }, [42326] = { ["O"] = { [2020339] = 100 } }, [42336] = { ["O"] = { [2020420] = 100 } }, [42356] = { ["O"] = { [2020342] = 100 } }, [42380] = { ["O"] = { [2020343] = 100 } }, [42389] = { ["O"] = { [2020344] = 100 } }, [42394] = { ["O"] = { [2020345] = 100, [2020346] = 100 } }, [42395] = { ["O"] = { [300609] = 100, [2020346] = 100 } }, [42397] = { ["O"] = { [300608] = 100 } }, } local itemnames = { [42072] = "Refugee Supplies", [42073] = "Riverhorn Heirloom", [42178] = "Rite of Resurrection", [42180] = "Twisting Rift Crystal", [42211] = "Volcanic Soil", [42213] = "Twisted Tree Sapling", [42262] = "Windhorn Relic", [42273] = "Cracked Idol of Neptulon", [42278] = "Scroll of Lo’sho", [42280] = "Mothsilk Cocoon", [42301] = "Frozen Highborne Vial", [42320] = "Airfield Supplies", [42326] = "Tablet of Kaz'gan", [42336] = "Elunaris Relic", [42356] = "Meteor Shard", [42380] = "Worn Letter", [42389] = "Rod of Preservation", [42394] = "Nendis Memento", [42395] = "Relic of Elunaris", [42397] = "Azureshimmer Hippogryph Feather", } for iid, data in pairs(itemfix) do if not pfDB["items"]["data-turtle"][iid] then pfDB["items"]["data-turtle"][iid] = data end end for iid, nm in pairs(itemnames) do if not pfDB["items"]["enUS-turtle"][iid] then pfDB["items"]["enUS-turtle"][iid] = nm end end end do -- area trigger -- Investigating Hateforge (Quest) pfDB["areatrigger"]["data-turtle"][40486] = { ["coords"] = { [1] = { 96.1, 57.6, 46 } } } -- Gathering Intel (Quest) pfDB["areatrigger"]["data-turtle"][80204] = { ["coords"] = { [1] = { 78.3, 72.3, 38 } } } end do -- items -- Once Upon a Sheep: Lost Farm Sheep (Interaction) pfDB["items"]["data-turtle"][51220] = { ["U"] = { [50610] = 100 } } -- The Boran Family: Letter from Karl & Letter from Samual (Interaction) pfDB["items"]["data-turtle"][60202] = { ["U"] = { [1242] = 100 } } pfDB["items"]["data-turtle"][60203] = { ["U"] = { [92936] = 100 } } -- Sailors Innovation: Pinch of Salt (Interaction) pfDB["items"]["data-turtle"][60207] = { ["U"] = { [91950] = 100 } } -- Southsea Reserve: Southsea Reserve (Interaction) pfDB["items"]["data-turtle"][60217] = { ["U"] = { [92137] = 100 } } -- The Good Snuff: 'The Good Snuff' (Interaction) pfDB["items"]["data-turtle"][60597] = { ["U"] = { [8139] = 100 } } -- Reports of Dustwallow: Sentry Point Report & North Point Report (Interaction) pfDB["items"]["data-turtle"][60602] = { ["U"] = { [60729] = 100 } } pfDB["items"]["data-turtle"][60603] = { ["U"] = { [60730] = 100 } } -- Report from Burnside: Report from Burnside (Interaction) pfDB["items"]["data-turtle"][60635] = { ["U"] = { [60792] = 100 } } -- Fel Energy Irregularities I: Engineer Wigglestip's Report (Interaction) pfDB["items"]["data-turtle"][60640] = { ["U"] = { [60794] = 100 } } -- To Purchase Secret Information: Arcane Golem Core Information (Interaction) pfDB["items"]["data-turtle"][60670] = { ["U"] = { [8139] = 100 } } -- Preparation for Divination: Arcane Resonator (Interaction) pfDB["items"]["data-turtle"][60815] = { ["U"] = { [2543] = 100 } } -- Apple a Day: Healing Balm (Interaction) pfDB["items"]["data-turtle"][80865] = { ["U"] = { [8090] = 100 } } end do -- units/npcs -- AQ Commendation NPCs pfDB["units"]["data-turtle"][15761] = { } pfDB["units"]["data-turtle"][15762] = { } pfDB["units"]["data-turtle"][15763] = { } pfDB["units"]["data-turtle"][15764] = { } pfDB["units"]["data-turtle"][15765] = { } pfDB["units"]["data-turtle"][15766] = { } pfDB["units"]["data-turtle"][15767] = { } pfDB["units"]["data-turtle"][15768] = { } -- Fara Boltbreaker: Horde only pfDB["units"]["data-turtle"][50530]["fac"] = "H" -- quest_40124_dummy_triger pfDB["units"]["enUS-turtle"][60312] = "Spitelash Shrine" pfDB["units"]["data-turtle"][60312]["coords"] = { [1] = { 48.8, 55.2, 16, 333 } } -- Kex Blowmaster: Horde only pfDB["units"]["data-turtle"][60443]["fac"] = "H" -- Technician Steelbolt: Horde only pfDB["units"]["data-turtle"][60960]["fac"] = "H" -- Head Technician Klazfit: Horde only pfDB["units"]["data-turtle"][60961]["fac"] = "H" -- Fusemaster Blammo: Horde only pfDB["units"]["data-turtle"][60962]["fac"] = "H" -- Gig Xevno: Horde only pfDB["units"]["data-turtle"][60967]["fac"] = "H" -- Security Officer Mort Tozzlefume: Horde only pfDB["units"]["data-turtle"][60970]["fac"] = "H" -- Senior Foreman Nazz Firecracker: Horde only pfDB["units"]["data-turtle"][61024]["fac"] = "H" -- Alleana Moonfeather (Ashenvale), coords missing pfDB["units"]["data-turtle"][61292]["coords"] = { [1] = { 85, 43.5, 331, 280 } } -- Pezzik Villamar: Horde only pfDB["units"]["data-turtle"][70060]["fac"] = "H" -- Nert Blastentom (Razor Hill): Horde only pfDB["units"]["data-turtle"][80121]["fac"] = "H" -- Grand Taskmaster Nert Blastentom (Sparkwater Port): Horde only pfDB["units"]["data-turtle"][80178]["fac"] = "H" -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80270] = "Search Mage Tower" pfDB["units"]["data-turtle"][80270]["coords"] = { [1] = { 48.7, 87.4, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80271] = "Search Mage District" pfDB["units"]["data-turtle"][80271]["coords"] = { [1] = { 50.4, 86.5, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80272] = "Search Mage District Tavern" pfDB["units"]["data-turtle"][80272]["coords"] = { [1] = { 41.7, 82.6, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80273] = "Search Mage District Tavern Basement" pfDB["units"]["data-turtle"][80273]["coords"] = { [1] = { 39.5, 84.8, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80274] = "Search Stormwind Park" pfDB["units"]["data-turtle"][80274]["coords"] = { [1] = { 36.5, 67.4, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80275] = "Search Dwarven District" pfDB["units"]["data-turtle"][80275]["coords"] = { [1] = { 64.6, 38.3, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80276] = "Search Dwarf District Embassy" pfDB["units"]["data-turtle"][80276]["coords"] = { [1] = { 65.4, 29.6, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80277] = "Search Little Silvermoon" pfDB["units"]["data-turtle"][80277]["coords"] = { [1] = { 64.1, 46.8, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80278] = "Search Deeprun Tram Entrance" pfDB["units"]["data-turtle"][80278]["coords"] = { [1] = { 66.3, 34.3, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80279] = "Search Stormwind Keep" pfDB["units"]["data-turtle"][80279]["coords"] = { [1] = { 74.3, 46.3, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80280] = "Search Old Town" pfDB["units"]["data-turtle"][80280]["coords"] = { [1] = { 75.6, 61.9, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80281] = "Search Old Town Tavern" pfDB["units"]["data-turtle"][80281]["coords"] = { [1] = { 76.1, 54.2, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80282] = "Search Old Town Barracks" pfDB["units"]["data-turtle"][80282]["coords"] = { [1] = { 77.6, 66.2, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80283] = "Search Cathedral Square" pfDB["units"]["data-turtle"][80283]["coords"] = { [1] = { 55.5, 56.6, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80284] = "Search Orphanage" pfDB["units"]["data-turtle"][80284]["coords"] = { [1] = { 56.4, 53.2, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80285] = "Search Cathedral" pfDB["units"]["data-turtle"][80285]["coords"] = { [1] = { 51.1, 47.7, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80286] = "Search Cathedral Basement" pfDB["units"]["data-turtle"][80286]["coords"] = { [1] = { 52.5, 43.5, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80287] = "Search Cathedral Catacombs" pfDB["units"]["data-turtle"][80287]["coords"] = { [1] = { 52.9, 44.8, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80288] = "Search Trade District" pfDB["units"]["data-turtle"][80288]["coords"] = { [1] = { 62.5, 72.8, 1519, 30 } } -- Quest 80261 Custom Objective pfDB["units"]["enUS-turtle"][80289] = "Search Stormwind Visitor Center" pfDB["units"]["data-turtle"][80289]["coords"] = { [1] = { 64, 77.3, 1519, 30 } } -- Volz'draza: Horde only pfDB["units"]["data-turtle"][80799]["fac"] = "H" -- Miley Wildbit: Horde only pfDB["units"]["data-turtle"][80902]["fac"] = "H" -- Drazzit Dripvalve: Horde only pfDB["units"]["data-turtle"][80932]["fac"] = "H" -- Vanessa Clang: Horde only pfDB["units"]["data-turtle"][80961]["fac"] = "H" -- Moxie Steelgrille: Horde only pfDB["units"]["data-turtle"][81250]["fac"] = "H" -- Vixie Dampknob: Horde only pfDB["units"]["data-turtle"][81258]["fac"] = "H" -- Qik Peddlechin: Horde only pfDB["units"]["data-turtle"][81259]["fac"] = "H" -- Wrix Ozzlenut: Horde only pfDB["units"]["data-turtle"][91200]["fac"] = "H" -- Oilworker Razlik: Horde only pfDB["units"]["data-turtle"][91208]["fac"] = "H" -- Oil Manager Tizzleflux: Horde only pfDB["units"]["data-turtle"][91213]["fac"] = "H" -- Technician Spuzzle: Horde only pfDB["units"]["data-turtle"][91214]["fac"] = "H" -- Krez the Wise: Horde only pfDB["units"]["data-turtle"][91232]["fac"] = "H" -- Technician Grimzlow: Horde only pfDB["units"]["data-turtle"][91234]["fac"] = "H" -- Tradesman Laz: Horde only pfDB["units"]["data-turtle"][91237]["fac"] = "H" -- Pazzle Brightwrench: Horde only pfDB["units"]["data-turtle"][91259]["fac"] = "H" -- Shak 'The Hack': Horde only pfDB["units"]["data-turtle"][91260]["fac"] = "H" -- Big Fraggle: Horde only pfDB["units"]["data-turtle"][91274]["fac"] = "H" -- Tarlo Farcrack: Horde only pfDB["units"]["data-turtle"][91292]["fac"] = "H" -- Watch Sergeant Arthur: Moved from Deadwind Pass -> Swamp of Sorrows pfDB["units"]["data-turtle"][92012]["coords"] = { [1] = { 1.9, 52.8, 8, 25 } } -- Watchman Damion: Moved from Deadwind Pass -> Swamp of Sorrows pfDB["units"]["data-turtle"][92014]["coords"] = { [1] = { 1.6, 50.8, 8, 25 } } -- Watch Paladin Janathos: Moved from Deadwind Pass -> Swamp of Sorrows pfDB["units"]["data-turtle"][92017]["coords"] = { [1] = { 2.4, 50.6, 8, 25 } } -- Sir Areyntall: Moved from Deadwind Pass -> Swamp of Sorrows pfDB["units"]["data-turtle"][92018]["coords"] = { [1] = { 1.6, 50.3, 8, 25 } } -- Janet Hollowworth: Moved from Deadwind Pass -> Swamp of Sorrows pfDB["units"]["data-turtle"][92019]["coords"] = { [1] = { 0.9, 49.4, 8, 25 } } -- Howard Gray: Moved from Deadwind Pass -> Swamp of Sorrows pfDB["units"]["data-turtle"][92020]["coords"] = { [1] = { 1.5, 50, 8, 25 } } -- Lucas: Moved from Deadwind Pass -> Swamp of Sorrows pfDB["units"]["data-turtle"][92021]["coords"] = { [1] = { 2, 52, 8, 25 } } -- 'Sly' Duncan: Moved from Deadwind Pass -> Swamp of Sorrows pfDB["units"]["data-turtle"][92022]["coords"] = { [1] = { 3.7, 49.7, 8, 25 } } -- Quartermaster Davin: Moved from Deadwind Pass -> Swamp of Sorrows pfDB["units"]["data-turtle"][92023]["coords"] = { [1] = { 3.5, 50.6, 8, 25 } } -- Flaz Fusemix: Horde only pfDB["units"]["data-turtle"][92187]["fac"] = "H" -- Yeggle Powderscrew: Horde only pfDB["units"]["data-turtle"][92188]["fac"] = "H" -- Blazno Blastpipe: Horde only pfDB["units"]["data-turtle"][92192]["fac"] = "H" -- Joachim Brenlow (Stormwind) pfDB["units"]["data-turtle"][1311] = { ["coords"] = { [1] = { 51.4, 94.1, 1519, 310 }, }, ["fac"] = "A", ["lvl"] = "30", } -- Angus Stern (Stormwind) pfDB["units"]["data-turtle"][1141] = { ["coords"] = { [1] = { 51.8, 93.6, 1519, 30 }, }, ["fac"] = "A", ["lvl"] = "60", } -- Highlord Bolvar Fordragon (Stormwind) pfDB["units"]["data-turtle"][1748] = { ["coords"] = { [1] = { 80.2, 38.3, 1519, 30 }, }, ["fac"] = "A", ["lvl"] = "63", } -- Lady Katrana Prestor (Stormwind) pfDB["units"]["data-turtle"][1749] = { ["coords"] = { [1] = { 80.1, 38.2, 1519, 30 }, }, ["fac"] = "A", ["lvl"] = "62", } -- Duthorian Rall (Stormwind) pfDB["units"]["data-turtle"][6171]["coords"] = { [1] = { 50.5, 47.5, 1519, 30 } } -- Barltok Kettleburn (Dun Agrath) pfDB["units"]["data-turtle"][52068]["coords"] = { [1] = { 21, 71.4, 11, 120 } } -- Hurl Cinderfist (Restless, 41640): his live world spawn at Rugford's -- Mountain Rest falls inside both Turtle's expanded Dun Morogh map and the -- overlapping Grim Reaches map. Keep both map representations so the quest -- objective is visible from either local map without changing server truth. pfDB["units"]["data-turtle"][62200]["coords"] = { [1] = { 83.2, 70.8, 1, 300 }, [2] = { 4.1, 92, 5602, 300 }, } end do -- quests -- Great Bear Spirit: Great Bear Spirit pfDB["quests"]["data-turtle"][5929]["obj"] = { ["U"] = { 11956 } } pfDB["quests"]["data-turtle"][5930]["obj"] = { ["U"] = { 11956 } } -- Horde Defender's Axe: Stolen Weapon Plans pfDB["quests"]["data-turtle"][39995]["obj"]["O"] = { 300531 } -- Horde Defender's Axe: Human Tombstone pfDB["quests"]["data-turtle"][39998]["obj"]["O"] = { 300532 } -- Interfering Naga: quest_40124_dummy_triger (Spitelash Shrine) pfDB["quests"]["data-turtle"][40124]["obj"]["U"] = { 6195, 60312 } -- The Way-Stones of Old: Way-Stone of Eldarath pfDB["quests"]["data-turtle"][40252]["end"] = { ["O"] = { 2010849 } } -- Restoring the Ley Lines: Way-Stone of Eldarath pfDB["quests"]["data-turtle"][40253]["end"] = { ["O"] = { 2010849 } } -- Restoring the Ley Lines: Ashan Stone pfDB["quests"]["data-turtle"][40253]["obj"] = { ["O"] = { 2010851 } } -- Keeping Secrets: Way-Stone of Eldarath pfDB["quests"]["data-turtle"][40254]["start"] = { ["O"] = { 2010849 } } pfDB["quests"]["data-turtle"][40254]["end"] = { ["O"] = { 2010849 } } -- Breaking the Felstar: Corrupted Felstone pfDB["quests"]["data-turtle"][40377]["obj"]["O"] = { 2010883 } -- Sacred Waters of Eldre'thalas: Bowl of Sacred Water pfDB["quests"]["data-turtle"][40382]["obj"] = { ["O"] = { 2010815 } } -- Investigating Hateforge: Fake Area Trigger pfDB["quests"]["data-turtle"][40486]["obj"] = { ["A"] = { 40486 } } -- Family Above All: Abandoned Murloc Hut & Abandoned Murloc Nest pfDB["quests"]["data-turtle"][40541]["obj"] = { ["O"] = { 2010918, 2010919 } } -- The Shield's Owner: Private Talmand, Private Sleightor, Private Valnor (Interaction with no item given) pfDB["quests"]["data-turtle"][40554]["obj"] = { ["U"] = { 60949, 60950, 60951 } } -- Sleepwalking at Day: Bert Mano (Interaction with no item given) pfDB["quests"]["data-turtle"][40567]["obj"] = { ["U"] = { 52017 } } -- The Redbrand Archive: The Redbrand Archive pfDB["quests"]["data-turtle"][40605]["obj"] = { ["O"] = { 2010929 } } -- Controlling Sailors: Sailor Hylreth, Sailor Brewen, Sailor Pardol (Interaction with no item given) pfDB["quests"]["data-turtle"][40660]["obj"] = { ["U"] = { 61013, 61015, 61016 } } -- A Journey for Vengeance: Grumnir Battlebeard (Interaction with no item given) pfDB["quests"]["data-turtle"][40691]["obj"] = { ["U"] = { 60993 } } -- Conflicting Questions: Faldan Moonshatter (Interaction with no item given) pfDB["quests"]["data-turtle"][40698]["obj"] = { ["U"] = { 60471 } } -- The Land of Kings: Gong of Corthan pfDB["quests"]["data-turtle"][40713]["obj"] = { ["O"] = { 2010946 } } -- The Missing Friend!: Nibu (Interaction with no item given) pfDB["quests"]["data-turtle"][40771]["obj"] = { ["U"] = { 61157 } } -- Words of Wisdom: Teloren, Baritanas Skyriver, Daelyshia, Vesprystus (Interaction with no item given) pfDB["quests"]["data-turtle"][40799]["obj"] = { ["U"] = { 4407, 6706, 4267, 3838 } } -- The Family Name: Sharptalon (Interaction with no item given) pfDB["quests"]["data-turtle"][40800]["obj"] = { ["U"] = { 12676 } } -- Patience is the Key: Brolthan Ironglade (Interaction with no item given) pfDB["quests"]["data-turtle"][40801]["obj"] = { ["U"] = { 61147 } } -- Pressure is the Key: Commander Starwind (Interaction with no item given) pfDB["quests"]["data-turtle"][40807]["obj"] = { ["U"] = { 61143 } } -- WANTED: Shazknock!: end unit is Horde only pfDB["quests"]["data-turtle"][55049]["race"] = 434 -- Lucky Coin: Use Teresa's Copper Coin (51425) at this object location pfDB["quests"]["data-turtle"][60050]["obj"] = { ["O"] = { 1000220 } } -- Gathering Intel: Fake Area Trigger pfDB["quests"]["data-turtle"][80204]["obj"] = { ["A"] = { 80204 } } -- Slaking Their Thirst: Well pfDB["quests"]["data-turtle"][80205]["obj"] = { ["O"] = { 3000202 } } -- Dark Iron Scrapping: Shadowforge Cage pfDB["quests"]["data-turtle"][80207]["obj"]["O"] = { 3000203 } -- Sunblade Reunion: Malvinah Sunblade (Interaction with no item given) pfDB["quests"]["data-turtle"][80208]["obj"] = { ["U"] = { 80200 } } -- Porting to Goldshire: Magistrix Ishalah (Interaction with no item given) pfDB["quests"]["data-turtle"][80209]["obj"]["U"] = { 80213 } -- Porting to Goldshire: Portal to Goldshire pfDB["quests"]["data-turtle"][80209]["obj"]["O"] = { 3000204 } -- Assisting the Children of the Sun: Caledra Dawnbreeze (Interaction with no item given) pfDB["quests"]["data-turtle"][80250]["obj"] = { ["U"] = { 1752 } } -- Teslinah's Search I: Stand at these units pfDB["quests"]["data-turtle"][80261]["obj"] = { ["U"] = { 80270, 80271, 80272, 80273 } } -- Teslinah's Search II: Stand at these units pfDB["quests"]["data-turtle"][80262]["obj"] = { ["U"] = { 80274, 80275, 80276, 80277 } } -- Teslinah's Search III: Stand at these units pfDB["quests"]["data-turtle"][80263]["obj"] = { ["U"] = { 80278, 80279, 80280, 80281 } } -- Teslinah's Search IV: Stand at these units pfDB["quests"]["data-turtle"][80264]["obj"] = { ["U"] = { 80282, 80283, 80284, 80285 } } -- Teslinah's Search V: Stand at these units pfDB["quests"]["data-turtle"][80265]["obj"] = { ["U"] = { 80286, 80287, 80288, 80289 } } -- The Lost Tablets: Ancient Thalassian Tablet pfDB["quests"]["data-turtle"][80290]["obj"] = { ["O"] = { 181583 } } -- The Shadow Well: Thalo's Skeleton pfDB["quests"]["data-turtle"][80291]["obj"] = { ["O"] = { 181584 } } -- VIP Invites: Interactions with no item given pfDB["quests"]["data-turtle"][80392]["obj"] = { ["U"] = { 3391, 2496 } } -- A Glittering Opportunity: Mysterious Glittering Object (The Barrens) pfDB["quests"]["data-turtle"][80395]["obj"] = { ["O"] = { 3000284 } } pfDB["quests"]["data-turtle"][80395]["end"] = { ["O"] = { 3000284 } } -- A Bloody Good Deed: Mysterious Glittering Object (The Barrens) pfDB["quests"]["data-turtle"][80396]["start"] = { ["O"] = { 3000284 } } pfDB["quests"]["data-turtle"][80396]["end"] = { ["O"] = { 3000284 } } -- A Letter From a Friend: Mysterious Glittering Object (Tanaris) pfDB["quests"]["data-turtle"][80407]["end"] = { ["O"] = { 3000246 } } -- A Slaughter for Brains: Mysterious Glittering Object (Tanaris) pfDB["quests"]["data-turtle"][80408]["start"] = { ["O"] = { 3000246 } } -- Return to Kheyna: Mysterious Glittering Object (Tanaris) pfDB["quests"]["data-turtle"][80409]["end"] = { ["O"] = { 3000246 } } end -- ==== corrections from the TurtleWoW pack ==== do -- zones -- Several zone IDs share a name with a functional zone but have no NPC or -- object coordinate references, making them phantoms. GetMapIDByName scans -- the locale table with pairs() (non-deterministic order), so it may return -- a phantom ID instead of the functional one, causing quests and minimap -- nodes to not appear inside those dungeons. -- -- TurtleWoW-specific phantom -> Functional mappings: -- 5600 "Dragonmaw Retreat" -> 5601 (has minimap + units) -- 5098 "Hateforge Quarry" -> 5103 (has minimap + units) -- 5550 "Ruins of Grim Batol"-> 5639 (has units) -- -- Vanilla dungeon zone IDs that still hold all NPC/object data (verified -- via coordinate references in units-turtle.lua and objects-turtle.lua): -- 209 "Shadowfang Keep" (181 NPC refs, 35 object refs) -- 1581 "The Deadmines" -- 1583 "Blackrock Spire" -- 1584 "Blackrock Depths" (1085 NPC refs, 462 object refs) -- The 5000+ IDs below share those names but have zero NPC/object refs. -- They are removed so GetMapIDByName resolves to the IDs with real content. -- -- Vanilla ID -> Phantom replacement(s): -- 209 "Shadowfang Keep" -> 5132, 5150, 5161, 5169, 5173, 5177 -- 1581 "The Deadmines" -> 5138 -- 1583 "Blackrock Spire" -> 5139, 5155, 5164, 5170, 5178 -- 1584 "Blackrock Depths"-> 5140 local phantom_zones = { 5600, 5098, 5550, 5132, 5138, 5139, 5140, 5150, 5161, 5155, 5164, 5169, 5170, 5173, 5177, 5178, } local zone_locales = { "enUS", "deDE", "esES", "ptBR", "zhCN" } for _, locale in pairs(zone_locales) do local tbl = pfDB["zones"][locale .. "-turtle"] if tbl then for _, zid in pairs(phantom_zones) do tbl[zid] = nil end end end end do -- area trigger end do -- items end do -- quests -- Onu is meditating (960): stale legacy pfDB quest-giver relation. -- The supplied Turtle server data retains the quest template but has no live -- creature/object/item quest-start relation for 960. Quest 961 is the actual -- repeatable Onu helper quest and keeps its active-944 prerequisite. Remove -- 960 from the merged runtime quest database without altering 961. pfDB["quests"]["data-turtle"][960] = "_" -- Add "Dark Iron Gunpowder Keg" to objectives of "Vile Dwarven Pigs" -- The extractor scripts did not catch those, as the objetive is filled via a Gossip on use. pfDB["quests"]["data-turtle"][41682]["obj"]["O"] = { 2020173 } -- Add "Head of Geshgan" to the loot table of "Geshgan" -- This can be removed by the next database export pfDB["items"]["data-turtle"][41783]["U"] = { [62217] = 1.0 } end -- Set last. A top-level error anywhere above stops this file, so if this -- flag is missing the overwrites did not all apply -- that failure mode -- cost 166 silently dropped corrections before 1.0.2. patchtable.lua -- reports it. pfDB["octo-overwrites-complete"] = true do -- Cloth reputation donations: event 159 is a permanent content-release gate, not quest event membership. -- Verified against the supplied Turtle server data and live server behavior in August 2026. -- Keep every other quest field intact: faction/race restrictions, prerequisites, objectives, -- levels and the repeatable classification of the "Additional Runecloth" follow-ups. -- -- Silvermoon Remnants (80370-80374) and Revantusk Tribe (80375-80379) already ship -- without event metadata, so only the legacy capital-city donation chains need correction. local clothDonationQuestIDs = { 7791, 7792, 7793, 7794, 7795, 7796, 7798, 7799, 7800, 7801, 7802, 7803, 7804, 7805, 7806, 7807, 7808, 7809, 7811, 7812, 7813, 7814, 7817, 7818, 7819, 7820, 7821, 7822, 7823, 7824, 7825, 7826, 7827, 7831, 7832, 7833, 7834, 7835, 7836, 7837, } for _, questID in ipairs(clothDonationQuestIDs) do local quest = pfDB["quests"]["data-turtle"][questID] if type(quest) == "table" then quest["event"] = nil end end end