From e1b89f48431615ccb0e7db0f493f9767c10ed748 Mon Sep 17 00:00:00 2001 From: Lacustat Date: Sun, 1 Nov 2026 13:00:02 +0100 Subject: [PATCH] 0.1.219: Flugnetz und Weg zum Ziel im Levelplan (Version) Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_016onJCSHLwhs9udhC9ZLzk9 --- CodexPath.lua | 40 +++- CodexTaxi.lua | 69 +++++- CodexTaxiSeed.lua | 437 +++++++++++++++++++++++++++++++++++++ Freewood-OctoWoW-Codex.toc | 3 +- 4 files changed, 541 insertions(+), 8 deletions(-) create mode 100644 CodexTaxiSeed.lua diff --git a/CodexPath.lua b/CodexPath.lua index ff8e7d5..098379f 100644 --- a/CodexPath.lua +++ b/CodexPath.lua @@ -776,7 +776,7 @@ local function Snap(g, x, y) end -- A* ueber die Bloecke. Rueckgabe: Strecke in Yards oder nil -local function Search(g, from, to) +local function Search(g, from, to, wantPrev) local nodes = g.nodes local goal = nodes[to] if not goal then return nil end @@ -785,6 +785,7 @@ local function Search(g, from, to) return 1.2 * math.sqrt(((n.bx + 0.5) * BLOCK * CELL - gx) ^ 2 + ((n.by + 0.5) * BLOCK * CELL - gy) ^ 2) end local dist, heap, size, done = { [from] = 0 }, {}, 0, {} + local prev = wantPrev and {} or nil local function Push(k, pr) size = size + 1 local i = size @@ -816,7 +817,7 @@ local function Search(g, from, to) local expanded = 0 while size > 0 do local k = Pop() - if k == to then return dist[k] end + if k == to then return dist[k], prev end if not done[k] then done[k] = true expanded = expanded + 1 @@ -825,6 +826,7 @@ local function Search(g, from, to) local nd = dist[k] + cost if not dist[nk] or nd < dist[nk] then dist[nk] = nd + if prev then prev[nk] = k end Push(nk, nd + H(nodes[nk])) end end @@ -890,6 +892,40 @@ function Path.Distance(world, ax, ay, bx, by) return da + cost + db_ end +-- Zwischenziele laengs des Wegenetzes von (ax, ay) nach (bx, by) (Zellraum, Yards): Liste { x, y } mit etwa "step" Yards Abstand, +-- ohne Start, mit Ziel als letztem Punkt. nil, wenn kein zusammenhaengendes Netz bekannt ist (dann Luftlinie). +function Path.Route(world, ax, ay, bx, by, step) + if type(world) ~= "number" then return nil end + local straight = math.sqrt((ax - bx) ^ 2 + (ay - by) ^ 2) + if straight < 2 * BLOCK * CELL then return nil end + local g = Graph(world) + if not g then return nil end + local sa = Snap(g, ax, ay) + local sb = Snap(g, bx, by) + if not sa or not sb or sa == sb or g.comp[sa] ~= g.comp[sb] then return nil end + local cost, prev = Search(g, sa, sb, true) + if not cost or not prev then return nil end + local chain, k, guard = {}, sb, 0 + while k and guard < 5000 do + local nd = g.nodes[k] + table.insert(chain, 1, { (nd.bx + 0.5) * BLOCK * CELL, (nd.by + 0.5) * BLOCK * CELL }) + if k == sa then break end + k = prev[k] + guard = guard + 1 + end + step = step or 250 + local out, last = {}, { ax, ay } + for i, p in ipairs(chain) do + if i == #chain then + out[#out + 1] = { bx, by } + elseif math.sqrt((p[1] - last[1]) ^ 2 + (p[2] - last[2]) ^ 2) >= step then + out[#out + 1] = p + last = p + end + end + return out, cost +end + function Path.ResetGraphs() graphs = {} end diff --git a/CodexTaxi.lua b/CodexTaxi.lua index 051ab21..0acfc65 100644 --- a/CodexTaxi.lua +++ b/CodexTaxi.lua @@ -301,17 +301,76 @@ function Taxi.PlannerOn() return not (db and db.settings and db.settings.taxiPlan == false) end +-- Namen der Flugpunkte, die dieser Charakter kennt: { [Name] = true } +function Taxi.KnownNames() + local out = {} + local c = CharRec(false) + for id in pairs(c and c.known or {}) do + local nd = Taxi.Node(id) + if nd and nd.n then out[nd.n] = true end + end + return out +end + local edgeCache + +local function PlayerFac() + local f = _G.UnitFactionGroup and _G.UnitFactionGroup("player") + return f == "Horde" and "H" or f == "Alliance" and "A" or nil +end + +-- Ort eines Flugpunkts fuer den Levelplan: Karte (m, x, y) und/oder Zellraum cs = { Welt, x, y } (Yards) +local function EndPoint(nd, seed) + local p = {} + if nd.m and nd.x and nd.y then p.m, p.x, p.y = nd.m, nd.x, nd.y end + if nd.a and nd.b and nd.w then + p.cs = { nd.w, nd.b, nd.a } + elseif seed then + p.cs = { seed[2], seed[3], seed[4] } + end + if not p.m and not p.cs then return nil end + return p +end + +-- Fluege als Kanten { id, k, t, wait, est, from, to }, nur zwischen Flugpunkten, die dieser Charakter kennt. +-- Gemessene Fluege gelten auch rueckwaerts (est = geschaetzt, bis selbst geflogen); dazu das mitgelieferte Flugnetz (Taxi.Seed) +-- fuer Strecken, die noch nie geflogen wurden. Wege ueber mehrere Flugpunkte findet der Levelplan selbst. function Taxi.Edges() if not Taxi.PlannerOn() then return {} end local key = Codex.Trust and Codex.Trust.SelfKey and Codex.Trust.SelfKey() or "?" if edgeCache and edgeCache.rev == Taxi.rev and edgeCache.key == key then return edgeCache.list end - local list = {} + local list, have = {}, {} + local seed = Taxi.Seed + local fac = PlayerFac() + local function Add(a, b, t, est) + local na, nb = Taxi.Node(a), Taxi.Node(b) + if not (na and nb and t) then return end + local pa = EndPoint(na, seed and seed.n[na.n]) + local pb = EndPoint(nb, seed and seed.n[nb.n]) + if not (pa and pb) then return end + have[a .. ">" .. b] = true + list[#list + 1] = { id = (est and "s" or "f") .. a .. ">" .. b, k = "flight", t = t, wait = 20, est = est or nil, name = nb.n, fn = na.n, + fa = a, fb = b, from = pa, to = pb } + end for rid, r in pairs(Taxi.Routes()) do - local na, nb = Taxi.Node(r.a), Taxi.Node(r.b) - if na and nb and na.m and nb.m and r.t and Taxi.Known(r.a) and Taxi.Known(r.b) then - list[#list + 1] = { id = "f" .. rid, k = "flight", t = r.t, wait = 20, name = nb.n, fa = r.a, fb = r.b, - from = { m = na.m, x = na.x, y = na.y }, to = { m = nb.m, x = nb.x, y = nb.y } } + if r.t and Taxi.Known(r.a) and Taxi.Known(r.b) then Add(r.a, r.b, r.t) end + end + for rid, r in pairs(Taxi.Routes()) do + if r.t and Taxi.Known(r.a) and Taxi.Known(r.b) and not have[r.b .. ">" .. r.a] then Add(r.b, r.a, r.t, true) end + end + if seed then + local c = CharRec(false) + local byName = {} + for id in pairs(c and c.known or {}) do + local nd = Taxi.Node(id) + if nd and nd.n then byName[nd.n] = id end + end + for _, e in ipairs(seed.e) do + local a, b = byName[e[1]], byName[e[2]] + if a and b and not have[a .. ">" .. b] then + local fa, fb = seed.n[e[1]], seed.n[e[2]] + if not (fac and ((fa and fa[1] and fa[1] ~= fac) or (fb and fb[1] and fb[1] ~= fac))) then Add(a, b, e[3], true) end + end end end edgeCache = { rev = Taxi.rev, key = key, list = list } diff --git a/CodexTaxiSeed.lua b/CodexTaxiSeed.lua new file mode 100644 index 0000000..522c614 --- /dev/null +++ b/CodexTaxiSeed.lua @@ -0,0 +1,437 @@ +-- Freewood-OctoWoW-Codex: Flugnetz (erzeugt mit tools/build_taxi_seed.py aus der Datenbank; nicht von Hand aendern) +-- n[Name] = { Fraktion H/A/nil, Kontinent, x, y (Zellraum, Yards) }, e = { { von, nach, Sekunden }, ... } +local ADDON, NS = ... +local Codex = _G.Freewood and _G.Freewood.Codex +if not Codex or not Codex.Taxi then return end +local n = { + ["Aerie Peak, The Hinterlands"] = { "A", 0, 284, -2003 }, + ["Alah'Thalas, Thalassian Highlands"] = { "A", 0, 4183, -2576 }, + ["Ambershire, Northwind"] = { "A", 0, -7576, 783 }, + ["Astranaar, Ashenvale"] = { "A", 1, 2827, -289 }, + ["Auberdine, Darkshore"] = { "A", 1, 6341, 558 }, + ["Bael Hardul, Stonetalon Mountains"] = { "A", 1, 875, -836 }, + ["Bloodvenom Post, Felwood"] = { "H", 1, 5068, -337 }, + ["Booty Bay, Stranglethorn"] = { "H", 0, -14272, 300 }, + ["Brackenwall Village, Dustwallow Marsh"] = { "H", 1, -3147, -2842 }, + ["Caelan's Rest, Lapidis Isle"] = { "A", 0, -11865, 3188 }, + ["Camp Mojache, Feralas"] = { "H", 1, -4420, 199 }, + ["Camp Taurajo, The Barrens"] = { "H", 1, -2381, -1883 }, + ["Canoe: Darkshore - Icepoint Rock"] = { "H", 1, 7837, -768 }, + ["Canoe: Icepoint Rock - Darkshore"] = { "H", 1, 13652, -6591 }, + ["Cenarion Hold, Silithus"] = { "H", 1, -6811, 837 }, + ["Chillwind Camp, Western Plaguelands"] = { "A", 0, 931, -1430 }, + ["Crossroads, The Barrens"] = { "H", 1, -442, -2596 }, + ["Crown Guard Tower, Eastern Plaguelands"] = { false, 0, 1858, -3658 }, + ["Darkshire, Duskwood"] = { "A", 0, -10516, -1262 }, + ["Dun Agrath, Wetlands"] = { "A", 0, -3952, -1332 }, + ["Dun Kithas, Grim Reaches"] = { "A", 0, -4941, -4857 }, + ["Eastern Plaguelands"] = { "H", 0, 2253, -5345 }, + ["Eastwall Tower, Eastern Plaguelands"] = { false, 0, 2499, -4743 }, + ["Everlook, Winterspring"] = { "A", 1, 6799, -4742 }, + ["Feathermoon, Feralas"] = { "A", 1, -4374, 3339 }, + ["Fishing Village, Teldrassil"] = { "A", 1, 8702, 991 }, + ["Flame Crest, Burning Steppes"] = { "H", 0, -7504, -2188 }, + ["Freewind Post, Thousand Needles"] = { "H", 1, -5408, -2414 }, + ["Gadgetzan, Tanaris"] = { "A", 1, -7224, -3735 }, + ["Gazzik's Workshop, Blackstone Island"] = { "H", 1, -571, -7850 }, + ["Gnomeregan Reclamation Facility, Dun Morogh"] = { "A", 0, -5048, 475 }, + ["Grom'gol, Stranglethorn"] = { "H", 0, -12414, 146 }, + ["Hammerfall, Arathi"] = { "H", 0, -916, -3497 }, + ["Ironforge Airfields, Dun Morogh"] = { "A", 0, -4493, -1581 }, + ["Ironforge, Dun Morogh"] = { "A", 0, -4822, -1155 }, + ["Kargath, Badlands"] = { "H", 0, -6634, -2180 }, + ["Lakeshire, Redridge"] = { "A", 0, -9429, -2231 }, + ["Light's Hope Chapel, Eastern Plaguelands"] = { "A", 0, 2271, -5341 }, + ["Marshal's Refuge, Un'Goro Crater"] = { false, 1, -6114, -1143 }, + ["Maul'Ogg Refuge, Gillijim's Isle"] = { "H", 0, -14087, 2269 }, + ["Menethil Harbor, Wetlands"] = { "A", 0, -3792, -783 }, + ["Moonglade"] = { "A", 1, 7458, -2487 }, + ["Moonhoof Village, Moonwhisper Coast"] = { false, 1, 8186, -6489 }, + ["Morgan's Vigil, Burning Steppes"] = { "A", 0, -8365, -2738 }, + ["Mudsprocket, Dustwallow Marsh"] = { "H", 1, -4570, -3222 }, + ["Narvalis Point, Moonwhisper Coast"] = { "A", 1, 8908, -5937 }, + ["Naxxramas"] = { false, 0, 3133, -3400 }, + ["Nethergarde Keep, Blasted Lands"] = { "A", 0, -11112, -3436 }, + ["Nighthaven, Moonglade"] = { "A", 1, 7794, -2403 }, + ["Nijel's Point, Desolace"] = { "A", 1, 139, 1326 }, + ["Nordanaar, Hyjal"] = { false, 1, 5498, -3691 }, + ["Northpass Tower, Eastern Plaguelands"] = { false, 0, 3109, -4285 }, + ["Northshire Abbey"] = { "H", 0, -8889, -1 }, + ["Orgrimmar, Durotar"] = { "H", 1, 1678, -4316 }, + ["Plaguewood Tower, Eastern Plaguelands"] = { false, 0, 2999, -3050 }, + ["Ratchet, The Barrens"] = { false, 1, -895, -3773 }, + ["Ravenshire, Gilneas"] = { "A", 0, -2165, 974 }, + ["Refuge Pointe, Arathi"] = { "A", 0, -1241, -2515 }, + ["Revantusk Village, The Hinterlands"] = { "H", 0, -635, -4720 }, + ["Rut'theran Village, Teldrassil"] = { "A", 1, 8644, 841 }, + ["SI:7 Outpost, Balor"] = { "A", 0, -9199, 2573 }, + ["Sentinel Hill, Westfall"] = { "A", 0, -10629, 1037 }, + ["Shadowprey Village, Desolace"] = { "H", 1, -1768, 3264 }, + ["Shatterblade Post, Grim Reaches"] = { "H", 0, -4013, -5305 }, + ["Shimmerstar Lake, Moonwhisper Coast"] = { false, 1, 6705, -6476 }, + ["Slickwick Oil Rig, Tanaris"] = { "H", 1, -9290, -1919 }, + ["Southshore Ferry, Hillsbrad"] = { false, 0, -986, -548 }, + ["Southshore, Hillsbrad"] = { "A", 0, -711, -515 }, + ["Sparkwater Port, Durotar"] = { "H", 1, 819, -5006 }, + ["Splintertree Post, Ashenvale"] = { "H", 1, 2302, -2525 }, + ["Steepcliff Port, Tirisfal Glades"] = { "H", 0, 2009, 2842 }, + ["Stillward Church, Gilneas"] = { "H", 0, -1301, 1161 }, + ["Stonard, Swamp of Sorrows"] = { "H", 0, -10457, -3279 }, + ["Stonetalon Peak, Stonetalon Mountains"] = { "A", 1, 2681, 1462 }, + ["Stormbreaker Point, Balor"] = { "H", 0, -8532, 2529 }, + ["Stormwind Harbor, Stormwind"] = { "A", 0, -8476, 1349 }, + ["Stormwind, Elwynn Forest"] = { "A", 0, -8841, 490 }, + ["Sun Rock Retreat, Stonetalon Mountains"] = { "H", 1, 967, 1040 }, + ["Talonbranch Glade, Felwood"] = { "A", 1, 6206, -1950 }, + ["Talrendis Point, Azshara"] = { "A", 1, 2722, -3881 }, + ["Tarren Mill, Hillsbrad"] = { "H", 0, 0, -860 }, + ["Tel Co. Basecamp, Tel'Abim"] = { false, 1, -8893, -6455 }, + ["Thalanaar, Feralas"] = { "A", 1, -4492, -776 }, + ["The Sepulcher, Silverpine Forest"] = { "H", 0, 479, 1537 }, + ["Thelsamar, Loch Modan"] = { "A", 0, -5422, -2930 }, + ["Theramore, Dustwallow Marsh"] = { "A", 1, -3825, -4517 }, + ["Thorium Point, Searing Gorge"] = { "A", 0, -6553, -1168 }, + ["Thunder Bluff, Mulgore"] = { "H", 1, -1197, 30 }, + ["Undercity, Tirisfal"] = { "H", 0, 1569, 268 }, + ["Valormok, Azshara"] = { "H", 1, 3662, -4390 }, + ["Zoram'gar Outpost, Ashenvale"] = { "H", 1, 3375, 997 }, +} +local e = { + { "Aerie Peak, The Hinterlands", "Chillwind Camp, Western Plaguelands", 50 }, + { "Aerie Peak, The Hinterlands", "Ironforge, Dun Morogh", 240 }, + { "Aerie Peak, The Hinterlands", "Light's Hope Chapel, Eastern Plaguelands", 154 }, + { "Aerie Peak, The Hinterlands", "Refuge Pointe, Arathi", 67 }, + { "Aerie Peak, The Hinterlands", "Southshore, Hillsbrad", 64 }, + { "Alah'Thalas, Thalassian Highlands", "Chillwind Camp, Western Plaguelands", 135 }, + { "Alah'Thalas, Thalassian Highlands", "Light's Hope Chapel, Eastern Plaguelands", 123 }, + { "Alah'Thalas, Thalassian Highlands", "Southshore, Hillsbrad", 192 }, + { "Ambershire, Northwind", "Stormwind, Elwynn Forest", 106 }, + { "Ambershire, Northwind", "Thorium Point, Searing Gorge", 79 }, + { "Astranaar, Ashenvale", "Auberdine, Darkshore", 138 }, + { "Astranaar, Ashenvale", "Bael Hardul, Stonetalon Mountains", 80 }, + { "Astranaar, Ashenvale", "Stonetalon Peak, Stonetalon Mountains", 144 }, + { "Astranaar, Ashenvale", "Talrendis Point, Azshara", 138 }, + { "Auberdine, Darkshore", "Astranaar, Ashenvale", 138 }, + { "Auberdine, Darkshore", "Feathermoon, Feralas", 438 }, + { "Auberdine, Darkshore", "Moonglade", 141 }, + { "Auberdine, Darkshore", "Nijel's Point, Desolace", 264 }, + { "Auberdine, Darkshore", "Rut'theran Village, Teldrassil", 80 }, + { "Auberdine, Darkshore", "Stonetalon Peak, Stonetalon Mountains", 166 }, + { "Auberdine, Darkshore", "Talonbranch Glade, Felwood", 176 }, + { "Auberdine, Darkshore", "Talrendis Point, Azshara", 281 }, + { "Auberdine, Darkshore", "Theramore, Dustwallow Marsh", 633 }, + { "Bael Hardul, Stonetalon Mountains", "Astranaar, Ashenvale", 80 }, + { "Bloodvenom Post, Felwood", "Crossroads, The Barrens", 226 }, + { "Bloodvenom Post, Felwood", "Everlook, Winterspring", 178 }, + { "Bloodvenom Post, Felwood", "Moonglade", 147 }, + { "Bloodvenom Post, Felwood", "Orgrimmar, Durotar", 236 }, + { "Bloodvenom Post, Felwood", "Valormok, Azshara", 217 }, + { "Booty Bay, Stranglethorn", "Caelan's Rest, Lapidis Isle", 121 }, + { "Booty Bay, Stranglethorn", "Darkshire, Duskwood", 160 }, + { "Booty Bay, Stranglethorn", "Grom'gol, Stranglethorn", 76 }, + { "Booty Bay, Stranglethorn", "Kargath, Badlands", 381 }, + { "Booty Bay, Stranglethorn", "Maul'Ogg Refuge, Gillijim's Isle", 61 }, + { "Booty Bay, Stranglethorn", "Sentinel Hill, Westfall", 170 }, + { "Booty Bay, Stranglethorn", "Stonard, Swamp of Sorrows", 250 }, + { "Booty Bay, Stranglethorn", "Stormwind, Elwynn Forest", 206 }, + { "Brackenwall Village, Dustwallow Marsh", "Crossroads, The Barrens", 151 }, + { "Brackenwall Village, Dustwallow Marsh", "Gadgetzan, Tanaris", 208 }, + { "Brackenwall Village, Dustwallow Marsh", "Orgrimmar, Durotar", 203 }, + { "Brackenwall Village, Dustwallow Marsh", "Thunder Bluff, Mulgore", 210 }, + { "Caelan's Rest, Lapidis Isle", "Booty Bay, Stranglethorn", 121 }, + { "Camp Mojache, Feralas", "Cenarion Hold, Silithus", 122 }, + { "Camp Mojache, Feralas", "Crossroads, The Barrens", 247 }, + { "Camp Mojache, Feralas", "Freewind Post, Thousand Needles", 100 }, + { "Camp Mojache, Feralas", "Gadgetzan, Tanaris", 187 }, + { "Camp Mojache, Feralas", "Shadowprey Village, Desolace", 188 }, + { "Camp Mojache, Feralas", "Thunder Bluff, Mulgore", 243 }, + { "Camp Taurajo, The Barrens", "Crossroads, The Barrens", 76 }, + { "Camp Taurajo, The Barrens", "Freewind Post, Thousand Needles", 130 }, + { "Camp Taurajo, The Barrens", "Mudsprocket, Dustwallow Marsh", 104 }, + { "Camp Taurajo, The Barrens", "Thunder Bluff, Mulgore", 81 }, + { "Canoe: Darkshore - Icepoint Rock", "Canoe: Icepoint Rock - Darkshore", 279 }, + { "Canoe: Icepoint Rock - Darkshore", "Canoe: Darkshore - Icepoint Rock", 279 }, + { "Cenarion Hold, Silithus", "Camp Mojache, Feralas", 122 }, + { "Cenarion Hold, Silithus", "Feathermoon, Feralas", 164 }, + { "Cenarion Hold, Silithus", "Gadgetzan, Tanaris", 177 }, + { "Cenarion Hold, Silithus", "Marshal's Refuge, Un'Goro Crater", 86 }, + { "Chillwind Camp, Western Plaguelands", "Aerie Peak, The Hinterlands", 50 }, + { "Chillwind Camp, Western Plaguelands", "Alah'Thalas, Thalassian Highlands", 141 }, + { "Chillwind Camp, Western Plaguelands", "Ironforge, Dun Morogh", 244 }, + { "Chillwind Camp, Western Plaguelands", "Light's Hope Chapel, Eastern Plaguelands", 137 }, + { "Chillwind Camp, Western Plaguelands", "Southshore, Hillsbrad", 80 }, + { "Crossroads, The Barrens", "Bloodvenom Post, Felwood", 226 }, + { "Crossroads, The Barrens", "Brackenwall Village, Dustwallow Marsh", 151 }, + { "Crossroads, The Barrens", "Camp Mojache, Feralas", 236 }, + { "Crossroads, The Barrens", "Camp Taurajo, The Barrens", 76 }, + { "Crossroads, The Barrens", "Freewind Post, Thousand Needles", 173 }, + { "Crossroads, The Barrens", "Gadgetzan, Tanaris", 282 }, + { "Crossroads, The Barrens", "Orgrimmar, Durotar", 134 }, + { "Crossroads, The Barrens", "Ratchet, The Barrens", 64 }, + { "Crossroads, The Barrens", "Splintertree Post, Ashenvale", 150 }, + { "Crossroads, The Barrens", "Sun Rock Retreat, Stonetalon Mountains", 140 }, + { "Crossroads, The Barrens", "Thunder Bluff, Mulgore", 171 }, + { "Crossroads, The Barrens", "Valormok, Azshara", 158 }, + { "Crossroads, The Barrens", "Zoram'gar Outpost, Ashenvale", 213 }, + { "Crown Guard Tower, Eastern Plaguelands", "Plaguewood Tower, Eastern Plaguelands", 48 }, + { "Darkshire, Duskwood", "Booty Bay, Stranglethorn", 160 }, + { "Darkshire, Duskwood", "Lakeshire, Redridge", 56 }, + { "Darkshire, Duskwood", "Nethergarde Keep, Blasted Lands", 91 }, + { "Darkshire, Duskwood", "Sentinel Hill, Westfall", 87 }, + { "Darkshire, Duskwood", "Stormwind, Elwynn Forest", 82 }, + { "Dun Agrath, Wetlands", "Ironforge Airfields, Dun Morogh", 29 }, + { "Dun Agrath, Wetlands", "Menethil Harbor, Wetlands", 20 }, + { "Dun Kithas, Grim Reaches", "Thelsamar, Loch Modan", 107 }, + { "Eastwall Tower, Eastern Plaguelands", "Plaguewood Tower, Eastern Plaguelands", 59 }, + { "Everlook, Winterspring", "Bloodvenom Post, Felwood", 183 }, + { "Everlook, Winterspring", "Moonglade", 114 }, + { "Everlook, Winterspring", "Narvalis Point, Moonwhisper Coast", 247 }, + { "Everlook, Winterspring", "Nordanaar, Hyjal", 250 }, + { "Everlook, Winterspring", "Orgrimmar, Durotar", 285 }, + { "Everlook, Winterspring", "Shimmerstar Lake, Moonwhisper Coast", 66 }, + { "Everlook, Winterspring", "Talonbranch Glade, Felwood", 115 }, + { "Everlook, Winterspring", "Talrendis Point, Azshara", 165 }, + { "Everlook, Winterspring", "Valormok, Azshara", 126 }, + { "Feathermoon, Feralas", "Auberdine, Darkshore", 438 }, + { "Feathermoon, Feralas", "Cenarion Hold, Silithus", 149 }, + { "Feathermoon, Feralas", "Nijel's Point, Desolace", 212 }, + { "Feathermoon, Feralas", "Thalanaar, Feralas", 145 }, + { "Flame Crest, Burning Steppes", "Kargath, Badlands", 94 }, + { "Flame Crest, Burning Steppes", "Stonard, Swamp of Sorrows", 199 }, + { "Flame Crest, Burning Steppes", "Thorium Point, Searing Gorge", 67 }, + { "Freewind Post, Thousand Needles", "Camp Mojache, Feralas", 100 }, + { "Freewind Post, Thousand Needles", "Camp Taurajo, The Barrens", 130 }, + { "Freewind Post, Thousand Needles", "Crossroads, The Barrens", 173 }, + { "Freewind Post, Thousand Needles", "Gadgetzan, Tanaris", 81 }, + { "Freewind Post, Thousand Needles", "Thunder Bluff, Mulgore", 211 }, + { "Gadgetzan, Tanaris", "Brackenwall Village, Dustwallow Marsh", 208 }, + { "Gadgetzan, Tanaris", "Camp Mojache, Feralas", 187 }, + { "Gadgetzan, Tanaris", "Cenarion Hold, Silithus", 185 }, + { "Gadgetzan, Tanaris", "Crossroads, The Barrens", 282 }, + { "Gadgetzan, Tanaris", "Freewind Post, Thousand Needles", 81 }, + { "Gadgetzan, Tanaris", "Marshal's Refuge, Un'Goro Crater", 97 }, + { "Gadgetzan, Tanaris", "Orgrimmar, Durotar", 328 }, + { "Gadgetzan, Tanaris", "Slickwick Oil Rig, Tanaris", 104 }, + { "Gadgetzan, Tanaris", "Tel Co. Basecamp, Tel'Abim", 111 }, + { "Gadgetzan, Tanaris", "Thalanaar, Feralas", 166 }, + { "Gadgetzan, Tanaris", "Theramore, Dustwallow Marsh", 144 }, + { "Gadgetzan, Tanaris", "Thunder Bluff, Mulgore", 272 }, + { "Gazzik's Workshop, Blackstone Island", "Sparkwater Port, Durotar", 115 }, + { "Gnomeregan Reclamation Facility, Dun Morogh", "Ironforge, Dun Morogh", 61 }, + { "Grom'gol, Stranglethorn", "Booty Bay, Stranglethorn", 76 }, + { "Grom'gol, Stranglethorn", "Kargath, Badlands", 306 }, + { "Grom'gol, Stranglethorn", "Stonard, Swamp of Sorrows", 176 }, + { "Grom'gol, Stranglethorn", "Stormbreaker Point, Balor", 190 }, + { "Hammerfall, Arathi", "Kargath, Badlands", 243 }, + { "Hammerfall, Arathi", "Revantusk Village, The Hinterlands", 85 }, + { "Hammerfall, Arathi", "Shatterblade Post, Grim Reaches", 186 }, + { "Hammerfall, Arathi", "Tarren Mill, Hillsbrad", 109 }, + { "Hammerfall, Arathi", "Undercity, Tirisfal", 243 }, + { "Ironforge Airfields, Dun Morogh", "Dun Agrath, Wetlands", 25 }, + { "Ironforge Airfields, Dun Morogh", "Ironforge, Dun Morogh", 80 }, + { "Ironforge, Dun Morogh", "Aerie Peak, The Hinterlands", 279 }, + { "Ironforge, Dun Morogh", "Chillwind Camp, Western Plaguelands", 276 }, + { "Ironforge, Dun Morogh", "Gnomeregan Reclamation Facility, Dun Morogh", 61 }, + { "Ironforge, Dun Morogh", "Ironforge Airfields, Dun Morogh", 80 }, + { "Ironforge, Dun Morogh", "Light's Hope Chapel, Eastern Plaguelands", 327 }, + { "Ironforge, Dun Morogh", "Menethil Harbor, Wetlands", 83 }, + { "Ironforge, Dun Morogh", "Refuge Pointe, Arathi", 237 }, + { "Ironforge, Dun Morogh", "Southshore, Hillsbrad", 193 }, + { "Ironforge, Dun Morogh", "Stormwind, Elwynn Forest", 197 }, + { "Ironforge, Dun Morogh", "Thelsamar, Loch Modan", 95 }, + { "Ironforge, Dun Morogh", "Thorium Point, Searing Gorge", 81 }, + { "Kargath, Badlands", "Booty Bay, Stranglethorn", 381 }, + { "Kargath, Badlands", "Flame Crest, Burning Steppes", 81 }, + { "Kargath, Badlands", "Grom'gol, Stranglethorn", 293 }, + { "Kargath, Badlands", "Hammerfall, Arathi", 246 }, + { "Kargath, Badlands", "Stonard, Swamp of Sorrows", 263 }, + { "Kargath, Badlands", "Thorium Point, Searing Gorge", 53 }, + { "Kargath, Badlands", "Undercity, Tirisfal", 466 }, + { "Lakeshire, Redridge", "Darkshire, Duskwood", 57 }, + { "Lakeshire, Redridge", "Morgan's Vigil, Burning Steppes", 57 }, + { "Lakeshire, Redridge", "Sentinel Hill, Westfall", 122 }, + { "Lakeshire, Redridge", "Stormwind, Elwynn Forest", 105 }, + { "Light's Hope Chapel, Eastern Plaguelands", "Aerie Peak, The Hinterlands", 152 }, + { "Light's Hope Chapel, Eastern Plaguelands", "Alah'Thalas, Thalassian Highlands", 123 }, + { "Light's Hope Chapel, Eastern Plaguelands", "Chillwind Camp, Western Plaguelands", 137 }, + { "Light's Hope Chapel, Eastern Plaguelands", "Ironforge, Dun Morogh", 345 }, + { "Light's Hope Chapel, Eastern Plaguelands", "Revantusk Village, The Hinterlands", 130 }, + { "Light's Hope Chapel, Eastern Plaguelands", "Undercity, Tirisfal", 245 }, + { "Marshal's Refuge, Un'Goro Crater", "Cenarion Hold, Silithus", 88 }, + { "Marshal's Refuge, Un'Goro Crater", "Gadgetzan, Tanaris", 97 }, + { "Maul'Ogg Refuge, Gillijim's Isle", "Booty Bay, Stranglethorn", 61 }, + { "Menethil Harbor, Wetlands", "Dun Agrath, Wetlands", 20 }, + { "Menethil Harbor, Wetlands", "Ironforge, Dun Morogh", 83 }, + { "Menethil Harbor, Wetlands", "Refuge Pointe, Arathi", 106 }, + { "Menethil Harbor, Wetlands", "Southshore Ferry, Hillsbrad", 195 }, + { "Menethil Harbor, Wetlands", "Southshore, Hillsbrad", 100 }, + { "Menethil Harbor, Wetlands", "Thelsamar, Loch Modan", 143 }, + { "Moonglade", "Auberdine, Darkshore", 133 }, + { "Moonglade", "Bloodvenom Post, Felwood", 147 }, + { "Moonglade", "Everlook, Winterspring", 114 }, + { "Moonglade", "Talonbranch Glade, Felwood", 58 }, + { "Moonhoof Village, Moonwhisper Coast", "Shimmerstar Lake, Moonwhisper Coast", 47 }, + { "Morgan's Vigil, Burning Steppes", "Lakeshire, Redridge", 57 }, + { "Morgan's Vigil, Burning Steppes", "Nethergarde Keep, Blasted Lands", 196 }, + { "Morgan's Vigil, Burning Steppes", "Stormwind, Elwynn Forest", 141 }, + { "Morgan's Vigil, Burning Steppes", "Thorium Point, Searing Gorge", 97 }, + { "Mudsprocket, Dustwallow Marsh", "Camp Taurajo, The Barrens", 104 }, + { "Narvalis Point, Moonwhisper Coast", "Everlook, Winterspring", 247 }, + { "Narvalis Point, Moonwhisper Coast", "Shimmerstar Lake, Moonwhisper Coast", 71 }, + { "Narvalis Point, Moonwhisper Coast", "Talrendis Point, Azshara", 262 }, + { "Nethergarde Keep, Blasted Lands", "Darkshire, Duskwood", 86 }, + { "Nethergarde Keep, Blasted Lands", "Morgan's Vigil, Burning Steppes", 195 }, + { "Nethergarde Keep, Blasted Lands", "Stormwind, Elwynn Forest", 177 }, + { "Nighthaven, Moonglade", "Rut'theran Village, Teldrassil", 142 }, + { "Nighthaven, Moonglade", "Thunder Bluff, Mulgore", 510 }, + { "Nijel's Point, Desolace", "Auberdine, Darkshore", 264 }, + { "Nijel's Point, Desolace", "Feathermoon, Feralas", 217 }, + { "Nijel's Point, Desolace", "Stonetalon Peak, Stonetalon Mountains", 112 }, + { "Nijel's Point, Desolace", "Theramore, Dustwallow Marsh", 288 }, + { "Nordanaar, Hyjal", "Everlook, Winterspring", 250 }, + { "Northpass Tower, Eastern Plaguelands", "Plaguewood Tower, Eastern Plaguelands", 46 }, + { "Orgrimmar, Durotar", "Bloodvenom Post, Felwood", 236 }, + { "Orgrimmar, Durotar", "Brackenwall Village, Dustwallow Marsh", 214 }, + { "Orgrimmar, Durotar", "Crossroads, The Barrens", 134 }, + { "Orgrimmar, Durotar", "Everlook, Winterspring", 285 }, + { "Orgrimmar, Durotar", "Gadgetzan, Tanaris", 328 }, + { "Orgrimmar, Durotar", "Splintertree Post, Ashenvale", 84 }, + { "Orgrimmar, Durotar", "Thunder Bluff, Mulgore", 197 }, + { "Orgrimmar, Durotar", "Valormok, Azshara", 93 }, + { "Plaguewood Tower, Eastern Plaguelands", "Crown Guard Tower, Eastern Plaguelands", 48 }, + { "Plaguewood Tower, Eastern Plaguelands", "Eastwall Tower, Eastern Plaguelands", 59 }, + { "Plaguewood Tower, Eastern Plaguelands", "Northpass Tower, Eastern Plaguelands", 46 }, + { "Ratchet, The Barrens", "Crossroads, The Barrens", 64 }, + { "Ratchet, The Barrens", "Talrendis Point, Azshara", 123 }, + { "Ratchet, The Barrens", "Theramore, Dustwallow Marsh", 98 }, + { "Ravenshire, Gilneas", "Southshore, Hillsbrad", 83 }, + { "Refuge Pointe, Arathi", "Aerie Peak, The Hinterlands", 67 }, + { "Refuge Pointe, Arathi", "Ironforge, Dun Morogh", 253 }, + { "Refuge Pointe, Arathi", "Menethil Harbor, Wetlands", 106 }, + { "Refuge Pointe, Arathi", "Southshore, Hillsbrad", 81 }, + { "Refuge Pointe, Arathi", "Thelsamar, Loch Modan", 153 }, + { "Revantusk Village, The Hinterlands", "Hammerfall, Arathi", 85 }, + { "Revantusk Village, The Hinterlands", "Light's Hope Chapel, Eastern Plaguelands", 130 }, + { "Revantusk Village, The Hinterlands", "Tarren Mill, Hillsbrad", 149 }, + { "Revantusk Village, The Hinterlands", "Undercity, Tirisfal", 267 }, + { "Rut'theran Village, Teldrassil", "Auberdine, Darkshore", 80 }, + { "Rut'theran Village, Teldrassil", "Nighthaven, Moonglade", 142 }, + { "SI:7 Outpost, Balor", "Sentinel Hill, Westfall", 67 }, + { "Sentinel Hill, Westfall", "Booty Bay, Stranglethorn", 174 }, + { "Sentinel Hill, Westfall", "Darkshire, Duskwood", 91 }, + { "Sentinel Hill, Westfall", "Lakeshire, Redridge", 122 }, + { "Sentinel Hill, Westfall", "SI:7 Outpost, Balor", 67 }, + { "Sentinel Hill, Westfall", "Stormwind, Elwynn Forest", 72 }, + { "Shadowprey Village, Desolace", "Camp Mojache, Feralas", 184 }, + { "Shadowprey Village, Desolace", "Sun Rock Retreat, Stonetalon Mountains", 186 }, + { "Shadowprey Village, Desolace", "Thunder Bluff, Mulgore", 168 }, + { "Shatterblade Post, Grim Reaches", "Hammerfall, Arathi", 186 }, + { "Shimmerstar Lake, Moonwhisper Coast", "Everlook, Winterspring", 66 }, + { "Shimmerstar Lake, Moonwhisper Coast", "Moonhoof Village, Moonwhisper Coast", 47 }, + { "Shimmerstar Lake, Moonwhisper Coast", "Narvalis Point, Moonwhisper Coast", 71 }, + { "Shimmerstar Lake, Moonwhisper Coast", "Talrendis Point, Azshara", 159 }, + { "Shimmerstar Lake, Moonwhisper Coast", "Valormok, Azshara", 110 }, + { "Slickwick Oil Rig, Tanaris", "Gadgetzan, Tanaris", 104 }, + { "Southshore Ferry, Hillsbrad", "Menethil Harbor, Wetlands", 195 }, + { "Southshore, Hillsbrad", "Aerie Peak, The Hinterlands", 64 }, + { "Southshore, Hillsbrad", "Alah'Thalas, Thalassian Highlands", 194 }, + { "Southshore, Hillsbrad", "Chillwind Camp, Western Plaguelands", 76 }, + { "Southshore, Hillsbrad", "Ironforge, Dun Morogh", 193 }, + { "Southshore, Hillsbrad", "Menethil Harbor, Wetlands", 100 }, + { "Southshore, Hillsbrad", "Ravenshire, Gilneas", 83 }, + { "Southshore, Hillsbrad", "Refuge Pointe, Arathi", 69 }, + { "Sparkwater Port, Durotar", "Gazzik's Workshop, Blackstone Island", 106 }, + { "Splintertree Post, Ashenvale", "Crossroads, The Barrens", 150 }, + { "Splintertree Post, Ashenvale", "Orgrimmar, Durotar", 90 }, + { "Splintertree Post, Ashenvale", "Valormok, Azshara", 90 }, + { "Splintertree Post, Ashenvale", "Zoram'gar Outpost, Ashenvale", 156 }, + { "Steepcliff Port, Tirisfal Glades", "Undercity, Tirisfal", 111 }, + { "Stillward Church, Gilneas", "Tarren Mill, Hillsbrad", 77 }, + { "Stonard, Swamp of Sorrows", "Booty Bay, Stranglethorn", 244 }, + { "Stonard, Swamp of Sorrows", "Flame Crest, Burning Steppes", 185 }, + { "Stonard, Swamp of Sorrows", "Grom'gol, Stranglethorn", 176 }, + { "Stonard, Swamp of Sorrows", "Kargath, Badlands", 263 }, + { "Stonetalon Peak, Stonetalon Mountains", "Astranaar, Ashenvale", 144 }, + { "Stonetalon Peak, Stonetalon Mountains", "Auberdine, Darkshore", 166 }, + { "Stonetalon Peak, Stonetalon Mountains", "Nijel's Point, Desolace", 112 }, + { "Stormbreaker Point, Balor", "Grom'gol, Stranglethorn", 190 }, + { "Stormbreaker Point, Balor", "Stormwind Harbor, Stormwind", 42 }, + { "Stormwind Harbor, Stormwind", "Stormbreaker Point, Balor", 42 }, + { "Stormwind, Elwynn Forest", "Ambershire, Northwind", 106 }, + { "Stormwind, Elwynn Forest", "Booty Bay, Stranglethorn", 229 }, + { "Stormwind, Elwynn Forest", "Darkshire, Duskwood", 82 }, + { "Stormwind, Elwynn Forest", "Ironforge, Dun Morogh", 197 }, + { "Stormwind, Elwynn Forest", "Lakeshire, Redridge", 105 }, + { "Stormwind, Elwynn Forest", "Morgan's Vigil, Burning Steppes", 141 }, + { "Stormwind, Elwynn Forest", "Nethergarde Keep, Blasted Lands", 165 }, + { "Stormwind, Elwynn Forest", "Sentinel Hill, Westfall", 72 }, + { "Sun Rock Retreat, Stonetalon Mountains", "Crossroads, The Barrens", 140 }, + { "Sun Rock Retreat, Stonetalon Mountains", "Shadowprey Village, Desolace", 134 }, + { "Sun Rock Retreat, Stonetalon Mountains", "Thunder Bluff, Mulgore", 163 }, + { "Talonbranch Glade, Felwood", "Auberdine, Darkshore", 176 }, + { "Talonbranch Glade, Felwood", "Everlook, Winterspring", 113 }, + { "Talonbranch Glade, Felwood", "Moonglade", 58 }, + { "Talonbranch Glade, Felwood", "Talrendis Point, Azshara", 265 }, + { "Talrendis Point, Azshara", "Astranaar, Ashenvale", 138 }, + { "Talrendis Point, Azshara", "Auberdine, Darkshore", 282 }, + { "Talrendis Point, Azshara", "Everlook, Winterspring", 167 }, + { "Talrendis Point, Azshara", "Narvalis Point, Moonwhisper Coast", 262 }, + { "Talrendis Point, Azshara", "Ratchet, The Barrens", 127 }, + { "Talrendis Point, Azshara", "Shimmerstar Lake, Moonwhisper Coast", 159 }, + { "Talrendis Point, Azshara", "Talonbranch Glade, Felwood", 266 }, + { "Talrendis Point, Azshara", "Theramore, Dustwallow Marsh", 220 }, + { "Tarren Mill, Hillsbrad", "Hammerfall, Arathi", 109 }, + { "Tarren Mill, Hillsbrad", "Revantusk Village, The Hinterlands", 149 }, + { "Tarren Mill, Hillsbrad", "Stillward Church, Gilneas", 77 }, + { "Tarren Mill, Hillsbrad", "The Sepulcher, Silverpine Forest", 89 }, + { "Tarren Mill, Hillsbrad", "Undercity, Tirisfal", 130 }, + { "Tel Co. Basecamp, Tel'Abim", "Gadgetzan, Tanaris", 111 }, + { "Thalanaar, Feralas", "Feathermoon, Feralas", 167 }, + { "Thalanaar, Feralas", "Gadgetzan, Tanaris", 160 }, + { "Thalanaar, Feralas", "Theramore, Dustwallow Marsh", 149 }, + { "The Sepulcher, Silverpine Forest", "Tarren Mill, Hillsbrad", 89 }, + { "The Sepulcher, Silverpine Forest", "Undercity, Tirisfal", 99 }, + { "Thelsamar, Loch Modan", "Dun Kithas, Grim Reaches", 107 }, + { "Thelsamar, Loch Modan", "Ironforge, Dun Morogh", 102 }, + { "Thelsamar, Loch Modan", "Menethil Harbor, Wetlands", 143 }, + { "Thelsamar, Loch Modan", "Refuge Pointe, Arathi", 153 }, + { "Theramore, Dustwallow Marsh", "Auberdine, Darkshore", 581 }, + { "Theramore, Dustwallow Marsh", "Gadgetzan, Tanaris", 144 }, + { "Theramore, Dustwallow Marsh", "Nijel's Point, Desolace", 288 }, + { "Theramore, Dustwallow Marsh", "Ratchet, The Barrens", 98 }, + { "Theramore, Dustwallow Marsh", "Talrendis Point, Azshara", 220 }, + { "Theramore, Dustwallow Marsh", "Thalanaar, Feralas", 153 }, + { "Thorium Point, Searing Gorge", "Ambershire, Northwind", 79 }, + { "Thorium Point, Searing Gorge", "Flame Crest, Burning Steppes", 67 }, + { "Thorium Point, Searing Gorge", "Ironforge, Dun Morogh", 88 }, + { "Thorium Point, Searing Gorge", "Kargath, Badlands", 53 }, + { "Thorium Point, Searing Gorge", "Morgan's Vigil, Burning Steppes", 90 }, + { "Thunder Bluff, Mulgore", "Brackenwall Village, Dustwallow Marsh", 223 }, + { "Thunder Bluff, Mulgore", "Camp Mojache, Feralas", 236 }, + { "Thunder Bluff, Mulgore", "Camp Taurajo, The Barrens", 81 }, + { "Thunder Bluff, Mulgore", "Crossroads, The Barrens", 149 }, + { "Thunder Bluff, Mulgore", "Freewind Post, Thousand Needles", 191 }, + { "Thunder Bluff, Mulgore", "Gadgetzan, Tanaris", 272 }, + { "Thunder Bluff, Mulgore", "Nighthaven, Moonglade", 510 }, + { "Thunder Bluff, Mulgore", "Orgrimmar, Durotar", 197 }, + { "Thunder Bluff, Mulgore", "Shadowprey Village, Desolace", 168 }, + { "Thunder Bluff, Mulgore", "Sun Rock Retreat, Stonetalon Mountains", 163 }, + { "Thunder Bluff, Mulgore", "Valormok, Azshara", 252 }, + { "Undercity, Tirisfal", "Hammerfall, Arathi", 243 }, + { "Undercity, Tirisfal", "Kargath, Badlands", 457 }, + { "Undercity, Tirisfal", "Light's Hope Chapel, Eastern Plaguelands", 245 }, + { "Undercity, Tirisfal", "Revantusk Village, The Hinterlands", 267 }, + { "Undercity, Tirisfal", "Steepcliff Port, Tirisfal Glades", 111 }, + { "Undercity, Tirisfal", "Tarren Mill, Hillsbrad", 130 }, + { "Undercity, Tirisfal", "The Sepulcher, Silverpine Forest", 99 }, + { "Valormok, Azshara", "Bloodvenom Post, Felwood", 217 }, + { "Valormok, Azshara", "Crossroads, The Barrens", 158 }, + { "Valormok, Azshara", "Everlook, Winterspring", 122 }, + { "Valormok, Azshara", "Orgrimmar, Durotar", 113 }, + { "Valormok, Azshara", "Shimmerstar Lake, Moonwhisper Coast", 110 }, + { "Valormok, Azshara", "Splintertree Post, Ashenvale", 87 }, + { "Valormok, Azshara", "Thunder Bluff, Mulgore", 241 }, + { "Zoram'gar Outpost, Ashenvale", "Crossroads, The Barrens", 213 }, + { "Zoram'gar Outpost, Ashenvale", "Splintertree Post, Ashenvale", 157 }, +} +Codex.Taxi.Seed = { n = n, e = e } diff --git a/Freewood-OctoWoW-Codex.toc b/Freewood-OctoWoW-Codex.toc index 20a25e5..d44a8a4 100644 --- a/Freewood-OctoWoW-Codex.toc +++ b/Freewood-OctoWoW-Codex.toc @@ -3,7 +3,7 @@ ## Notes: Learns quests, creatures and drops while you play: who gives and takes a quest, rewards, objectives, drop chances. ## Notes-deDE: Lernt beim Spielen Quests, Kreaturen und Beute: wer eine Quest vergibt und annimmt, Belohnungen, Ziele, Drop-Chancen. ## Author: Lacustat -## Version: 0.1.218 +## Version: 0.1.219 ## Dependencies: Freewood-OctoWoW-Core ## SavedVariablesPerCharacter: FreewoodSnapshot ## OptionalDeps: Freewood-OctoWoW-CodexData, Freewood-OctoWoW-ForeverData @@ -24,6 +24,7 @@ CodexPath.lua CodexMapAPI.lua CodexPathMap.lua CodexTaxi.lua +CodexTaxiSeed.lua CodexTaxiUI.lua CodexTransport.lua CodexSpots.lua