Import VanillaGuide 1.04.2 (mrmr) as upstream baseline
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
<Bindings>
|
||||
<Binding name="VGUIDE_TOGGLE" description="Toggle Vanilla Guide" header="VGUIDE">
|
||||
<!-- VGuide:ToggleMainWindow() -->
|
||||
if VGuide.UI.fMain.tWidgets.frame_MainFrame:IsVisible() then
|
||||
VGuide.UI.fMain.tWidgets.frame_MainFrame:Hide()
|
||||
else
|
||||
VGuide.UI.fMain.tWidgets.frame_MainFrame:Show()
|
||||
end
|
||||
</Binding>
|
||||
<Binding name="VGUIDE_PREV_STEP" description="Go to the Prev Step">
|
||||
<!-- VGuide:PrevStep() -->
|
||||
VGuide.Display:PrevStep(true)
|
||||
VGuide.UI.fMain:RefreshData()
|
||||
</Binding>
|
||||
<Binding name="VGUIDE_NEXT_STEP" description="Go to the Next Step">
|
||||
<!-- VGuide:NextStep() -->
|
||||
VGuide.Display:NextStep()
|
||||
VGuide.UI.fMain:RefreshData()
|
||||
</Binding>
|
||||
<Binding name="VGUIDE_PREV_GUIDE" description="Go to the Prev Guide">
|
||||
<!-- VGuide:PrevGuide() -->
|
||||
VGuide.Display:PrevGuide()
|
||||
VGuide.UI.fMain:RefreshData()
|
||||
</Binding>
|
||||
<Binding name="VGUIDE_NEXT_GUIDE" description="Go to the Next Guide">
|
||||
<!-- VGuide:NextGuide() -->
|
||||
VGuide.Display:NextGuide()
|
||||
VGuide.UI.fMain:RefreshData()
|
||||
</Binding>
|
||||
|
||||
</Bindings>
|
||||
@@ -0,0 +1,230 @@
|
||||
--[[--------------------------------------------------
|
||||
----- VanillaGuide -----
|
||||
------------------
|
||||
Core.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description:
|
||||
Powerleveling Guide for 1.12.1 servers
|
||||
based on Joana Guide. Core FILE!
|
||||
1.00
|
||||
-- Initial Ace2 release
|
||||
1.99a
|
||||
-- Ally addition starter version
|
||||
1.03
|
||||
-- No Changes. Just adjusting "version".
|
||||
1.99x for a beta release was a weird choise.
|
||||
1.04.1
|
||||
-- Vanilla Guide Rewrite
|
||||
The "keybind" problems is forcing me to rethink
|
||||
this entire Addon. Let's see what comes out!
|
||||
-- Two level Debug (let's waste time!)
|
||||
-- Two New object created:
|
||||
.Settings, containing various settings (unneeded?)
|
||||
.GuideTables, containing the actual guides
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
--]]--------------------------------------------------
|
||||
|
||||
--[[--------------------------------------------------
|
||||
Debug:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
debug_info = true
|
||||
--debug_info = false
|
||||
--debug_verbose = true
|
||||
debug_verbose = false
|
||||
|
||||
do
|
||||
function Di(...)
|
||||
if debug_info then
|
||||
for k, v in pairs(arg) do arg[k] = tostring(v) end
|
||||
local s = table.concat(arg, ", ")
|
||||
s = string.gsub(s, "([=:]),", "%1")
|
||||
DEFAULT_CHAT_FRAME:AddMessage("|cFFff6633VGuide info:|r" .. s)
|
||||
end
|
||||
--return s
|
||||
end
|
||||
function Dv(...)
|
||||
if debug_verbose then
|
||||
for k, v in pairs(arg) do arg[k] = tostring(v) end
|
||||
local s = table.concat(arg, ", ")
|
||||
s = string.gsub(s, "([=:]),", "%1")
|
||||
DEFAULT_CHAT_FRAME:AddMessage(" |cFFff6677VGuide debug:|r" .. s)
|
||||
end
|
||||
--return s
|
||||
end
|
||||
function Dtprint (tbl, indent)
|
||||
if not debug_verbose then return end
|
||||
if not indent then indent = 0 end
|
||||
for k, v in pairs(tbl) do
|
||||
formatting = string.rep(" ", indent) .. "[" .. k .."]" .. ": "
|
||||
if type(v) == "table" then
|
||||
Dv(formatting)
|
||||
Dtprint(v, indent+4)
|
||||
elseif type(v) == "boolean" then
|
||||
Dv(formatting .. tostring(v))
|
||||
elseif type(v) == "function" then
|
||||
Dv(formatting .. tostring(v))
|
||||
elseif type(v) == "userdata" then
|
||||
Dv(formatting .. tostring(v))
|
||||
else
|
||||
Dv(formatting .. v)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--[[--------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
--VGuide = AceLibrary("AceAddon-2.0"):new("AceEvent-2.0", "AceDB-2.0", "AceConsole-2.0", "AceDebug-2.0")
|
||||
VGuide = AceLibrary("AceAddon-2.0"):new("AceEvent-2.0", "AceConsole-2.0", "AceDebug-2.0")
|
||||
|
||||
-- Keybindings
|
||||
BINDING_HEADER_VGUIDE = "Vanilla Guide"
|
||||
BINDING_NAME_VGUIDE_TOGGLE = "Toggle Vanilla Guide"
|
||||
BINDING_NAME_VGUIDE_PREV_STEP = "Prev Step"
|
||||
BINDING_NAME_VGUIDE_NEXT_STEP = "Next Step"
|
||||
BINDING_NAME_VGUIDE_PREV_GUIDE = "Prev Guide"
|
||||
BINDING_NAME_VGUIDE_NEXT_GUIDE = "Next Guide"
|
||||
-- Keybindings End
|
||||
|
||||
Dv(" ----- Verbose Debug is turned On -----")
|
||||
Dv(" VGuide Core.lua Start")
|
||||
Dv(" Starting!")
|
||||
Dv(" on: " .. date())
|
||||
|
||||
function VGuide:OnInitialize(Addon_Name)
|
||||
-- fired upon Blizz's Event ADDON_LOADED
|
||||
--Dv(" -- OnInitialize Start")
|
||||
--Dv(" arg1: 'name' --> ", tostring(Addon_Name))
|
||||
--self:Print(self:PrintAddonInfo())
|
||||
|
||||
-- Fires when non-addon-specific saved variables are loaded
|
||||
--self:RegisterEvent("VARIABLES_LOADED")
|
||||
-- Fires when an addon and its saved variables are loaded
|
||||
self:RegisterEvent("ADDON_LOADED")
|
||||
-- Fires immediately before `PLAYER_ENTERING_WORLD` on login and UI reload
|
||||
self:RegisterEvent("PLAYER_LOGIN")
|
||||
-- Fired when the player enters the world, reloads the UI,
|
||||
-- enters/leaves an instance or battleground, or respawns at a graveyard.
|
||||
-- Also fires any other time the player sees a loading screen
|
||||
--self:RegisterEvent("PLAYER_ENTERING_WORLD")
|
||||
self:RegisterEvent("OnProfileEnable")
|
||||
self:RegisterEvent("Ace2_AddonInitialized")
|
||||
self:RegisterEvent("Ace2_AddonEnabled")
|
||||
|
||||
if Addon_Name == "VanillaGuide" then
|
||||
Dv(" -- Event |c00FF3333OnInitialize|r: " .. Addon_Name)
|
||||
end
|
||||
--Dv(" -- OnInitialize End")
|
||||
end
|
||||
|
||||
function VGuide:Ace2_AddonInitialized(addon)
|
||||
--Dv(" -- Ace2_AddonInitialized Start")
|
||||
--self:Print("|c00FF3333"..addon.."|r: VGuide v1.0 Initialized!")
|
||||
if tostring(addon) == "VanillaGuide" then
|
||||
Dv(" -- Event |c00FF3333Ace2_AddonInitialized|r: " .. tostring(addon))
|
||||
end
|
||||
--Dv(" -- Ace2_AddonInitialized End")
|
||||
end
|
||||
|
||||
function VGuide:ADDON_LOADED(name)
|
||||
--Dv(" -- ADDON_LOADED Start")
|
||||
|
||||
if name == "VanillaGuide" then
|
||||
Dv(" -- Event |c00FF3333ADDON_LOADED|r: " .. name)
|
||||
Dv(" |c00FF3333Vanilla Guide|r and its own SavedVariables should be loaded now!")
|
||||
|
||||
end
|
||||
--Dv(" -- ADDON_LOADED End")
|
||||
end
|
||||
|
||||
|
||||
function VGuide:PLAYER_LOGIN()
|
||||
--Dv(" -- PLAYER_LOGIN Start")
|
||||
Dv(" -- Event |c00FF3333PLAYER_LOGIN|r: Player should be logged in now....")
|
||||
--Dv(" -- PLAYER_LOGIN End")
|
||||
end
|
||||
|
||||
function VGuide:OnProfileEnable()
|
||||
Dv(" -- OnProfileEnable Start")
|
||||
Dv(" -- OnProfileEnable End")
|
||||
end
|
||||
|
||||
function VGuide:OnEnable(first)
|
||||
-- fired upon Blizz's Event PLAYER_LOGIN
|
||||
-- guess this is after VARIABLE_LOADED
|
||||
--Dv(" -- OnEnable Start")
|
||||
--Dv(" arg1: 'first' --> ", tostring(first))
|
||||
local _, title = GetAddOnInfo("VanillaGuide")
|
||||
local author = GetAddOnMetadata("VanillaGuide", "Author")
|
||||
local version = GetAddOnMetadata("VanillaGuide", "Version")
|
||||
local CharName = UnitName("player")
|
||||
local RealmName = GetRealmName()
|
||||
local Class = UnitClass("player")
|
||||
local Race = UnitRace("player")
|
||||
local Faction = UnitFactionGroup("player")
|
||||
Di(" Title: " .. title)
|
||||
Di(" Author: " .. author .. " Version: |cccff1919" .. version .. "|r")
|
||||
Dv(" - CharName: " .. CharName)
|
||||
Dv(" - RealmName: " .. RealmName)
|
||||
Dv(" - Class: " .. Class)
|
||||
Dv(" - Race: " .. Race)
|
||||
Dv(" - Faction: " .. Faction)
|
||||
Dv(" ...let's check our old SavedVariables or create a new set...")
|
||||
|
||||
self.Settings = objSettings:new()
|
||||
|
||||
self.Settings:CheckSettings()
|
||||
--self.Settings:PrintSettings()
|
||||
self.GuideTable = objGuideTable:new(self.Settings)
|
||||
self.Display = objDisplay:new(self.Settings, self.GuideTable)
|
||||
self.UI = objUI:new(self.Settings, self.Display)
|
||||
|
||||
|
||||
|
||||
Dv(" -- Event |c00FF3333OnEnable|r: Player is logged in...loading UI!")
|
||||
--Dv(" -- OnEnable End")
|
||||
end
|
||||
|
||||
function VGuide:Ace2_AddonEnabled(addon, first)
|
||||
--Dv(" -- Ace2_AddonEnabled Start")
|
||||
if tostring(addon) == "VanillaGuide" then
|
||||
if first then
|
||||
Dv(" -- Event |c00FF3333Ace2_AddonEnabled|r: " .. tostring(addon) .. " Enabled for the first time!")
|
||||
else
|
||||
Dv(" -- Event |c00FF3333Ace2_AddonEnabled|r: " .. tostring(addon) .. " Enabled after...")
|
||||
end
|
||||
end
|
||||
--Dv(" -- Ace2_AddonEnabled End")
|
||||
end
|
||||
|
||||
function VGuide:OnDisable()
|
||||
-- fired when AddOn is disabled
|
||||
Dv(" -- OnDisable Start")
|
||||
--local db = self.Settings:GetSettingsEntireCharDB()
|
||||
--self.Settings:SetEntireCharDB(db)
|
||||
Dv(" -- OnSidable End")
|
||||
end
|
||||
|
||||
function VGuide:ZONE_CHANGED()
|
||||
Dv(" -- ZONE_CHANGED Start")
|
||||
--[[
|
||||
if GetBindLocation() == GetSubZoneText() then
|
||||
if self:IsShowInChat() then
|
||||
self:Print(self:GetMessage())
|
||||
end
|
||||
if self:IsShowOnScreen() then
|
||||
UIErrorsFrame:AddMessage(self:GetMessage(), 1.0, 1.0, 1.0, 5.0)
|
||||
end
|
||||
end
|
||||
]]
|
||||
Dv(" -- ZONE_CHANGED End")
|
||||
end
|
||||
|
||||
Dv(" VGuide Core.lua End")
|
||||
return VGuide
|
||||
+184
@@ -0,0 +1,184 @@
|
||||
--[[--------------------------------------------------
|
||||
----- VanillaGuide -----
|
||||
------------------
|
||||
Display.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description:
|
||||
The Display object keeps track of what
|
||||
diplayed in the Main Frame
|
||||
1.00
|
||||
-- Initial Ace2 release
|
||||
1.99a
|
||||
-- Ally addition starter version
|
||||
1.03
|
||||
-- No Changes. Just adjusting "version".
|
||||
1.99x for a beta release was a weird choise.
|
||||
1.04.1
|
||||
-- This will be the object containing what the
|
||||
MainFrame will display.
|
||||
It'll communicate with the GuideTable object
|
||||
getting guides and steps from there...hopefully...
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
|
||||
--local VGuide = VGuide
|
||||
Dv(" VGuide Display.lua Start")
|
||||
|
||||
objDisplay = {}
|
||||
objDisplay.__index = objDisplay
|
||||
|
||||
function objDisplay:new(oSettings, oGuideTables)
|
||||
local obj = {}
|
||||
setmetatable(obj, self)
|
||||
|
||||
local tGuideValues = oSettings:GetSettingsGuideValues()
|
||||
|
||||
obj.CurrentStep = tGuideValues.Step
|
||||
obj.CurrentGuideID = tGuideValues.GuideID
|
||||
obj.CurrentStepCount = nil
|
||||
|
||||
obj.GuideTitle = nil
|
||||
obj.StepFrameDisplay = nil
|
||||
obj.ScrollFrameDisplay = {}
|
||||
obj.StepInfoDisplay = {}
|
||||
|
||||
obj.ScrollFrameDisplayWipe = function(self)
|
||||
for k,_ in ipairs(obj.ScrollFrameDisplay) do
|
||||
obj.ScrollFrameDisplay[k] = nil
|
||||
end
|
||||
end
|
||||
|
||||
obj.StepInfoDisplayWipe = function(self)
|
||||
for k,_ in ipairs(obj.StepInfoDisplay) do
|
||||
obj.StepInfoDisplay[k] = nil
|
||||
end
|
||||
end
|
||||
|
||||
obj.RetriveData = function(self)
|
||||
local t = oGuideTables:GetGuide(obj.CurrentGuideID)
|
||||
--Dtprint(t, 4)
|
||||
local count = 0
|
||||
obj.GuideTitle = t.title
|
||||
obj.StepFrameDisplay = t.items[obj.CurrentStep].str
|
||||
obj:ScrollFrameDisplayWipe()
|
||||
obj:StepInfoDisplayWipe()
|
||||
for k,v in ipairs(t.items) do
|
||||
count = count + 1
|
||||
obj.ScrollFrameDisplay[k] = v.str
|
||||
obj.StepInfoDisplay[k] = {}
|
||||
obj.StepInfoDisplay[k].x = v.x or nil
|
||||
obj.StepInfoDisplay[k].y = v.y or nil
|
||||
obj.StepInfoDisplay[k].zone = v.zone or nil
|
||||
end
|
||||
obj.CurrentStepCount = count
|
||||
obj:UpdateGuideValuesSettings()
|
||||
end
|
||||
|
||||
obj.RetriveTableDDM = function(self)
|
||||
local t = oGuideTables:GetTableDDM()
|
||||
return t
|
||||
end
|
||||
|
||||
obj.UpdateGuideValuesSettings = function(self)
|
||||
tGuideValues.Step = obj.CurrentStep
|
||||
tGuideValues.GuideID = obj.CurrentGuideID
|
||||
oSettings:SetSettingsGuideValues(tGuideValues)
|
||||
end
|
||||
|
||||
obj.GuideByID = function(self, nGuideID)
|
||||
local bChange = false
|
||||
obj.CurrentGuideID = nGuideID
|
||||
obj.CurrentStep = 1
|
||||
obj:RetriveData()
|
||||
bChange = true
|
||||
|
||||
return bChange
|
||||
end
|
||||
|
||||
obj.StepByID = function(self, nStep)
|
||||
obj.CurrentStep = nStep
|
||||
obj:RetriveData()
|
||||
end
|
||||
|
||||
-- bMode tells us if we need to position CurrentStep to the last
|
||||
-- step of the guide (in case we used PrevStep)
|
||||
obj.PrevGuide = function(self, bPrevStepBackGuide)
|
||||
if obj.CurrentGuideID > 1 then
|
||||
obj.CurrentGuideID = obj.CurrentGuideID - 1
|
||||
obj.CurrentStep = 1
|
||||
obj:RetriveData()
|
||||
if bPrevStepBackGuide then
|
||||
obj.CurrentStep = obj.CurrentStepCount
|
||||
obj.StepFrameDisplay = obj.ScrollFrameDisplay[obj.CurrentStep]
|
||||
end
|
||||
else
|
||||
Dv(" -- Already at GuideID 1")
|
||||
end
|
||||
end
|
||||
|
||||
obj.NextGuide = function(self)
|
||||
if obj.CurrentGuideID < oGuideTables.GuideCount then
|
||||
obj.CurrentGuideID = obj.CurrentGuideID + 1
|
||||
obj.CurrentStep = 1
|
||||
obj:RetriveData()
|
||||
else
|
||||
Dv(" -- Already at last GuideID (" .. oGuideTables.GuideCount .. ")")
|
||||
end
|
||||
end
|
||||
|
||||
obj.PrevStep = function(self)
|
||||
if obj.CurrentStep > 1 then
|
||||
obj.CurrentStep = obj.CurrentStep - 1
|
||||
obj.StepFrameDisplay = obj.ScrollFrameDisplay[obj.CurrentStep]
|
||||
obj:UpdateGuideValuesSettings()
|
||||
else
|
||||
obj:PrevGuide(true)
|
||||
end
|
||||
end
|
||||
|
||||
obj.NextStep = function(self)
|
||||
if obj.CurrentStep < obj.CurrentStepCount then
|
||||
obj.CurrentStep = obj.CurrentStep + 1
|
||||
obj.StepFrameDisplay = obj.ScrollFrameDisplay[obj.CurrentStep]
|
||||
obj:UpdateGuideValuesSettings()
|
||||
else
|
||||
obj:NextGuide()
|
||||
end
|
||||
end
|
||||
|
||||
obj.GetCurrentStep = function(self)
|
||||
return obj.CurrentStep
|
||||
end
|
||||
obj.GetCurrentGuideID = function(self)
|
||||
return obj.CurrentGuideID
|
||||
end
|
||||
obj.GetCurrentStepCount = function(self)
|
||||
return obj.CurrentStepCount
|
||||
end
|
||||
obj.GetCurrentStepInfo = function(self)
|
||||
return obj.StepInfoDisplay[obj.CurrentStep]
|
||||
end
|
||||
|
||||
obj.GetStepLabel = function(self)
|
||||
return obj.StepFrameDisplay
|
||||
end
|
||||
obj.GetGuideTitle = function(self)
|
||||
return obj.GuideTitle
|
||||
end
|
||||
|
||||
obj.GetScrollFrameDisplay = function(self)
|
||||
return obj.ScrollFrameDisplay
|
||||
end
|
||||
|
||||
obj:RetriveData()
|
||||
|
||||
return obj
|
||||
end
|
||||
|
||||
Dv(" VGuide Display.lua End")
|
||||
@@ -0,0 +1,158 @@
|
||||
--[[--------------------------------------------------
|
||||
----- VanillaGuide -----
|
||||
------------------
|
||||
Frame_AboutFrame.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description:
|
||||
About Frame Object
|
||||
1.00
|
||||
-- Initial Ace2 release
|
||||
1.99a
|
||||
-- Ally addition starter version
|
||||
1.03
|
||||
-- No Changes. Just adjusting "version".
|
||||
1.99x for a beta release was a weird choise.
|
||||
1.04.1
|
||||
-- About Frame object
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
|
||||
--local VGuide = VGuide
|
||||
Dv(" VGuide Frame_AboutFrame.lua Start")
|
||||
|
||||
objAboutFrame = {}
|
||||
objAboutFrame.__index = objAboutFrame
|
||||
|
||||
--function objAboutFrame:new(fParent, tTexture, sCharInfo)
|
||||
function objAboutFrame:new(fParent, tTexture, oSettings)
|
||||
fParent = fParent or nil
|
||||
local obj = {}
|
||||
setmetatable(obj, self)
|
||||
|
||||
--local version = GetAddOnMetadata("VanillaGuide", "Version")
|
||||
local version = GetAddOnMetadata("VanillaGuide", "Version")
|
||||
|
||||
local sAboutTextHorde = "|cccff1919Vanilla|ccceeeeeeGuide" ..
|
||||
" |ccca1a1a1v|ccc4a4aa1" .. version .. "|r" ..
|
||||
"\n\n\n|ccca1a1a1A 'remake' of the original|r" ..
|
||||
"\n|cccff1919J|ccceeeeeeoana`s |cccff1919Horde|ccceeeeee Leveling Guide.|r" ..
|
||||
"\n|ccca1a1a1in an in-game addon.\n" ..
|
||||
"\n Made in |ccca11919mrmr|r|ccca1a1a1!|r"
|
||||
local sAboutTextAlliance = "|cccff1919Vanilla|ccceeeeeeGuide" ..
|
||||
" |ccca1a1a1v|ccc4a4aa1" .. version .. "|r" ..
|
||||
"\n\n\n|ccca1a1a1A 'remake' of the original|r" ..
|
||||
"\n|ccc3939aaB|ccceeeeeerian |ccc3939aaKopps|ccceeeeee Leveling Guide.|r" ..
|
||||
"\n|ccca1a1a1in an in-game addon.\n" ..
|
||||
"\n Made in |ccca11919mrmr|r|ccca1a1a1!|r"
|
||||
|
||||
local sAboutText = ""
|
||||
|
||||
local tCharInfo = oSettings:GetSettingsCharInfo()
|
||||
|
||||
if tCharInfo.Faction == "Horde" then
|
||||
sAboutText = sAboutTextHorde
|
||||
else
|
||||
sAboutText = sAboutTextAlliance
|
||||
end
|
||||
|
||||
local function Render_AF(fParent, tTexture, sName)
|
||||
local frame = CreateFrame("Frame", sName)
|
||||
frame:SetFrameStrata("TOOLTIP")
|
||||
frame:SetFrameLevel(8)
|
||||
frame:SetWidth(195)
|
||||
frame:SetHeight(125)
|
||||
frame:SetScale(1)
|
||||
frame:SetPoint("BOTTOMLEFT", fParent, "TOPLEFT", 0, 10)
|
||||
frame:SetBackdrop(tTexture.BACKDROP)
|
||||
frame:SetBackdropColor(.01, .01, .01, .99)
|
||||
frame:SetMovable(true)
|
||||
frame:EnableMouse(true)
|
||||
frame:SetClampedToScreen(true)
|
||||
frame:RegisterForDrag("LeftButton")
|
||||
return frame
|
||||
end
|
||||
local function Render_AFCloseButton(tParent, tTexture, sName)
|
||||
local btn = CreateFrame("Button", sName, tParent)
|
||||
btn:SetWidth(16)
|
||||
btn:SetHeight(16)
|
||||
btn:SetNormalTexture(tTexture.B_CLOSE.NORMAL)
|
||||
btn:SetPushedTexture(tTexture.B_CLOSE.PUSHED)
|
||||
btn:SetHighlightTexture(tTexture.B_CLOSE.HIGHLIGHT)
|
||||
btn:SetPoint("TOPRIGHT", tParent, "TOPRIGHT", -5, -5)
|
||||
return btn
|
||||
end
|
||||
local function Render_AFLabel(tParent, sName, sText)
|
||||
local fs = tParent:CreateFontString(sName, "ARTWORK", "GameFontNormalSmall")
|
||||
fs:SetPoint("CENTER", tParent, "CENTER", 0, 0)
|
||||
fs:SetTextColor(.91, .79, .11, 1)
|
||||
fs:SetJustifyH("CENTER")
|
||||
fs:SetJustifyV("CENTER")
|
||||
fs:SetText(sText)
|
||||
return fs
|
||||
end
|
||||
|
||||
-------------------------------
|
||||
--- Creation
|
||||
-------------------------------
|
||||
obj.tWidgets = {}
|
||||
|
||||
-- About Frame
|
||||
obj.tWidgets.frame_AboutFrame = Render_AF(fParent, tTexture, "VG_AboutFrame")
|
||||
obj.tWidgets.button_CloseButton = Render_AFCloseButton(obj.tWidgets.frame_AboutFrame, tTexture, nil)
|
||||
obj.tWidgets.fs_AboutFrame = Render_AFLabel(obj.tWidgets.frame_AboutFrame, nil, sAboutText)
|
||||
|
||||
-------------------------------
|
||||
--- UI Events Handling
|
||||
-------------------------------
|
||||
obj.tWidgets.frame_AboutFrame:SetScript("OnMouseDown", function()
|
||||
if arg1 == "LeftButton" and not this.isMoving then
|
||||
this:StartMoving();
|
||||
this.isMoving = true;
|
||||
end
|
||||
end)
|
||||
obj.tWidgets.frame_AboutFrame:SetScript("OnMouseUp", function()
|
||||
if arg1 == "LeftButton" and this.isMoving then
|
||||
this:StopMovingOrSizing();
|
||||
this.isMoving = false;
|
||||
end
|
||||
end)
|
||||
obj.tWidgets.frame_AboutFrame:SetScript("OnHide", function()
|
||||
if this.isMoving then
|
||||
this:StopMovingOrSizing();
|
||||
this.isMoving = false;
|
||||
end
|
||||
end)
|
||||
obj.tWidgets.button_CloseButton:SetScript("OnClick", function()
|
||||
local frame = this:GetParent()
|
||||
frame:Hide()
|
||||
end)
|
||||
-------------------------------
|
||||
--- Initialization
|
||||
-------------------------------
|
||||
obj.tWidgets.frame_AboutFrame:Hide()
|
||||
--obj.tWidgets.frame_AboutFrame:Show()
|
||||
|
||||
obj.ShowFrame = function(self)
|
||||
local f = obj.tWidgets.frame_AboutFrame
|
||||
if not f:IsVisible() then
|
||||
f:Show()
|
||||
end
|
||||
end
|
||||
|
||||
obj.HideFrame = function(self)
|
||||
local f = obj.tWidgets.frame_AboutFrame
|
||||
if f:IsVisible() then
|
||||
f:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
return obj
|
||||
end
|
||||
|
||||
Dv(" VGuide Frame_AboutFrame.lua End")
|
||||
@@ -0,0 +1,970 @@
|
||||
--[[--------------------------------------------------
|
||||
----- VanillaGuide -----
|
||||
------------------
|
||||
Frame_MainFrame.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description:
|
||||
Main Frame Object
|
||||
1.00
|
||||
-- Initial Ace2 release
|
||||
1.99a
|
||||
-- Ally addition starter version
|
||||
1.03
|
||||
-- No Changes. Just adjusting "version".
|
||||
1.99x for a beta release was a weird choise.
|
||||
1.04.1
|
||||
-- Main Frame object
|
||||
1.04.2
|
||||
-- Reworked "MetaMapBWP" and renamed to "MetaMap"
|
||||
cause now there's support for MetaMapNotes too
|
||||
Now, the methods are called:
|
||||
obj.RefreshMetaMap()
|
||||
obj.SetMetaMapDestination(self, nX, nY, sZone, title, step, label, mode)
|
||||
Diffentes modes, produces different behaviour,
|
||||
see the source for insight
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
--local VGuide = VGuide
|
||||
Dv(" VGuide Frame_MainFrame.lua Start")
|
||||
|
||||
objMainFrame = {}
|
||||
objMainFrame.__index = objMainFrame
|
||||
|
||||
function objMainFrame:new(fParent, tTexture, oSettings, oDisplay)
|
||||
fParent = fParent or nil
|
||||
local obj = {}
|
||||
setmetatable(obj, self)
|
||||
|
||||
local tUI = oSettings:GetSettingsUI()
|
||||
|
||||
local function Render_MF(fParent, sName, tTexture, tUI)
|
||||
local bLocked = tUI.Locked
|
||||
local tSize = tUI.MainFrameSize
|
||||
local tAnch = tUI.MainFrameAnchor
|
||||
local tColor = tUI.MainFrameColor
|
||||
local frame = CreateFrame("Frame", sName, fParent)
|
||||
frame:ClearAllPoints()
|
||||
frame:SetPoint(tAnch.sFrom, UIParent, tAnch.sTo, tAnch.nX, tAnch.nY)
|
||||
frame:SetMinResize(320,320)
|
||||
frame:SetMaxResize(640,840)
|
||||
frame:SetWidth(tSize.nWidth)
|
||||
frame:SetHeight(tSize.nHeight)
|
||||
frame:SetMovable(true)
|
||||
frame:SetResizable(true)
|
||||
if bLocked then
|
||||
frame:SetMovable(false)
|
||||
frame:SetResizable(false)
|
||||
end
|
||||
frame:SetBackdrop(tTexture.BACKDROP)
|
||||
frame:SetBackdropColor(tColor.nR, tColor.nG, tColor.nB, tColor.nA)
|
||||
frame:EnableMouse(true)
|
||||
frame:SetClampedToScreen(true)
|
||||
frame:RegisterForDrag("LeftButton")
|
||||
frame:SetScript("OnMouseDown", function()
|
||||
local fStep = getglobal("VG_MainFrame_StepFrame")
|
||||
local fScroll = getglobal("VG_MainFrame_ScrollFrame")
|
||||
local StepFrame = tUI.StepFrameVisible
|
||||
local ScrollFrame = tUI.ScrollFrameVisible
|
||||
local bLocked = tUI.Locked
|
||||
local x, y = GetCursorPosition()
|
||||
local s = this:GetEffectiveScale()
|
||||
x = x / s
|
||||
y = y / s
|
||||
local bottom = this:GetBottom();
|
||||
local top = this:GetTop();
|
||||
local left = this:GetLeft();
|
||||
local right = this:GetRight();
|
||||
|
||||
local bottomStep = fStep:GetBottom()
|
||||
local topScroll = fScroll:GetTop()
|
||||
|
||||
if arg1 == "LeftButton" and not this.isMoving and not this.isResizing and not bLocked then
|
||||
if (x < left + 5 and y < bottom + 5) then
|
||||
this:StartSizing("BOTTOMLEFT")
|
||||
this.isResizing = true
|
||||
elseif (x < left + 5 and y > top - 5) then
|
||||
this:StartSizing("TOPLEFT")
|
||||
this.isResizing = true
|
||||
elseif (x > right - 5 and y < bottom + 5) then
|
||||
this:StartSizing("BOTTOMRIGHT")
|
||||
this.isResizing = true
|
||||
elseif (x > right - 5 and y > top - 5) then
|
||||
this:StartSizing("TOPRIGHT")
|
||||
this.isResizing = true
|
||||
elseif (x < left + 5) then
|
||||
this:StartSizing("LEFT")
|
||||
this.isResizing = true
|
||||
elseif (x > right - 5) then
|
||||
this:StartSizing("RIGHT")
|
||||
this.isResizing = true
|
||||
elseif (y < bottom + 5) then
|
||||
this:StartSizing("BOTTOM")
|
||||
this.isResizing = true
|
||||
elseif (y > top - 5) then
|
||||
this:StartSizing("TOP")
|
||||
this.isResizing = true
|
||||
elseif StepFrame and ScrollFrame and
|
||||
(x > left + 5 and y > topScroll and y < bottomStep and x < right +5) then
|
||||
local nH = this:GetHeight()
|
||||
local nGapMin = nH * 0.85 - (nH /2)
|
||||
local nGapMax = nH * 0.45 - (nH /2)
|
||||
local nC = nH / 2
|
||||
local nT = fStep:GetTop()
|
||||
local nMinH = nC - nGapMin - 23
|
||||
local nMaxH = nC - nGapMax - 23
|
||||
fStep:SetMinResize(fStep:GetWidth(), nMinH)
|
||||
fStep:SetMaxResize(fStep:GetWidth(), nMaxH)
|
||||
fStep.isResizing = true
|
||||
fStep:StartSizing("BOTTOM")
|
||||
--elseif
|
||||
else
|
||||
this:StartMoving()
|
||||
this.isMoving = true
|
||||
end
|
||||
end
|
||||
end)
|
||||
frame:SetScript("OnMouseUp", function()
|
||||
local fStep = getglobal("VG_MainFrame_StepFrame")
|
||||
local fSlider = getglobal("VG_SettingsFrame_StepScrollSlider")
|
||||
if arg1 == "LeftButton" then
|
||||
if this.isMoving then
|
||||
this:StopMovingOrSizing()
|
||||
this.isMoving = false
|
||||
local from, _, to, x, y = this:GetPoint(1)
|
||||
tUI.MainFrameAnchor = {
|
||||
sFrom = from,
|
||||
sTo = to,
|
||||
nX = x,
|
||||
nY = y,
|
||||
}
|
||||
oSettings:SetSettingsUI(tUI)
|
||||
elseif this.isResizing then
|
||||
this:StopMovingOrSizing()
|
||||
this.isResizing = false
|
||||
end
|
||||
if fStep.isResizing then
|
||||
fStep:StopMovingOrSizing()
|
||||
fStep.isResizing = false
|
||||
local nH = fStep:GetHeight()
|
||||
local oldVal = fSlider:GetValue()
|
||||
local newVal = math.floor(nH * 100 / this:GetHeight() + 4)
|
||||
if newVal ~= oldVal then
|
||||
fSlider:SetValue(newVal)
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
frame:SetScript("OnSizeChanged", function()
|
||||
local fStep = getglobal("VG_MainFrame_StepFrame")
|
||||
local fScroll = getglobal("VG_MainFrame_ScrollFrame")
|
||||
local StepFrame = tUI.StepFrameVisible
|
||||
local ScrollFrame = tUI.ScrollFrameVisible
|
||||
local StepScroll = tUI.StepScroll
|
||||
local width = this:GetWidth()
|
||||
local height = this:GetHeight()
|
||||
if StepFrame and not ScrollFrame then
|
||||
height = height / StepScroll
|
||||
elseif StepFrame and ScrollFrame then
|
||||
local Per = height * (1 - StepScroll)
|
||||
local Gap = Per - (height / 2)
|
||||
fStep:SetPoint("BOTTOMRIGHT", this, "RIGHT", -5, Gap)
|
||||
fScroll:SetPoint("TOPLEFT", fStep, "BOTTOMLEFT", 0, -2)
|
||||
end
|
||||
tUI.MainFrameSize = {
|
||||
nWidth = width,
|
||||
nHeight = height,
|
||||
}
|
||||
oSettings:SetSettingsUI(tUI)
|
||||
end)
|
||||
frame:SetScript("OnHide", function()
|
||||
if this.isMoving then
|
||||
this:StopMovingOrSizing();
|
||||
this.isMoving = false;
|
||||
end
|
||||
if this.isResizing then
|
||||
this:StopMovingOrSizing();
|
||||
this.isResizing = false;
|
||||
end
|
||||
end)
|
||||
return frame
|
||||
end
|
||||
local function Render_MFTitle(fParent, sName)
|
||||
local version = GetAddOnMetadata("VanillaGuide", "Version")
|
||||
local fs = fParent:CreateFontString(sName, "ARTWORK", "GameFontNormalSmall")
|
||||
fs:SetPoint("TOPLEFT", fParent, "TOPLEFT", 31, -6)
|
||||
fs:SetTextColor(.91, .79, .11, 1)
|
||||
fs:SetJustifyH("CENTER")
|
||||
fs:SetJustifyV("CENTER")
|
||||
fs:SetText("|cccff1919Vanilla|ccceeeeeeGuide |ccca1a1a1v|ccc4a4aa1" .. version .. "|r")
|
||||
return fs
|
||||
end
|
||||
local function Render_Button(fParent, sName, nWidth, nHeight, tTexture)
|
||||
local btn = CreateFrame("Button", sName, fParent)
|
||||
btn:SetWidth(nWidth)
|
||||
btn:SetHeight(nHeight)
|
||||
btn:SetNormalTexture(tTexture.NORMAL)
|
||||
btn:SetPushedTexture(tTexture.PUSHED)
|
||||
btn:SetHighlightTexture(tTexture.HIGHLIGHT)
|
||||
btn:RegisterForClicks("LeftButtonUp")
|
||||
return btn
|
||||
end
|
||||
local function Render_MFStepNumberFrame(fParent, sName, nWidth, nHeight, tTexture)
|
||||
local frame = CreateFrame("Frame", sName, fParent)
|
||||
frame:SetWidth(nWidth)
|
||||
frame:SetHeight(nHeight)
|
||||
frame:SetBackdrop(tTexture.BACKDROP)
|
||||
frame:SetBackdropColor(.1, .1, .1, .9)
|
||||
return frame
|
||||
end
|
||||
local function Render_MFStepNumberLabel(fParent, sName)
|
||||
local fs = fParent:CreateFontString(sName, "ARTWORK", "GameFontNormalSmall")
|
||||
fs:SetPoint("CENTER", fParent, "CENTER", 0, 0)
|
||||
fs:SetTextColor(.71, .71, .71, 1)
|
||||
fs:SetJustifyH("CENTER")
|
||||
fs:SetJustifyV("CENTER")
|
||||
return fs
|
||||
end
|
||||
local function Render_MFDropDownMenu(fParent, sName)
|
||||
local frame= CreateFrame("Frame", sName, fParent)
|
||||
frame.UncheckHack = function()
|
||||
getglobal(this:GetName().."Check"):Hide()
|
||||
end
|
||||
frame.displayMode = "MENU"
|
||||
frame.info = {}
|
||||
|
||||
frame:SetHeight(25)
|
||||
frame:SetWidth(25)
|
||||
return frame
|
||||
end
|
||||
local function Render_MFDropDownMenuZoneFrame(fParent, sName, tTexture)
|
||||
local frame = CreateFrame("Frame", sName, fParent)
|
||||
frame:SetBackdrop(tTexture.BACKDROP);
|
||||
frame:SetBackdropColor(.1, .1, .1, .7)
|
||||
return frame
|
||||
end
|
||||
local function Render_MFDropDownMenuZoneLabel(fParent, sName)
|
||||
local fs = fParent:CreateFontString(sName, "ARTWORK", "GameFontNormalSmall")
|
||||
fs:SetTextColor(.91, .91, .91, 1)
|
||||
fs:SetJustifyH("CENTER")
|
||||
fs:SetJustifyV("CENTER")
|
||||
fs:SetPoint("BOTTOMLEFT", fParent, "BOTTOMLEFT", 15, 6)
|
||||
return fs
|
||||
end
|
||||
local function Render_MFStepFrame(fParent, sName, tTexture, tUI)
|
||||
local tColor = tUI.StepFrameColor
|
||||
local frame = CreateFrame("Frame", sName, fParent)
|
||||
frame:SetResizable(true)
|
||||
frame:SetBackdrop(tTexture.BACKDROP)
|
||||
frame:SetBackdropColor(tColor.nR, tColor.nG, tColor.nB, tColor.nA)
|
||||
--frame:SetScript("OnSizeChanged" , function()
|
||||
--end)
|
||||
frame:SetScript("OnHide" , function()
|
||||
if this.isMoving then
|
||||
this:StopMovingOrSizing();
|
||||
this.isMoving = false;
|
||||
end
|
||||
if this.isResizing then
|
||||
this:StopMovingOrSizing();
|
||||
this.isResizing = false;
|
||||
end
|
||||
end)
|
||||
return frame
|
||||
end
|
||||
local function Render_MFStepLabel(fParent, sName, tUI)
|
||||
local tColor = tUI.StepFrameTextColor
|
||||
local fs = fParent:CreateFontString(sName, "ARTWORK", "GameFontNormalSmall")
|
||||
fs:SetPoint("TOPLEFT", fParent, "TOPLEFT", 5, -5)
|
||||
fs:SetPoint("BOTTOMRIGHT", fParent, "BOTTOMRIGHT", -5, 5)
|
||||
fs:SetTextColor(tColor.nR, tColor.nG, tColor.nB, tColor.nA)
|
||||
fs:SetJustifyH("LEFT")
|
||||
fs:SetJustifyV("TOP")
|
||||
return fs
|
||||
end
|
||||
|
||||
local function Render_MFScrollFrame(fParent, sName, tTexture, tUI)
|
||||
local tColor = tUI.ScrollFrameColor
|
||||
local frame = CreateFrame("ScrollFrame", sName, fParent)
|
||||
frame:SetBackdrop(tTexture.BACKDROP)
|
||||
frame:SetBackdropColor(tColor.nR, tColor.nG, tColor.nB, tColor.nA)
|
||||
frame:EnableMouseWheel(true)
|
||||
frame:SetScript("OnSizeChanged", function()
|
||||
obj:RefreshScrollFrame()
|
||||
end)
|
||||
frame:SetScript("OnMouseWheel", function()
|
||||
local fSlider = getglobal("VG_MainFrame_ScrollFrameSlider")
|
||||
local current = fSlider:GetValue()
|
||||
local step = fSlider:GetValueStep()
|
||||
local smin, smax = fSlider:GetMinMaxValues()
|
||||
local delta = arg1
|
||||
if IsShiftKeyDown() and (delta > 0) then
|
||||
fSlider:SetValue(0)
|
||||
elseif IsShiftKeyDown() and (delta < 0) then
|
||||
fSlider:SetValue(smax)
|
||||
elseif (delta < 0) and (current < smax) then
|
||||
fSlider:SetValue(current + 20)
|
||||
elseif (delta > 0) and (current > 1) then
|
||||
fSlider:SetValue(current - 20)
|
||||
end
|
||||
end)
|
||||
return frame
|
||||
end
|
||||
|
||||
local function Render_MFScrollFrameChild(fParent, sName)
|
||||
local nScrollFrameChildWidth = fParent:GetWidth() - 10
|
||||
local nScrollFrameChildHeight = fParent:GetHeight() - 10
|
||||
local frame = CreateFrame("Frame", sName, fParent)
|
||||
frame:SetWidth(nScrollFrameChildWidth)
|
||||
frame:SetHeight(nScrollFrameChildHeight)
|
||||
return frame
|
||||
end
|
||||
local function Render_MFScrollFrameSlider(fParent, sName)
|
||||
local sld = CreateFrame("Slider", sName, fParent)
|
||||
sld.background = sld:CreateTexture(nil, "BACKGROUND")
|
||||
sld.background:SetAllPoints(true)
|
||||
sld.background:SetTexture(.0, .0, .0, 0.5)
|
||||
sld.thumb = fParent:CreateTexture(nil, "OVERLAY")
|
||||
--sld.thumb:SetTexture("Interface\\AddOns\\VanillaGuide\\Textures\\Buttons\\Button-Flash-Normal")
|
||||
sld.thumb:SetTexture("Interface\\Buttons\\UI-ScrollBar-Knob")
|
||||
sld.thumb:SetWidth(31)
|
||||
sld.thumb:SetHeight(31)
|
||||
sld:SetThumbTexture(sld.thumb)
|
||||
sld:SetWidth(14)
|
||||
sld:SetOrientation("VERTICAL");
|
||||
sld:SetValueStep(10)
|
||||
sld:SetScript("OnValueChanged", function()
|
||||
local fScroll = getglobal("VG_MainFrame_ScrollFrame")
|
||||
fScroll:SetVerticalScroll(arg1)
|
||||
end)
|
||||
return sld
|
||||
end
|
||||
|
||||
local function ChangeView(tUI)
|
||||
local fMain = getglobal("VG_MainFrame")
|
||||
local fStep = getglobal("VG_MainFrame_StepFrame")
|
||||
local fScroll = getglobal("VG_MainFrame_ScrollFrame")
|
||||
local nStepScroll = tUI.StepScroll
|
||||
local bStepFrame = tUI.StepFrameVisible
|
||||
local bScrollFrame = tUI.ScrollFrameVisible
|
||||
local nMainFrameHeight = tUI.MainFrameSize.nHeight
|
||||
|
||||
if bScrollFrame then
|
||||
fMain:SetHeight(nMainFrameHeight)
|
||||
fMain:SetMinResize(320, 320)
|
||||
fMain:SetMaxResize(640, 640)
|
||||
else
|
||||
fMain:SetHeight(nMainFrameHeight*nStepScroll)
|
||||
fMain:SetMinResize(320, 320*nStepScroll)
|
||||
fMain:SetMaxResize(640, 640*nStepScroll)
|
||||
end
|
||||
if bStepFrame and not bScrollFrame then
|
||||
fScroll:Hide()
|
||||
fStep:SetPoint("BOTTOMRIGHT", fMain, "BOTTOMRIGHT", -5, 27)
|
||||
fStep:Show()
|
||||
elseif not bStepFrame and bScrollFrame then
|
||||
fStep:Hide()
|
||||
fScroll:SetPoint("TOPLEFT", fMain, "TOPLEFT", 5, -23)
|
||||
fScroll:Show()
|
||||
elseif bStepFrame and bScrollFrame then
|
||||
local nH = fMain:GetHeight()
|
||||
local nGap = (nH - 2 * nStepScroll * nH) / 2
|
||||
fStep:SetPoint("BOTTOMRIGHT", fMain, "RIGHT", -5, nGap)
|
||||
fScroll:SetPoint("TOPLEFT", fStep, "BOTTOMLEFT", 0, -2)
|
||||
fStep:Show()
|
||||
fScroll:Show()
|
||||
end
|
||||
end
|
||||
|
||||
obj.tWidgets = {}
|
||||
-------------------------------
|
||||
--- Rendering
|
||||
-------------------------------
|
||||
--do
|
||||
-- Addon Main Frame and Title
|
||||
obj.tWidgets.frame_MainFrame = Render_MF(nil, "VG_MainFrame", tTexture, tUI)
|
||||
obj.tWidgets.frame_MainFrame.isMoving = nil
|
||||
obj.tWidgets.frame_MainFrame.isResizing = nil
|
||||
obj.tWidgets.fs_Title = Render_MFTitle(obj.tWidgets.frame_MainFrame, nil)
|
||||
-- Close, Settings and About Buttons
|
||||
obj.tWidgets.button_CloseButton = Render_Button(obj.tWidgets.frame_MainFrame, nil, 16, 16, tTexture.B_CLOSE)
|
||||
obj.tWidgets.button_CloseButton:SetPoint("TOPRIGHT", obj.tWidgets.frame_MainFrame, "TOPRIGHT", -6, -5)
|
||||
obj.tWidgets.button_SettingsButton = Render_Button(obj.tWidgets.frame_MainFrame, nil, 20, 20, tTexture.B_OPTION)
|
||||
obj.tWidgets.button_SettingsButton:SetPoint("BOTTOMRIGHT", obj.tWidgets.frame_MainFrame, "BOTTOMRIGHT", -6, 5)
|
||||
obj.tWidgets.button_AboutButton = Render_Button(obj.tWidgets.frame_MainFrame, nil, 20, 20, tTexture.B_ABOUT)
|
||||
obj.tWidgets.button_AboutButton:SetPoint("BOTTOMRIGHT", obj.tWidgets.frame_MainFrame, "BOTTOMRIGHT", -27, 5)
|
||||
-- Lock Button
|
||||
if tUI.Locked then
|
||||
obj.tWidgets.button_LockButton = Render_Button(obj.tWidgets.frame_MainFrame, nil, 16, 16, tTexture.B_LOCKED)
|
||||
else
|
||||
obj.tWidgets.button_LockButton = Render_Button(obj.tWidgets.frame_MainFrame, nil, 16, 16, tTexture.B_UNLOCKED)
|
||||
end
|
||||
obj.tWidgets.button_LockButton:SetPoint("TOPLEFT", obj.tWidgets.frame_MainFrame, "TOPLEFT", 6, -5)
|
||||
-- ChangeView Button
|
||||
obj.tWidgets.button_ChangeViewButton = Render_Button(obj.tWidgets.frame_MainFrame, nil, 16, 16, tTexture.B_FLASH)
|
||||
obj.tWidgets.button_ChangeViewButton:SetPoint("TOPRIGHT", obj.tWidgets.frame_MainFrame, "TOPRIGHT", -105, -5)
|
||||
-- Prev and Next Guide Buttons
|
||||
obj.tWidgets.button_PrevGuideButton = Render_Button(obj.tWidgets.frame_MainFrame, nil, 25, 16, tTexture.B_DOUBLEARROWLEFT)
|
||||
obj.tWidgets.button_PrevGuideButton:SetPoint("BOTTOMRIGHT", obj.tWidgets.frame_MainFrame, "BOTTOMRIGHT", -75, 7)
|
||||
obj.tWidgets.button_NextGuideButton = Render_Button(obj.tWidgets.frame_MainFrame, nil, 25, 16, tTexture.B_DOUBLEARROWRIGHT)
|
||||
obj.tWidgets.button_NextGuideButton:SetPoint("BOTTOMRIGHT", obj.tWidgets.frame_MainFrame, "BOTTOMRIGHT", -50, 7)
|
||||
-- DropDown Menu, Button, ZoneFrame and ZoneLabel
|
||||
obj.tWidgets.frame_DropDownMenu = Render_MFDropDownMenu(obj.tWidgets.frame_MainFrame, "VG_MainFrame_DropDownMenu")
|
||||
obj.tWidgets.frame_DropDownMenu:SetPoint("TOPLEFT", obj.tWidgets.frame_MainFrame, "BOTTOMLEFT", 12, 26)
|
||||
obj.tWidgets.frame_DropDownMenu:SetPoint("BOTTOMRIGHT", obj.tWidgets.frame_MainFrame, "BOTTOMLEFT", 22, 3)
|
||||
obj.tWidgets.button_DropDownMenu = Render_Button(obj.tWidgets.frame_DropDownMenu, nil, 16, 16, tTexture.B_DDMRIGHT_DOWN)
|
||||
obj.tWidgets.button_DropDownMenu:SetPoint("CENTER", obj.tWidgets.frame_DropDownMenu, "LEFT", 3, 0)
|
||||
obj.tWidgets.button_DropDownMenu:RegisterForClicks("LeftButtonUp", "RightButtonUp")
|
||||
obj.tWidgets.frame_DropDownMenuZoneFrame = Render_MFDropDownMenuZoneFrame(obj.tWidgets.frame_DropDownMenu, nil, tTexture)
|
||||
obj.tWidgets.frame_DropDownMenuZoneFrame:SetPoint("TOPLEFT", obj.tWidgets.frame_DropDownMenu, "TOPLEFT", 5, -2)
|
||||
obj.tWidgets.frame_DropDownMenuZoneFrame:SetPoint("BOTTOMRIGHT", obj.tWidgets.button_PrevGuideButton, "LEFT", -5, -10)
|
||||
obj.tWidgets.fs_DropDownMenuZone = Render_MFDropDownMenuZoneLabel(obj.tWidgets.frame_DropDownMenuZoneFrame, "VG_MainFrame_DropDownMenuLabel")
|
||||
-- Pren and Next Step Buttons
|
||||
obj.tWidgets.button_PrevStepButton = Render_Button(obj.tWidgets.frame_MainFrame, nil, 25, 16, tTexture.B_DOUBLEARROWLEFT)
|
||||
obj.tWidgets.button_PrevStepButton:SetPoint("TOPRIGHT", obj.tWidgets.frame_MainFrame, "TOPRIGHT", -76, -5)
|
||||
obj.tWidgets.button_NextStepButton = Render_Button(obj.tWidgets.frame_MainFrame, nil, 25, 16, tTexture.B_DOUBLEARROWRIGHT)
|
||||
obj.tWidgets.button_NextStepButton:SetPoint("TOPRIGHT", obj.tWidgets.frame_MainFrame, "TOPRIGHT", -26, -5)
|
||||
-- Step Number Frame & Label
|
||||
obj.tWidgets.frame_StepNumberFrame = Render_MFStepNumberFrame(obj.tWidgets.frame_MainFrame, nil, 25, 18, tTexture)
|
||||
obj.tWidgets.frame_StepNumberFrame:SetPoint("TOPRIGHT", obj.tWidgets.frame_MainFrame, "TOPRIGHT", -51, -4)
|
||||
obj.tWidgets.fs_StepNumber = Render_MFStepNumberLabel(obj.tWidgets.frame_StepNumberFrame, "VG_MainFrame_StepNumberFrameLabel")
|
||||
-- Step Frame & Label
|
||||
obj.tWidgets.frame_StepFrame = Render_MFStepFrame(obj.tWidgets.frame_MainFrame, "VG_MainFrame_StepFrame", tTexture, tUI)
|
||||
obj.tWidgets.frame_StepFrame:SetPoint("TOPLEFT", obj.tWidgets.frame_MainFrame, "TOPLEFT", 5, -23)
|
||||
-- Uncomment those will just make the frame visible at start, but we call GuideChange just after, so, not needed here
|
||||
-- see ***
|
||||
--local fMHeight = obj.tWidgets.fMF:GetHeight()
|
||||
--local nPer = fMHeight * (1 - tUIoptions.nStepScroll)
|
||||
--local nGap = nPer - (fMHeight/2)
|
||||
--obj.tWidgets.frame_StepFrame:SetPoint("BOTTOMRIGHT", obj.tWidgets.frame_MainFrame, "RIGHT", -5, nGap)
|
||||
obj.tWidgets.fs_StepFrame = Render_MFStepLabel(obj.tWidgets.frame_StepFrame, "VG_MainFrame_StepFrameLabel", tUI)
|
||||
-- Scroll Frame, ScrollChild and Slider
|
||||
obj.tWidgets.frame_ScrollFrame = Render_MFScrollFrame(obj.tWidgets.frame_MainFrame, "VG_MainFrame_ScrollFrame", tTexture, tUI)
|
||||
-- ***
|
||||
--obj.tWidgets.frame_ScrollFrame:SetPoint("TOPLEFT", obj.tWidgets.frame_StepFrame, "BOTTOMLEFT", 0, -2)
|
||||
obj.tWidgets.frame_ScrollFrame:SetPoint("BOTTOMRIGHT", obj.tWidgets.frame_MainFrame, "BOTTOMRIGHT", -25, 27)
|
||||
obj.tWidgets.frame_ScrollFrameChild = Render_MFScrollFrameChild(obj.tWidgets.frame_ScrollFrame, "VG_MainFrame_ScrollFrameChild")
|
||||
obj.tWidgets.frame_ScrollFrameChild.Entries = {}
|
||||
obj.tWidgets.frame_ScrollFrameChild.nFSTotalWidth = 0
|
||||
obj.tWidgets.frame_ScrollFrameChild.nFSTotalHeight = 0
|
||||
obj.tWidgets.frame_ScrollFrameChild:SetPoint("TOPLEFT", obj.tWidgets.frame_ScrollFrame, "TOPLEFT", 0, 0)
|
||||
obj.tWidgets.frame_ScrollFrameChild:SetPoint("BOTTOMRIGHT", obj.tWidgets.frame_ScrollFrame, "BOTTOMRIGHT", 0, 0)
|
||||
obj.tWidgets.slider_ScrollFrameSlider = Render_MFScrollFrameSlider(obj.tWidgets.frame_ScrollFrame, "VG_MainFrame_ScrollFrameSlider")
|
||||
obj.tWidgets.slider_ScrollFrameSlider:SetPoint("TOPLEFT", obj.tWidgets.frame_ScrollFrame, "TOPRIGHT", 2, -5)
|
||||
obj.tWidgets.slider_ScrollFrameSlider:SetPoint("BOTTOMLEFT", obj.tWidgets.frame_ScrollFrame, "BOTTOMRIGHT", 2, 5)
|
||||
--end
|
||||
|
||||
-------------------------------
|
||||
--- UI Events Handling
|
||||
-------------------------------
|
||||
do
|
||||
-- Close Button
|
||||
obj.tWidgets.button_CloseButton:SetScript("OnClick", function()
|
||||
local fMain = getglobal("VG_MainFrame")
|
||||
local fSettings = getglobal("VG_SettingsFrame")
|
||||
local fAbout = getglobal("VG_AboutFrame")
|
||||
fMain:Hide()
|
||||
if fSettings:IsVisible() then
|
||||
fSettings:Hide()
|
||||
fSettings.showthis = true
|
||||
end
|
||||
if fAbout:IsVisible() then
|
||||
fAbout:Hide()
|
||||
end
|
||||
end)
|
||||
-- Lock Button
|
||||
obj.tWidgets.button_LockButton:SetScript("OnClick", function()
|
||||
local bLocked = tUI.Locked
|
||||
local frame = getglobal("VG_MainFrame")
|
||||
if bLocked then
|
||||
this:SetNormalTexture(tTexture.B_UNLOCKED.NORMAL)
|
||||
this:SetPushedTexture(tTexture.B_UNLOCKED.PUSHED)
|
||||
tUI.Locked = false
|
||||
oSettings:SetSettingsUI(tUI)
|
||||
frame:SetMovable(true)
|
||||
frame:SetResizable(true)
|
||||
else
|
||||
this:SetNormalTexture(tTexture.B_LOCKED.NORMAL)
|
||||
this:SetPushedTexture(tTexture.B_LOCKED.PUSHED)
|
||||
tUI.Locked = true
|
||||
oSettings:SetSettingsUI(tUI)
|
||||
frame:SetMovable(false)
|
||||
frame:SetResizable(false)
|
||||
end
|
||||
end)
|
||||
-- Settings Button
|
||||
obj.tWidgets.button_SettingsButton:SetScript("OnClick", function()
|
||||
local fSettings = getglobal("VG_SettingsFrame")
|
||||
if fSettings:IsVisible() then
|
||||
fSettings:Hide()
|
||||
else
|
||||
fSettings:Show()
|
||||
end
|
||||
end)
|
||||
-- About Button
|
||||
obj.tWidgets.button_AboutButton:SetScript("OnClick", function()
|
||||
local fAbout = getglobal("VG_AboutFrame")
|
||||
if fAbout:IsVisible() then
|
||||
fAbout:Hide()
|
||||
else
|
||||
fAbout:Show()
|
||||
end
|
||||
end)
|
||||
-- Change View Button
|
||||
obj.tWidgets.button_ChangeViewButton:SetScript("OnClick", function()
|
||||
local fChild = getglobal("VG_MainFrame_ScrollFrameChild")
|
||||
local bStepFrame = tUI.StepFrameVisible
|
||||
local bScrollFrame = tUI.ScrollFrameVisible
|
||||
local nMainFrameHeight = tUI.MainFrameSize.nHeight
|
||||
|
||||
if bStepFrame and bScrollFrame then
|
||||
bStepFrame = true
|
||||
bScrollFrame = false
|
||||
elseif bStepFrame and not bScrollFrame then
|
||||
bStepFrame = false
|
||||
bScrollFrame = true
|
||||
else
|
||||
bStepFrame = true
|
||||
bScrollFrame = true
|
||||
end
|
||||
tUI.StepFrameVisible = bStepFrame
|
||||
tUI.ScrollFrameVisible = bScrollFrame
|
||||
oSettings:SetSettingsUI(tUI)
|
||||
ChangeView(tUI)
|
||||
--UI.SetSliderMinMax(fChild.nFSTotalHeight)
|
||||
end)
|
||||
-- Prev and Next Guide Buttons
|
||||
obj.tWidgets.button_PrevGuideButton:SetScript("OnClick", function()
|
||||
--Dv(" --- Prev Guide ---")
|
||||
oDisplay:PrevGuide()
|
||||
obj:RefreshData()
|
||||
end)
|
||||
obj.tWidgets.button_NextGuideButton:SetScript("OnClick", function()
|
||||
--Dv(" --- Next Guide ---")
|
||||
oDisplay:NextGuide()
|
||||
obj:RefreshData()
|
||||
end)
|
||||
-- Prev and Next Step Buttons
|
||||
obj.tWidgets.button_PrevStepButton:SetScript("OnClick", function()
|
||||
--Dv(" --- Prev Step ---")
|
||||
oDisplay:PrevStep()
|
||||
obj:RefreshData()
|
||||
end)
|
||||
obj.tWidgets.button_NextStepButton:SetScript("OnClick", function()
|
||||
--Dv(" --- Next Step ---")
|
||||
oDisplay:NextStep()
|
||||
obj:RefreshData()
|
||||
end)
|
||||
-- DropDown Menu
|
||||
obj.tWidgets.button_DropDownMenu:SetScript("OnClick", function()
|
||||
ToggleDropDownMenu(1, nil, obj.tWidgets.frame_DropDownMenu, obj.tWidgets.button_DropDownMenu, 0, 0);
|
||||
end)
|
||||
end
|
||||
|
||||
-------------------------------
|
||||
--- External Methods
|
||||
-------------------------------
|
||||
|
||||
obj.RefreshStepFrameLabel = function(self)
|
||||
local s = oDisplay:GetStepLabel()
|
||||
local fs = obj.tWidgets.fs_StepFrame
|
||||
fs:SetText(s)
|
||||
end
|
||||
|
||||
obj.RefreshStepNumberFrameLabel = function(self)
|
||||
local t = oDisplay:GetCurrentStep()
|
||||
local fs = obj.tWidgets.fs_StepNumber
|
||||
fs:SetText(t)
|
||||
end
|
||||
|
||||
obj.RefreshDropDownMenuLabel = function(self)
|
||||
local t = oDisplay:GetGuideTitle()
|
||||
local fs = obj.tWidgets.fs_DropDownMenuZone
|
||||
fs:SetText(t)
|
||||
end
|
||||
|
||||
obj.ScrollFrameChildEntriesCreate = function(self, tEntries)
|
||||
local UI = oSettings:GetSettingsUI()
|
||||
local tColF = UI.StepFrameColor
|
||||
local tColT = UI.ScrollFrameTextColor
|
||||
|
||||
local sfc = obj.tWidgets.frame_ScrollFrameChild
|
||||
sfc:Hide()
|
||||
|
||||
t = {}
|
||||
for k,_ in ipairs(tEntries) do
|
||||
local sh
|
||||
sh = CreateFrame("SimpleHTML", "VG_shEntry"..k, sfc)
|
||||
sh:Hide()
|
||||
sh:EnableMouse(true)
|
||||
sh:SetFont(tTexture.FONT_PATH, tTexture.FONT_HEIGHT)
|
||||
sh:SetTextColor(tColT.nR, tColT.nG, tColT.nB, tColT.nA)
|
||||
sh:SetBackdrop(tTexture.BACKDROPSH)
|
||||
sh:SetBackdropColor(.1, .1, .1, .5)
|
||||
sh:SetJustifyH("LEFT")
|
||||
sh:SetJustifyV("TOP")
|
||||
if k > 1 then
|
||||
sh:SetPoint("TOPLEFT", t[k-1], "BOTTOMLEFT", 0, -tTexture.SCROLLFRAME_PADDING)
|
||||
else
|
||||
sh:SetPoint("TOPLEFT", sfc, "TOPLEFT", 5, -15)
|
||||
end
|
||||
sh:SetScript("OnEnter", function()
|
||||
this:SetTextColor(.91, .91, .91, .99)
|
||||
this:SetBackdropColor(.3, .3, .3, .7)
|
||||
local tx = tonumber(strsub(this:GetName(), 11))
|
||||
end)
|
||||
sh:SetScript("OnLeave", function()
|
||||
local UI = oSettings:GetSettingsUI()
|
||||
local tColF = UI.StepFrameColor
|
||||
local step = oDisplay:GetCurrentStep()
|
||||
local tx = tonumber(strsub(this:GetName(), 11))
|
||||
this:SetTextColor(tColT.nR, tColT.nG, tColT.nB, tColT.nA)
|
||||
if tx == step then
|
||||
this:SetBackdropColor(tColF.nR, tColF.nG, tColF.nB, tColF.nA)
|
||||
else
|
||||
this:SetBackdropColor(.1, .1, .1, .5)
|
||||
end
|
||||
end)
|
||||
sh:SetScript("OnMouseUp", function()
|
||||
if arg1 == "LeftButton" then
|
||||
local step = oDisplay:GetCurrentStep()
|
||||
this:GetParent().Entries[step]:SetBackdropColor(.1, .1, .1, .5)
|
||||
local tx = strsub(this:GetName(), 11)
|
||||
oDisplay:StepByID(tonumber(tx))
|
||||
obj:RefreshData(false)
|
||||
end
|
||||
end)
|
||||
t[k] = sh
|
||||
end
|
||||
sfc:Show()
|
||||
return t
|
||||
end
|
||||
|
||||
obj.ScrollFrameChildEntriesHide = function(self)
|
||||
for _,v in ipairs(obj.tWidgets.frame_ScrollFrameChild.Entries) do
|
||||
v:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
-- not needed?
|
||||
obj.ScrollFrameChildEntriesDelete = function(self)
|
||||
for k,_ in ipairs(obj.tWidgets.frame_ScrollFrameChild.Entries) do
|
||||
obj.tWidgets.frame_ScrollFrameChild.Entries[k] = nil
|
||||
end
|
||||
end
|
||||
-- not needed?
|
||||
obj.ScrollFrameChildEntriesCount = function(self)
|
||||
local count = 0
|
||||
for _,_ in ipairs(obj.tWidgets.frame_ScrollFrameChild.Entries) do
|
||||
count = count + 1
|
||||
end
|
||||
return count
|
||||
end
|
||||
|
||||
obj.RefreshScrollFrame = function(self)
|
||||
local function ScrollFrameChildHeight(tTexture, nWidth, tEntries)
|
||||
tEntries.textWidth = {}
|
||||
tEntries.textHeight = {}
|
||||
local tHeight = 0
|
||||
local frame = CreateFrame("Frame", nil, nil)
|
||||
local fs = frame:CreateFontString(nil, "ARTWORK", tTexture.FONT)
|
||||
fs:SetFont(tTexture.FONT_PATH, tTexture.FONT_HEIGHT)
|
||||
nWidth = math.floor(nWidth)
|
||||
for k,v in ipairs(tEntries) do
|
||||
fs:SetText(tEntries[k])
|
||||
tEntries.textWidth[k] = fs:GetWidth()
|
||||
local val = math.floor((tEntries.textWidth[k]) / (nWidth))
|
||||
tEntries.textHeight[k] = (val + 1) * tTexture.FONT_HEIGHT + 5
|
||||
tHeight = tHeight + tEntries.textHeight[k] + tTexture.SCROLLFRAME_PADDING
|
||||
end
|
||||
return tHeight, tEntries
|
||||
end
|
||||
|
||||
local fMain = obj.tWidgets.frame_MainFrame
|
||||
local fScroll = obj.tWidgets.frame_ScrollFrame
|
||||
local fChild = obj.tWidgets.frame_ScrollFrameChild
|
||||
local fSlider = obj.tWidgets.slider_ScrollFrameSlider
|
||||
|
||||
local mainFrameWidth = fMain:GetWidth()
|
||||
local scrollFrameWidth = fScroll:GetWidth()
|
||||
|
||||
local s = fScroll:GetEffectiveScale()
|
||||
scrollFrameWidth = scrollFrameWidth * (1/s)
|
||||
|
||||
obj:ScrollFrameChildEntriesHide()
|
||||
|
||||
local t = {}
|
||||
t = oDisplay:GetScrollFrameDisplay()
|
||||
fChild.Entries = obj:ScrollFrameChildEntriesCreate(t)
|
||||
|
||||
-- inside t we've the "lenght" of the rendered string
|
||||
-- We need this to get how many lines there are in every
|
||||
-- ScrollFrameChildEntries entity
|
||||
local totalHeight = 0
|
||||
totalHeight, t = ScrollFrameChildHeight(tTexture, scrollFrameWidth, t)
|
||||
|
||||
-- let's see if we need a slider or not....
|
||||
-- ...ohh...and let's set the slider object accordingly
|
||||
-- we use the totalHeight from plain string to decide this...
|
||||
local nFrameH = nil
|
||||
local sliderVisible = nil
|
||||
local shWidth = nil
|
||||
nFrameH = fScroll:GetHeight() + 5
|
||||
if totalHeight - nFrameH + 10 > 0 then
|
||||
fSlider:SetMinMaxValues(0, totalHeight - nFrameH + 10)
|
||||
fSlider:Show()
|
||||
fScroll:SetPoint("BOTTOMRIGHT", fMain, "BOTTOMRIGHT", -25, 27)
|
||||
sliderVisible = true
|
||||
shWidth = mainFrameWidth - 40
|
||||
else
|
||||
fSlider:SetMinMaxValues(0, 0)
|
||||
fSlider:SetValue(0)
|
||||
fSlider:Hide()
|
||||
fScroll:SetPoint("BOTTOMRIGHT", fMain, "BOTTOMRIGHT", -5, 27)
|
||||
sliderVisible = false
|
||||
shWidth = mainFrameWidth - 40 + 20
|
||||
end
|
||||
|
||||
-- we now zero totalHeight, and we rebuild it, frameXframe, to get the total
|
||||
-- ScrollFrameChild total height
|
||||
totalHeight = 0
|
||||
local UI = oSettings:GetSettingsUI()
|
||||
local tColF = UI.StepFrameColor
|
||||
for k, v in pairs(fChild.Entries) do
|
||||
if k <= oDisplay:GetCurrentStepCount() then
|
||||
if not sliderVisible then
|
||||
local val = math.floor(t.textWidth[k] / (scrollFrameWidth + 20))
|
||||
t.textHeight[k] = (val+1) * tTexture.FONT_HEIGHT + 5
|
||||
end
|
||||
totalHeight = totalHeight + t.textHeight[k] + tTexture.SCROLLFRAME_PADDING
|
||||
v:SetWidth(shWidth)
|
||||
v:SetHeight(t.textHeight[k])
|
||||
v:SetText(t[k])
|
||||
v:Show()
|
||||
v.scrollFrameWidth = scrollFrameWidth
|
||||
v.textHeight = t.textHeight[k]
|
||||
v.textWidth = t.textWidth[k]
|
||||
if k == oDisplay:GetCurrentStep() then
|
||||
v:SetBackdropColor(tColF.nR, tColF.nG, tColF.nB, tColF.nA)
|
||||
else
|
||||
v:SetBackdropColor(.1, .1, .1, .5)
|
||||
end
|
||||
else
|
||||
v:Hide()
|
||||
v = nil
|
||||
end
|
||||
end
|
||||
totalHeight = totalHeight - tTexture.SCROLLFRAME_PADDING
|
||||
fChild:SetHeight(totalHeight)
|
||||
fScroll:UpdateScrollChildRect()
|
||||
end
|
||||
|
||||
obj.RefreshMetaMap = function(self)
|
||||
local tMetaMap = oSettings:GetSettingsMetaMap()
|
||||
-- mode can be:
|
||||
-- nil == no MetaMap
|
||||
-- 1 = Notes Enabled
|
||||
-- 2 = BWP Enabled
|
||||
-- 3 = Notes & BWP Enabled
|
||||
local mode
|
||||
if tMetaMap.Presence then
|
||||
local mode
|
||||
if (tMetaMap.NotesPresence and tMetaMap.NotesEnable) and
|
||||
not (tMetaMap.BWPPresence and tMetaMap.BWPEnable) then
|
||||
mode = 1
|
||||
elseif not (tMetaMap.NotesPresence and tMetaMap.NotesEnable) and
|
||||
(tMetaMap.BWPPresence and tMetaMap.BWPEnable) then
|
||||
mode = 2
|
||||
elseif (tMetaMap.NotesPresence and tMetaMap.NotesEnable) and
|
||||
(tMetaMap.BWPPresence and tMetaMap.BWPEnable) then
|
||||
mode = 3
|
||||
else
|
||||
mode = nil
|
||||
end
|
||||
|
||||
local title = oDisplay:GetGuideTitle()
|
||||
local step = oDisplay:GetCurrentStep()
|
||||
local label = oDisplay:GetStepLabel()
|
||||
local t = oDisplay:GetCurrentStepInfo()
|
||||
obj:SetMetaMapDestination(t.x, t.y, t.zone, title, step, label, mode)
|
||||
end
|
||||
end
|
||||
|
||||
obj.RefreshData = function(self)
|
||||
obj:RefreshStepFrameLabel()
|
||||
obj:RefreshStepNumberFrameLabel()
|
||||
obj:RefreshDropDownMenuLabel()
|
||||
obj:RefreshDropDownMenuLabel()
|
||||
obj:RefreshScrollFrame()
|
||||
obj:RefreshMetaMap()
|
||||
end
|
||||
|
||||
local function AddToDDM(nLevel, sType, sLabel, nID)
|
||||
local info = {}
|
||||
info.isTitle = false
|
||||
|
||||
info.keepShownOnClick = false
|
||||
info.disabled = nil
|
||||
|
||||
info.notCheckable = true --1?
|
||||
|
||||
info.text = sLabel
|
||||
info.value = sLabel
|
||||
info.arg1 = nID
|
||||
info.arg2 = sLabel
|
||||
if sType == "s" then
|
||||
info.hasArrow = true
|
||||
info.func = this.UncheckHack
|
||||
else
|
||||
info.hasArrow = false --nil?
|
||||
info.func = function(arg1, arg2)
|
||||
oDisplay:GuideByID(arg1)
|
||||
obj:RefreshData()
|
||||
CloseDropDownMenus()
|
||||
end
|
||||
end
|
||||
UIDropDownMenu_AddButton(info, nLevel)
|
||||
end
|
||||
|
||||
local function DropDown_Init(level)
|
||||
local tDDM = oDisplay:RetriveTableDDM()
|
||||
local tCharInfo = oSettings:GetSettingsCharInfo()
|
||||
local info = {}
|
||||
level = level or 1
|
||||
if level == 1 then
|
||||
-- Title
|
||||
info.isTitle = 1
|
||||
info.text = "Vanilla Guide"
|
||||
info.notCheckable = true
|
||||
UIDropDownMenu_AddButton(info, level)
|
||||
-- Voices from Table DDM
|
||||
for k,v in ipairs(tDDM.lvl1) do
|
||||
AddToDDM(level, v[1], v[2], v.id)
|
||||
end
|
||||
-- Close menu item
|
||||
info.text = CLOSE--"Close"
|
||||
info.keepShownOnClick = false
|
||||
info.disabled = nil
|
||||
info.hasArrow = nil
|
||||
info.notCheckable = 1
|
||||
info.value = nil
|
||||
info.func = function()
|
||||
CloseDropDownMenus()
|
||||
end
|
||||
UIDropDownMenu_AddButton(info, level)
|
||||
elseif level == 2 then
|
||||
local s = UIDROPDOWNMENU_MENU_VALUE
|
||||
if s == "Starting Zones" then
|
||||
if tCharInfo.Faction == "Horde" then
|
||||
s = "[H] " .. s
|
||||
else
|
||||
s = "[A] " .. s
|
||||
end
|
||||
end
|
||||
for k,v in ipairs(tDDM.lvl2[s]) do
|
||||
AddToDDM(level, v[1], v[2], v.id)
|
||||
end
|
||||
elseif level == 3 then
|
||||
local s = UIDROPDOWNMENU_MENU_VALUE
|
||||
-- to handle both factions, we check if there's a 0 at the 4th place!
|
||||
-- so that we won't get in the way of Starting Zones
|
||||
if string.find(s, "0", 4) then
|
||||
if tCharInfo.Faction == "Horde" then
|
||||
s = "[H] " .. s
|
||||
else
|
||||
s = "[A] " .. s
|
||||
end
|
||||
end
|
||||
for k,v in ipairs(tDDM.lvl3[s]) do
|
||||
AddToDDM(level, v[1], v[2], v.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
obj.InitializeDDM = function(self)
|
||||
UIDropDownMenu_Initialize(obj.tWidgets.frame_DropDownMenu, DropDown_Init)
|
||||
end
|
||||
|
||||
obj.SetMetaMapDestination = function(self, nX, nY, sZone, title, step, label, mode)
|
||||
-- mode can be:
|
||||
-- nil == no MetaMap
|
||||
-- 1 = Notes Enabled
|
||||
-- 2 = BWP Enabled
|
||||
-- 3 = Notes & BWP Enabled
|
||||
if nX and nY and sZone and MetaMap_GetCurrentMapInfo then
|
||||
local continent, zone, _, mapName = MetaMap_GetCurrentMapInfo()
|
||||
local normX = nX/100
|
||||
local normY = nY/100
|
||||
if mode == 2 or mode == 3 then
|
||||
BWP_Destination = {}
|
||||
BWP_Destination.name = sZone
|
||||
BWP_Destination.x = normX
|
||||
BWP_Destination.y = normY
|
||||
BWP_Destination.zone = MetaMap_ZoneNames[continent][zone]
|
||||
if sZone == mapName then
|
||||
local frame = getglobal("BWPDestText")
|
||||
frame:SetText("["..BWP_Destination.name.."] - [" .. BWP_Destination.x*100 .. "," .. BWP_Destination.y*100 .. "]")
|
||||
local frame = getglobal("BWPDistanceText")
|
||||
frame:SetText(BWP_GetDistText())
|
||||
local frame = getglobal("BWP_DisplayFrame")
|
||||
frame:Show()
|
||||
end
|
||||
end
|
||||
if mode == 1 or mode == 3 then
|
||||
if sZone == mapName then
|
||||
-- function MetaMapNotes_AddNewNote(continent, zone,
|
||||
-- xPos, yPos,
|
||||
-- name, inf1, inf2,
|
||||
-- creator,
|
||||
-- icon,
|
||||
-- ncol, in1c, in2c, mininote)
|
||||
--
|
||||
-- Colors
|
||||
-- 0 "Yellow" (standard WoW Text Color?)
|
||||
-- 1 "Dark Yellow"
|
||||
-- 2 "Red"
|
||||
-- 3 "Dark Red"
|
||||
-- 4 "Green"
|
||||
-- 5 "Dark Green"
|
||||
-- 6 "Blu"
|
||||
-- 7 "Dark Blu"
|
||||
-- 8 "White"
|
||||
-- 9 "Dark White"
|
||||
-- Icon can be from 1 to 9
|
||||
-- mininote can be 0,1,2 everything else, default to 0 (even nil)
|
||||
-- 0 - MapNote only
|
||||
-- 1 - MapNote & mininote
|
||||
-- 2 - mininote only
|
||||
MetaMapNotes_AddNewNote(continent, zone, normX, normY,
|
||||
"VG: Step[" .. step .. "] " .. title,
|
||||
mapName, label, "VanillaGuide", 6, 6, 9, 8, 1)
|
||||
end
|
||||
end
|
||||
else
|
||||
if BWP_ClearDest then
|
||||
BWP_ClearDest()
|
||||
local frame = getglobal("BWP_DisplayFrame")
|
||||
frame:Hide()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-------------------------------
|
||||
--- Initialization
|
||||
-------------------------------
|
||||
do
|
||||
ChangeView(tUI)
|
||||
obj:InitializeDDM()
|
||||
obj.tWidgets.frame_ScrollFrame:SetScrollChild(obj.tWidgets.frame_ScrollFrameChild)
|
||||
obj:RefreshData(true)
|
||||
obj.tWidgets.frame_MainFrame:SetAlpha(tUI.Opacity)
|
||||
obj.tWidgets.frame_MainFrame:SetScale(tUI.Scale)
|
||||
obj.tWidgets.frame_MainFrame:SetFrameStrata(tUI.Layer)
|
||||
end
|
||||
|
||||
return obj
|
||||
end
|
||||
|
||||
Dv(" VGuide Frame_MainFrame.lua End")
|
||||
@@ -0,0 +1,528 @@
|
||||
--[[--------------------------------------------------
|
||||
----- VanillaGuide -----
|
||||
------------------
|
||||
Frame_SettingsFrame.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description:
|
||||
Settings Frame Object
|
||||
1.00
|
||||
-- Initial Ace2 release
|
||||
1.99a
|
||||
-- Ally addition starter version
|
||||
1.03
|
||||
-- No Changes. Just adjusting "version".
|
||||
1.99x for a beta release was a weird choise.
|
||||
1.04.1
|
||||
-- Settings Frame object
|
||||
1.04.2
|
||||
-- One more setting for MetaMapNotes
|
||||
(like the one for MetaMapBWP)
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
|
||||
--local VGuide = VGuide
|
||||
Dv(" VGuide Frame_SettingsFrame.lua Start")
|
||||
|
||||
objSettingsFrame = {}
|
||||
objSettingsFrame.__index = objSettingsFrame
|
||||
|
||||
function objSettingsFrame:new(fParent, tTexture, oSettings)
|
||||
fParent = fParent or nil
|
||||
local obj = {}
|
||||
setmetatable(obj, self)
|
||||
|
||||
local tCharInfo = oSettings:GetSettingsCharInfo()
|
||||
local tUI = oSettings:GetSettingsUI()
|
||||
--local tMetaMapBWP = oSettings:GetSettingsMetaMapBWP()
|
||||
local tMetaMap = oSettings:GetSettingsMetaMap()
|
||||
|
||||
local bMinimapToggle = tUI.MinimapToggle
|
||||
local nMinimapPos = tUI.MinimapPos
|
||||
local nStepScroll = tUI.StepScroll
|
||||
local nOpacity = tUI.Opacity
|
||||
local nScale = tUI.Scale
|
||||
local sLayer = tUI.Layer
|
||||
|
||||
local Layers = {
|
||||
["DIALOG"] = 5,
|
||||
["HIGH"] = 4,
|
||||
["MEDIUM"] = 3,
|
||||
["LOW"] = 2,
|
||||
["BACKGROUND"] = 1,
|
||||
[5] = "DIALOG",
|
||||
[4] = "HIGH",
|
||||
[3] = "MEDIUM",
|
||||
[2] = "LOW",
|
||||
[1] = "BACKGROUND",
|
||||
}
|
||||
|
||||
local function Render_SF(fParent, sName)
|
||||
local frame = CreateFrame("Frame", sName)
|
||||
frame:SetScale(1)
|
||||
frame:SetFrameStrata("TOOLTIP")
|
||||
frame:SetWidth(220)
|
||||
frame:SetHeight(315)
|
||||
-- detach Setting frame from Main Frame, avoiding "scale" bug
|
||||
--frame:SetPoint("TOPRIGHT", fParent, "TOPLEFT", -10, 0)
|
||||
frame:SetPoint("CENTER", nil, "CENTER", 0, 0)
|
||||
frame:SetBackdrop(tTexture.BACKDROP)
|
||||
frame:SetBackdropColor(.01, .01, .01, .91)
|
||||
frame:SetMovable(true)
|
||||
frame:EnableMouse(true)
|
||||
frame:SetClampedToScreen(true)
|
||||
frame:RegisterForDrag("LeftButton")
|
||||
frame.showthis = false
|
||||
return frame
|
||||
end
|
||||
local function Render_SFCloseButton(fParent, tTexture, sName)
|
||||
local btn = CreateFrame("Button", sName, fParent)
|
||||
btn:SetWidth(16)
|
||||
btn:SetHeight(16)
|
||||
btn:SetNormalTexture(tTexture.B_CLOSE.NORMAL)
|
||||
btn:SetPushedTexture(tTexture.B_CLOSE.PUSHED)
|
||||
btn:SetHighlightTexture(tTexture.B_CLOSE.HIGHLIGHT)
|
||||
btn:SetPoint("TOPRIGHT", fParent, "TOPRIGHT", -5, -5)
|
||||
return btn
|
||||
end
|
||||
local function Render_SFMetamapNotesSupportCheckBox(fParent, sName, tMetaMap)
|
||||
local chkbtn = CreateFrame("CheckButton", sName, fParent, "UICheckButtonTemplate")
|
||||
chkbtn:SetWidth(20)
|
||||
chkbtn:SetHeight(20)
|
||||
chkbtn.tooltip = "Enable the creation of MetaMap Notes on the WorldMap.";
|
||||
getglobal(chkbtn:GetName() .. 'Text'):SetText(" MetaMapNotes Support")
|
||||
|
||||
if tMetaMap.NotesPresence then
|
||||
chkbtn:Enable()
|
||||
else
|
||||
chkbtn:Disable()
|
||||
end
|
||||
if chkbtn:IsEnabled() then
|
||||
if tMetaMap.NotesEnable then
|
||||
chkbtn:SetChecked(true)
|
||||
else
|
||||
chkbtn:SetChecked(false)
|
||||
end
|
||||
else
|
||||
chkbtn:SetChecked(false)
|
||||
end
|
||||
return chkbtn
|
||||
end
|
||||
local function Render_SFMetamapBWPSupportCheckBox(fParent, sName, tMetaMap)
|
||||
local chkbtn = CreateFrame("CheckButton", sName, fParent, "UICheckButtonTemplate")
|
||||
chkbtn:SetWidth(20)
|
||||
chkbtn:SetHeight(20)
|
||||
chkbtn.tooltip = "Enable the appearance of MetaMapBWP arrow. Just an Arrow pointing where you need to go.";
|
||||
getglobal(chkbtn:GetName() .. 'Text'):SetText(" MetaMapBWP Support")
|
||||
|
||||
if tMetaMap.BWPPresence then
|
||||
chkbtn:Enable()
|
||||
else
|
||||
chkbtn:Disable()
|
||||
end
|
||||
if chkbtn:IsEnabled() then
|
||||
if tMetaMap.BWPEnable then
|
||||
chkbtn:SetChecked(true)
|
||||
else
|
||||
chkbtn:SetChecked(false)
|
||||
end
|
||||
else
|
||||
chkbtn:SetChecked(false)
|
||||
end
|
||||
return chkbtn
|
||||
end
|
||||
local function Render_SFMinimapCheckBox(fParent, sName)
|
||||
local checkbutton = CreateFrame("CheckButton", sName, fParent, "UICheckButtonTemplate")
|
||||
checkbutton:SetWidth(20)
|
||||
checkbutton:SetHeight(20)
|
||||
checkbutton:SetPoint("TOPLEFT", fParent, "TOPLEFT", 10, -10)
|
||||
getglobal(checkbutton:GetName() .. 'Text'):SetText("Minimap Button")
|
||||
if bMinimapToggle then
|
||||
checkbutton:SetChecked(true)
|
||||
else
|
||||
checkbutton:SetChecked(false)
|
||||
end
|
||||
return checkbutton
|
||||
end
|
||||
local function Render_SFColorSwatch(fParent, sText, tUI)
|
||||
local tCol = nil
|
||||
if sText == "VG_MainFrame" then
|
||||
tCol = tUI.MainFrameColor
|
||||
elseif sText == "VG_MainFrame_StepFrame" then
|
||||
tCol = tUI.StepFrameColor
|
||||
elseif sText == "VG_MainFrame_ScrollFrame" then
|
||||
tCol = tUI.ScrollFrameColor
|
||||
elseif sText == "VG_MainFrame_StepFrameLabel" then
|
||||
tCol = tUI.StepFrameTextColor
|
||||
elseif sText == "VG_MainFrame_ScrollFrameLabels" then
|
||||
tCol = tUI.ScrollFrameTextColor
|
||||
end
|
||||
local sSwatchName = "VG_ColorSwatch" .. "_" .. sText
|
||||
local btn = CreateFrame("Button", sSwatchName, fParent)--, "OptionsCheckButtonTemplate")
|
||||
local background = btn:CreateTexture(nil, "BACKGROUND")
|
||||
background:SetWidth(16)
|
||||
background:SetHeight(16)
|
||||
background:SetPoint("CENTER", 0, 0)
|
||||
background:SetTexture(.3, .3, .3, 1)
|
||||
local artwork = btn:CreateTexture(nil, "ARTWORK")
|
||||
artwork:SetWidth(13)
|
||||
artwork:SetHeight(13)
|
||||
artwork:SetPoint("CENTER", 0, 0)
|
||||
artwork:SetTexture(tCol.nR, tCol.nG, tCol.nB, tCol.nA)
|
||||
btn.background = background
|
||||
btn.artwork = artwork
|
||||
btn:SetWidth(16)
|
||||
btn:SetHeight(16)
|
||||
btn:SetNormalTexture(artwork)
|
||||
btn:SetScript( "OnClick", function()
|
||||
local frame = getglobal(sText)
|
||||
local tCol = nil
|
||||
local opacitySlider = nil
|
||||
if sText == "VG_MainFrame" then
|
||||
tCol = tUI.MainFrameColor
|
||||
opacitySlider = true
|
||||
elseif sText == "VG_MainFrame_StepFrame" then
|
||||
tCol = tUI.StepFrameColor
|
||||
opacitySlider = true
|
||||
elseif sText == "VG_MainFrame_ScrollFrame" then
|
||||
tCol = tUI.ScrollFrameColor
|
||||
opacitySlider = true
|
||||
elseif sText == "VG_MainFrame_StepFrameLabel" then
|
||||
tCol = tUI.StepFrameTextColor
|
||||
opacitySlider = false
|
||||
elseif sText == "VG_MainFrame_ScrollFrameLabels" then
|
||||
tCol = tUI.ScrollFrameTextColor
|
||||
opacitySlider = false
|
||||
end
|
||||
|
||||
local r1, g1, b1, a1 = tCol.nR, tCol.nG, tCol.nB, tCol.nA
|
||||
if ColorPickerFrame:IsShown() then
|
||||
ColorPickerFrame:Hide()
|
||||
else
|
||||
ColorPickerFrame.func = function(pV)
|
||||
local nr, ng, nb, na
|
||||
if pV then
|
||||
-- The user bailed, we extract the old color from the table created by ShowColorPicker.
|
||||
nr, ng, nb, na = pV.r, pV.g, pV.b, pV.a
|
||||
ColorPickerFrame.previousValues = {}
|
||||
else
|
||||
-- Something changed
|
||||
nr, ng, nb = ColorPickerFrame:GetColorRGB();
|
||||
na = 1 - OpacitySliderFrame:GetValue()
|
||||
end
|
||||
r1, g1, b1, a1 = nr, ng, nb, na
|
||||
btn.artwork:SetVertexColor(r1, g1, b1, a1)
|
||||
--btn.background:SetVertexColor(r1, g1, b1, a1)
|
||||
if sText == "VG_MainFrame" then
|
||||
frame:SetBackdropColor(r1, g1, b1, a1)
|
||||
--VGuide.db.char.UIoptions.MainFrameColor = {
|
||||
tUI.MainFrameColor = {
|
||||
nR = r1, nG = g1, nB = b1, nA = a1,
|
||||
}
|
||||
oSettings:SetSettingsUI(tUI)
|
||||
elseif sText == "VG_MainFrame_StepFrame" then
|
||||
frame:SetBackdropColor(r1, g1, b1, a1)
|
||||
--VGuide.db.char.UIoptions.StepFrameColor = {
|
||||
tUI.StepFrameColor = {
|
||||
nR = r1, nG = g1, nB = b1, nA = a1,
|
||||
}
|
||||
oSettings:SetSettingsUI(tUI)
|
||||
elseif sText == "VG_MainFrame_ScrollFrame" then
|
||||
frame:SetBackdropColor(r1, g1, b1, a1)
|
||||
--VGuide.db.char.UIoptions.ScrollFrameColor = {
|
||||
tUI.ScrollFrameColor = {
|
||||
nR = r1, nG = g1, nB = b1, nA = a1,
|
||||
}
|
||||
oSettings:SetSettingsUI(tUI)
|
||||
elseif sText == "VG_MainFrame_StepFrameLabel" then
|
||||
a1 = .99
|
||||
frame:SetTextColor(r1, g1, b1, a1)
|
||||
--VGuide.db.char.UIoptions.StepFrameTextColor = {
|
||||
tUI.ScrollFrameColor = {
|
||||
nR = r1, nG = g1, nB = b1, nA = a1,
|
||||
}
|
||||
oSettings:SetSettingsUI(tUI)
|
||||
elseif sText == "VG_MainFrame_ScrollFrameLabels" then
|
||||
local frame = getglobal("VG_MainFrame_ScrollFrameChild")
|
||||
local shEH = frame.Entries
|
||||
a1 = .71
|
||||
for _,v in pairs(shEH) do
|
||||
v:SetTextColor(r1, g1, b1, a1)
|
||||
end
|
||||
--VGuide.db.char.UIoptions.ScrollFrameTextColor = {
|
||||
tUI.ScrollFrameColor = {
|
||||
nR = r1, nG = g1, nB = b1, nA = a1,
|
||||
}
|
||||
oSettings:SetSettingsUI(tUI)
|
||||
end
|
||||
end
|
||||
ColorPickerFrame.cancelFunc = ColorPickerFrame.func
|
||||
ColorPickerFrame.opacityFunc = ColorPickerFrame.func
|
||||
|
||||
ColorPickerFrame.hasOpacity = opacitySlider
|
||||
ColorPickerFrame.opacity = 1 - a1
|
||||
|
||||
ColorPickerFrame.previousValues = { r = r1, g = g1, b = b1, a = a1}
|
||||
|
||||
Dv(" -- r1: "..r1)
|
||||
Dv(" -- g1: "..g1)
|
||||
Dv(" -- b1: "..b1)
|
||||
Dv(" -- a1: " .. a1)
|
||||
ColorPickerFrame:SetColorRGB(r1, g1, b1, a1);
|
||||
ColorPickerFrame:Hide(); -- Need to run the OnShow handler.
|
||||
ColorPickerFrame:Show();
|
||||
end
|
||||
end)
|
||||
return btn
|
||||
end
|
||||
local function Render_SFColorSwatchLabel(fParent, sText)
|
||||
local fs = fParent:CreateFontString(nil, "ARTWORK", "GameFontNormalSmall")
|
||||
fs:SetPoint("LEFT", fParent, "RIGHT", 10, 0)
|
||||
fs:SetText(sText)
|
||||
return fs
|
||||
end
|
||||
local function Render_Button(fParent, sName, nWidth, nHeight, tTexture)
|
||||
local btn = CreateFrame("Button", sName, fParent)
|
||||
btn:SetWidth(nWidth)
|
||||
btn:SetHeight(nHeight)
|
||||
btn:SetNormalTexture(tTexture.NORMAL)
|
||||
btn:SetPushedTexture(tTexture.PUSHED)
|
||||
btn:SetHighlightTexture(tTexture.HIGHLIGHT)
|
||||
btn:RegisterForClicks("LeftButtonUp")
|
||||
return btn
|
||||
end
|
||||
local function Render_SFSlider(fParent, sName, sText, sLow, sHigh, nMin, nMax, nValue, sAppend)
|
||||
local sldr = CreateFrame("Slider", sName, fParent, "OptionsSliderTemplate")
|
||||
sldr:SetOrientation("HORIZONTAL");
|
||||
sldr:SetWidth(195)
|
||||
sldr:SetHeight(14)
|
||||
sldr:SetPoint("TOP", fParent, "TOP", 0, -200)
|
||||
getglobal(sldr:GetName() .. 'Text'):SetText(sText); --Sets the "title" text (top-centre of slider).
|
||||
getglobal(sldr:GetName() .. 'Low'):SetText(sLow); --Sets the left-side slider text (default is "Low").
|
||||
getglobal(sldr:GetName() .. 'High'):SetText(sHigh); --Sets the right-side slider text (default is "High").
|
||||
sldr:SetValueStep(1)
|
||||
sldr:SetMinMaxValues(nMin, nMax)
|
||||
sldr:SetValue(nValue)
|
||||
local fs = sldr:CreateFontString(nil, "ARTWORK", "GameFontNormalSmall")
|
||||
fs:SetTextColor(.59, .59, .59, 1)
|
||||
fs:SetJustifyH("CENTER")
|
||||
fs:SetJustifyV("BOTTOM")
|
||||
fs:SetPoint("CENTER", sldr, "BOTTOM", 0, -2)
|
||||
if sAppend then
|
||||
fs:SetText(tostring(nValue) .. sAppend)
|
||||
else
|
||||
fs:SetText(tostring(nValue))
|
||||
end
|
||||
sldr.fs = fs
|
||||
return sldr
|
||||
end
|
||||
|
||||
obj.tWidgets = {}
|
||||
-------------------------------
|
||||
--- Rendering
|
||||
-------------------------------
|
||||
do
|
||||
-- Settings Frame
|
||||
obj.tWidgets.frame_SettingFrame = Render_SF(fParent, "VG_SettingsFrame")
|
||||
obj.tWidgets.button_CloseButton = Render_Button(obj.tWidgets.frame_SettingFrame, nil, 16, 16, tTexture.B_CLOSE)
|
||||
obj.tWidgets.button_CloseButton:SetPoint("TOPRIGHT", obj.tWidgets.frame_SettingFrame, "TOPRIGHT", -5, -5)
|
||||
obj.tWidgets.checkbutton_MetaMapNotesSupport = Render_SFMetamapNotesSupportCheckBox(obj.tWidgets.frame_SettingFrame, "VG_SettingsFrame_MetaMapNotesCheckButton", tMetaMap)
|
||||
obj.tWidgets.checkbutton_MetaMapNotesSupport:SetPoint("TOPLEFT", obj.tWidgets.frame_SettingFrame, "TOPLEFT", 8, -5)
|
||||
obj.tWidgets.checkbutton_MetaMapBWPSupport = Render_SFMetamapBWPSupportCheckBox(obj.tWidgets.frame_SettingFrame, "VG_SettingsFrame_MetaMapBWPCheckButton", tMetaMap)
|
||||
obj.tWidgets.checkbutton_MetaMapBWPSupport:SetPoint("TOPLEFT", obj.tWidgets.frame_SettingFrame, "TOPLEFT", 8, -20)
|
||||
--tWidgets.checkbutton_Minimap = Render_SFMinimapCheckBox(tWidgets.frame_SettingFrame, "VG_SettingsFrame_MinimapCheckButton")
|
||||
--tWidgets.slider_Minimap = Render_SFSlider(tWidgets.frame_SettingFrame, "VG_SettingFrame_MinimapSlider", "Minimap Button Placement", "-180", "+180", -180, 180, math.floor(nMinimapPos), nil)
|
||||
--tWidgets.slider_Minimap:SetPoint("TOP", tWidgets.frame_SettingFrame, "TOP", 0, -40)
|
||||
|
||||
obj.tWidgets.colorpicker_StepFrameTextColor = Render_SFColorSwatch(obj.tWidgets.frame_SettingFrame, "VG_MainFrame_StepFrameLabel", tUI)
|
||||
obj.tWidgets.colorpicker_StepFrameTextColor:SetPoint("TOPLEFT", obj.tWidgets.frame_SettingFrame, "TOPLEFT", 10, -45)
|
||||
obj.tWidgets.fs_ColorPickerStepFrameTextColor = Render_SFColorSwatchLabel(obj.tWidgets.colorpicker_StepFrameTextColor, "StepFrame TextColor")
|
||||
|
||||
obj.tWidgets.colorpicker_ScrollFrameTextColor = Render_SFColorSwatch(obj.tWidgets.frame_SettingFrame, "VG_MainFrame_ScrollFrameLabels", tUI)
|
||||
obj.tWidgets.colorpicker_ScrollFrameTextColor:SetPoint("TOPLEFT", obj.tWidgets.frame_SettingFrame, "TOPLEFT", 10, -63)
|
||||
obj.tWidgets.fs_ColorPickerScrollFrameTextColor = Render_SFColorSwatchLabel(obj.tWidgets.colorpicker_ScrollFrameTextColor, "ScrollFrame TextColor")
|
||||
|
||||
obj.tWidgets.colorpicker_MainFrame = Render_SFColorSwatch(obj.tWidgets.frame_SettingFrame, "VG_MainFrame", tUI)
|
||||
obj.tWidgets.colorpicker_MainFrame:SetPoint("TOPLEFT", obj.tWidgets.frame_SettingFrame, "TOPLEFT", 10, -93)
|
||||
obj.tWidgets.fs_ColorPickerMainFrame = Render_SFColorSwatchLabel(obj.tWidgets.colorpicker_MainFrame, "MainFrame Background")
|
||||
|
||||
obj.tWidgets.colorpicker_StepFrame = Render_SFColorSwatch(obj.tWidgets.frame_SettingFrame, "VG_MainFrame_StepFrame", tUI)
|
||||
obj.tWidgets.colorpicker_StepFrame:SetPoint("TOPLEFT", obj.tWidgets.frame_SettingFrame, "TOPLEFT", 10, -110)
|
||||
obj.tWidgets.fs_ColorPickerStepFrame = Render_SFColorSwatchLabel(obj.tWidgets.colorpicker_StepFrame , "StepFrame Tint")
|
||||
|
||||
obj.tWidgets.colorpicker_ScrollFrame = Render_SFColorSwatch(obj.tWidgets.frame_SettingFrame, "VG_MainFrame_ScrollFrame", tUI)
|
||||
obj.tWidgets.colorpicker_ScrollFrame:SetPoint("TOPLEFT", obj.tWidgets.frame_SettingFrame, "TOPLEFT", 10, -127)
|
||||
obj.tWidgets.fs_ColorPickerScrollFrame = Render_SFColorSwatchLabel(obj.tWidgets.colorpicker_ScrollFrame, "ScrollFrame Tint")
|
||||
|
||||
obj.tWidgets.slider_StepScroll = Render_SFSlider(obj.tWidgets.frame_SettingFrame, "VG_SettingsFrame_StepScrollSlider", "Value", "15%", "55%", 15, 55, math.floor(nStepScroll*100), "%")
|
||||
obj.tWidgets.slider_StepScroll:SetPoint("TOP", obj.tWidgets.frame_SettingFrame, "TOP", 0, -160)
|
||||
obj.tWidgets.slider_Opacity = Render_SFSlider(obj.tWidgets.frame_SettingFrame, "VG_SettingsFrame_OpacitySlider", "Opacity", "15%", "100%", 15, 100, math.floor(nOpacity*100), "%")
|
||||
obj.tWidgets.slider_Opacity:SetPoint("TOP", obj.tWidgets.frame_SettingFrame, "TOP", 0, -200)
|
||||
obj.tWidgets.slider_Scale = Render_SFSlider(obj.tWidgets.frame_SettingFrame, "VG_SettingsFrame_ScaleSlider", "Scale", "25%", "175%", 25, 175, math.floor(nScale*100), "%")
|
||||
obj.tWidgets.slider_Scale:SetPoint("TOP", obj.tWidgets.frame_SettingFrame, "TOP", 0, -240)
|
||||
obj.tWidgets.slider_Layer = Render_SFSlider(obj.tWidgets.frame_SettingFrame, "VG_SettingsFrame_LayerSlider", "Layer", "BG", "DIALOG", 1, 5, Layers[sLayer], sLayer)
|
||||
obj.tWidgets.slider_Layer:SetPoint("TOP", obj.tWidgets.frame_SettingFrame, "TOP", 0, -280)
|
||||
obj.tWidgets.slider_Layer.fs:SetText(sLayer)
|
||||
end
|
||||
|
||||
-------------------------------
|
||||
--- UI Events Handling
|
||||
-------------------------------
|
||||
obj.tWidgets.frame_SettingFrame:SetScript("OnMouseDown", function()
|
||||
if arg1 == "LeftButton" and not this.isMoving then
|
||||
this:StartMoving();
|
||||
this.isMoving = true;
|
||||
end
|
||||
end)
|
||||
obj.tWidgets.frame_SettingFrame:SetScript("OnMouseUp", function()
|
||||
if arg1 == "LeftButton" and this.isMoving then
|
||||
this:StopMovingOrSizing();
|
||||
this.isMoving = false;
|
||||
end
|
||||
end)
|
||||
obj.tWidgets.frame_SettingFrame:SetScript("OnHide", function()
|
||||
if this.isMoving then
|
||||
this:StopMovingOrSizing();
|
||||
this.isMoving = false;
|
||||
end
|
||||
end)
|
||||
obj.tWidgets.button_CloseButton:SetScript("OnClick", function()
|
||||
local frame = this:GetParent()
|
||||
frame:Hide()
|
||||
frame.showthis = false
|
||||
end)
|
||||
obj.tWidgets.checkbutton_MetaMapNotesSupport:SetScript("OnClick", function()
|
||||
if arg1 == "LeftButton" then
|
||||
local bVal = this:GetChecked()
|
||||
local tMetaMap = oSettings:GetSettingsMetaMap()
|
||||
if not bVal then
|
||||
tMetaMap.NotesEnable = false
|
||||
else
|
||||
tMetaMap.NotesEnable = true
|
||||
end
|
||||
oSettings:SetSettingsMetaMap(tMetaMap)
|
||||
end
|
||||
end)
|
||||
obj.tWidgets.checkbutton_MetaMapBWPSupport:SetScript("OnClick", function()
|
||||
if arg1 == "LeftButton" then
|
||||
local bVal = this:GetChecked()
|
||||
local tMetaMap = oSettings:GetSettingsMetaMap()
|
||||
if not bVal then
|
||||
tMetaMap.BWPEnable = false
|
||||
else
|
||||
tMetaMap.BWPEnable = true
|
||||
end
|
||||
oSettings:SetSettingsMetaMap(tMetaMap)
|
||||
end
|
||||
end)
|
||||
--[[obj.tWidgets.checkbutton_Minimap:SetScript("OnClick", function()
|
||||
if arg1 == "LeftButton" then
|
||||
local button = getglobal("VG_MinimapButton")
|
||||
local bVal = this:GetChecked()
|
||||
if bVal == 1 then
|
||||
button:Show()
|
||||
button.closethis = false
|
||||
--VGuide.db.profile.UIoptions.MinimapToggle = true
|
||||
tUInew.UI.MinimapToggle = true
|
||||
else
|
||||
button:Hide()
|
||||
button.closethis = true
|
||||
--VGuide.db.profile.UIoptions.MinimapToggle = false
|
||||
tUInew.UI.MinimapToggle = false
|
||||
end
|
||||
end
|
||||
end)
|
||||
]]
|
||||
--[[obj.tWidgets.slider_Minimap:SetScript("OnValueChanged", function()
|
||||
local nVal = this:GetValue()
|
||||
local button = getglobal("VG_bMinimap")
|
||||
UI.PositionMinimapButton(button, nVal)
|
||||
--VGuide.db.profile.UIoptions.MinimapPos = nVal
|
||||
tUInew.UI.MinimapPos = nVal
|
||||
this.fs:SetText(nVal)
|
||||
end)
|
||||
]]
|
||||
obj.tWidgets.slider_StepScroll:SetScript("OnValueChanged", function()
|
||||
local nVal = arg1
|
||||
local fMain = getglobal("VG_MainFrame")
|
||||
local fStep = getglobal("VG_MainFrame_StepFrame")
|
||||
local fScroll = getglobal("VG_MainFrame_ScrollFrame")
|
||||
local fChild = getglobal("VG_MainFrame_ScrollFrameChild")
|
||||
local bStepFrame = tUI.StepFrameVisible
|
||||
local bScrollFrame = tUI.ScrollFrameVisible
|
||||
|
||||
if bStepFrame and bScrollFrame then
|
||||
local nfMHeight = fMain:GetHeight()
|
||||
local nPer = nfMHeight * (1 - nVal/100)
|
||||
local nGap = nPer - (nfMHeight/2)
|
||||
fStep:SetPoint("TOPLEFT", fMain, "TOPLEFT", 5, -23)
|
||||
fStep:SetPoint("BOTTOMRIGHT", fMain, "RIGHT", -5, nGap)
|
||||
fScroll:SetPoint("TOPLEFT", fStep, "BOTTOMLEFT", 0, -2)
|
||||
--UI.SetSliderMinMax(fChild.nFSTotalHeight)
|
||||
end
|
||||
--VGuide.db.profile.UIoptions.StepScroll = nVal/100
|
||||
--VGuide.db.char.UIoptions.StepScroll = nVal/100
|
||||
tUI.StepScroll = nVal/100
|
||||
oSettings:SetSettingsUI(tUI)
|
||||
this.fs:SetText(nVal.."%")
|
||||
end)
|
||||
obj.tWidgets.slider_Opacity:SetScript("OnValueChanged", function()
|
||||
local nVal = arg1
|
||||
local frame = getglobal("VG_MainFrame")
|
||||
frame:SetAlpha(nVal/100)
|
||||
--VGuide.db.profile.UIoptions.Opacity = nVal/100
|
||||
--VGuide.db.char.UIoptions.Opacity = nVal/100
|
||||
tUI.Opacity = nVal/100
|
||||
oSettings:SetSettingsUI(tUI)
|
||||
this.fs:SetText(nVal.."%")
|
||||
end)
|
||||
obj.tWidgets.slider_Scale:SetScript("OnValueChanged", function()
|
||||
local nVal = arg1
|
||||
local frame = getglobal("VG_MainFrame")
|
||||
frame:SetScale(nVal/100)
|
||||
--VGuide.db.profile.UIoptions.Scale = nVal/100
|
||||
--VGuide.db.char.UIoptions.Scale = nVal/100
|
||||
tUI.Scale = nVal/100
|
||||
oSettings:SetSettingsUI(tUI)
|
||||
this.fs:SetText(nVal.."%")
|
||||
end)
|
||||
obj.tWidgets.slider_Layer:SetScript("OnValueChanged", function()
|
||||
local nVal = arg1
|
||||
local frame = getglobal("VG_MainFrame")
|
||||
--VGuide.db.profile.UIoptions.Layer = Layers[nVal]
|
||||
--VGuide.db.char.UIoptions.Layer = Layers[nVal]
|
||||
tUI.Layer = Layers[nVal]
|
||||
oSettings:SetSettingsUI(tUI)
|
||||
--frame:SetFrameStrata(VGuide.db.char.UIoptions.Layer)
|
||||
--this.fs:SetText(VGuide.db.char.UIoptions.Layer)
|
||||
frame:SetFrameStrata(tUI.Layer)
|
||||
this.fs:SetText(tUI.Layer)
|
||||
end)
|
||||
|
||||
-------------------------------
|
||||
--- Initialization
|
||||
-------------------------------
|
||||
obj.tWidgets.frame_SettingFrame:Hide()
|
||||
--obj.tWidgets.frame_SettingFrame:Show()
|
||||
|
||||
obj.ShowFrame = function(self)
|
||||
local f = obj.tWidgets.frame_SettingsFrame
|
||||
if not f:IsVisible() then
|
||||
f:Show()
|
||||
end
|
||||
end
|
||||
|
||||
obj.HideFrame = function(self)
|
||||
local f = obj.tWidgets.frame_SettingsFrame
|
||||
if f:IsVisible() then
|
||||
f:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
return obj
|
||||
end
|
||||
|
||||
Dv(" VGuide Frame_SettingsFrame.lua End")
|
||||
+687
@@ -0,0 +1,687 @@
|
||||
--[[--------------------------------------------------
|
||||
----- VanillaGuide -----
|
||||
------------------
|
||||
GuideTable.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description:
|
||||
Object Handling the Guides
|
||||
1.00
|
||||
-- Initial Ace2 release
|
||||
1.99a
|
||||
-- Ally addition starter version
|
||||
1.03
|
||||
-- No Changes. Just adjusting "version".
|
||||
1.99x for a beta release was a weird choise.
|
||||
1.04.1
|
||||
-- This will be the place where we "prepare" the guides,
|
||||
upon player login.
|
||||
We'll include all the needed guides here and we'll provide
|
||||
function to retrive informations too
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
--local VGuide = VGuide
|
||||
Dv(" VGuide GuideTable.lua Start")
|
||||
|
||||
objGuideTable = {}
|
||||
objGuideTable.__index = objGuideTable
|
||||
|
||||
function objGuideTable:new(oSettings)
|
||||
local obj = {}
|
||||
setmetatable(obj, self)
|
||||
|
||||
local function TablesMerge(t1, t2)
|
||||
for k, v in pairs(t2) do
|
||||
if (type(v) == "table") and (type(t1[k] or false) == "table") then
|
||||
TablesMerge(t1[k], t2[k])
|
||||
else
|
||||
t1[k] = v
|
||||
end
|
||||
end
|
||||
return t1
|
||||
end
|
||||
|
||||
local function ColorizeTable(t1)
|
||||
for k1, _ in pairs(t1) do
|
||||
if type(t1[k1].items) == "table" then
|
||||
for k2, v2 in pairs(t1[k1].items) do
|
||||
if v2 then
|
||||
local opentext = {
|
||||
[1] = {
|
||||
["find"] = "#ACCEPT",
|
||||
["replace"] = "|c0000ffff"
|
||||
},
|
||||
[2] = {
|
||||
["find"] = "#DOQUEST",
|
||||
["replace"] = "|c000079d2"
|
||||
},
|
||||
[3] = {
|
||||
["find"] = "#TURNIN",
|
||||
["replace"] = "|c0000ff00"
|
||||
},
|
||||
[4] = {
|
||||
["find"] = "#NPC",
|
||||
["replace"] = "|c00ff00ff"
|
||||
},
|
||||
[5] = {
|
||||
["find"] = "#COORDS",
|
||||
["replace"] = "|c00ffff00"
|
||||
},
|
||||
[6] = {
|
||||
["find"] = "#VIDEO",
|
||||
["replace"] = "|c00ff0000"
|
||||
},
|
||||
[7] = {
|
||||
["find"] = "#PICTURE",
|
||||
["replace"] = "|c00fca742"
|
||||
},
|
||||
[8] = {
|
||||
["find"] = "#HUNTER",
|
||||
["replace"] = "|c00a80000"
|
||||
},
|
||||
}
|
||||
for n = 1, getn(opentext) do
|
||||
t1[k1].items[k2].str = gsub(t1[k1].items[k2].str, opentext[n]["find"],opentext[n]["replace"])
|
||||
end
|
||||
t1[k1].items[k2].str = gsub(t1[k1].items[k2].str, "#","|r")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return t1
|
||||
end
|
||||
|
||||
obj.TableDDM = {
|
||||
lvl1 = {
|
||||
{ "v", "Introduction", id = 1},
|
||||
{ "s", "Starting Zones" },
|
||||
{ "s", "Later Leveling" },
|
||||
{ "s", "Profession Guides" },
|
||||
},
|
||||
lvl2 = {
|
||||
["Later Leveling"] = {
|
||||
{ "s", "12-20" },
|
||||
{ "s", "20-30" },
|
||||
{ "s", "30-40" },
|
||||
{ "s", "40-50" },
|
||||
{ "s", "50-60" },
|
||||
},
|
||||
["Profession Guides"] = {
|
||||
{ "v", "Alchemy", id = nil },
|
||||
{ "v", "Blacksmithing", id = nil },
|
||||
{ "v", "[H] Cooking", id = nil },
|
||||
{ "v", "[A] Cooking", id = nil },
|
||||
{ "v", "Enchanting", id = nil },
|
||||
{ "v", "Engineering", id = nil },
|
||||
{ "v", "Leatherworking", id = nil },
|
||||
{ "v", "Tailoring", id = nil }
|
||||
},
|
||||
["[H] Starting Zones"] = {
|
||||
{ "s", "Orcs & Trolls" },
|
||||
{ "s", "Taurens" },
|
||||
{ "s", "Undeads" },
|
||||
},
|
||||
["[A] Starting Zones"] = {
|
||||
{ "s", "Humans" },
|
||||
{ "s", "Dwarves & Gnomes" },
|
||||
{ "s", "Night Elves" },
|
||||
},
|
||||
},
|
||||
lvl3 = {
|
||||
["Orcs & Trolls"] = {
|
||||
{ "v", "1-6 Durotar", id = nil },
|
||||
{ "v", "6-9 Durotar", id = nil },
|
||||
{ "v", "9-12 Durotar", id = nil },
|
||||
},
|
||||
["Taurens"] = {
|
||||
{ "v", "1-6 Mulgore", id = nil },
|
||||
{ "v", "6-10 Mulgore", id = nil },
|
||||
{ "v", "10-12 Mulgore", id = nil },
|
||||
},
|
||||
["Undeads"] = {
|
||||
{ "v", "1-6 DeathKnell", id = nil },
|
||||
{ "v", "6-10 Tirisfal Glades", id = nil },
|
||||
{ "v", "10-12 Tirisfal Glades", id = nil },
|
||||
},
|
||||
["[H] 12-20"] = {
|
||||
{ "v", "12-15 Barrens", id = nil },
|
||||
{ "v", "15-16 Stonetalon Mountains", id = nil },
|
||||
{ "v", "16-20 Barrens (part 1)", id = nil },
|
||||
{ "v", "16-20 Barrens (part 2)", id = nil },
|
||||
},
|
||||
["[H] 20-30"] = {
|
||||
{ "v", "20-21 Stonetalon Mountains", id = nil },
|
||||
{ "v", "21-21 Ashenvale", id = nil },
|
||||
{ "v", "22-23 Southern Barrens", id = nil },
|
||||
{ "v", "23-25 Stonetalon Mountains", id = nil },
|
||||
{ "v", "25-25 Southern Barrens", id = nil },
|
||||
{ "v", "25-26 Thousand Needles", id = nil },
|
||||
{ "v", "26-27 Ashenvale", id = nil },
|
||||
{ "v", "27-27 Stonetalon Mountains", id = nil },
|
||||
{ "v", "27-29 Thousand Needles", id = nil },
|
||||
{ "v", "29-30 Hillsbrad Foothills", id = nil },
|
||||
},
|
||||
["[H] 30-40"] = {
|
||||
{ "v", "30-30 Alterac Mountains", id = nil },
|
||||
{ "v", "30-30 Arathi Highlands", id = nil },
|
||||
{ "v", "30-31 Stranglethorn Vale", id = nil },
|
||||
{ "v", "31-32 TN (Shimmering Flats)", id = nil },
|
||||
{ "v", "32-34 Desolace", id = nil },
|
||||
{ "v", "34-35 Stranglethorn Vale", id = nil },
|
||||
{ "v", "35-37 Arathi Highlands", id = nil },
|
||||
{ "v", "37-37 Alterac Mountains", id = nil },
|
||||
{ "v", "37-37 Thousand Needles", id = nil },
|
||||
{ "v", "37-38 Dustwallow Marsh", id = nil },
|
||||
{ "v", "38-40 Stranglethorn Vale", id = nil },
|
||||
},
|
||||
["[H] 40-50"] = {
|
||||
{ "v", "40-41 Badlands", id = nil },
|
||||
{ "v", "41-42 Swamp of Sorrows", id = nil },
|
||||
{ "v", "42-43 Stranglethorn Vale", id = nil },
|
||||
{ "v", "43-43 Desolace", id = nil },
|
||||
{ "v", "43-43 Dustwallow Marsh", id = nil },
|
||||
{ "v", "43-44 Tanaris", id = nil },
|
||||
{ "v", "44-46 Feralas", id = nil },
|
||||
{ "v", "46-46 Azshara", id = nil },
|
||||
{ "v", "46-47 Hinterlands", id = nil },
|
||||
{ "v", "47-47 Stranglethorn Vale", id = nil },
|
||||
{ "v", "47-48 Searing Gorge", id = nil },
|
||||
{ "v", "48-48 Swamp of Sorrows", id = nil },
|
||||
{ "v", "48-49 Ferelas", id = nil },
|
||||
{ "v", "49-50 Tanaris", id = nil },
|
||||
},
|
||||
["[H] 50-60"] = {
|
||||
{ "v", "50-50 Azshara", id = nil },
|
||||
{ "v", "50-50 Hinterlands", id = nil },
|
||||
{ "v", "50-51 Blasted Lands", id = nil },
|
||||
{ "v", "51-52 Un'Goro Crater", id = nil },
|
||||
{ "v", "52-53 Burning Steppes", id = nil },
|
||||
{ "v", "53-54 Azshara", id = nil },
|
||||
{ "v", "54-54 Felwood", id = nil },
|
||||
{ "v", "54-55 Winterspring", id = nil },
|
||||
{ "v", "55-55 Felwood", id = nil },
|
||||
{ "v", "55-55 Silithus", id = nil },
|
||||
{ "v", "55-56 Western Plaguelands", id = nil },
|
||||
{ "v", "56-57 Eastern Plaguelands", id = nil },
|
||||
{ "v", "57-58 Western Plaguelands", id = nil },
|
||||
{ "v", "58-60 Winterspring", id = nil },
|
||||
},
|
||||
|
||||
["Humans"] = {
|
||||
{ "v", "1-10 Elwynn Forest", id = nil },
|
||||
{ "v", "10-12 Westfall and Lock Modan", id = nil },
|
||||
},
|
||||
["Dwarves & Gnomes"] = {
|
||||
{ "v", "1-6 Cold Ridge Valley", id = nil },
|
||||
{ "v", "6-12 Dun Morogh", id = nil },
|
||||
},
|
||||
["Night Elves"] = {
|
||||
{ "v", "1-6 Teldrassil", id = nil },
|
||||
{ "v", "6-12 Teldrassil", id = nil },
|
||||
},
|
||||
["[A] 12-20"] = {
|
||||
{ "v", "12-14 Darkshore", id = nil },
|
||||
{ "v", "14-17 Darkshore", id = nil },
|
||||
{ "v", "17-18 Loch Modan", id = nil },
|
||||
{ "v", "18-20 Redredge Mountains", id = nil },
|
||||
},
|
||||
["[A] 20-30"] = {
|
||||
{ "v", "20-21 Darkshore", id = nil },
|
||||
{ "v", "21-22 Ashenvale", id = nil },
|
||||
{ "v", "22-23 Stonetalon Mountains", id = nil },
|
||||
{ "v", "23-24 Darkshore", id = nil },
|
||||
{ "v", "24-25 Ashenvale", id = nil },
|
||||
{ "v", "25-27 Wetlands", id = nil },
|
||||
{ "v", "27-28 Lakeshire", id = nil },
|
||||
{ "v", "28-29 Duskwood", id = nil },
|
||||
{ "v", "29-30 Ashenvale", id = nil },
|
||||
{ "v", "30-30 Wetlands", id = nil },
|
||||
},
|
||||
["[A] 30-40"] = {
|
||||
{ "v", "30-31 Hillsbrad Foothills", id = nil },
|
||||
{ "v", "31-31 Alterac Mountains", id = nil },
|
||||
{ "v", "31-32 Arathi Highlands", id = nil },
|
||||
{ "v", "32-32 Stranglethorn Vale", id = nil },
|
||||
{ "v", "32-33 Thousand Needles (Shimmering Flats)", id = nil },
|
||||
{ "v", "33-33 Stonetalon Mountains", id = nil },
|
||||
{ "v", "33-35 Desolace", id = nil },
|
||||
{ "v", "35-36 Stranglethorn Vale", id = nil },
|
||||
{ "v", "36-37 Alterac Mountains", id = nil },
|
||||
{ "v", "37-38 Arathi Highlands", id = nil },
|
||||
{ "v", "38-38 Dustwallow Marsh", id = nil },
|
||||
{ "v", "38-40 Stranglethorn Vale", id = nil },
|
||||
},
|
||||
["[A] 40-50"] = {
|
||||
{ "v", "40-41 Badlands", id = nil },
|
||||
{ "v", "41-41 Swamp of Sorrows", id = nil },
|
||||
{ "v", "41-42 Desolace", id = nil },
|
||||
{ "v", "42-43 Stranglethron Vale", id = nil },
|
||||
{ "v", "43-43 Tanaris", id = nil },
|
||||
{ "v", "43-45 Feralas", id = nil },
|
||||
{ "v", "45-46 Uldaman", id = nil },
|
||||
{ "v", "46-47 The Hinterlands", id = nil },
|
||||
{ "v", "47-47 Feralas", id = nil },
|
||||
{ "v", "47-48 Tanaris", id = nil },
|
||||
{ "v", "48-48 The Hinterlands", id = nil },
|
||||
{ "v", "48-49 Stranglethorn Vale", id = nil },
|
||||
{ "v", "49-50 Blasted Lands", id = nil },
|
||||
},
|
||||
["[A] 50-60"] = {
|
||||
{ "v", "50-51 Searing Gorge", id = nil },
|
||||
{ "v", "51-52 Un’Goro Crater", id = nil },
|
||||
{ "v", "52-53 Azshara", id = nil },
|
||||
{ "v", "53-54 Felwood", id = nil },
|
||||
{ "v", "54-54 Tanaris", id = nil },
|
||||
{ "v", "54-54 Felwood", id = nil },
|
||||
{ "v", "54-55 Winterspring", id = nil },
|
||||
{ "v", "55-56 Burning Steppes", id = nil },
|
||||
{ "v", "56-56 Tanaris", id = nil },
|
||||
{ "v", "56-56 Silithus", id = nil },
|
||||
{ "v", "56-57 Western Plaguelands", id = nil },
|
||||
{ "v", "57-58 Eastern Plaguelands", id = nil },
|
||||
{ "v", "58-58 Western Plaguelands", id = nil },
|
||||
{ "v", "58-58 Eastern Plaguelands", id = nil },
|
||||
{ "v", "58-59 Western Plaguelands", id = nil },
|
||||
{ "v", "59-60 Winterspring", id = nil },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
local tCharInfo = oSettings:GetSettingsCharInfo()
|
||||
|
||||
obj.Guide = {}
|
||||
obj.NoGuide = {}
|
||||
obj.GuideCount = 0
|
||||
obj.NoGuideCount = 0
|
||||
obj.Faction = tCharInfo.Faction
|
||||
obj.Race = tCharInfo.Race
|
||||
tCharInfo = nil
|
||||
|
||||
-- Guides Praparation methods
|
||||
obj.PrepareGuidesTableHorde = function(self, tRace)
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_001_Introduction))
|
||||
if tRace == "Tauren" then
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_002_Mulgore))
|
||||
elseif tRace == "Undead" then
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_002_TirisfalGlades))
|
||||
else
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_002_Durotar))
|
||||
end
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Horde_12to20))
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Horde_20to30))
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Horde_30to40))
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Horde_40to50))
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Horde_50to60))
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_004_Professions))
|
||||
end
|
||||
|
||||
obj.PrepareNoGuidesTableHorde = function(self, tRace)
|
||||
-- we normilize here, cause "indexes" will clash otherwise
|
||||
if tRace == "Tauren" then
|
||||
obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_TirisfalGlades))
|
||||
obj:NormalizeGuide(obj.NoGuide, nil)
|
||||
obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_Durotar))
|
||||
elseif tRace == "Undead" then
|
||||
obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_Durotar))
|
||||
obj:NormalizeGuide(obj.NoGuide, nil)
|
||||
obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_Mulgore))
|
||||
else
|
||||
|
||||
obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_Mulgore))
|
||||
obj:NormalizeGuide(obj.NoGuide, nil)
|
||||
obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_TirisfalGlades))
|
||||
end
|
||||
end
|
||||
|
||||
obj.PrepareGuidesTableAlliance = function(self, tRace)
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_001_Introduction))
|
||||
if tRace == "Human" then
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_002_ElwynnForest))
|
||||
elseif tRace == "Night Elf" then
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_002_Teldrassil))
|
||||
else
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_002_DunMorogh))
|
||||
end
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Alliance_12to20))
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Alliance_20to30))
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Alliance_30to40))
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Alliance_40to50))
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Alliance_50to60))
|
||||
obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_004_Professions))
|
||||
end
|
||||
|
||||
obj.PrepareNoGuidesTableAlliance = function(self, tRace)
|
||||
-- we normilize here, cause "indexes" will clash otherwise
|
||||
if tRace == "Human" then
|
||||
obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_DunMorogh))
|
||||
obj:NormalizeGuide(obj.NoGuide, nil)
|
||||
obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_Teldrassil))
|
||||
elseif tRace == "Night Elf" then
|
||||
obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_ElwynnForest))
|
||||
obj:NormalizeGuide(obj.NoGuide, nil)
|
||||
obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_DunMorogh))
|
||||
else
|
||||
obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_Teldrassil))
|
||||
obj:NormalizeGuide(obj.NoGuide, nil)
|
||||
obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_ElwynnForest))
|
||||
end
|
||||
end
|
||||
|
||||
obj.NormalizeGuide = function(self, t, offset)
|
||||
if not offset then offset = 0 end
|
||||
|
||||
-- the index_table will store all the guideIDs, as they are readen from file.
|
||||
-- then, once done, those IDs are sorted (from lower to higer)
|
||||
local index_table = {}
|
||||
for i,_ in pairs(t) do
|
||||
table.insert(index_table, i)
|
||||
end
|
||||
table.sort(index_table)
|
||||
|
||||
-- this for-cicle will sort the tables, so we'll have them listed from lower to higer
|
||||
-- Every ID will be converted from its original value to a new incremental index
|
||||
-- starting from 1 (Introduction)
|
||||
local c = 0 + offset
|
||||
for _,v in ipairs(index_table) do
|
||||
c = c + 1
|
||||
t[c] = t[v]
|
||||
if v ~= c then
|
||||
t[v] = nil
|
||||
end
|
||||
end
|
||||
|
||||
return t, c - offset
|
||||
end
|
||||
|
||||
-- DropDownMenu Preparation methods
|
||||
local function xSearchID(tDDMsection)
|
||||
for _,v1 in ipairs(tDDMsection) do
|
||||
for k,v2 in ipairs(obj.Guide) do
|
||||
-- we use the "plain" method here, as in those "title" string
|
||||
-- we could find special characters like "-" and "["
|
||||
if string.find(v2.title, v1[2], 1, true) then
|
||||
v1.id = k
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
obj.DefineDDMProfessionsSubMenu = function(self)
|
||||
xSearchID(obj.TableDDM.lvl2["Profession Guides"])
|
||||
end
|
||||
|
||||
obj.DefineDDMStartingZonesSubMenu = function(self, tFaction)
|
||||
if tFaction == "Horde" then
|
||||
xSearchID(obj.TableDDM.lvl3["Orcs & Trolls"])
|
||||
xSearchID(obj.TableDDM.lvl3["Taurens"])
|
||||
xSearchID(obj.TableDDM.lvl3["Undeads"])
|
||||
else
|
||||
xSearchID(obj.TableDDM.lvl3["Humans"])
|
||||
xSearchID(obj.TableDDM.lvl3["Night Elves"])
|
||||
xSearchID(obj.TableDDM.lvl3["Dwarves & Gnomes"])
|
||||
end
|
||||
end
|
||||
|
||||
obj.DefineDDMLaterLevelingSubMenu = function(self, tFaction)
|
||||
if tFaction == "Horde" then
|
||||
xSearchID(obj.TableDDM.lvl3["[H] 12-20"])
|
||||
xSearchID(obj.TableDDM.lvl3["[H] 20-30"])
|
||||
xSearchID(obj.TableDDM.lvl3["[H] 30-40"])
|
||||
xSearchID(obj.TableDDM.lvl3["[H] 40-50"])
|
||||
xSearchID(obj.TableDDM.lvl3["[H] 50-60"])
|
||||
else
|
||||
xSearchID(obj.TableDDM.lvl3["[A] 12-20"])
|
||||
xSearchID(obj.TableDDM.lvl3["[A] 20-30"])
|
||||
xSearchID(obj.TableDDM.lvl3["[A] 30-40"])
|
||||
xSearchID(obj.TableDDM.lvl3["[A] 40-50"])
|
||||
xSearchID(obj.TableDDM.lvl3["[A] 50-60"])
|
||||
end
|
||||
end
|
||||
|
||||
-- Clear Tables read from .toc
|
||||
obj.ClearInitialTablesContent = function(self)
|
||||
Table_001_Introduction = nil
|
||||
Table_002_Durotar = nil
|
||||
Table_002_Mulgore = nil
|
||||
Table_002_TirisfalGlades = nil
|
||||
Table_002_DunMorogh = nil
|
||||
Table_002_Teldrassil = nil
|
||||
Table_002_ElwynnForest = nil
|
||||
Table_003_Horde_12to20 = nil
|
||||
Table_003_Horde_20to30 = nil
|
||||
Table_003_Horde_30to40 = nil
|
||||
Table_003_Horde_40to50 = nil
|
||||
Table_003_Horde_50to60 = nil
|
||||
Table_003_Alliance_12to20 = nil
|
||||
Table_003_Alliance_20to30 = nil
|
||||
Table_003_Alliance_30to40 = nil
|
||||
Table_003_Alliance_40to50 = nil
|
||||
Table_003_Alliance_50to60 = nil
|
||||
Table_004_Professions = nil
|
||||
end
|
||||
|
||||
-- Query object methods
|
||||
obj.GetGuide = function(self, nGuideID)
|
||||
if nGuideID > obj.GuideCount then
|
||||
Dv(" -- Guide not present! ID exceed the GuideCount value!")
|
||||
elseif nGuideID < 1 then
|
||||
Dv(" -- negative or zero ID! Are you joking?")
|
||||
else
|
||||
return obj.Guide[nGuideID]
|
||||
end
|
||||
end
|
||||
|
||||
obj.GetTableDDM = function(self)
|
||||
return obj.TableDDM
|
||||
end
|
||||
|
||||
-- Constructor Main
|
||||
if obj.Faction == "Horde" then
|
||||
obj:PrepareGuidesTableHorde(obj.Race)
|
||||
obj:PrepareNoGuidesTableHorde(obj.Race)
|
||||
else
|
||||
obj:PrepareGuidesTableAlliance(obj.Race)
|
||||
obj:PrepareNoGuidesTableAlliance(obj.Race)
|
||||
end
|
||||
|
||||
-- we use a HUGE offset here, so we know those NoGuide will end up at the end!
|
||||
obj.NoGuide, obj.NoGuideCount = obj:NormalizeGuide(obj.NoGuide, 100500)
|
||||
obj.Guide = TablesMerge(obj.Guide, obj.NoGuide)
|
||||
|
||||
obj.Guide, obj.GuideCount = obj:NormalizeGuide(obj.Guide, nil)
|
||||
|
||||
obj:DefineDDMProfessionsSubMenu()
|
||||
obj:DefineDDMStartingZonesSubMenu(obj.Faction)
|
||||
obj:DefineDDMLaterLevelingSubMenu(obj.Faction)
|
||||
|
||||
obj:ClearInitialTablesContent()
|
||||
|
||||
return obj
|
||||
end
|
||||
|
||||
Dv(" VGuide GuideTable.lua Start")
|
||||
--return VGuide
|
||||
|
||||
--[[
|
||||
do
|
||||
-----------------------------------------------------------------
|
||||
Table_001_Introduction = {
|
||||
[0001] = { title = "Introduction" },
|
||||
}
|
||||
-----------------------------------------------------------------
|
||||
Table_002_Durotar = {
|
||||
[0106] = { title = "1-6 Durotar" },
|
||||
[0609] = { title = "6-9 Durotar" },
|
||||
[0912] = { title = "9-12 Durotar" },
|
||||
}
|
||||
Table_002_Mulgore = {
|
||||
[0106] = { title = "1-6 Mulgore" },
|
||||
[0610] = { title = "6-10 Mulgore" },
|
||||
[1012] = { title = "10-12 Mulgore" },
|
||||
}
|
||||
Table_002_TirisfalGlades = {
|
||||
[0106] = { title = "1-6 DeathKnell (Tirisfal Glades)" },
|
||||
[0610] = { title = "6-10 Tirisfal Glades" },
|
||||
[1012] = { title = "10-12 Tirisfal Glades" },
|
||||
}
|
||||
-----------------------------------------------------------------
|
||||
Table_002_DunMorogh = {
|
||||
[0106] = { title = "1-6 Cold Ridge Valley" },
|
||||
[0612] = { title = "6-12 Dun Morogh" },
|
||||
}
|
||||
Table_002_Teldrassil = {
|
||||
[0106] = { title = "1-6 Teldrassil" },
|
||||
[0612] = { title = "6-12 Teldrassil" },
|
||||
}
|
||||
Table_002_ElwynnForest = {
|
||||
[0110] = { title = "1-10 Elwynn Forest" },
|
||||
[1012] = { title = "10-12 Westfall and Lock Modan" },
|
||||
}
|
||||
-----------------------------------------------------------------
|
||||
Table_003_Horde_12to20 = {
|
||||
[1215] = { title = "12-15 Barrens" },
|
||||
[1516] = { title = "15-16 Stonetalon Mountains" },
|
||||
[1618] = { title = "16-20 Barrens Part 1" },
|
||||
[1820] = { title = "16-20 Barrens Part 2" },
|
||||
}
|
||||
Table_003_Horde_20to30 = {
|
||||
[2021] = { title = "20-21 Stonetalon Mountains" },
|
||||
[2121] = { title = "21-21 Ashenvale" },
|
||||
[2223] = { title = "22-23 Southern Barrens" },
|
||||
[2325] = { title = "23-25 Stonetalon Mountains" },
|
||||
[2525] = { title = "25-25 Southern Barrens" },
|
||||
[2526] = { title = "25-26 Thousand Needles" },
|
||||
[2627] = { title = "26-27 Ashenvale" },
|
||||
[2727] = { title = "27-27 Stonetalon Mountains" },
|
||||
[2729] = { title = "27-29 Thousand Needles" },
|
||||
[2930] = { title = "29-30 Hillsbrad Foothills" },
|
||||
}
|
||||
Table_003_Horde_30to40 = {
|
||||
[3029] = { title = "30-30 Alterac Mountains" },
|
||||
[3030] = { title = "30-30 Arathi Highlands" },
|
||||
[3031] = { title = "30-31 Stranglethorn Vale" },
|
||||
[3132] = { title = "31-32 TN (Shimmering Flats)" },
|
||||
[3234] = { title = "32-34 Desolace" },
|
||||
[3435] = { title = "34-35 Stranglethorn Vale" },
|
||||
[3537] = { title = "35-37 Arathi Highlands" },
|
||||
[3736] = { title = "37-37 Alterac Mountains" },
|
||||
[3737] = { title = "37-37 Thousand Needles" },
|
||||
[3738] = { title = "37-38 Dustwallow Marsh" },
|
||||
[3840] = { title = "38-40 Stranglethorn Vale" },
|
||||
}
|
||||
Table_003_Horde_40to50 = {
|
||||
[4041] = { title = "40-41 Badlands" },
|
||||
[4142] = { title = "41-42 Swamp of Sorrows" },
|
||||
[4243] = { title = "42-43 Stranglethorn Vale" },
|
||||
[4342] = { title = "43-43 Desolace" },
|
||||
[4343] = { title = "43-43 Dustwallow Marsh" },
|
||||
[4344] = { title = "43-44 Tanaris" },
|
||||
[4446] = { title = "44-46 Feralas" },
|
||||
[4646] = { title = "46-46 Azshara" },
|
||||
[4647] = { title = "46-47 Hinterlands" },
|
||||
[4747] = { title = "47-47 Stranglethorn Vale" },
|
||||
[4748] = { title = "47-48 Searing Gorge" },
|
||||
[4848] = { title = "48-48 Swamp of Sorrows" },
|
||||
[4849] = { title = "48-49 Feralas" },
|
||||
[4950] = { title = "49-50 Tanaris" },
|
||||
}
|
||||
Table_003_Horde_50to60 = {
|
||||
[5049] = { title = "50-50 Azshara" },
|
||||
[5050] = { title = "50-50 Hinterlands" },
|
||||
[5051] = { title = "50-51 Blasted Lands" },
|
||||
[5152] = { title = "51-52 Un'Goro Crater" },
|
||||
[5253] = { title = "52-53 Burning Steppes" },
|
||||
[5354] = { title = "53-54 Azshara" },
|
||||
[5454] = { title = "54-54 Felwood" },
|
||||
[5455] = { title = "54-55 Winterspring" },
|
||||
[5554] = { title = "55-55 Felwood" },
|
||||
[5555] = { title = "55-55 Silithus" },
|
||||
[5556] = { title = "55-56 Western Plaguelands" },
|
||||
[5657] = { title = "56-57 Eastern Plaguelands" },
|
||||
[5758] = { title = "57-58 Western Plaguelands" },
|
||||
[5860] = { title = "58-60 Winterspring" },
|
||||
}
|
||||
-----------------------------------------------------------------
|
||||
Table_003_Alliance_12to20 = {
|
||||
[1214] = { title = "12-14 Darkshore" },
|
||||
[1417] = { title = "14-17 Darkshore" },
|
||||
[1718] = { title = "17-18 Loch Modan" },
|
||||
[1820] = { title = "18-20 Redredge Mountains" },
|
||||
}
|
||||
Table_003_Alliance_20to30 = {
|
||||
[2021] = { title = "20-21 Darkshore" },
|
||||
[2122] = { title = "21-22 Ashenvale" },
|
||||
[2223] = { title = "22-23 Stonetalon Mountains" },
|
||||
[2324] = { title = "23-24 Darkshore" },
|
||||
[2425] = { title = "24-25 Ashenvale" },
|
||||
[2526] = { title = "25-27 Wetlands" },
|
||||
[2728] = { title = "27-28 Lakeshire" },
|
||||
[2829] = { title = "28-29 Duskwood" },
|
||||
[2930] = { title = "29-30 Ashenvale" },
|
||||
[3030] = { title = "30-30 Wetlands" },
|
||||
}
|
||||
Table_003_Alliance_30to40 = {
|
||||
[3031] = { title = "30-31 Hillsbrad Foothills" },
|
||||
[3131] = { title = "31-31 Alterac Mountains" },
|
||||
[3132] = { title = "31-32 Arathi Highlands" },
|
||||
[3232] = { title = "32-32 Stranglethorn Vale" },
|
||||
[3233] = { title = "32-33 Thousand Needles (Shimmering Flats)" },
|
||||
[3333] = { title = "33-33 Stonetalon Mountains" },
|
||||
[3335] = { title = "33-35 Desolace" },
|
||||
[3536] = { title = "35-36 Stranglethorn Vale" },
|
||||
[3637] = { title = "36-37 Alterac Mountains" },
|
||||
[3738] = { title = "37-38 Arathi Highlands" },
|
||||
[3838] = { title = "38-38 Dustwallow Marsh", }
|
||||
[3840] = { title = "38-40 Stranglethorn Vale" },
|
||||
}
|
||||
Table_003_Alliance_40to50 = {
|
||||
[4041] = { title = "40-41 Badlands" },
|
||||
[4141] = { title = "41-41 Swamp of Sorrows" },
|
||||
[4142] = { title = "41-42 Desolace" },
|
||||
[4243] = { title = "42-43 Stranglethron Vale" },
|
||||
[4343] = { title = "43-43 Tanaris" },
|
||||
[4345] = { title = "43-45 Feralas" },
|
||||
[4546] = { title = "45-46 Uldaman" },
|
||||
[4647] = { title = "46-47 The Hinterlands" },
|
||||
[4747] = { title = "47-47 Feralas" },
|
||||
[4748] = { title = "47-48 Tanaris" },
|
||||
[4848] = { title = "48-48 The Hinterlands" },
|
||||
[4849] = { title = "48-49 Stranglethorn Vale" },
|
||||
[4950] = { title = "49-50 Blasted Lands" },
|
||||
}
|
||||
Table_003_Alliance_50to60 = {
|
||||
[5051] = { title = "50-51 Searing Gorge" },
|
||||
[5152] = { title = "51-52 Un’Goro Crater" },
|
||||
[5253] = { title = "52-53 Azshara" },
|
||||
[5354] = { title = "53-54 Felwood" },
|
||||
[5453] = { title = "54-54 Tanaris" },
|
||||
[5454] = { title = "54-54 Felwood" },
|
||||
[5455] = { title = "54-55 Winterspring" },
|
||||
[5556] = { title = "55-56 Burning Steppes" },
|
||||
[5655] = { title = "56-56 Tanaris" },
|
||||
[5656] = { title = "56-56 Silithus" },
|
||||
[5657] = { title = "56-57 Western Plaguelands" },
|
||||
[5758] = { title = "57-58 Eastern Plaguelands" },
|
||||
[5857] = { title = "58-58 Western Plaguelands" },
|
||||
[5858] = { title = "58-58 Eastern Plaguelands" },
|
||||
[5859] = { title = "58-59 Western Plaguelands" },
|
||||
[5960] = { title = "59-60 Winterspring" },
|
||||
}
|
||||
-----------------------------------------------------------------
|
||||
Table_004_Professions = {
|
||||
[7002] = { title = "1-300 Alchemy" },
|
||||
[7003] = { title = "1-300 Blacksmithing" },
|
||||
[7004] = { title = "1-300 Cooking (Horde)" },
|
||||
[7005] = { title = "1-300 Cooking (Alliance)" },
|
||||
[7006] = { title = "1-300 Enchanting" },
|
||||
[7007] = { title = "1-300 Engineering" },
|
||||
[7008] = { title = "1-300 Leatherworking" },
|
||||
[7009] = { title = "1-300 Tailoring" },
|
||||
}
|
||||
end
|
||||
]]
|
||||
@@ -0,0 +1,50 @@
|
||||
--[[--------------------------------------------------
|
||||
001-Introduction.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 001 Introduction
|
||||
1.04.1
|
||||
-- First Release
|
||||
Introduction text
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
local version = GetAddOnMetadata("VanillaGuide", "Version")
|
||||
|
||||
Table_001_Introduction = {
|
||||
[0001] = {
|
||||
title = "Introduction",
|
||||
--ddmtype = 'v',
|
||||
--ddmlvl = '1',
|
||||
--n = "Introduction",
|
||||
--pID = 1, nID = 11,
|
||||
--itemCount = 20,
|
||||
items = {
|
||||
[1] = { str = " Thank you for using #VIDEOVanilla#Guide!" },
|
||||
[2] = { str = " written and mantained by #DOQUESTmrmr#." },
|
||||
[3] = { str = " version #VIDEOv##TURNIN" .. version .. "#" },
|
||||
[4] = { str = " Originally created for '#VIDEOJ#oana's #VIDEOHorde# Guide', it's grown bigger," },
|
||||
[5] = { str = "with '#DOQUESTB#rianKopps` #DOQUESTAlliance# Guide' by Kira and Cdlp and Profession guides by Velenran." },
|
||||
[6] = { str = "You can find this version somewhere in the internet and if you're reading this....you know where..." },
|
||||
[7] = { str = "." },
|
||||
[8] = { str = "#VIDEODISCLAIMER:#" },
|
||||
[9] = { str = "Here are the guide color codes:" },
|
||||
[10] = { str = "#ACCEPTAccept a quest.#" },
|
||||
[11] = { str = "#DOQUESTGo do a quest.#" },
|
||||
[12] = { str = "#TURNINTurn in a quest.#" },
|
||||
[13] = { str = "#NPCGeneral mob/item.#" },
|
||||
[14] = { str = "." },
|
||||
[15] = { str = "." },
|
||||
[16] = { str = "." },
|
||||
[17] = { str = "#ACCEPTBINDABLE KEYS:# There are bindable keys for the \"Prev\" and \"Next\" Steps and Guides. You can find them in the key bindings menu" },
|
||||
[18] = { str = "." },
|
||||
--[19] = { str = "." },
|
||||
--[20] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
@@ -0,0 +1,364 @@
|
||||
--[[--------------------------------------------------
|
||||
004_Professions.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 004 Professions
|
||||
1.04.1
|
||||
-- First Release
|
||||
Professions Guides
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_004_Professions = {
|
||||
-----------1-300 Alchemy
|
||||
[7002] = {
|
||||
title = "1-300 Alchemy",
|
||||
--n = "1-300 Alchemy",
|
||||
--pID = 1, nID = 10003,
|
||||
--itemCount = 14,
|
||||
items = {
|
||||
[1] = { str = "#NPC1-300 Alchemy#" },
|
||||
[2] = { str = "#DOQUESTAprx. Mats Required#: #VIDEO60#x #TURNINPeacebloom# #VIDEO60#x #TURNINSilverleaf# #VIDEO75#x #TURNINEmpty Vial#" ..
|
||||
"#VIDEO80#x #TURNINBriarthorn# #VIDEO30#x #TURNINBruiseweed# #VIDEO65#x #TURNINLeaded Vial#" ..
|
||||
"#VIDEO15#x #TURNINMageroyal# #VIDEO40#x #TURNINStranglekelp# #VIDEO30#x #TURNINLiferoot# #VIDEO30#x #TURNINKingsblood#" ..
|
||||
"#VIDEO45#x #TURNINGoldthorn# #VIDEO5#x #TURNINSteelbloom# #VIDEO70#x #TURNINSungrass#" ..
|
||||
"#VIDEO15#x #TURNINKhadgars Whisker# #VIDEO90#x #TURNINCrystal Vial# #VIDEO20#x #TURNINArthas Tears#" ..
|
||||
"#VIDEO40#x #TURNINBlindweed# #VIDEO40#x #TURNINGolden Sansam# #VIDEO40#x #TURNINMountain Silversage#" },
|
||||
[3] = { str = "#VIDEO[1-60]# 60x Minor Healing Potions (1x Peacebloom, 1x Silverleaf, 1x Empty Vial)" },
|
||||
[4] = { str = "#VIDEO[60-110]# 50x Lesser Healing Potions (1x Minor Healing Potion, 1x Briarthorn)" },
|
||||
[5] = { str = "#VIDEO[110-140]# 30x Healing Potion (1x Bruiseweed, 1x Briarthorn, 1x Leaded Vial)" },
|
||||
[6] = { str = "#VIDEO[140-155]# 15x Lesser Mana Potion (1x Mageroyal, 1x Stranglekelp, 1x Empty Vial)" },
|
||||
[7] = { str = "#VIDEO[155-185]# 30x Greater Healing Potions (1x Liferoot, 1x Kingsblood, 1x Leaded Vial)" },
|
||||
[8] = { str = "#VIDEO[185-210]# 25x Elixir of Agility (1x Stranglekelp, 1x Goldthorn, 1x Leaded Vial)" },
|
||||
[9] = { str = "#VIDEO[210-215]# 5x Elixir of Greater Defence (1x Steelbloom, 1x Goldthorn, 1x Leaded Vial)" },
|
||||
[10] = { str = "#VIDEO[215-230]# 15x Superior Healing Potion (1x Sungrass, 1x Khadgars Wisker, 1x Crystal Vial)" },
|
||||
[11] = { str = "#VIDEO[230-250]# 20x Elixir of Detect Undead (1x Arthas Tears, 1x Crystal Vial)" },
|
||||
[12] = { str = "#VIDEO[250-265]# 15x Elixir of Greater Agility (1x Sungrass, 1x Goldthorn, 1x Crystal Vial)" },
|
||||
[13] = { str = "#VIDEO[265-285]# 20x Superior Mana Potion (2x Sungrass, 2x Blindweed, 1x Crystal Vial)" },
|
||||
[14] = { str = "#VIDEO[285-300]# 20x Major Healing Potion (2x Golden Sansam, 1x Mountain Silversage, 1x Crystal Vial)" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------1-300 Blacksmithing
|
||||
[7003] = {
|
||||
title = "1-300 Blacksmithing",
|
||||
--n = "1-300 Blacksmithing",
|
||||
--pID = 10002, nID = 10004,
|
||||
--itemCount = 23,
|
||||
items = {
|
||||
[1] = { str = "#NPC1-300 Blacksmithing#" },
|
||||
[2] = { str = "#DOQUESTAprx. Mats Required#: #VIDEO90#x #TURNINRough Stone# #VIDEO380#x #TURNINCopper Bar# #VIDEO20#x #TURNINCoarse Stone# " ..
|
||||
"#VIDEO5#x #TURNINSilver Bar# #VIDEO120#x #TURNINBronze Bar# #VIDEO150#x #TURNINHeavy Stone# " ..
|
||||
"#VIDEO5#x #TURNINGold Bar# #VIDEO200#x #TURNINIron Bar# #VIDEO30#x #TURNINGreen Dye# " ..
|
||||
"#VIDEO380#x #TURNINSteel Bar# #VIDEO80#x #TURNINSolid Stone# #VIDEO230#x #TURNINMithril Bar# " ..
|
||||
"#VIDEO20#x #TURNINDense Stone# #VIDEO430#x #TURNINThorium Bar# #VIDEO10#x #TURNINCore of Earth# " ..
|
||||
"#VIDEO90#x #TURNINMageweave Cloth# #VIDEO60#x #TURNINRugged Leather#" },
|
||||
[3] = { str = "#VIDEO[1-25]# 50x Rough Sharpening Stones (1x Rough Stone)" },
|
||||
[4] = { str = "#VIDEO[25-45]# 20x Rough Grinding Stones (2x Rough Stone)" },
|
||||
[5] = { str = "#VIDEO[45-75]# 30x Copper Chain Belt (6x Copper Bar)" },
|
||||
[6] = { str = "#VIDEO[75-80]# 10x Coarse Grinding Stones (2x Coarse Stones)" },
|
||||
[7] = { str = "#VIDEO[80-100]# 20x Runed Copper Belt (10x Copper Bar)" },
|
||||
[8] = { str = "#VIDEO[100-105]# 5x Silver Rod (1x Silver Bar, 2x Rough Grinding Stone)" },
|
||||
[9] = { str = "#VIDEO[105-125]# 20x Rough Bronze Leggings (6x Bronze Bar)" },
|
||||
[10] = { str = "#VIDEO[125-150]# 50x Heavy Grinding Stone (3x Heavy Stone)" },
|
||||
[11] = { str = "#VIDEO[150-155]# 5x Golden Rod (1x Gold Bar, 2x Coard Grinding Stone)" },
|
||||
[12] = { str = "#VIDEO[155-165]# 10x Green Iron Leggings (8x Iron Bar, 1x Heavy Grinding Stone, 1x Green Dye)" },
|
||||
[13] = { str = "#VIDEO[165-185]# 20x Green Iron Bracers (6x Iron Bar, 1x Green Dye)" },
|
||||
[14] = { str = "#VIDEO[185-200]# 15x Golden Scale Bracers (5x Steel Bar, 2x Heavy Grinding Stone)" },
|
||||
[15] = { str = "#VIDEO[200-210]# 20x Solid Grinding Stone (4x Solid Stone)" },
|
||||
[16] = { str = "#VIDEO[210-215]# 5x Golden Scale Bracers (5x Steel Bar, 2x Heavy Grinding Stone)" },
|
||||
[17] = { str = "#VIDEO[215-235]# 20x Steel Plate Helm (14x Steel Bar, 1x Solid Grinding Stone)" },
|
||||
[18] = { str = "#VIDEO[235-250]# 15x Mithril Coif (10x Mithril Bar, 6x Mageweave Cloth)" ..
|
||||
"If you are lucky enough to have the Mithril Spurs plan, then make those until 275." },
|
||||
[19] = { str = "#VIDEO[250-260]# 20x Dense Sharpening Stones (1x Dense Stone)" },
|
||||
[20] = { str = "#VIDEO[260-265]# #ACCEPTArmorsmiths# make the following: " ..
|
||||
"5x Earthforged Leggings (16x Mithril Bar, 2x Core of Earth)" },
|
||||
[21] = { str = "#VIDEO[260-265]# #ACCEPTWeaponsmiths# make any of the following: " ..
|
||||
"5x Light Earthforged Blade (12x Mithril Bar, 4x Core of Earth) " ..
|
||||
"5x Light Emberforged Hammer (12x Mithril Bar, 4x Heart of Fire) " ..
|
||||
"5x Light Skyforged Axe (12x Mithril Bar, 4x Breath of Wind)" },
|
||||
[22] = { str = "Go see Derotain Mudsipper in Gadgetzan and give him Thorium Bars until you get the plans for the Imperial Plate Belt, Bracers, and Boots." },
|
||||
[23] = { str = "#VIDEO[265-275]# 10x Imperial Plate Belt (10x Thorium Bar, 6x Rugged Leather)" },
|
||||
[24] = { str = "#VIDEO[275-295]# 20x Imperial Plate Bracers (12x Thorium Bar)" },
|
||||
[25] = { str = "#VIDEO[295-300]# 5x Imperial Plate Boots (18x Thorium Bar)" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------1-300 Cooking (Horde & Alliance)
|
||||
[7004] = {
|
||||
title = "1-300 [H] Cooking",
|
||||
--n = "1-300 Cooking (Horde)",
|
||||
--pID = 10003, nID = 10005,
|
||||
--itemCount = 11,
|
||||
items = {
|
||||
[1] = { str = "#NPC1-300 Cooking (Horde)#" },
|
||||
[2] = { str = "#VIDEO[1-40]# 70x Spice Bread (1x Simple Flour, 1x Mild Spices)" },
|
||||
[3] = { str = "#VIDEO[40-90]# 60x Smoked Bear Meat (1x Bear Meat) " ..
|
||||
"Go to The Sepulcher in Silverpine Forest and buy the Smoked Bear Meat recipe " ..
|
||||
"from Andrew Hilbert. Kill Grizzled bears around Silverpien Forest for Bear Meat." },
|
||||
[4] = { str = "#VIDEO[90-125]# 40x Dig Rat Stew (1x Dig Rat) " ..
|
||||
"Go find Grub in The Barrens. He's in a tower by Grosh'gek Farm. " ..
|
||||
"(Just north off the road between Crossroads and Ratchet.) " ..
|
||||
"Pick up the quest for Dig Rat stew. Kill Dig Rats until you have 30 more " ..
|
||||
"than the quest needs. Complete the quest and cook." },
|
||||
[5] = { str = "#VIDEO[125-175]# 60x Hot Lion Chops (1x Lion Meat, 1x Hot Spices) " ..
|
||||
"To train as an Expert cook, go to Shadowprey Village and buy " ..
|
||||
"the Expert Cooking Book from Wulan. Go to the Crossroads and buy the " ..
|
||||
"Hot Lion Chops recipe from Zargh and 60 Hot Spices. " ..
|
||||
"Kill Mountain Lions around HIllsbrad Foothills for Lion Meat." },
|
||||
[6] = { str = "#VIDEO[175-200]# 30x Roast Raptor (1x Raptor Flesh, 1x Hot Spices) " ..
|
||||
"Go to Grom'gol and buy the Roast Raptor recipe from Nerrist and about 30 Hot Spices. " ..
|
||||
"Kill Raptors around Grom'gol for Raptor Flesh." },
|
||||
[7] = { str = "#VIDEO[200-225]# 30x Spider Sausage (2x White Spider Meat) " ..
|
||||
"Go to the trainer and train Spider Sausage. " ..
|
||||
"Kill Darkfangs around Dustwallow Marsh for White Spider Meat." },
|
||||
[8] = { str = "#VIDEO[225]# Cooking Quest Time! " ..
|
||||
"Go to Gadgetzan. Speak to Dirge Quikcleave. Obtain Artisan Cooking Quest. " ..
|
||||
"Pick up the Tender Wolf Steaks recipe. You need 12 Giant Eggs, 10 Zesty Clam Meat, and 20 Alterac Swiss. " ..
|
||||
"Alterac Swiss: Thunderbluff Innkeeper " ..
|
||||
"Giant Eggs: Owlbeasts in The Hinterlands " ..
|
||||
"Zesty Clam Meat: Steamwheedle Port for the Turtles " ..
|
||||
"Go to Bloodvenom Post in Felwood and buy the Monster Omelet recipe from Bale and 150 Soothing Spices." },
|
||||
[9] = { str = "#VIDEO[225-250]# 25x Monster Omelet (1x Giant Egg, 2x Soothing Spices) OR " ..
|
||||
"25x Tender Wolf Steaks (1x Tender Wolf Meat, 1x Soothing Spices)" },
|
||||
[10] = { str = "#VIDEO[250-285]# 35x Charred Bear Kabobs (1x Bear Flank) OR " ..
|
||||
"35x Juicy Bear Burger (1x Bear Flank)" },
|
||||
[11] = { str = "#VIDEO[285-300]# 20x Smoked Desert Dumplings (1x Sandworm Meat, 1x Soothing Spice)" ..
|
||||
"Go to Cenarion Hold in Silithus. Speak to Calandrath for the Desert Recipe quest chain." ..
|
||||
"When you get to the third quest, you'll get a recipe for Smoked Desert Dumplings." ..
|
||||
"Kill Dredge Crushers and Strikers for the Sandworm Meat." ..
|
||||
"You'll only need about 10 more than the quest needs plus the Soothing Spices (20ish)." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------1-300 Cooking (Horde & Alliance)
|
||||
[7005] = {
|
||||
title = "1-300 [A] Cooking",
|
||||
--n = "1-300 Cooking (Alliance)",
|
||||
--pID = 10004, nID = 10006,
|
||||
--itemCount = 13,
|
||||
items = {
|
||||
[1] = { str = "#NPC1-300 Cooking (Alliance)#" },
|
||||
[2] = { str = "#VIDEO[1-40]# 70x Spice Bread (1x Simple Flour, 1x Mild Spices)" },
|
||||
[3] = { str = "#VIDEO[40-75]# 40x Smoked Bear Meat (1x Bear Meat) " ..
|
||||
"Go to Drac Roughcut in Thelsamar, Loch Modan and buy the Smoked Bear Meat recipe. " ..
|
||||
"Kill bears around Loch Modan for Bear Meat." },
|
||||
[4] = { str = "#VIDEO[75-85]# 10x Crab Cake (1x Crawler Meat) " ..
|
||||
"Kill Crawlers around Darkshore and Westfall for Crawler Meat. " ..
|
||||
"You'll need about 10. Don't sell any Crawler Claws you find. We need them later." },
|
||||
[5] = { str = "#VIDEO[85-100]# 20x Cooked Crab Claw (1x Crab Claw, 1x Mild Spice) " ..
|
||||
"Go to Stormwind City and buy the Cooked Crab Claw recipe from Kendor Kabonka. " ..
|
||||
"Get about 20 Mild Spices. Go back to Darkshore or Westfall for anymore claws." },
|
||||
[6] = { str = "#VIDEO[100-130]# 30x Seasond Wolf Kabob (2x Lean Wolf Flank, 1x Stormwind Seasoning Herbs) " ..
|
||||
"Go to Chef Grual in Darkshire. Get Seasond Wolf Kabobs Quest. Get Stormwind Seasoning Herbs from Felcia Grump in the Trade District. " ..
|
||||
"Kill Ravagers and Wolves around Duskwood for Lean Wolf Flank." },
|
||||
[7] = { str = "#VIDEO[130-175]# 50x Curiosly Tasty Omelet (1x Raptor Egg, 1x Hot Spice) " ..
|
||||
"Train for Expert Cooking at Shandrina by Mystral Lake in Ashenvale. " ..
|
||||
"Go to Kendor Kabonka in Stormwind to buy the Curiosly Tasty Omelet recipe. " ..
|
||||
"Kill Raptors in Arathi Highlands for Raptor Eggs. (Keep any Raptor Meat!)" },
|
||||
[8] = { str = "#VIDEO[175-200]# 30x Roast Raptor (1x Raptor Flesh, 1x Hot Spices) " ..
|
||||
"Go to Rebel Camp in STV and buy the Roast Raptor recipe from Corporal Bluth and about 40 Hot Spices. " ..
|
||||
"Kill Raptors around the Gurubashi Arena." },
|
||||
[9] = { str = "#VIDEO[200-225]# 30x Spider Sausage (2x White Spider Meat)" ..
|
||||
"Go to the trainer and train Spider Sausage." ..
|
||||
"Kill Darkfangs around Dustwallow Marsh for White Spider Meat." },
|
||||
[10] = { str = "#VIDEO[225]# Cooking Quest Time! " ..
|
||||
"Go to Gadgetzan. Speak to Dirge Quikcleave. Obtain Artisan Cooking Quest. " ..
|
||||
"Pick up the Tender Wolf Steaks recipe. You need 12 Giant Eggs, 10 Zesty Clam Meat, and 20 Alterac Swiss. " ..
|
||||
"Alterac Swiss: Ben Trias in Stormwind Trade District " ..
|
||||
"Giant Eggs: Owlbeasts in The Hinterlands " ..
|
||||
"Zesty Clam Meat: Steamwheedle Port for the Turtles " ..
|
||||
"Go to Talonbranch Glade in Felwood and buy the Monster Omelet recipe from Malygen and 150 Soothing Spices." },
|
||||
[11] = { str = "#VIDEO[225-250]# 25x Monster Omelet (1x Giant Egg, 2x Soothing Spices) OR " ..
|
||||
"25x Tender Wolf Steaks (1x Tender Wolf Meat, 1x Soothing Spices)" },
|
||||
[12] = { str = "#VIDEO[250-285]# 35x Charred Bear Kabobs (1x Bear Flank) OR" ..
|
||||
"35x Juicy Bear Burger (1x Bear Flank)" },
|
||||
[13] = { str = "#VIDEO[285-300]# 20x Smoked Desert Dumplings (1x Sandworm Meat, 1x Soothing Spice) " ..
|
||||
"Go to Cenarion Hold in Silithus. Speak to Calandrath for the Desert Recipe quest chain. " ..
|
||||
"When you get to the third quest, you'll get a recipe for Smoked Desert Dumplings. " ..
|
||||
"Kill Dredge Crushers and Strikers for the Sandworm Meat. " ..
|
||||
"You'll only need about 10 more than the quest needs plus the Soothing Spices (20ish)." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------1-300 Enchanting
|
||||
[7006] = {
|
||||
title = "1-300 Enchanting",
|
||||
--n = "1-300 Enchanting",
|
||||
--pID = 10005, nID = 10007,
|
||||
--itemCount = 26,
|
||||
items = {
|
||||
[1] = { str = "#NPC1-300 Enchanting#" },
|
||||
[2] = { str = "#DOQUESTAprx. Mats Required#: " ..
|
||||
"#VIDEO150#x #TURNINStrange Dust# #VIDEO90#x #TURNINSoul Dust# #VIDEO170#x #TURNINVision Dust# " ..
|
||||
"#VIDEO300#x #TURNINDream Dust# #VIDEO90#x #TURNINIllusion Dust# #VIDEO15#x #TURNINSimple Wood# " ..
|
||||
"#VIDEO15#x #TURNINLesser Magic Essence# #VIDEO25#x #TURNINGreater Magic Essence# #VIDEO15#x #TURNINLesser Astral Essence# " ..
|
||||
"#VIDEO2#x #TURNINGreater Astral Essence# #VIDEO25#x #TURNINLesser Mystic Essence# #VIDEO2#x #TURNINGreater Mystic Essence# " ..
|
||||
"#VIDEO15#x #TURNINLesser Nether Essence# #VIDEO10#x #TURNINGreater Nether Essence# #VIDEO40#x #TURNINPurple Lotus# " ..
|
||||
"#VIDEO20#x #TURNINCrystal Vial# #VIDEO4x# #TURNINGreater Eternal Essence# #VIDEO2#x #TURNINLarge Brilliant Shard# " ..
|
||||
"#VIDEO1#x #TURNINShadowgem# #VIDEO1x# #TURNINIridescent Pearl# #VIDEO1#x #TURNINBlack Pearl# " ..
|
||||
"#VIDEO1#x #TURNINGolden Pearl# #VIDEO1x# #TURNINCopper Rod# #VIDEO1#x #TURNINSilver Rod# " ..
|
||||
"#VIDEO1#x #TURNINGolden Rod# #VIDEO1#x #TURNINTruesilver Rod# #VIDEO1#x #TURNINArcanite Rod#" },
|
||||
[3] = { str = "#VIDEO[1-2]# 1x Runed Copper Rod (1x Copper Rod, 1x Strange Dust, 1x Lesser Magic Essence)" },
|
||||
[4] = { str = "#VIDEO[2-75]# 74x Enchant Bracer - Minor Health (1x Strange Dust)" },
|
||||
[5] = { str = "#VIDEO[75-85]# 10x Enchant Bracer - Minor Deflection (1x Lesser Magic Essence, 1x Strange Dust)" },
|
||||
[6] = { str = "#VIDEO[85-100]# 15x Enchant Bracer - Minor Stamina (3x Strange Dust)" },
|
||||
[7] = { str = "#VIDEO[100-101]# 1x Runed Silver Rod (1x Silver Rod, 6x Strange Dust, 3x Greater Magic Essence, 1x Shadowgem" },
|
||||
[8] = { str = "#VIDEO[101-105]# 5x Enchant Bracer - Minor Stamina (3x Strange Dust)" },
|
||||
[9] = { str = "#VIDEO[105-120]# 15x Greater Magic Wand (1x Simple Wood, 1x Greater Magic Essence)" },
|
||||
[10] = { str = "#VIDEO[120-130]# 10x Enchant Shield - Minor Stamina (1x Lesser Astral Essence, 2x Strange Dust)" },
|
||||
[11] = { str = "#VIDEO[130-150]# 25x Enchant Bracer - Lesser Stamina (2x Soul Dust)" },
|
||||
[12] = { str = "#VIDEO[150-151]# 1x Runed Golden Rod (1x Golden Rod, 1x Iridescent Pearl, 2x Greater Astral Essence, 2x Soul Dust)" },
|
||||
[13] = { str = "#VIDEO[151-160]# 9x Enchant Bracer - Lesser Stamina (2x Sould Dust)" },
|
||||
[14] = { str = "#VIDEO[160-165]# 5x Enchant Shield - Lesser Stamina (1x Lesser Mystic Essence, 1x Soul Dust)" },
|
||||
[15] = { str = "#VIDEO[165-180]# 15x Enchant Bracer - Spirit (1x Lesser Mystic Essence)" },
|
||||
[16] = { str = "#VIDEO[180-200]# 20x Enchant Bracer - Strength (1x Vision Dust)" },
|
||||
[17] = { str = "#VIDEO[200-201]# 1x Runed Truesilver Rod (1x Truesilver Rod, 1x Black Pearl, 2x Greater Mystic Essence, 2x Vision Dust)" },
|
||||
[18] = { str = "#VIDEO[201-205]# 4x Enchant Bracer - Strength (1x Vision Dust)" },
|
||||
[19] = { str = "#VIDEO[205-225]# 20x Enchant Cloak - Greater Defense (3x Vision Dust)" },
|
||||
[20] = { str = "#VIDEO[225-235]# 10x Enchant Gloves - Agility (1x Lesser Nether Essence, 1x Vision Dust)" },
|
||||
[21] = { str = "#VIDEO[235-245]# 10x Enchant Chest - Superior Health (6x Vision Dust)" },
|
||||
[22] = { str = "#VIDEO[245-250]# 5x Enchant Bracer - Greater Strength (2x Dream Dust, 1x Greater Nether Essence)" },
|
||||
[23] = { str = "#VIDEO[250-270]# 20x Lesser Mana Oil (3x Dream Dust, 2x Purple Lotus, 1x Crystal Vial) " ..
|
||||
"You can buy this formula from Kania in Cenarion Hold, Silithus." },
|
||||
[24] = { str = "#VIDEO[270-290]# 20x Enchant Shield - Greater Stamina (10x Dream Dust) OR " ..
|
||||
"20x Enchant Boots: Greater Stamina (10x Dream Dust)" },
|
||||
[25] = { str = "#VIDEO[290-291]# 1x Runed Arcanite Rod (1x Arcanite Rod, 1x Golden Pearl, 10x Illusion Dust, 4x Greater Eternal Essence, 1x Runed Truesilver Rod, 2x Large Brilliant Shard)" },
|
||||
[26] = { str = "#VIDEO[291-300]# 9x Enchant Cloak - Superior Defense (8x Illusion Dust)" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------1-300 Engineering
|
||||
[7007] = {
|
||||
title = "1-300 Engineering",
|
||||
--n = "1-300 Engineering",
|
||||
--pID = 10006, nID = 10008,
|
||||
--itemCount = 26,
|
||||
items = {
|
||||
[1] = { str = "#NPC1-300 Engineering#" },
|
||||
[2] = { str = "#DOQUESTAprx. Mats Required#: " ..
|
||||
"#VIDEO90#x #TURNINRough Stone# #VIDEO80#x #TURNINCoarse Stone# #VIDEO75#x #TURNINHeavy Stone# " ..
|
||||
"#VIDEO90#x #TURNINSolid Stone# #VIDEO50#x #TURNINDense Stone# #VIDEO10#x #TURNINWooden Stock# " ..
|
||||
"#VIDEO29#x #TURNINWeak Flux# #VIDEO50#x #TURNINHeavy Leather# #VIDEO10#x #TURNINWool Cloth# " ..
|
||||
"#VIDEO10#x #TURNINMageweave Cloth# #VIDEO33#x #TURNINRune Cloth# #VIDEO51#x #TURNINCopper Bars# " ..
|
||||
"#VIDEO10#x #TURNINSilver Bars# #VIDEO55#x #TURNINBronze Bars# #VIDEO19#x #TURNINIron Bars# " ..
|
||||
"#VIDEO4#x #TURNINSteel Bars# #VIDEO126#x #TURNINMithril Bars# #VIDEO129#x #TURNINThorium Bars#" },
|
||||
[3] = { str = "#VIDEO[1-40]# 40x Rough Blasting Powder (1x Rough Stone)" },
|
||||
[4] = { str = "#VIDEO[40-50]# 10x Handful of Copper Bolt (1x Copper Bar)" },
|
||||
[5] = { str = "#VIDEO[50-51]# 1x Arclight Spanner (6x Copper Bar)" },
|
||||
[6] = { str = "#VIDEO[51-65]# 14x Copper Tubes (2x Copper Bar, 1x Weak Flux)" },
|
||||
[7] = { str = "#VIDEO[65-75]# 10x Rough Boom Sticks (1x Copper Tube, 1x Handful of Copper Bolts, 1x Wooden Stock)" },
|
||||
[8] = { str = "#VIDEO[75-95]# 20x Coarse Blasting Powder (1x Coarse Stone)" },
|
||||
[9] = { str = "#VIDEO[95-105]# 20x Silver Contacts (1x Silver Bar)" },
|
||||
[10] = { str = "#VIDEO[105-120]# 15x Bronze Tubes (2x Bronze Bar, 1x Weak Flux)" },
|
||||
[11] = { str = "#VIDEO[120-125]# 5x Small Bronze Bombs (1x Wool Cloth, 1x Silver Contact, 4x Coarse Blasting Powder, 2x Bronze Bar)" },
|
||||
[12] = { str = "#VIDEO[125-145]# 20x Heavy Blasting Powder (1x Heavy Stone)" },
|
||||
[13] = { str = "#VIDEO[145-150]# 5x Big Bronze Bombs (2x Heavy Blasting Powder, 3x Bronze Bar, 1x Silver Contact)" },
|
||||
[14] = { str = "#VIDEO[150-175]# 25x Blue/Green/Red Fireworks (1x Heavy Leather, 1x Heavy Blasting Powder)" },
|
||||
[15] = { str = "#VIDEO[175-176]# 1x Gyromatic Micro-Adjustor (4x Steel Bar)" },
|
||||
[16] = { str = "#VIDEO[176-190]# 14x Solid Blasting Pwder (2x Solid Stone)" },
|
||||
[17] = { str = "#VIDEO[190-195]# 5x Big Iron Bomb (3x Iron Bar, 3x Heavy Blasting Powder, 1x Silver Contact)" },
|
||||
[18] = { str = "#VIDEO[195-205]# 20x Mithril Tubes (3x Mithril Bar)" },
|
||||
[19] = { str = "#VIDEO[205-210]# 5x Unstable Triggers (1x Mithril Bar, 1x Mageweave Cloth, 1x Solid Blasting Powder)" },
|
||||
[20] = { str = "#VIDEO[210-225]# 15x Hi-Impact Mithril Slugs (1x Mithril Bar, 1x Solid Blasting Powder)" },
|
||||
[21] = { str = "#VIDEO[225-235]# 10x Mithril Casings (3x Mithril Bar)" },
|
||||
[22] = { str = "#VIDEO[235-245]# 10x Hi-Explosive Bomb (2x Mithril Casings, 1x Unstable Trigger, 2x Solid Blasting Powder)" },
|
||||
[23] = { str = "#VIDEO[245-250]# 5x Mithril Gyro-Shot (2x Mithril Bar, 2x Solid Blasting Powder)" },
|
||||
[24] = { str = "#VIDEO[250-260]# 10x Dense Blasting Powder (2x Dense Stone)" },
|
||||
[25] = { str = "#VIDEO[260-290]# 30x Thorium Widget (3x Thorium Bar, 1x Runecloth)" },
|
||||
[26] = { str = "#VIDEO[290-300]# 10x Thorium Shells (2x Thorium Bar, 1x Dense Blasting Powder)" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------1-300 Leatherworking
|
||||
[7008] = {
|
||||
title = "1-300 Leatherworking",
|
||||
--n = "1-300 Leatherworking",
|
||||
--pID = 10007, nID = 10009,
|
||||
--itemCount = 24,
|
||||
items = {
|
||||
[1] = { str = "#NPC1-300 Leatherworking#" },
|
||||
[2] = { str = "#VIDEO[1-205]# #DOQUESTAprx. Mats Required#: " ..
|
||||
"#VIDEO275#x #TURNINLight Leather# #VIDEO20#x #TURNINLight Hide# #VIDEO25#x #TURNINMedium Hide# " ..
|
||||
"#VIDEO420#x #TURNINHeavy Leather# #VIDEO10#x #TURNINHeavy Hide# #VIDEO30#x #TURNINBolt of Silk Cloth# " ..
|
||||
"#VIDEO10#x #TURNINIron Buckles#" },
|
||||
[3] = { str = "#VIDEO[1-35]# 35x Light Armor Kit (Total: 35x Light Leather)" },
|
||||
[4] = { str = "#VIDEO[35-55]# 20x Cured Light Hide (Total: 20x Light Hide)" },
|
||||
[5] = { str = "#VIDEO[55-85]# 30x Embossed Leather Gloves (Total: 90x Light Leather)" },
|
||||
[6] = { str = "#VIDEO[85-100]# 15x Fine Leather Belt (Total: 90x Light Leather)" },
|
||||
[7] = { str = "#VIDEO[100-120]# 25x Cured Medium Hide (Total: 25x Medium Hide)" },
|
||||
[8] = { str = "#VIDEO[120-125]# 10x Fine Leather Belt (Total: 60x Light Leather)" },
|
||||
[9] = { str = "#VIDEO[125-150]# 25x Dark Leather Belt (Total: 25x Fine Leather Belt, 25x Cured Medium Hide)" },
|
||||
[10] = { str = "#VIDEO[150-160]# 10x Cured Heavy Hide (Total: 10x Heavy Hide)" },
|
||||
[11] = { str = "#VIDEO[160-170]# 10x Heavy Armor Kit (Total: 50x Heavy Leather)" },
|
||||
[12] = { str = "#VIDEO[170-180]# 10x Dusky Leather Leggings (Total: 100x Heavy Leather)" },
|
||||
[13] = { str = "#VIDEO[180-190]# 10x Barbaric Shoulders (Total: 80x Heavy Leather, 10x Cured Heavy Hide)" },
|
||||
[14] = { str = "#VIDEO[190-195]# 5x Dusky Bracers (Total: 80x Heavy Leather)" },
|
||||
[15] = { str = "#VIDEO[195-205]# 10x Dusky Belt (Total: 100x Heavy Leather, 20x Bolt of Silk Cloth, 10x Iron Buckle)" },
|
||||
[16] = { str = "#VIDEO[205-250]# #DOQUESTAprx. Mats Required#: " ..
|
||||
"#ACCEPTElemental Leatherworking#: #VIDEO405-455#x #TURNINThick Leather# " ..
|
||||
"#ACCEPTDragonscale Leatherworking:# #VIDEO441-483#x #TURNINThick Leather# #VIDEO40#x #TURNINScorpid Scale# #VIDEO10#x #TURNINWorn Dragonscale# " ..
|
||||
"#ACCEPTTribal Leatherworking#: #VIDEO427-449#x #TURNINThick Leather# #VIDEO112#x #TURNINurtle Scale# #VIDEO11#x #TURNINWildvine# #VIDEO2#x #TURNINCured Thick Hide#" },
|
||||
[17] = { str = "#ACCEPTElemental Leatherworking# #VIDEO[205-230]# 25x Nightscape Headband/Tunic (Total: 125-175x Thick Leather) " },
|
||||
[18] = { str = "#ACCEPTElemental Leatherworking# #VIDEO[230-250]# 20x Nightscape Pants (Total: 280x Thick Leather)" },
|
||||
[19] = { str = "#ACCEPTDragonscale Leatherworking# #VIDEO[205-226]# 21x Nightscape Headband/Tunic (Total: 105-147x Thick Leather) " },
|
||||
[20] = { str = "#ACCEPTDragonscale Leatherworking# #VIDEO[226-228]# 2x Tough Scorpid Breastplate (Total: 24x Thick Leather, 24x Scorpid Scale) " },
|
||||
[21] = { str = "#ACCEPTDragonscale Leatherworking# #VIDEO[228-230]# 2x Tough Scorpid Gloves (Total: 12x Thick Leather, 16x Scorpid Scale) " },
|
||||
[22] = { str = "#ACCEPTDragonscale Leatherworking# #VIDEO[230-250]# 20x Nightscape Pants (Total: 280x Thick Leather)" },
|
||||
[23] = { str = "#ACCEPTTribal Leatherworking# #VIDEO[205-211]# 6x Thick Armor Kit (Total: 30x Thick Leather) " },
|
||||
[24] = { str = "#ACCEPTTribal Leatherworking# #VIDEO[211-222]# 11x Nightscape Headband/Tunic (Total: 55-77x Thick Leather) " },
|
||||
[25] = { str = "#ACCEPTTribal Leatherworking# #VIDEO[222-224]# 2x Turtle Scale Gloves (Total: 12x Thick Leather, 16x Turtle Scale) " },
|
||||
[26] = { str = "#ACCEPTTribal Leatherworking# #VIDEO[224-226]# 2x Turtle Scale Breastplate (Total: 12x Thick Leather, 24x Turtle Scale) " },
|
||||
[27] = { str = "#ACCEPTTribal Leatherworking# #VIDEO[226-228]# 2x Turtle Scale Bracers (Total: 16x Thick Leather, 24x Turtle Scale) " },
|
||||
[28] = { str = "#ACCEPTTribal Leatherworking# #VIDEO[228-229]# 1x Wild Leather Vest (Total: 12x Thick Leather, 2x Wildvine)" },
|
||||
[29] = { str = "#ACCEPTTribal Leatherworking# #VIDEO[229-230]# 1x Wild Leather Helmet (Total: 10x Thick Leather, 2x Wildvine) " },
|
||||
[30] = { str = "#ACCEPTTribal Leatherworking# #VIDEO[230-232]# 2x Turtle Scale Helm (Total: 28x Thick Leather, 48x Turtle Scale) " },
|
||||
[31] = { str = "#ACCEPTTribal Leatherworking# #VIDEO[232-250]# 18x Nightscape Pants (Total: 252x Thick Leather)" },
|
||||
[32] = { str = "#VIDEO[250-300]# #DOQUESTAprx. Mats Required#: #VIDEO160#x #TURNINThick Leather# #VIDEO470#x #TURNINRugged Leather#" },
|
||||
[33] = { str = "#VIDEO[250-260]# 10x Nightscape Boots (Total: 160x Thick Leather)" },
|
||||
[34] = { str = "#VIDEO[260-270]# 10x Wicked Leather Gauntlets (Total: 80x Rugged Leather)" },
|
||||
[35] = { str = "#VIDEO[270-285]# 15x Wicked Leather Bracers (Total: 180x Rugged Leather)" },
|
||||
[36] = { str = "#VIDEO[285-300]# 15x Wicked Leather Headband (Total: 210x Rugged Leather)" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------1-300 Tailoring
|
||||
[7009] = {
|
||||
title = "1-300 Tailoring",
|
||||
--n = "1-300 Tailoring",
|
||||
--pID = 10008, nID = 1,
|
||||
--itemCount = 22,
|
||||
items = {
|
||||
[1] = { str = "#NPC1-300 Tailoring#" },
|
||||
[2] = { str = "#DOQUESTAprx. Mats Required#: #VIDEO160#x #TURNINLinen Cloth# #VIDEO200#x #TURNINWool Cloth# #VIDEO760#x #TURNINSilk Cloth# " ..
|
||||
"#VIDEO520#x #TURNINMageweave Cloth# #VIDEO900#x #TURNINRunecloth# #VIDEO120#x #TURNINRugged Leather# " ..
|
||||
"#VIDEO75#x #TURNINCoarse Thread# #VIDEO135#x #TURNINFine Thread# #VIDEO5#x #TURNINGray Dye# " ..
|
||||
"#VIDEO30#x #TURNINBlue Dye# #VIDEO10#x #TURNINBleach# #VIDEO60#x #TURNINRed Dye# " ..
|
||||
"#VIDEO45#x #TURNINSilken Thread# #VIDEO60#x #TURNINHeavy Silken Thread# #VIDEO40#x #TURNINRune Thread#" },
|
||||
[3] = { str = "#VIDEO[1-50]# 80x Bolt of Linen Cloth (2x Linen Cloth)" },
|
||||
[4] = { str = "#VIDEO[50-70]# 20x Linen Bag (3x Bolt of Linen Cloth, 3x Coarse Thread)" },
|
||||
[5] = { str = "#VIDEO[70-75]# 5x Reinforced Linen Cape (2x Bolt of Linen Cloth, 3x Coarse Thread)" },
|
||||
[6] = { str = "#VIDEO[75-105]# 60x Bolt of Woolen Cloth (3x Wool Cloth)" },
|
||||
[7] = { str = "#VIDEO[105-110]# 5x Gray Woolen Shirt (2x Bool of Woolen Cloth, 1x Fine Thread, 1x Gray Dye)" },
|
||||
[8] = { str = "#VIDEO[110-125]# 15x Double-stitched Woolen Shoulders (3x Bolt of Woolen Cloth, 2x Fine Thread)" },
|
||||
[9] = { str = "#VIDEO[125-145]# 190x Bolt of Silk Cloth (4x Silk Cloth)" },
|
||||
[10] = { str = "#VIDEO[145-160]# 15x Azure Silk Hood (2x Bolt of Silk Cloth, 2x Blue Dye, 1x Fine Thread)" },
|
||||
[11] = { str = "#VIDEO[160-170]# 10x Silk Headband (3x Bolt of Silk Cloth, 2x Fine Thread)" },
|
||||
[12] = { str = "#VIDEO[170-175]# 5x Formal White Shirt (3x Bolt of Silk Cloth, 2x Bleach, 1x FIne Thread)" },
|
||||
[13] = { str = "#VIDEO[175-185]# 100x Bolt of Mageweave (5x Mageweave Cloth)" },
|
||||
[14] = { str = "#VIDEO[185-200]# 15x Crimson Silk Vest (4x Bolt of Silk Cloth, 2x Red Dye, 2x Fine Thread)" },
|
||||
[15] = { str = "#VIDEO[200-215]# 15x Crimson Silk Pantaloons (4x Bolt of Silk Cloth, 2x Red Dye, 2x Silken Thread)" },
|
||||
[16] = { str = "#VIDEO[215-220]# 5x Black Mageweave Leggings/Vest (2x Bolt of Mageweave, 3x Silken Thread)" },
|
||||
[17] = { str = "#VIDEO[220-230]# 10x Black Mageweave Gloves (2x Bolt of Mageweave, 2x Heavy Silken Thread)" },
|
||||
[18] = { str = "#VIDEO[230-250]# 20x Black Mageweave Headband/Shoulders (3x Bolt of Mageweave, 2x Heavy Silken Thread)" },
|
||||
[19] = { str = "#VIDEO[250-260]# 180x Bolt of Runecloth (5x Runecloth)" },
|
||||
[20] = { str = "#VIDEO[260-275]# 15x Runecloth Belt (3x Bolt of Runecloth, 1x Rune Thread)" },
|
||||
[21] = { str = "#VIDEO[275-280]# 5x Runecloth Bag (5x Bolt of Runecloth, 2x Rugged Leather, 1x Rune Thread)" },
|
||||
[22] = { str = "#VIDEO[280-300]# 20x Runecloth Gloves (4x Bolt of Runecloth, 4x Rugged Leather, 1x Rune Thread)" },
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
--[[--------------------------------------------------
|
||||
002_DunMorogh.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 002 DunMorogh
|
||||
1.04.1
|
||||
-- First Release
|
||||
Dwarves&Gnomes DunMorogh's Guide
|
||||
from level 1 to lever 12
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_002_DunMorogh = {
|
||||
-----------1-6 Cold Ridge Valley
|
||||
--[13] = {
|
||||
[0106] = {
|
||||
title = "1-6 Cold Ridge Valley",
|
||||
--n = "1-6 Cold Ridge Valley",
|
||||
--pID = 1, nID = 14,
|
||||
--itemCount = 25,
|
||||
items = {
|
||||
[1] = { str = "1-6 Cold Ridge Valley" },
|
||||
[2] = { str = "01) Right in front of where you start accept Dwarven Outfitters" },
|
||||
[3] = { str = "02) Go south around 28,73 and kill wolves for the meat then go back to 29,71 and turn in Dwarven Outfitters then accept Encrypted Rune and Coldridge Valley Mail Delivery pt.1 ", x = 29, y = 71, zone = "Dun Morogh" },
|
||||
[4] = { str = "03) To your left accept A New Threat " },
|
||||
[5] = { str = "04) At 30,74 kill burly troggs and at 26,72 there is a camp of rockjaw troggs, kill them for A New Threat ", x = 26, y = 72, zone = "Dun Morogh" },
|
||||
[6] = { str = "05) Go back to 29,71 and turn in A New Threat you should be 3 now " },
|
||||
[7] = { str = "06) Go in Anvilmar at 28,69 and turn in your classes skill npc quest which was Encrypted Rune for a rogue", x = 28, y = 69, zone = "Dun Morogh" },
|
||||
[8] = { str = "07) Accept A Refugee's Quandary inside " },
|
||||
[9] = { str = "08) Follow the road south to 22,71 and turn in Coldridge Valley Mail Delivery pt.1 accept Coldridge Valley Mail Delivery pt.2 and The Boar Hunter", x = 22, y = 71, zone = "Dun Morogh" },
|
||||
[10] = { str = "09) Just behind him start killing small boars until you have 12 for The Boar Hunter then go back to 22,71 and turn it in" },
|
||||
[11] = { str = "10) At 20,76 clear the front of the tent and grab Felix's Box for A Refugee's Quandary", x = 20, y = 76, zone = "Dun Morogh" },
|
||||
[12] = { str = "11) At 22,80 clear in front of the tent and grab Felix's Chest for A Refugee's Quandary", x = 22, y = 80, zone = "Dun Morogh" },
|
||||
[13] = { str = "12) Run up to 25,75 (it’s the end of the road on the map) and turn in Coldridge Valley Mail Delivery pt.2 and accept The Troll Cave ", x = 25, y = 75, zone = "Dun Morogh" },
|
||||
[14] = { str = "13) At 26,79 clear in front of the cave and grab Felix's Bucket of Bolts for A Refugee's Quandary then kill the trolls in and out of it until you complete The Troll Cave", x = 26, y = 79, zone = "Dun Morogh" },
|
||||
[15] = { str = "14) Run back up to 25,75 and turn in “The Troll Cave” accept “The Stolen Journal” you should be 5 or very close to it now.", x = 25, y = 75, zone = "Dun Morogh" },
|
||||
[16] = { str = "15) Go back in the cave at 26,79 and go left at the 3 directions to 30,80 and kill Grik'nir the Cold for “The Stolen Journal” ", x = 30, y = 80, zone = "Dun Morogh" },
|
||||
[17] = { str = "16) Return back to 25,75 and turn in “The Stolen Journal” accept “Senir's Observations pt.1”", x = 25, y = 75, zone = "Dun Morogh" },
|
||||
[18] = { str = "17) Turn around and Accept “Scalding Mornbrew Delivery” and hearth." },
|
||||
[19] = { str = "18) Run up into Anvilmar at 28,69 and turn in “A Refugee's Quandary”.", x = 28, y = 69, zone = "Dun Morogh" },
|
||||
[20] = { str = "19) Go further back and turn in “Scalding Mornbrew Delivery” accept “Bring Back the Mug”." },
|
||||
[21] = { str = "20) Get training before you leave." },
|
||||
[22] = { str = "21) Run right to 25,75, everything is yellow so nothing will attack you, and turn in “Bring Back the Mug”.", x = 25, y = 75, zone = "Dun Morogh" },
|
||||
[23] = { str = "22) Head toward the tunnel and turn in “Senir's Observations pt.1” at 33,71 and accept “Senir's Observations pt.2”.", x = 33, y = 71, zone = "Dun Morogh" },
|
||||
[24] = { str = "23) You should be about 500 to 6 now." },
|
||||
[25] = { str = "24) About 10 feet away accept “Supplies to Tannok”." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------6-12 Dun Morogh
|
||||
--[14] = {
|
||||
[0612] = {
|
||||
title = "6-12 Dun Morogh",
|
||||
--n = "6-12 Dun Morogh",
|
||||
--pID = 13, nID = 101,
|
||||
--itemCount = 71,
|
||||
items = {
|
||||
[1] = { str = "6-12 Dun Morogh" },
|
||||
[2] = { str = "01) Go through the tunnel and kill all the stuff on the way. Follow the road to 46,53 in Kharanos and kill stuff on the way until you’re 6. Save your boar ribs and boar meat.", x = 46, y = 53, zone = "Dun Morogh" },
|
||||
[3] = { str = "02) Once at 46,53 turn in “Senir's Observations pt.2”" },
|
||||
[4] = { str = "03) Up ahead on the right, in front of the Inn, accept “Beer Basted Boar Ribs”" },
|
||||
[5] = { str = "04) Go in the Inn and turn in “Supplies to Tannok”" },
|
||||
[6] = { str = "05) Go to the Innkeeper, make it your home and purchase the rhapsody malt for “Beer Basted Boar Ribs”" },
|
||||
[7] = { str = "06) Get new skills" },
|
||||
[8] = { str = "07) Go across the road from the Inn and accept “Tools For Steelgrill” " },
|
||||
[9] = { str = "08) Go NE to 49,48 and accept “Stocking Jetsteam” and “The Grizzled Den”", x = 49, y = 48, zone = "Dun Morogh" },
|
||||
[10] = { str = "09) Go to the left house and turn in “Tools For Steelgrill”" },
|
||||
[11] = { str = "10) By the tree out front accept “Ammo For Rumbleshot”" },
|
||||
[12] = { str = "11) Go to the small camp at 44,56 and open the box for “Ammo For Rumbleshot”", x = 44, y = 56, zone = "Dun Morogh" },
|
||||
[13] = { str = "12) From around this camp to the SW kill boars and bears until you finish “Stocking Jetsteam” and “Beer Basted Boar Ribs”" },
|
||||
[14] = { str = "13) If you’re having trouble finding boars, just go to around 40,65 there is a lot. ", x = 40, y = 65, zone = "Dun Morogh" },
|
||||
[15] = { str = "14) Go into the grizzled den at 42,54 and kill wendingos until you get 8 manes for “The Grizzled Den”", x = 42, y = 54, zone = "Dun Morogh" },
|
||||
[16] = { str = "15) You also wanna head out to 40,65 and turn in “Ammo For Rumbleshot” watch the scene it’s cool, only if you aren’t time running. You should be 7 or very close now", x = 40, y = 65, zone = "Dun Morogh" },
|
||||
[17] = { str = "16) Hearth back to Kharanos" },
|
||||
[18] = { str = "17) Just outside the Inn, turn in “Beer Basted Boar Ribs”" },
|
||||
[19] = { str = "18) Go to the house at 45,49, NE of the Inn, and accept Operation Recombobulation", x = 45, y = 49, zone = "Dun Morogh" },
|
||||
[20] = { str = "19) Run NE to 49,48 and turn in “Stocking Jetsteam” accept “Evershine”", x = 49, y = 48, zone = "Dun Morogh" },
|
||||
[21] = { str = "20) Turn in “The Grizzled Den”" },
|
||||
[22] = { str = "21) You should be close to half way through lvl 7 " },
|
||||
[23] = { str = "22) Run west to 30,45 and turn in “Evershine” accept “A Favor For Evershine” and “The Perfect Stout”. ", x = 30, y = 45, zone = "Dun Morogh" },
|
||||
[24] = { str = "23) Beside him accept “Bitter Rivals”" },
|
||||
[25] = { str = "24) To the North/NE from here you’ll find tons of bears,leopards, and boars to kill for “A Favor For Evershine” You should ding 8 while killing for this. " },
|
||||
[26] = { str = "25) Kill troll seers and open baskets at 41,44 and 41,35 for “The Perfect Stout” the drops kinda suck off the trolls but the baskets can be hard to get. ", x = 41, y = 44, zone = "Dun Morogh" },
|
||||
[27] = { str = "26) Die so you end up in Kharanos" },
|
||||
[28] = { str = "27) Next to the GY accept “Frostmane Hold”" },
|
||||
[29] = { str = "28) Go into the Inn and buy a thunder ale off the Innkeeper and down in the basement, give the ale to Jarven Thunderbrew. When he leaves touch the barrel to turn in “Bitter Rivals” accept “Return to Marleth”. " },
|
||||
[30] = { str = "29) Get new skills" },
|
||||
[31] = { str = "30) Go west to brewnall village again at 30,45 and turn in “The Perfect Stout” and “A Favor For Evershine” accept “Return to Bellowfiz” and “Shimmer Stout”. ", x = 30, y = 45, zone = "Dun Morogh" },
|
||||
[32] = { str = "31) Next to him turn in “Return to Marleth” you should be past half way to 9 now" },
|
||||
[33] = { str = "32) Go west of brewnall and kill leper gnomes until you complete Operation Recombobulation you should hit 9 getting kills " },
|
||||
[34] = { str = "33) Go to 24,50 and enter the cave kill 5 headhunters and explore the cave for “Frostmane Hold” To explore it just run in and stay to the right, it will curve left and you can see a raised platform with mobs, get near it to complete exploration ", x = 24, y = 50, zone = "Dun Morogh" },
|
||||
[35] = { str = "34) Die so you end up at Kharanos " },
|
||||
[36] = { str = "35) Either straight down the steps of the Inn, or N of the GY, turn in “Frostmane Hold” accept “The Reports” " },
|
||||
[37] = { str = "36) Go NW in the house at 45,49 and turn in Operation Recombobulation ", x = 45, y = 49, zone = "Dun Morogh" },
|
||||
[38] = { str = "37) Go east to 49,48 and turn in “Return to Bellowfiz” you should be half way to 10 now " },
|
||||
[39] = { str = "38) Go North to IF at 53,35 ", x = 53, y = 35, zone = "Dun Morogh" },
|
||||
[40] = { str = "39) Make IF your home at 21,55 ", x = 21, y = 55, zone = "Ironforge" },
|
||||
[41] = { str = "40) Go to 39,56 in IF, behind the bank, in the kings room, turn in “The Reports” ", x = 39, y = 56, zone = "Ironforge" },
|
||||
[42] = { str = "41) Enter the tram at 76,51 ", x = 76, y = 51, zone = "Ironforge" },
|
||||
[43] = { str = "42) Take the tram down to SW " },
|
||||
[44] = { str = "43) Go to 66,62 and get the FP ", x = 66, y = 62, zone = "Stormwind City" },
|
||||
[45] = { str = "44) Reach goldshire and enter the Inn at 42,65 ", x = 42, y = 65, zone = "Elwynn Forest" },
|
||||
[46] = { str = "45) Just to your left accept “Kobold Candles” " },
|
||||
[47] = { str = "46) Exit the Inn and go straight out and accept “The Fargodeep Mine” " },
|
||||
[48] = { str = "47) In the blacksmith house right here accept “Elmore's Task” " },
|
||||
[49] = { str = "48) Go near the carts at 42,67 and accept “Gold Dust Exchange” ", x = 42, y = 67, zone = "Elwynn Forest" },
|
||||
[50] = { str = "49) Go south to the Fargodeep Mine at 39,82 and kill the kobold until you complete all 3 quests “The Fargodeep Mine”, “Gold Dust Exchange”, and “Kobold Candles” Make sure you go in the lower entrance so “The Fargodeep Mine” is easier ", x = 39, y = 82, zone = "Elwynn Forest" },
|
||||
[51] = { str = "50) Once all 3 are done go to the stonefield farm just up the hill east at 34,84 and accept “Lost Necklace” SKIP “Princess Must Die!” ", x = 34, y = 84, zone = "Elwynn Forest" },
|
||||
[52] = { str = "51) Go east to the Maclure Vinyard st 43,85 and turn in “Lost Necklace” accept “Pie For Billy” then turn around and kill boars until it’s finished ", x = 43, y = 85, zone = "Elwynn Forest" },
|
||||
[53] = { str = "52) At 43,80 and accept “Young Lovers” ", x = 43, y = 80, zone = "Elwynn Forest" },
|
||||
[54] = { str = "53) Go back west to 34,84 and turn in “Pie For Billy” SKIP “Back to Billy” ", x = 34, y = 84, zone = "Elwynn Forest" },
|
||||
[55] = { str = "54) Go west some to the river at 29,85 and turn in “Young Lovers” accept “Speak with Gramma” ", x = 29, y = 85, zone = "Elwynn Forest" },
|
||||
[56] = { str = "55) Go back to 34,84 and turn in “Speak with Gramma” in the house, accept “Note to William” You should be 10 now ", x = 34, y = 84, zone = "Elwynn Forest" },
|
||||
[57] = { str = "56) Go back to goldshire, either die or run " },
|
||||
[58] = { str = "57) Go into the tram again at 63,10 accept “Deeprun Rat Roundup” just collect 5 rats and turn it in. You could skip this and keep the flute, It can really piss people off if you play it non stop around the IF bank. SKIP “Me Brother, Nipsy” unless you go back to SW on the tram because you get crap xp", x = 63, y = 10, zone = "Stormwind City" },
|
||||
[59] = { str = "58) After this you should be a bit over half way to 11 " },
|
||||
[60] = { str = "59) Run east to 68,55 and accept “The Public Servant” ", x = 68, y = 55, zone = "Dun Morogh" },
|
||||
[61] = { str = "60) Go behind him and accept “Those Blasted Troggs!” " },
|
||||
[62] = { str = "61) Go in the pidd below and kill the troggs here and in the cave for both quests then turn them back in at 68,55 " },
|
||||
[63] = { str = "62) Go east to 80,51 and follow the path into Loch Modan ", x = 80, y = 51, zone = "Dun Morogh" },
|
||||
[64] = { str = "63) Go to 22,73 and accept In Defense of the King's Lands ", x = 22, y = 73, zone = "Loch Modan" },
|
||||
[65] = { str = "64) Go up in the tower and accept The Trogg Threat " },
|
||||
[66] = { str = "65) At 33,50 grab the FP ", x = 33, y = 50, zone = "Loch Modan" },
|
||||
[67] = { str = "66) Look for the wandering guidrd and accept “Rat Catching” " },
|
||||
[68] = { str = "67) Kill troggs from 27,53 and north for In Defense of the King's Lands and The Trogg Threat ", x = 27, y = 53, zone = "Loch Modan" },
|
||||
[69] = { str = "68) Go back to 22,73 and turn them both in ", x = 22, y = 73, zone = "Loch Modan" },
|
||||
[70] = { str = "69) Go north to the tower at 24,18 and turn in “Stormpike's Delivery” ", x = 24, y = 18, zone = "Loch Modan" },
|
||||
[71] = { str = "70) You should be 12 now or close to it. You can grind if you’d like but it doesn’t matter much. Follow the Night Elf to IF guide but just go backwards. You’re going to go north through the wetlands to menethil, then boat to auberdine from here." },
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
--[[--------------------------------------------------
|
||||
002_ElwynnForest.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 001 Elwynn Forest
|
||||
1.04.1
|
||||
-- First Release
|
||||
Human Elwynn Forest's Guide
|
||||
from level 1 to lever 12
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_002_ElwynnForest = {
|
||||
-----------1-10 Elwynn Forest
|
||||
--[15] = {
|
||||
[0110] = {
|
||||
title = "1-10 Elwynn Forest",
|
||||
--n = "1-10 Elwynn Forest",
|
||||
--pID = 1, nID = 16,
|
||||
--itemCount = 69,
|
||||
items = {
|
||||
[1] = { str = "1-10 Elwynn Forest" },
|
||||
[2] = { str = "Directly in front of where you start accept A Threat Within then go in the building and turn it in, accept Kobold Camp Cleanup" },
|
||||
[3] = { str = "Run back out, and turn in Welcome! at the wagons at 47,41", x = 47, y = 41, zone = "Elwynn Forest" },
|
||||
[4] = { str = "Go to the nook at the NW corner of the building at 48,40 and accept Wolves Across the Border", x = 48, y = 40, zone = "Elwynn Forest" },
|
||||
[5] = { str = "Kill the wolves all in front of you for Wolves Across the Border while working your way to the kobold vermin at 47,35 for Kobold Camp Cleanup", x = 47, y = 35, zone = "Elwynn Forest" },
|
||||
[6] = { str = "Go back to 48,40 and turn in Wolves Across the Border", x = 48, y = 40, zone = "Elwynn Forest" },
|
||||
[7] = { str = "Run into the house at 48,41 and turn in Kobold Camp Cleanup accept Simple Letter and Investigate Echo Ridge", x = 48, y = 41, zone = "Elwynn Forest" },
|
||||
[8] = { str = "Go to the warrior trainer at 50,42 and turn in Simple Letter and train", x = 50, y = 42, zone = "Elwynn Forest" },
|
||||
[9] = { str = "Exit the house and grab Brotherhood of Thieves just outside" },
|
||||
[10] = { str = "Go NW toward the cave at 47,32 and kill kobold workers on the way up tp it for Investigate Echo Ridge", x = 47, y = 32, zone = "Elwynn Forest" },
|
||||
[11] = { str = "Go West to 54,40 and go south killing the defias until you finish Brotherhood of Thieves you should have dinged 4 by the time you’re done, if not just kill until you are", x = 54, y = 40, zone = "Elwynn Forest" },
|
||||
[12] = { str = "Run back to the abbey at 48,42 and turn in Brotherhood of Thieves accept Milly Osworth and Bounty on Garrick Padfoot", x = 48, y = 42, zone = "Elwynn Forest" },
|
||||
[13] = { str = "Go inside the house and turn in Investigate Echo Ridge accept Skirmish at Echo Ridge then get new skills" },
|
||||
[14] = { str = "Go north of the house at 50,39 next to the barn, turn in Milly Osworth accept Milly's Harvest", x = 50, y = 39, zone = "Elwynn Forest" },
|
||||
[15] = { str = "Go back east and grab the grapes in the garden at 54,48 for Milly's Harvest then NE to 57,48 you’ll see a shack with padfoot and a thug. Kill him for Bounty on Garrick Padfoot", x = 57, y = 48, zone = "Elwynn Forest" },
|
||||
[16] = { str = "Go back to 50,39 and turn in Milly's Harvest accept Grape Manifest", x = 50, y = 39, zone = "Elwynn Forest" },
|
||||
[17] = { str = "Go into the cave at 47,31 and kill kobold laborer’s for Skirmish at Echo Ridge", x = 47, y = 31, zone = "Elwynn Forest" },
|
||||
[18] = { str = "Hearth back to the Abbey" },
|
||||
[19] = { str = "Turn in Bounty on Garrick Padfoot right in front of you" },
|
||||
[20] = { str = "Go inside the house, turn in Skirmish at Echo Ridge accept Report to Goldshire" },
|
||||
[21] = { str = "Go to the top of the tower through the spiral staircase, turn in Grape Manifest" },
|
||||
[22] = { str = "Go to 45,47 and accept Rest and Relaxation", x = 45, y = 47, zone = "Elwynn Forest" },
|
||||
[23] = { str = "If you’re not 6 you should be close, just grind on a few mobs while you head towards the house near goldshire at 46,62 and pick up skinning if you want it", x = 46, y = 42, zone = "Elwynn Forest" },
|
||||
[24] = { str = "Reach goldshire and enter the Inn at 42,65", x = 42, y = 65, zone = "Elwynn Forest" },
|
||||
[25] = { str = "Just to your left accept Kobold Candles" },
|
||||
[26] = { str = "Near the bar turn in Rest and Relaxation and make Goldshire your home" },
|
||||
[27] = { str = "Exit the Inn and go straight out, turn in Report to Goldshire accept The Fargodeep Mine" },
|
||||
[28] = { str = "Get your new skills in town here." },
|
||||
[29] = { str = "Go near the carts at 42,67 and accept Gold Dust Exchange", x = 42, y = 67, zone = "Elwynn Forest" },
|
||||
[30] = { str = "Go south to the Fargodeep Mine at 39,82 and kill the kobold until you complete all 3 quests The Fargodeep Mine, Gold Dust Exchange, and Kobold Candles Make sure you go in the lower entrance so The Fargodeep Mine is easier", x = 39, y = 82, zone = "Elwynn Forest" },
|
||||
[31] = { str = "Once all 3 are done go to the stonefield farm just up the hill east at 34,84 and accept Lost Necklace SKIP Princess Must Die! it’s just too hard to do alone.", x = 34, y = 84, zone = "Elwynn Forest" },
|
||||
[32] = { str = "Go east to the Maclure Vinyard at 43,80 and accept Young Lovers", x = 43, y = 80, zone = "Elwynn Forest" },
|
||||
[33] = { str = "Go to 43,85 and turn in Lost Necklace accept Pie For Billy then turn around and kill boars until it’s finished.", x = 43, y = 85, zone = "Elwynn Forest" },
|
||||
[34] = { str = "Go back west to 34,84 and turn in Pie For Billy and accept Back to Billy", x = 34, y = 84, zone = "Elwynn Forest" },
|
||||
[35] = { str = "Go west some to the river at 29,85 and turn in Young Lovers accept Speak with Gramma", x = 29, y = 85, zone = "Elwynn Forest" },
|
||||
[36] = { str = "Go back to 34,84 and turn in Speak with Gramma in the house, accept Note to William", x = 34, y = 84, zone = "Elwynn Forest" },
|
||||
[37] = { str = "Run back east to 43,85 and turn in Back to Billy accept Goldtooth", x = 43, y = 85, zone = "Elwynn Forest" },
|
||||
[38] = { str = "Go in the bottom entrance of the fargodeep mine at 39,82 and to about 41,78 inside and kill goldtooth for Goldtooth You should ding 7 sometime in the cave or before you came in.", x = 41, y = 78, zone = "Elwynn Forest" },
|
||||
[39] = { str = "Hearth back to Goldshire" },
|
||||
[40] = { str = "In the Inn turn in Kobold Candles accept Shipment to Stormwind also turn in Note to William accept Collecting Kelp" },
|
||||
[41] = { str = "Straight outside the Inn, turn in The Fargodeep Mine accept The Jasperlode Mine" },
|
||||
[42] = { str = "South near the fence, turn in Gold Dust Exchange You should have dinged lvl 7 now, accept A Fishy Peril" },
|
||||
[43] = { str = "Turn around by the blacksmith and turn it in, accept Further Concerns" },
|
||||
[44] = { str = "Kill murlocs around the lake at 51,65 for Collecting Kelp", x = 51, y = 65, zone = "Elwynn Forest" },
|
||||
[45] = { str = "Grind up to the Jasperlode mine at 61,53 and run through it about half way to 60,50 for The Jasperlode Mine", x = 60, y = 50, zone = "Elwynn Forest" },
|
||||
[46] = { str = "Run to the bridge at 73,72 and turn in Further Concerns accept Find the Lost Guards and Protect the Frontier", x = 73, y = 72, zone = "Elwynn Forest" },
|
||||
[47] = { str = "Stop at the house NE of here at 79,68 and accept Red Linen Goods", x = 79, y = 68, zone = "Elwynn Forest" },
|
||||
[48] = { str = "At the center of the camp, 81,66, accept A Bundle of Trouble", x = 81, y = 66, zone = "Elwynn Forest" },
|
||||
[49] = { str = "Run just west of the waterfall at 72,60 touch the mangled body and turn in Find the Lost Guards accept Discover Rolf’s Fate if this doesn’t make you ding 8 then grind that last tiny bit.", x = 72, y = 60, zone = "Elwynn Forest" },
|
||||
[50] = { str = "Go to the murloc camp at 79,55 and loot the mangled body there (might need a group, but usually always people here) and turn in Discover Rolf’s Fate accept Report to Thomas", x = 79, y = 55, zone = "Elwynn Forest" },
|
||||
[51] = { str = "Go south to 81,66 and turn in “A Bundle of Trouble”", x = 81, y = 66, zone = "Elwynn Forest" },
|
||||
[52] = { str = "Cross the road and go south and east and finish killing the bears and wolves for “Protect the Frontier” bears are kinda scarce so you might have to search." },
|
||||
[53] = { str = "While doing this you can get some, if not all, of the red bandannas for Red Linen Goods at 90,78", x = 90, y = 78, zone = "Elwynn Forest" },
|
||||
[54] = { str = "Go back to 73,72 near the bridge and turn in “Protect the Frontier” and “Report to Thomas” acept “Deliver Thomas' Report”", x = 73, y = 72, zone = "Elwynn Forest" },
|
||||
[55] = { str = "Go down to the pumpkin patch at 69,78 and kill the rest of the defias for Red Linen Goods ", x = 69, y = 78, zone = "Elwynn Forest" },
|
||||
[56] = { str = "You might find Furlbrow's Deed on the defias while you’re killing defias just hold it for now." },
|
||||
[57] = { str = "Go to 79,68 and turn in Red Linen Goods it should make you lvl 9 or bring you really close", x = 79, y = 68, zone = "Elwynn Forest" },
|
||||
[58] = { str = "Stop at the bridge again at 73,72 and accept “Report to Gryan Stoutmantle” must be 9 to accept", x = 73, y = 72, zone = "Elwynn Forest" },
|
||||
[59] = { str = "Hearth to Goldshire" },
|
||||
[60] = { str = "By the front door turn in “Collecting Kelp” accept “The Escape”" },
|
||||
[61] = { str = "Just outside the Inn turn in “The Jasperlode Mine” and “Deliver Thomas' Report” SKIPt “Cloth and Leather Armor” accept “Westbrook Garrison Needs Help!”" },
|
||||
[62] = { str = "In the blacksmith house right here accept “Elmore's Task” then get training" },
|
||||
[63] = { str = "Run south to the maclure vinyard at 43,89 and turn in “The Escape”", x = 43, y = 89, zone = "Elwynn Forest" },
|
||||
[64] = { str = "Run west to the stonefield farm at 34,84 and turn in “Goldtooth”", x = 34, y = 84, zone = "Elwynn Forest" },
|
||||
[65] = { str = "Go NW to 34,74 and turn in “Westbrook Garrison Needs Help!” accept “Riverpaw Gnoll Bounty” You will also see the wanted poster and it’s the famous old hogger quest. He’s a tough lvl 11 elite and is not easy so skip it, unless you have a group it’s up to you. Remember on new servers you’re probably still within range of everyone so it shouldn’t be hard to get done.", x = 34, y = 74, zone = "Elwynn Forest" },
|
||||
[66] = { str = "Go just south of the road and start killing gnolls for “Riverpaw Gnoll Bounty” they can also drop a gold schedule which starts a quest" },
|
||||
[67] = { str = " Go back up to 34,74 and turn in “Riverpaw Gnoll Bounty” ", x = 34, y = 74, zone = "Elwynn Forest" },
|
||||
[68] = { str = "You should be very close to 10 now." },
|
||||
[69] = { str = "Follow the road west into Westfall" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------10-12 Westfall and Lock Modan
|
||||
--[16] = {
|
||||
[1012] = {
|
||||
title = "10-12 Westfall and Lock Modan",
|
||||
--n = "10-12 Westfall and Lock Modan",
|
||||
--pID = 15, nID = 101,
|
||||
--itemCount = 34,
|
||||
items = {
|
||||
[1] = { str = "10-12 Westfall and Lock Modan" },
|
||||
[2] = { str = "Go to 59,19 and turn in “Furlbrow’s Deed” if you found it before", x = 59, y = 19, zone = "Westfall" },
|
||||
[3] = { str = "Accept “Westfall Stew” SKIP “Poor Old Blanchy”" },
|
||||
[4] = { str = "Go in the house at 56,30 and turn in “Westfall Stew”", x = 56, y = 30, zone = "Westfall" },
|
||||
[5] = { str = "Go to 56,47 and turn in “Report to Gryan Stoutmantle”", x = 56, y = 47, zone = "Westfall" },
|
||||
[6] = { str = "Go in the tower and accept “A Swift Message”" },
|
||||
[7] = { str = "Get the FP at 56,52 and turn in “A Swift Message” accept “Continue to Stormwind”", x = 56, y = 52, zone = "Westfall" },
|
||||
[8] = { str = "Fly to SW unless you did hogger, then hearth to Goldshire and turn it in outside the Inn then train" },
|
||||
[9] = { str = "In SW go to 56,64 and turn in “Shipment to Stormwind”", x = 56, y = 64, zone = "Stormwind" },
|
||||
[10] = { str = "Train new weapons at 57,57", x = 57, y = 57, zone = "Stormwind" },
|
||||
[11] = { str = "Go to 74,47 and turn in “Continue to Stormwind” accept “Dungar Longdrink”", x = 74, y = 47, zone = "Stormwind" },
|
||||
[12] = { str = "Go to 51,12 and turn in “Elmore's Task” accept “Stormpike's Delivery” this will be done on the way to the wetlands", x = 51, y = 12, zone = "Stormwind" },
|
||||
[13] = { str = "Go to 78,45 and accept “A Warrior’s Training” or your classes lvl 10 quest.", x = 78, y = 45, zone = "Stormwind" },
|
||||
[14] = { str = "Go to 66,62 and turn in “Stormpike's Delivery” accept “Return to Lewis” then fly back to Westfall", x = 66, y = 62, zone = "Stormwind" },
|
||||
[15] = { str = "Go to the tower at 56,47 and turn in “Return to Lewis” super easy xp", x = 56, y = 47, zone = "Westfall" },
|
||||
[16] = { str = "Fly back to SW Go in the bar at 74,37 and turn in “A Warrior’s Training” accept “Bartleby the Drunk” then turn around and hand it in accept “Beat Bartleby", x = 74, y = 37, zone = "Stormwind" },
|
||||
[17] = { str = "Kick bartleby’s ass then talk to him again and accept “Bartleby's Mug” then turn it in behind you and learn your defense" },
|
||||
[18] = { str = "Go into the tram at 63,8 and take it to IF", x = 63, y = 8, zone = "Stormwind" },
|
||||
[19] = { str = "Once it stops accept “Deeprun Rat Roundup” just collect 5 rats and turn it in. You could skip this and keep the flute, It can really piss people off if you play it non stop around the IF bank. SKIP “Me Brother, Nipsy” unless you go back to SW on the tram because you get crap xp" },
|
||||
[20] = { str = "Grab the FP at 55,47", x = 55, y = 47, zone = "Ironforge" },
|
||||
[21] = { str = "After the rat quest you should be real close to 11" },
|
||||
[22] = { str = "Leave IF and head into Dun Morogh" },
|
||||
[23] = { str = "Run east to 68,55 and accept “The Public Servant”", x = 68, y = 55, zone = "Dun Morogh" },
|
||||
[24] = { str = "Go behind him and accept “Those Blasted Troggs!”" },
|
||||
[25] = { str = "Go in the pidd below and kill the troggs here and in the cave for both quests then turn them back in at 68,55", x = 68, y = 55, zone = "Dun Morogh" },
|
||||
[26] = { str = "Go east to 80,51 and follow the path into Loch Modan", x = 80, y = 51, zone = "Dun Morogh" },
|
||||
[27] = { str = " Go to 22,73 and accept In Defense of the King's Lands”", x = 22, y = 73, zone = "Loch Modan" },
|
||||
[28] = { str = "Go up in the tower and accept The Trogg Threat" },
|
||||
[29] = { str = "At 33,50 grab the FP", x = 33, y = 50, zone = "Loch Modan" },
|
||||
[30] = { str = "Look for the wandering guidrd and accept “Rat Catching”" },
|
||||
[31] = { str = "Kill troggs from 27,53 and north for In Defense of the King's Lands” and The Trogg Threat", x = 27, y = 53, zone = "Loch Modan" },
|
||||
[32] = { str = "Go back to 22,73 and turn them both in", x = 22, y = 73, zone = "Loch Modan" },
|
||||
[33] = { str = "Go north to the tower at 24,18 and turn in “Stormpike's Delivery”", x = 24, y = 18, zone = "Loch Modan" },
|
||||
[34] = { str = "You should be 12 now or close to it. You can grind if you’d like but it doesn’t matter much. Follow the Night Elf to IF guide but just go backwards. You’re going to go north through the wetlands to menethil, then boat to auberdine from here." },
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
--[[--------------------------------------------------
|
||||
002_Teldrassil.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 002 Teldrassil
|
||||
1.04.1
|
||||
-- First Release
|
||||
Night Elves Teldrassil's Guide
|
||||
from level 1 to lever 12
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_002_Teldrassil = {
|
||||
-----------1-6 Teldrassil
|
||||
--[11] = {
|
||||
[0106] = {
|
||||
title = "1-6 Teldrassil",
|
||||
--n = "1-6 Teldrassil",
|
||||
--pID = 1, nID = 12,
|
||||
--itemCount = 20,
|
||||
items = {
|
||||
[1] = { str = "1-6 Teldrassil" },
|
||||
[2] = { str = "Accept The Balance of Nature pt.1 at 58,44 and go do it by killing mobs at 57,45 and 61,43. Turn it in at 58,44.", x = 58, y = 44, zone = "Teldrassil" },
|
||||
[3] = { str = "Accept The Balance of Nature pt.2 and Etched Sigil at 58,44. The Woodland Protector pt.1 at 59,42 and A Good Friend at 60,41.", x = 59, y = 42, zone = "Teldrassil" },
|
||||
[4] = { str = "Hand in The Woodland Protector pt.1 at 57,45 and accept The Woodland Protector pt.2 Mobs are at 56,46. Turn it in at 57,45.", x = 56, y = 46, zone = "Teldrassil" },
|
||||
[5] = { str = "Accept Webwood Venom at 57,41.", x = 57, y = 41, zone = "Teldrassil" },
|
||||
[6] = { str = "Run up the ramp to the top of the tree, turn in Etched Sigil at 58,40 (hunter trainer) and get beast tracking.", x = 58, y = 40, zone = "Teldrassil" },
|
||||
[7] = { str = "Jump down and go do the following The Balance of Nature pt.2 mobs are all around 60,35", x = 60, y = 35, zone = "Teldrassil" },
|
||||
[8] = { str = "Webwood Venom at 57,32 in and outside the cave.", x = 57, y = 32, zone = "Teldrassil" },
|
||||
[9] = { str = "Turn in A Good Friend at 54,32 in a cove just west of the cave. Accept A Friend in Need .", x = 54, y = 32, zone = "Teldrassil" },
|
||||
[10] = { str = "Turn in Webwood Venom at 57,41. Accept Webwood Egg .", x = 57, y = 41, zone = "Teldrassil" },
|
||||
[11] = { str = "Turn in The Balance of Nature pt.2 at 58,44", x = 58, y = 44, zone = "Teldrassil" },
|
||||
[12] = { str = "Turn in A Friend in Need at 60,41, accept Iverron's Antidote pt.1", x = 60, y = 41, zone = "Teldrassil" },
|
||||
[13] = { str = "Iverron's Antidote pt.1 (lilies and mushrooms) around 57,37.", x = 57, y = 37, zone = "Teldrassil" },
|
||||
[14] = { str = "Iverron's Antidote pt.1 (ichor) in the cave 57,32 along with Webwood Egg at 56,26", x = 57, y = 32, zone = "Teldrassil" },
|
||||
[15] = { str = "Turn in Webwood Egg at 57,41 Accept Tenaron's Summons then Run up the ramp to the top of the tree and hand it in at 59,39. Accept Crown of the Earth pt.1 ", x = 57, y = 41, zone = "Teldrassil" },
|
||||
[16] = { str = "Turn in Iverron's Antidote pt.1 accept Iverron's Antidote pt.2 ." },
|
||||
[17] = { str = "Do Crown of the Earth pt.1 at 59,32", x = 59, y = 32, zone = "Teldrassil" },
|
||||
[18] = { str = "Turn in Iverron's Antidote pt.2 at 54,32", x = 54, y = 32, zone = "Teldrassil" },
|
||||
[19] = { str = "Turn in Crown of the Earth pt.1 at 59,39 Accept Crown of the Earth pt.2 ", x = 59, y = 39, zone = "Teldrassil" },
|
||||
[20] = { str = "If you’re not level 6 yet, you should be close. Level and get skills. Head towards Dolanaar" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------6-12 Teldrassil
|
||||
--[12] = {
|
||||
[0612] = {
|
||||
title = "6-12 Teldrassil",
|
||||
--n = "6-12 Teldrassil",
|
||||
--pID = 11, nID = 101,
|
||||
--itemCount = 57,
|
||||
items = {
|
||||
[1] = { str = "6-12 Teldrassil" },
|
||||
[2] = { str = "Accept Dolanaar Delivery at 61,47", x = 61, y = 47, zone = "Teldrassil" },
|
||||
[3] = { str = "Accept Zenn's Bidding at 60,56", x = 60, y = 56, zone = "Teldrassil" },
|
||||
[4] = { str = "Make Dolanaar your home." },
|
||||
[5] = { str = "Turn in Dolanaar Delivery at 55,59 in Dolanaar", x = 55, y = 59, zone = "Teldrassil" },
|
||||
[6] = { str = "Turn in Crown of the Earth pt.2 at 56,61 accept Crown of the Earth pt.3", x = 56, y = 61, zone = "Teldrassil" },
|
||||
[7] = { str = "At the tower in Dolanaar grab the following." },
|
||||
[8] = { str = "Denalan's Earth A Troubling Breeze Get First Aid The Emerald Dreamcatcher Twisted Hatred." },
|
||||
[9] = { str = "Accept The Road to Darnassus from the mounted patrol (if she’s there) right around 56,57", x = 56, y = 57, zone = "Teldrassil" },
|
||||
[10] = { str = "Zenn's Bidding mobs east of Dolanaar" },
|
||||
[11] = { str = "Crown of the Earth pt.3 at 63,58.", x = 63, y = 58, zone = "Teldrassil" },
|
||||
[12] = { str = "Turn in A Troubling Breeze at 66,58 accept Gnarlpine Corruption.", x = 66, y = 58, zone = "Teldrassil" },
|
||||
[13] = { str = "The Emerald Dreamcatcher 68,59", x = 68, y = 59, zone = "Teldrassil" },
|
||||
[14] = { str = "Turn in Zenn's Bidding at 60,56 then go to the Dolanaar tower and get Seek Redemption!.", x = 60, y = 56, zone = "Teldrassil" },
|
||||
[15] = { str = "Do Seek Redemption! (cones under trees) while heading to 60,68 and turn in Denalan's Earth", x = 60, y = 68, zone = "Teldrassil" },
|
||||
[16] = { str = "Accept and do Timberling Seeds (mobs all around lake) & Timberling Sprouts (seeds around trees near lake)" },
|
||||
[17] = { str = "Hand those back in and accept Rellian Greenspyre" },
|
||||
[18] = { str = "Turn in Crown of the Earth pt.3 accept Crown of the Earth pt.4" },
|
||||
[19] = { str = "Turn in Gnarlpine Corruption accept The Relics of Wakening." },
|
||||
[20] = { str = "Turn in The Emerald Dreamcatcher accept Ferocitas the Dream Eater" },
|
||||
[21] = { str = "You should be 8 by now. Get new skills." },
|
||||
[22] = { str = "Finish Seek Redemption! Then go North of Starbreeze." },
|
||||
[23] = { str = "Do Ferocitas the Dream Eater mobs around 68,53", x = 68, y = 53, zone = "Teldrassil" },
|
||||
[24] = { str = "Die on purpose so you end up at Dolanaar" },
|
||||
[25] = { str = "Run to Fel Rock Cave at 54,52 and do Twisted Hatred you can also wait until you’re 10 to do this. Makes it easier.", x = 54, y = 52, zone = "Teldrassil" },
|
||||
[26] = { str = "Turn in Ferocitas the Dream Eater & Twisted Hatred at Dolanaar." },
|
||||
[27] = { str = "Do The Road to Darnassus at 46,52", x = 46, y = 52, zone = "Teldrassil" },
|
||||
[28] = { str = "Go do The Relics of Wakening at 44,57 in the cave", x = 44, y = 57, zone = "Teldrassil" },
|
||||
[29] = { str = "Accept The Sleeping Druid inside, kill shamans to get it, turn it in." },
|
||||
[30] = { str = "Accept Druid of the Claw do it at 45,58", x = 45, y = 58, zone = "Teldrassil" },
|
||||
[31] = { str = "Go south and do Crown of the Earth pt.4 at 42,67.", x = 42, y = 67, zone = "Teldrassil" },
|
||||
[32] = { str = "Die so you end up at Dolanaar" },
|
||||
[33] = { str = "Turn in Crown of the Earth pt.4 accept Crown of the Earth pt.5." },
|
||||
[34] = { str = "Turn in The Road to Darnassus just west of tower to mountie" },
|
||||
[35] = { str = "Turn in The Relics of Wakening accept Ursal the Mauler" },
|
||||
[36] = { str = "You should be 10 now, if not grind to it" },
|
||||
[37] = { str = "Run to Darnassus Hand in Rellian Greenspyre at 38,21 accept Tumors", x = 38, y = 21, zone = "Teldrassil" },
|
||||
[38] = { str = "Get Nessa Shadowsong at 70,45 in Darnassus", x = 70, y = 45, zone = "Teldrassil" },
|
||||
[39] = { str = "Get The Glowing Fruit at 42,76.", x = 42, y = 76, zone = "Teldrassil" },
|
||||
[40] = { str = "Do Ursal the Mauler at 38,77.", x = 38, y = 77, zone = "Teldrassil" },
|
||||
[41] = { str = "Die so you’re in front of Darnassus." },
|
||||
[42] = { str = "Tumors at 42,42", x = 42, y = 42, zone = "Teldrassil" },
|
||||
[43] = { str = "Crown of the Earth pt.5 at 38,34", x = 38, y = 34, zone = "Teldrassil" },
|
||||
[44] = { str = "Accept The Enchanted Glade at 38,34. Then do it at 35,43. Turn it back in", x = 38, y = 34, zone = "Teldrassil" },
|
||||
[45] = { str = "Accept Teldrassil." },
|
||||
[46] = { str = "Run back to Darnassus, turn in Tumors at 38,21 accept Return to Denalan.", x = 38, y = 21, zone = "Teldrassil" },
|
||||
[47] = { str = "Turn in Teldrassil atop the tower at 36,12 accept Grove of the Ancients.", x = 36, y = 12, zone = "Teldrassil" },
|
||||
[48] = { str = "Hearth to Dolanaar." },
|
||||
[49] = { str = "Hand in Crown of the Earth pt.5 accept Crown of the Earth pt.6." },
|
||||
[50] = { str = "Turn in Ursal the Mauler." },
|
||||
[51] = { str = "Go SE to 60,68 Turn in Return to Denalan accept Oakenscowl elite.", x = 60, y = 68, zone = "Teldrassil" },
|
||||
[52] = { str = "Turn in Glowing Fruit" },
|
||||
[53] = { str = "Go kill Oakenscowl at 53,74. Turn it in at 60,68.", x = 53, y = 74, zone = "Teldrassil" },
|
||||
[54] = { str = "Run to Darnassus, if you’re not within 1100xp to 12 yet grind on harpies North of the Darnassus entrance." },
|
||||
[55] = { str = "Turn in Crown of the Earth pt.6 34,8 in Darnassus", x = 34, y = 8, zone = "Darnassus" },
|
||||
[56] = { str = "Get skills and run through gate at 30,41", x = 30, y = 41, zone = "Darnassus" },
|
||||
[57] = { str = "Run straight ahead to 56,92, hand in Nessa Shadowsong accept The Bounty of Teldrassil go hand it in to the hippograph guy at 58,93 to get a free ride and start Flight to Auberdine.", x = 56, y = 92, zone = "Teldrassil" },
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,197 @@
|
||||
--[[--------------------------------------------------
|
||||
003_Alliance_12to20.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 003 From Lvl 12 to Lvl 20
|
||||
1.04.1
|
||||
-- First Release
|
||||
Alliance's Guide
|
||||
from level 12 to lever 20
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_003_Alliance_12to20 = {
|
||||
-----------12-14 Darkshore
|
||||
--[101] = {
|
||||
[1214] = {
|
||||
title = "12-14 Darkshore",
|
||||
--n = "12-14 Darkshore",
|
||||
--pID = 12, nID = 102,
|
||||
--itemCount = 39,
|
||||
items = {
|
||||
[1] = { str = "12-14 Darkshore" },
|
||||
[2] = { str = "Once you land grab Washed Ashore pt.1 right in front of you." },
|
||||
[3] = { str = "Turn in Flight to Auberdine accept Return to Nessa I fly back to darnassus to get it done. She’s right off the edge of the dock." },
|
||||
[4] = { str = "Run out on the docks of Auberdine grab For Love Eternal at 35,43.", x = 35, y = 43, zone = "Darkshore" },
|
||||
[5] = { str = "Go upstairs accept Buzzbox 827." },
|
||||
[6] = { str = "Accept Cave Mushrooms in front of the Inn." },
|
||||
[7] = { str = "Grab The Red Crystal near the bridge" },
|
||||
[8] = { str = "Buy some 6 slot bags if you haven’t found 3 by now at 37,40 then grab Bashal'Aran pt.1 and Tools of the Highborne.", x = 37, y = 40, zone = "Darkshore" },
|
||||
[9] = { str = "Go south over the bridge, grab Plagued Lands." },
|
||||
[10] = { str = "Run inside, grab How Big a Threat? pt.1." },
|
||||
[11] = { str = "Go do Washed Ashore pt.1 at 36,50 grind from town to there to get Crawler legs for Buzzbox 827.", x = 36, y = 50, zone = "Darkshore" },
|
||||
[12] = { str = "Turn in Buzzbox 827 at 36,46 accept Buzzbox 411", x = 36, y = 46, zone = "Darkshore" },
|
||||
[13] = { str = "Turn in Washed Ashore pt.1 accept Washed Ashore pt.2." },
|
||||
[14] = { str = "Do Washed Ashore pt.2 at 31,46 west of boat dock. Turn it in", x = 31, y = 46, zone = "Darkshore" },
|
||||
[15] = { str = "Buzzbox 411 Threshers look like loch ness in the water, Turn it in at 41,28 accept Buzzbox 323", x = 41, y = 28, zone = "Darkshore" },
|
||||
[16] = { str = "Stop at 36,51 accept Beached Sea Creature.", x = 36, y = 51, zone = "Darkshore" },
|
||||
[17] = { str = "Bashal'Aran pt.1 at 44,36 grinding along the way, accept Bashal'Aran pt.2 killing grells around him for earrings.", x = 44, y = 36, zone = "Darkshore" },
|
||||
[18] = { str = "Turn in Bashal'Aran pt.2 at 44,36 accept Bashal’Aran pt.3", x = 44, y = 36, zone = "Darkshore" },
|
||||
[19] = { str = "Do Bashal’Aran pt.3 by killing satyr’s and turn it in accept Bashal’Aran pt.4 " },
|
||||
[20] = { str = "Grind to 47,48 and do The Red Crystal", x = 47, y = 48, zone = "Darkshore" },
|
||||
[21] = { str = "Grind to 40,53 to find the camp for How Big a Threat? pt.1 ", x = 40, y = 53, zone = "Darkshore" },
|
||||
[22] = { str = "Run down to Ameth’Aran at 40,59 and accept The Fall of Ameth'Aran do it at 43,58 and 42,63", x = 40, y = 59, zone = "Darkshore" },
|
||||
[23] = { str = "Do Tools of the Highborne while in here, killing mobs for them." },
|
||||
[24] = { str = "Do For Love Eternal at 41,58 she’s lvl 16 but easy.", x = 41, y = 58, zone = "Darkshore" },
|
||||
[25] = { str = "Do Bashal’Aran pt.4 at 42,61", x = 42, y = 61, zone = "Darkshore" },
|
||||
[26] = { str = "Turn in The Fall of Ameth'Aran at 40,59.", x = 40, y = 59, zone = "Darkshore" },
|
||||
[27] = { str = "To the west of Amath’Aran do Plagued Lands." },
|
||||
[28] = { str = "Hearth back to Auberdine Turn in Plagued Lands at the first house accept Cleansing the Infected " },
|
||||
[29] = { str = "Go inside hand in How Big a Threat? pt.1 accept How Big a Threat? Pt.2" },
|
||||
[30] = { str = "Accept Thundris Windweaver." },
|
||||
[31] = { str = "Go Upstairs accept The Tower of Althalaxx pt.1" },
|
||||
[32] = { str = "Don’t do Deep Ocean, Vast Sea it’s not worth it and too hard" },
|
||||
[33] = { str = "Go in the merchant house, turn in Tools of the Highborne." },
|
||||
[34] = { str = "Turn in Thundris Windweaver accept The Cliffspring River " },
|
||||
[35] = { str = "Turn in The Red Crystal near the Inn accept As Water Cascades" },
|
||||
[36] = { str = "Fill the Vial in the Moonwell for As Water Cascades" },
|
||||
[37] = { str = "Accept WANTED: Murkdeep! in front of the Inn (lvl 15 quest now)" },
|
||||
[38] = { str = "Turn in For Love Eternal on the dock. Watch the love story." },
|
||||
[39] = { str = "You should be 14 by now get skills in Darnassus and be sure to accept the questTrouble In Darkshore from Chief Archaeologist Greywhisker at 23,64" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------14-17 Darkshore
|
||||
--[102] = {
|
||||
[1417] = {
|
||||
title = "14-17 Darkshore",
|
||||
--n = "14-17 Darkshore",
|
||||
--pID = 101, nID = 103,
|
||||
--itemCount = 38,
|
||||
items = {
|
||||
[1] = { str = "14-17 Darkshore" },
|
||||
[2] = { str = "Turn in Bashal’Aran pt.4 at 44,36.", x = 44, y = 36, zone = "Darkshore" },
|
||||
[3] = { str = "Kill Moonstalkers and Rabid Thistle Bears all around 48,30 while you head to 50,25 for The Cliffspring River.", x = 50, y = 25, zone = "Darkshore" },
|
||||
[4] = { str = "Accept Beached Sea Turtle at 44,20", x = 44, y = 20, zone = "Darkshore" },
|
||||
[5] = { str = "Turn in Buzzbox 323 at 51,24 accept Buzzbox 525", x = 51, y = 24, zone = "Darkshore" },
|
||||
[6] = { str = "Go to 54,32 and do Cave Mushrooms.", x = 54, y = 32, zone = "Darkshore" },
|
||||
[7] = { str = "Head south stopping at 47,48 to do As Water Cascades accept The Fragments Within.", x = 47, y = 48, zone = "Darkshore" },
|
||||
[8] = { str = "Grind to 40,53 and do How Big a Threat? Pt.2", x = 40, y = 53, zone = "Darkshore" },
|
||||
[9] = { str = "Stop at 37,62 and grab Beached Sea Turtle", x = 37, y = 62, zone = "Darkshore" },
|
||||
[10] = { str = "Follow the shore and Beached Sea Creature at 36,70.", x = 36, y = 70, zone = "Darkshore" },
|
||||
[11] = { str = "Turn in Grove of the Ancients at 43,76", x = 43, y = 76, zone = "Darkshore" },
|
||||
[12] = { str = "Kill Grizzled Thistle Bear South of Grove of the Ancients for Buzzbox 525 then turn it in at 41,80.", x = 41, y = 80, zone = "Darkshore" },
|
||||
[13] = { str = "Stop at 35,74 and do WANTED: Murkdeep! you have to clear the camp, then the 2 waves from the ocean, then he comes. He’s lvl 19 If you have trouble with him just kite him.", x = 35, y = 74, zone = "Darkshore" },
|
||||
[14] = { str = "Grind over to 32,80 and get Beached Sea Creature.", x = 32, y = 80, zone = "Darkshore" },
|
||||
[15] = { str = "Hearth back to Auberdine and Turn in all beached creature quests at the hippograph dock" },
|
||||
[16] = { str = "Go under the dock grab Fruit of the Sea" },
|
||||
[17] = { str = "Turn in Cave Mushrooms in front of the Inn Accept Onu" },
|
||||
[18] = { str = "Turn in The Fragments Within in front of the Inn" },
|
||||
[19] = { str = "Accept The Absent Minded Prospector at 37,41", x = 37, y = 41, zone = "Darkshore" },
|
||||
[20] = { str = "Go to the merchant house turn in The Cliffspring River." },
|
||||
[21] = { str = "You should be 15 by now so you can accept: The Blackwood Corrupted." },
|
||||
[22] = { str = "Cleansing the Infected at the first house accept Tharnariun's Hope." },
|
||||
[23] = { str = "Turn in How Big a Threat? Pt.2 accept A Lost Master" },
|
||||
[24] = { str = "Fill the Cleansing Bowl at the Moonwell" },
|
||||
[25] = { str = "You should be 16 now, fly to Darnassus get new skills." },
|
||||
[26] = { str = "Do The Blackwood Corrupted at 50,34(grains) clear b4 all 3 pick ups or the spawn will give adds. If so just run.", x = 50, y = 34, zone = "Darkshore" },
|
||||
[27] = { str = "Go do Tharnariun's Hope at 51,37 (den mother) If you can’t kill her with the lvl 9 adds, kill them off and run till she’s alone. Immolate trap her and shoot first so you get the adds, not the pet.", x = 51, y = 37, zone = "Darkshore" },
|
||||
[28] = { str = "Do The Blackwood Corrupted 51,33(nuts) 52,33(fruit)", x = 51, y = 33, zone = "Darkshore" },
|
||||
[29] = { str = "Clear around the Bonfire at 52,33 place the food. Don’t worry they turn good.When Xabraxxis appears kill him. Talisman falls beside.", x = 52, y = 33, zone = "Darkshore" },
|
||||
[30] = { str = "Go to 54,24 turn in The Tower of Althalaxx pt.1 Accept The Tower of Althalaxx pt.2 do it. Kill any mob around the tower, NOT in it.", x = 54, y = 24, zone = "Darkshore" },
|
||||
[31] = { str = "Hand in The Tower of Althalaxx pt.2 accept The Tower of Althalaxx pt.3" },
|
||||
[32] = { str = "Run to 53,18 and grab Beached Sea Creature ", x = 53, y = 18, zone = "Darkshore" },
|
||||
[33] = { str = "Do Fruit of the Sea from crawlers around here." },
|
||||
[34] = { str = "Hearth back to Auberdine (if you’re not 17 yet you will be) turn in Beached Sea Creature on the dock." },
|
||||
[35] = { str = "Turn in Fruit of the Sea under the dock." },
|
||||
[36] = { str = "Turn in The Blackwood Corrupted in the merchant house." },
|
||||
[37] = { str = "Turn in Tharnariun's Hope at the last house." },
|
||||
[38] = { str = "Get on boat to Menethil Harbor. Follow attached run to IF." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------17-18 Loch Modan
|
||||
--[103] = {
|
||||
[1718] = {
|
||||
title = "17-18 Loch Modan",
|
||||
--n = "17-18 Loch Modan",
|
||||
--pID = 102, nID = 104,
|
||||
--itemCount = 30,
|
||||
items = {
|
||||
[1] = { str = "17-18 Loch Modan" },
|
||||
[2] = { str = "Stop right in Loch Modan tower at 24,18 and accept Filthy Paws and Stormpike's Order", x = 24, y = 18, zone = "Loch Modan" },
|
||||
[3] = { str = "Run in the Cave at 35,18 and do Filthy Paws Boxes are on the ground. Then turn it back in at 24,18", x = 35, y = 18, zone = "Loch Modan" },
|
||||
[4] = { str = "Arrive at Thelsamar get Flight Point at 33,50.", x = 33, y = 50, zone = "Loch Modan" },
|
||||
[5] = { str = "Grab Ironband's Excavation in the last house on the right." },
|
||||
[6] = { str = "Turn in Ironband's Excavation at 64,66 Accept Gathering Idols.", x = 64, y = 66, zone = "Loch Modan" },
|
||||
[7] = { str = "Grab Excavation Progress Report at 65,65", x = 65, y = 65, zone = "Loch Modan" },
|
||||
[8] = { str = "Do Gathering Idols behind here then turn it back in." },
|
||||
[9] = { str = "Go behind the excavation site to the house at 82,62.", x = 82, y = 62, zone = "Loch Modan" },
|
||||
[10] = { str = "Turn right when you enter and get Crocolisk Hunting (behind hunter trainer) then go to the other side and grab A Hunter's Boast " },
|
||||
[11] = { str = "Go do A Hunter's Boast birds in front of the house." },
|
||||
[12] = { str = "Turn in A Hunter's Boast accept A Hunter's Challenge do it,mobs are around 75,41.", x = 75, y = 41, zone = "Loch Modan" },
|
||||
[13] = { str = "Turn in A Hunter's Challenge Accept Vyrin's Revenge pt.1" },
|
||||
[14] = { str = "Go to 63,47 and accept Bingles' Missing Supplies. Requieries pre-quest Find Bingles from Gnoarn at 69,50 in Ironforge ", x = 63, y = 47, zone = "Loch Modan" },
|
||||
[15] = { str = "Do Crocolisk Hunting here on the shore and the island at 54,38", x = 54, y = 38, zone = "Loch Modan" },
|
||||
[16] = { str = "Grab all the parts for Bingles' Missing Supplies at (54,27 blastencapper), (48,30 wrench), (51,23 hammer), (48,20 screwdriver) ", x = 54, y = 27, zone = "Loch Modan" },
|
||||
[17] = { str = "Run up to the dam from the west side and accept A Dark Threat Looms pt.1 at 45,13 then run out the east entrance and turn it in on the barrel guarded by 2 sappers accept A Dark Threat Looms pt.2 ", x = 45, y = 13, zone = "Loch Modan" },
|
||||
[18] = { str = "Turn in A Dark Threat Looms pt.2 at 45,13", x = 45, y = 13, zone = "Loch Modan" },
|
||||
[19] = { str = "Run down the west coast Turn in Excavation Progress Report in Thelsamar, accept Report to Ironforge." },
|
||||
[20] = { str = "Go to 38,61 and do Vyrin's Revenge pt.1", x = 38, y = 61, zone = "Loch Modan" },
|
||||
[21] = { str = "Run back to the house at 83,62 turn in Crocolisk Hunting and Vyrin's Revenge pt.1 accept Wyrin’s Revenge pt.2.", x = 83, y = 62, zone = "Loch Modan" },
|
||||
[22] = { str = "Turn in Wyrin’s Revenge pt.2 behind you." },
|
||||
[23] = { str = "Go to 63,47 Turn in Bingles' Missing Supplies ", x = 63, y = 47, zone = "Loch Modan" },
|
||||
[24] = { str = "Run down to 22,70 and follow the path North into Dun Morogh", x = 22, y = 70, zone = "Loch Modan" },
|
||||
[25] = { str = "Run along the road to IronForge at 53,35.", x = 53, y = 35, zone = "Dun Morogh" },
|
||||
[26] = { str = "Get IF weapon training at 61,89 Get Flight Path at 55,38 inside then turn in Report to Ironforge at 74,12 skip Powder to Ironband", x = 74, y = 12, zone = "Ironforge" },
|
||||
[27] = { str = "Get on the tram at 76,51", x = 76, y = 51, zone = "Ironforge" },
|
||||
[28] = { str = "Turn in Stormpike's Order at 58,16 in Stormwind", x = 58, y = 16, zone = "Stormwind City" },
|
||||
[29] = { str = "Get SW weapons training at 57,57 and FP at 66,62", x = 66, y = 62, zone = "Stormwind City" },
|
||||
[30] = { str = "Run towards 91,73 in Elwynn Forest and enter Redridge Mtns", x = 91, y = 73, zone = "Elwynn Forest" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------18-20 Redredge Mountains
|
||||
--[104] = {
|
||||
[1820] = {
|
||||
title = "18-20 Redredge Mountains",
|
||||
--n = "18-20 Redredge Mountains",
|
||||
--pID = 103, nID = 201,
|
||||
--itemCount = 29,
|
||||
items = {
|
||||
[1] = { str = "18-20 Redredge Mountains" },
|
||||
[2] = { str = "Accept Encroaching Gnolls from the patrol around 15,71", x = 15, y = 71, zone = "Redridge Mountains" },
|
||||
[3] = { str = "Turn in Encroaching Gnolls at 30,60 Accept Assessing the Threat", x = 30, y = 60, zone = "Redridge Mountains" },
|
||||
[4] = { str = "Get Flight Point." },
|
||||
[5] = { str = "Cross the bridge, on the right accept Blackrock Menace on the left accept The Lost Tools" },
|
||||
[6] = { str = "SKIP Elmore's Task SKIP The Price of Shoes" },
|
||||
[7] = { str = "Accept Hilary's Necklace on the dock." },
|
||||
[8] = { str = "Accept Selling Fish near the shed out front" },
|
||||
[9] = { str = "Go in the Inn and accept A Free Lunch , SKIP Dry Times" },
|
||||
[10] = { str = "Go west of Lakeshire and accept Redridge Goulash." },
|
||||
[11] = { str = "Get Great Goretusk Snouts just west of the houses (watch out for bellygrub we’ll get him later) for Redridge Goulash." },
|
||||
[12] = { str = "Then head toward 41,54 to do The Lost Tools and do Selling Fish by killing murlocs, keep an eye out for a glinting mud pile underwater for Hilary's Necklace Save at least 8 murloc fins for a later quest", x = 41, y = 54, zone = "Redridge Mountains" },
|
||||
[13] = { str = "Turn in The Lost Tools by the bridge accept The Everstill Bridge" },
|
||||
[14] = { str = "Turn in Hilary's Necklace on the dock." },
|
||||
[15] = { str = "Turn in Selling Fish by the shed in front of the houses." },
|
||||
[16] = { str = "You should be half way to 20 at this point." },
|
||||
[17] = { str = "Turn in A Free Lunch around 14,70 accept Visit the Herbalist.", x = 14, y = 70, zone = "Redridge Mountains" },
|
||||
[18] = { str = "Kill spiders for Redridge Goulash between 14,70 and 29,83.", x = 29, y = 83, zone = "Redridge Mountains" },
|
||||
[19] = { str = "Kill condors for Redridge Goulash around 57,73", x = 57, y = 73, zone = "Redridge Mountains" },
|
||||
[20] = { str = "Turn in Assessing the Threat near the FP" },
|
||||
[21] = { str = "Accept Murloc Poachers in front of the shed." },
|
||||
[22] = { str = "Stop at the house just west of Lakeshire, turn in Visit the Herbalist accept Delivering Daffodils" },
|
||||
[23] = { str = "Go to the next house, turn in Redridge Goulash" },
|
||||
[24] = { str = "Go in the Inn and turn in Delivering Daffodils." },
|
||||
[25] = { str = "Kill Murlocs east of the bridge for Murloc Poachers." },
|
||||
[26] = { str = "Kill Gnolls north of Lakeshire for The Everstill Bridge." },
|
||||
[27] = { str = "Turn in The Everstill Bridge next to the Bridge" },
|
||||
[28] = { str = "Turn in Murloc Poachers in front of the shed." },
|
||||
[29] = { str = "Hearth back to Auberdine. You should definitely be 20 by this point and at least half way to 21." },
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,372 @@
|
||||
--[[--------------------------------------------------
|
||||
003_Alliance_20to30.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 003 From Lvl 20 to Lvl 30
|
||||
1.04.1
|
||||
-- First Release
|
||||
Alliance's Guide
|
||||
from level 20 to lever 30
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_003_Alliance_20to30 = {
|
||||
-----------20-21 Darkshore
|
||||
--[201] = {
|
||||
[2021] = {
|
||||
title = "20-21 Darkshore",
|
||||
--n = "20-21 Darkshore",
|
||||
--pID = 104, nID = 202,
|
||||
--itemCount = 10,
|
||||
items = {
|
||||
[1] = { str = "20-21 Darkshore" },
|
||||
[2] = { str = "First thing, fly to Darnassus and get your new Skills." },
|
||||
[3] = { str = "Turn in Onu at 43,76 accept The Master's Glaive.", x = 43, y = 76, zone = "Darkshore" },
|
||||
[4] = { str = "Go to 39,85 it should say you found Master’s Glaive(complete) now use the phial of scrying. Click it turn in The Master's Glaive accept The Twilight Camp", x = 39, y = 85, zone = "Darkshore" },
|
||||
[5] = { str = "Click the Book at 38,86 turn in The Twilight Camp accept Return to Onu.", x = 38, y = 86, zone = "Darkshore" },
|
||||
[6] = { str = "Accept Therylune's Escape (escort) at 38,87 and do it.", x = 38, y = 87, zone = "Darkshore" },
|
||||
[7] = { str = "Turn in The Absent Minded Prospector pt.1 at 35,83 accept The Absent Minded Prospector pt.2 and do it.", x = 35, y = 83, zone = "Darkshore" },
|
||||
[8] = { str = "Go west to 31,83 and 31,85 and accept Beached Sea Turtle at both.", x = 31, y = 83, zone = "Darkshore" },
|
||||
[9] = { str = "Go back to 43,76 and turn in Return to Onu accept Mathystra Relics.", x = 43, y = 76, zone = "Darkshore" },
|
||||
[10] = { str = "Accept The Sleeper Has Awakened (escort) the sleeping bear behind Onu. Hotbar his horn because he falls asleep every minute or so. This quest will bring you into Ashenvale. Horn is in the box beside him. Note: since he follows you, with aspect of the cheetah on you can skip mobs by running down the road or taking the offroad." },
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
-----------21-22 Ashenvale
|
||||
--[202] = {
|
||||
[2122] = {
|
||||
title = "21-22 Ashenvale",
|
||||
--n = "21-22 Ashenvale",
|
||||
--pID = 201, nID = 203,
|
||||
--itemCount = 33,
|
||||
items = {
|
||||
[1] = { str = "21-22 Ashenvale" },
|
||||
[2] = { str = "Run to 26,36 Maestra’s Post in Ashenvale, and this will complete The Sleeper Has Awakened Go turn it in straight ahead in the house.", x = 26, y = 36, zone = "Ashenvale" },
|
||||
[3] = { str = "Accept Bathran's Hair." },
|
||||
[4] = { str = "Kill mobs around 31,31 in ruins of Ordil’Aran for The Tower of Althalaxx pt.4 I then clear the camp a total of 4 times. If I find it early I still clear it 4 times total. I am then half way to 22.", x = 31, y = 31, zone = "Ashenvale" },
|
||||
[5] = { str = "Grab plant bundles for Bathran's Hair at 31,21 in Bathran’s Haunt", x = 31, y = 21, zone = "Ashenvale" },
|
||||
[6] = { str = "Go back to Maestra’s Post at 26,38 and turn in The Tower of Althalaxx pt.4 Accept The Tower of Althalaxx pt.5.", x = 26, y = 36, zone = "Ashenvale" },
|
||||
[7] = { str = "Turn in Bathran's Hair accept Orendil's Cure." },
|
||||
[8] = { str = "Go to 22,51 turn in Therylune's Escape.", x = 22, y = 51, zone = "Ashenvale" },
|
||||
[9] = { str = "Run into Astranaar at 33,48 and get FP", x = 33, y = 48, zone = "Ashenvale" },
|
||||
[10] = { str = "Accept The Zoram Strand right as you enter town." },
|
||||
[11] = { str = "Accept On Guard in Stonetalon pt.1 on the house to the right." },
|
||||
[12] = { str = "Cross the road near the gazebo accept Journey to Stonetalon Peak " },
|
||||
[13] = { str = "In the Inn accept Raene's Cleansing pt.1 and Culling the Threat." },
|
||||
[14] = { str = "Make Astranaar your home." },
|
||||
[15] = { str = "Turn in Orendil's Cure at the last house accept Elune's Tear" },
|
||||
[16] = { str = "Go to The Zoram Strand. Stop at 14,31 accept The Ancient Statuette ", x = 14, y = 31, zone = "Ashenvale" },
|
||||
[17] = { str = "do The Zoram Strand Naga all around here." },
|
||||
[18] = { str = "And The Ancient Statuette at 14,20 it’s on the ground. ", x = 14, y = 20, zone = "Ashenvale" },
|
||||
[19] = { str = "Turn in The Ancient Statuette at 14,31 accept Ruuzel ", x = 14, y = 31, zone = "Ashenvale" },
|
||||
[20] = { str = "Do Ruuzel at 9,15 You don’t actually have to kill Ruuzel. Kill Lady Vespia. A 22 weak elite and doesn’t have guards like Ruuzel", x = 9, y = 15, zone = "Ashenvale" },
|
||||
[21] = { str = "Turn in Ruuzel at 14,20.", x = 14, y = 20, zone = "Ashenvale" },
|
||||
[22] = { str = "Turn in Raene's Cleansing pt.1 at 20,42 accept Raene’s Cleansing pt.2 Kill murlocs for the gem", x = 20, y = 42, zone = "Ashenvale" },
|
||||
[23] = { str = "Hearth back to Astranaar" },
|
||||
[24] = { str = "Turn in The Zoram Strand right as you enter town accept Pridewings of Stonetalon" },
|
||||
[25] = { str = "Go to the Inn Turn in Raene’s Cleansing pt.2 accept Raene’s Cleansing pt.3 and An Aggressive Defense " },
|
||||
[26] = { str = "Grind to 46,46 and grab Elune's Tear", x = 46, y = 46, zone = "Ashenvale" },
|
||||
[27] = { str = "Go to 49,56 then grind north to 53,46 turn in Raene’s Cleansing pt.3 accept Raene’s Cleansing pt.4.", x = 49, y = 56, zone = "Ashenvale" },
|
||||
[28] = { str = "You should already be 22. Go to 55,61 and do An Aggressive Defense", x = 55, y = 61, zone = "Ashenvale" },
|
||||
[29] = { str = "Hearth to Astranaar" },
|
||||
[30] = { str = "Turn in An Aggressive Defense" },
|
||||
[31] = { str = "Go to the east exit house, turn in Elune's Tear accept The Ruins of Stardust" },
|
||||
[32] = { str = "Exit Astranaar out the east exit follow the south path till you are at 33,66 and grab stardust covered bushes for The Ruins of Stardust", x = 33, y = 66, zone = "Ashenvale" },
|
||||
[33] = { str = "Grind east to Talondeep path at 42,71", x = 42, y = 71, zone = "Ashenvale" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------22-23 Stonetalon Mountains
|
||||
--[203] = {
|
||||
[2223] = {
|
||||
title = "22-23 Stonetalon Mountains",
|
||||
--n = "22-23 Stonetalon Mountains",
|
||||
--pID = 202, nID = 204,
|
||||
--itemCount = 10,
|
||||
items = {
|
||||
[1] = { str = "22-23 Stonetalon Mountains" },
|
||||
[2] = { str = "Run down Stonetalon to the hut at 58,62 accept Super Reaper 6000", x = 58, y = 62, zone = "Stonetalon Mountains" },
|
||||
[3] = { str = "Then go to 59,66 and turn in On Guard in Stonetalon pt.1 accept On Guard in Stonetalon pt.2.", x = 59, y = 66, zone = "Stonetalon Mountains" },
|
||||
[4] = { str = "Turn it in right behind you accept A Gnome’s Respite" },
|
||||
[5] = { str = "Kill Loggers and Deforesters for A Gnome’s Respite and Operators for Super Reaper 6000 all around Windshear Crag. Operators hang out around buildings only." },
|
||||
[6] = { str = "Turn in Super Reaper 6000 at the hut 58,62 SKIP Further Instructions Unless you want to run to Ratchet.", x = 58, y = 62, zone = "Stonetalon Mountains" },
|
||||
[7] = { str = "Then go to 59,66 and turn in A Gnome’s Respite accept An Old Colleague and A Scroll From Mauren We’ll do these later.", x = 59, y = 66, zone = "Stonetalon Mountains" },
|
||||
[8] = { str = "Stop at Mirkfallon Lake at 48,40 and kill Pridewings for Pridewings of Stonetalon South and East of it.", x = 48, y = 40, zone = "Stonetalon Mountains" },
|
||||
[9] = { str = "Run to 37,8 turn in Journey to Stonetalon Peak SKIP Reclaiming The Charred Vale for now", x = 37, y = 8, zone = "Stonetalon Mountains" },
|
||||
[10] = { str = "Grab FP at 36,7 and Fly to Auberdine.", x = 36, y = 7, zone = "Stonetalon Mountains" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------23-24 Darkshore
|
||||
--[204] = {
|
||||
[2324] = {
|
||||
title = "23-24 Darkshore",
|
||||
--n = "23-24 Darkshore",
|
||||
--pID = 203, nID = 205,
|
||||
--itemCount = 20,
|
||||
items = {
|
||||
[1] = { str = "23-24 Darkshore" },
|
||||
[2] = { str = "Turn in Both Beached Sea Turtle on the dock" },
|
||||
[3] = { str = "Make Auberdine your home" },
|
||||
[4] = { str = "Turn in The Absent Minded Prospector pt.2 just outside the merchant house accept The Absent Minded Prospector pt.3 ." },
|
||||
[5] = { str = "Go in the last house accept A Lost Master." },
|
||||
[6] = { str = "Fly to Darnassus and turn in The Absent Minded Prospector pt.3 outside the Temple of the Moon at 31,84 accept The Absent Minded Prospector pt.4 Get talents if you need them.", x = 31, y = 84, zone = "Darnassus" },
|
||||
[7] = { str = "Fly back to Auberdine." },
|
||||
[8] = { str = "Go to around 58,21 for Mathystra Relics The relics are all over.", x = 58, y = 21, zone = "Darkshore" },
|
||||
[9] = { str = "Stop at 56,13 accept Gyromast's Retrieval Kill raging reef crawlers around here and Murlocs north near the ship at 55,12", x = 56, y = 13, zone = "Darkshore" },
|
||||
[10] = { str = "Run north of Ruins of Mathystra killing sire’s and matriach’s for A Lost Master Also kill Foreststriders for Gyromast's Retrieval" },
|
||||
[11] = { str = "Turn in Gyromast's Retrieval at 56,13 accept Gyromast's Revenge.", x = 56, y = 13, zone = "Darkshore" },
|
||||
[12] = { str = "Turn the key on The First Mate at 55,18 somewhere in the middle he’s gonna attack you. You have to kill him. Then turn it in at 56,13", x = 55, y = 18, zone = "Darkshore" },
|
||||
[13] = { str = "Run back to Auberdine." },
|
||||
[14] = { str = "Turn in A Lost Master pt.1 at the first house in town. Accept A Lost Master pt.2" },
|
||||
[15] = { str = "Run down to 43,76 turn in Mathystra Relics.", x = 43, y = 76, zone = "Darkshore" },
|
||||
[16] = { str = "Run down to 41,81 and do /wave at Grimclaw He’ll point southwest at the cave. Go to it at 45,85 and turn in A Lost Master pt.2 accept Escape Through Force Run him back to Grimclaw at 41,81.", x = 41, y = 81, zone = "Darkshore" },
|
||||
[17] = { str = "If you’re not 24 yet or 1750 xp to 24, grind to 1750 until you level." },
|
||||
[18] = { str = "Hearth to Auberdine." },
|
||||
[19] = { str = "Turn in Escape Through Force at the house before exiting town. Accept Trek to Ashenvale" },
|
||||
[20] = { str = "Fly to Darnassus and get new skills then Fly to Astranaar." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------24-25 Ashenvale
|
||||
--[205] = {
|
||||
[2425] = {
|
||||
title = "24-25 Ashenvale",
|
||||
--n = "24-25 Ashenvale",
|
||||
--pID = 204, nID = 206,
|
||||
--itemCount = 16,
|
||||
items = {
|
||||
[1] = { str = "24-25 Ashenvale" },
|
||||
[2] = { str = "Turn in Trek to Ashenvale right in front of you when you hearth." },
|
||||
[3] = { str = "Run to the house on the East side, turn in The Ruins of Stardust accept Fallen Sky Lake." },
|
||||
[4] = { str = "Run to the West side of town, turn in Pridewings of Stonetalon accept Kayneth Stillwind" },
|
||||
[5] = { str = "Grind every mob down into Fire Scar Shrine and kill Ilkruk Mathrull at 25,61 for The Tower of Althalaxx pt.5 Take him out as fast as you can. He summons 2 voidwalkers if you take too long.", x = 25, y = 61, zone = "Ashenvale" },
|
||||
[6] = { str = "Grind a path up to between 35,33 and 36,36 (he patrols) and kill Dal Bloodclaw for Culling the Threat.", x = 35, y = 33, zone = "Ashenvale" },
|
||||
[7] = { str = "I then grind furbolg’s until I’m half way to 25 " },
|
||||
[8] = { str = "Then run to Maestra’s Post at 26,38 turn in The Tower of Althalaxx pt.5 accept The Tower of Althalaxx pt.6.", x = 26, y = 38, zone = "Ashenvale" },
|
||||
[9] = { str = "Accept Supplies to Auberdine (escort) may seem out of the way, you run into a fight of 4, and 2 fights of 3. You only go to the darkshore border and it completes. Easy 2900 xp, not far out of the way. Turn it back in at 26,38.", x = 26, y = 38, zone = "Ashenvale" },
|
||||
[10] = { str = "Run to Astranaar" },
|
||||
[11] = { str = "Turn in Culling the Threat at the inn " },
|
||||
[12] = { str = "Run down to Silverwing Refuge at 49,67 and accept Elemental Bracers do it in the lake here.", x = 49, y = 67, zone = "Ashenvale" },
|
||||
[13] = { str = "Once you have all 5 inact bracers, use the scroll on them and then hand it back in at 49,67 SKIP Mage Summoner. ", x = 49, y = 67, zone = "Ashenvale" },
|
||||
[14] = { str = "I’m usually about 1 bar from 25 so I grind to 25 on the elementals " },
|
||||
[15] = { str = "Hearth to Auberdine" },
|
||||
[16] = { str = "Get on the boat to Menethil Harbor." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------25-27 Wetlands
|
||||
--[206] = {
|
||||
[2526] = {
|
||||
title = "25-27 Wetlands",
|
||||
--n = "25-27 Wetlands",
|
||||
--pID = 205, nID = 207,
|
||||
--itemCount = 53,
|
||||
items = {
|
||||
[1] = { str = "25-27 Wetlands" },
|
||||
[2] = { str = "Stop at the end of the docks, accept Claws From the Deep" },
|
||||
[3] = { str = "On the west side of town accept Young Crocolisk Skins" },
|
||||
[4] = { str = "Go to the top of the castle, accept War Banners" },
|
||||
[5] = { str = "On the east side of town accept Digging Through the Ooze " },
|
||||
[6] = { str = "In front of the Inn accept The Third Fleet and The Greenwarden" },
|
||||
[7] = { str = "Go to 49,56 then grind north to 53,46 turn in Raene’s Cleansing pt.3 accept Raene’s Cleansing pt.4.", x = 53, y = 46, zone = "Wetlands" },
|
||||
[8] = { str = "Make Menethil Harbor your home" },
|
||||
[9] = { str = "Go upstairs in the inn, turn in The Absent Minded Prospector pt.4 accept The Absent Minded Prospector pt.5" },
|
||||
[10] = { str = "Buy a Flagon of Mead from the bartender for The Third Fleet and give it to the guy outside the inn. Accept The Cursed Crew " },
|
||||
[11] = { str = "On the bridge accept In Search of the Excavation Team pt.1" },
|
||||
[12] = { str = "Kill Young Crocolisks just east of the bridge around 14,52 and north on the land of the lake also along the road to the greenwarden for Young Crocolisk Skins ", x = 14, y = 52, zone = "Wetlands" },
|
||||
[13] = { str = "Kill Bluegill Murlocs and Gobbler at 18,40 for Claws From the Deep", x = 18, y = 40, zone = "Wetlands" },
|
||||
[14] = { str = "Kill Mottled Raptors and Screechers around 25,46 for The Absent Minded Prospector pt.5", x = 25, y = 46, zone = "Wetlands" },
|
||||
[15] = { str = "Enter the Excavation Site at 34,40.", x = 34, y = 40, zone = "Wetlands" },
|
||||
[16] = { str = "Run up the path on the left and grab the fossil near the 2 npc’s at 38,52 for The Absent Minded Prospector pt.5", x = 38, y = 52, zone = "Wetlands" },
|
||||
[17] = { str = "Turn in In Search of the Excavation Team pt.1 accept In Search of the Excavation Team pt.2" },
|
||||
[18] = { str = "Accept Uncovering the Past." },
|
||||
[19] = { str = "Outside the cave accept Ormer s Revenge pt.1." },
|
||||
[20] = { str = "Go back to where you killed the raptors a few minutes ago at 25,46 and do Ormer's Revenge pt.1 by killing mottled raptors and screechers.", x = 25, y = 46, zone = "Wetlands" },
|
||||
[21] = { str = "Run back up to the cave at 38,52 and turn in Ormer's Revenge pt.1 accept Ormer’s Revenge pt.2", x = 38, y = 52, zone = "Wetlands" },
|
||||
[22] = { str = "Now do both Ormer’s Revenge pt.2 by killing Scythclaw and Razormaw Raptors below, and Uncovering the Past relics for this are all around the raptors. There are 4 different ones that randomly spawn but each is in it’s own shape which are: (Modr=Thin Red Vase) (Golm=Fat Yellow Vase) (Neru=Dirt Pile) (Ados=Tomb)." },
|
||||
[23] = { str = "Go back up to 38,52 and turn in Ormer’s Revenge pt.2 accept Ormer’s Revenge pt.3", x = 38, y = 52, zone = "Wetlands" },
|
||||
[24] = { str = "Turn in Uncovering the Past" },
|
||||
[25] = { str = "Do Ormer’s Revenge pt.3 atop the hill at 32,51 Sarltooth is a 29 But he’s as easy as the others. Go turn it back in at 38,52.", x = 32, y = 51, zone = "Wetlands" },
|
||||
[26] = { str = "Go in to Angerfang Encampment at 43,40 and do War Banners", x = 43, y = 40, zone = "Wetlands" },
|
||||
[27] = { str = "Stop at 49,39 accept Daily Delivery.", x = 49, y = 39, zone = "Wetlands" },
|
||||
[28] = { str = "Run straight East from here to 56,40 and turn in The Greenwarden accept Tramping Paws", x = 56, y = 40, zone = "Wetlands" },
|
||||
[29] = { str = "Kill Mosshide around 56,74 for Tramping Paws at the camp. They’re a fast respawn I couldn’t kill em fast enough. Turn it in at 56,40 and accept Fire Taboo You should be 26 by now, if not you will be soon", x = 56, y = 74, zone = "Wetlands" },
|
||||
[30] = { str = "Do Fire Taboo by killing any mosshides but the ones you just killed, The flints are easily dropped by the ones around 44,33 there is a few.", x = 44, y = 33, zone = "Wetlands" },
|
||||
[31] = { str = "Turn in Fire Taboo at 56,40 accept Blisters on the Land Now this is one of those quests you just do as you go. Fen Creepers are stealthed elementals that lurk in the water. If you see one, kill it.", x = 56, y = 40, zone = "Wetlands" },
|
||||
[32] = { str = "Hearth back to Menethil Harbor." },
|
||||
[33] = { str = "Turn in The Absent Minded Prospector pt.5 2nd floor of the Inn" },
|
||||
[34] = { str = "Go inside the castle upstairs, turn in War Banners accept Nek'Rosh's Gambit" },
|
||||
[35] = { str = "On the west side of town hand in Daily Delivery and Young Crocolisk Skins accept Apprentice's Duties" },
|
||||
[36] = { str = "Go on the dock and turn in Claws From the Deep accept Reclaiming Goods" },
|
||||
[37] = { str = "On the bridge hand in In Search of the Excavation Team pt.2." },
|
||||
[38] = { str = "You should definitely be 26 by this point and near ½ way to 27. You can either wait till you fly through IF to get talents or do it now." },
|
||||
[39] = { str = "Touch the damaged crate at 13,41 turn in Reclaiming Goods accept The Search Continues.", x = 13, y = 41, zone = "Wetlands" },
|
||||
[40] = { str = "Go just north to the next camp Touch the sealed barrel at 13,38 turn in The Search Continues accept Search More Hovels.", x = 13, y = 38, zone = "Wetlands" },
|
||||
[41] = { str = "Go north again touch the half-burried barrel at 13,34 turn in Search More Hovels accept Return the Statuette", x = 13, y = 34, zone = "Wetlands" },
|
||||
[42] = { str = "Stop at the sunken ships around 14,28 14,25 and kill the unded on either ship for The Cursed Crew Try to stay on top of the ships. Kill Snellig in the broken part of the first ship in the rear near the shore for the box.", x = 14, y = 28, zone = "Wetlands" },
|
||||
[43] = { str = "From here north you should be able to find Giant crocolisks for Apprentice's Duties as well as the fen dwellers (track hidden) in the waters all over this area while you head toward Ironbeard’s Tomb at 44,25 for Digging Through the Ooze Kill oozes for the bag.", x = 44, y = 25, zone = "Wetlands" },
|
||||
[44] = { str = "Now once all your fen creepers are dead head back to the greenwarden at 56,40 and hand it in.", x = 56, y = 40, zone = "Wetlands" },
|
||||
[45] = { str = "Hearth Back to Menethil Harbor." },
|
||||
[46] = { str = "Just outside hand in The Cursed Crew accept Lifting the Curse." },
|
||||
[47] = { str = "Go north a little bit and hand in Digging Through the Ooze" },
|
||||
[48] = { str = "Go to the west side of town, turn in Apprentice's Duties." },
|
||||
[49] = { str = "Next down to the docks, hand in Return the Statuette" },
|
||||
[50] = { str = "You should be 27 now. " },
|
||||
[51] = { str = "Fly to IF, get new skills, hand in An Old Colleague at 71,51 SKIP the next part", x = 71, y = 51, zone = "Wetlands" },
|
||||
[52] = { str = "Fly to SW, hand in A Gnome’s Respite at 43,80 SKIP the next part", x = 43, y = 80, zone = "Wetlands" },
|
||||
[53] = { str = "Fly to Lakeshire" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------27-28 Lakeshire
|
||||
--[207] = {
|
||||
[2728] = {
|
||||
title = "27-28 Lakeshire",
|
||||
--n = "27-28 Lakeshire",
|
||||
--pID = 206, nID = 208,
|
||||
--itemCount = 18,
|
||||
items = {
|
||||
[1] = { str = "27-28 Lakeshire" },
|
||||
[2] = { str = "Accept Blackrock Bounty right in front of FP near bridge " },
|
||||
[3] = { str = "Accept Blackrock Menace just over bridge on right." },
|
||||
[4] = { str = "Go in the town hall, accept Solomon's Law " },
|
||||
[5] = { str = "Accept Wanted: Lieutenant Fangore Outside the Inn on the wall " },
|
||||
[6] = { str = "Make Lakeshire your home" },
|
||||
[7] = { str = "Just west of town at the house past the inn, accept An Unwelcome Guest now go do it just west of this house at 16,49 (Bellygrub) kill him then hand it back in.", x = 16, y = 49, zone = "Redridge Mountains" },
|
||||
[8] = { str = "Go to Render’s Camp at 44,19 and kill the orcs here for Blackrock Menace while you head NW to 34,7 for Blackrock Bounty ", x = 44, y = 19, zone = "Redridge Mountains" },
|
||||
[9] = { str = "Once at the cave kill for the axes and champions Go left when you go in towards the down area with water, there is an escort quest here." },
|
||||
[10] = { str = "You should have your axes and champions killed by the time you get to the escort. If not you can kill them on your way out." },
|
||||
[11] = { str = "Get the escort quest Missing In Action at 28,12 in the cave and escort him out. He’s a 25 elite so he won’t die easy. Once you’re out of the camp he starts running back to Lakeshire, turn the quest in right where you stop as well as Blackrock Menace SKIP Tharil'Zun ", x = 28, y = 12, zone = "Redridge Mountains" },
|
||||
[12] = { str = "Run over the Bridge near the FP turn in, Blackrock Bounty" },
|
||||
[13] = { str = "Kill the Gnolls all around 74,42 for Solomon's Law and Keep an eye out for Wanted: Lieutenant Fangore he is at 80,40 Make sure you clear the mobs around him or they come running in", x = 74, y = 42, zone = "Redridge Mountains" },
|
||||
[14] = { str = "Once you got those both done, grind on these shadowhide until youre about 4k or 2 bars from 28" },
|
||||
[15] = { str = "Hearth to Lakeshire" },
|
||||
[16] = { str = "Go in the town hall and turn in both Solomon's Law and Wanted: Lieutenant Fangore" },
|
||||
[17] = { str = "You should have hit 28 after that." },
|
||||
[18] = { str = "Run down to the SW corner of Redredge Mountains, and take the path that forks south into Duskwood" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------28-29 Duskwood
|
||||
--[208] = {
|
||||
[2829] = {
|
||||
title = "28-29 Duskwood",
|
||||
--n = "28-29 Duskwood",
|
||||
--pID = 207, nID = 209,
|
||||
--itemCount = 48,
|
||||
items = {
|
||||
[1] = { str = "28-29 Duskwood" },
|
||||
[2] = { str = "Note on Duskwood, it has a few long, pointless chains that you only do a few parts of, then SKIP the rest" },
|
||||
[3] = { str = "Follow the road until you get to Darkshire and get FP at 72,44", x = 72, y = 44, zone = "Duskwood" },
|
||||
[4] = { str = "Go to the house just south of FP at 79,47 accept Look to the Stars pt.1 Buy a bronze tube from the gnome engineer just south of here at 78,48 and hand it back in, accept Look to the Stars pt.2 ", x = 79, y = 47, zone = "Duskwood" },
|
||||
[5] = { str = "Go towards town and the first big house on the left outside accept Worgen in the Woods pt.1" },
|
||||
[6] = { str = "Go in the house and accept Raven Hill The Hermit and Deliveries to Sven" },
|
||||
[7] = { str = "Exit the house and go straight to the house across the street and accept The Legend of Stalvan pt.1 and The Totem of Infliction." },
|
||||
[8] = { str = "Run out the door straight across to the Inn and make it your home." },
|
||||
[9] = { str = "Exit and go to the right, accept The Night Watch pt.1" },
|
||||
[10] = { str = "Turn in The Legend of Stalvan pt.1 SKIP the rest" },
|
||||
[11] = { str = "Start off doing Worgen in the Woods pt.1 to the east of Duskwood around 64,46 by killing Nightbane Shadow Weaver", x = 64, y = 46, zone = "Duskwood" },
|
||||
[12] = { str = "Turn in Worgen in the Woods pt.1 back in the center of town, accept Worgen in the Woods pt.2" },
|
||||
[13] = { str = "Go back to around 64,46 and kill Nightbane Dark Runners now for Worgen in the Woods pt.2 There are a lot in the camps", x = 64, y = 46, zone = "Duskwood" },
|
||||
[14] = { str = "Go turn in Worgen in the Woods pt.2 in the center of town again and accept Worgen in the Woods pt.3" },
|
||||
[15] = { str = "Run to the house at 81,59 turn in Look to the Stars pt.2 accept Look to the Stars pt.3", x = 81, y = 59, zone = "Duskwood" },
|
||||
[16] = { str = "Do The Night Watch pt.1 and the skeleton finger part of The Totem of Infliction at Tranquil Garden Cemetary around 79,70.", x = 79, y = 70, zone = "Duskwood" },
|
||||
[17] = { str = "Ger Mary’s Looking Glass for Look to the Stars pt.3 inside the chapel here from the insane ghoul" },
|
||||
[18] = { str = "Kill the mobs around 73,73 inside and out of the cave for Worgen in the Woods pt.3.", x = 73, y = 73, zone = "Duskwood" },
|
||||
[19] = { str = "Hearth back to Darkshire." },
|
||||
[20] = { str = "Just outside the Inn, hand in The Night Watch pt.1 accept The Night Watch pt.2." },
|
||||
[21] = { str = "Go east from here and hand in Worgen in the Woods pt.3 accept Worgen in the Woods pt.4 go in the house and turn that in." },
|
||||
[22] = { str = "Go just south of the FP to 79,47 turn in Look to the Stars pt.3 accept Look to the Stars pt.4 ", x = 79, y = 47, zone = "Duskwood" },
|
||||
[23] = { str = "You should be over half way to 29, more near ¾ the way" },
|
||||
[24] = { str = "Stop at the ogre mound cave at 33,75 and kill Zzarc' Vul for Look to the Stars pt.4 Stay left inside the cave", x = 33, y = 75, zone = "Duskwood" },
|
||||
[25] = { str = "Stop at the front of Raven Hill at 18,56 and turn in Raven Hill SKIP the rest since they’re grey", x = 18, y = 56, zone = "Duskwood" },
|
||||
[26] = { str = "Run north into the cemetery and kill skeletons for The Night Watch pt.2 and spiders in here for The Totem of Infliction." },
|
||||
[27] = { str = "Kill ghouls in the northern part of the cemetery at 22,38 to get ghoul fangs for The Totem of Infliction", x = 22, y = 38, zone = "Duskwood" },
|
||||
[28] = { str = "Kill black widow’s east of the graveyard for the last part of The Totem of Infliction" },
|
||||
[29] = { str = "Go to the shack NE of Raven Hill at 28,31 and turn in The Hermit accept Supplies From Darkshire.", x = 28, y = 31, zone = "Duskwood" },
|
||||
[30] = { str = "Go to 17,29 at the grave and get The Weathered Grave", x = 17, y = 29, zone = "Duskwood" },
|
||||
[31] = { str = "Run to 7,34 and turn in Deliveries to Sven accept Sven's Revenge ", x = 7, y = 34, zone = "Duskwood" },
|
||||
[32] = { str = "Hearth to Darkshire" },
|
||||
[33] = { str = "Right in front of the inn, turn in The Night Watch pt.2 accept The Night Watch pt.3" },
|
||||
[34] = { str = "Go in town hall, turn in The Weathered Grave accept Morgan Ladimore Turn it in just out front of the town hall SKIP Mor'Ladim " },
|
||||
[35] = { str = "Go in the house east of the Inn, turn in The Totem of Infliction and Supplies From Darkshire accept Ghost Hair Thread " },
|
||||
[36] = { str = "Go in the last house to the east, turn in Look to the Stars pt.4." },
|
||||
[37] = { str = "Go to Blind Mary in the house at 81,59 turn in Ghost Hair Thread accept Return the Comb Go turn it in at the house east of the Inn, accept Deliver the Thread ", x = 81, y = 59, zone = "Duskwood" },
|
||||
[38] = { str = "Go to 49,77 (you can sneak around everything to here by going towards STV and then to this location) and turn in Sven's Revenge accept Sven’s Camp ", x = 49, y = 77, zone = "Duskwood" },
|
||||
[39] = { str = "Run up to the shack NE of Raven Hill and hand in Deliver the Thread accept Zombie Juice" },
|
||||
[40] = { str = "Go to the underground at 23,35 kill plagued spreaders just around here and down inside for The Night Watch pt.3 you probably won’t get them all in 1 pass.", x = 23, y = 35, zone = "Duskwood" },
|
||||
[41] = { str = "Grind your way back out then over to Sven at 7,34 hand in Sven's Revenge accept The Shadowy Figure", x = 7, y = 34, zone = "Duskwood" },
|
||||
[42] = { str = "Hearth back to Darkshire" },
|
||||
[43] = { str = "Turn in Zombie Juice right in front of you, SKIP the rest" },
|
||||
[44] = { str = "Turn in The Night Watch pt.3 right outside the Inn" },
|
||||
[45] = { str = "Turn in The Shadowy Figure at the house east of the Inn accept The Shadowy Search Continues" },
|
||||
[46] = { str = "Turn it in at the town hall, accept Inquire at the Inn SKIP the rest" },
|
||||
[47] = { str = "If you happened to find An Old History Book (drops off all mobs in Duskwood) start the quest An Old History Book and Fly to SW and turn it in at 74,7 and accept Southshore ", x = 74, y = 7, zone = "Duskwood" },
|
||||
[48] = { str = "Fly to Menethil Harbor and get on the boat to Auberdine, Fly to Ashenvale" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------29-30 Ashenvale
|
||||
--[209] = {
|
||||
[2930] = {
|
||||
title = "29-30 Ashenvale",
|
||||
--n = "29-30 Ashenvale",
|
||||
--pID = 208, nID = 210,
|
||||
--itemCount = 18,
|
||||
items = {
|
||||
[1] = { str = "29-30 Ashenvale" },
|
||||
[2] = { str = "Make Astranaar your home." },
|
||||
[3] = { str = "Stop at 66,56 and touch the crystal for the first part of The Tower of Althalaxx pt.6.", x = 66, y = 56, zone = "Ashenvale" },
|
||||
[4] = { str = "Kill Withered Ancients for the Wooden Key for Raene’s Cleansing pt.4 around 55,35 then use the key on the chest at 54,35", x = 55, y = 35, zone = "Ashenvale" },
|
||||
[5] = { str = "Run to 53,46 turn in Raene’s Cleansing pt.4 accept Raene’s Cleansing pt.5", x = 53, y = 46, zone = "Ashenvale" },
|
||||
[6] = { str = "Go to 85,44 and turn in Kayneth Stillwind accept Forsaken Diseases", x = 85, y = 44, zone = "Ashenvale" },
|
||||
[7] = { str = "Go to 81,48 and get the second part of The Tower of Althalaxx pt.6 ", x = 81, y = 48, zone = "Ashenvale" },
|
||||
[8] = { str = "Go to 66,81 and do Fallen Sky Lake the mob is in the center", x = 66, y = 81, zone = "Ashenvale" },
|
||||
[9] = { str = "Kill rotting slimes until a chest falls east of the road near the lake for Raene’s Cleansing pt.5" },
|
||||
[10] = { str = "Go to 75,71 and do Forsaken Diseases the bottle is on the table.", x = 75, y = 71, zone = "Ashenvale" },
|
||||
[11] = { str = "Hand in Forsaken Diseases at 85,44 SKIP the next part.", x = 85, y = 44, zone = "Ashenvale" },
|
||||
[12] = { str = "Hearth back to Astranaar" },
|
||||
[13] = { str = "Turn in Fallen Sky Lake at the last house on the east side of town" },
|
||||
[14] = { str = "Go to 53,46 turn in Raene’s Cleansing pt.5 accept Raene's Cleansing pt.5 Go turn it in at the shrine inside the tree at 56,49 accept Raene’s Cleansing pt.6 Turn it back in at the moonwell at 53,46 accept Raene’s Cleansing pt.7 die so you end up near town", x = 53, y = 46, zone = "Ashenvale" },
|
||||
[15] = { str = "Hand in Raene’s Cleansing pt.7 at the Inn, SKIP the rest but keep the rod, you can use it forever to transform for fun =P" },
|
||||
[16] = { str = "Go to 26,38 turn in The Tower of Althalaxx pt.6 SKIP the rest", x = 26, y = 38, zone = "Ashenvale" },
|
||||
[17] = { str = "Fly to Darnassus and get your level 30 talents" },
|
||||
[18] = { str = "Fly to Auberdine then get on the boat to Menethil Harbor" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------30-30 Wetlands
|
||||
--[210] = {
|
||||
[3030] = {
|
||||
title = "30-30 Wetlands",
|
||||
--n = "30-30 Wetlands",
|
||||
--pID = 209, nID = 301,
|
||||
--itemCount = 18,
|
||||
items = {
|
||||
[1] = { str = "30-30 Wetlands" },
|
||||
[2] = { str = "Make Menethil Harbor your home." },
|
||||
[3] = { str = "Go to 14,25 and kill Captain Halyndor for his key on top of the ship, the chest is in the bottom of the ship. Send your pet in to grab all the aggro, then send it out to attack a murloc so it trains them all out. Touch the chest and turn in Lifting the Curse accept The Eye of Paleth", x = 14, y = 25, zone = "Wetlands" },
|
||||
[4] = { str = "Touch the catapult at 47,47, hand in Nek'Rosh's Gambit accept Defeat Nek’Rosh", x = 47, y = 47, zone = "Wetlands" },
|
||||
[5] = { str = "Go to 53,55 and clear the left side, walk up and around the back, to do Defeat Nek’Rosh clear anything he might aggro, die doing so if you must. He’s kinda weak. Pretty easy for a 32 elite.", x = 53, y = 55, zone = "Wetlands" },
|
||||
[6] = { str = "Hearth back to Menethil Harbor." },
|
||||
[7] = { str = "Turn in The Eye of Paleth right in front of you, accept Cleansing the Eye." },
|
||||
[8] = { str = "Go up top of the castle, hand in Defeat Nek’Rosh." },
|
||||
[9] = { str = "Accept Fall of Dun Modr just outside the inn " },
|
||||
[10] = { str = "Turn in Fall of Dun Modr at 49,18 accept The Thandol Span pt.1", x = 49, y = 18, zone = "Wetlands" },
|
||||
[11] = { str = "Go half way across the bridge to 51,8 and go in the door that leads down, look for the dead dwarf body, hand in The Thandol Span pt.1 accept The Thandol Span pt.2 turn that back in at the camp at 49,18 accept The Thandol Span pt.3 ", x = 51, y = 8, zone = "Wetlands" },
|
||||
[12] = { str = "Go back over the bridge, just to the right is a tinier bridge. Cross it and destroy the explosives cart for The Thandol Span pt.3 at 48,88 accept Plea to the Alliance", x = 48, y = 88, zone = "Wetlands" },
|
||||
[13] = { str = "Run into Arathi Highlands to Refuge Point at 45,47 and hand in Plea to the Alliance.", x = 45, y = 47, zone = "Arathi Highlands" },
|
||||
[14] = { str = "Grab the FP" },
|
||||
[15] = { str = "You should be half way to 31 or more by now." },
|
||||
[16] = { str = "Run towards Hillsbrad Foothills." },
|
||||
[17] = { str = "Stop at 27,49 and run south into Stormgarde Keep, at the first intersection go right and hug the wall around over the bridge, buy all 3 first aid books at 26,58", x = 27, y = 49, zone = "Arathi Highlands" },
|
||||
[18] = { str = "Continue heading to Hillsbrad " },
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,402 @@
|
||||
--[[--------------------------------------------------
|
||||
003_Alliance_30to40.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 003 From Lvl 30 to Lvl 40
|
||||
1.04.1
|
||||
-- First Release
|
||||
Alliance's Guide
|
||||
from level 30 to lever 40
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_003_Alliance_30to40 = {
|
||||
-----------30-31 Hillsbrad Foothills
|
||||
--[301] = {
|
||||
[3031] = {
|
||||
title = "30-31 Hillsbrad Foothills",
|
||||
--n = "30-31 Hillsbrad Foothills",
|
||||
--pID = 210, nID = 302,
|
||||
--itemCount = 13,
|
||||
items = {
|
||||
[1] = { str = "30-31 Hillsbrad Foothills" },
|
||||
[2] = { str = "Run into southshore at 49,52 and grab the FP", x = 49, y = 52, zone = "Hillsbrad Foothills" },
|
||||
[3] = { str = "Stop at the barn east of the FP, accept Costly Menace" },
|
||||
[4] = { str = "Go to the house in front of the barn, turn in Southshore SKIP the next part " },
|
||||
[5] = { str = "Go in front of the Inn, accept Hints of a New Plague " },
|
||||
[6] = { str = "Go in the Inn, make it your home, then accept Down the Coast ." },
|
||||
[7] = { str = "In front of the town hall, accept Crushridge Bounty " },
|
||||
[8] = { str = "Go in the town hall, accept Syndicate Assassins" },
|
||||
[9] = { str = "Go just SW of Southshore and do Down the Coast on the shore, killing murlocs. Turn it in at the Inn when you’re done, accept Farren's Proof pt.1" },
|
||||
[10] = { str = "Do Farren's Proof pt.1 again on the shore, if I’m not 31 by the time I’m done getting heads, I grind till I am." },
|
||||
[11] = { str = "Go back to the Inn, turn in Farren's Proof pt.1 accept Farren’s Proof pt.2 hand that in just out front of the Inn, accept Farren’s Proof pt.3 Go back into the Inn, hand it in accept Stormwind ho! " },
|
||||
[12] = { str = "Go do Stormwind ho! just SE of the dock now, kill the naga along the shore." },
|
||||
[13] = { str = "Go back to the Inn hand in Stormwind ho! , accept Reassignment " },
|
||||
}
|
||||
},
|
||||
|
||||
-----------31-31 Alterac Mountains
|
||||
--[302] = {
|
||||
[3131] = {
|
||||
title = "31-31 Alterac Mountains",
|
||||
--n = "31-31 Alterac Mountains",
|
||||
--pID = 301, nID = 303,
|
||||
--itemCount = 8,
|
||||
items = {
|
||||
[1] = { str = "31-31 Alterac Mountains" },
|
||||
[2] = { str = "Run up into Alterac Mountains near the AV entrance around 64,38 and kill lions for Costly Menace They’re all along the southern border near AV. I usually get all mine in front and West of AV", x = 64, y = 38, zone = "Alterac Mountains" },
|
||||
[3] = { str = "Go east of AV and do Syndicate Assassins at the camp around 55,67. There is a camp close to AV but this one has a quest you can grab near the tents on the table. Clear the camp and touch the syndicate document, accept Foreboding Plans and Encrypted Letter", x = 55, y = 67, zone = "Alterac Mountains" },
|
||||
[4] = { str = "Hearth to Southshore" },
|
||||
[5] = { str = "Go into the town hall, turn in Syndicate Assassins and Foreboding Plans accept Noble Deaths " },
|
||||
[6] = { str = "Stop at the house North of the Inn, turn in Encrypted Letter accept Letter to Stormpike" },
|
||||
[7] = { str = "Go to the barn and turn in Costly Menace" },
|
||||
[8] = { str = "Fly to Refuge Point" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------31-32 Arathi Highlands
|
||||
--[303] = {
|
||||
[3132] = {
|
||||
title = "31-32 Arathi Highlands",
|
||||
--n = "31-32 Arathi Highlands",
|
||||
--pID = 302, nID = 304,
|
||||
--itemCount = 10,
|
||||
items = {
|
||||
[1] = { str = "31-32 Arathi Highlands" },
|
||||
[2] = { str = "Accept Northfold Manor grind to it at 33,27 I grind here until I’m 32", x = 33, y = 27, zone = "Arathi Highlands" },
|
||||
[3] = { str = "Hearth to Southshore, Fly to Refuge point, turn in Northfold Manor Fly to IF" },
|
||||
[4] = { str = "Go to the hall of explorers at 69,20 in IF accept Reclaimers' Business in Desolace then go turn in Letter to Stormpike accept Further Mysteries ", x = 69, y = 20, zone = "Arathi Highlands" },
|
||||
[5] = { str = "Accept The Brassbolts Brothers in The Hall of Arms at 72,93 then get new Skills", x = 72, y = 93, zone = "Arathi Highlands" },
|
||||
[6] = { str = "Make IF your home at 18,51 Buy some Bloodstone Ore for a quest later in STV. If there is none check the AH in Booty Bay", x = 18, y = 51, zone = "Arathi Highlands" },
|
||||
[7] = { str = "Fly to SW" },
|
||||
[8] = { str = "Go to the Keep at 72,15 and hand in Reassignment", x = 72, y = 15, zone = "Stormwind City" },
|
||||
[9] = { str = "Go to 39,27 in the Cathedral and hand in Cleansing the Eye", x = 39, y = 27, zone = "Stormwind City" },
|
||||
[10] = { str = "Fly to Duskwood, then run to 44,66 and go south into STV", x = 44, y = 66, zone = "Duskwood" }
|
||||
}
|
||||
},
|
||||
|
||||
-----------32-32 Stranglethorn Vale
|
||||
--[304] = {
|
||||
[3232] = {
|
||||
title = "32-32 Stranglethorn Vale",
|
||||
--n = "32-32 Stranglethorn Vale",
|
||||
--pID = 303, nID = 305,
|
||||
--itemCount = 19,
|
||||
items = {
|
||||
[1] = { str = "32-32 Stranglethorn Vale" },
|
||||
[2] = { str = "Run to the Rebel Camp at 37,3 its just west after you enter.", x = 37, y = 3, zone = "Stranglethorn Vale" },
|
||||
[3] = { str = "Accept The Second Rebellion and Bad Medicine" },
|
||||
[4] = { str = "Then Accept Krazek's Cookery" },
|
||||
[5] = { str = "Go to Nessingway’s at 35,10 and accept Welcome to the Jungle then turn it in behind you. This opens the 3 quest givers here.", x = 35, y = 10, zone = "Stranglethorn Vale" },
|
||||
[6] = { str = "Now Accept Raptor Mastery pt.1 Panther Mastery pt.1 Tiger Mastery pt.1 Don’t accept the page-collecting quest until you have all the pages." },
|
||||
[7] = { str = "Do Panther Mastery pt.1 & Tiger Mastery pt.1 Tigers are just behind Nessingway’s, and the Panthers are to the east some but centralized around 41,9", x = 41, y = 9, zone = "Stranglethorn Vale" },
|
||||
[8] = { str = "Go to 44,10 and do The Second Rebellion and the Kurzen supply crate at 44,9 in front of the Inn for Bad Medicine the remedies are a low drop from medicine men.", x = 44, y = 10, zone = "Stranglethorn Vale" },
|
||||
[9] = { str = "Run back up to the rebel camp at 37,3 Turn in The Second Rebellion and Bad Medicine SKIP Special Forces.", x = 37, y = 3, zone = "Stranglethorn Vale" },
|
||||
[10] = { str = "Go back to Nessingway’s at 35,10 and hand in Panther Mastery pt.1 & Tiger Mastery pt.1 accept Panther Mastery pt.2 & Tiger Mastery pt.2.", x = 35, y = 10, zone = "Stranglethorn Vale" },
|
||||
[11] = { str = "Kill Stranglethorn Tigers for around 29,10 for Tiger Mastery pt.2 and the Panthers around 28,12 for Panther Mastery pt.2.", x = 29, y = 10, zone = "Stranglethorn Vale" },
|
||||
[12] = { str = "Kill Stranglethorn Raptors for 26,15 Raptor Mastery pt.1", x = 26, y = 15, zone = "Stranglethorn Vale" },
|
||||
[13] = { str = "Go back to Nessingway’s at 35,10 and turn in Tiger Mastery pt.2 , Panther Mastery pt.2 , and Raptor Mastery pt.1 . Accept Tiger Mastery pt.3 , Panther Mastery pt.3 and Raptor Mastery pt.2 ", x = 35, y = 10, zone = "Stranglethorn Vale" },
|
||||
[14] = { str = "Run to Booty Bay and get the FP." },
|
||||
[15] = { str = "Turn in Krazek's Cookery on the top floor of the inn, accept and hand back in (the bloodstone ores) Favor for Krazek then accept Return to Corporal Kaleb (this quest gives you your first helm) also accept Investigate the Camp and Supplies to Private Thorsen " },
|
||||
[16] = { str = "Get on the Boat to Rachet" },
|
||||
[17] = { str = "Grab the FP" },
|
||||
[18] = { str = "Now for a little bit of a run through horde territory. Run all the way south in the barrens to the great lift and take it down into 1k needles. Jump off if you get attacked." },
|
||||
[19] = { str = "Run all the way south in the barrens to the great lift and take it down into 1k needles. Jump off if you get attacked." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------32-33 Thousand Needles (Shimmering Flats)
|
||||
--[305] = {
|
||||
[3233] = {
|
||||
title = "32-33 Thousand Needles (Shimmering Flats)",
|
||||
--n = "32-33 Thousand Needles (Shimmering Flats)",
|
||||
--pID = 304, nID = 306,
|
||||
--itemCount = 19,
|
||||
items = {
|
||||
[1] = { str = "32-33 Thousand Needles (Shimmering Flats)" },
|
||||
[2] = { str = "Now Get the FP on the west side of this zone at 8,18, it’s just inside Feralas. This will save a lot of time later on.", x = 8, y = 18, zone = "Thousand Needles" },
|
||||
[3] = { str = "You should be close to level 33 so grind to it on your way to Shimmering Flats." },
|
||||
[4] = { str = "Go to 78,77 and turn in The Brassbolts Brothers accept Hardened Shells and Salt Flat Venom ", x = 78, y = 77, zone = "Thousand Needles" },
|
||||
[5] = { str = "Go a little beside these guys and grab Rocket Car Parts , Wharfmaster Dizzywig and Hemet Nesingwary" },
|
||||
[6] = { str = "Go east to 80,75 and accept Load Lightening", x = 80, y = 75, zone = "Thousand Needles" },
|
||||
[7] = { str = "Go to 81,77 and accept A Bump in the Road ", x = 81, y = 77, zone = "Thousand Needles" },
|
||||
[8] = { str = "Now the car parts for Rocket Car Parts are scattered all over here, so grab them as you quest. The Buzzards for Load Lightening are all over as well so kill one if you see it." },
|
||||
[9] = { str = "Start off by going south and killing gazers and crystalhide at 76,87 for A Bump in the Road ", x = 76, y = 87, zone = "Thousand Needles" },
|
||||
[10] = { str = "Kill scorpions at 71,74 and north of here for Salt Flat Venom ", x = 71, y = 74, zone = "Thousand Needles" },
|
||||
[11] = { str = "Kill Basilisks around 73,59 for A Bump in the Road", x = 73, y = 59, zone = "Thousand Needles" },
|
||||
[12] = { str = "Kill Turtles at 82,54 for Hardened Shells", x = 82, y = 54, zone = "Thousand Needles" },
|
||||
[13] = { str = "Stop at 86,66 and do Load Lightening", x = 86, y = 66, zone = "Thousand Needles" },
|
||||
[14] = { str = "Run back to 77,77 turn in Rocket Car Parts", x = 77, y = 77, zone = "Thousand Needles" },
|
||||
[15] = { str = "Go to the 2 npc’s next east of here and hand in Salt Flat Venom and Hardened Shells then accept Martek the Exiled" },
|
||||
[16] = { str = "Run east to 80,75 turn in Load Lightening accept Goblin Sponsorship pt.1", x = 80, y = 75, zone = "Thousand Needles" },
|
||||
[17] = { str = "Go to 81,77 and turn in A Bump in the Road", x = 81, y = 77, zone = "Thousand Needles" },
|
||||
[18] = { str = "Run south into Tanaris and Grab the FP at Gadgetzan" },
|
||||
[19] = { str = "Hearth back to IF and fly to Menethil Harbor, get on the boat to Theramore, Get FP and either fly to Stonetalon Mountains or go back and reboat to Darkshore." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------33-33 Stonetalon Mountains
|
||||
--[306] = {
|
||||
[3333] = {
|
||||
title = "33-33 Stonetalon Mountains",
|
||||
--n = "33-33 Stonetalon Mountains",
|
||||
--pID = 305, nID = 307,
|
||||
--itemCount = 2,
|
||||
items = {
|
||||
[1] = { str = "33-33 Stonetalon Mountains" },
|
||||
[2] = { str = "Accept Reclaiming the Charred Vale in front of the moonwell then go do it in the Charred Vale at 32,66 while going towards Desolace ", x = 32, y = 66, zone = "Stonetalon Mountains" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------33-35 Desolace
|
||||
--[307] = {
|
||||
[3335] = {
|
||||
title = "33-35 Desolace",
|
||||
--n = "33-35 Desolace",
|
||||
--pID = 306, nID = 308,
|
||||
--itemCount = 38,
|
||||
items = {
|
||||
[1] = { str = "33-35 Desolace" },
|
||||
[2] = { str = "Make Nijel’s Point your home then fly back to Stonetalon and hand in Reclaiming the Charred Vale SKIP the next part." },
|
||||
[3] = { str = "Hearth back to Desolace" },
|
||||
[4] = { str = "Go south of the Inn, hand in Reclaimers' Business in Desolace accept Reagents for Reclaimers Inc pt.1 and The Karnitol Shipwreck pt.1 " },
|
||||
[5] = { str = "I SKIP both of the faction centaur quests. It’s just a useless grind for 2 quests that aren’t worth it." },
|
||||
[6] = { str = "Accept Centaur Bounty" },
|
||||
[7] = { str = "Go south a little bit more and accept Vahlarriel's Search pt.1" },
|
||||
[8] = { str = "Run west to 56,17 Vahlarriel's Search pt.1 accept Vahlarriel’s Search pt.2", x = 56, y = 17, zone = "Desolace" },
|
||||
[9] = { str = "Run east to Sargeron around 75,20 and kill the demons for Reagents for Reclaimers Inc pt.1", x = 75, y = 20, zone = "Desolace" },
|
||||
[10] = { str = "Run back to Nijel’s, hand in Vahlarriel’s Search pt.2 accept Vahlarriel’s Search pt.3" },
|
||||
[11] = { str = "Run up a bit more, turn in Reagents for Reclaimers Inc pt.1 accept Reagents for Reclaimers Inc pt.2" },
|
||||
[12] = { str = "Now start grinding on the scorps and other stuff for Reagents for Reclaimers Inc pt.2 as you head to 62,38 and accept Bone Collector since the scorps are a low drop rate just kill them as you’re running around", x = 62, y = 38, zone = "Desolace" },
|
||||
[13] = { str = "Run east until you’re at kolkar village around 72,45. Kill them for Centaur Bounty If you’re not 34 when done with this, grind until you are", x = 72, y = 45, zone = "Desolace" },
|
||||
[14] = { str = "Grind down to 60,61 and accept Kodo Roundup This is a unique quest where you tame a kodo at the GY then bring it back until you have 5.", x = 60, y = 61, zone = "Desolace" },
|
||||
[15] = { str = "If you see the pack of aged kodo’s running around kill 3 of them for Reagents for Reclaimers Inc pt.2 if not you can find some inside the kodo graveyard." },
|
||||
[16] = { str = "Go to the Kodo Graveyard around 51,58. Do Bone Collector everytime you come to pick up a kodo for roundup.", x = 51, y = 58, zone = "Desolace" },
|
||||
[17] = { str = "Once you’re done with Kodo Roundup hand it in and run NW of the GY towards the water. Killing scorps if you still need them." },
|
||||
[18] = { str = "Grab Sceptre of Light at 38,27 near the big tower", x = 38, y = 27, zone = "Desolace" },
|
||||
[19] = { str = "Go south on the beach to 36,30 and finish The Karnitol Shipwreck pt.1 accept The Karnitol Shipwreck pt.2 then accept Claim Rackmore's Treasure! from Rackmore’s log. If your quest log is full drop centaur bounty.", x = 36, y = 30, zone = "Desolace" },
|
||||
[20] = { str = "Kill Drysnaps in the waters right here for the silver key of Claim Rackmore's Treasure! and The Slitherblades just North of here for the golden key." },
|
||||
[21] = { str = "Run up to Thunder Axe Fortress at 56,29 and go in the main building in the center and turn in Vahlarriel’s Search pt.3 at 54,26 accept Search for Tyranis", x = 54, y = 26, zone = "Desolace" },
|
||||
[22] = { str = "Run out and right, kill a seer up in a tower for Sceptre of Light" },
|
||||
[23] = { str = "Go to the building west of the entrance at 53,29 kill Tyranis Malem for Search for Tyranis then turn it back in inside the main building. Clear the way in the main building to the right because an escort is next.", x = 53, y = 29, zone = "Desolace" },
|
||||
[24] = { str = "Accept the escort quest Return to Vahlarriel DON’T attack anything unless it hits or or she’ll ignore it and keep walking. The reason it seems is melee just follow her, only the mages can hit her to start combat." },
|
||||
[25] = { str = "Go to 62,38 and turn in Bone Collector", x = 62, y = 38, zone = "Desolace" },
|
||||
[26] = { str = "Run back to 38,27 and turn in Sceptre of Light accept Book of the Ancients", x = 38, y = 27, zone = "Desolace" },
|
||||
[27] = { str = "Swim all the way NW on the map to Ranazjar Isle and open the chest at 30,9 for Claim Rackmore's Treasure!", x = 30, y = 9, zone = "Desolace" },
|
||||
[28] = { str = "Go to the back of the island and clear all around the serpent statue at 28,7. You’re gonna do Book of the Ancients This quest bugs if you do not click the gem in your inventory and then on the statue. Don’t just click on the statue. He’s 38 but super easy.", x = 28, y = 7, zone = "Desolace" },
|
||||
[29] = { str = "Swim back to 38,27 and turn in Book of the Ancients", x = 38, y = 27, zone = "Desolace" },
|
||||
[30] = { str = "Hearth to Nijel’s" },
|
||||
[31] = { str = "Go south of the Inn and turn in Reagents for Reclaimers Inc pt.2 SKIP pt.3 for now, and The Karnitol Shipwreck pt.2 SKIP the rest." },
|
||||
[32] = { str = "Go south a bit more, turn in Centaur Bounty " },
|
||||
[33] = { str = "Finally turn in Return to Vahlarriel" },
|
||||
[34] = { str = "You should be within 2 bars to 35 now. I grind down on the Centaurs at Gelkis Village at 37,80 until 35", x = 37, y = 80, zone = "Desolace" },
|
||||
[35] = { str = "Head south into Feralas to get the FP, this will again save more time later on." },
|
||||
[36] = { str = "Get on the Boat at 43,42 and grab the FP in Feathermoon. Fly to Theramore, then to Rachet.", x = 43, y = 42, zone = "Desolace" },
|
||||
[37] = { str = "Go to the engineer hut at 62,36 and hand in Goblin Sponsorship pt.1 accept Goblin Sponsorship pt.2 Then run out on the dock and hand in Wharfmaster Dizzywig accept Parts for Kravel ", x = 62, y = 36, zone = "Desolace" },
|
||||
[38] = { str = "Get on the boat to Booty Bay" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------35-36 Stranglethorn Vale
|
||||
--[308] = {
|
||||
[3536] = {
|
||||
title = "35-36 Stranglethorn Vale",
|
||||
--n = "35-36 Stranglethorn Vale",
|
||||
--pID = 307, nID = 309,
|
||||
--itemCount = 38,
|
||||
items = {
|
||||
[1] = { str = "35-36 Stranglethorn Vale" },
|
||||
[2] = { str = "Hand in Goblin Sponsorship pt.2 as you get off the boat, accept Goblin Sponsorship pt.3" },
|
||||
[3] = { str = "Go in the Inn make BB your home, Accept Singing Blue Shards" },
|
||||
[4] = { str = "Accept Hostile Takeover and Bloodscalp Ears" },
|
||||
[5] = { str = "Accept The Haunted Isle and turn it in just outside the door, accept The Stone of the Tides Then turn in Goblin Sponsorship pt.3 accept Goblin Sponsorship pt.4 " },
|
||||
[6] = { str = "Go into the shop Tan-Your-Hide Leatherworks and accept Supply and Demand (it’s down the ramp from the FP)" },
|
||||
[7] = { str = "Go around 48,21 and Kill Shadowmaw Panthers for Panther Mastery pt.3", x = 48, y = 21, zone = "Stranglethorn Vale" },
|
||||
[8] = { str = "Run west to the Venture Co. Base Camp at 43,18 and Kill the goblins here for Hostile Takeover while you climb the Operations Tower behind the base for Goblin Sponsorship pt.4 You’re going to climb it and kill Foreman Cozzle for his key.", x = 43, y = 18, zone = "Stranglethorn Vale" },
|
||||
[9] = { str = "If you still don’t have all the crystals kill the goblins until you do, then enter the tiny shack next to the base at 43,20 and open the chest to get the blueprints for Goblin Sponsorship pt.4", x = 43, y = 20, zone = "Stranglethorn Vale" },
|
||||
[10] = { str = "Kill Lashtail Raptors around 37,22 for Raptor Mastery pt.2", x = 37, y = 22, zone = "Stranglethorn Vale" },
|
||||
[11] = { str = "Kill Elter Tigers around 33,18 for Tiger Mastery pt.3 ", x = 33, y = 18, zone = "Stranglethorn Vale" },
|
||||
[12] = { str = "Run towards Nessingways and kill the crocs in the river around it for Supply and Demand" },
|
||||
[13] = { str = "Go to Nessingways and turn in Tiger Mastery pt.3 , Panther Mastery pt.3 , Raptor Mastery pt.2 , and Hemet Nesingwary , Accept Tiger Mastery pt.4 Panther Mastery pt.4 and Raptor Mastery pt.3 " },
|
||||
[14] = { str = "Run back south to the top of the hill at 32,17 and kill Sin’Dall for Tiger Mastery pt.4 then turn it back in at Nessingways", x = 32, y = 17, zone = "Stranglethorn Vale" },
|
||||
[15] = { str = "Go up to the rebel camp at 37,3 and hand in Supplies to Private Thorsen , If he’s not here look south of the camp, if you save him when he patrols you can also get Jungle Secrets then u turn that in at the camp and get Bookie Herod ", x = 37, y = 3, zone = "Stranglethorn Vale" },
|
||||
[16] = { str = "Hand in Return to Corporal Kaleb get your helm" },
|
||||
[17] = { str = "Accept Special Forces " },
|
||||
[18] = { str = "Go to the Inn looking building at 43,9 touch the book on the 2nd floor and hand in Bookie Herod accept The Hidden Key ", x = 43, y = 9, zone = "Stranglethorn Vale" },
|
||||
[19] = { str = "Go in the cave at 45,7 and kill the mobs in here for Special Forces and make your way to the chest for Bookie Herod , it’s down the first fork, only 1 level down then in the boxes. Accept The Spy Revealed! (Easy from here)", x = 45, y = 7, zone = "Stranglethorn Vale" },
|
||||
[20] = { str = "Now grind back out since you should be close to 36. Once your out go back to the rebel camp." },
|
||||
[21] = { str = "Hand in Special Forces SKIP the next part" },
|
||||
[22] = { str = "Hand in The Spy Revealed! accept Patrol Schedules turn around and hand that in and accept Report to Doren then turn around again and hand that back in (told you it was easy)" },
|
||||
[23] = { str = "You should definitely be 36 by now. We’ll get skills soon" },
|
||||
[24] = { str = "Go south toward the GY, then go west north of the river and kill basalisks for Singing Blue Shards if you don’t get them all now don’t worry there is more south." },
|
||||
[25] = { str = "Kill Bloodscalp at 29,19 for Bloodscalp Ears You’ll probably have to clear it 2-3 times. They’re easy", x = 29, y = 19, zone = "Stranglethorn Vale" },
|
||||
[26] = { str = "Kill Basalisks to finish Singing Blue Shards just west of here above the shore." },
|
||||
[27] = { str = "Run south on the Island till it says complete for The Stone of the Tides Go back up and kill basalisks if needed." },
|
||||
[28] = { str = "Hearth to BB" },
|
||||
[29] = { str = "Turn in Singing Blue Shards SKIP the next for now" },
|
||||
[30] = { str = "Go upstairs turn in Investigate the Camp , Bloodscalp Ears" },
|
||||
[31] = { str = "Go just outside, turn in The Stone of the Tides and Goblin Sponsorship pt.4 Accept Water Elementals and Goblin Sponsorship pt.5 " },
|
||||
[32] = { str = "Go into the shop Tan-Your-Hide Leatherworks and turn in Supply and Demand (it’s down the ramp from the FP) accept Some assembly required " },
|
||||
[33] = { str = "I’m half way to 37 at this point" },
|
||||
[34] = { str = "Fly to IF get new skills then fly to Menethil Harbor, make it your home, and boat to Theramore" },
|
||||
[35] = { str = "If you’re first aid is at 225 go do Triage then fly to Gadgetzan" },
|
||||
[36] = { str = "Run out to Shimmering Flats at 77,77 and turn in Parts for Kravel accept Delivery to the Gnomes then turn around and hand it in", x = 77, y = 77, zone = "Stranglethorn Vale" },
|
||||
[37] = { str = "Go a little East and hand in Goblin Sponsorship pt.5 accept The Eighteenth Pilot then hand it in 2 feet away, accept Razzeric's Tweaking" },
|
||||
[38] = { str = "Grab The Rumormonger at 77,77 then Hearth to Menethil Harbor", x = 77, y = 77, zone = "Stranglethorn Vale" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------36-37 Alterac Mountains
|
||||
--[309] = {
|
||||
[3637] = {
|
||||
title = "36-37 Alterac Mountains",
|
||||
--n = "36-37 Alterac Mountains",
|
||||
--pID = 308, nID = 310,
|
||||
--itemCount = 10,
|
||||
items = {
|
||||
[1] = { str = "36-37 Alterac Mountains" },
|
||||
[2] = { str = "Go to the Town Hall and turn in Further Mysteries accept Dark Council and Noble Deaths" },
|
||||
[3] = { str = "Make Southshore your home" },
|
||||
[4] = { str = "Run into Alterac Mountains to 47,55 and kill ogres for Crushridge Bounty", x = 47, y = 55, zone = "Alterac Mountains" },
|
||||
[5] = { str = "Grind up to Strahnbrad around 60,43 and kill the syndicate and grab their rings for Noble Deaths You can also kill shadow mages here for Dark Council which is easier than killing them in the camps later", x = 60, y = 43, zone = "Alterac Mountains" },
|
||||
[6] = { str = "Grind your way west to to the house at 39,16 and kill Nagaz for Dark Council . I take out the first camp you come across then grind anything in my way west that’s not in a camp. ", x = 39, y = 16, zone = "Alterac Mountains" },
|
||||
[7] = { str = "You wanna be at least 2 bars from 37, if so hearth to SS" },
|
||||
[8] = { str = "Run across from the Inn, turn in Crushridge Bounty SKIP the next" },
|
||||
[9] = { str = "Go in the Inn, turn in Dark Council and Noble Deaths" },
|
||||
[10] = { str = "Fly to Arathi Highlands" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------37-38 Arathi Highlands
|
||||
--[310] = {
|
||||
[3738] = {
|
||||
title = "37-38 Arathi Highlands",
|
||||
--n = "37-38 Arathi Highlands",
|
||||
--pID = 309, nID = 311,
|
||||
--itemCount = 28,
|
||||
items = {
|
||||
[1] = { str = "37-38 Arathi Highlands" },
|
||||
[2] = { str = "Accept Worth Its Weight In Gold" },
|
||||
[3] = { str = "Run to 62,33 touch the crystal and accept The Princess Trapped", x = 62, y = 33, zone = "Arathi Highlands" },
|
||||
[4] = { str = "Go just east of Hammerfall to 80,40. (Load up on bloodstone ore here, you can sell it for a few g per 4 in BB) This is a tree, behind it is the path up to the cave to kill kobolds for The Princess Trapped If you get them all before the end of the cave you have to continue to the end to hand it in by touching Iridescent Shards and accept Stones of Binding ", x = 80, y = 40, zone = "Arathi Highlands" },
|
||||
[5] = { str = "You should be just about ¼ through this level when you exit the cave." },
|
||||
[6] = { str = "Go to the circle of east binding, just west of Hammerfall at 80,36 and grab the cresting key from the rock.", x = 80, y = 36, zone = "Arathi Highlands" },
|
||||
[7] = { str = "Stop at 60,53 and hand in Hints of a New Plague? Pt.1 accept Hints of a New Plague? Pt.2 If you see the courier kill him. Simply send your pet in get aggro, when he’s hurt some multi shot some off of him. He’s easy, just feign and let pet die once courier is dead. The courier walks between refuge and tarren mill.", x = 60, y = 53, zone = "Arathi Highlands" },
|
||||
[8] = { str = "Kill the trolls all around the lake at 67,69 for Worth Its Weight In Gold you can get tusks and medicine bags off the guys here, to get the dagger you have to kill Shadow Hunters in the cave at 68,74", x = 68, y = 74, zone = "Arathi Highlands" },
|
||||
[9] = { str = "Go to the circle of outer binding at 52,50 and grab the thundering key from the rock.", x = 52, y = 50, zone = "Arathi Highlands" },
|
||||
[10] = { str = "Go to refuge point and hand in Worth Its Weight In Gold this opens up Wand Over Fist from another NPC" },
|
||||
[11] = { str = "Go do Wand Over Fist by killing Coldrage in the cave at 53,77 (follow the left path) run back to Refuge hand it in, SKIP the rest", x = 53, y = 77, zone = "Arathi Highlands" },
|
||||
[12] = { str = "Go to the circle of west binding at 25,30 and grab the burning key from the rock.", x = 25, y = 30, zone = "Arathi Highlands" },
|
||||
[13] = { str = "I found the courier at this point on the road (varies since he travels)" },
|
||||
[14] = { str = "Go to the circle of inner binding at 36,57 and turn in Stones of Binding on the rock, SKIP the rest.", x = 36, y = 57, zone = "Arathi Highlands" },
|
||||
[15] = { str = "Run SW of here, there is a path that leads behind Stromgarde at 31,64 follow it around to the cave path at 21,75", x = 31, y = 64, zone = "Arathi Highlands" },
|
||||
[16] = { str = "Swim over to the ship and accept Land HO! then turn around and hand it in." },
|
||||
[17] = { str = "Accept Deep Sea Salvage" },
|
||||
[18] = { str = "Go by the fire accept Drowned Sorrows and Sunken Treasure pt.1 " },
|
||||
[19] = { str = "Do Sunken Treasure pt.1 by escorting him right behind you in the cave. Turn it in, accept Sunken Treasure pt.2" },
|
||||
[20] = { str = "Go down south near the sunken ships, around 24,84 and do Sunken Treasure pt.2 (use goggles to find them easy), Drowned Sorrows (nagas), and Deep Sea Salvage (2 on each ship)", x = 24, y = 84, zone = "Arathi Highlands" },
|
||||
[21] = { str = "Turn in Deep Sea Salvage on the dock" },
|
||||
[22] = { str = "Turn in Drowned Sorrows next to the fire, then Sunken Treasure pt.2 accept Sunken Treasure pt.3" },
|
||||
[23] = { str = "Hand that in on the dock accept Sunken Treasure pt.4" },
|
||||
[24] = { str = "Run back towards Go’Shek Farm, if you haven’t found the courier yet abandon quest and hearth to SS. If so go to 60,53 and hand in Hints of a New Plague? Pt.2 accept Hints of a New Plague? Pt.3 then turn it right back in accept Hints of a New Plague? Pt.4", x = 60, y = 53, zone = "Arathi Highlands" },
|
||||
[25] = { str = "Escort her when done turn it back in and accept “Hints of a New Plague? Pt.5” Grind until youre 3500 to 38" },
|
||||
[26] = { str = "Hearth to Southshore" },
|
||||
[27] = { str = "Turn in “Hints of a New Plague? Pt.5” just outside the Inn" },
|
||||
[28] = { str = "Fly to Stormwind for new skills and get the quest Morgan Stern from Angus Stern at 41 89, then fly to Menethil and boat to Theramore", x = 41, y = 89, zone = "Stormwind" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------38-38 Dustwallow Marsh
|
||||
--[311] = {
|
||||
[3838] = {
|
||||
title = "38-38 Dustwallow Marsh",
|
||||
--n = "38-38 Dustwallow Marsh",
|
||||
--pID = 310, nID = 312,
|
||||
--itemCount = 30,
|
||||
items = {
|
||||
[1] = { str = "38-38 Dustwallow Marsh" },
|
||||
[2] = { str = "Run up near the Inn, accept “They Call Him Smiling Jim”" },
|
||||
[3] = { str = "Go in the Inn, accept “Mudrock Soup and Bugs” and make Theramore your home. " },
|
||||
[4] = { str = "Go to the 2nd floor of the castle behind the Inn, not the tower, turn in “They Call Him Smiling Jim” This gives you hints about some quests at the old Inn near the Barrens." },
|
||||
[5] = { str = "Buy 3 soothing spices from the trade supplies person in the houst at 66,51 (for upcoming quest) ", x = 66, y = 51, zone = "Dustwallow Marsh" },
|
||||
[6] = { str = "Just as you exit Theramore, go right and kill Mudrock turtles along the shore for “Mudrock Soup and Bugs”" },
|
||||
[7] = { str = "Go to the house at 55,26 and accept “Soothing Spices” then turn it right back in, accept “Jarl Needs eyes”", x = 55, y = 26, zone = "Dustwallow Marsh" },
|
||||
[8] = { str = "Touch the mound of dirt beside the house, accept “The Orc Report”" },
|
||||
[9] = { str = "Run over to Darkmist Cavern at 32,23 and kill spiders inside and outside for “Jarl Needs eyes” They drop 1-2 every kill", x = 32, y = 23, zone = "Dustwallow Marsh" },
|
||||
[10] = { str = "Stop at 35,38 and grab “Hungry!”", x = 35, y = 38, zone = "Dustwallow Marsh" },
|
||||
[11] = { str = "Go to 29,47, the shady rest inn, and grab these 3 quests, touch the hoofrints just out front “Suspicious Hoofprints” the badge on the board laying on the floorboards (it’s a tiny badge) “Lieutenant Paval Reethe pt.1” and the shield over the fireplace “The Black Shield pt.1” ", x = 29, y = 47, zone = "Dustwallow Marsh" },
|
||||
[12] = { str = "Run over to 54,56 and open the shipping crate for “Razzeric's Tweaking”", x = 54, y = 56, zone = "Dustwallow Marsh" },
|
||||
[13] = { str = "Hearth to Theramore" },
|
||||
[14] = { str = "Turn in “Mudrock Soup and Bugs” in front of you, accept “… and bugs” " },
|
||||
[15] = { str = "Go to the docks at the tower and turn in “The Orc Report” accept “Captain Vimes” Run in the castle behind the Inn and turn it in" },
|
||||
[16] = { str = "Turn in “Lieutenant Paval Reethe pt.1” accept “Lieutenant Paval Reethe pt.2” " },
|
||||
[17] = { str = " Turn in “The Black Shield pt.1” accept “The Black Shield pt.2” " },
|
||||
[18] = { str = "Turn in “Suspicious Hoofprints” accept " },
|
||||
[19] = { str = "Turn around and hand in “Lieutenant Paval Reethe pt.2” accept “Daelin's Men” then turn around hand it in accept “The Deserters pt.1”" },
|
||||
[20] = { str = "Go to the blacksmith house, turn in “The Black Shield pt.2” accept “The Black Shield pt.3” go turn it in back up in the castle" },
|
||||
[21] = { str = " Run out to 55,26 and turn in “Jarl Needs eyes” SKIP the next", x = 55, y = 26, zone = "Dustwallow Marsh" },
|
||||
[22] = { str = "Go just NE of here and kill murlocs for “Hungry!”" },
|
||||
[23] = { str = "Stop at 46,17 and clear some raptors until you’re 50% or more into 39, then accept “Stinky's Escape” just follow him, and kill what attacks him. Really easy.", x = 46, y = 17, zone = "Dustwallow Marsh" },
|
||||
[24] = { str = "Stop at 35,38 turn in “Hungry!”", x = 35, y = 38, zone = "Dustwallow Marsh" },
|
||||
[25] = { str = "Go to the tower at 35,53 and attack Balos Jacken, at ¼ life he’ll become friendly and then turn in “The Deserters pt.1” accept “The Deserters pt.2” ", x = 35, y = 53, zone = "Dustwallow Marsh" },
|
||||
[26] = { str = "Die so you end up near Theramore" },
|
||||
[27] = { str = "Turn in “Stinky's Escape” in the Inn " },
|
||||
[28] = { str = "Go up in the castle, turn in “The Deserters pt.2”" },
|
||||
[29] = { str = "Fly to Gadgetzan and run up to the Shimmering Flats to 80,76 turn in “Razzeric's Tweaking” accept “Safety First pt.1” turn it in in Gadget and accept “Safety First pt.2” then run back to the flats and hand it in", x = 80, y = 76, zone = "Dustwallow Marsh" },
|
||||
[30] = { str = "Hearth to Theramore and fly to Rachet, get on the boat to BB" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------38-40 Stranglethorn Vale
|
||||
--[312] = {
|
||||
[3840] = {
|
||||
title = "38-40 Stranglethorn Vale",
|
||||
--n = "38-40 Stranglethorn Vale",
|
||||
--pID = 311, nID = 401,
|
||||
--itemCount = 38,
|
||||
items = {
|
||||
[1] = { str = "38-40 Stranglethorn Vale" },
|
||||
[2] = { str = "Run towards the Inn, accept “The Bloodsail Buccaneers pt.1” halfway" },
|
||||
[3] = { str = "Go in the building next to the half boat upside down, accept “Scaring Shaky”" },
|
||||
[4] = { str = "Go in the Inn, make it your home, accept “Venture Company Mining”" },
|
||||
[5] = { str = "Go upstairs, turn in “The Rumormonger” accept “Dream Dust In the Swamp” and “Skullsplitter Tusks”" },
|
||||
[6] = { str = "Go just outside, hand in “Sunken Treasure pt.4” SKIP the next" },
|
||||
[7] = { str = "Go to around 33,39 and kill raptors for “Raptor Mastery pt.3”", x = 33, y = 39, zone = "Stranglethorn Vale" },
|
||||
[8] = { str = "Kill Snapjaw Crocolisks from the stream at 38,30 to the lake at 41,19 for “Some assembly required”", x = 38, y = 30, zone = "Stranglethorn Vale" },
|
||||
[9] = { str = "Go to the Island at 20,23 and kill elementals for “Water Elementals” You should be close to 39 by now, either grind on the elementals or raptors and basalisks around 33,39", x = 20, y = 23, zone = "Stranglethorn Vale" },
|
||||
[10] = { str = "Once you’re 39, grind your way east to the road then to 41,41 and kill the goblins for “Venture Company Mining”", x = 41, y = 41, zone = "Stranglethorn Vale" },
|
||||
[11] = { str = "Run up to the camps around 42,37 and do “Skullsplitter Tusks”", x = 42, y = 37, zone = "Stranglethorn Vale" },
|
||||
[12] = { str = "Now you’re gonna have to find Bhag'thera for “Panther Mastery pt.4” she is anywhere between just north of Mosh’ogg at 49,25 to just north of the ZG entrance at 48,17 she’s elite. Easy way to do it is lay immolation trap and run her into it, once pet gets half health fear it and keep attacking it", x = 48, y = 25, zone = "Stranglethorn Vale" },
|
||||
[13] = { str = "Hearth back to BB" },
|
||||
[14] = { str = " Turn in “Venture Company Mining”" },
|
||||
[15] = { str = "Go upstairs, turn in “Skullsplitter Tusks”" },
|
||||
[16] = { str = "Walk outside, turn in “Water Elementals” SKIP the next" },
|
||||
[17] = { str = "Go into the shop Tan-Your-Hide Leatherworks and turn in”" },
|
||||
[18] = { str = "Go into the shop Tan-Your-Hide Leatherworks and turn in “Some assembly required” accept “Excelsior”" },
|
||||
[19] = { str = "Go out of BB and turn left to the camp of pirates at 27,69 and touch the letter on the barrel, turn in “The Bloodsail Buccaneers pt.1” accept “The Bloodsail Buccaneers pt.2”", x = 27, y = 69, zone = "Stranglethorn Vale" },
|
||||
[20] = { str = "Go kill gorillas around 32,65 just NE of BB for “Scaring Shaky”", x = 32, y = 65, zone = "Stranglethorn Vale" },
|
||||
[21] = { str = "Run back to BB" },
|
||||
[22] = { str = "Turn right after the tunnel, turn in “Scaring Shaky” accept “Return to MacKinley”" },
|
||||
[23] = { str = "Follow the lower dock towards the Inn, turn in “The Bloodsail Buccaneers pt.2” acept “The Bloodsail Buccaneers pt.3”" },
|
||||
[24] = { str = "Go In the house across from the half ship, turn in “Return to MacKinley” accept “Voodoo Dues”" },
|
||||
[25] = { str = "Go up top the Inn, accept “Up To Snuff” " },
|
||||
[26] = { str = "Go just outside, turn in “The Bloodsail Buccaneers pt.3” accept “The Bloodsail Buccaneers pt.4”" },
|
||||
[27] = { str = "You should have close to all the STV pages, if not buy the few that you need. You don’t need 1-27 they go in this order. 1,4,6,8,10,11,14,16,18,20,21,24,25,26,27" },
|
||||
[28] = { str = "Go up near Grom’Gol, search the shore there for the 38 elite croc for “Excelsior” stay away from the base or the guards will get you" },
|
||||
[29] = { str = "Run up to Nessingways at 35,10 and turn in “Raptor Mastery pt.3” and “Panther Mastery pt.4” accept “Raptor Mastery pt.4”", x = 35, y = 10, zone = "Stranglethorn Vale" },
|
||||
[30] = { str = "Accept “The Green Hills of Stranglethorn” then turn it in" },
|
||||
[31] = { str = "You should be at lest 25% or less to 40 now go grind on basalisks and raptors around 33,39 until you’re 40.", x = 33, y = 39, zone = "Stranglethorn Vale" },
|
||||
[32] = { str = "Hearth to BB" },
|
||||
[33] = { str = "Go into the shop Tan-Your-Hide Leatherworks and turn in “Excelsior”" },
|
||||
[34] = { str = "Now fly to IF and accept Ironband Wants You from Prospector Stormpike at 74 11, and either to Darnassus to get your new skills and your mount, or get skills in IF and prepare for a few badlands quests by buying a frost oil and a gyrochronatom (don’t by a gyro if you can’t find a frost oil) Then a healing potion and lesser invisibility potion. Again don’t get either of the potions if you can’t get a frost oil or gyro.", x = 74, y = 11, zone = "Iron Forge" },
|
||||
[35] = { str = "Fly to Loch Modan Stable your pet and make Thelsamar your home" },
|
||||
[36] = { str = "Go in the house behind the Inn, accept “Badlands Reagent Run" },
|
||||
[37] = { str = "Run to 65,65 and accept “Find Agmond”", x = 65, y = 65, zone = "Loch Modan" },
|
||||
[38] = { str = "Run down into Badlands at 46,76", x = 46, y = 76, zone = "Loch Modan" },
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,505 @@
|
||||
--[[--------------------------------------------------
|
||||
003_Alliance_40to50.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 003 From Lvl 40 to Lvl 50
|
||||
1.04.1
|
||||
-- First Release
|
||||
Alliance's Guide
|
||||
from level 40 to lever 50
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_003_Alliance_40to50 = {
|
||||
-----------40-41 Badlands
|
||||
--[401] = {
|
||||
[4041] = {
|
||||
title = "40-41 Badlands",
|
||||
--n = "40-41 Badlands",
|
||||
--pID = 312, nID = 402,
|
||||
--itemCount = 32,
|
||||
items = {
|
||||
[1] = { str = "40-41 Badlands" },
|
||||
[2] = { str = "Go to 53,43 accept “Fiery Blaze Enchantment”, “Mirages”, and “A Dwarf and His Tools”", x = 53, y = 43, zone = "Badlands" },
|
||||
[3] = { str = "Stop at 42,52 and hand in “Martek the Exiled” accept “Indurium”", x = 45, y = 52, zone = "Badlands" },
|
||||
[4] = { str = "Accept “Barbecued Buzzard Wings”, “Pearl Diving” (if you have them)" },
|
||||
[5] = { str = "Now there only one area for buzzards. So fort he 2 quests that require their items, kill them whenever you see one." },
|
||||
[6] = { str = "Go to 25,44 and accept “Study of the Elements: Rock pt.1” and “Coolant Heads Prevail” then turn it back in and accept “Gyro… What?” then turn that back in. ", x = 25, y = 44, zone = "Badlands" },
|
||||
[7] = { str = "Accept “Liquid Stone” then turn it back in" },
|
||||
[8] = { str = "Grind down to 66,21 and open the crate for “Mirages”", x = 66, y = 21, zone = "Badlands" },
|
||||
[9] = { str = "Grind over to the dig site at 53,29 and kill the dwarfs for “A Dwarf and His Tools” On the right side of the hole at 53,33 touch the note in the tent for “A Sign of Hope”", x = 53, y = 29, zone = "Badlands" },
|
||||
[10] = { str = " Grind up to 53,43 and hand in “Mirages” accept “Scrounging”", x = 53, y = 43, zone = "Badlands" },
|
||||
[11] = { str = "Also turn in “A Dwarf and His Tools” and “A Sign of Hope” accept the next part to Uldaman" },
|
||||
[12] = { str = "Grind down to 61,54 and accept “Tremors of the Earth” The ogres spawn at 62,70 and wander to 29,56 so kill them if you see them. The boss is easy to pull off the back, with the small add or none.", x = 61, y = 54, zone = "Badlands" },
|
||||
[13] = { str = "Go south to 62,70 and kill ogres here for “Scrounging” and hopefully the boss is here. There isn’t many ogres so don’t worry ", x = 62, y = 70, zone = "Badlands" },
|
||||
[14] = { str = "Grind to 50,62, turn in “Find Agmond” accept “Murdaloc”", x = 50, y = 62, zone = "Badlands" },
|
||||
[15] = { str = "Go just south to the gnoll camp and do “Murdaloc” and “Indurium”" },
|
||||
[16] = { str = "Go up to 42,52 and turn in “Barbecued Buzzard Wings” and “Indurium” accept “News for Fizzle”", x = 45, y = 52, zone = "Badlands" },
|
||||
[17] = { str = "Go to 18,41 and kill the lesser rock elementals for “Study of the Elements: Rock pt.1” and “Badlands Reagent Run”", x = 18, y = 41, zone = "Badlands" },
|
||||
[18] = { str = "Go back to 26,44 turn in “Study of the Elements: Rock pt.1” accept “Study of the Elements: Rock pt.2” and do it by killing rock elemental", x = 26, y = 44, zone = "Badlands" },
|
||||
[19] = { str = "Go back to 26,44 turn in “Study of the Elements: Rock pt.2” accept “Study of the Elements: Rock pt.3”", x = 26, y = 44, zone = "Badlands" },
|
||||
[20] = { str = "Kill buzzards around 15,60 and coyotes around 33,62 for “Badlands Reagent Run” if you still need them", x = 33, y = 62, zone = "Badlands" },
|
||||
[21] = { str = "Grind down to 11,77 and kill ogres for “Scrounging”", x = 11, y = 77, zone = "Badlands" },
|
||||
[22] = { str = "Kill greater rock elementals at 14,88 for “Study of the Elements: Rock", x = 14, y = 88, zone = "Badlands" },
|
||||
[23] = { str = "Go back to 26,44 turn in “Study of the Elements: Rock pt.3” accept “This Is Going To Be Hard pt.1” turn around and hand it in, accept “This Is Going To Be Hard pt.2” then turn around and hand it in, accept “This Is Going To Be Hard pt.3”", x = 26, y = 44, zone = "Badlands" },
|
||||
[24] = { str = "Kill the elemental that’s summoned he’s 45. Then turn it back in to get your Nifty Stopwatch" },
|
||||
[25] = { str = "Go to 53,43 and turn in “Scrounging”", x = 53, y = 43, zone = "Badlands" },
|
||||
[26] = { str = "Go to 61,54 and turn in “Tremors of the Earth” SKIP the next part", x = 61, y = 54, zone = "Badlands" },
|
||||
[27] = { str = "Now you should be 41, if you’re not go east into the ravine and kill the whelps until you level. I usually go here and grind for at least 30 min whether or not im 41 and try to get the heart for “Fiery Blaze Enchantment” If you don’t find it in 30 min just abandon it" },
|
||||
[28] = { str = "Hearth to Thelsamar" },
|
||||
[29] = { str = "Go in the house behind the Inn and turn in “Badlands Reagent Run” accept the Uldaman part" },
|
||||
[30] = { str = "Run to 65,65 turn in “Murdaloc” accept the Uldaman part I’m almost 25% into 41 now", x = 65, y = 65, zone = "Loch Modan" },
|
||||
[31] = { str = "Fly to Duskwood, make it your home. Fly to SW Go to 64,20 and accept In Search of The Temple", x = 64, y = 20, zone = "Stormwind" },
|
||||
[32] = { str = "Fly back to Duskwood, Run into Swamp of Sorrows" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------41-41 Swamp of Sorrows
|
||||
--[402] = {
|
||||
[4141] = {
|
||||
title = "41-41 Swamp of Sorrows",
|
||||
--n = "41-41 Swamp of Sorrows",
|
||||
--pID = 401, nID = 403,
|
||||
--itemCount = 27,
|
||||
items = {
|
||||
[1] = { str = "41-41 Swamp of Sorrows" },
|
||||
[2] = { str = "Run into the Swamp of Sorrows, go to 12,58 and kill the whelps for “Dream Dust In the Swamp” low droprate but they respawn fast", x = 12, y = 58, zone = "Swamp of Sorrows" },
|
||||
[3] = { str = "Go to 26,59 and accept “Enroaching Wildlife” and go do it. Kill the 3 mob types around him and north. It’s all close to the quest giver", x = 26, y = 59, zone = "Swamp of Sorrows" },
|
||||
[4] = { str = "Go up and find Noboru the Cudgel he circles around 43,38 and drops an item that starts “Noboru the Cudgel”", x = 43, y = 38, zone = "Swamp of Sorrows" },
|
||||
[5] = { str = "Go back to 26,59 and turn in “Enroaching Wildlife” accept “The Lost Caravan”", x = 26, y = 59, zone = "Swamp of Sorrows" },
|
||||
[6] = { str = "Grind up to 25,31 and turn in “Noboru the Cudgel” accept “Draenethyst Crystals”", x = 25, y = 31, zone = "Swamp of Sorrows" },
|
||||
[7] = { str = "Go up to the sanctuary that starts at 54,29 and start collecting the “Draenethyst Crystals”", x = 54, y = 29, zone = "Swamp of Sorrows" },
|
||||
[8] = { str = "When you get to the last camp with the npc in the cage at 65,18 first grab the chest off the cart to the left for “The Lost Caravan”", x = 65, y = 18, zone = "Swamp of Sorrows" },
|
||||
[9] = { str = "Make sure you clear the camp beside the caged npc." },
|
||||
[10] = { str = "Then accept “Galen’s Escape” it’s a breeze if you cleared the camp" },
|
||||
[11] = { str = "Grind down to 48,39 to the busted up looking tent and open the chest to complete “Galen’s Escape”", x = 48, y = 39, zone = "Swamp of Sorrows" },
|
||||
[12] = { str = "Go back to 26,31 and turn in “Draenethyst Crystals”", x = 26, y = 31, zone = "Swamp of Sorrows" },
|
||||
[13] = { str = "Go to 26,59 and turn in “The Lost Caravan” accept “Driftwood”", x = 26, y = 59, zone = "Swamp of Sorrows" },
|
||||
[14] = { str = "Run through the swamp and go south into the Blasted Lands at 36,59 and over to Nethergarde Keep at 54,78. Grab the FP and fly to Darkshire.", x = 54, y = 78, zone = "Blasted Lands" },
|
||||
[15] = { str = "Stable your cat and get the badlands cat back out" },
|
||||
[16] = { str = "Grab “Supplies for Nethergarde” on your way back NE" },
|
||||
[17] = { str = "Fly back to Nethergarde, turn in “Supplies for Nethergarde” easy xp." },
|
||||
[18] = { str = "Run back up into the swamp of sorrows." },
|
||||
[19] = { str = "Run up to the lake around the Sunken Temple at 70,54 and you should get a complete message for In Search of The Temple", x = 70, y = 54, zone = "Swamp of Sorrows" },
|
||||
[20] = { str = "Go up to about 76,6 and start killing silt and monstrous crawlers and work your way south for “… and bugs” until it’s done. Also look for wood planks on the ground for “Driftwood”", x = 76, y = 6, zone = "Swamp of Sorrows" },
|
||||
[21] = { str = "Hearth to Darkshire and get your cat back out." },
|
||||
[22] = { str = "Fly to Nethergarde and run back up into the swamp" },
|
||||
[23] = { str = "Go to 26,59 and turn in “Driftwood” accept “Deliver the Shipment”", x = 26, y = 59, zone = "Swamp of Sorrows" },
|
||||
[24] = { str = "Run down into the Blasted Lands and turn in “Deliver the Shipment” at 66,21", x = 66, y = 21, zone = "Blasted Lands" },
|
||||
[25] = { str = "Fly to BB and turn in “Dream Dust In the Swamp” atop the Inn and accept “Rumors for Kravel”" },
|
||||
[26] = { str = "Get on the ship to Rachet and fly to Theramore and turn in “… and bugs” at the Inn" },
|
||||
[27] = { str = "Fly to Desolace" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------41-42 Desolace
|
||||
--[403] = {
|
||||
[4142] = {
|
||||
title = "41-42 Desolace",
|
||||
--n = "41-42 Desolace",
|
||||
--pID = 402, nID = 404,
|
||||
--itemCount = 16,
|
||||
items = {
|
||||
[1] = { str = "41-42 Desolace" },
|
||||
[2] = { str = "Make Nijel’s Point your home" },
|
||||
[3] = { str = "Accept “Down the Scarlet Path”" },
|
||||
[4] = { str = "Go down accept “Reagents For Reclaimers Inc pt.3”" },
|
||||
[5] = { str = "Run to 47,61 and accept “Ghost-O-Plasm Round Up”", x = 47, y = 61, zone = "Desolace" },
|
||||
[6] = { str = "Kill the demons around 51,75 for “Reagents For Reclaimers Inc pt.3”", x = 51, y = 75, zone = "Desolace" },
|
||||
[7] = { str = "Kill undead ravagers around 61,90 for “Down the Scarlet Path” and “Ghost-O-Plasm Round Up” between the 2 skeletons in the middle", x = 61, y = 90, zone = "Desolace" },
|
||||
[8] = { str = "You should hit 42 by the time you’re done kililng these" },
|
||||
[9] = { str = "Go back to 47,61 and turn in “Ghost-O-Plasm Round Up”", x = 47, y = 61, zone = "Desolace" },
|
||||
[10] = { str = "Hearth to Nijel’s Point" },
|
||||
[11] = { str = "Turn in “Down the Scarlet Path” SKIP the next part" },
|
||||
[12] = { str = "Go just south of the Inn, turn in “Reagents For Reclaimers Inc pt.3” accept “Reagents For Reclaimers Inc pt.4”" },
|
||||
[13] = { str = "Fly to Theramore, Boat to Menethil and Fly to IF" },
|
||||
[14] = { str = "Turn in “Reagents For Reclaimers Inc pt.4” at 67,17", x = 67, y = 17, zone = "Ironforge" },
|
||||
[15] = { str = "Get new skills" },
|
||||
[16] = { str = "Fly to Booty Bay" },
|
||||
}
|
||||
},
|
||||
-----------42-43 Stranglethron Vale
|
||||
--[404] = {
|
||||
[4243] = {
|
||||
title = "42-43 Stranglethron Vale",
|
||||
--n = "42-43 Stranglethron Vale",
|
||||
--pID = 403, nID = 405,
|
||||
--itemCount = 29,
|
||||
items = {
|
||||
[1] = { str = "42-43 Stranglethron Vale" },
|
||||
[2] = { str = "Go into the Inn, accept “Tran'Rek”" },
|
||||
[3] = { str = "Make BB your home" },
|
||||
[4] = { str = "Accept “Zanzil's Secret” and “Whiskey Slim's Lost Grog”" },
|
||||
[5] = { str = "Go near the Bank, accept “Akiris By the Bundle pt.1”" },
|
||||
[6] = { str = "Go in the house next to the half ship, accept Stoley's Debt" },
|
||||
[7] = { str = "Where the dock forks up and down, go up and around the corner, accept “Keep An Eye Out” " },
|
||||
[8] = { str = "Go out of BB and to the right and south. All around 31,79 You’re gonna kill the buccaneers for “Up To Snuff” and “Keep An Eye Out”", x = 31, y = 79, zone = "Stranglethorn Vale" },
|
||||
[9] = { str = "Kill the swashbucklers around the two camps at 29,81(bloodsail charts are here on the box) and 27,82 (bloodsail orders, on the box, NE tent) for “The Bloodsail Buccaneers pt.4”", x = 27, y = 82, zone = "Stranglethorn Vale" },
|
||||
[10] = { str = "Run back up into BB, and turn left" },
|
||||
[11] = { str = "Turn in “Keep An Eye Out” near the forge" },
|
||||
[12] = { str = "Go up in the Inn, turn in “Up To Snuff”" },
|
||||
[13] = { str = "Go just outside and hand in “The Bloodsail Buccaneers pt.4” accept “The Bloodsail Buccaneers pt.5”" },
|
||||
[14] = { str = "Go kill naga around 25,63 for “Akiris By the Bundle pt.1”", x = 25, y = 63, zone = "Stranglethorn Vale" },
|
||||
[15] = { str = "Grind on the nagas until you’re at least 50% into 43" },
|
||||
[16] = { str = "Go up to the Ruins of Aboraz and kill Chucky (40,58) for “Voodoo Dues” while killing the mobs for “Zanzil's Secret” you only need 8-10", x = 40, y = 58, zone = "Stranglethorn Vale" },
|
||||
[17] = { str = "Go up to the Ruins of Jubawal and kill Jon-Jon (34,51) and Maury (35,51) for “Voodoo Dues” and the rest of “Zanzil's Secret”", x = 35, y = 51, zone = "Stranglethorn Vale" },
|
||||
[18] = { str = "Go kill Tethis for “Raptor Mastery pt.4” behind the arena around 31,43 then turn it in at nessingways at 35,10 accept “Big Game Hunter”", x = 31, y = 43, zone = "Stranglethorn Vale" },
|
||||
[19] = { str = "Go up to the rebel camp at 38,3 and accept “Colonel Kurzen”", x = 38, y = 3, zone = "Stranglethorn Vale" },
|
||||
[20] = { str = "Go to the cave at 45,8 go to the fork and go down once like earlier kill the elites and subchiefs (when they get a red aura stop your pet from hitting them or he’ll get owned) for “Colonel Kurzen” Kurzen is at 49,3 ", x = 49, y = 3, zone = "Stranglethorn Vale" },
|
||||
[21] = { str = "Die on purpose so you’re near the rebel camp" },
|
||||
[22] = { str = "Go to the rebel camp at 38,3 and turn in “Colonel Kurzen”", x = 38, y = 3, zone = "Stranglethorn Vale" },
|
||||
[23] = { str = "Kill the trolls around 44,34 until you’re about 9k from leveling", x = 44, y = 34, zone = "Stranglethorn Vale" },
|
||||
[24] = { str = "Hearth to BB" },
|
||||
[25] = { str = "Turn in “Zanzil's Secret”" },
|
||||
[26] = { str = "Go down by the Bank, turn in “Akiris By the Bundle pt.1” accept “Akiris By the Bundle pt.2”" },
|
||||
[27] = { str = "Go to the house in front of the half boat, turn in “Voodoo Dues” accept “Cracking Maury's Foot”" },
|
||||
[28] = { str = "Get on the boat to Rachet then fly to Theramore" },
|
||||
[29] = { str = "Turn in “Akiris By the Bundle pt.2” in front of you, fly to Gadget" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------43-43 Tanaris
|
||||
--[405] = {
|
||||
[4343] = {
|
||||
title = "43-43 Tanaris",
|
||||
--n = "43-43 Tanaris",
|
||||
--pID = 404, nID = 406,
|
||||
--itemCount = 34,
|
||||
items = {
|
||||
[1] = { str = "43-43 Tanaris" },
|
||||
[2] = { str = "Accept “Wastewander Justice” and “Water Pouch Bounty”" },
|
||||
[3] = { str = "Make Gadget your home" },
|
||||
[4] = { str = "Go in front of the cage and grab the 2 quests off the sign “WANTED: Caliph Scorpidsting” and “WANTED: Andre Firebeard”" },
|
||||
[5] = { str = "Turn in “Tran'Rek” SKIP the next part" },
|
||||
[6] = { str = "On the left side of town on the hill accept “Gadgetzan Water Survey”" },
|
||||
[7] = { str = "Go to The Shimmering Flats to 77,77 and turn in “Rumors for Kravel” accept “Back to Booty Bay”", x = 77, y = 77, zone = "Thousand Needles" },
|
||||
[8] = { str = "Just beside him turn in “News for Fizzle”" },
|
||||
[9] = { str = "Go to 80,75 and accept “Keeping Pace” do it by talking with zamek just south of here, has a blue ? on his head. Don’t follow him, run to rizzles house at 77,77 and when he leaves grab the unguarded plans which turns in “Keeping Pace” accept “Rizzle's Schematics” turn it in at 80,75", x = 80, y = 75, zone = "Thousand Needles" },
|
||||
[10] = { str = "Hearth to Gadget" },
|
||||
[11] = { str = "Run out to Steamwheedle Port at 59,80", x = 59, y = 80, zone = "Tanaris" },
|
||||
[12] = { str = "Turn in Stoley's Debt at the southern most house, accept “Stoley’s Shipment” and “Southsea Shakedown”" },
|
||||
[13] = { str = "Go to the northern houses, accept “Pirate Hats Ahoy!” and “Screecher Spirits”" },
|
||||
[14] = { str = "Go to around 63,30 and kill the mobs here for “Wastewander Justice” and “Water Pouch Bounty” Look for Caliph Scorpidsting and kill him for “WANTED: Caliph Scorpidsting” while here. He has 2 stealthed guards but is fairly easy. He patrols up and down", x = 63, y = 30, zone = "Tanaris" },
|
||||
[15] = { str = "Run over to the cave at 68,41 and go through to Lost Rigger Cove.", x = 68, y = 41, zone = "Tanaris" },
|
||||
[16] = { str = "Start killing the mobs all back here for “Southsea Shakedown” and “Pirate Hats Ahoy!”" },
|
||||
[17] = { str = "1You may get some drops of Pirate's Footlocker which can hold Ship Schedule and the upper middle and lower map fragments which starts “Cuergo’s Gold” and “Ship Schedules” only do them if you find them. If I don’t find them all I skip them or sell what I have." },
|
||||
[18] = { str = "Kill Andre Firebeard at 73,47 for “WANTED: Andre Firebeard”", x = 73, y = 47, zone = "Tanaris" },
|
||||
[19] = { str = "Go to the only 2 story house out here at 72,46 and get the stolen wine for “Stoley’s Shipment”. It’s on the 2nd floor", x = 72, y = 46, zone = "Tanaris" },
|
||||
[20] = { str = "Hearth to Gadget" },
|
||||
[21] = { str = "Turn in “Wastewander Justice” accept “More Wastewander Justice”" },
|
||||
[22] = { str = "Turn in “WANTED: Caliph Scorpidsting” and “Water Pouch Bounty”" },
|
||||
[23] = { str = "You should be close to half way TNL" },
|
||||
[24] = { str = "Go west to 39,29 and do “Gadgetzan Water Survey” Run once you get the sample a 47 and 48 attack you.", x = 32, y = 29, zone = "Tanaris" },
|
||||
[25] = { str = "Run back to Gadget and hand in “Gadgetzan Water Survey” accept “Noxious Lair Investigation”" },
|
||||
[26] = { str = "Go do “More Wastewander Justice” around 60,35 by killing the mobs", x = 60, y = 35, zone = "Tanaris" },
|
||||
[27] = { str = "Go back up to Steamweedle Port at 59,80 to the southern house and turn in “Stoley’s Shipment” accept “Deliver to MacKinley”", x = 59, y = 80, zone = "Tanaris" },
|
||||
[28] = { str = "Turn in “WANTED: Andre Firebeard” and “Southsea Shakedown”" },
|
||||
[29] = { str = "Go to the northern house, turn in “Pirate Hats Ahoy!”" },
|
||||
[30] = { str = "Hearth to Gadget" },
|
||||
[31] = { str = "Turn in “More Wastewander Justice”" },
|
||||
[32] = { str = "Accept “Handle With Care” near the north side of town" },
|
||||
[33] = { str = "You should be about ¾ TNL now" },
|
||||
[34] = { str = " Fly to Feralas" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------43-45 Feralas
|
||||
--[406] = {
|
||||
[4345] = {
|
||||
title = "43-45 Feralas",
|
||||
--n = "43-45 Feralas",
|
||||
--pID = 405, nID = 407,
|
||||
--itemCount = 43,
|
||||
items = {
|
||||
[1] = { str = "43-45 Feralas" },
|
||||
[2] = { str = "On the water side of the inn in the gazebo, accept “The Mark of Quality”" },
|
||||
[3] = { str = "Make Feralas your home" },
|
||||
[4] = { str = "Go into the big building across from the Inn, accept “The Missing Courier pt.1” and “The Ruins of Solarsal”" },
|
||||
[5] = { str = "Go to the building just west accept “In Search of Knowledge” and “The High Wilderness”" },
|
||||
[6] = { str = "Go upstairs turn in “The Missing Courier pt.1” accept “The Missing Courier pt.2”" },
|
||||
[7] = { str = "Go to the gazebo at 26,52 and turn in “The Ruins of Solarsal” accept “Return to Feathermoon Stronghold”", x = 26, y = 52, zone = "Feralas" },
|
||||
[8] = { str = "Go back to Feathermoon to the big building, turn in “Return to Feathermoon Stronghold” accept “Against the Hatecrest pt.1” turn around and hand it in accept “Against the Hatecrest pt.2”" },
|
||||
[9] = { str = "Kill naga around 26,54 for “Against the Hatecrest pt.2”", x = 26, y = 54, zone = "Feralas" },
|
||||
[10] = { str = "I kill the naga until im about 2500 TNL because I’m usually under 15k TNL when I get to this part. They give an average of 250 per kill" },
|
||||
[11] = { str = "Go back to Feathermoon to the big building, turn in “Against the Hatecrest pt.2” accept “Against Lord Shalzaru”" },
|
||||
[12] = { str = " Go down to the cave at 26,66 and kill Lord Shalzaru at the end for “Against Lord Shalzaru”", x = 26, y = 66, zone = "Feralas" },
|
||||
[13] = { str = "Die so you end up at Feathermoon" },
|
||||
[14] = { str = "Go back to Feathermoon to the big building, turn in “Against Lord Shalzaru” accept “Delivering the Relic” go to the other side of the building and turn it in." },
|
||||
[15] = { str = " Take the boat to the mainland" },
|
||||
[16] = { str = "Go south of the dock and kill screechers for “Screecher Spirits”" },
|
||||
[17] = { str = "Go down to 45,65 and touch the wrecked boat to turn in “The Missing Courier pt.2” accept “Boat Wreckage”", x = 45, y = 65, zone = "Feralas" },
|
||||
[18] = { str = "Hearth to Feathermoon" },
|
||||
[19] = { str = "Go in the little building across from the Inn on the 2nd floor, turn in “Boat Wreckage” accept “The Knife Revealed”" },
|
||||
[20] = { str = "Go up top of the big spiral tower, turn in “The Knife Revealed” accept “Psychometric Reading”" },
|
||||
[21] = { str = "Go in the little building across form the Inn on the 2nd floor, turn in “Psychometric Reading” accept “The Woodpaw Gnolls”" },
|
||||
[22] = { str = "Take the boat to the mainland" },
|
||||
[23] = { str = "Go into the yeti cave at 56,56 and kill yeti’s for “The Mark of Quality” you can skin them and it’s also a drop.", x = 56, y = 56, zone = "Feralas" },
|
||||
[24] = { str = "If a OOX-22/FE Distress Beacon has fallen accept the quest “Find OOX-22/FE!” and turn it in at the back of the cave SKIP the escort. " },
|
||||
[25] = { str = "Grind east and kill the Brutes around 60,56, and warlocks and shamans around 59,66 for “The High Wilderness” I kill any I see", x = 60, y = 56, zone = "Feralas" },
|
||||
[26] = { str = "Go up to 65,45 and accept “Freedom For All Creatures” It’s pretty hidden, just NW of the camp entrance is a path that doesn’t even look like you can walk on it. To do this simply escort her to the cage, open it and kill anything until it says complete. ", x = 65, y = 45, zone = "Feralas" },
|
||||
[27] = { str = "Hand it back in and accept “Doling Justice pt.1 The mobs can be found in this camp." },
|
||||
[28] = { str = "Turn “Doling Justice pt.1 in at 65,45 and accept “Doling Justice pt.2", x = 65, y = 45, zone = "Feralas" },
|
||||
[29] = { str = "Go down to 73,56 and touch Large Leather Backpacks on the big tree. Turn in “The Woodpaw Gnolls” accept “The Writhing Deep”", x = 73, y = 56, zone = "Feralas" },
|
||||
[30] = { str = "Right click the Backpack, accept “Thalanaar Delivery”" },
|
||||
[31] = { str = "Grind down to the hive at 73,63 and go all the way down. Go into the southern tunnel and stay right, You’ll see a Zukk’Ash Pod there. Turn in “The Writhing Deep” accept “Freed From the Hive", x = 73, y = 63, zone = "Feralas" },
|
||||
[32] = { str = "Hearth to Feathermoon" },
|
||||
[33] = { str = "On the water side of the Gazebo, turn in “The Mark of Quality” accept “Improved Quality”" },
|
||||
[34] = { str = "Go in the small house across from the Inn, turn in “The High Wilderness” then go upstairs and turn in “Freed From the Hive” accept “A Hero’s Welcome”" },
|
||||
[35] = { str = "Go to the big building next door and turn in “A Hero’s Welcome” accept “Rise of the Silithid”" },
|
||||
[36] = { str = "Fly out to Thalanaar (spot between 1k needles and here) turn in “Thalanaar Delivery” at 89,46", x = 89, y = 46, zone = "Feralas" },
|
||||
[37] = { str = "Fly to Rut'theran Village (Darnassus)" },
|
||||
[38] = { str = "Follow the dock and go in the house, turn in “Handle With Care” accept “Favored of Elune?”" },
|
||||
[39] = { str = "Go upstairs, turn in “In Search of Knowledge” then go to the back of the house on the 2nd floor, open the green book and accept “Feralas: A History” turn it back in to her, accept “The Borrower”" },
|
||||
[40] = { str = "Get new skills" },
|
||||
[41] = { str = "Go to the temple of the moon at 39,86 and up to the 2nd floor, turn in “Rise of the Silithid” and “Doling Justice pt.2", x = 39, y = 86, zone = "Feralas" },
|
||||
[42] = { str = "Buy 2 Elixir of Fortitude for a later part of this quest" },
|
||||
[43] = { str = "Hearth to Feathermoon and fly to Gadgetzan and turn in “The Borrower” accept “The Super Snapper FX”" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------45-46 Uldaman
|
||||
--[407] = {
|
||||
[4546] = {
|
||||
title = "45-46 Uldaman",
|
||||
--n = "45-46 Uldaman",
|
||||
--pID = 406, nID = 408,
|
||||
--itemCount = 7,
|
||||
items = {
|
||||
[1] = { str = "45-46 Uldaman" },
|
||||
[2] = { str = "Now you can either grind on the gnolls in Feralas around where you found the backpack on the tree, or you can do Uldaman. I highly suggest you do Uldaman. You picked up some quests earlier, there are a few more in IF and in the badlands. If you get a good group build you can easily do just about every quest in there in under 3 hours max. I usually fully do Uldaman inside and out, I don’t finish all the quests unless I have to level. 1 full run inside and out should get you 75-100% through this level. I usually do this in about 3 hours no problem. Plus you can solo all the mobs outside of the instance 3 at a time no problem. The end of Uldaman, after the boss, (mini disks quest) gives about 20k xp between that and talking to the ghostly npc who spawns in there, as well as gives some nice xp for quests later on. And you could miss some xp spots for later quests I do if you skip this." },
|
||||
[3] = { str = "I don’t list all the quests for Uldaman because there is a good handful and you don’t have to do them all to fully level, and again it is optional. This is much faster than grinding would be. I really hate to do instances when trying for the best time but alliance has less quests than the horde do and I did mention there will be about 10-15% of grinding on your way to 60. If you did do all instances though you would be really slowed down. This isn’t going to put a break in your time with a good group, preferrably guild groups of 45+" },
|
||||
[4] = { str = "You can stop at about 75% to 46 but again I suggest you level. It’s not as bad as it seems." },
|
||||
[5] = { str = "A great map of Uldaman and where the parts of most of the quests pieces can be done at is listed here on worldofwar.net" },
|
||||
[6] = { str = "Once you’re all set, fly to SW and turn in In Search of The Temple at 64,20 and accept “In Search of The Hinterlands” get new skills then fly to Southshore.", x = 64, y = 20, zone = "Stormwind" },
|
||||
[7] = { str = " Run up to the path at 84,33 behind Durnholde Keep (you’ll see 2 griffins) into The Hinterlands", x = 84, y = 33, zone = "Tarren Mill" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------46-47 The Hinterlands
|
||||
--[408] = {
|
||||
[4647] = {
|
||||
title = "46-47 The Hinterlands",
|
||||
--n = "46-47 The Hinterlands",
|
||||
--pID = 407, nID = 409,
|
||||
--itemCount = 29,
|
||||
items = {
|
||||
[1] = { str = "46-47 The Hinterlands" },
|
||||
[2] = { str = "Go up to 11,46 and turn in “In Search of The Hinterlands” accept “Gryphon Master Talonaxe”", x = 11, y = 46, zone = "The Hinterlands" },
|
||||
[3] = { str = "Get the FP at 11,46 way up top then go in the cave and turn in “Gryphon Master Talonaxe”, accept “Rhapsody Shindigger” and “Witherbark Cages” ", x = 11, y = 46, zone = "The Hinterlands" },
|
||||
[4] = { str = "Go into the Inn and turn right, accept “Skulk Rock Clean-Up” and “Troll Necklace Bounty”" },
|
||||
[5] = { str = "Go way in the back of the Inn up to around 13,41 and make Aerie Peak your home.", x = 13, y = 41, zone = "The Hinterlands" },
|
||||
[6] = { str = "Grind east to 20,48 to the path while keeping an eye out for feathers on the ground for “Favored of Elune?” You don’t need them all yet", x = 20, y = 48, zone = "The Hinterlands" },
|
||||
[7] = { str = "Follow the path up to 26,48 and turn in “Rhapsody Shindigger” accept “Rhapsody's Kalimdor Kocktail”", x = 26, y = 48, zone = "The Hinterlands" },
|
||||
[8] = { str = "Go back down and to the troll camp and clear most of them out at 23,58 and open the 2 cages for “Witherbark Cages”", x = 23, y = 58, zone = "The Hinterlands" },
|
||||
[9] = { str = "Grind east to 31,57 and open the 3rd cage for “Witherbark Cages”", x = 31, y = 57, zone = "The Hinterlands" },
|
||||
[10] = { str = "You should also have 5 necklaces for “Troll Necklace Bounty” now" },
|
||||
[11] = { str = "Go NE up to 46,42, collecting feathers if you still need them on the way, and kill the Green Sludges for “Skulk Rock Clean-Up” part 1", x = 46, y = 62, zone = "The Hinterlands" },
|
||||
[12] = { str = "Go to 49,37 if you found OOX-09/HL Distress Beacon", x = 49, y = 37, zone = "The Hinterlands" },
|
||||
[13] = { str = "Go to 56,41 and kill Jade Oozes for part 2 of “Skulk Rock Clean-Up”", x = 56, y = 41, zone = "The Hinterlands" },
|
||||
[14] = { str = "Go to the waterfall at 81,46 and dive into the water below, then go south along this shore until you see Gammerita and take her picture for “The Super Snapper FX” Also you want to keep an eye out for bottles along the shore for “Whiskey Slim's Lost Grog”", x = 81, y = 46, zone = "The Hinterlands" },
|
||||
[15] = { str = "Hearth to Aerie Peak" },
|
||||
[16] = { str = "Go to the front of the Inn and turn in “Skulk Rock Clean-Up” and “Troll Necklace Bounty” and any extra 5 necklaces you have." },
|
||||
[17] = { str = "Go up past the FP in the cave at 9,44 and turn in “Witherbark Cages” accept “The Altar of Zul”", x = 9, y = 44, zone = "The Hinterlands" },
|
||||
[18] = { str = "Go run up top of the Altar of Zul at 48,68 for “The Altar of Zul” ", x = 48, y = 68, zone = "The Hinterlands" },
|
||||
[19] = { str = "Now I grind on the trolls and wolves around Zul until I’m 1 bar from 47. You should be at least half way through 46 at this point." },
|
||||
[20] = { str = "Get the quest “Jammal'an the Prophet” at 33,75 if you plan to do Sunken Temple later.", x = 33, y = 75, zone = "The Hinterlands" },
|
||||
[21] = { str = "I’m sure by the time you near 47 you’re going to find OOX-09/HL Distress Beacon accept “Find OOX-09/HL” and turn it in at 49,37 and then accept “Rescue OOX-09/HL” and escort it to 78,61 Theres only 2 encounters of 3 mobs, but watch out for the stealthed wolves", x = 49, y = 37, zone = "The Hinterlands" },
|
||||
[22] = { str = "Once you’re about 6k or 1 bar from 47 hearth to Aerie Peak" },
|
||||
[23] = { str = "Turn in any “Troll Necklace Bounty” you have just before you go out" },
|
||||
[24] = { str = "Go up past FP to 9,44 and turn in “The Altar of Zul” accept “Thadius Grimshade”", x = 9, y = 44, zone = "The Hinterlands" },
|
||||
[25] = { str = "Fly to Menethil Harbor and take the boat to Auberdine, then fly to Rut’theran Village" },
|
||||
[26] = { str = "Run to the house at 55,92 and turn in “Favored of Elune?”", x = 55, y = 92, zone = "The Hinterlands" },
|
||||
[27] = { str = "Go upstairs, turn in “The Super Snapper FX” accept “Return to Troyas”" },
|
||||
[28] = { str = "You should now be 47 and about 8k into it." },
|
||||
[29] = { str = "Fly to Feralas" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------47-47 Feralas
|
||||
--[409] = {
|
||||
[4747] = {
|
||||
title = "47-47 Feralas",
|
||||
--n = "47-47 Feralas",
|
||||
--pID = 408, nID = 410,
|
||||
--itemCount = 22,
|
||||
items = {
|
||||
[1] = { str = "47-47 Feralas" },
|
||||
[2] = { str = "Make Feathermoon Stronghold your home" },
|
||||
[3] = { str = "Go across from the Inn to the 2 story house, turn in “Return to Troyas” accept “The Stave of Equinex”" },
|
||||
[4] = { str = "Accept “The Sunken Temple” Next to him" },
|
||||
[5] = { str = "Swim or boat east to the dock." },
|
||||
[6] = { str = "Beside the dock at 44,33 accept “Zapped Giants” and “Fuel for Zapping”", x = 44, y = 33, zone = "Feralas" },
|
||||
[7] = { str = "Make the Zorbin's Ultra-Shrinker a hotkey. Then go south along the shore and start zapping giants and killing them for “Zapped Giants” and kill water elementals for “Fuel for Zapping”" },
|
||||
[8] = { str = "Go back to 44,33 and turn in “Zapped Giants” and “Fuel for Zapping” You can now do those again, but I wouldn’t, for about 500 xp per turn in. Now he opens his store to you.", x = 44, y = 33, zone = "Feralas" },
|
||||
[9] = { str = "Run over to the grimtotem camp at 65,45 and accept “An Orphan Looking For A Home”", x = 65, y = 45, zone = "Feralas" },
|
||||
[10] = { str = "Go down to the yeti cave at 56,56 and do the robot chicken escort if you can, don’t be afraid to ask for help if needed. It’s really eays now", x = 56, y = 56, zone = "Feralas" },
|
||||
[11] = { str = "Grind to the yeti cave at 51,31 on Ironfur Bears and Groddoc Gorillas until you get 3 livers from each of them for “Rhapsody's Kalimdor Kocktail”", x = 51, y = 31, zone = "Feralas" },
|
||||
[12] = { str = "Kill the Rage Scar Yeti’s here for “Improved Quality” remember you can skin them for these as well. If a Pristine Yeti Hide drops, accept the quest it gives “Pristine Yeti Hide”" },
|
||||
[13] = { str = "Go to Rockbiter at 42,22 and accept The Giant Guardian", x = 42, y = 22, zone = "Feralas" },
|
||||
[14] = { str = "Do “The Stave of Equinex” by doing the following. Get the Blytan Essence from the fire at 38,15 “The Stave of Equinex” Get the Samha Essence from the fire at 40,12 (atop the ruined arch) to get to it, go around back and hop up the broken rocks (it’s not easily noticed) Go back out the back and Grab the Imbel Essence from the fire at 39,9. Get the Lahassa Essence from the fire at 37,12 under the brown gazebo. Go down to the Equinex Monolith just over the cliff. Use Troya’s Staff next to it. Touch the Monolith and turn in “The Stave of Equinex” accept The Morrow Stone", x = 38, y = 15, zone = "Feralas" },
|
||||
[15] = { str = "Go back up near the previous flame to 38,10 and turn in The Giant Guardian accept the escort “Wandering Shay”", x = 38, y = 10, zone = "Feralas" },
|
||||
[16] = { str = "Grab the bell from the chest and hotkey it. This is similar to the druid quest back in darkshore. Run her back to Rockbiter at 42,21and turn in “Wandering Shay” (the trick is to keep ahead of her, if she’s with you by your side she will wander off a lot more and the bell has a 1 minute timer.", x = 42, y = 21, zone = "Feralas" },
|
||||
[17] = { str = "Hearth to Feathermoon Stronghold" },
|
||||
[18] = { str = "Go to the gazebo near the water beside the hippograph master, turn in “Pristine Yeti Hide” and “Improved Quality”" },
|
||||
[19] = { str = "Take your 2 Elixirs of Fortitude out of your mailbox if you don’t already have them on you." },
|
||||
[20] = { str = "Go across to the 2 story house, turn in The Morrow Stone" },
|
||||
[21] = { str = "You should be close to 70% into 47" },
|
||||
[22] = { str = "Fly to Gadgetzan" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------47-48 Tanaris
|
||||
--[410] = {
|
||||
[4748] = {
|
||||
title = "47-48 Tanaris",
|
||||
--n = "47-48 Tanaris",
|
||||
--pID = 409, nID = 411,
|
||||
--itemCount = 42,
|
||||
items = {
|
||||
[1] = { str = "47-48 Tanaris" },
|
||||
[2] = { str = "Just inside Gadget to the right, accept “The Thirsty Goblin”" },
|
||||
[3] = { str = "Make Gadget your home" },
|
||||
[4] = { str = "Go behind the Inn, accept “The Dunemaul Compound”" },
|
||||
[5] = { str = "Near the north entrance, accept Thistleshrub Valley" },
|
||||
[6] = { str = "Go south to the skeleton in the ground at 49,36 and 44,39 and 47,45 kill Rocs for “Rhapsody's Kalimdor Kocktail” If it’s busy just do it later.", x = 49, y = 36, zone = "Tanaris" },
|
||||
[7] = { str = "Ride over to 52,45 turn in “The Sunken Temple” and accept “The Stone Circle” and “Gahz'Ridian”", x = 52, y = 45, zone = "Tanaris" },
|
||||
[8] = { str = "Now put on the Gahz’Ridian Detector Helm and yellow dots on mini map will show the pieces you need to get for “Gahz'Ridian”. It’s up to you if you want to wear this in fights. This stuff is all over" },
|
||||
[9] = { str = "Run over west to the Dunemaul Compound clear a path to 40,58 and kill Gor’Marok the Ravager for “The Dunemaul Compound” You don’t need the 20 ogre kills all from here", x = 40, y = 58, zone = "Tanaris" },
|
||||
[10] = { str = "Head over to 47,65 and finish killing the ogres for The Dunemaul Compound while gathering the rest of the artifacts for Gahz'Ridian", x = 47, y = 65, zone = "Tanaris" },
|
||||
[11] = { str = "Grind on the ogres until you’re 10,000 from 48" },
|
||||
[12] = { str = "Sneak up the left side of uldum and go up to the pedestal at 37,81 and turn in Seeing What Happens", x = 37, y = 81, zone = "Tanaris" },
|
||||
[13] = { str = "Talk to the guy who appears, accept The Stone Watcher and talk to him until completed. Then touch the pedastal to turn it back in" },
|
||||
[14] = { str = "Touch the pedastal one more time and accept Return to Ironforge" },
|
||||
[15] = { str = "Go west to 29,66 and kill Gnarled Thistlegrub and Thistlegrub Rootshapers for Thistleshrub Valley and the dew collectors for The Thirsty Goblin You should hit 48 here", x = 29, y = 66, zone = "Tanaris" },
|
||||
[16] = { str = "If you find Tooga, accept Tooga’s Quest I found him at 29,73 near the zepplin, but you can find him anywhere around this valley. He follows you, you don’t have to follow him ", x = 29, y = 73, zone = "Tanaris" },
|
||||
[17] = { str = "Go up to the noxious lair around 34,46 and kill centipaar there for Noxious Lair Investigation If you can’t get them all before tooga has 10 minutes left, go turn that in and then come back.", x = 34, y = 76, zone = "Tanaris" },
|
||||
[18] = { str = "Turn in Tooga’s Quest near steamwheedle port at 66,25", x = 66, y = 25, zone = "Tanaris" },
|
||||
[19] = { str = "Accept Yuka Screwspigot" },
|
||||
[20] = { str = "Turn in Screecher Spirits at 66,22 SKIP the ZF part", x = 66, y = 22, zone = "Tanaris" },
|
||||
[21] = { str = "Hearth to Gadget" },
|
||||
[22] = { str = "Go near the entrance and accept The Thirsty Goblin back and turn it in accept In Good Taste" },
|
||||
[23] = { str = "Go behind the Inn near the fire, turn in The Dunemaul Compound" },
|
||||
[24] = { str = "Go near the north entrance, hand in Thistleshrub Valley" },
|
||||
[25] = { str = "Go west to Sprinkle, turn in In Good Taste accept Sprinkle's Secret Ingredient" },
|
||||
[26] = { str = "In the building behind her, turn in Noxious Lair Investigation" },
|
||||
[27] = { str = "Go on the hill behind the building, accept The Schrimshank Redemption" },
|
||||
[28] = { str = "Run down to 52,45 and turn in Gahz'Ridian", x = 52, y = 45, zone = "Tanaris" },
|
||||
[29] = { str = "Run down to the entrance at 55,70 take the spiral down to the entrance that is north. first fork go right. after the circular room at the next fork go right. You will enter a big square room. Go right to 55,71 and grab the survey gear for The Schrimshank Redemption", x = 55, y = 70, zone = "Tanaris" },
|
||||
[30] = { str = "Die on purpose so you end up at Gadget" },
|
||||
[31] = { str = "Go to the hill on the west side of town, turn in The Schrimshank Redemption accept Insect Part Analysis pt.1" },
|
||||
[32] = { str = "Go to the house on the NW part of town, turn in Insect Part Analysis pt.1 accept Insect Part Analysis pt.2" },
|
||||
[33] = { str = "Go back up on the hill, turn in Insect Part Analysis pt.2 accept Rise of the Silithid" },
|
||||
[34] = { str = "Run up to the Shimmering Flats to 78,74 and turn in An Orphan Looking For A Home accept A Short Incubation and since you already have this, turn it back in and accept The Newest Member of the Family now you have 1 hour.", x = 78, y = 74, zone = "Thousand Needles" },
|
||||
[35] = { str = "Fly to Theramore and get any mageweave you have out and build up first aid as much as you can." },
|
||||
[36] = { str = "Boat to Menethil and fly to IF" },
|
||||
[37] = { str = "Make IF your home and get new skills" },
|
||||
[38] = { str = "Go to 77,11 and turn in Return to Ironforge accept A Future Task and Passing the Burden", x = 77, y = 11, zone = "Ironforge" },
|
||||
[39] = { str = "Turn around to 70,18 and turn in A Future Task", x = 70, y = 18, zone = "Ironforge" },
|
||||
[40] = { str = "Go to 31,4 and turn in Passing the Burden accept Arcane Runes and An Easy Pickup", x = 31, y = 4, zone = "Ironforge" },
|
||||
[41] = { str = "Go to 70,93, turn in An Easy Pickup accept Signal For Pickup then turn it back in. Now you got the flare gun to signal later on.", x = 70, y = 93, zone = "Ironforge" },
|
||||
[42] = { str = "Fly to the Hinterlands" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------48-48 The Hinterlands
|
||||
--[411] = {
|
||||
[4848] = {
|
||||
title = "48-48 The Hinterlands",
|
||||
--n = "48-48 The Hinterlands",
|
||||
--pID = 410, nID = 412,
|
||||
--itemCount = 8,
|
||||
items = {
|
||||
[1] = { str = "48-48 The Hinterlands" },
|
||||
[2] = { str = "Go in the base downstairs to 14,43 and turn in The Newest Member of the Family accept Food For Baby", x = 14, y = 43, zone = "The Hinterlands" },
|
||||
[3] = { str = "Run up to 26,48 and turn in Rhapsody's Kalimdor Kocktail Accept Rhapsody's Tale", x = 26, y = 48, zone = "The Hinterlands" },
|
||||
[4] = { str = "Grind down to the lake at 40,59 and Violet Tragan (Mushroom) from the bottom of the lake for Sprinkle's Secret Ingredient", x = 40, y = 59, zone = "The Hinterlands" },
|
||||
[5] = { str = "Grind until you’re east of 57,47 and kill Silvermane Stalkers for Food For Baby", x = 57, y = 47, zone = "The Hinterlands" },
|
||||
[6] = { str = "Run back to Aerie Peak and go to the bottom floor of the Inn" },
|
||||
[7] = { str = "Turn in Food For Baby accept Becoming A Parent then turn it back in. Cute pet and good xp =)" },
|
||||
[8] = { str = "Hearth to IF and fly to BB" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------48-49 Stranglethorn Vale
|
||||
--[412] = {
|
||||
[4849] = {
|
||||
title = "48-49 Stranglethorn Vale",
|
||||
--n = "48-49 Stranglethorn Vale",
|
||||
--pID = 411, nID = 413,
|
||||
--itemCount = 27,
|
||||
items = {
|
||||
[1] = { str = "48-49 Stranglethorn Vale" },
|
||||
[2] = { str = "Go down to the first floor of the Inn, make it your home" },
|
||||
[3] = { str = "Turn in Back To Booty Bay and Whiskey Slim's Lost Grog" },
|
||||
[4] = { str = "Enter the house next to the upside down, half ship, turn in Deliver to MacKinley" },
|
||||
[5] = { str = "Under that boat outside, accept Stranglethorn Fever" },
|
||||
[6] = { str = "Go up the ramp and first house past the bridge, turn in all of the robot chicken escorts you’ve gotten. I didn’t get the Tanaris one while writing this guide so I missed out on the quest to get 7100 extra exp" },
|
||||
[7] = { str = "Near the boat, accept The Captain's Chest" },
|
||||
[8] = { str = "Go kill gorillas around 34,63 for Stranglethorn Fever then go up into the cave at 35,60 turn it in. the guy in the cave asks for 10 gorilla fangs, then he summons 3 waves of gorillas. Mokk is in the 3rd wave. They’re all around level 42-44 it starts with 3, then 5 then I think 6 or 7. It can get tough. Just kill Mokk first in case you die.", x = 35, y = 60, zone = "Stranglethorn Vale" },
|
||||
[9] = { str = "Go up to 38,34 and kill King Bangalash for Big Game Hunter he spawns level 33 minions. You can kill him before a few come out. Not like they’re a problem.", x = 38, y = 34, zone = "Stranglethorn Vale" },
|
||||
[10] = { str = "Run up to 48,25 and kill the elite ogres all around here until Maury’s Key drops for Cracking Maury’s Foot If you don’t find this after an hour just abandon the quest. It has a low drop rate. I grind till im 2 bars from 49 if I don’t get the key. Usally it’s about an hours worth.", x = 48, y = 25, zone = "Stranglethorn Vale" },
|
||||
[11] = { str = "Go up to Nessingways at 35,10 and turn in Big Game Hunter", x = 35, y = 10, zone = "Stranglethorn Vale" },
|
||||
[12] = { str = "Hearth to Booty Bay Run up to the half boat just outside the Inn" },
|
||||
[13] = { str = "Turn in Stranglethorn Fever" },
|
||||
[14] = { str = "Run to the shore just east of BB and open blue bottles until you get Carefully Folded Note which starts Message in A Bottle pt.1" },
|
||||
[15] = { str = "Go to 36,69 and kill Gorlash for “The Captain's Chest” He’s a 47 elite, it can be tough but I did it. Use everything you have", x = 36, y = 69, zone = "Stranglethorn Vale" },
|
||||
[16] = { str = " Go to 38,80 and turn in Message in A Bottle pt.1 SKIP the next part, unless you can get a group to kill the 51 ape", x = 38, y = 80, zone = "Stranglethorn Vale" },
|
||||
[17] = { str = "Go down to the pirate ships, 1 is at 33,87 and the other 2 are at 30,88 You want to go to the 2nd floor near the front of the ship and kill the captain of each for “The Bloodsail Buccaneers pt.5”", x = 33, y = 87, zone = "Stranglethorn Vale" },
|
||||
[18] = { str = "Look for a scroll on one of the ships called Cortello's Riddle which starts “Cortello's Riddle pt.1”" },
|
||||
[19] = { str = "If hearth is up, use it, otherwise die so you end up at BB" },
|
||||
[20] = { str = "Go near the boat, turn in “The Captain's Chest”" },
|
||||
[21] = { str = "Go up top of the Inn, turn in “The Bloodsail Buccaneers pt.5”" },
|
||||
[22] = { str = "Fly to SW and go to 64,20 turn in “Rhapsody's Tale” SKIP the rest", x = 64, y = 20, zone = "Stormwind" },
|
||||
[23] = { str = "From here on, either look at the AH when you go by one, or use your AH char to search for your Beaststalker Bracers. I got mine for 8g also look for a mithril casing for later in Un’Goro" },
|
||||
[24] = { str = "Fly to Duskwood" },
|
||||
[25] = { str = "Run east through Deadwind to the Swamp of Sorrows" },
|
||||
[26] = { str = "Follow the road until it forks and the left fork has a bridge at 22,48 and under it is A Soggy Scroll which turns in “Cortello's Riddle pt.1” accept “Cortello's Riddle pt.2”", x = 22, y = 48, zone = "Swamp of Sorrow" },
|
||||
[27] = { str = "Run down to the Blasted Lands" },
|
||||
}
|
||||
},
|
||||
|
||||
--------49-50 Blasted Lands
|
||||
--[413] = {
|
||||
[4950] = {
|
||||
title = "49-50 Blasted Lands",
|
||||
--n = "49-50 Blasted Lands",
|
||||
--pID = 412, nID = 501,
|
||||
--itemCount = 30,
|
||||
items = {
|
||||
[1] = { str = "49-50 Blasted Lands" },
|
||||
[2] = { str = " No need to rush through this zone, so grind on anything you see." },
|
||||
[3] = { str = " Stop at 50,14 and accept the following 5 quests: The Basilisk's Bite Vulture's Vigor Snickerfang Jowls A Boar's Vitality and The Decisive Striker", x = 50, y = 14, zone = "Blasted Lands" },
|
||||
[4] = { str = "You’re going to need the following amount of items to complete all 5 of these quests. Snickerfang Jowls:5, Blasted Boar Lungs:6, Scorpok Pincers:6, Basilisk Brain:11, Vulture Gizzards:14 It’s going to be like grinding getting all this so you’re killing 2 birds with 1 stone. You’ll most likely gain half a level before you turn these in." },
|
||||
[5] = { str = "Just circle the center of the map and you’ll find all the stuff you need to kill. I’d mark it with coords but there would be way too many. You might want to avoid anything 53 and up which are farther to the south You should make some nice money with skinning here." },
|
||||
[6] = { str = "You should be close to 3 ½ bars into 49 now" },
|
||||
[7] = { str = "Grind down to 51,35 and accept Everything Counts In Large Amounts If you do find one of these, hand it back in when you pass her, you’re bound to find at least one while here. Don’t even bother with the other quest you’ll Never find it. I’ve been playing WoW since release and never found one. ", x = 51, y = 35, zone = "Blasted Lands" },
|
||||
[8] = { str = "Go to 50,14 and turn in the 5 quests, The Basilisk's Bite Vulture's Vigor Snickerfang Jowls A Boar's Vitality and The Decisive Striker but turn in the one you want the most last, because you get buffed and get an item as well. These each give 4700 xp", x = 50, y = 14, zone = "Blasted Lands" },
|
||||
[9] = { str = "Go to Nethergarde Keep to the top of the tall tower at 66,19 and turn in “Thadius Grimshade” SKIP the next part.", x = 66, y = 19, zone = "Blasted Lands" },
|
||||
[10] = { str = "You should be close to 70% into 49 now. If you don’t want to do ZF to hit 50, grind here until you’re about 13k from 50. If you wanna do ZF go to the next step." },
|
||||
[11] = { str = "Hearth to Booty Bay" },
|
||||
[12] = { str = "Accept Zanzil's Mixture and A Fool's Stout" },
|
||||
[13] = { str = "Get on the boat to Rachet" },
|
||||
[14] = { str = "Accept “Volcanic Activity at the first hut off the dock" },
|
||||
[15] = { str = "Just outside this hut is a green chest, open it for “The Stone Circle" },
|
||||
[16] = { str = "Fly to Tanaris" },
|
||||
[17] = { str = "Go near the NW entrance, turn in Sprinkle's Secret Ingredient accept Delivery For Marin" },
|
||||
[18] = { str = "Go back near the South entrance and turn in Delivery For Marin accept Noggenfogger Elixir then turn it back in. Now you get 5 elixirs and can buy them. These have some useful effects but are more fun than useful." },
|
||||
[19] = { str = "Run in the Shimmering Flats to 77,77 and turn in Zanzil's Mixture and A Fool's Stout accept Get the Goblins Drunk go to 79,76 and turn it in.", x = 77, y = 77, zone = "Thousand Needles" },
|
||||
[20] = { str = "Go back to 77,77 and accept Report Back to Fizzlebub", x = 77, y = 77, zone = "Thousand Needles" },
|
||||
[21] = { str = "Go to 52,45 and turn in “The Stone Circle” SKIP the rest unless you plan on doing the Sunken Temple.", x = 52, y = 45, zone = "Thousand Needles" },
|
||||
[22] = { str = "You should be about 30k from 50 now, Like I said above, either go do ZF or you should have grinded in Blasted Lands." },
|
||||
[23] = { str = "If you do ZF you only really need to complete at least 2-3 of the following quests Troll Temper Divino-matic Rod Gahz'rilla The Prophecy of Mosh'Aru I highly suggest getting Divino-matic Rod and Gahz'rilla because you get an awesome ring and a mount speed inscrease trinket which I’ve used since the start of WoW and you will use them on up to 60 and then some." },
|
||||
[24] = { str = "Now you should be about 1-2 bars into 50 if you went to ZF. From here on out there is a lot more fresh content, as you seen 45-50 is a pain in the ass. We still have a lot of untouched areas to XP in now." },
|
||||
[25] = { str = "Hearth to BB and turn in Report Back to Fizzlebub" },
|
||||
[26] = { str = "Fly to IF to get new skills and accept the quest “The Hunter's Charm”" },
|
||||
[27] = { str = "Make sure you get at least 15 silk cloths out of the mailbox or AH alt" },
|
||||
[28] = { str = "Make IF your home and accept “Assisting Arch Druid Staghelm”" },
|
||||
[29] = { str = "Fly to Thelsamar" },
|
||||
[30] = { str = "Run down into the Badlands all the way west to 1,62 and enter the Searing Gorge", x = 1, y = 62, zone = "Badlands" },
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,678 @@
|
||||
--[[--------------------------------------------------
|
||||
003_Alliance_50to60.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 003 From Lvl 50 to Lvl 60
|
||||
1.04.1
|
||||
-- First Release
|
||||
Alliance's Guide
|
||||
from level 50 to lever 60
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_003_Alliance_50to60 = {
|
||||
-----------50-51 Searing Gorge
|
||||
--[501] = {
|
||||
[5051] = {
|
||||
title = "50-51 Searing Gorge",
|
||||
--n = "50-51 Searing Gorge",
|
||||
--pID = 413, nID = 502,
|
||||
--itemCount = 72,
|
||||
items = {
|
||||
[1] = { str = "50-51 Searing Gorge" },
|
||||
[2] = { str = "Go down to 65,62 and touch the outhouse, accept Caught!", x = 65, y = 62, zone = "Searing Gorge" },
|
||||
[3] = { str = "Go just below the outhouse and kill the geologists for Caught!" },
|
||||
[4] = { str = "Clear all the mobs and at the bottom of the little pit, accept Suntara Stones pt.1 escort him to 74,19 and when he dies grab the note which starts Suntara Stones pt.2", x = 74, y = 19, zone = "Searing Gorge" },
|
||||
[5] = { str = "Run back down near the outhouse at 65,62 and get the last of your geologist kills if you need them and turn in Caught! at the outhouse, accept Ledger From Tanaris and grab the book he slips you under the door.", x = 65, y = 62, zone = "Searing Gorge" },
|
||||
[6] = { str = "Run down to 71,72 and kill Margol the Rager, and grab Margol's Horn off him which starts The Horn of the Beast This gives you the searing gorge key, useless now that there is a FP here but good XP", x = 71, y = 72, zone = "Searing Gorge" },
|
||||
[7] = { str = "Run over to 39,38 and accept Divine Retribution then talk to him until completed, accept The Flawless Flame", x = 39, y = 38, zone = "Searing Gorge" },
|
||||
[8] = { str = "Run up to Thorium Point at 38,26", x = 38, y = 26, zone = "Searing Gorge" },
|
||||
[9] = { str = "Grab these quests off the sign: WANTED: Overseer Maltorius (this will require a group) STOLEN: Smithing Tuyere and Lookout's Spyglass and JOB OPPORTUNITY: Culling the Competition" },
|
||||
[10] = { str = "Accept Curse These Fat Fingers Fiery Menace! Incendosaurs? Whateverosaur is More Like It near the tower" },
|
||||
[11] = { str = "Under the tent accept What The Flux?" },
|
||||
[12] = { str = "Grab the FP and fly to IF" },
|
||||
[13] = { str = "Stop at 71,16 and turn in Suntara Stones pt.2 accept Dwarven Justice", x = 71, y = 16, zone = "Searing Gorge" },
|
||||
[14] = { str = "Fly to Thelsamar" },
|
||||
[15] = { str = "Run down to 18,83 and turn in The Horn of the Beast accept Proof of Deed", x = 18, y = 83, zone = "Searing Gorge" },
|
||||
[16] = { str = "Hearth to IF" },
|
||||
[17] = { str = "Go to 69,11 turn in, Proof of Deed, accept At Last!", x = 69, y = 11, zone = "Searing Gorge" },
|
||||
[18] = { str = "Go to 75,23 and accept A Little Slime Goes A Long Way", x = 75, y = 23, zone = "Searing Gorge" },
|
||||
[19] = { str = "Fly to Thelsamar and run to 18,83", x = 18, y = 83, zone = "Searing Gorge" },
|
||||
[20] = { str = "Turn in At Last! put the key on your keyring. Easy 12k xp" },
|
||||
[21] = { str = "Now the fun part, doing all these quests. Some of the mobs you have to kill are in a widespread area so I really won’t list coords on them." },
|
||||
[22] = { str = "From here south kill glassweb spiders for Ledger From Tanaris" },
|
||||
[23] = { str = "Kill any golems you see over here for The Flawless Flame" },
|
||||
[24] = { str = "Go around the southern part of the cauldron (the pit) and circle it back towards TP and do the following:" },
|
||||
[25] = { str = "Kill heavy war golems and infernal elementals (not magma elementalsfor The Flawless Flame and heavy war golems for Curse These Fat Fingers" },
|
||||
[26] = { str = "Kill dark iron lookouts and steamsmiths (Only 6 of them, so come back if they don’t drop, they seem to drop outhouse key a lot) for STOLEN: Smithing Tuyere and Lookout's Spyglass" },
|
||||
[27] = { str = "Turn in Turn in The Flawless Flame accept Forging the Shaft when you’re near TB again." },
|
||||
[28] = { str = "Kill greater lava spiders (not searing) for Fiery Menace! Mostly SW" },
|
||||
[29] = { str = "If the Grimesilt Outhouse Key dropped, use it to start The Key to Freedom and turn it in at 65,62", x = 65, y = 62, zone = "Searing Gorge" },
|
||||
[30] = { str = "Go to 63,38 and start going down into the cauldron.", x = 63, y = 38, zone = "Searing Gorge" },
|
||||
[31] = { str = "Kill dark iron taskmasters and slavers down here and inside the cave if you see them for JOB OPPORTUNITY: Culling the Competition and Forging the Shaft" },
|
||||
[32] = { str = "Enter the caves at 41,54", x = 41, y = 54, zone = "Searing Gorge" },
|
||||
[33] = { str = "Go in the cave to 41,25 and go through the jail bar door, turn in Dwarven Justice accept Release Them", x = 41, y = 25, zone = "Searing Gorge" },
|
||||
[34] = { str = "Go up the ramp and stay right until 40,35 kill the boss here for WANTED: Overseer Maltorius and grab What The Flux? on the rail behind him. If you can’t find a group have the pet get the aggro and run the guys away from the plans. This is doable with 2 people but very tough. If you can’t get this quest done no big deal but I usually get it done.", x = 40, y = 35, zone = "Searing Gorge" },
|
||||
[35] = { str = "Keep following the path that goes outside and curves back in. You’ll come to a big dead end area with lots of Incendosaur for Incendosaurs? Whateverosaur is More Like It Save the scales" },
|
||||
[36] = { str = "Grind until youre 36k from leveling" },
|
||||
[37] = { str = "Die on purpose so you end up back at TP and turn in these quests" },
|
||||
[38] = { str = "Go next to the sign, turn in WANTED: Overseer Maltorius" },
|
||||
[39] = { str = "To the right of the tower, turn in Curse These Fat Fingers Fiery Menace! and Incendosaurs? Whateverosaur is More Like It" },
|
||||
[40] = { str = "Go to the tent behind here, turn in STOLEN: Smithing Tuyere and Lookout's Spyglass and JOB OPPORTUNITY: Culling the Competition" },
|
||||
[41] = { str = "Go to the next tent, turn in What The Flux?" },
|
||||
[42] = { str = "Once this is all handed in you can now do repeat quests for small xp and faction with TB. The reason I said to save the scales or sell em" },
|
||||
[43] = { str = "You should be a hair from 51 now, go south of base to 38,38", x = 38, y = 38, zone = "Searing Gorge" },
|
||||
[44] = { str = "Turn in Forging the Shaft accept The Flame’s Casing" },
|
||||
[45] = { str = "Now you shoud be between 1-2 bars into 51" },
|
||||
[46] = { str = "Run over to the path up the mountain at 24,32", x = 24, y = 32, zone = "Searing Gorge" },
|
||||
[47] = { str = "Kill the elites 1 by 1 on your way up to the lava pit at 29,25 and clear the mobs around it, the idolators don’t chain link and don’t attack when you touch the rock in the center. Jump on the rock either with mount or jump in lava then on it. Open it for Release Them", x = 29, y = 25, zone = "Searing Gorge" },
|
||||
[48] = { str = "While killing these guys around the pool you should have found a Symbol of Ragnaros for The Flame’s Casing if not kill until you do" },
|
||||
[49] = { str = "Make sure you talk to the caged npc next to the lava, he gives you Prayer to Elune pt.1 Listen to his short story and turn it in for Prayer to Elune pt.2 Now you have to kill these for the Rag dropping and the Prayer of Elune, Easy drops" },
|
||||
[50] = { str = "Go down to 38,38 and turn in The Flame’s Casing accept The Torch of Retribution pt.1 then turn it back in accept The Torch of Retribution pt.2 then grab the torch in front of him and complete it and accept Squire Maltrake and turn that back in and accept Set Them Ablaze!", x = 38, y = 38, zone = "Searing Gorge" },
|
||||
[51] = { str = "Now equip the staff and run to each of the 4 towers at N:33,53 W:36,60 S:44,61 E:50,54 and either kill the guys downstairs, and run up and light the brazier." },
|
||||
[52] = { str = "When you get them all, look for a safe spot to jump down and go in the caves at 41,54 again and through the jail bar door at 37,44 and run to the room with the golem at 41,25 and touch the candle covered stone and turn in Release Them SKIP the next part unless you wanna do it with a group, it’s very tough you have to fight that golem and a dwarf both elites.", x = 41, y = 54, zone = "Searing Gorge" },
|
||||
[53] = { str = "Die on purpose so you end up at TP and go down to 29,38 and turn in Set Them Ablaze! watch the cutscene as he turns into a dragon", x = 29, y = 38, zone = "Searing Gorge" },
|
||||
[54] = { str = "Open the chest on the ground accept Trinkets... then open it again and complete it. Open it and keep the Black Dragonflight Molt for later In the Burning Steppes." },
|
||||
[55] = { str = "Fly to the Blasted Lands and run up into the Swamp of Sorrows" },
|
||||
[56] = { str = "Go to 81,91 and look for a named murloc Jarquia for Ledger From Tanaris", x = 81, y = 91, zone = "Swamp of Sorrows" },
|
||||
[57] = { str = "Once you kill him hearth to IF then either get a portal to Darnassus or fly to Menethil then boat to Auberdine and fly to Darn" },
|
||||
[58] = { str = "Go to the top of the temple of the moon at 38,80 and turn in Prayer to Elune pt.2", x = 38, y = 80, zone = "darnassus" },
|
||||
[59] = { str = "Go to the next section up here and turn in Rise of the Silithid accept March of the Silithid" },
|
||||
[60] = { str = "Go to 34,9 at the top of the tower and turn in Assisting Arch Druid Staghelm accept Un'Goro Soil", x = 34, y = 9, zone = "darnassus" },
|
||||
[61] = { str = "Make Darnassus your home at 67,15", x = 67, y = 15, zone = "darnassus" },
|
||||
[62] = { str = "Now either fly to Theramore or boat to Menethil then to Theramore" },
|
||||
[63] = { str = "Get first aid up to 290 if you haven’t for heavy runecloth bandages" },
|
||||
[64] = { str = "Go over to 54,55 to the wrecked ship and grab the overdue package for Ledger From Tanaris", x = 54, y = 55, zone = "Duskwallow Marsh" },
|
||||
[65] = { str = "Go to the cave at 31,66 and touch the scroll in the back of the cave which turns in Cortello's Riddle pt.2 accept Cortello's Riddle pt.3", x = 31, y = 66, zone = "Duskwallow Marsh" },
|
||||
[66] = { str = "Aggro all the raptors and die so you end up at Theramore" },
|
||||
[67] = { str = "Fly to Gadgetzan" },
|
||||
[68] = { str = "Just as you enter Gadget, turn in Ledger From Tanaris" },
|
||||
[69] = { str = "Get your level 52 set gloves out of bank or mail for later" },
|
||||
[70] = { str = "Between the 2 North gates accept Super Sticky" },
|
||||
[71] = { str = "Go to the hut just west and turn in March of the Silithid accept Bungle in the Jungle" },
|
||||
[72] = { str = "Run down into the Un’Goro Crater at 26,52", x = 26, y = 52, zone = "Tanaris" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------51-52 Un’Goro Crater
|
||||
--[502] = {
|
||||
[5152] = {
|
||||
title = "51-52 Un’Goro Crater",
|
||||
--n = "51-52 Un’Goro Crater",
|
||||
--pID = 501, nID = 503,
|
||||
--itemCount = 34,
|
||||
items = {
|
||||
[1] = { str = "51-52 Un’Goro Crater" },
|
||||
[2] = { str = "Keep an eye out for the following items laying around the crafter: Power Crystals (need 7 of red,blue,green,yellow), Un’Goro Dirt Piles (get as many as you can), and Bloodpetal Sprouts: save in sets of 15" },
|
||||
[3] = { str = "I tell you to grind through the raptors here only for 1 reason. To find the item A Mangled Journal. Once you have it you don’t have to grind through the raptors." },
|
||||
[4] = { str = "Follow the path down to the waterfall at 71,75 and accept The Apes of Un'Goro and The Fare of Lar'Korwi", x = 71, y = 75, zone = "Un’Goro Crater" },
|
||||
[5] = { str = "Grind to 62,68 and click on the wrecked raft, accept It's A Secret to Everybody pt.1 then take 2 steps under the water, turn it in and accept It's A Secret to Everybody pt.2", x = 62, y = 68, zone = "Un’Goro Crater" },
|
||||
[6] = { str = "Grind to 68,56 and get the meat off the big dinosaur for The Fare of Lar'Korwi", x = 68, y = 56, zone = "Un’Goro Crater" },
|
||||
[7] = { str = "Go back to 71,75 and turn in The Fare of Lar'Korwi accept The Scent of Lar'Korwi", x = 71, y = 75, zone = "Un’Goro Crater" },
|
||||
[8] = { str = "Grind west to about 67,63 and there will be 2 spots with a bunch of eggs. Clear the raptors around it and stand on the eggs to get the mates to spawn for The Scent of Lar'Korwi", x = 67, y = 63, zone = "Un’Goro Crater" },
|
||||
[9] = { str = "Once you have this done, go back to 71,75 and turn in The Scent of Lar'Korwi accept The Bait For Lar'Korwi you should have found the jornal by now as well, if not keep grinding raptors while you’re questing in this spot. If you have start the quest Williden’s Journal", x = 71, y = 75, zone = "Un’Goro Crater" },
|
||||
[10] = { str = "Go up to 79,49 it’s off to the east side in the mountains, behind the east pylon. You’ll see a big skeleton which is also the GY. There is a fairly big flat stone, stand on it and use the meat and phermone. This will summon Lar’Korwi for The Bait For Lar'Korwi super easy kill even at 51 and he’s 56, he has 3600 hp.", x = 79, y = 49, zone = "Un’Goro Crater" },
|
||||
[11] = { str = "Go to 46,13 and accept Chasing A-Me 01 and run up the path behind her into Marshal’s Refuge.", x = 46, y = 13, zone = "Un’Goro Crater" },
|
||||
[12] = { str = "Just to the left accept Shizzle's Flyer" },
|
||||
[13] = { str = "Next to the left, a little bit back, accept Muigin and Larion" },
|
||||
[14] = { str = "Next, near the sign accept Lost! and on the sign accept Beware of Pterrordax" },
|
||||
[15] = { str = "In front of the cave, accept Roll the Bones" },
|
||||
[16] = { str = "If you have at least 15 bloodpetal sprouts, turn them in at the kodo for the repeatable quest Dadanga is Hungry! you can get a very expensive recipe but it’s rare but worth trying." },
|
||||
[17] = { str = "To the right of the cave, accept Alien Ecology" },
|
||||
[18] = { str = "To the right again, turn in Williden’s Journal accept Expedition Salvation" },
|
||||
[19] = { str = "Run just south a bit and you’ll fine Linken just outside of a half hollow tree. Turn in It's A Secret to Everybody pt.2 accept It's A Secret to Everybody pt.3" },
|
||||
[20] = { str = "Get the FP to the right of the cave (added in 1.11) then go in the cave all the way to the end and accept Crystals of Power and then turn it in Accept the 3 pylon quests The Northern Pylon The Eastern Pylon The Western Pylon" },
|
||||
[21] = { str = "When ever you see the following mobs kill them on site until the quest associate with them is finished." },
|
||||
[22] = { str = "Kill bloodpetals for Muigin and Larion" },
|
||||
[23] = { str = "Kill diametradons and pterrodaxes for Shizzle's Flyer and Roll the Bones" },
|
||||
[24] = { str = "Kill pterrodaxes and frenzied pterrodaxes for Beware of Pterrordax" },
|
||||
[25] = { str = "Go east along the mountains to 54,13 and take that path up examine the pylon for The Northern Pylon and go farther north, there should be sone pterrodaxes.", x = 54, y = 13, zone = "Un’Goro Crater" },
|
||||
[26] = { str = "Go east to 63,16 and kill gorillas for The Apes of Un'Goro then go in the cave and stay right to turn in Chasing A-Me 01 SKIP the next part for now", x = 63, y = 16, zone = "Un’Goro Crater" },
|
||||
[27] = { str = "You’re gonna see a bunch of black lakes near the north of the map around 52,23 Kill the tar monsters around the lakes for Super Sticky The 3 lakes south of the gorillas around 61,27 have lower level tar monsters and there is also bloodpetals around here for Muigin and Larion there is also diametradons and pterrodaxes for Shizzle's Flyer running around", x = 61, y = 27, zone = "Un’Goro Crater" },
|
||||
[28] = { str = "Stop at 68,36 and grab the crate of foodstuff for Expedition Salvation", x = 68, y = 36, zone = "Un’Goro Crater" },
|
||||
[29] = { str = "Try to collect all the stuff for Shizzle's Flyer out here if you aren’t just going around looking for them alone. I always seem to find them all before I finish the bloodpetals." },
|
||||
[30] = { str = "Go to 76,51 and follow the path up to the pylon for The Eastern Pylon and there should be pterrodaxes further south at 75,61", x = 76, y = 51, zone = "Un’Goro Crater" },
|
||||
[31] = { str = "Go to 71,75 and turn in The Bait For Lar'Korwi and The Apes of Un'Goro SKIP the next part for now", x = 71, y = 75, zone = "Un’Goro Crater" },
|
||||
[32] = { str = "Now if you grinded a whole lot like I did on those damn flowers and dinosaurs, you should be really close to 52 if not 52 now." },
|
||||
[33] = { str = "Just east of the volcano (center of map) there are pterrodaxes all for Beware of Pterrordax if you’re having trouble finding them there is a spawn of 6 of them all the way south at 55,90", x = 55, y = 90, zone = "Un’Goro Crater" },
|
||||
[34] = { str = "Run west to 55,73 there is a diametradon camp of about 5-6 Kill these if you need scales still for Shizzle's Flyer or Roll the Bones", x = 55, y = 73, zone = "Un’Goro Crater" },
|
||||
[35] = { str = "Go west to 50,77 into the slithering scar, at the fork go left into the big room, stand in the middle, use the scraping vial for Alien Ecology", x = 50, y = 77, zone = "Un’Goro Crater" },
|
||||
[36] = { str = "There is another diametradon camp if you still need scales or bones for Shizzle's Flyer or Roll the Bones and they’re also all over now" },
|
||||
[37] = { str = "Run to the camp at 38,65 and grab the research equipment for Expedition Salvation", x = 38, y = 65, zone = "Un’Goro Crater" },
|
||||
[38] = { str = "Kill frenzied pterrodaxes all around 35,38 (they’re everywhere) in the NW part of the map for Beware of Pterrordax plus there are many diametradons here for Shizzle's Flyer or Roll the Bones", x = 35, y = 38, zone = "Un’Goro Crater" },
|
||||
[39] = { str = "Go down to 23,59 and touch the western pylon for The Western Pylon and kill any pterrodaxes you need behind it", x = 23, y = 59, zone = "Un’Goro Crater" },
|
||||
[40] = { str = "Go to 30,50 and accept Finding the Source", x = 30, y = 50, zone = "Un’Goro Crater" },
|
||||
[41] = { str = "Go over to Fire Plume Ridge at 51,48 and kill elementals, try to avoid anything 56+ for Volcanic Activity Leave blazing invaders alone", x = 51, y = 48, zone = "Un’Goro Crater" },
|
||||
[42] = { str = "Once you have that done, dismiss pet and mount up towards the top of the volcano and look for what looks like the instance waiting stones but with fire cracks in it. Dismount and FD then if there is a mob near it put pet on it and use the thermometer for Finding the Source there is more than one and it doesn’t have to be at the top I see them at the bottom too." },
|
||||
[43] = { str = "Unless you need ashes still run to 30,50 and turn in Finding the Source accept The New Springs", x = 30, y = 50, zone = "Un’Goro Crater" },
|
||||
[44] = { str = "Go up into the cave (in the same manner) at 51,49 and turn in Lost! then accept A Little Help From My Friends he follows you, once you get him out of the ridge it’s easy. Just go straight out the cave over the edge, if done right you only have to fight 1 element. Once you go north past the river it’s pie.", x = 51, y = 49, zone = "Un’Goro Crater" },
|
||||
[45] = { str = "When you get him back to town run up near the sign by the cave and it will complete then turn it in and Beware of Pterrordax" },
|
||||
[46] = { str = "Turn in Shizzle's Flyer" },
|
||||
[47] = { str = "Turn in Muigin and Larion SKIP the rest" },
|
||||
[48] = { str = "Turn in Roll the Bones" },
|
||||
[49] = { str = "Turn in Alien Ecology" },
|
||||
[50] = { str = "Turn in Expedition Salvation" },
|
||||
[51] = { str = "In the back of the cave turn in The Northern Pylon The Eastern Pylon The Western Pylon accept Making Sense of It then turn it back in. She then tells you about buffs from the pylons." },
|
||||
[52] = { str = "Run to 29,22 and follow the path into Slithus to 50,34 grab the FP and fly to gadget.", x = 29, y = 22, zone = "Un’Goro Crater" },
|
||||
[53] = { str = "Go to the NW part of town, turn in Bungle in the Jungle SKIP the next part then hand in Super Sticky between the 2 entrances" },
|
||||
[54] = { str = "Hearth to Darnassus and get new skills" },
|
||||
[55] = { str = "You should have at least 50+ soils easy now." },
|
||||
[56] = { str = "Go to 31,8 and turn in Un'Goro Soil", x = 31, y = 8, zone = "Darnassus" },
|
||||
[57] = { str = "Now go up to the top of the tower and accept Morrowgrain Research pt.1 then go downstairs and turn it in, accept Morrowgrain Research pt.2" },
|
||||
[58] = { str = "Now you might want to get extra seed packets depending on how many soils you have. You can use the pouch every 10 minutes and you won’t always get a morrowgrain. All you need is 10 anyway" },
|
||||
[59] = { str = "Run through to Rut’theran Village and go in the house to the right and accept Moontouched Wildkin it’s a winterspring feather quest" },
|
||||
[60] = { str = "Fly to Astranaar, then ride all the way east on the road to 91,46 which goes into Azshara, it’s far", x = 91, y = 46, zone = "Ashenvale" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------52-53 Azshara
|
||||
--[503] = {
|
||||
[5253] = {
|
||||
title = "52-53 Azshara",
|
||||
--n = "52-53 Azshara",
|
||||
--pID = 502, nID = 504,
|
||||
--itemCount = 10,
|
||||
items = {
|
||||
[1] = { str = "52-53 Azshara" },
|
||||
[2] = { str = "Just as you enter, on the right at 11,77 grab the FP", x = 11, y = 77, zone = "Azshara" },
|
||||
[3] = { str = "Just behind him, accept Spiritual Unrest and A Land Filled With Hatred" },
|
||||
[4] = { str = "Go just north to around 14,72 and 16,67and kill all the ghosts around here until you complete Spiritual Unrest", x = 14, y = 72, zone = "Azshara" },
|
||||
[5] = { str = "Go just north to 19,61 and kill all the satyr’s around here for A Land Filled With Hatred", x = 19, y = 61, zone = "Azshara" },
|
||||
[6] = { str = "Go back to 11,77 and turn in Spiritual Unrest and A Land Filled With Hatred", x = 11, y = 77, zone = "Azshara" },
|
||||
[7] = { str = "Go to 39,55 and get the Markri rubbing for Arcane Runes", x = 39, y = 55, zone = "Azshara" },
|
||||
[8] = { str = "Go to 36,53 and get the Beth’Amara Rubbing for Arcane Runes", x = 36, y = 53, zone = "Azshara" },
|
||||
[9] = { str = "Go to 39,50 and get the Jin’yael rubbing for Arcane Runes", x = 39, y = 50, zone = "Azshara" },
|
||||
[10] = { str = "Go to 42,42 and turn in The Hunter's Charm accept Courser Antlers this quest and the follow up are optional to do after you turn 53, I do them so if you don’t you’ll be behind a little on the guide. It takes about 1-2 hours unless you get lucky, to get all the pieces for this and the next quest but will put you about 20-25% into the level", x = 42, y = 42, zone = "Azshara" },
|
||||
}
|
||||
},
|
||||
|
||||
------------53-54 Felwood
|
||||
--[504] = {
|
||||
[5354] = {
|
||||
title = "53-54 Felwood",
|
||||
--n = "53-54 Felwood",
|
||||
--pID = 503, nID = 505,
|
||||
--itemCount = 51,
|
||||
items = {
|
||||
[1] = { str = "53-54 Felwood" },
|
||||
[2] = { str = "Stop at 54,86 and accept Cleansing Felwood", x = 54, y = 86, zone = "Felwood" },
|
||||
[3] = { str = "Run north a little bit to 51,81 and accept Forces of Jaedenar", x = 51, y = 81, zone = "Felwood" },
|
||||
[4] = { str = "Inside the house, accept The Corruption of the Jadefire" },
|
||||
[5] = { str = "Under the tent accept Verifying the Corruption and To Winterspring!" },
|
||||
[6] = { str = "Just across the road accept Timbermaw Ally" },
|
||||
[7] = { str = "Go just SW of here around 48,91 and kill the Furlbogs until you finish Timbermaw Ally Just grind em all for rep until you’re done", x = 48, y = 91, zone = "Felwood" },
|
||||
[8] = { str = "Go back to 50,85 and turn in Timbermaw Ally accept Speak to Nefian the other is repeatable for rep", x = 50, y = 85, zone = "Felwood" },
|
||||
[9] = { str = "Go up near the 2 lakes at 40,69 and kill the cursed oozes for the first part of A Little Slime Goes A Long Way pt.1", x = 40, y = 69, zone = "Felwood" },
|
||||
[10] = { str = "Go to the west of here now to 37,69 and kill the jadefire demons for The Corruption of the Jadefire these are good to farm too.", x = 37, y = 69, zone = "Felwood" },
|
||||
[11] = { str = "Go up to 39,59 and kill the tainted oozes for the second part of A Little Slime Goes A Long Way pt.1", x = 39, y = 59, zone = "Felwood" },
|
||||
[12] = { str = "Go just west of here around 37,59 and kill the Jaedenar for Forces of Jaedenar You don’t have to go in the caves.", x = 37, y = 59, zone = "Felwood" },
|
||||
[13] = { str = "Go back to 51,82 and turn in Forces of Jaedenar accept Collection of the Corrupt Water.", x = 51, y = 82, zone = "Felwood" },
|
||||
[14] = { str = "Inside the house turn in The Corruption of the Jadefire accept Further Corruption" },
|
||||
[15] = { str = "Go back up to Jaedenar to the green pool at 35,59 and fill the canteen for Collection of the Corrupt Water", x = 35, y = 59, zone = "Felwood" },
|
||||
[16] = { str = "Go back to 51,82 and turn in Collection of the Corrupt Water accept Seeking Spiritual Aid", x = 51, y = 82, zone = "Felwood" },
|
||||
[17] = { str = "Go up to 42,20 and kill Entropic beasts and horrors and explore the craters for Verifying the Corruption.", x = 42, y = 20, zone = "Felwood" },
|
||||
[18] = { str = "Go up to 46,14 and follow it to the back, killing the demons for Further Corruption When you kill Xavaric he'll drop Flute of Xavaric which starts Flute of Xavaric kill the satyr’s now to complete this.", x = 46, y = 14, zone = "Felwood" },
|
||||
[19] = { str = "Run over to Irontree Cavern at 55,17 and kill 15 of the elementals and that should be enough for Cleansing Felwood", x = 55, y = 17, zone = "Felwood" },
|
||||
[20] = { str = "Go up to 62,24 and get the FP", x = 62, y = 24, zone = "Felwood" },
|
||||
[21] = { str = "Go north to 64,8 and turn in Speak to Nefian accept Deadwood of the North", x = 64, y = 8, zone = "Felwood" },
|
||||
[22] = { str = "Now fall off the cliff to the west and start killing for Deadwood of the North once you’re done you want to kill until you’re 150 rep from the next rank with the timbermaw (put the rep as an xp bar for ease)" },
|
||||
[23] = { str = "Go back to 64,8 and turn in Deadwood of the North and you should be unfriendly now and not aggro’d any longer. Accept Speak to Salfa and turn in any 5 sets of feathers for extra rep and 550 xp", x = 64, y = 8, zone = "Felwood" },
|
||||
[24] = { str = "Go through the cave to Winterspring and just outside the cave to the right at 27,34 turn in Speak to Salfa", x = 27, y = 34, zone = "Winterspring" },
|
||||
[25] = { str = "Run south to 31,45 and turn in The New Springs accept Strange Sources also turn in It's A Secret to Everybody pt.3 accept The Videre Elixir and Threat of the Winterfall", x = 31, y = 45, zone = "Winterspring" },
|
||||
[26] = { str = "Run back throug the cave and go west at the fork into Moonglade." },
|
||||
[27] = { str = "Go to 48,67 and grab the FP", x = 48, y = 67, zone = "Moodglade" },
|
||||
[28] = { str = "You should be a hair from leveling now. You can kill something or just wait. Hearth to Astranaar and fly to Feralas" },
|
||||
[29] = { str = "Go in the Inn, accept Jonespyre's Request" },
|
||||
[30] = { str = "Go up to the top of the tower, turn it in, accept The Mystery of Morrowgrain turn it back in unless you’re still making the stuff. If you don’t have enough no big deal during this guide I didn’t have enough" },
|
||||
[31] = { str = "Go up to 45,25 and buy a bait and read on how to get the videre elixir", x = 45, y = 25, zone = "Feralas" },
|
||||
[32] = { str = "At 45,16 you can be put up to the top of the colossal tower and parachute down. Just make sure you unmount, I forgot about that and smashed a crater in the ground.", x = 45, y = 16, zone = "Feralas" },
|
||||
[33] = { str = "Go up to 44,10 and place the bait on the ground then go loot an everroot", x = 44, y = 10, zone = "Felalas" },
|
||||
[34] = { str = "Go back south to 45,25 to get your 3 videre elixir", x = 45, y = 25, zone = "Felalas" },
|
||||
[35] = { str = "Hearth to Astranaar" },
|
||||
[36] = { str = "Run back up into Felwood to 54,86 and turn in Cleansing Felwood", x = 54, y = 86, zone = "Felwood" },
|
||||
[37] = { str = "Now she allows you to get stuff for some neat potions that are on different cooldowns than potions are." },
|
||||
[38] = { str = "Go up to 51,81 and in the house turn in Further Corruption and Flute of Xavaric accept Felbound Ancients", x = 51, y = 81, zone = "Felwood" },
|
||||
[39] = { str = "Under the tent, turn in Verifying the Corruption" },
|
||||
[40] = { str = "Run up to 62,23", x = 62, y = 23, zone = "Felwood" },
|
||||
[41] = { str = "Go through the cave to Winterfall and just outside the cave accept Winterfall Activity" },
|
||||
[42] = { str = "Go to 31,45 and turn in The Videre Elixir accept Meet at the Grave", x = 31, y = 45, zone = "Winterspring" },
|
||||
[43] = { str = "Go to 62,36 and grab the FP", x = 62, y = 36, zone = "Winterspring" },
|
||||
[44] = { str = "Fly to Rachet" },
|
||||
[45] = { str = "Run west of the dock and turn in Volcanic Activity" },
|
||||
[46] = { str = "Run down to 65,43 and turn in Seeking Spiritual Aid accept Cleansed Water Returns to Felwood", x = 65, y = 43, zone = "The Barrens" },
|
||||
[47] = { str = "Fly to Theramore and boat to Menethil then fly to IF" },
|
||||
[48] = { str = "Just outside the military ward there should be a wandering npc, one is near FP too, grab the quest The New Frontier pt.1" },
|
||||
[49] = { str = "Go to 75,23 and turn in A Little Slime Goes A Long Way pt.1 accept A Little Slime Goes A Long Way pt.2", x = 75, y = 23, zone = "Ironforge" },
|
||||
[50] = { str = "Go to 31,4 and turn in Return to Tymor see it was worth the run", x = 31, y = 4, zone = "Ironforge" },
|
||||
[51] = { str = "Fly to Menethil then boat to Theramore and fly to Gadget" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------54-54 Tanaris
|
||||
--[505] = {
|
||||
[5453] = {
|
||||
title = "54-54 Tanaris",
|
||||
--n = "54-54 Tanaris",
|
||||
--pID = 504, nID = 506,
|
||||
--itemCount = 20,
|
||||
items = {
|
||||
[1] = { str = "54-54 Tanaris" },
|
||||
[2] = { str = "Get your mithril casing out of your bank or mailbox" },
|
||||
[3] = { str = "Go east to the GY at 54,28 and drink your videre elixir", x = 54, y = 28, zone = "Tanaris" },
|
||||
[4] = { str = "Now you’re gonna die, don’t rez just release and run north to 53,23 and turn in Meet at the Grave accept A Grave Situation", x = 53, y = 23, zone = "Tanaris" },
|
||||
[5] = { str = "Go back and rez at 54,28 and touch the only tombstone there, turn in A Grave Situation accept Linken's Sword", x = 54, y = 28, zone = "Tanaris" },
|
||||
[6] = { str = "Run into Un’Goro, I’d say fly but we have to go way SE" },
|
||||
[7] = { str = "Run up to 71,75 and accept The Mighty U'cha", x = 71, y = 75, zone = "Un’Goro" },
|
||||
[8] = { str = "Keep collecting dirt here if you need more morrowgrain" },
|
||||
[9] = { str = "Now all around the crater is slimes but you can find all the ones you need west of the volcano around 37,37 for A Little Slime Goes A Long Way pt.2 I think there are more on the west side of the volcano but you can look on both sides they’re scattered. If it says they’re cloning, finish them very fast or stun them. If they clone it’s a full health mob that you can’t scoop up.", x = 37, y = 37, zone = "Un’Goro" },
|
||||
[10] = { str = "Go to the cave at 64,16 and go to the right, when you see A-Me 01 accept Chasing A-Me 01 pt.1 and turn it back in. Fall over the edge and to the right and up around until you see U’cha for The Mighty U'cha", x = 64, y = 16, zone = "Un’Goro" },
|
||||
[11] = { str = "Run back to the front and go right again and accept Chasing A-Me 01 pt.2 now escort her out" },
|
||||
[12] = { str = "Escort A-Me to Marshal’s at 46,13 and turn in Chasing A-Me 01 pt.2", x = 46, y = 13, zone = "Un’Goro" },
|
||||
[13] = { str = "Go into Marshal’s and turn in Linken's Sword accept A Gnome's Assistance" },
|
||||
[14] = { str = "Go to the back of the cave and turn in A Gnome's Assistance and accept Linken’s Memory" },
|
||||
[15] = { str = "Run down and let the tar monsters kill you so you’re closer to the SE" },
|
||||
[16] = { str = "Run down to 71,75 and turn in The Mighty U'cha", x = 71, y = 75, zone = "Un’Goro" },
|
||||
[17] = { str = "You should be over half way to 55 now" },
|
||||
[18] = { str = "Hearth back to Astranaar and fly to Darnassus" },
|
||||
[19] = { str = "Go in the Temple of the Moon at 39,84 and fill the vial for Felbound Ancients", x = 39, y = 84, zone = "Darnassus" },
|
||||
[20] = { str = "Run into Felwood" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------54-54 Felwood
|
||||
--[506] = {
|
||||
[5454] = {
|
||||
title = "54-54 Felwood",
|
||||
--n = "54-54 Felwood",
|
||||
--pID = 505, nID = 507,
|
||||
--itemCount = 16,
|
||||
items = {
|
||||
[1] = { str = "54-54 Felwood" },
|
||||
[2] = { str = "Go to 51,82 and turn in Cleansed Water Returns to Felwood accept Dousing the Flames of Protection", x = 51, y = 82, zone = "Felwood" },
|
||||
[3] = { str = "Go in the house, turn in Felbound Ancients accept Purified! then turn it back in, easy 10k xp. Also turn in Linken’s Memory accept Silver Heart" },
|
||||
[4] = { str = "You should be 70% through now or close to it" },
|
||||
[5] = { str = "Start killing all the bears and wolves from here north until you have 11 silvery clawas for Silver Heart" },
|
||||
[6] = { str = "Go into the cave at 35,58", x = 35, y = 58, zone = "Felwood" },
|
||||
[7] = { str = "At the first open area with the caged npc at 36,56 is brazier for Dousing the Flames of Protection the 2nd one is just up the ramp", x = 36, y = 56, zone = "Felwood" },
|
||||
[8] = { str = "Continue past the room with candles surrounding the hole to the next open room at 36,53 for the 3rd and 4th brazier for Dousing the Flames of Protection", x = 36, y = 53, zone = "Felwood" },
|
||||
[9] = { str = "Don’t even bother trying to do the escort unless you get a group, I always skip it even if I find the key." },
|
||||
[10] = { str = "Run back outside and up to 51,19 and kill the tree elementals for Silver Heart", x = 51, y = 19, zone = "Felwood" },
|
||||
[11] = { str = "If you want to do the escort with the flute I suggest getting a group you get jumped by a lot of mobs." },
|
||||
[12] = { str = "Run All the way back down to 51,82 (I know no one wants to run back here, why the quest hub is so far from the FP is beyond me)", x = 51, y = 82, zone = "Felwood" },
|
||||
[13] = { str = "Turn in Dousing the Flames of Protection SKIP the next part for now" },
|
||||
[14] = { str = "In the house turn in Silver Heart accept Aquementas" },
|
||||
[15] = { str = "If you have skinning I’m sure you have at least 5 tainted hides, go down to 54,86 and turn them in for Salve via Skinning", x = 54, y = 86, zone = "Felwood" },
|
||||
[16] = { str = "Hearth to Astranaar and fly to Winterspring" },
|
||||
}
|
||||
},
|
||||
|
||||
--------------54-55 Winterspring
|
||||
--[507] = {
|
||||
[5455] = {
|
||||
title = "54-55 Winterspring",
|
||||
--n = "54-55 Winterspring",
|
||||
--pID = 506, nID = 508,
|
||||
--itemCount = 34,
|
||||
items = {
|
||||
[1] = { str = "54-55 Winterspring" },
|
||||
[2] = { str = "Go in Everlook accept Enraged Wildkin pt.1" },
|
||||
[3] = { str = "Go in the Inn, make it your home" },
|
||||
[4] = { str = "Accept The Everlook Report Duke Nicholas Zverenhoff and Sister Pamela" },
|
||||
[5] = { str = "On the other side of town accept Are We There, Yeti? pt.1" },
|
||||
[6] = { str = "Keep your eye out for those blue moonkin feathers to finish up Moontouched Wildkin" },
|
||||
[7] = { str = "Run All the way south to 60,73 to complete Strange Sources", x = 60, y = 73, zone = "Winterspring" },
|
||||
[8] = { str = "Hearth back to Everlook, if it’s not up die on purpose" },
|
||||
[9] = { str = "Go to 65,45 and kill yeti’s for Are We There, Yeti? pt.1", x = 65, y = 45, zone = "Winterspring" },
|
||||
[10] = { str = "Run back to Everlook and turn in Are We There, Yeti? pt.1 accept Are We There, Yeti? pt.2" },
|
||||
[11] = { str = "Go back to 65,45 and kill matriarch’s and patriarch’s for Are We There, Yeti? pt.2 there are a lot in the cave at 67,42", x = 67, y = 42, zone = "Winterspring" },
|
||||
[12] = { str = "Run back to Everlook and turn in Are We There, Yeti? pt.2 accept Are We There, Yeti? pt.3" },
|
||||
[13] = { str = "Go just east of the Inn and scare Legacki for Are We There, Yeti? pt.3" },
|
||||
[14] = { str = "Go east of Winterspring to 66,34 and kill the furlbogs there for Winterfall Activity and part of Threat of the Winterfall", x = 66, y = 34, zone = "Winterspring" },
|
||||
[15] = { str = "Hopefully you’ll find an Empty Firewater Flask on one of them which starts Winterfall Firewater" },
|
||||
[16] = { str = "Run up to Starfall Village at 51,30 and turn in To Winterspring! accept The Ruins of Kel'Theril", x = 51, y = 30, zone = "Winterspring" },
|
||||
[17] = { str = "Turn in Enraged Wildkin pt.1 SKIP part 2 for now also turn in The Ruins of Kel'Theril accept Troubled Spirits of Kel'Theril" },
|
||||
[18] = { str = "Grab the relic at 55,42 for Troubled Spirits of Kel'Theril dismiss pet before you open them then run and FD. 2nd relic is at 53,43. 3rd at 52,41 4th at 50,41" },
|
||||
[19] = { str = "Go west to 39,43 and kill furlbog here for Threat of the Winterfall also make sure you have your 10 feathers for Moontouched Wildkin", x = 39, y = 43, zone = "Winterspring" },
|
||||
[20] = { str = "Go to 31,45 and turn in Strange Sources Threat of the Winterfall and Winterfall Firewater accept Falling to Corruption", x = 31, y = 45, zone = "Winterspring" },
|
||||
[21] = { str = "Run to 27,34 and turn in Winterfall Activity", x = 27, y = 34, zone = "Winterspring" },
|
||||
[22] = { str = "You should now be 25-30% into 55" },
|
||||
[23] = { str = "Run through the tunnel to Felwood" },
|
||||
[24] = { str = "Go to 60,5 and touch the cauldron at the camp which turns in Falling to Corruption accept Mystery Goo", x = 60, y = 5, zone = "Winterspring" },
|
||||
[25] = { str = "Hearth to Everlook then fly to Darnassus" },
|
||||
[26] = { str = "In Rut’theran Village turn in Moontouched Wildkin 55,92 accept Find Ranshalla", x = 55, y = 92, zone = "Darnassus" },
|
||||
[27] = { str = "Go into Darnassus up to 34,8 in the big tower and turn in The New Frontier pt.1 accept The New Frontier pt.2 go down 1 floor and turn that in, accept Rabine Saturna", x = 34, y = 8, zone = "Darnassus" },
|
||||
[28] = { str = "Fly to Moonglade to 51,45 and turn in Rabine Saturna accept Wasteland", x = 51, y = 45, zone = "Moonglade" },
|
||||
[29] = { str = "Fly to Auberdine, boat to Menethil and fly to IF, make it your home. Make sure you have your black dragonflight molt" },
|
||||
[30] = { str = "Go to 75,23 and turn in A Little Slime Goes A Long Way pt.2", x = 75, y = 23, zone = "Ironforge" },
|
||||
[31] = { str = "Go to 38,55 in the throne room and accept The Smoldering Ruins of Thaurissan pt.1 then click on her and listen to the story and turn it back in, accept The Smoldering Ruins of Thaurissan pt.2", x = 38, y = 55, zone = "Ironforge" },
|
||||
[32] = { str = "In front of the FP accept Taking Back Silithus" },
|
||||
[33] = { str = "Fly to Lakeshire" },
|
||||
[34] = { str = "Run north to 46,6 and enter the Burning Steppes", x = 46, y = 6, zone = "Redridge Mountains" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------55-56 Burning Steppes
|
||||
--[508] = {
|
||||
[5556] = {
|
||||
title = "55-56 Burning Steppes",
|
||||
--n = "55-56 Burning Steppes",
|
||||
--pID = 507, nID = 509,
|
||||
--itemCount = 29,
|
||||
items = {
|
||||
[1] = { str = "55-56 Burning Steppes" },
|
||||
[2] = { str = "Go to 83,63 and follow the path up and grab the FP", x = 83, y = 63, zone = "Burning Steps" },
|
||||
[3] = { str = "Accept Extinguish the Firegut and FIFTY! YEP!" },
|
||||
[4] = { str = "In front of the broken house, accept Dragonkin Menace This is the start of the ony key chain" },
|
||||
[5] = { str = "Start killing ogres all over the mountain at 81,42 for Extinguish the Firegut then run back to 84,68 and turn it in, accept Gor'tesh the Brute Lord", x = 81, y = 42, zone = "Burning Steps" },
|
||||
[6] = { str = "Go NW to around 66,40 and collect the ruins that look like tombstones for The Smoldering Ruins of Thaurissan pt.2", x = 66, y = 40, zone = "Burning Steps" },
|
||||
[7] = { str = "Run up to 65,24 and go in the cave, turn in Yuka Screwspigot SKIP the rest", x = 65, y = 24, zone = "Burning Steps" },
|
||||
[8] = { str = "Outside accept Tablet of the Seven and Broodling Essence" },
|
||||
[9] = { str = "Go to 54,40 and touch the dwarf statue for Tablet of the Seven", x = 54, y = 40, zone = "Burning Steps" },
|
||||
[10] = { str = "Go west to 43,46 to blackrock stronghold or south to 49,55 the pillar of ash and kill the orcs for FIFTY! YEP! they drop in large amounts", x = 43, y = 46, zone = "Burning Steps" },
|
||||
[11] = { str = "While in the pillar of ash at 40,56 you should kill Gor’tesh for Gor'tesh the Brute Lord", x = 40, y = 56, zone = "Burning Steps" },
|
||||
[12] = { str = "Get a group if you can for Dragonkin Menace and then kill the mobs for it just ne of the camp along the east wall. It’s soloable but cutting it Also get 8 of the broodlings for Broodling Essence by using the device on them before you attack them." },
|
||||
[13] = { str = "Go to the cave at 94,31 and accept A Taste of Flame then give him the molt and hand the quest back in. SKIP the next part", x = 94, y = 31, zone = "Burning Steps" },
|
||||
[14] = { str = "Run back up to 65,23 and turn in Tablet of the Seven and Broodling Essence accept Felnok Steelspring", x = 65, y = 23, zone = "Burning Steps" },
|
||||
[15] = { str = "Ride back to 84,68 and next to the griffin turn in FIFTY! YEP! and Gor'tesh the Brute Lord accept Ogre Head On A Stick = Party", x = 84, y = 68, zone = "Burning Steps" },
|
||||
[16] = { str = "In front of the broken house, turn in Dragonkin Menace accept The True Masters pt.1" },
|
||||
[17] = { str = "Run up to the top of the mountin at 80,45 and click the soft dirt pile for Ogre Head On A Stick = Party then run back to 84,68 and turn it in", x = 80, y = 45, zone = "Burning Steps" },
|
||||
[18] = { str = "Fly to Lakeshire and run to the town hall at 29,44 and turn in The True Masters pt.1 accept The True Masters pt.2", x = 29, y = 44, zone = "Redridge Mountains" },
|
||||
[19] = { str = "Fly to SW" },
|
||||
[20] = { str = "Go to 78,18 into the SW keep and turn in The True Masters pt.2 accept The True Masters pt.3 then talk to the lady and then turn it back in and accept The True Masters pt.4", x = 78, y = 18, zone = "Stormwind City" },
|
||||
[21] = { str = "Fly back to Lakeshire and go to the townhall at 29,44 and turn in The True Masters pt.4 accept The True Masters pt.5", x = 29, y = 44, zone = "Redridge Mountains" },
|
||||
[22] = { str = "Fly to the Burning Steppes and turn in The True Masters pt.5 when you land and accept The True Masters pt.6" },
|
||||
[23] = { str = "Run up to 64,23 and listen to ragged john then run back to 84,68 and turn in The True Masters pt.6 I SKIP the next part, do it later if you’re worried about speed leveling. That was an easy 30k xp for doing nothing and your ony key chain is started.", x = 64, y = 23, zone = "Burning Steps" },
|
||||
[24] = { str = "You should be about 10k from 56, go grind until 5k on the orcs at 49,55", x = 49, y = 55, zone = "Burning Steps" },
|
||||
[25] = { str = "Hearth to IF" },
|
||||
[26] = { str = "Go to the thrown room at 38,55 and turn in The Smoldering Ruins of Thaurissan pt.2", x = 38, y = 55, zone = "Ironforge" },
|
||||
[27] = { str = "You should now be 56, get new skills" },
|
||||
[28] = { str = "Fly to Menethil and boat to Theramore" },
|
||||
[29] = { str = "Fly to Gadget" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------56-56 Tanaris
|
||||
--[509] = {
|
||||
[5655] = {
|
||||
title = "56-56 Tanaris",
|
||||
--n = "56-56 Tanaris",
|
||||
--pID = 508, nID = 510,
|
||||
--itemCount = 9,
|
||||
items = {
|
||||
[1] = { str = "56-56 Tanaris" },
|
||||
[2] = { str = "Go to the NW side of town and scare sprinkle for Are We There, Yeti? pt.3" },
|
||||
[3] = { str = "Make gadget your home" },
|
||||
[4] = { str = "To the south of lost rigger cove at 70,49 is a bunch of stones in a circle, Loot the stuff from the blue backpack and use the book to summon Aquementas He’s a level 54 water elemental pansy", x = 70, y = 49, zone = "Tanaris" },
|
||||
[5] = { str = "Hearth to gadget or die if it’s not up yet." },
|
||||
[6] = { str = "Fly to Un’goro" },
|
||||
[7] = { str = "Find Quixxil and scare him for Are We There, Yeti? pt.3" },
|
||||
[8] = { str = "Go to the back of the cave and turn in Aquementas accept Linken's Adventure and turn it in just outside the cave by the big tree SKIP the next part" },
|
||||
[9] = { str = "Fly to Silithus" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------56-56 Silithus
|
||||
--[510] = {
|
||||
[5656] = {
|
||||
title = "56-56 Silithus",
|
||||
--n = "56-56 Silithus",
|
||||
--pID = 509, nID = 511,
|
||||
--itemCount = 42,
|
||||
items = {
|
||||
[1] = { str = "56-56 Silithus" },
|
||||
[2] = { str = "Near the moonwell accept The Twilight Mystery" },
|
||||
[3] = { str = "In front of the Inn, turn in Taking Back Silithus accept Securing the Supply Lines" },
|
||||
[4] = { str = "SKIP the quest on the sign unless you get a group" },
|
||||
[5] = { str = "Make Cenarion Hold your home" },
|
||||
[6] = { str = "Upstairs accept Deadly Desert Venom" },
|
||||
[7] = { str = "There seems to be a lot of white ! because that’s a lot of AQ stuff you don’t have to worry about yet." },
|
||||
[8] = { str = "Go do Securing the Supply Lines and Deadly Desert Venom North and NE of town all around 55,24 the dredges, scorpids, and skitterers for these 2 quests are all over this area.", x = 55, y = 24, zone = "Silithus" },
|
||||
[9] = { str = "Run up to 81,18 and turn in Wasteland accept The Spirits of Southwind", x = 81, y = 18, zone = "Silithus" },
|
||||
[10] = { str = "Run up NW to around 22.9 and pick up the twilight tablet fragments for The Twilight Mystery They litter this spot", x = 22, y = 9, zone = "Silithus" },
|
||||
[11] = { str = "Hearth to Cenarion Hold" },
|
||||
[12] = { str = "Up stairs turn in Deadly Desert Venom accept Noggle's Last Hope" },
|
||||
[13] = { str = "In front of the Inn, turn in Securing the Supply Lines accept Stepping Up Security" },
|
||||
[14] = { str = "Go next to the moonwell and turn in The Twilight Mystery accept The Deserter" },
|
||||
[15] = { str = "You should be about 30-35% into 56" },
|
||||
[16] = { str = "Go SE to 62,53 and kill the undead guys here for The Spirits of Southwind becareful when they die they spawn 1-2 bugs", x = 62, y = 53, zone = "Silithus" },
|
||||
[17] = { str = "Kill the pincers for Noggle's Last Hope and drudges for The Deserter south of here around 56,58", x = 56, y = 58, zone = "Silithus" },
|
||||
[18] = { str = "Go to the cave at 67,69 and turn in The Deserter accept The Twilight Lexicon", x = 67, y = 69, zone = "Silithus" },
|
||||
[19] = { str = "You can find flayers and stalkers outside of the cave for Noggle's Last Hope they are also both around 43,72 on the other side of the hive", x = 43, y = 72, zone = "Silithus" },
|
||||
[20] = { str = "Hearth back to Cenarion Hold or die so you end up there" },
|
||||
[21] = { str = "Go upstairs and turn in for Noggle's Last Hope accept Noggle's Lost Satchel" },
|
||||
[22] = { str = "Outside the Inn, turn in Stepping Up Security" },
|
||||
[23] = { str = "Go to 29,35 and kill Twilight Keeper Manya for The Twilight Lexicon she fears a bit. She’s at the SE corner of came", x = 29, y = 35, zone = "Silithus" },
|
||||
[24] = { str = "Go to 41,41 and kill Twilight Keeper Havanuth for The Twilight Lexicon he’s on the east side of camp, he has a nasty aoe", x = 41, y = 41, zone = "Silithus" },
|
||||
[25] = { str = "Go all the way down south to the little camp at 42,90 and go up the hill behind it, you’ll find Deathclasp, in the middle of the path on the wall is a pouch, grab it when deathclasp is in the back for Noggle's Lost Satchel", x = 42, y = 90, zone = "Silithus" },
|
||||
[26] = { str = "Head to the SW to 16,87 and kill Twilight Keeper Exeter for The Twilight Lexicon he’s at the SW corner of camp", x = 16, y = 87, zone = "Silithus" },
|
||||
[27] = { str = "Go back to the cave at 67,69 and turn in The Twilight Lexicon accept A Terrible Purpose He also offers another quest for 10 twilight texts, this is more for cen circle rep later on", x = 67, y = 69, zone = "Silithus" },
|
||||
[28] = { str = "Run up to 81,18 and turn in The Spirits of Southwind accept Hive in the Tower", x = 81, y = 18, zone = "Silithus" },
|
||||
[29] = { str = "Go to the top of the tower at 61,52 Be careful 3 bugs spawn when you enter. Shift right click the pod because as soon as you open it some amushers spawn. Kill at least 1 and loot it for Hive in the Tower", x = 61, y = 52, zone = "Silithus" },
|
||||
[30] = { str = "Go up to 81,18 and turn in Hive in the Tower accept Umber, Archivist", x = 81, y = 18, zone = "Silithus" },
|
||||
[31] = { str = "Hearth to Cenarion Hold" },
|
||||
[32] = { str = "Ignore" },
|
||||
[33] = { str = "Go upstairs and turn in Noggle's Lost Satchel" },
|
||||
[34] = { str = "Go into the long building and turn in A Terrible Purpose" },
|
||||
[35] = { str = "Fly to Moonglade" },
|
||||
[36] = { str = "Go to 44,35 and turn in Umber, Archivist accept Uncovering Past Secrets", x = 44, y = 35, zone = "Moonglade" },
|
||||
[37] = { str = "Run over to 51,44 and turn in Uncovering Past Secrets", x = 44, y = 35, zone = "Moonglade" },
|
||||
[38] = { str = "You should now be 80-85% into leveling" },
|
||||
[39] = { str = "Fly to Auberdine and boat to Menethil then fly to IF" },
|
||||
[40] = { str = "Make IF your home, then find the wandering commander dwarf and accept A Call To Arms: The Plaguelands!" },
|
||||
[41] = { str = "Fly to Southshore" },
|
||||
[42] = { str = "Run north into Alterac Mountains and over NE to 80,34 and run into Western Plaguelands (WPL)", x = 80, y = 34, zone = "Alterac Mountains" },
|
||||
}
|
||||
},
|
||||
|
||||
------------56-57 Western Plaguelands
|
||||
--[511] = {
|
||||
[5657] = {
|
||||
title = "56-57 Western Plaguelands",
|
||||
--n = "56-57 Western Plaguelands",
|
||||
--pID = 510, nID = 512,
|
||||
--itemCount = 43,
|
||||
items = {
|
||||
[1] = { str = "56-57 Western Plaguelands" },
|
||||
[2] = { str = "Next to the shack accept A Plague Upon Thee pt.1" },
|
||||
[3] = { str = "Grab the FP" },
|
||||
[3] = { str = "Whenever you come back to camp here always check the vendor for the stormshroud pants recipe. It’s like 1.3g and you can easily sell it for 10 or 20g+ It’s a limited recipe that restocks 1 every hour." },
|
||||
[4] = { str = "Go to the tent and turn in A Call To Arms: The Plaguelands!, accept Clear The Way" },
|
||||
[5] = { str = "Go to the 3 Argent Dawn people near the other tent and turn in The Everlook Report and also complete Argent Dawn Commission it’s not a quest you had she just uses it to give you the trinket which you should always wear when in WPL and EPL because it gives you AD rep and allows the scourge tokens to drop, which she also has 3 new quests on those for turn ins. You most likely won’t get anything past the first quest as the rest are mainly in the instances." },
|
||||
[6] = { str = "Save the tokens until I say to hand em in" },
|
||||
[7] = { str = "Go NE to around 51,78 and grind the ghouls here until you got enough for Clear The Way", x = 51, y = 78, zone = "Western Plaguelands" },
|
||||
[8] = { str = "Go back to Chillwind Camp at 42,84 and turn in Clear The Way accept All Along the Watchtowers and The Scourge Cauldrons", x = 42, y = 84, zone = "Western Plaguelands" },
|
||||
[9] = { str = "Turn around and turn in The Scourge Cauldrons accept Target: Felstone Field" },
|
||||
[10] = { str = "You should now be about 5-10k from 57" },
|
||||
[11] = { str = "Go back NE to 48,72 and go over the bridge", x = 48, y = 72, zone = "Western Plaguelands" },
|
||||
[12] = { str = "Just in the town on the left at 47,71 is the 4th tower for All Along the Watchtowers, there are elites inside but you can stand out of LOS on the edge and mark the doors easily. 1st tower West of here at 40,71. 2nd tower NE of here at 42,66. 3rd tower NE of here at 44,63. Just behind this tower.", x = 47, y = 71, zone = "Western Plaguelands" },
|
||||
[13] = { str = "Go NW to 37,56 to Felstone field, kill Cauldron Lord Bilemaw for his cauldron key. Then go right click the cauldron and turn in Target: Felstone Field accept Return to Chillwind Camp", x = 37, y = 56, zone = "Western Plaguelands" },
|
||||
[14] = { str = "Theres 2 houses on the NE side of the field at 38,54, enter the northern house and go upstairs. Accept Better Late Than Never pt.1", x = 38, y = 54, zone = "Western Plaguelands" },
|
||||
[15] = { str = "Go in the barn next door and grab the box on the floor and turn in Better Late Than Never pt.1 accept Better Late Than Never pt.2" },
|
||||
[16] = { str = "Run back to Chillwind Camp at 42,84 and turn in All Along the Watchtowers, accept Scholomance SKIP the other unless you get about 10-20 people.", x = 42, y = 84, zone = "Western Plaguelands" },
|
||||
[17] = { str = "Turn in Scholomance just behind him, accept Skeletal Fragments Bones for this will take a while and drop off any skeletons." },
|
||||
[18] = { str = "Near the FP turn in Return to Chillwind Camp accept Target: Dalson's Tears" },
|
||||
[19] = { str = "Go up to 46,52 to Dalson’Tears, kill Cauldron Lord Malvinious for his cauldron key. Then go right click the cauldron and turn in Target: Dalson's Tears accept Return to Chillwind Camp", x = 46, y = 52, zone = "Western Plaguelands" },
|
||||
[20] = { str = "Enter the barn here at 47,50 and Touch the diary on the floor and complete it, another quest that isn’t a quest.", x = 47, y = 50, zone = "Western Plaguelands" },
|
||||
[21] = { str = "Go behind the barn and look for a Wandering Skeleton and get Dalson Outhouse Key off of him. Use this to open the outhouse back here and kill Farmer Dalson and get his Dalson Cabinet Key. Use the key on the locked cabinet upsairs in the house now at 47,49 next to the barn and complete the quest Locked Away", x = 47, y = 49, zone = "Western Plaguelands" },
|
||||
[22] = { str = "Go back to Chillwind Camp at 42,84 and turn in Return to Chillwind Camp accept Target: Writhing Haunt", x = 42, y = 84, zone = "Western Plaguelands" },
|
||||
[23] = { str = "Hearth to IF then fly to SW" },
|
||||
[24] = { str = "Go to the building at 48,30 on the 2nd floor of the cathedral area and turn in Better Late Than Never pt.2 accept Good Natured Emma", x = 48, y = 30, zone = "Stormwind" },
|
||||
[25] = { str = "Emma travels between the cathedral and the trade district, find her and turn in Good Natured Emma accept Good Luck Charm" },
|
||||
[26] = { str = "Go into the keep at 78,17 and accept The First and the Last", x = 78, y = 17, zone = "Stormwind" },
|
||||
[27] = { str = "Go to 75,79 and turn in The First and the Last accept Honor the Dead then turn it right back in, accept Flint Shadowmore", x = 75, y = 79, zone = "Stormwind" },
|
||||
[28] = { str = "Fly back to WPL" },
|
||||
[29] = { str = "In front of the house turn in Flint Shadowmore accept The Eastern Plagues" },
|
||||
[30] = { str = "Go back to Felstone field to the house upstairs at 38,54 and turn in Good Luck Charm accept Two Halves Become One Go outside and look for a jabbering ghoul. You can’t miss him he carry’s a pitchfork. Keep clearing in front of the house until you find him. This will give you a good time to get those skeletal fragments", x = 38, y = 54, zone = "Western Plaguelands" },
|
||||
[31] = { str = "Combine the halves and go back upstairs and turn in Two Halves Become One" },
|
||||
[32] = { str = "Go SE to 53,65 to Writhing Haunt, kill Cauldron Lord Razarch for his cauldron key. Then go right click the cauldron and turn in Target: Writhing Haunt accept Return to Chillwind Camp", x = 53, y = 65, zone = "Western Plaguelands" },
|
||||
[33] = { str = "In the house at 54,65 accept The Wildlife Suffers Too pt.1 now go north of the haunt and kill the diseased wolves. Don’t go any farther east to find these just go North, maybe NW some.", x = 54, y = 65, zone = "Western Plaguelands" },
|
||||
[34] = { str = "Go back to 54,65 and turn in The Wildlife Suffers Too pt.1 accept The Wildlife Suffers Too pt.2", x = 54, y = 65, zone = "Western Plaguelands" },
|
||||
[35] = { str = "Go back to Chillwind Camp at 42,84 anc turn in Return to Chillwind Camp accept Target: Gahrron's Withering", x = 42, y = 84, zone = "Western Plaguelands" },
|
||||
[36] = { str = "Go just north of the Writhing Haunt between the mountains on the map at, 52,56 and kill diseased grizzleys on your way down to 62,58 for The Wildlife Suffers Too pt.2", x = 52, y = 56, zone = "Western Plaguelands" },
|
||||
[37] = { str = "Go NE to 62,58 to Gahrron’s Withering, kill Cauldron Lord Soulwrath for his cauldron key. Then go right click the cauldron and turn in Target: Gahrron's Withering accept Return to Chillwind Camp", x = 62, y = 58, zone = "Western Plaguelands" },
|
||||
[38] = { str = "Go back to 54,65 and turn in The Wildlife Suffers Too pt.2 accept Glyphed Oaken Branch", x = 54, y = 65, zone = "Western Plaguelands" },
|
||||
[39] = { str = "If you haven’t finished Skeletal Fragments yet go to the crypt at 54,79 and kill the skeletons until you have 15 fragments", x = 54, y = 79, zone = "Western Plaguelands" },
|
||||
[40] = { str = "Go back to Chillwind Camp at 42,84 and turn in Return to Chillwind Camp", x = 42, y = 84, zone = "Western Plaguelands" },
|
||||
[41] = { str = "Turn around to the guy in front of the tent, and complete the quest Mission Accomplished! no link for it cuz it’s not a quest again lol. Now see that running back and forth seemed out of the way but there was a huge xp boost at the end, and nice xp throughout." },
|
||||
[42] = { str = "To your right turn in Skeletal Fragments SKIP the next part unless you want to start on your scholo key." },
|
||||
[43] = { str = "Run east to 70,50 and enter the Eastern Plaguelands (EPL)", x = 70, y = 50, zone = "Western Plaguelands" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------57-58 Eastern Plaguelands
|
||||
--[512] = {
|
||||
[5758] = {
|
||||
title = "57-58 Eastern Plaguelands",
|
||||
--n = "57-58 Eastern Plaguelands",
|
||||
--pID = 511, nID = 513,
|
||||
--itemCount = 19,
|
||||
items = {
|
||||
[1] = { str = "57-58 Eastern Plaguelands" },
|
||||
[2] = { str = "Run up the west coast to 67,4 and accept the 3 quests Demon Dogs Blood Tinged Skies and Carrion Grubbage", x = 67, y = 4, zone = "Eastern Plaguelands" },
|
||||
[3] = { str = "These are annoying quests that can take a while. Anytime from now until these are done, kill any plaguehound runts, carrion worms, or plaguebats." },
|
||||
[4] = { str = "From here on down to the bigger area, kill any dogs, worms, and bats. Focus on them while you head to the next step" },
|
||||
[5] = { str = "Keep killing the dogs and bats and head over to the skeleton at 28,74 open it and grab the insignia for The Eastern Plagues then run up a bit further to the next skeleton at 27,74 and grab the insignia, it’s practically right in front of him and you will also get the blightcaller found complete message. Now go down near the road to 28,79 and loot the last insignia off the skeleton", x = 28, y = 74, zone = "Eastern Plaguelands" },
|
||||
[6] = { str = "Focus on the dogs and bats while you head to Darrowshire at 36,90 in the broken down house. Turn in Sister Pamela accept Pamela's Doll then head towards the houses here, in any of the houses can be any of the 3 doll parts. They are random. Ghosts spawn when you get near the parts so be aware. Once you have all 3 parts combine them and go back to 36,90 and turn in Pamela's Doll accept Auntie Marlene and Uncle Carlin", x = 36, y = 90, zone = "Eastern Plaguelands" },
|
||||
[7] = { str = "Look on your map at 48,76 This lines up with that middle ridge mountain. Don’t go past this spot east until you have your plaguehound runt kills for Demon Dogs and plaguebats for Blood Tinged Skies because there is none past that point.", x = 48, y = 76, zone = "Eastern Plaguelands" },
|
||||
[8] = { str = "Don’t forget to kill the grubs along the way too for Carrion Grubbage, they’re not as important because they’re all over." },
|
||||
[9] = { str = "Kill Plaguehounds for Demon Dogs all around 56,57 this is north of the scar and south of blackwood lake. Don’t forget the grubs", x = 56, y = 57, zone = "Eastern Plaguelands" },
|
||||
[10] = { str = "Kill Frenzied Plaguehounds for Demon Dogs all around 61,41 this is north of blackwood lake but now west of it.", x = 61, y = 41, zone = "Eastern Plaguelands" },
|
||||
[11] = { str = "Head to lights hope chapel at 81,58 if you still need grub meat for Carrion Grubbage, then kill them as you", x = 81, y = 58, zone = "Eastern Plaguelands" },
|
||||
[12] = { str = "Get the FP" },
|
||||
[13] = { str = "Turn in Uncle Carlin accept Defenders of Darrowshire" },
|
||||
[14] = { str = "Turn around and turn in Duke Nicholas Zverenhoff" },
|
||||
[15] = { str = "Run SW to 79,63 and accept Zaeldarr the Outcast", x = 79, y = 63, zone = "Eastern Plaguelands" },
|
||||
[16] = { str = "Fly back to EPL" },
|
||||
[17] = { str = "In front of the house turn in The Eastern Plagues accept The Blightcaller Cometh" },
|
||||
[18] = { str = "If you’re within 6,600 to level then Hearth to IF and fly to SW, if not then grind until you’re within range." },
|
||||
[19] = { str = "Go to 78,18 in the keep and turn in The Blightcaller Cometh now I SKIP the next part but it’s a good quest to do at 60", x = 78, y = 18, zone = "Eastern Plaguelands" },
|
||||
[18] = { str = "Go get new skills" },
|
||||
[19] = { str = "Fly back to WPL" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------58-58 Western Plaguelands
|
||||
--[513] = {
|
||||
[5857] = {
|
||||
title = "58-58 Western Plaguelands",
|
||||
--n = "58-58 Western Plaguelands",
|
||||
--pID = 512, nID = 514,
|
||||
--itemCount = 9,
|
||||
items = {
|
||||
[1] = { str = "58-58 Western Plaguelands" },
|
||||
[2] = { str = "Go NE to the house at 49,78 and go upstairs. Turn in Pamela's Doll accept A Strange Historian", x = 49, y = 78, zone = "Western Plaguelands" },
|
||||
[3] = { str = "Just north of the house at 49,76 you’ll see an off color gravestone. Loot it and get the wedding ring for A Strange Historian", x = 49, y = 76, zone = "Western Plaguelands" },
|
||||
[4] = { str = "Go in the west entrance to Andorhal at 39,71and you should see the only full building, looks like an Inn at 39,68. Go upstairs and turn in A Strange Historian accept The Annals of Darrowshire also accept A Matter of Time", x = 39, y = 68, zone = "Western Plaguelands" },
|
||||
[5] = { str = "Now look all around the city here for busted up silo’s with a blue light coming out of them. Use the silo horn to summon the worms, it spawns 1-3 mobs for A Matter of Time. Once you kill the last one they have a tendency to spawn another. They’re more on the East side of town" },
|
||||
[6] = { str = "Go to the Town Hall near all the mobs in the middle of town, you can sneak in from the SW side. Grab the books on the floor until you get the The Annals of Darrowshire Some will spawn mobs" },
|
||||
[7] = { str = "Go back to the Inn at 39,68 and to the top floor, turn in A Matter of Time accept Counting Out Time also turn in The Annals of Darrowshire accept Brother Carlin", x = 39, y = 68, zone = "Western Plaguelands" },
|
||||
[8] = { str = "Go outside and look around the busted houses for little metal lunchboxes for Counting Out Time" },
|
||||
[9] = { str = "Go back to the Inn at 39,68 and turn in Counting Out Time you can now repeat this quest for a dampener. This is used vs the 61 elite", x = 39, y = 68, zone = "Western Plaguelands" },
|
||||
}
|
||||
},
|
||||
|
||||
-----------58-58 Eastern Plaguelands
|
||||
--[514] = {
|
||||
[5858] = {
|
||||
title = "58-58 Eastern Plaguelands",
|
||||
--n = "58-58 Eastern Plaguelands",
|
||||
--pID = 513, nID = 515,
|
||||
--itemCount = 18,
|
||||
items = {
|
||||
[1] = { str = "58-58 Eastern Plaguelands" },
|
||||
[2] = { str = "Run out of here and into EPL up to the NW at 7,43 and turn in the 3 quests Demon Dogs Blood Tinged Skies and Carrion Grubbage accept Redemption then listen to him and turn it back in. Then accept Of Forgotten Memories", x = 7, y = 43, zone = "Eastern Plaguelands" },
|
||||
[3] = { str = "Go to the Undercroft at 28,86 and run behind it. Touch the dirt pile to summon Mercutio and 3 guards. Easiest way to do this is to kite him away from his buddies or get a group. Loot his body for the hammer for Of Forgotten Memories", x = 28, y = 86, zone = "Eastern Plaguelands" },
|
||||
[4] = { str = "Now go to the bottom of the crypt and kill the very big troll for Zaeldarr the Outcast Only grab the scroll on the floor if u want" },
|
||||
[5] = { str = "Go back to 7,43 and turn in Of Forgotten Memories accept Of Lost Honor", x = 7, y = 43, zone = "Eastern Plaguelands" },
|
||||
[6] = { str = "Either Run to Light’s Hope Chapel or back to Chillwind and fly there" },
|
||||
[7] = { str = "Turn in Brother Carlin accept Villains of Darrowshire" },
|
||||
[8] = { str = "Go down to 79,63 and turn in Zaeldarr the Outcast", x = 79, y = 63, zone = "Eastern Plaguelands" },
|
||||
[9] = { str = "Go down just North of Corin’s Crossing to 53,65 and grab the sword for Villains of Darrowshire It’s down in the scar. Don’t forget to do some of Defenders of Darrowshire at Corin’s Just get what you can", x = 53, y = 65, zone = "Eastern Plaguelands" },
|
||||
[10] = { str = "Go north to Blackwood Lake at 51,49 and grab the skull under the water for Villains of Darrowshire", x = 51, y = 49, zone = "Eastern Plaguelands" },
|
||||
[11] = { str = "Go NE to around 65,41 and kill the zombies for part of Defenders of Darrowshire there are quite a lot here you could probably finish", x = 65, y = 41, zone = "Eastern Plaguelands" },
|
||||
[12] = { str = "Go to the lake at 71,33 and grab the flag next to the cage, it’s hard to see and is laying flat for Of Lost Honor", x = 71, y = 33, zone = "Eastern Plaguelands" },
|
||||
[13] = { str = "Go NW to the tower at 56,24 and turn in Troubled Spirits of Kel'Theril SKIP the next part", x = 56, y = 24, zone = "Eastern Plaguelands" },
|
||||
[14] = { str = "Run West to 45,34 and loot the termite mounds here for A Plague Upon Thee pt.1 until you get 100 termites, also kill ghouls to finish up Defenders of Darrowshire", x = 45, y = 34, zone = "Eastern Plaguelands" },
|
||||
[15] = { str = "Run to Lights Hope Chapel now" },
|
||||
[16] = { str = "Go by the tent and turn in “Defenders of Darrowshire” and “Villains of Darrowshire”" },
|
||||
[17] = { str = "Fly to WPL" },
|
||||
[18] = { str = "Next to the house turn in “A Plague Upon Thee pt.1” accept “A Plague Upon Thee pt.2”" },
|
||||
}
|
||||
},
|
||||
|
||||
------------58-59 Western Plaguelands
|
||||
--[515] = {
|
||||
[5859] = {
|
||||
title = "58-59 Western Plaguelands",
|
||||
--n = "58-59 Western Plaguelands",
|
||||
--pID = 514, nID = 516,
|
||||
--itemCount = 19,
|
||||
items = {
|
||||
[1] = { str = "58-59 Western Plaguelands" },
|
||||
[2] = { str = "Run up to 51,28 and accept “Unfinished Business pt.1”", x = 52, y = 30, zone = "Western Plaguelands" },
|
||||
[3] = { str = "Start heading back SW around 47,32 and clear your way into the mill. Right click the box and place the termintes, then click the barrel and turn in “A Plague Upon Thee pt.2” accept “A Plague Upon Thee pt.3”", x = 47, y = 32, zone = "Western Plaguelands" },
|
||||
[4] = { str = "Go just south of 49,42 and kill 2 knights and mages for “Unfinished Business pt.1” then 51,43 for the hunters and medics", x = 49, y = 42, zone = "Western Plaguelands" },
|
||||
[5] = { str = "Go to 51,28 and turn in “Unfinished Business pt.1” accept “Unfinished Business pt.2”", x = 51, y = 28, zone = "Western Plaguelands" },
|
||||
[6] = { str = "Go to 57,36 and kill Huntsman Radly for “Unfinished Business pt.2” then north to the tower at 55,23 and kill Cavalier Durgen at the top", x = 57, y = 36, zone = "Western Plaguelands" },
|
||||
[7] = { str = "Go straight out of the tower over the mountains to 51,28 and turn in “Unfinished Business pt.2” doing the 3rd part “Unfinished Business pt.3” is optional. Some classes can do it easier than others. You have to run north to hearthglen and run up into the big tower in the center of town at 45,18 and look over the edge until it says complete.", x = 45, y = 18, zone = "Western Plaguelands" },
|
||||
[8] = { str = "Run back straight south over the mountains to 51,28 and turn in “Unfinished Business pt.3”", x = 51, y = 28, zone = "Western Plaguelands" },
|
||||
[9] = { str = "Run into EPL and up to 7,43 and turn in “Of Lost Honor” accept “Of Love and Family pt.1”", x = 7, y = 43, zone = "Eastern Plaguelands" },
|
||||
[10] = { str = "Go back to WPL and run/swim to the island Scholo is on at 65,75 and turn in “Of Love and Family pt.1” SKIP the rest until you do strat", x = 65, y = 75, zone = "Western Plaguelands" },
|
||||
[11] = { str = "Go back to Chillwind Camp at 43,84 and turn in “A Plague Upon Thee pt.3”", x = 43, y = 84, zone = "Western Plaguelands" },
|
||||
[12] = { str = "Now you want to do 2 things here. Get friendly with Argent Dawn and get 8-8.5k from leveling. You can do “Alas, Andorhal” if you can find a group, it’s not that hard but can take 5-10 people. This will give you an easy 8300 xp instead of grinding." },
|
||||
[13] = { str = "Now you want to go up to andorhal and just grind until you’re friendly, once you’re friendly go back to Chillwind Camp and turn in all your scourge tokens. This allows you to buy mana biscuits which restore mana and health and more than food can. If you still need to level then go grind on mobs in andorhal again until you’re 8-8.5k from 59" },
|
||||
[14] = { str = "Once you’re 8k-8.5k from leveling, fly to Hinterlands and run all the way NE to the waterfall at 80,46 and jump off. Under the water loot the chest and finish “Cortello’s Riddle pt.3” I bet you thought I forgot about it", x = 80, y = 46, zone = "The Hinterlands" },
|
||||
[15] = { str = "Hearth to IF" },
|
||||
[16] = { str = "Go to the throne room at 43,52 and accept “An Earnest Proposition” (pick your class from the list) You have to have your classes tier 0 bracers in order to do this quest. You can buy it on AH", x = 43, y = 52, zone = "Ironforge" },
|
||||
[17] = { str = "Fly to Menethil and boat to Auberdine, fly to Darnassus" },
|
||||
[18] = { str = "Go to 35,8 on the 2nd floor and turn in “Glyphed Oaken Branch”", x = 35, y = 8, zone = "Darnassus" },
|
||||
[19] = { str = "You should be 59, fly to Winterspring" },
|
||||
}
|
||||
},
|
||||
|
||||
------------59-60 Winterspring
|
||||
--[516] = {
|
||||
[5960] = {
|
||||
title = "59-60 Winterspring",
|
||||
--n = "59-60 Winterspring",
|
||||
--pID = 515, nID = 516,
|
||||
--itemCount = 31,
|
||||
items = {
|
||||
[1] = { str = "59-60 Winterspring" },
|
||||
[2] = { str = "On your left after entering turn in “Are We There, Yeti? pt.3”" },
|
||||
[3] = { str = "Near the back are 2 horde, accept “Luck Be With You”" },
|
||||
[4] = { str = "Turn around and turn in “Felnok Steelspring” accept “Chillwind Horns”" },
|
||||
[5] = { str = "Do “An Earnest Proposition” just kill the sabers until you have 15 blood" },
|
||||
[6] = { str = "Go just SE of here around 55,18 and kill the chimera’s for “Chillwind Horns”", x = 55, y = 18, zone = "Winterspring" },
|
||||
[7] = { str = "Run to Starfall Village at 52,30 and accept “Enraged Wildkin pt.1”", x = 52, y = 30, zone = "Winterspring" },
|
||||
[8] = { str = "Turn in “Chillwind Horns” SKIP the other unless you wanna go there" },
|
||||
[9] = { str = "Go south to 59,59 and touch the crate and turn in “Enraged Wildkin pt.1” accept “Enraged Wildkin pt.2”", x = 59, y = 59, zone = "Winterspring" },
|
||||
[10] = { str = "Go back to the roat at 61,60 and touch the wagon, turn in “Enraged Wildkin pt.2” accept “Enraged Wildkin pt.3” grab the box in the snow", x = 61, y = 60, zone = "Winterspring" },
|
||||
[11] = { str = "Run east again to 63,59 and turn in “Find Ranshalla” accept “Guardians of the Altar”", x = 63, y = 59, zone = "Winterspring" },
|
||||
[12] = { str = "Now protect her while she does her thing. Make sure you get the feather off an owl for “Enraged Wildkin pt.3” When she stops in a cave, light the torch for her. If you don’t get the feather before you’re done keep killing until you got it." },
|
||||
[13] = { str = "Go south to 62,69 and loot the gems for “Luck Be With You” hunters and locks can use pet to distract mobs while u loot, other classes will have to group.", x = 62, y = 69, zone = "Winterspring" },
|
||||
[14] = { str = "Hearth to Everlook" },
|
||||
[15] = { str = "Turn in “Luck Be With You” at the 2 horde near the back of everlook" },
|
||||
[16] = { str = "You should be about 25% into 59 now." },
|
||||
[17] = { str = " Accept “Cache of Mau'Ari” if you want to. This just gives you an item which allows the mobs here to drop stuff which you can turn in for buffs" },
|
||||
[18] = { str = "Go up to Starfall Village at 52,30 and turn in “Enraged Wildkin pt.3”", x = 52, y = 30, zone = "Winterspring" },
|
||||
[19] = { str = "Run to 31,45 and turn in “Mystery Goo” accept “Toxic Horrors”", x = 31, y = 45, zone = "Winterspring" },
|
||||
[20] = { str = "Run into Felwood and go to 48,24 and kill toxic horrors for “Toxic Horrors” these also drop essence of waters", x = 48, y = 24, zone = "Felwood" },
|
||||
[21] = { str = "Fly to Rut’theran Village and go to the house at 55,92 and turn in “Guardians of the Altar” accept “Wildkin of Elune”", x = 55, y = 92, zone = "Teldrassil" },
|
||||
[22] = { str = "Go in Darnassus and up to the top of the tower at 34,8 and turn in “Wildkin of Elune”", x = 34, y = 8, zone = "Darnassus" },
|
||||
[23] = { str = "Fly back to Felwood" },
|
||||
[24] = { str = "Run back up into Winterspring and over to 31,45 turn in “Toxic Horrors” accept “Winterfall Runners”", x = 31, y = 45, zone = "Winterspring" },
|
||||
[25] = { str = "Now to find the runners. They travel anywhere from the Timbermaw Cave east to 53,34 then up around the mountains north of everlook over to Winterfall Village. If you didn’t see them from the cave to here, head east. You don’t have to kill all 3", x = 53, y = 34, zone = "Winterspring" },
|
||||
[26] = { str = "Once you get the crate run back to 31,45 Turn in Winterfall Runners an ambush will come from the lake, if u don’t move from the tent they won’t aggro you. SKIP the next part unless you get a group", x = 31, y = 45, zone = "Winterspring" },
|
||||
[27] = { str = "Hearth to Everlook" },
|
||||
[28] = { str = "You should be 45-50% through 59. Now I make sure I got my mana bisquits and I start grinding until im 6600 to 60. Anywhere is fine where there is a lot of mobs It’s all a matter of preference. I choose the owl wing thicket at 64,62 or anything north of everlook. I like to kill the furlbogs for timbermaw rep also.", x = 64, y = 62, zone = "Winterspring" },
|
||||
[29] = { str = "If you don’t want to grind this large amount then do BRD, scholo, or strat. You have a lot of quests in those spots to do" },
|
||||
[30] = { str = "Once you’re 6600 to 60 go to IF and turn in An Earnest Proposition" },
|
||||
[31] = { str = "Grats on 60...fuck the police." },
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
--[[--------------------------------------------------
|
||||
002_Durotar.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 001 Introduction
|
||||
1.04.1
|
||||
-- First Release
|
||||
Orcs&Trolls Durotar's Guide
|
||||
from level 1 to lever 12
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_002_Durotar = {
|
||||
-----------1-6 Durotar
|
||||
--[11] = {
|
||||
[0106] = {
|
||||
title = "1-6 Durotar",
|
||||
--n = "1-6 Durotar",
|
||||
--pID = 1, nID = 12,
|
||||
--itemCount = 19,
|
||||
items = {
|
||||
[1] = { str = "1-6 Durotar" },
|
||||
[2] = { str = "01) I do every single quest in Durotar! Here's the fastest way to do em:" },
|
||||
[3] = { str = "02) Start off accepting #ACCEPT\"Your Place In The World\"# . (Right in front of you) " },
|
||||
[4] = { str = "03) Then turn it in (at 42.68) ... accept #ACCEPT\"Cutting Teeth\"# " },
|
||||
[5] = { str = "04) Go start doing: #DOQUEST\"Cutting Teeth\"# (keep step #5 in mind)" },
|
||||
[6] = { str = "05) Once you hit level 2, go accept #ACCEPT\"Sarkoth\"# (at 40.62)", x = 40, y = 62, zone = "Durotar" },
|
||||
[7] = { str = "06) Go do #DOQUEST\"Sarkoth\"# (at 40.66).", x = 40, y = 66, zone = "Durotar" },
|
||||
[8] = { str = "07) Then turn #TURNIN\"Sarkoth\"# in (at 40.62) ... Accept #ACCEPT\"Sarkoth\"# pt.2", x = 40, y = 62, zone = "Durotar" },
|
||||
[9] = { str = "08) Make sure #DOQUEST\"Cutting Teeth\"# is complete." },
|
||||
[10] = { str = "09) Go turn in #TURNIN\"Sarkoth\"# pt.2 and #TURNIN\"Cutting Teeth\"# (at 42.68) ... Accept #ACCEPT\"Etched Tablet\"# and #ACCEPT\"Sting of the Scorpid\"# ", x = 42, y = 68, zone = "Durotar" },
|
||||
[11] = { str = "10) Turn in #ACCEPT\"Etched Tablet\"# (around 43.69) and get new spells/abilities for your class.", x = 43, y = 69, zone = "Durotar" },
|
||||
[12] = { str = "11) Then accept and do the following: #DOQUEST\"Sting of the Scorpid\"# #DOQUEST\"Vile Familiars\"# #DOQUEST\"Galgar's Cactus Apple Surprise\"# and #DOQUEST\"Lazy Peons\"# (all these are done north and north-east of Valley of Trials)" },
|
||||
[13] = { str = "12) Turn all those quests in, then accept #ACCEPT\"Burning Blade Medallion\"# and #ACCEPT\"Thazz'ril's Pick\"# " },
|
||||
[14] = { str = "13) Go do: #DOQUEST\"Burning Blade Medallion\"# and #DOQUEST\"Thazz'ril's Pick\"# (these are done in the cave at 44.56)", x = 44, y = 56, zone = "Durotar" },
|
||||
[15] = { str = "14) Once those two quests are done use your hearthstone." },
|
||||
[16] = { str = "15) Turn those 2 quests in and accept #ACCEPT\"Report to Sen'jin Village\"# " },
|
||||
[17] = { str = "16) The starting area is now completed. Leave starting noob zone (by heading east)." },
|
||||
--[18] = { str = "." },
|
||||
--[19] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------6-9 Durotar
|
||||
--[12] = {
|
||||
[0609] = {
|
||||
title = "6-9 Durotar",
|
||||
--n = "6-9 Durotar",
|
||||
--pID = 11, nID = 13,
|
||||
--itemCount = 31,
|
||||
items = {
|
||||
[1] = { str = "6-9 Durotar" },
|
||||
[2] = { str = "01) Accept #ACCEPT\"A Peon's Burden\"# (at 52.68)", x = 52, y = 68, zone = "Durotar" },
|
||||
[3] = { str = "02) Accept #ACCEPT\"Thwarting Kolkar Aggression\"# (at 54.75)", x = 54, y = 75, zone = "Durotar" },
|
||||
[4] = { str = "03) Go turn in #TURNIN\"Report to Sen'jin Village\"# (at Sen'jen Village, 55.74)", x = 55, y = 74, zone = "Durotar" },
|
||||
[5] = { str = "04) Then collect all the quests in Sen'jin Village. (which include: #ACCEPT\"A solvent Spirit\"# #ACCEPT\"Practical Prey\"# #ACCEPT\"Minshina's Skull\"# #ACCEPT\"Report to Orgnil\"# and #ACCEPT\"Zalazane\"# )" },
|
||||
[6] = { str = "05) Do NOT do \"#NPCA solvent Spirit\"# at the water around Sen'jin Village. Make sure the quest is accepted though." },
|
||||
[7] = { str = "06) Then run up to Razor Hill (52.44), grinding mobs along the way, and make sure you get to level 6 before you get up there for new spells.", x = 52, y = 44, zone = "Durotar" },
|
||||
[8] = { str = "07) Turn in #TURNIN\"Report to Orgnil\"# and collect all the quests at Razor Hill (#ACCEPT\"Dark Storms\"# #ACCEPT\"Vanquish the Betrayers\"# , #ACCEPT\"Encroachment\"# #ACCEPT\"Break a Few Eggs\"# " },
|
||||
[9] = { str = "08) Go up to the watch tower north-west of Razor Hill, at 49.40 and accept #ACCEPT\"Carry Your Weight\"# ", x = 49, y = 40, zone = "Durotar" },
|
||||
[10] = { str = "09) Go in the Inn (51.41) and turn in #TURNIN\"A Peon's Burden\"# . And also make Razor Hill your home.", x = 51, y = 41, zone = "Durotar" },
|
||||
[11] = { str = "10) Get first aid. (at 54.41)", x = 51, y = 41, zone = "Durotar" },
|
||||
[12] = { str = "11) Then go do this: #DOQUEST\"Vanquish the Betrayers\"# along with #DOQUEST\"Carry Your Weight\"# (these are done at Tiragarde Keep, 57.55)", x = 57, y = 55, zone = "Durotar" },
|
||||
[13] = { str = "12) After killing Benedict (he is up in the building at 59.58) and get his key, go up the steps open the chest and grab the note that starts: #ACCEPT\"The Admiral's Orders\"# accept the quest.", x = 59, y = 58, zone = "Durotar" },
|
||||
[14] = { str = "13) Go turn in #TURNIN\"Vanquish the Betrayers\"# #TURNIN\"The Admiral's Orders\"# and #TURNIN\"Carry Your Weight\"# at Razor Hill (52.44), and accept #ACCEPT\"From The Wreckage....\"# #ACCEPT\"The Admiral's Orders\"# (part2).", x = 52, y = 44, zone = "Durotar" },
|
||||
[15] = { str = "14) Go do #DOQUEST\"A solvent Spirit\"# and #DOQUEST\"From The Wreckage....\"# Do these two quests at the water east of Tiragarde Keep (around 62.50).", x = 62, y = 50, zone = "Durotar" },
|
||||
[16] = { str = "15) Then do the first half of #DOQUEST\"Encroachment\"# (at 49.49).", x = 49, y = 49, zone = "Durotar" },
|
||||
[17] = { str = "16) Then if you're not at least 3 bars away from lvl 8, grind till you are, go turn in #TURNIN\"From The Wreckage....\"# at Razor Hill (52.44) and get new spells/abilities.", x = 52, y = 44, zone = "Durotar" },
|
||||
[18] = { str = "17) Run way down south and do #DOQUEST\"Thwarting Kolkar Aggression\"# (at 48.79) ", x = 48, y = 79, zone = "Durotar" },
|
||||
[19] = { str = "18) Once that is done turn it in (at 54.75).", x = 54, y = 75, zone = "Durotar" },
|
||||
[20] = { str = "19) Turn in #TURNIN\"A solvent Spirit\"# at Sen'jin (55.74)", x = 55, y = 74, zone = "Durotar" },
|
||||
[21] = { str = "20) Then go to Echo Isles (the islands south-east of Durotar) and do the following 4 quests together:" },
|
||||
[22] = { str = "21) #DOQUEST\"Break a Few Egg\"# " },
|
||||
[23] = { str = "22) #DOQUEST\"Practical Prey\"# " },
|
||||
[24] = { str = "23) #DOQUEST\"Minshina's Skull\"# (the skull is at 67.87)", x = 67, y = 87, zone = "Durotar" },
|
||||
[25] = { str = "24) #DOQUEST\"Zalazane\"# (Zalazane is at 67.86) " },
|
||||
[26] = { str = "25) After completing all these quests, die on purpose, so you end up right at Sen'jin Village (55.74)...", x = 55, y = 74, zone = "Durotar" },
|
||||
[27] = { str = "26) Turn in #TURNIN\"Practical Prey\"# #TURNIN\"Minshina's Skull\"# and #TURNIN\"Zalazane\"# . Save the quest reward item #NPCFaintly Glowing Skull# for a later quest called \"#NPCBurning Shadows\"# " },
|
||||
[28] = { str = "27) Hearth to Razor Hill. Turn in #TURNIN\"Break a Few Eggs\"# " },
|
||||
[29] = { str = "28) Then do the second half of #DOQUEST\"Encroachment\"# (west of Razor Hill at 42.38)", x = 42, y = 38, zone = "Durotar" },
|
||||
--[30] = { str = "." },
|
||||
--[31] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------9-12 Durotar
|
||||
--[13] = {
|
||||
[0912] = {
|
||||
title = "9-12 Durotar",
|
||||
--n = "9-12 Durotar",
|
||||
--pID = 12, nID = 101,
|
||||
--itemCount = 45,
|
||||
items = {
|
||||
[1] = { str = "9-12 Durotar" },
|
||||
[2] = { str = "01) Then go up and accept #ACCEPT\"Lost But Not Forgotten\"# at the little hut at 43.30", x = 43, y = 30, zone = "Durotar" },
|
||||
[3] = { str = "02) Then go up (grind mobs along the way) and accept #ACCEPT\"Winds in the Desert\"# at the goblin, 46.22.", x = 46, y = 22, zone = "Durotar" },
|
||||
[4] = { str = "03) Then do #DOQUEST\"Winds in the Desert\"# " },
|
||||
[5] = { str = "04) Then turn it in, accept #ACCEPT\"Securing the Lines\"# (at 46.22)", x = 46, y = 22, zone = "Durotar" },
|
||||
[6] = { str = "05) Grind mobs to lvl 10." },
|
||||
[7] = { str = "06) Go down to razor hill (52.44), turn in #TURNIN\"Encroachment\"# ", x = 52, y = 44, zone = "Durotar" },
|
||||
[8] = { str = "07) Get new spells/abilities." },
|
||||
[9] = { str = "08) Do your level 10 class quests. #HUNTERI do this as a hunter: do all three pet quests \"#Taming the Beast\":#" },
|
||||
[10] = { str = "#HUNTER09) Dire molted bore (south of razor hill)#" },
|
||||
[11] = { str = "#HUNTER10) Surf crawler (north east of razor hill at 58.30), DON'T go down to Senjen Village, it's too far away. Then Hearth if you can, if not run back.#", x = 58, y = 30, zone = "Durotar" },
|
||||
[12] = { str = "#HUNTER11) Armored scorpid (north west of razor hill)#" },
|
||||
[13] = { str = "#HUNTER12) After completing all those, accept \"#Training the Beast\".#" },
|
||||
[14] = { str = "#HUNTER13) Go way up north-east, (at 57.16) and tame an Encrusted Surf Crawler for your first real pet.#", x = 57, y = 16, zone = "Durotar" },
|
||||
[15] = { str = "14) Then go way west (grinding mobs along the way) and accept #ACCEPT\"Need for a Cure\"# (at 41.18)", x = 41, y = 18, zone = "Durotar" },
|
||||
[16] = { str = "15) Go to Orgrimmar (at 45.11)", x = 45, y = 11, zone = "Durotar" },
|
||||
[17] = { str = "#HUNTER16) Turn in \"#Training the Beast\" at hunter trainer. (66.18 in Orgrimmar)#", x = 66, y = 18, zone = "Orgrimmar" },
|
||||
[18] = { str = "17) Then turn in #TURNIN\"The Admiral's Orders\"# in thrall's chamber (34.36)", x = 34, y = 36, zone = "Orgrimmar" },
|
||||
[19] = { str = "18) Accept #ACCEPT\"Hidden Enemies\"# (Thrall gives it)" },
|
||||
[20] = { str = "19) Go into Cleft of Shadow, accept #ACCEPT\"Finding the Antidote\"# (46.53)", x = 46, y = 53, zone = "Orgrimmar" },
|
||||
[21] = { str = "20) Then go do: #DOQUEST\"Securing the Lines\"# (at 53.23 in Durotar)", x = 53, y = 23, zone = "Durotar" },
|
||||
[22] = { str = "21) Turn in #TURNIN\"Securing the Lines\"# (at 46.22)", x = 46, y = 22, zone = "Durotar" },
|
||||
[23] = { str = "22) Then go do: #DOQUEST\"Finding the Antidote\"# (the scorpids are all over the place) and #DOQUEST\"Lost But Not Forgotten\"# (all along the river west of Durotar)" },
|
||||
[24] = { str = "23) Then go do: #DOQUEST\"Dark Storms\"# (at 41.26)", x = 41, y = 26, zone = "Durotar" },
|
||||
[25] = { str = "24) Turn in #TURNIN\"Lost But Not Forgotten\"# (43.30)", x = 43, y = 30, zone = "Durotar" },
|
||||
[26] = { str = "25) Turn in #TURNIN\"Dark Storms\"# (at Razor Hill, 52.44)", x = 52, y = 44, zone = "Durotar" },
|
||||
[27] = { str = "26) Accept #ACCEPT\"Margoz\"# " },
|
||||
[28] = { str = "27) Turn in #TURNIN\"Margoz\"# (at 56.20) accept #ACCEPT\"Skull Rock\"# ", x = 56, y = 20, zone = "Durotar" },
|
||||
[29] = { str = "28) Go do #DOQUEST\"Skull Rock\"# along with #DOQUEST\"Hidden Enemies\"# (in the cave at 54.11)", x = 54, y = 11, zone = "Durotar" },
|
||||
[30] = { str = "29) If you can, try to kill Gazz'uz, he drops 'Eye of Burning Shadow' item which starts #ACCEPT\"Burning Shadows\"# quest. HINT: use the quest reward item #NPCFaintly Glowing Skull# to help you kill him, he's tough without it, also try to party up with somebody if you can." },
|
||||
[31] = { str = "30) Turn in #TURNIN\"Skull Rock\"# (56.20) accept #ACCEPT\"Neeru Fireblade\"# ", x = 56, y = 20, zone = "Durotar" },
|
||||
[32] = { str = "31) Go to into Orgrimmar." },
|
||||
[33] = { str = "32) Turn in #TURNIN\"Hidden Enemies\"# (33.37 in Orgrimmar) accept the next part to #ACCEPT\"Hidden Enemies\"# ", x = 33, y = 37, zone = "Orgrimmar" },
|
||||
[34] = { str = "33) Go to Cleft of Shadows (47.53) and turn in #TURNIN\"Finding the Antidote\"# ", x = 47, y = 53, zone = "Orgrimmar" },
|
||||
[35] = { str = "34) Turn in #TURNIN\"Neeru Fireblade\"# and #TURNIN\"Burning Shadows\"# at Neeru Fireblade (49.50) accept #ACCEPT\"Ak'Zeloth\"# ", x = 49, y = 50, zone = "Orgrimmar" },
|
||||
[36] = { str = "35) Also keep talking to him to complete #DOQUEST\"Hidden Enemies\"# " },
|
||||
[37] = { str = "36) Then go back to Thrall and turn in #TURNIN\"Hidden Enemies\"# again. The 3rd part refers to RFC instance, which I skip." },
|
||||
[38] = { str = "37) Leave Orgrimmar, and turn in #TURNIN\"Need for a Cure\"# (at 41.18) (you will most likely have to accept it again to turn it in)", x = 40, y = 62, zone = "Durotar" },
|
||||
[39] = { str = "38) Hearth to Razor Hill." },
|
||||
[40] = { str = "39) Build up first aid." },
|
||||
[41] = { str = "40) Get new spells/abilities." },
|
||||
[42] = { str = "41) Accept #ACCEPT\"Conscript of the Horde\"# (at 50.43 in Razor Hill)", x = 51, y = 44, zone = "Durotar" },
|
||||
[43] = { str = "42) Run west into the Barrens...(at 35.42)", x = 35, y = 42, zone = "Durotar" },
|
||||
--[44] = { str = "." },
|
||||
--[45] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
--[[--------------------------------------------------
|
||||
002_Mulgore.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 001 Introduction
|
||||
1.04.1
|
||||
-- First Release
|
||||
Taurens Mulgore's Guide
|
||||
from level 1 to lever 12
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_002_Mulgore = {
|
||||
-----------1-6 Mulgore
|
||||
--[14] = {
|
||||
[0106] = {
|
||||
title = "1-6 Mulgore",
|
||||
--ddmtype = 'v'
|
||||
--ddmlvl = '2'
|
||||
--n = "1-6 Mulgore",
|
||||
--pID = 1, nID = 15,
|
||||
--itemCount = 17,
|
||||
items = {
|
||||
[1] = { str = "1-6 Mulgore" },
|
||||
[2] = { str = "In reference to the Shamans, please look down the guide at the class quest part and follow the link which will give you all the information on your class quests as you have them from level 4." },
|
||||
[3] = { str = "01) Talk to Grull Hawkwing (44,77) and accept #ACCEPT\"The Hunt Begins\"# then go outside the area kill Plainstriders and loot 7 feathers and 7 meat. Run back turn it in and accept #ACCEPT\"The Hunt Continues\"# and accept #ACCEPT\"Etched Note\"#.", x = 44, y = 77, zone = "Mulgore" },
|
||||
[4] = { str = "02) Talk to your class trainer and turn in #TURNIN\"Etched Note\"# then talk to Chief Hawkwind and accept #ACCEPT\"A Humble Task\"#." },
|
||||
[5] = { str = "03) Go to (50,81) and turn in #TURNIN\"A Humble Task\"# at Greatmother Hawkwind, accept the next part then click the water pouch on the fountain, then run back and turn in #TURNIN\"A Humble Task\"# and accept #ACCEPT\"Rites of the Earthmother\"#. ", x = 50, y = 81, zone = "Mulgore" },
|
||||
[6] = { str = "04) Grind to level 3 then run back to Camp Narache and accept #ACCEPT\"Break Sharptusk!\"#." },
|
||||
[7] = { str = "05) South of the camp around (44,88) kill 10 Cougars and loot their pelts then run to (42,92) and talk to Seer Graytongue and turn in #TURNIN\"Rite of the Earthmother\"# and accept #ACCEPT\"Rite of Strength\"#.", x = 44, y = 88, zone = "Mulgore" },
|
||||
[8] = { str = "06) Run back to Camp Narache to Chief Hawkwind (44,77) turn in #TURNIN\"The Hunt Continues\"# and accept #ACCEPT\"The Battleboars\"# grinding mobs along the way until you hit level 4." },
|
||||
[9] = { str = "07) Run to (53,81) and kill Battleboar until you have 8 Flank and 8 Snout. ", x = 53, y = 81, zone = "Mulgore" },
|
||||
[10] = { str = "08) Run to the cave at (58,85) kill the Quilboar for 12 Belts as you make your way to the tent at (64,77) and kill Sharptusk making sure to loot him for #DOQUEST\"Break Sharptusk!\"# then run to the little cave at (63,82) and on the inside is a Dirt-stained Map. Use it to start #ACCEPT\"Attack on Camp Narache\"#.", x = 58, y = 85, zone = "Mulgore" },
|
||||
[11] = { str = "09) Hearth back to Camp Narache go to Chief Hawkwind (44,77) and turn in #TURNIN\"The Battleboars\"#, #TURNIN\"Attack on Camp Narache\"# and #TURNIN\"Rite of Strength\"# then accept #ACCEPT\"Rites of the Earthmother\"# part 2.", x = 44, y = 77, zone = "Mulgore" },
|
||||
[12] = { str = "10) Talk to Brave Windfeather and turn in #TURNIN\"Break Sharptusk!\"#." },
|
||||
[13] = { str = "11) Go to (38,81) and speak to Antur Fallow and accept #ACCEPT\"A Task Unfinished\"# then continue following the road to Bloodhoof Village.", x = 38, y = 81, zone = "Mulgore" },
|
||||
[14] = { str = "12) Talk to Innkeeper Kauth and turn in #TURNIN\"A Task Unfinished\"# and make Bloodhoof Village your home." },
|
||||
[15] = { str = "13) You should be level 6 now, if not grind the little exp you should need until you are." },
|
||||
--[16] = { str = "." },
|
||||
--[17] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------6-10 Mulgore
|
||||
--[15] = {
|
||||
[0610] = {
|
||||
title = "6-10 Mulgore",
|
||||
--n = "6-10 Mulgore",
|
||||
--pID = 14, nID = 16,
|
||||
--itemCount = 20,
|
||||
items = {
|
||||
[1] = { str = "6-10 Mulgore" },
|
||||
[2] = { str = "01) Talk to Baine Bloodhoof and turn in #TURNIN\"Rites of the Earthmother\"# accept #ACCEPT\"Sharing the Land\"#, #ACCEPT\"Rite of Vision\"# and #ACCEPT\"Dwarven Digging\"#." },
|
||||
[3] = { str = "02) Accept #ACCEPT\"Poison Water\"# from Mull Thunderhorn (48,60). Talk to Zarlman Two-Moons (47,57) turn in #TURNIN\"Rite of Vision\"# and accept part 2.", x = 48, y = 60, zone = "Mulgore" },
|
||||
[4] = { str = "03) Talk to Ruul Eagletalon (47,62) accept #ACCEPT\"Dangers of the Windfury\"# then talk to Harken Windtotem (48,59) and accept #ACCEPT\"Swoop Hunting\"#. Talk to Maur Raincaller (47,57) accept #ACCEPT\"Mazzranache\"#.", x = 47, y = 62, zone = "Mulgore" },
|
||||
[5] = { str = "04) Go southeast to (51,66) and kill Trophy Swops for 8 Quills, Prairie Wolfs for 6 Paws, Plainstriders for 4 Talons and underneath trees loot 2 Ambercorns and 2 Well Stones near the well (53,64).", x = 51, y = 66, zone = "Mulgore" },
|
||||
[6] = { str = "05) Go to (52,70) and kill the Palemane for #DOQUEST\"Sharing the Land\"#.", x = 52, y = 70, zone = "Mulgore" },
|
||||
[7] = { str = "06) At (33,41) kill Harpies for 8 Windfury Talons. Then to (31,50) and acquire broken tools for #DOQUEST\"Dwarven Digging\"#.", x = 33, y = 41, zone = "Mulgore" },
|
||||
[8] = { str = "07) Then go to (59,62) and accept #ACCEPT\"The Ravaged Caravan\"# from Morin Cloudstalker. Go to (54,48) and click on the crates to turn it in then accept the second part. Run back to Morin Cloudstalker (59,62) and turn it in then accept #ACCEPT\"The Venture Co.\"# and #ACCEPT\"Supervisor Fizsprocket\"#.", x = 59, y = 62, zone = "Mulgore" },
|
||||
[9] = { str = "08) Grind to level 8 if you aren't quite there yet." },
|
||||
[10] = { str = "09) Go back to Bloodhoof Village and turn in #TURNIN\"Poison Water\"#, #TURNIN\"Dangers of the Windfury\"#, #TURNIN\"Swoop Hunting\"# then turn in #TURNIN\"Rite of Vision\"# and accept the next part. Accept #ACCEPT\"Winterhoof Cleansing\"#." },
|
||||
[11] = { str = "10) Go to (53,67) and cleanse it using Thunderhorn's item. Then run back to Mull Thunderhorn (49,60) and turn in #TURNIN\"Winterhoof Cleansing\"# and accept #ACCEPT\"Thunderhorn Totem\"#.", x = 53, y = 67, zone = "Mulgore" },
|
||||
[12] = { str = "11) Go to (47,57) and drink #TURNIN\"Water of the Seers\"# in your backpack, then follow the wolf spirit.", x = 47, y = 57, zone = "Mulgore" },
|
||||
[13] = { str = "12) Turn in #TURNIN\"Rite of Vision\"# (33,36) when the spirit stops and accept #ACCEPT\"Rite of Wisdom\"#.", x = 33, y = 36, zone = "Mulgore" },
|
||||
[14] = { str = "13) Continue to (59,25) to Lorekeeper Raintotem and accept #ACCEPT\"A Sacred Burial\"#. ", x = 59, y = 25, zone = "Mulgore" },
|
||||
[15] = { str = "14) Go to the Ancestral Spirit at the Red Rocks (60,21) turn in #TURNIN\"Rite of Wisdom\"# accept #ACCEPT\"Journey into Thunder Bluff\"# and kill 8 Bristleback Interlopers nearby and once done speak to Lorekeeper Raintotem (59,25) and turn in #TURNIN\"A Sacred Burial\"#.", x = 60, y = 21, zone = "Mulgore" },
|
||||
[16] = { str = "15) Go to Thunder Bluff to the Forge at (39,55) and destroy the Prospector's Picks here by clicking on them to destroy them.", x = 39, y = 55, zone = "Thunder Bluff" },
|
||||
[17] = { str = "16) Go to (69,51) and talk to Cairne Bloodhoof to turn in #TURNIN\"Journey into Thunder Bluff\"# accept #ACCEPT\"Rise of the Earthmother\"#.", x = 69, y = 51, zone = "Thunder Bluff" },
|
||||
[18] = { str = "17) You should now be level 10, if not grind to it. Its time to do your class quest and below will tell you each class quest and how to do them but you can wait until you hit 12 before doing them to continue with Joana's 12-60 guide." },
|
||||
--[19] = { str = "." },
|
||||
--[20] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------10-12 Mulgore
|
||||
--[16] ={
|
||||
[1012] = {
|
||||
title = "10-12 Mulgore",
|
||||
--n = "10-12 Mulgore",
|
||||
--pID = 15, nID = 101,
|
||||
--itemCount = 19,
|
||||
items = {
|
||||
[1] = { str = "10-12 Mulgore" },
|
||||
[2] = { str = "01) Hearth to Bloodhoof Village. Talk to Skorm Whitecloud (46,60) accept #ACCEPT\"The Hunter's Way\"#.", x = 46, y = 60, zone = "Mulgore" },
|
||||
[3] = { str = "02) Turn in #TURNIN\"Dwarven Digging\"# and #TURNIN\"Thunderhorn Totem\"# then accept #ACCEPT\"Thunderhorn Cleansing\"#." },
|
||||
[4] = { str = "03) Go to 48,60 and speak to Baine Bloodhoof and turn in #TURNIN\"Sharing the Land\"#.", x = 48, y = 60, zone = "Mulgore" },
|
||||
[5] = { str = "04) Go to the Water Well at (44,45) and use it to cleanse your totem in your inventory.", x = 44, y = 45, zone = "Mulgore" },
|
||||
[6] = { str = "05) Go to (45,16) and kill Flatland Prowlers until you have 4 claws.", x = 45, y = 16, zone = "Mulgore" },
|
||||
[7] = { str = "06) Go to (61,47) and you should see the Venture Co. Mine. Kill 14 Workers and 6 Supervisors. Take a right at the first intersection and you should see Fizsprocket, then kill him.", x = 61, y = 47, zone = "Mulgore" },
|
||||
[8] = { str = "07) Go to (59,62) and turn in #TURNIN\"The Venture Co.\"# and #TURNIN\"Supervisor Fizsprocket\"#.", x = 59, y = 62, zone = "Mulgore" },
|
||||
[9] = { str = "08) Go to (49,60) and turn in #TURNIN\"Thunderhorn Cleansing\"# then accept #ACCEPT\"Wildmane Totem\"#. Go to (69,51) and turn in #TURNIN\"Rites of the Earthmother\"#.", x = 49, y = 60, zone = "Mulgore" },
|
||||
[10] = { str = "09) Go to (46,60) and turn in #TURNIN\"The Hunters Way\"#.", x = 46, y = 60, zone = "Mulgore" },
|
||||
[11] = { str = "10) Go to (38,60) in Thunder Bluff and you should see Eyahn Eagletalon. Accept #ACCEPT\"Preparation for Ceremony\"#.", x = 38, y = 60, zone = "Thunder Bluff" },
|
||||
[12] = { str = "11) Go behind Thunder Buff and kill Bluffwatchers until you have 6 Azure and 6 Bronze Feathers then run back to (38,60) and turn it in.", x = 38, y = 60, zone = "Thunder Bluff" },
|
||||
[13] = { str = "12) Run back to Bloodhoof Village but make sure you kill Prairie Alphas along the way until you have 8 Teeth." },
|
||||
[14] = { str = "13) Go to (49,60) and turn in #TURNIN\"Windmane Totem\"#.", x = 49, y = 60, zone = "Mulgore" },
|
||||
[15] = { str = "14) You should be level 12 now, if not grind to it then run into the Barrens following the path until you come to Camp Taurajo. Talk to Kirge Sternhorn (44,58) and accept #ACCEPT\"Journey to the Crossroads\"# and get the Flight Path.", x = 44, y = 58, zone = "Mulgore" },
|
||||
[16] = { str = "15) Run north up the road until you get to the Crossroads and turn in #TURNIN\"Journey to the Crossroads\"# get the Flight Path." },
|
||||
[17] = { str = "16) Now you can continue with the 12-15 Barrens guide which is in the 1-60 guide." },
|
||||
--[18] = { str = "." },
|
||||
--[19] = { str = "." },
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
--[[--------------------------------------------------
|
||||
002-TirisfalGlades.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 002 Tirisfal Glades
|
||||
1.04.1
|
||||
-- First Release
|
||||
Undead Tirisfal Glades's Guide
|
||||
from level 1 to lever 12
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_002_TirisfalGlades = {
|
||||
-----------1-6 DeathKnell (Tirisfal Glades)
|
||||
--[17] = {
|
||||
[0106] = {
|
||||
title = "1-6 DeathKnell (Tirisfal Glades)",
|
||||
--n = "1-6 DeathKnell (Tirisfal Glades)",
|
||||
--pID = 1, nID = 18,
|
||||
--itemCount = 18,
|
||||
items = {
|
||||
[1] = { str = "1-6 DeathKnell (Tirisfal Glades)" },
|
||||
[2] = { str = "01) Run up the steps and exit the Crypt." },
|
||||
[3] = { str = "02) In front of you from Undertaker Mordo accept the quest #ACCEPT\"Rude Awakening\"# then run down the hill and turn it in at Shadow Priest Sarvis." },
|
||||
[4] = { str = "03) Accept #ACCEPT\"The Mindless Ones\"# and if you are a Warlock accept #ACCEPT\"Piercing the Veil\"#." },
|
||||
[5] = { str = "04) Exit the building and to your left down the hill complete #DOQUEST\"The Mindless Ones\"# and #DOQUEST\"Piercing the Veil\"# then run back and turn them in." },
|
||||
[6] = { str = "05) Accept #ACCEPT\"Rattling the Rattlecages\"#, #ACCEPT\"Tainted Scroll\", and #ACCEPT\"The Damned\"#" },
|
||||
[7] = { str = "06) Turn in #TURNIN\"Tainted Scroll\"# at your class trainer then get new spells/skills (If you have no money merchant your items across the road)." },
|
||||
[8] = { str = "07) Complete #DOQUEST\"The Damned\"# along with #DOQUEST\"Rattling the Rattlecages\"# these are found out around the village, once down turn them in and accept #ACCEPT\"Marla's Last Wish\"#." },
|
||||
[9] = { str = "08) Go outside the church, accept #ACCEPT\"Night Web's Hollow\"# and #ACCEPT\"Scavenging Deathknell\"#." },
|
||||
[10] = { str = "09) Complete #DOQUEST\"Scavenging Deathknell\"# which are found around and inside buildings in the village then run down to (36, 62) and kill Samuel Fipps for #DOQUEST\"Marla's Last Wish\"#.", x = 36, y = 62, zone = "Tirisfal Glades" },
|
||||
[11] = { str = "10) Run to the cave at (27,59) and do #DOQUEST\"Night Web's Hollow\"# then run to the cemetery in the village to (31,64) and click the grave to bury the skull.", x = 27, y = 59, zone = "Tirisfal Glades" },
|
||||
[12] = { str = "11) Run back into the town and turn in all the quests which are #TURNIN\"Night Web's Hollow\"#, #TURNIN\"Scavenging Deathknell\"# and #TURNIN\"Marla's Last Wish\"#. If you are a Priest accept #HUNTER\"In Favor of Darkness\"# which requires level 5 and will be done once you reach Brill." },
|
||||
[13] = { str = "12) Accept #DOQUEST\"The Scarlet Crusade\"# outside the church and go do it at (35,68) then run back and turn it in.", x = 35, y = 68, zone = "Tirisfal Glades" },
|
||||
[14] = { str = "13) Accept #ACCEPT\"The Red Messenger\"# and go and do it at (36,68) killing Meven Korgal then run back and turn it in.", x = 36, y = 68, zone = "Tirisfal Glades" },
|
||||
[15] = { str = "14) Accept #ACCEPT\"Vital Intelligence\"# then get new spells/skills if you are level 6, if not grind until level 6 and do this." },
|
||||
[16] = { str = "15) Run to the north of Death Knell and accept #ACCEPT\"A Rogue's Deal\"# then leave the starting area." },
|
||||
--[17] = { str = "." },
|
||||
--[18] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------6-10 Tirisfal Glades
|
||||
--[18] = {
|
||||
[0610] = {
|
||||
title = "6-10 Tirisfal Glades",
|
||||
--n = "6-10 Tirisfal Glades",
|
||||
--pID = 17, nID = 19,
|
||||
--itemCount = 25,
|
||||
items = {
|
||||
[1] = { str = "6-10 Tirisfal Glades" },
|
||||
[2] = { str = "01) Continue down the hill and talk to Deathguard Simmer (41,54) accept #ACCEPT\"Fields of Grief\"# then go to the Pumpkin farm at (37,52) and kill any Farmers in the way while you collect 10 Pumpkins.", x = 41, y = 54, zone = "Tirisfal Glades" },
|
||||
[3] = { str = "02) Go back to the road along (46,57) to Gordo and accept #ACCEPT\"Gordo's Task\"# then continue along the road towards Brill getting 3 Gloom Weed along the way then turn it in at Junior Apothecary Holland and accept #ACCEPT\"Doom Weed\"#.", x = 46, y = 57, zone = "Tirisfal Glades" },
|
||||
[4] = { str = "03) Stop in Brill at (59,52) and turn in #TURNIN\"Fields of Grief\"# at Apothecary Johaan then accept the next part.", x = 59, y = 52, zone = "Tirisfal Glades" },
|
||||
[5] = { str = "04) Turn in #TURNIN\"Vital Intelligence\"# at Executor Zygand and accept #ACCEPT\"At War with the Scarlet Crusade\"#." },
|
||||
[6] = { str = "05) Go into the inn and turn in #TURNIN\"A Rogue's Deal\"# at the Innkeeper and make it your home. Priests turn in #HUNTER\"In Favor of Darkness\"# and accept #HUNTER\"Garments of Darkness\"# then run behind the cemetery at (59,46) and use 'Power Word: Fortitude' on the guy then run back and turn it in for your robe.", x = 59, y = 46, zone = "Tirisfal Glades" },
|
||||
[7] = { str = "06) Talk to Deathguard Dillinger (58,51) and accept #ACCEPT\"A Putrid Task\"# then accept #ACCEPT\"Wanted: Maggot Eye\"# from the Wanted sign at (61,52).", x = 58, y = 51, zone = "Tirisfal Glades" },
|
||||
[8] = { str = "07) Talk to Magistrate Sevren and accept #ACCEPT\"Graverobbers\"# then talk to Coleman Farthing and accept #ACCEPT\"Deaths in the Family\"# and #ACCEPT\"The Haunted Mills\"# then talk to Gretchen Deadmar and accept #ACCEPT\"The Chill of Death\"#." },
|
||||
[9] = { str = "08) Go into the Inn and in the basement turn in the pumpkin to finish the quest at Captured Zealot." },
|
||||
[10] = { str = "09) Go back to the bridge at (53,53) and kill the Scourge for 7 Putrid Claws and keep an eye out for any Gloom Weeds.", x = 53, y = 53, zone = "Tirisfal Glades" },
|
||||
[11] = { str = "10) Run back to the Pumpkin farm at (62,52) and just behind kill 10 Scarlet Warriors and any Duskbats for 5 pelts which you can do on your way questing as well as Darkhounds for 5 Vials of Darkhound Blood.", x = 62, y = 52, zone = "Tirisfal Glades" },
|
||||
[12] = { str = "11) Go back to Brill and speak to the Trade Supplies Merchant and buy a Coarse Thread." },
|
||||
[13] = { str = "12) Turn in #TURNIN\"A Putrid Task\"# accept #ACCEPT\"The Mills Overrun\"# and turn in #TURNIN\"The Chill of Death\"#." },
|
||||
[14] = { str = "13) You should have all the Gloom Weed by now so turn the quest in at Junior Apothecary Holland (58,49) and accept #ACCEPT\"Doom Weed\"#.", x = 58, y = 49, zone = "Tirisfal Glades" },
|
||||
[15] = { str = "14) Turn in #TURNIN\"At War with the Scarlet Crusade\"# accept the next part. Turn in #TURNIN\"A New Plague\"# and accept part 3. Accept #ACCEPT\"Proof of Demise\"#." },
|
||||
[16] = { str = "15) Go to (59,30) looting any Doom Weed along the way and whilst here kill 5 Rot Hide Mongrels and Maggot Kill for his Paw whilst collecting 8 Embalming Ichors from the Rot Hide Mongrels you kill.", x = 59, y = 30, zone = "Tirisfal Glades" },
|
||||
[17] = { str = "16) Go to (55,42) and kill 8 Graverobbers, collecting any remaining Doom Weed and Embalming Ichors.", x = 55, y = 42, zone = "Tirisfal Glades" },
|
||||
[18] = { str = "17) Go just behind where you killed Maggot Eye to the beach and kill Murlocs until you have 5 scales at (60,30).", x = 60, y = 30, zone = "Tirisfal Glades" },
|
||||
[19] = { str = "18) Go back to (57,49) to Junior Apothecary Holland and turn in #TURNIN\"Doom Weed\"#.", x = 57, y = 49, zone = "Tirisfal Glades" },
|
||||
[20] = { str = "19) Go back into Brill and turn in all quests which include #TURNIN\"A New Plague\"#, #TURNIN\"Wanted: Maggot Eye\"# and #TURNIN\"Graverobbers\"# then get all new quests which include #ACCEPT\"A New Plague\"#, #ACCEPT\"Forsaken Duties\"# and #ACCEPT\"The Prodical Lich\"#." },
|
||||
[21] = { str = "20) Travel to the tower at (53,66) and kill 3 Scarlet Missionaries, 3 Scarlet Zealots and Captain Parrine (51,68) make sure you loot all 10 Scarlet Insignia Rings.", x = 53, y = 66, zone = "Tirisfal Glades" },
|
||||
[22] = { str = "21) Run back to Brill and turn in #TURNIN\"At War with the Scarlet Crusade\"# and accept the next part. Turn in #TURNIN\"Proof of Demise\"#." },
|
||||
[23] = { str = "22) You should now be level 10, its time to do your class quest and below will tell you each class quest and how to do them but you can wait until you hit 12 before doing them to continue with my full 1-60 guide." },
|
||||
--[24] = { str = "." },
|
||||
--[25] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------10 -12 Tirisfal Glades
|
||||
--[19] = {
|
||||
[1012] = {
|
||||
title = "10-12 Tirisfal Glades",
|
||||
--n = "10-12 Tirisfal Glades",
|
||||
--pID = 18, nID = 101,
|
||||
--itemCount = 30,
|
||||
items = {
|
||||
[1] = { str = "10-12 Tirisfal Glades" },
|
||||
[2] = { str = "01) Go to Agamand Hills (48,42).", x = 48, y = 42, zone = "Tirisfal Glades" },
|
||||
[3] = { str = "02) Kill Rattlecage Soldiers and Darkeye Bonecasters looting them for Notched Ribs and Blackened Skulls. " },
|
||||
[4] = { str = "03) Kill Devlin Agamand (47,42), Kill Nissa Agamand (49,36) then kill Gregor and Thurman (46,32) making sure to loot all their remains.", x = 47, y = 42, zone = "Tirisfal Glades" },
|
||||
[5] = { str = "04) Kill Cracked Skull Soldiers until they drop a letter, then use it to start #ACCEPT\"A Letter Undelivered\"# (48,42).", x = 48, y = 42, zone = "Tirisfal Glades" },
|
||||
[6] = { str = "05) Go back to Brill and turn in #TURNIN\"A Letter Undelivered\"# and accept #ACCEPT\"Speak with Sevren\"#." },
|
||||
[7] = { str = "06) Go to around (62,52) and turn in all these #TURNIN\"The Haunted Mills\"#, \"Deaths in the Family\"#, #TURNIN\"The Mills Overrun\"# and #TURNIN\"Speak with Sevren\"#.", x = 62, y = 52, zone = "Tirisfal Glades" },
|
||||
[8] = { str = "07) Run to the Undercity." },
|
||||
[9] = { str = "08) Go to the Mage Quarter and speak with Bethor Iceshard and turn in #TURNIN\"The Prodical Lich\"# (84,17) then accept #ACCEPT\"The Lich's Identity\"#.", x = 84, y = 17, zone = "Undercity" },
|
||||
[10] = { str = "09) You can grab any professions you want while here also such as Mining or Herbalism to make you some gold at early levels." },
|
||||
[11] = { str = "10) Exit the Undercity the way you came in and go to (65,60) and turn in #TURNIN\"Forsaken Duties\"# then accept #ACCEPT\"Return to the Magistrate\"# and #ACCEPT\"Rear Guard Patrol\"#.", x = 36, y = 62, zone = "Tirisfal Glades" },
|
||||
[12] = { str = "11) Go to (75,61) and kill 8 Bleeding Horrors and 8 Wandering Spirits for #DOQUEST\"Rear Guard Patrol\" then run to (76,54) and kill 5 Scarlet Friars and Captain Vachon for #DOQUEST\"At War with the Scarlet Crusade\"#.", x = 75, y = 61, zone = "Tirisfal Glades" },
|
||||
[13] = { str = "12) Travel east to (82,54) and kill spiders until you get 4 Venoms.", x = 82, y = 54, zone = "Tirisfal Glades" },
|
||||
[14] = { str = "13) Go to Brightwater Lake and swim to Gunther's Retreat, and take the book here (84,17) then go back to (65,60) and turn in #TURNIN\"Rear Guard Patrol\"#.", x = 65, y = 60, zone = "Tirisfal Glades" },
|
||||
[15] = { str = "14) Enter the Undercity. Go to (84,17) and turn in #TURNIN\"The Lich's Identity\"# accept #ACCEPT\"Return the Book\"#.", x = 84, y = 17, zone = "Undercity" },
|
||||
[16] = { str = "15) Leave the Undercity and run back to Brill." },
|
||||
[17] = { str = "16) Turn in #TURNIN\"At War with the Scarlet Crusade\"# and accept the next part. Turn in #TURNIN\"A New Plague\"# accept the next part and turn in #TURNIN\"Return to the Magistrate\"#. Go to the Inn in the basement and turn in #TURNIN\"A New Plague\"#." },
|
||||
[18] = { str = "17) Go to the tower up the pathway at (79,26) and kill Captain Melrache for #DOQUEST\"At War with the Scarlet Crusade\"#. Note: This is a level 12 quest and if you find it hard to solo I advise you find someone to help.", x = 79, y = 26, zone = "Tirisfal Glades" },
|
||||
[19] = { str = "18) Go back to Gunther's Retreat at (68,41) and turn in #TURNIN\"Return the Book\"# and accept #ACCEPT\"Proving Allegiance\"# then take a candle next to you.", x = 68, y = 41, zone = "Tirisfal Glades" },
|
||||
[20] = { str = "19) At the little island just behind at (66,44) use the candle to summon Lillith Nefara, kill her then go back and turn the quest in then accept #ACCEPT\"The Prodigal Lich Returns\"#.", x = 66, y = 44, zone = "Tirisfal Glades" },
|
||||
[21] = { str = "20) Go back to Brill and turn in #TURNIN\"At War with the Scarlet Crusade\"# then run to the Undercity and at the Mage Quarter (84,17) turn in #TURNIN\"The Prodigal Lich Returns\"#.", x = 84, y = 17, zone = "Undercity" },
|
||||
[22] = { str = "21) Get your training for level 12, and train weapons if you need to." },
|
||||
[23] = { str = "22) Get on the zeppelin to go to Orgrimmar." },
|
||||
[24] = { str = "23) Get the Orgrimmar flight path." },
|
||||
[25] = { str = "24) Go south to Razor Hill and accept #ACCEPT\"Conscript of the Horde\"#" },
|
||||
[26] = { str = "25) Head west to the Barrens and turn in #TURNIN\"Crossroads Conscription\"# Accept it again." },
|
||||
[27] = { str = "26) Run to the Crossroads and turn in #TURNIN\"#Crossroads Conscription\"#." },
|
||||
[28] = { str = "27) Now you can continue with the Barrens 12-15 section which is in the FULL 1-60 guide." },
|
||||
--[29] = { str = "." },
|
||||
--[30] = { str = "." },
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,175 @@
|
||||
--[[--------------------------------------------------
|
||||
003_Horde_12to20.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 003 From Lvl 12 to Lvl 20
|
||||
1.04.1
|
||||
-- First Release
|
||||
Horde's Guide
|
||||
from level 12 to lever 20
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_003_Horde_12to20 = {
|
||||
-----------12-15 Barrens
|
||||
--[101] = {
|
||||
[1215] = {
|
||||
title = "12-15 Barrens",
|
||||
--n = "12-15 Barrens",
|
||||
--pID = 13, nID = 102,
|
||||
--itemCount = 34,
|
||||
items = {
|
||||
[1] = { str = "12-15 Barrens" },
|
||||
[2] = { str = "01) Turn in #TURNIN\"Conscript of the Horde\"# (62.19 in the Barrens) accept #ACCEPT\"Crossroads Conscription\"# ", x = 62, y = 19, zone = "The Barrens" },
|
||||
[3] = { str = "02) Then turn in #TURNIN\"Ak'Zeloth\"# (62.20) I SKIP \"#NPCThe Demon Seed\"# ", x = 62, y = 20, zone = "The Barrens" },
|
||||
[4] = { str = "03) Run to XRs (Crossroads) (at 52.30) #HUNTER (If you're a hunter do step 4)#", x = 52, y = 30, zone = "The Barrens" },
|
||||
[5] = { str = "#HUNTER04) While on my way to XRs, I abandon my crab and tame a Savannah Huntress cat, for my new pet.#" },
|
||||
[6] = { str = "05) Once at XRs (at 52.30) turn in #TURNIN\"Crossroads Conscription\"# Then accept all quests in XRs (which includes: #ACCEPT\"Meats to Orgrimmar\"# #ACCEPT\"Plainstrider Menace\"# #ACCEPT\"The Forgotten Pools\"# #ACCEPT\"Raptor Thieves\"# #ACCEPT\"Wharfmaster Dizzywig\"# #ACCEPT\"Fungal Spores\"# #ACCEPT\"Disrupt the Attacks\"# #ACCEPT\"Supplies for the Crossroads\"# and #ACCEPT\"Harpy Raiders\"# on top of the watch tower). Turn in #TURNIN\"Meats to Orgrimmar\"# i SKIP \"#NPCRide to Orgrimmar\"# ", x = 52, y = 30, zone = "The Barrens" },
|
||||
[7] = { str = "06) Make XRs your home." },
|
||||
[8] = { str = "07) Get FP (Flight Path)" },
|
||||
[9] = { str = "08) Then go do: #DOQUEST\"Disrupt the Attacks\"# along with #DOQUEST\"Plainstrider Menace\"# and #DOQUEST\"Raptor Thieves\"# (all around 54.26). NOTE: If you find #ACCEPT\"Chen's Empty Keg\"# accept it.", x = 54, y = 26, zone = "The Barrens" },
|
||||
[10] = { str = "09) Once #DOQUEST\"Disrupt the Attacks\"# is completed go turn it in (at 52.30) and accept #ACCEPT\"Supplies for the Crossroads\" ", x = 52, y = 30, zone = "The Barrens" },
|
||||
[11] = { str = "10) Go do #DOQUEST\"Supplies for the Crossroads\"# (at 56.26), then run back to Thork and #ACCEPT\"The Disruption Ends\"#, you'll be going back up to the razormanes one more time.", x = 56, y = 26, zone = "The Barrens" },
|
||||
[12] = { str = "11) If you find #ACCEPT\"Chen's Empty Keg\"# accept it." },
|
||||
[13] = { str = "12) Once #DOQUEST\"Plainstrider Menace\"# & #DOQUEST\"The Disruption Ends\"# and are complete..." },
|
||||
[14] = { str = "13) Go to Ratchet, get the Flight Path there (63.37) and accept #ACCEPT\"Raptor Horns\"# #ACCEPT\"Samophlange\"# #ACCEPT\"Southsea Freebooters\"# #ACCEPT\"The Guns of Northwatch\"# . Turn in #TURNIN\"Chen's Empty Keg\"# if you have it ... accept the next part to it, and focus on doing this quest while throughout the Barrens.", x = 63, y = 37, zone = "The Barrens" },
|
||||
[15] = { str = "14) Grab the quest #ACCEPT\"WANTED: Baron Longshore\"# (the wanted sign by the bank)" },
|
||||
[16] = { str = "15) Turn in #TURNIN\"Wharfmaster Dizzywig\"# (goblin on the docks) accept #ACCEPT\"Miner's Fortune\"# " },
|
||||
[17] = { str = "16) Then go do #DOQUEST\"Southsea Freebooters\"# along with #DOQUEST\"WANTED: Baron Longshore\"# (along the shore just south of Ratchet)" },
|
||||
[18] = { str = "17) Once those are done, turn them in (at 63.36), accept new ones, then go do:", x = 63, y = 36, zone = "The Barrens" },
|
||||
[19] = { str = "18) #TURNIN\"The Missing Shipment\"# (just turn this in at the goblin at the docks) accept #ACCEPT\"The Missing Shipment\"# part2" },
|
||||
[20] = { str = "19) Run back, to Gazlowe (63.36), turn in #TURNIN\"The Missing Shipment\"# part2 accept #ACCEPT\"Stolen Booty\"# ", x = 63, y = 36, zone = "The Barrens" },
|
||||
[21] = { str = "20) Then go do #DOQUEST\"Stolen Booty\"# (south of Ratchet again) (Telescopic Lens=64.49, and Shipment of Boots=63.50)", x = 63, y = 50, zone = "The Barrens" },
|
||||
[22] = { str = "21) Once #DOQUEST\"Stolen Booty\"# is completed hearth to XRs. (don't turn it in yet)" },
|
||||
[23] = { str = "22) Turn in #TURNIN\"The Disruption Ends\"# and #TURNIN\"Supplies for the Crossroads\"# " },
|
||||
[24] = { str = "23) Turn in #TURNIN\"Plainstrider Menace\"# (It should be done by now) accept #ACCEPT\"The Zhevra\"# . Also accept #ACCEPT\"Consumed by Hatred\"# and #ACCEPT\"Lost in Battle\"# " },
|
||||
[25] = { str = "24) At this point, I make sure I have three/four 6 slot bags, if I don't, I buy them at the bag vendor." },
|
||||
[26] = { str = "25) Run west from XRs, go to the guy in the hut... (at 45.28)", x = 45, y = 28, zone = "The Barrens" },
|
||||
[27] = { str = "26) Accept: #ACCEPT\"Kolkar Leaders\"# and #ACCEPT\"Centaur Bracers\"# " },
|
||||
[28] = { str = "27) Then go start doing:" },
|
||||
[29] = { str = "28) #DOQUEST\"Kolkar Leaders\"# #DOQUEST\"Centaur Bracers\"# #DOQUEST\"Raptor Thieves\"# #DOQUEST\"The Zhevra\"# #DOQUEST\"Fungal Spores\"# and #DOQUEST\"The Forgotten Pools\"# (all of these are done just slightly north of where you are)" },
|
||||
[30] = { str = "29) Once #DOQUEST\"Kolkar Leaders\"# is done.. (Barak is at 43.24) ", x = 43, y = 24, zone = "The Barrens" },
|
||||
[31] = { str = "30) Go do: #DOQUEST\"Harpy Raiders\"# (at 38.17)", x = 38, y = 17, zone = "The Barrens" },
|
||||
[32] = { str = "31) Once #DOQUEST\"Harpy Raiders\"# is done, grind your way down into Stonetalon Mountains (at 35.27 in the Barrens)...", x = 35, y = 27, zone = "The Barrens" },
|
||||
--[33] = { str = "." },
|
||||
--[34] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------15-16 Stonetalon Mountains
|
||||
--[102] = {
|
||||
[1516] = {
|
||||
title = "15-16 Stonetalon Mountains",
|
||||
--n = "15-16 Stonetalon Mountains",
|
||||
--pID = 101, nID = 103,
|
||||
--itemCount = 9,
|
||||
items = {
|
||||
[1] = { str = "15-16 Stonetalon Mountains" },
|
||||
[2] = { str = "01) Accept #ACCEPT\"Goblin Invaders\"# (you should first accept #ACCEPT\"Spirits of Stonetalon\"# from Zor Lonetree in Orgrimmar, but this is a lvl13 quest. Grab it if you're in Orgrimmar at that level) and #ACCEPT\"Avenge My Village\"# (at 35.27 in the Barrens)", x = 35, y = 27, zone = "The Barrens" },
|
||||
[3] = { str = "02) Go do: #DOQUEST\"Avenge My Village\"# then turn it in." },
|
||||
[4] = { str = "03) Then do: #DOQUEST\"Kill Grundig Darkcloud\"# (he is at 73.86)", x = 73, y = 86, zone = "Stonetalon Mountains" },
|
||||
[5] = { str = "04) NOTE: I usually skip the escort quest there (#DOQUEST\"Protect Kaya\"# 73.85 in the hut), This quest can be a little tough, kill the Sorcerer first that pops out during the one battle you have to fight. If it's too hard for you, you can skip it.", x = 73, y = 85, zone = "Stonetalon Mountains" },
|
||||
[6] = { str = "05) Turn in #TURNIN\"Kill Grundig Darkcloud\"# and #TURNIN\"Protect Kaya\"# if you did it (at 35.28 in the Barrens) ... accept #ACCEPT\"Kaya's Alive\"# ", x = 35, y = 28, zone = "The Barrens" },
|
||||
[7] = { str = "06) Then go back to the Barrens.." },
|
||||
--[8] = { str = "." },
|
||||
--[9] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------16-20 Barrens PART1
|
||||
--[103] = {
|
||||
--[1620] = {
|
||||
[1618] = {
|
||||
title = "16-20 Barrens (part 1)",
|
||||
--n = "16-20 Barrens Part 1",
|
||||
--pID = 102, nID = 104,
|
||||
--itemCount = 37,
|
||||
items = {
|
||||
[1] = { str = "16-20 Barrens Part 1" },
|
||||
[2] = { str = "01) Grind your way back to the guy in the hut (at 45.28)", x = 45, y = 28, zone = "The Barrens" },
|
||||
[3] = { str = "02) Turn in #TURNIN\"Kolkar Leaders\"# accept #ACCEPT\"Verog the Dervish\"# . Also turn in #TURNIN\"Centaur Bracers\"# if it is done, if not don't worry." },
|
||||
[4] = { str = "03) Make sure you finish up #DOQUEST\"Raptor Thieves\"# #DOQUEST\"The Zhevra\"# #DOQUEST\"Fungal Spores\"# and #DOQUEST\"The Forgotten Pools\"# before returning to the XRs." },
|
||||
[5] = { str = "04) Run to XRs (Cross Roads at 52.30)", x = 52, y = 30, zone = "The Barrens" },
|
||||
[6] = { str = "05) Turn in ALL quests, grab ALL new ones..." },
|
||||
[7] = { str = "06) then do #ACCEPT\"Apothecary Zamah\"# Which has you run all the way to Thunder Bluff (TB) at the spirt rise cave. Do these along the way:" },
|
||||
[8] = { str = "07) Grind your way down south (to 49.50) and do #DOQUEST\"Lost in Battle\"# (Manrik's Wife) She's laying dead by the hut, west of the bridge.", x = 49, y = 50, zone = "The Barrens" },
|
||||
[9] = { str = "08) Go down to Camp Taurajo (CT) accept #ACCEPT\"Tribes at War\"# (gnoll in the cage at 44.59), and get FP there. ", x = 44, y = 59, zone = "The Barrens" },
|
||||
[10] = { str = "09) Then do #DOQUEST\"Apothecary Zamah\"# Which has you run all the way to Thunder Bluff (TB) (in Mulgore at 39.27).", x = 39, y = 27, zone = "Mulgore" },
|
||||
[11] = { str = "10) Once at TB, go to #NPCweapon master# (40.62), #HUNTERget Guns and Staff skills. (I do this as a Hunter),# get what weapon skills you need for your class)" },
|
||||
[12] = { str = "11) Get new spells/abilities." },
|
||||
[13] = { str = "12) Turn in #TURNIN\"Apothecary Zamah\"# the cave below the spirit rise (at 29.29).", x = 29, y = 29, zone = "The Barrens" },
|
||||
[14] = { str = "13) Go to first aid guy at spirit rise to build up first aid." },
|
||||
[15] = { str = "14) Go up to the tower in middle of town to get FP, but DON'T fly back to XRs." },
|
||||
[16] = { str = "15) Hearth back to XRs." },
|
||||
[17] = { str = "16) Turn in #TURNIN\"Lost in Battle\"# " },
|
||||
[18] = { str = "17) Then go north west of XRs and do #DOQUEST\"Prowlers of the Barrens\"# (37.20)", x = 37, y = 20, zone = "The Barrens" },
|
||||
[19] = { str = "18) Then #DOQUEST\"Harpy Lieutenants\"# (38.14)", x = 38, y = 14, zone = "The Barrens" },
|
||||
[20] = { str = "19) Then grind your way east and do #DOQUEST\"Samophlange\"# (52.11) complete the whole chain, which in the end has you kill the goblin for the key. " },
|
||||
[21] = { str = "20) Then go east to Sludge Fen and do #DOQUEST\"Ignition\"# (56.8)", x = 56, y = 8, zone = "The Barrens" },
|
||||
[22] = { str = "21) Then do #DOQUEST\"The Escape\"# (#VIDEOSee video on how I do Ignition and Escape#)" },
|
||||
[23] = { str = "22) Then go north-east and do #DOQUEST\"Miner's Fortune\"# (61.5)", x = 61, y = 5, zone = "The Barrens" },
|
||||
[24] = { str = "23) Then grind your way south to Ratchet (63.37)...", x = 63, y = 37, zone = "The Barrens" },
|
||||
[25] = { str = "24) Turn in #TURNIN\"Stolen Booty\"# #TURNIN\"Samophlange\"# #TURNIN\"The Escape\"# ... accept #ACCEPT\"Ziz Fizziks\"# ... and SKIP \"#NPCWenikee Boltbucket\"# " },
|
||||
[26] = { str = "25) Turn in #TURNIN\"Miner's Fortune\"# " },
|
||||
[27] = { str = "26) Then go west of ratchet and do #DOQUEST\"The Stagnant Oasis\"# and #DOQUEST\"Verog the Dervish\"# (at 54.43)", x = 54, y = 43, zone = "The Barrens" },
|
||||
[28] = { str = "27) Then run to XRs (52.30)..", x = 52, y = 30, zone = "The Barrens" },
|
||||
[29] = { str = "28) Turn in #TURNIN\"Prowlers of the Barrens\"# #TURNIN\"Harpy Lieutenants\"# and #TURNIN\"The Stagnant Oasis\"# ... accept #ACCEPT\"Altered Beings\"# #ACCEPT\"Echeyakee\"# #ACCEPT\"Serena Bloodfeather\"# #ACCEPT\"Report to Kadrak\"# and #ACCEPT\"Egg Hunt\"# " },
|
||||
[30] = { str = "29) Go west of XRs (45.28), to turn in: #TURNIN\"Centaur Bracers\"# and #TURNIN\"Verog the Dervish\"# ... I SKIP \"#NPCHezrul Bloodmark\"# ", x = 45, y = 28, zone = "The Barrens" },
|
||||
[31] = { str = "30) Then grind your way north and do: #DOQUEST\"Serena Bloodfeather\"# (at 38.11)", x = 38, y = 11, zone = "The Barrens" },
|
||||
[32] = { str = "31) Then go east (grind mobs along the way) and do #DOQUEST\"Echeyakee\"# (coords are at 55.17) ", x = 55, y = 17, zone = "The Barrens" },
|
||||
[33] = { str = "32) Hearth to XRs." },
|
||||
[34] = { str = "33) Turn in #TURNIN\"Echeyakee\"# ... accept #ACCEPT\"The Angry Scytheclaws\"# " },
|
||||
[35] = { str = "34) Turn in #TURNIN\"Serena Bloodfeather\"# accept #ACCEPT\"Letter to Jin'Zil\"# . Make sure that #ACCEPT\"Consumed by Hatred\"# is also accepted." },
|
||||
--[36] = { str = "." },
|
||||
--[37] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------16-20 Barrens PART2
|
||||
--[104] = {
|
||||
--[1620] = {
|
||||
[1820] = {
|
||||
title = "16-20 Barrens (part 2)",
|
||||
--n = "16-20 Barrens Part 2",
|
||||
--pID = 103, nID = 201,
|
||||
--itemCount = 31,
|
||||
items = {
|
||||
[1] = { str = "16-20 Barrens Part 2" },
|
||||
[2] = { str = "01) Go down south and do:" },
|
||||
[3] = { str = "02) #DOQUEST\"Altered Beings\"# (55.42)", x = 55, y = 42, zone = "The Barrens" },
|
||||
[4] = { str = "03) #DOQUEST\"Raptor Horns\"# along with #DOQUEST\"Stolen Silver\"# (at 57.54) ", x = 57, y = 54, zone = "The Barrens" },
|
||||
[5] = { str = "04) #DOQUEST\"The Angry Scytheclaws\"# (51.46)", x = 51, y = 46, zone = "The Barrens" },
|
||||
[6] = { str = "05) #DOQUEST\"Tribes at War\"# along with #DOQUEST\"Consumed by Hatred\"# (at 51.54)", x = 51, y = 54, zone = "The Barrens" },
|
||||
[7] = { str = "06) Then grind your way to Camp Taurajo (45.58)", x = 45, y = 58, zone = "The Barrens" },
|
||||
[8] = { str = "07) Accept #ACCEPT\"Weapons of Choice\"# " },
|
||||
[9] = { str = "08) Go to gnoll in the cage..." },
|
||||
[10] = { str = "09) Turn in #TURNIN\"Tribes at War\"# accept #ACCEPT\"Blood Shards of Agamaggan\"# and #ACCEPT\"Betrayal from Within\"# " },
|
||||
[11] = { str = "10) Turn in #TURNIN\"Blood Shards of Agamaggan\"# " },
|
||||
[12] = { str = "11) Turn in 10 bloodshards for #TURNIN\"Spirit of the Wind\"# (repeatable quest) for fast run speed." },
|
||||
[13] = { str = "12) At this point, you should be about half way to level 20." },
|
||||
[14] = { str = "13) Now comes the fun part: #NPCWailing Caverns# Instance! (at 46.36). You will need a full group to do this. OPTIONAL: GRIND all the way to level 20! (which is what I do, but it's not recommended). I grind away at beasts and brisstlebacks just north of CT. " },
|
||||
[15] = { str = "14) Keep an eye out for the mobs named #NPCLakota'mani# (a big grey kodo around 45.53) and #NPCOwatanka#. They drops #NPCHoof of Lakota'mani# which starts #DOQUEST\"Lakota'mani\"# and #NPCOwatanka's Tailspike# which starts #DOQUEST\"Owatanka\"#. Turn these in at CT when you get the chance." },
|
||||
[16] = { str = "15) Once you are at least 5 bars away from 20, run to XRs..." },
|
||||
[17] = { str = "16) Turn in #TURNIN\"Stolen Silver\"# #TURNIN\"Consumed by Hatred\"# #TURNIN\"Altered Beings\"# and #TURNIN\"The Angry Scytheclaws\"# ...accept all new quests. SKIP \"#NPCMura Runetotem\"# . You should be lvl 20 now." },
|
||||
[18] = { str = "17) Fly to Orgrimmar, get new spells/abilities." },
|
||||
[19] = { str = "18) Grab #ACCEPT\"The Ashenvale Hunt\"# quest" },
|
||||
[20] = { str = "19) Hearth back to XRs." },
|
||||
[21] = { str = "20) Fly to Ratchet..." },
|
||||
[22] = { str = "21) Turn in #TURNIN\"Chen's Empty Keg\"# (if you did it, if not don't worry) ... accept the next part to it." },
|
||||
[23] = { str = "22) Turn in #TURNIN\"Raptor Horns\"# accept #ACCEPT\"Deepmoss Spider Eggs\"# and #ACCEPT\"Ziz Fizziks\"# " },
|
||||
[24] = { str = "23) Then go do: #DOQUEST\"The Guns of Northwatch\"# (at 60.55) (#VIDEOSee complete video on this quest along with the escort quest#)", x = 60, y = 55, zone = "The Barrens" },
|
||||
[25] = { str = "24) Then once #DOQUEST\"The Guns of Northwatch\"# is done, do:" },
|
||||
[26] = { str = "25) #DOQUEST\"Free From the Hold\"# (escort quest)" },
|
||||
[27] = { str = "26) Turn in both quests at Ratchet, then.." },
|
||||
[28] = { str = "27) Hearth to XRs. (if hearth stone is still on a cooldown, fly to XRs)" },
|
||||
[29] = { str = "28) Run west into Stonetalon Mountains..." },
|
||||
--[30] = { str = "." },
|
||||
--[31] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
@@ -0,0 +1,327 @@
|
||||
--[[--------------------------------------------------
|
||||
003_Horde_20to30.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 003 From Lvl 20 to Lvl 30
|
||||
1.04.1
|
||||
-- First Release
|
||||
Horde's Guide
|
||||
from level 20 to lever 30
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_003_Horde_20to30 = {
|
||||
-----------20-21 Stonetalon Mountains
|
||||
--[201] = {
|
||||
[2021] = {
|
||||
title = "20-21 Stonetalon Mountains",
|
||||
--n = "20-21 Stonetalon Mountains",
|
||||
--pID = 104, nID = 202,
|
||||
--itemCount = 20,
|
||||
items = {
|
||||
[1] = { str = "20-21 Stonetalon Mountains" },
|
||||
[2] = { str = "01) Run to Malaka'Jin (at 71.94)", x = 71, y = 94, zone = "Stonetalon Mountains" },
|
||||
[3] = { str = "02) Accept #ACCEPT\"Blood Feeders\"# " },
|
||||
[4] = { str = "03) Turn in #TURNIN\"Letter to Jin'Zil\"# (74.97 in the cave) ... accept #ACCEPT\"Jin'Zil's Forest Magic\"# ", x = 74, y = 97, zone = "Stonetalon Mountains" },
|
||||
[5] = { str = "04) Then go accept #ACCEPT\"Arachnophobia\"# (wanted poster is at 59.75)", x = 59, y = 75, zone = "Stonetalon Mountains" },
|
||||
[6] = { str = "05) Go do: #DOQUEST\"Blood Feeders\"# along with #DOQUEST\"Deepmoss Spider Eggs\"# and #DOQUEST\"Arachnophobia\"# (around 54.76) NOTE: you can skip Arachnophobia for now, you'll return here later...", x = 54, y = 76, zone = "Stonetalon Mountains" },
|
||||
[7] = { str = "06) Then turn in #TURNIN\"Ziz Fizziks\"# (the goblin in the hut at Windshear Crag, 58.62) ... accept #ACCEPT\"Super Reaper 6000\"# ", x = 58, y = 62, zone = "Stonetalon Mountains" },
|
||||
[8] = { str = "07) Then do: #DOQUEST\"Goblin Invaders\"# and #DOQUEST\"Super Reaper 6000\"# (the mobs are just north in Windshear Crag)" },
|
||||
[9] = { str = "08) Then turn in #TURNIN\"Super Reaper 6000\"# (58.62) ... accept #ACCEPT\"Further Instructions\"# ", x = 58, y = 62, zone = "Stonetalon Mountains" },
|
||||
[10] = { str = "09) Run to Sun Rock Retreat at 46.59.", x = 46, y = 59, zone = "Stonetalon Mountains" },
|
||||
[11] = { str = "10) Turn in #TURNIN\"Arachnophobia\"# and #TURNIN\"Kaya's Alive\"# if you did the escort quest" },
|
||||
[12] = { str = "11) Get FP there." },
|
||||
[13] = { str = "12) Run up the little #VIDEOpathway# and accept #ACCEPT\"Boulderslide Ravine\"# and #ACCEPT\"Trouble in the Deeps\"# (at 47.64)", x = 47, y = 64, zone = "Stonetalon Mountains" },
|
||||
[14] = { str = "13) Then go do #DOQUEST\"Boulderslide Ravine\"# (at 61.92)", x = 61, y = 92, zone = "Stonetalon Mountains" },
|
||||
[15] = { str = "14) Then turn in #TURNIN\"Blood Feeders\"# (71.95)", x = 71, y = 95, zone = "Stonetalon Mountains" },
|
||||
[16] = { str = "15) Turn in #TURNIN\"Goblin Invaders\"# (at 35.27 in the Barrens) ... accept #ACCEPT\"Shredding Machines\"# (I SKIP \"#NPCThe Elder Crone\"# )", x = 35, y = 27, zone = "The Barrens" },
|
||||
[17] = { str = "16) Hearth to XRs." },
|
||||
[18] = { str = "17) Run north to Ashenvale (stopping along the way to turn in #TURNIN\"Report to Kadrak\"# (at 48.5) but SKIP \"#NPCThe Warsong Reports\"# ", x = 48, y = 5, zone = "The Barrens" },
|
||||
--[19] = { str = "." },
|
||||
--[20] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------21-21 Ashenvale
|
||||
--[202] = {
|
||||
[2121] = {
|
||||
title = "21-21 Ashenvale",
|
||||
--n = "21-21 Ashenvale",
|
||||
--pID = 201, nID = 203,
|
||||
--itemCount = 11,
|
||||
items = {
|
||||
[1] = { str = "21-21 Ashenvale" },
|
||||
[2] = { str = "01) Run to Splintertree Post (at 73.65)", x = 73, y = 65, zone = "Ashenvale" },
|
||||
[3] = { str = "02) Turn in #TURNIN\"The Ashenvale Hunt\"# . Then accept and turn in #TURNIN\"The Ashenvale Hunt\"# again." },
|
||||
[4] = { str = "03) Get FP in Splintertree Post." },
|
||||
[5] = { str = "04) Run all the way to Zoram Strand (at 13.31), grind mobs along the way.", x = 13, y = 31, zone = "Ashenvale" },
|
||||
[6] = { str = "05) Get FP there. (12.33). Turn in #TURNIN\"Trouble in the Deeps\"# .. i SKIP \"#NPCThe Essence of Aku'Mai\"# ", x = 12, y = 33, zone = "Ashenvale" },
|
||||
[7] = { str = "06) Do the following quests:" },
|
||||
[8] = { str = "07) Accept and do #DOQUEST\"Naga at the Zoram Strand\"# then turn it in." },
|
||||
[9] = { str = "08) Hearth back to XRs, if hearth stone is still on a cooldown, fly there." },
|
||||
--[10] = { str = "." },
|
||||
--[11] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------22-23 Southern Barrens
|
||||
--[203] = {
|
||||
[2223] = {
|
||||
title = "22-23 Southern Barrens",
|
||||
--n = "22-23 Southern Barrens",
|
||||
--pID = 202, nID = 204,
|
||||
--itemCount = 19,
|
||||
items = {
|
||||
[1] = { str = "22-23 Southern Barrens" },
|
||||
[2] = { str = "01) Fly to CT." },
|
||||
[3] = { str = "02) Turn in #TURNIN\"Jorn Skyseer\"# ... accept #ACCEPT\"Ishamuhale\"# and #ACCEPT\"Melor Sends Word\"# " },
|
||||
[4] = { str = "03) Make CT your home." },
|
||||
[5] = { str = "04) I give bloodshards to the gnoll in the cage to get increased agility/spirit." },
|
||||
[6] = { str = "05) Run south and keep an eye out for the mob named #NPCOwatanka# (around 45.62), he drops 'Owatanka's Tailspike' which starts #ACCEPT\"Owatanka\"# ", x = 45, y = 62, zone = "The Barrens" },
|
||||
[7] = { str = "06) #DOQUEST\"Egg Hunt\"# (44.71)", x = 44, y = 71, zone = "The Barrens" },
|
||||
[8] = { str = "07) #DOQUEST\"Chen's Empty Keg\"# (if you have it)" },
|
||||
[9] = { str = "08) #DOQUEST\"Betrayal from Within\"# and #DOQUEST\"Weapons of Choice\"# (43.79)", x = 43, y = 79, zone = "The Barrens" },
|
||||
[10] = { str = "09) Accept #ACCEPT\"Gann's Reclamation\"# from #NPCGann Stonespire#. Then go do it (at 46.86). Then turn it in, accept #ACCEPT\"Revenge of Gann\"# ", x = 46, y = 86, zone = "The Barrens" },
|
||||
[11] = { str = "10) Hearth back to Camp Taurajo, turn in #TURNIN\"Weapons of Choice\"# and #TURNIN\"Betrayal from Within\"# ... accept #ACCEPT\"Betrayal from Within\"# part2" },
|
||||
[12] = { str = "11) Fly to XR." },
|
||||
[13] = { str = "12) Turn in #TURNIN\"Betrayal from Within\"# part2 and #TURNIN\"Egg Hunt\"# " },
|
||||
[14] = { str = "13) Do #DOQUEST\"Ishamuhale\"# (at 60.32)", x = 60, y = 32, zone = "The Barrens" },
|
||||
[15] = { str = "14) Turn in #TURNIN\"Further Instructions\"# (at Ratchet 63.37) ... accept #ACCEPT\"Further Instructions\"# part2", x = 63, y = 37, zone = "The Barrens" },
|
||||
[16] = { str = "15) Turn in #TURNIN\"Deepmoss Spider Eggs\"# and #TURNIN\"Chen's Empty Keg\"# " },
|
||||
[17] = { str = "16) Fly to Stonetalon Mountains..." },
|
||||
--[18] = { str = "." },
|
||||
--[19] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------23-25 Stonetalon Mountains
|
||||
--[204] = {
|
||||
[2325] = {
|
||||
title = "23-25 Stonetalon Mountains",
|
||||
--n = "23-25 Stonetalon Mountains",
|
||||
--pID = 203, nID = 205,
|
||||
--itemCount = 24,
|
||||
items = {
|
||||
[1] = { str = "23-25 Stonetalon Mountains" },
|
||||
[2] = { str = "01) Accept all quests at Sun Rock Retreat (which include: #ACCEPT\"Cenarius' Legacy\"# #ACCEPT\"Cycle of Rebirth\"# and #ACCEPT\"Harpies Threaten\"# )..." },
|
||||
[3] = { str = "02) Make Sun Rock Retreat your home." },
|
||||
[4] = { str = "03) Turn in #TURNIN\"Boulderslide Ravine\"# .. I SKIP \"#NPCEarthen Arise\"# (accept #ACCEPT\"Elemental War\"# there though)" },
|
||||
[5] = { str = "04) Do:" },
|
||||
[6] = { str = "05) #DOQUEST\"Cycle of Rebirth\"# (pick up the seeds around 48.41)", x = 48, y = 41, zone = "Stonetalon Mountains" },
|
||||
[7] = { str = "06) #DOQUEST\"Cenarius' Legacy\"# (done at around 35.14)", x = 35, y = 14, zone = "Stonetalon Mountains" },
|
||||
[8] = { str = "07) #DOQUEST\"Jin'Zil's Forest Magic\"# (the mobs are around the path at 45.27, and the area at 34.14)", x = 45, y = 27, zone = "Stonetalon Mountains" },
|
||||
[9] = { str = "08) Go back to Sun Rock Retreat and turn in #TURNIN\"Cycle of Rebirth\"# ... accept #ACCEPT\"New Life\"# " },
|
||||
[10] = { str = "09) Turn in #TURNIN\"Cenarius' Legacy\"# ... accept #ACCEPT\"Ordanus\"# " },
|
||||
[11] = { str = "#HUNTER10) NOTE: I skip getting my level 24 spells/abilities (cause there's little that are useful at this level)#" },
|
||||
[12] = { str = "11) Go turn in #TURNIN\"Further Instructions\"# part2 (58.62)... accept #ACCEPT\"Gerenzo Wrenchwhistle\"# ", x = 58, y = 62, zone = "Stonetalon Mountains" },
|
||||
[13] = { str = "12) Go do #DOQUEST\"Gerenzo Wrenchwhistle\"# (at 64.41) and #DOQUEST\"Shredding Machines\"# (kill #NPCXT:4# and #NPCXT:9#)", x = 64, y = 41, zone = "Stonetalon Mountains" },
|
||||
[14] = { str = "13) Then turn in #TURNIN\"Gerenzo Wrenchwhistle\"# . (58.62). If you couldn't do Arachnophobia, do it now!", x = 58, y = 62, zone = "Stonetalon Mountains" },
|
||||
[15] = { str = "14) Run down south and turn in #TURNIN\"Jin'Zil's Forest Magic\"# (74.97)", x = 74, y = 97, zone = "Stonetalon Mountains" },
|
||||
[16] = { str = "15) Turn in #TURNIN\"Shredding Machines\"# (in the Barrens at 35.27)", x = 35, y = 27, zone = "The Barrens" },
|
||||
[17] = { str = "16) Hearth back to Sun Rock Retreat and turn in #TURNIN\"Arachnophobia\"# if you just did it." },
|
||||
[18] = { str = "17) Stock back up on food/water." },
|
||||
[19] = { str = "18) Go do #DOQUEST\"Harpies Threaten\"# along with #DOQUEST\"Elemental War\"# and #DOQUEST\"New Life\"# (all at the Charred Vale, 32.67)", x = 32, y = 67, zone = "Stonetalon Mountains" },
|
||||
[20] = { str = "19) Once they are all done, make sure you are at least 5 bars away from level 25, so you may have to grind a little. " },
|
||||
[21] = { str = "20) Then go turn them all in, and accept #ACCEPT\"Calling in the Reserves\"# " },
|
||||
[22] = { str = "21) Then fly to CT..." },
|
||||
--[23] = { str = "." },
|
||||
--[24] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------25-25 Southern Barrens2
|
||||
--[205] = {
|
||||
[2525] = {
|
||||
title = "25-25 Southern Barrens",
|
||||
--n = "25-25 Southern Barrens",
|
||||
--pID = 204, nID = 206,
|
||||
--itemCount = 14,
|
||||
items = {
|
||||
[1] = { str = "25-25 Southern Barrens" },
|
||||
[2] = { str = "01) Turn in #TURNIN\"Ishamuhale\"# ... accept #ACCEPT\"Enraged Thunder Lizards\"# " },
|
||||
[3] = { str = "02) Make CT your home." },
|
||||
[4] = { str = "03) Accept #ACCEPT\"A New Ore Sample\"# (need to be lvl 25 to get this)" },
|
||||
[5] = { str = "04) Go down and do:" },
|
||||
[6] = { str = "05) #DOQUEST\"Enraged Thunder Lizards\"# " },
|
||||
[7] = { str = "06) You should find the mob #NPCWashte Pawne#, he drops 'Washte Pawne Feather' which starts #ACCEPT\"Washte Pawne\"# " },
|
||||
[8] = { str = "07) #DOQUEST\"Revenge of Gann\"# (at 47.85) Once done, Turn it in, accept the next part...", x = 47, y = 85, zone = "The Barrens" },
|
||||
[9] = { str = "08) Do #DOQUEST\"Revenge of Gann\"# Part 3 (at 46.85), then turn it in.", x = 46, y = 85, zone = "The Barrens" },
|
||||
[10] = { str = "09) Head south down the path to the Great Lift (at 44.91 in the barrens) and turn in #TURNIN\"Calling in the Reserves\"# ", x = 44, y = 91, zone = "The Barrens" },
|
||||
[11] = { str = "10) Accept #ACCEPT\"Message to Freewind Post\"# " },
|
||||
[12] = { str = "11) Run to Freewind Post... (45.50 in Thousand Needles)", x = 45, y = 50, zone = "Thousand Needles" },
|
||||
--[13] = { str = "." },
|
||||
--[14] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------25-26 Thousand Needles
|
||||
--[206] = {
|
||||
[2526] = {
|
||||
title = "25-26 Thousand Needles",
|
||||
--n = "25-26 Thousand Needles",
|
||||
--pID = 205, nID = 207,
|
||||
--itemCount = 23,
|
||||
items = {
|
||||
[1] = { str = "25-26 Thousand Needles" },
|
||||
[2] = { str = "01) Turn in #TURNIN\"Message to Freewind Post\"# accept #ACCEPT\"Pacify the Centaur\"# " },
|
||||
[3] = { str = "02) Accept #ACCEPT\"Wanted - Arnak Grimtotem\"# #ACCEPT\"Alien Egg\"# and #ACCEPT\"Wind Rider\"# " },
|
||||
[4] = { str = "03) Get FP there." },
|
||||
[5] = { str = "04) Go do (in the following order):" },
|
||||
[6] = { str = "05) #DOQUEST\"Pacify the Centaur\"# (mobs are just north)" },
|
||||
[7] = { str = "06) #DOQUEST\"Test of Faith\"# (the cave at 52.43)", x = 52, y = 43, zone = "Thousand Needles" },
|
||||
[8] = { str = "07) #DOQUEST\"A New Ore Sample\"# (if you can't find the drop, just skip it for now)" },
|
||||
[9] = { str = "08) #DOQUEST\"Alien Egg\"# (this egg has 4 possible spawn points, either at around: 52.56 / 45.63 / 41.60 / 50.56, and there might be more, just check around those areas.)", x = 52, y = 56, zone = "Thousand Needles" },
|
||||
[10] = { str = "09) If you're not level 26 (or two bars away from it), grind till you are." },
|
||||
[11] = { str = "10) Go up to Freewind Post (45.50)..", x = 45, y = 50, zone = "Thousand Needles" },
|
||||
[12] = { str = "11) Turn in #TURNIN\"Pacify the Centaur\"# ... accept #ACCEPT\"Grimtotem Spying\"# " },
|
||||
[13] = { str = "12) Turn in #TURNIN\"Alien Egg\"# ... accept #ACCEPT\"Serpent Wild\"# " },
|
||||
[14] = { str = "13) Hearth to Camp Taurajo." },
|
||||
[15] = { str = "14) Turn in #TURNIN\"Enraged Thunder Lizards\"# and #TURNIN\"Washte Pawne\"# ... accept #ACCEPT\"Cry of the Thunderhawk\"# " },
|
||||
[16] = { str = "15) Turn in #TURNIN\"A New Ore Sample\"# " },
|
||||
[17] = { str = "16) Go do #DOQUEST\"Cry of the Thunderhawk\"# then turn it in ... I SKIP \"#NPCMahren Skyseer\"# " },
|
||||
[18] = { str = "17) Fly to Thunder Bluff to get new spells/abilities." },
|
||||
[19] = { str = "18) Turn in #TURNIN\"Melor Sends Word\"# (61.80 on the Hunter Rise)... accept #ACCEPT\"Steelsnap\"# ", x = 61, y = 80, zone = "Thunder Bluff" },
|
||||
[20] = { str = "19) Accept #ACCEPT\"The sacred Flame\"# (55.51)", x = 55, y = 51, zone = "Thunder Bluff" },
|
||||
[21] = { str = "20) Fly to Splintertree Post, Ashenvale..." },
|
||||
--[22] = { str = "." },
|
||||
--[23] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------26-27 Ashenvale
|
||||
--[207] = {
|
||||
[2627] = {
|
||||
title = "26-27 Ashenvale",
|
||||
--n = "26-27 Ashenvale",
|
||||
--pID = 206, nID = 208,
|
||||
--itemCount = 26,
|
||||
items = {
|
||||
[1] = { str = "26-27 Ashenvale" },
|
||||
[2] = { str = "01) Make it your home." },
|
||||
[3] = { str = "02) Do the following order:" },
|
||||
[4] = { str = "03) Accept all the quests, which include: #ACCEPT\"Stonetalon Standstill\"# #ACCEPT\"Satyr Horns\"# #ACCEPT\"Ashenvale Outrunners\"# (accept this at 71.68). Make sure #ACCEPT\"The Ashenvale Hunt\"# is turned in at #NPCSenani Thunderheart# (you can accept this quest right at the NPC itself). Note: I SKIP \"#NPCWarsong Supplies\"# and \"#NPCThe Lost Pages\"# ", x = 71, y = 68, zone = "Ashenvale" },
|
||||
[5] = { str = "04) Kill the first of the three mobs related to the Ashenvale hunt:" },
|
||||
[6] = { str = "05) #DOQUEST\"Sharptalon's Claw\"# (Kill #NPCSharptalon# (patrols around 74.70), then he drops the item that starts this quest) (hint: easy way to kill it (he's lvl 31 mob), is to bring his health to a 3rd left, then drag him into the guards at Splintertree Post, they will finish em). ", x = 74, y = 70, zone = "Ashenvale" },
|
||||
[7] = { str = "06) Do: #DOQUEST\"Ashenvale Outrunners\"# (around 71.72)#HUNTER (use track hidden, to find them better). # Once the quest is completed, turn it in when you get the chance.", x = 71, y = 72, zone = "Ashenvale" },
|
||||
[8] = { str = "07) Then go slightly west and do #DOQUEST\"Torek's Assault\"# (starts at 68.75)", x = 68, y = 75, zone = "Ashenvale" },
|
||||
[9] = { str = "08) Then go do #DOQUEST\"Stonetalon Standstill\"# (the lake at 53.70) *find and kill #NPCTideress# he drops an item which starts: #ACCEPT\"The Befouled Element\"# ", x = 53, y = 70, zone = "Ashenvale" },
|
||||
[10] = { str = "09) Kill #NPCUrsangous#, (around 42.67) #DOQUEST\"Ursangous's Paw\"# (Ashenvale hunt)", x = 42, y = 67, zone = "Ashenvale" },
|
||||
[11] = { str = "10) Kill #NPCShadumbra# (around 56.54) #DOQUEST\"Shadumbra's Head\"# (Ashenvale hunt)", x = 56, y = 54, zone = "Ashenvale" },
|
||||
[12] = { str = "11) #DOQUEST\"The sacred Flame\"# (first find a phial killing the dryads at 61.52, then fill it at the moonwell at 60.72)", x = 60, y = 72, zone = "Ashenvale" },
|
||||
[13] = { str = "12) Hearth to Splintertree Post to turn in #TURNIN\"Stonetalon Standstill\"# #TURNIN\"The Befouled Element\"# (accept #ACCEPT\"Je'neu of the Earthen Ring\"# ) #TURNIN\"Torek's Assault\"# and all three of the 'Ashenvale Hunt' quests, then accept and complete #TURNIN\"The Hunt Completed\"# " },
|
||||
[14] = { str = "13) Fly to Zoram Strand, and turn in #TURNIN\"Je'neu of the Earthen Ring\"# " },
|
||||
[15] = { str = "14) Accept and do #DOQUEST\"Vorsha the Lasher\"# . Once done go back and turn it in." },
|
||||
[16] = { str = "15) Accept and do: #DOQUEST\"Between a Rock and a Thistlefur\"# (34.37) and #DOQUEST\"Troll Charm\"# (the cave is at 38.30). #VIDEONOTE:# While you are in the cave, there is an escort quest (a white bear-formed druid in a cage) called #DOQUEST\"Freedom to Ruul\"# , try to do this quest, you may have to fight 3-5 mobs at once several times, if you fail then it can be skipped.", x = 34, y = 37, zone = "Ashenvale" },
|
||||
[17] = { str = "16) Once they are both completed, go turn in #TURNIN\"Between a Rock and a Thistlefur\"# and #TURNIN\"Troll Charm\"# (back at the Zoram Strand), then hearth back to Splintertree Post. Turn in #TURNIN\"Freedom to Ruul\"# (if you did it)" },
|
||||
[18] = { str = "17) If im not level 27 i'll grind till I am." },
|
||||
[19] = { str = "18) Go do #DOQUEST\"Ordanus\"# (61.52) (#VIDEOfight your way to him, just kill the guy, grab his head and jump out of there!#)", x = 61, y = 52, zone = "Ashenvale" },
|
||||
[20] = { str = "19) Go do: #DOQUEST\"Satyr Horns\"# (done at the Night Run, 67.53) (entrance to the area is around 64.42).", x = 67, y = 53, zone = "Ashenvale" },
|
||||
[21] = { str = "20) Run back to Splintertree Post (don't hearth). Turn in #TURNIN\"Satyr Horns\"#" },
|
||||
[22] = { str = "21) Fly to Stonetalon Mountains..." },
|
||||
--[23] = { str = "." },
|
||||
--[24] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------27-27 Stonetalon Mountains
|
||||
--[208] = {
|
||||
[2727] = {
|
||||
title = "27-27 Stonetalon Mountains",
|
||||
--n = "27-27 Stonetalon Mountains",
|
||||
--pID = 207, nID = 209,
|
||||
--itemCount = 11,
|
||||
items = {
|
||||
[1] = { str = "27-27 Stonetalon Mountains" },
|
||||
[2] = { str = "01) Turn in #TURNIN\"Ordanus\"# ... I SKIP \"#NPCThe Den\"# " },
|
||||
[3] = { str = "02) Make Sun Rock Retreat your home." },
|
||||
[4] = { str = "03) Accept and do #DOQUEST\"Bloodfury Bloodline\"# , go kill Bloodfury Ripper (at 30.63) (grinding mobs along the way) , then hearth back.." },
|
||||
[5] = { str = "04) Turn #TURNIN\"Bloodfury Bloodline\"# in." },
|
||||
[6] = { str = "05) Fly to Thunder Bluff." },
|
||||
[7] = { str = "06) Make Thunder Bluff your home." },
|
||||
[8] = { str = "07) Turn in #TURNIN\"The sacred Flame\"# (54.51 in TB)... accept #ACCEPT\"The sacred Flame\"# part2", x = 54, y = 51, zone = "Thunder Bluff" },
|
||||
[9] = { str = "08) Fly to Thousand Needles..." },
|
||||
--[10] = { str = "." },
|
||||
--[11] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------27-29 Thousand Needles
|
||||
--[209] = {
|
||||
[2729] = {
|
||||
title = "27-29 Thousand Needles",
|
||||
--n = "27-29 Thousand Needles",
|
||||
--pID = 208, nID = 210,
|
||||
--itemCount = 37,
|
||||
items = {
|
||||
[1] = { str = "27-29 Thousand Needles" },
|
||||
[2] = { str = "01) Turn in #TURNIN\"The sacred Flame\"# ... accept #ACCEPT\"The sacred Flame\"# part3" },
|
||||
[3] = { str = "02) I do the following order:" },
|
||||
[4] = { str = "03) #DOQUEST\"The sacred Flame\"# (charge the brazier in the cave at 44.37) ", x = 44, y = 37, zone = "Thousand Needles" },
|
||||
[5] = { str = "04) Go to Whitereach Post (21.32), accept #ACCEPT\"Hypercapacitor Gizmo\"# , Turn in #TURNIN\"Serpent Wild\"# ...accept #ACCEPT\"Sacred Fire\"# ", x = 21, y = 32, zone = "Thousand Needles" },
|
||||
[6] = { str = "05) Go do: #DOQUEST\"Sacred Fire\"# (35.36)", x = 35, y = 36, zone = "Thousand Needles" },
|
||||
[7] = { str = "06) #DOQUEST\"Wind Rider\"# (11.36)", x = 11, y = 36, zone = "Thousand Needles" },
|
||||
[8] = { str = "07) #DOQUEST\"Homeward Bound\"# (escort starts at 17.40) (if the Elite gets in the way, skip it)", x = 17, y = 40, zone = "Thousand Needles" },
|
||||
[9] = { str = "08) #DOQUEST\"Steelsnap\"# (Steelsnap patrols around 16.25) ", x = 16, y = 25, zone = "Thousand Needles" },
|
||||
[10] = { str = "09) Hearth to Thunder Bluff." },
|
||||
[11] = { str = "10) Get new spells/abilities." },
|
||||
[12] = { str = "11) Turn in #TURNIN\"Steelsnap\"# (on Hunter Rise) ... accept #ACCEPT\"Frostmaw\"# " },
|
||||
[13] = { str = "12) Turn in #TURNIN\"Sacred Fire\"# (on Elder Rise) ... accept #ACCEPT\"Arikara\"# " },
|
||||
[14] = { str = "13) Fly back to 1K Needles." },
|
||||
[15] = { str = "14) Make Freewind Post your home." },
|
||||
[16] = { str = "15) Turn in #TURNIN\"The sacred Flame\"# and #TURNIN\"Wind Rider\"# " },
|
||||
[17] = { str = "16) Go to the Darkcloud Pinnacle (the entrance ramp is at 31.36) and do the following quests: #DOQUEST\"Grimtotem Spying\"# (the notes are up in the rises at 31.32, 33.39, and 39.41)", x = 31, y = 36, zone = "Thousand Needles" },
|
||||
[18] = { str = "17) #DOQUEST\"Arikara\"# (done up at 37.35) ", x = 37, y = 35, zone = "Thousand Needles" },
|
||||
[19] = { str = "18) #DOQUEST\"Wanted - Arnak Grimtotem\"# (he is up at 38.27)", x = 38, y = 27, zone = "Thousand Needles" },
|
||||
[20] = { str = "19) #DOQUEST\"Free at Last\"# (escort quest starts up at 38.27)", x = 38, y = 27, zone = "Thousand Needles" },
|
||||
[21] = { str = "20) Go to Whitereach Post (21.32), turn in #TURNIN\"Arikara\"# and #TURNIN\"Homeward Bound\"#", x = 21, y = 32, zone = "Thousand Needles" },
|
||||
[22] = { str = "21) You should be level 29 by now, if not grind to level 29, I grind away at centuars around Camp E'Thok (18.23)", x = 18, y = 23, zone = "Thousand Needles" },
|
||||
[23] = { str = "22) Then do #DOQUEST\"Hypercapacitor Gizmo\"# (Elite) (kill mobs around the cage, at 22.24, free him, #HUNTERuse immolation trap/fear# to kill it) ", x = 22, y = 24, zone = "Thousand Needles" },
|
||||
[24] = { str = "23) Kill the #NPCGalak Messenger#, he drops 'Assassination Note' which starts #ACCEPT\"Assassination Plot\"# Turn in for Easy XP. Also turn in #TURNIN\"Hypercapacitor Gizmo\"#" },
|
||||
[25] = { str = "24) Then do: #DOQUEST\"Protect Kanati Greycloud\"# " },
|
||||
[26] = { str = "25) If you are not at least 4 bars from level 30, grind until you are. Then hearth back to Freewind Post." },
|
||||
[27] = { str = "26) Turn in #TURNIN\"Free at Last\"# #TURNIN\"Wanted - Arnak Grimtotem\"# #TURNIN\"Grimtotem Spying\"#" },
|
||||
[28] = { str = "27) NOTE: I skip \"#NPCTest of Endurance\"# " },
|
||||
[29] = { str = "28) Fly to Orgrimmar" },
|
||||
[30] = { str = "29) Make Orgrimmar your home." },
|
||||
[31] = { str = "30) Get new spells/abilities." },
|
||||
[32] = { str = "31) Go to Undercity (UC). You need to get on the zeppelin just right outside of Orgrimmar." },
|
||||
[33] = { str = "32) Run to Tarren Mill in Hillsbrad Foothills.. (You can just bypass the UC for now if you like and just follow the path south out of Tirisfal Glades and into Silverpine Forest)" },
|
||||
--[36] = { str = "." },
|
||||
--[37] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------29-30 Hillsbrad Foothills
|
||||
--[210] = {
|
||||
[2930] = {
|
||||
title = "29-30 Hillsbrad Foothills",
|
||||
--n = "29-30 Hillsbrad Foothills",
|
||||
--pID = 209, nID = 301,
|
||||
--itemCount = 19,
|
||||
items = {
|
||||
[1] = { str = "29-30 Hillsbrad Foothills" },
|
||||
[2] = { str = "01) accept #ACCEPT\"Time To Strike\"# (at the Southpoint Tower, right when u enter Hillsbrad)" },
|
||||
[3] = { str = "02) Once at Tarren Mill:" },
|
||||
[4] = { str = "03) Turn in #TURNIN\"Time To Strike\"# " },
|
||||
[5] = { str = "04) Accept #ACCEPT\"Helcular's Revenge\"# " },
|
||||
[6] = { str = "05) Accept #ACCEPT\"Elixir of Pain\"# " },
|
||||
[7] = { str = "06) GET FLIGHT PATH THERE!!!!" },
|
||||
[8] = { str = "07) Go start killing Yetis..." },
|
||||
[9] = { str = "08) I keep grinding away at Yetis until I hit 30. (OPTIONAL: you could go do RFK instead of the grinding)" },
|
||||
[10] = { str = "09) also, the \"#NPCHelcular's Rod\"# should have dropped before hitting 30, if not keep grinding away till it does." },
|
||||
[11] = { str = "10) As soon as i hit 30, I hearth to Orgrimmar to get new spells/abilities." },
|
||||
[12] = { str = "11) Then go back to Hillsbrad." },
|
||||
[13] = { str = "12) Turn #TURNIN\"Helcular's Revenge\"# in, accept the next part to it." },
|
||||
[14] = { str = "13) go back to the Yeti cave..." },
|
||||
[15] = { str = "14) charge The Flame of Azel and the Flame of Veraz, for the quest #DOQUEST\"Helcular's Revenge\"# " },
|
||||
[16] = { str = "15) I keep grinding away at Yetis until my pet levels up." },
|
||||
[17] = { str = "16) go up into Alterac Mountains..." },
|
||||
--[18] = { str = "." },
|
||||
--[19] = { str = "." },
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,434 @@
|
||||
--[[--------------------------------------------------
|
||||
003_Horde_30to40.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 003 From Lvl 30 to Lvl 40
|
||||
1.04.1
|
||||
-- First Release
|
||||
Horde's Guide
|
||||
from level 30 to lever 40
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_003_Horde_30to40 = {
|
||||
-----------30-30 Alterac Mountains
|
||||
--[301] = {
|
||||
[3029] = {
|
||||
title = "30-30 Alterac Mountains",
|
||||
--n = "30-30 Alterac Mountains",
|
||||
--pID = 210, nID = 302,
|
||||
--itemCount = 12,
|
||||
items = {
|
||||
[1] = { str = "30-30 Alterac Mountains" },
|
||||
[2] = { str = "01) Do the following:" },
|
||||
[3] = { str = "02) #DOQUEST\"Elixir of Pain\"# (killing the level 32-34 mountain lions, on the plateaus there)" },
|
||||
[4] = { str = "03) Charge the third flame (Flame of Uzel), for the quest #DOQUEST\"Helcular's Revenge\"# " },
|
||||
[5] = { str = "04) Kill \"#NPCFrostmaw#\" Yes I know your gonna be killing Frostmaw (level 37 mob) at level 30, it's a tough battle so prepare yourself! " },
|
||||
[6] = { str = "05) Run down to Southshore, to drive the rod into Helcular's grave. (hint: i use my pet to distract the guards, by having my pet run all over the place). This is for the quest #DOQUEST\"Helcular's Revenge\"# " },
|
||||
[7] = { str = "06) Run back to Tarren Mill" },
|
||||
[8] = { str = "07) Turn in #TURNIN\"Elixir of Pain\"# " },
|
||||
[9] = { str = "08) Accept #ACCEPT\"The Hammer May Fall\"# " },
|
||||
[10] = { str = "09) run into Arathi Highlands..." },
|
||||
--[11] = { str = "." },
|
||||
--[12] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------30-30 Arathi Highlands
|
||||
--[302] = {
|
||||
[3030] = {
|
||||
title = "30-30 Arathi Highlands",
|
||||
--n = "30-30 Arathi Highlands",
|
||||
--pID = 301, nID = 303,
|
||||
--itemCount = 20,
|
||||
items = {
|
||||
[1] = { str = "30-30 Arathi Highlands" },
|
||||
[2] = { str = "01) go do this quest:" },
|
||||
[3] = { str = "02) #DOQUEST\"The Hammer May Fall\"# (at 34.45)", x = 34, y = 45, zone = "Arathi Highlands" },
|
||||
[4] = { str = "03) Then run to Hammerfall (at 73.36)", x = 73, y = 36, zone = "Arathi Highlands" },
|
||||
[5] = { str = "04) Accept #ACCEPT\"Hammerfall\"# " },
|
||||
[6] = { str = "05) Turn in #TURNIN\"Hammerfall\"# ... accept #ACCEPT\"Raising Spirits\"# " },
|
||||
[7] = { str = "06) Turn in #TURNIN\"The Hammer May Fall\"# " },
|
||||
[8] = { str = "07) Get FP there." },
|
||||
[9] = { str = "08) Then do #DOQUEST\"Raising Spirits\"# (just to the left of Hammerfall all around 64.37). Then turn it in ... accept #ACCEPT\"Raising Spirits\"# part2", x = 64, y = 37, zone = "Arathi Highlands" },
|
||||
[10] = { str = "09) Turn in #TURNIN\"Raising Spirits\"# part2 ... accept #ACCEPT\"Raising Spirits\"# part3" },
|
||||
[11] = { str = "10) Turn in #TURNIN\"Raising Spirits\"# part3 ... skip \"#NPCGuile of the Raptor\"# for now" },
|
||||
[12] = { str = "11) Hearth to Orgrimmar." },
|
||||
[13] = { str = "12) Fly to XRs." },
|
||||
[14] = { str = "13) run west in the XRs ... accept #ACCEPT\"The Swarm Grows\"# " },
|
||||
[15] = { str = "14) then run west from the XRs to the guy in the hut ... accept #ACCEPT\"The Kolkar of Desolace\"# " },
|
||||
[16] = { str = "15) run back to XRs, make XRs your home." },
|
||||
[17] = { str = "16) fly to Ratchet" },
|
||||
[18] = { str = "17) get on the boat at Ratchet to go to BB..." },
|
||||
--[19] = { str = "." },
|
||||
--[20] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------30-31 Stranglethorn Vale
|
||||
--[303] = {
|
||||
[3031] = {
|
||||
title = "30-31 Stranglethorn Vale",
|
||||
--n = "30-31 Stranglethorn Vale",
|
||||
--pID = 302, nID = 304,
|
||||
--itemCount = 18,
|
||||
items = {
|
||||
[1] = { str = "30-31 Stranglethorn Vale" },
|
||||
[2] = { str = "01) Get the FP at BB and run up to Grom'Gol (get the FP there too)." },
|
||||
[3] = { str = "02) Go up north (35.10) and start doing the STV hunt quests:", x = 35, y = 10, zone = "Stranglethorn Vale" },
|
||||
[4] = { str = "03) #DOQUEST\"Welcome to the Jungle\"# (just accept this and turn in in right there)" },
|
||||
[5] = { str = "04) #DOQUEST\"Tiger Mastery\"# (#NPCYoung Stranglethorn Tigers#) (33.10)", x = 33, y = 10, zone = "Stranglethorn Vale" },
|
||||
[6] = { str = "05) #DOQUEST\"Panther Mastery\"# (#NPCYoung Panthers#) (41.9)", x = 41, y = 9, zone = "Stranglethorn Vale" },
|
||||
[7] = { str = "06) #DOQUEST\"Panther Mastery\"# (#NPCPanthers#) (30.11)", x = 30, y = 11, zone = "Stranglethorn Vale" },
|
||||
[8] = { str = "07) #DOQUEST\"Tiger Mastery\"# (#NPCStranglethorn Tigers#) (30.10)", x = 30, y = 11, zone = "Stranglethorn Vale" },
|
||||
[9] = { str = "08) #DOQUEST\"Raptor Mastery\"# (#NPCStranglethorn Raptors#) (25.15)", x = 25, y = 15, zone = "Stranglethorn Vale" },
|
||||
[10] = { str = "09) Accept #ACCEPT\"Tiger Mastery\"# (#NPCElder Stranglethorn Tigers#) .. but don't do it now." },
|
||||
[11] = { str = "10) Accept #ACCEPT\"Raptor Mastery\"# (#NPCLashtail Raptors#) .. but don't do it now." },
|
||||
[12] = { str = "11) Skip the rest for now." },
|
||||
[13] = { str = "12) You should belvl 31 for sure, if not grind to it" },
|
||||
[14] = { str = "13) Hearth to XRs." },
|
||||
[15] = { str = "14) Fly to 1K needles." },
|
||||
[16] = { str = "15) Go east into Shimmering Flats (at 77.77)...", x = 77, y = 77, zone = "Thousand Needles" },
|
||||
--[17] = { str = "." },
|
||||
--[18] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------31-32 Thousand needles (Shimmering Flats)
|
||||
--[304] = {
|
||||
[3132] = {
|
||||
title = "31-32 TN (Shimmering Flats)",
|
||||
--n = "31-32 TN (Shimmering Flats)",
|
||||
--pID = 303, nID = 305,
|
||||
--itemCount = 27,
|
||||
items = {
|
||||
[1] = { str = "31-32 Thousand needles (Shimmering Flats)" },
|
||||
[2] = { str = "01) Accept: " },
|
||||
[3] = { str = "02) #ACCEPT\"Hemet Nesingwary\"# " },
|
||||
[4] = { str = "03) #ACCEPT\"Wharfmaster Dizzywig\"# " },
|
||||
[5] = { str = "04) Accept and do the following 5 quests together:" },
|
||||
[6] = { str = "05) #DOQUEST\"A Bump in the Road\"# " },
|
||||
[7] = { str = "06) #DOQUEST\"Hardened Shells\"# " },
|
||||
[8] = { str = "07) #DOQUEST\"Load Lightening\"# " },
|
||||
[9] = { str = "08) #DOQUEST\"Rocket Car Parts\"# " },
|
||||
[10] = { str = "09) #DOQUEST\"Salt Flat Venom\"# " },
|
||||
[11] = { str = "10) Turn them all in." },
|
||||
[12] = { str = "11) Accept:" },
|
||||
[13] = { str = "12) #ACCEPT\"Goblin Sponsorship\"# " },
|
||||
[14] = { str = "13) #ACCEPT\"Martek the Exiled\"# " },
|
||||
[15] = { str = "14) SKIP #ACCEPT\"Encrusted Tail Fins\"# (Elite) " },
|
||||
[16] = { str = "15) You may or may not be level 32 right now, if not that's okay." },
|
||||
[17] = { str = "16) Go south into Tanaris to get FP in Gadgetzan at 51.25", x = 51, y = 25, zone = "Tanaris" },
|
||||
[18] = { str = "17) Hearth to XRs." },
|
||||
[19] = { str = "18) Fly to Orgrimmar" },
|
||||
[20] = { str = "19) Turn in #TURNIN\"The Swarm Grows\"# (at 75.34) ... accept #ACCEPT\"The Swarm Grows\"# part2", x = 75, y = 34, zone = "Orgrimmar" },
|
||||
[21] = { str = "20) Accept #ACCEPT\"Alliance Relations\"# (get it from Craven Drok in the Cleft of Shadow, 47.50)", x = 47, y = 50, zone = "Orgrimmar" },
|
||||
[22] = { str = "21) Then go to #NPCKeldran# in Orgrimmar (23.53) to accept #ACCEPT\"Alliance Relations\"# part2.", x = 23, y = 53, zone = "Orgrimmar" },
|
||||
[23] = { str = "22) Stop at first aid guy to buy silk bandage training. #VIDEONOTE:# Make sure you save all your extra Cloths in either your bank or mailbox, you will need them later for Cloth Donation quests." },
|
||||
[24] = { str = "23) Then fly to Stonetalon Mountains." },
|
||||
[25] = { str = "24) Run into Desolace..." },
|
||||
--[26] = { str = "." },
|
||||
--[27] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------32-34 Desolace
|
||||
--[305] = {
|
||||
[3234] = {
|
||||
title = "32-34 Desolace",
|
||||
--n = "32-34 Desolace",
|
||||
--pID = 304, nID = 306,
|
||||
--itemCount = 64,
|
||||
items = {
|
||||
[1] = { str = "32-34 Desolace" },
|
||||
[2] = { str = "01) First thing to do here is start killing mobs at the Thunder Axe Fortress (55.24)...", x = 55, y = 24, zone = "Desolace" },
|
||||
[3] = { str = "02) Until this item drops: #NPCFlayed Demon Skin# which starts: #ACCEPT\"The Corrupter\"# " },
|
||||
[4] = { str = "03) Then go down the path and do:" },
|
||||
[5] = { str = "04) #DOQUEST\"Kodo Roundup\"# (starts at 60.61) (don't have to finish all of it now)", x = 60, y = 61, zone = "Desolace" },
|
||||
[6] = { str = "05) Then go to Ghost Walker Post (56.59)", x = 56, y = 59, zone = "Desolace" },
|
||||
[7] = { str = "06) Turn in #TURNIN\"The Kolkar of Desolace\"# ... accept #ACCEPT\"Khan Dez'hepah\"# " },
|
||||
[8] = { str = "07) Accept #ACCEPT\"Gelkis Alliance\"# (this is the one you should choose to do). Skip \"#NPCMagram Alliance\"# " },
|
||||
[9] = { str = "08) Turn in #TURNIN\"Alliance Relations\"# ... accept #ACCEPT\"Alliance Relations\"# part2 ... accept #ACCEPT\"Befouled by Satyr\"# " },
|
||||
[10] = { str = "09) Turn in #TURNIN\"The Corrupter\"# ... accept #ACCEPT\"The Corrupter\"# part2" },
|
||||
[11] = { str = "10) Turn in #TURNIN\"Alliance Relations\"# part2 ... accept #ACCEPT\"The Burning of Spirits\"# " },
|
||||
[12] = { str = "11) Do in the following order:" },
|
||||
[13] = { str = "12) #DOQUEST\"Befouled by Satyr\"# (75.22) (Keep step #13 in mind)", x = 75, y = 22, zone = "Desolace" },
|
||||
[14] = { str = "13) #DOQUEST\"The Corrupter\"# Part2 (collect a Shadowstalker Scalp from a Hatefury shadowstalker)" },
|
||||
[15] = { str = "14) #DOQUEST\"Khan Dez'hepah\"# (73.48)", x = 73, y = 48, zone = "Desolace" },
|
||||
[16] = { str = "15) #DOQUEST\"Gelkis Alliance\"# (68.71)", x = 68, y = 71, zone = "Desolace" },
|
||||
[17] = { str = "16) Go back to Ghost Walker Post (56.59), and turn in #TURNIN\"Khan Dez'hepah\"# .. accept #ACCEPT\"Centaur Bounty\"# . Turn in #TURNIN\"Befouled by Satyr\"# . Turn in #TURNIN\"The Corrupter\"# Part2 .. accept #ACCEPT\"The Corrupter\"# Part3.", x = 56, y = 59, zone = "Desolace" },
|
||||
[18] = { str = "17) Then run to Shadowprey Village (stopping along the way to turn this in: #TURNIN\"Gelkis Alliance\"# at 36.79) ... accept #ACCEPT\"Stealing Supplies\"# ", x = 36, y = 79, zone = "Desolace" },
|
||||
[19] = { str = "18) Accept all quests at Shadowprey Village (at 24.71), which include: #ACCEPT\"Hunting in Stranglethorn\"# #ACCEPT\"Hand of Iruxos\"# #ACCEPT\"Clam Bait\"# and #ACCEPT\"Other Fish to Fry\"# ", x = 24, y = 71, zone = "Desolace" },
|
||||
[20] = { str = "19) Make Shadowprey Village your home." },
|
||||
[21] = { str = "20) Then do:" },
|
||||
[22] = { str = "21) go in the water and collect 10 \"#NPCShellfish#\" (from the Shellfish traps)" },
|
||||
[23] = { str = "22) turn those in for 2 \"#NPCBloodbelly Fish#\" " },
|
||||
[24] = { str = "23) Travel up the water (collecting #NPCSoft-shelled Clam Meat# for the quest #DOQUEST\"Clam Bait\"# along the way)" },
|
||||
[25] = { str = "24) Then accept #ACCEPT\"Claim Rackmore's Treasure!\"# (the chest/wrecked boat along the shore, 36.30) (the silver key is dropped by a drysnap, and the golden key is dropped by a Slitherblade)", x = 36, y = 30, zone = "Desolace" },
|
||||
[26] = { str = "25) Go accept #ACCEPT\"Sceptre of Light\"# (the argent dawn dude, at 38.27)", x = 38, y = 27, zone = "Desolace" },
|
||||
[27] = { str = "26) Then go do following at Thunder Axe Fortress (54.29):", x = 54, y = 29, zone = "Desolace" },
|
||||
[28] = { str = "27) #DOQUEST\"The Burning of Spirits\"# " },
|
||||
[29] = { str = "28) #DOQUEST\"Sceptre of Light\"# " },
|
||||
[30] = { str = "29) #DOQUEST\"Hand of Iruxos\"# " },
|
||||
[31] = { str = "30) Then grind your way back to the argent dawn dude (38.27)...", x = 38, y = 27, zone = "Desolace" },
|
||||
[32] = { str = "31) Then turn #TURNIN\"Sceptre of Light\"# in and get #ACCEPT\"Book of the Ancients\"# quest." },
|
||||
[33] = { str = "32) Then go do all this stuff in the water to the west:" },
|
||||
[34] = { str = "33) #DOQUEST\"Other Fish to Fry\"# " },
|
||||
[35] = { str = "34) #DOQUEST\"Clam Bait\"# " },
|
||||
[36] = { str = "35) #DOQUEST\"Book of the Ancients\"# (27.6) ", x = 27, y = 6, zone = "Desolace" },
|
||||
[37] = { str = "36) #DOQUEST\"The Corrupter\"# Part3 (collect a Oracle Crystal from a Slitherblade Oracle)" },
|
||||
[38] = { str = "37) #DOQUEST\"Claim Rackmore's Treasure!\"# " },
|
||||
[39] = { str = "38) Then turn in #TURNIN\"Claim Rackmore's Treasure!\"# at the little chest (29.8)", x = 29, y = 8, zone = "Desolace" },
|
||||
[40] = { str = "39) Turn in #TURNIN\"Book of the Ancients\"# (38.27)", x = 38, y = 27, zone = "Desolace" },
|
||||
[41] = { str = "40) Then go accept #ACCEPT\"Bone Collector\"# (62.38) (grinding mobs along the way)", x = 62, y = 38, zone = "Desolace" },
|
||||
[42] = { str = "41) Go to Ghost Walker Post (56.59), turn in #TURNIN\"Catch of the Day\"# accept and turn in #TURNIN\"The Burning of Spirits\"# #TURNIN\"The Corrupter\"# Part3 .. accept and then turn in #TURNIN\"The Corrupter\"# Part4. Accept #ACCEPT\"Alliance Relations\"# Skip \"#NPCThe Corrupter\"# Part5.", x = 56, y = 59, zone = "Desolace" },
|
||||
[43] = { str = "43) Then go do:" },
|
||||
[44] = { str = "44) #DOQUEST\"Bone Collector\"# (done at the kodo graveyard, 51.58)", x = 51, y = 58, zone = "Desolace" },
|
||||
[45] = { str = "45) Then #DOQUEST\"Centaur Bounty\"# and #DOQUEST\"Stealing Supplies\"# (70.74)", x = 70, y = 74, zone = "Desolace" },
|
||||
[46] = { str = "46) Then go turn in #TURNIN\"Centaur Bounty\"# (56.59)", x = 56, y = 59, zone = "Desolace" },
|
||||
[47] = { str = "47) Then turn in #TURNIN\"Bone Collector\"# (62.38)", x = 62, y = 38, zone = "Desolace" },
|
||||
[48] = { str = "48) Hearth to Shadowprey Village." },
|
||||
[49] = { str = "49) Turn in all quests there, which are: #TURNIN\"Hand of Iruxos\"# #TURNIN\"Other Fish to Fry\"# and #TURNIN\"Clam Bait\"# " },
|
||||
[50] = { str = "50) You should be level 34 now for sure." },
|
||||
[51] = { str = "51) Turn in #TURNIN\"Stealing Supplies\"# (36.79) and accept #ACCEPT\"Ongeku\"# ", x = 36, y = 79, zone = "Desolace" },
|
||||
[52] = { str = "52) Fly to CT (In the Barrens). (the flight master is on the docks in Shadowprey Village)" },
|
||||
[53] = { str = "53) Once at CT, run south-east into Dustwallow Marsh (51.79 in the Barrens).", x = 51, y = 79, zone = "The Barrens" },
|
||||
[54] = { str = "54) Collect the 3 quest-objects at the Shady Rest Inn: " },
|
||||
[55] = { str = "55) #ACCEPT\"Suspicious Hoofprints\"# (just right outside in front of the inn)" },
|
||||
[56] = { str = "56) #ACCEPT\"Lieutenant Paval Reethe\"# (laying on one of the planks on the ground)" },
|
||||
[57] = { str = "57) #ACCEPT\"The Black Shield\"# (on top of the fireplace)" },
|
||||
[58] = { str = "58) Now run to Brackenwall Village (35.29)", x = 35, y = 29, zone = "Dustwallow Marsh" },
|
||||
[59] = { str = "59) Turn those 3 quests in (#TURNIN\"Suspicious Hoofprints\"# #TURNIN\"Lieutenant Paval Reethe\"# and #TURNIN\"The Black Shield\"# ) ... accept and then turn in #TURNIN\"The Black Shield\"# Part2. Skip \"#NPCThe Black Shield\"# Part3 for now." },
|
||||
[60] = { str = "60) Stop at the troll vendor, buy the 3 first aid books." },
|
||||
[61] = { str = "61) Fly to Ratchet to turn in #TURNIN\"Goblin Sponsorship\"# & #TURNIN\"Wharfmaster Dizzywig\"# ... accept #ACCEPT\"Goblin Sponsorship\"# Part2 and #ACCEPT\"Parts for Kravel\"# " },
|
||||
[62] = { str = "62) Get on the boat to go to BB (Booty Bay) ... (while waiting for the boat, build up first aid)" },
|
||||
--[63] = { str = "." },
|
||||
--[64] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------34-35 Stranglethorn Vale
|
||||
--[306] = {
|
||||
[3435] = {
|
||||
title = "34-35 Stranglethorn Vale",
|
||||
--n = "34-35 Stranglethorn Vale",
|
||||
--pID = 305, nID = 307,
|
||||
--itemCount = 37,
|
||||
items = {
|
||||
[1] = { str = "34-35 Stranglethorn Vale" },
|
||||
[2] = { str = "01) Turn in #TURNIN\"Goblin Sponsorship\"# Part2 .. accept #ACCEPT\"Goblin Sponsorship\"# Part3. Make BB your home! Accept #ACCEPT\"Singing Blue Shards\"# #ACCEPT\"Bloodscalp Ears\"# #ACCEPT\"Hostile Takeover\"# and #ACCEPT\"Investigate the Camp\"# . Turn in #TURNIN\"Goblin Sponsorship\"# Part3 at Baron Revilgaz ... accept #ACCEPT\"Goblin Sponsorship\"# Part4." },
|
||||
[3] = { str = "02) Then do the following:" },
|
||||
[4] = { str = "03) Fly to Grom'gol..." },
|
||||
[5] = { str = "04) Grab ALL quests in grom'gol: #ACCEPT\"The Defense of Grom'gol\"# #ACCEPT\"Mok'thardin's Enchantment\"# #ACCEPT\"Bloodscalp Insight\"# #ACCEPT\"Hunt for Yenniku\"# #ACCEPT\"Trollbane\"# #ACCEPT\"Bloody Bone Necklaces\"# #ACCEPT\"The Vile Reef\"# " },
|
||||
[6] = { str = "#HUNTER05) Get new hunter spells/abilities.#" },
|
||||
[7] = { str = "06) #VIDEOIMPORTANT:# Make sure you save any Green Hills of Stranglethorn pages you find and mail them to your alt for storage, you will need them for a later #DOQUESTquest#. You will need one of each of the following pages: 1, 4, 6, 8, 10, 11, 14, 16, 18, 20, 21, 24, 25, 26, and 27. Once your alt collects all the pages, mail them back to your main. Now go complete these quests:" },
|
||||
[8] = { str = "07) #DOQUEST\"Singing Blue Shards\"# (25.19)", x = 25, y = 19, zone = "Stranglethorn Vale" },
|
||||
[9] = { str = "08) #DOQUEST\"Tiger Mastery\"# (#NPCElder Stranglethorn Tigers#) (31.19)", x = 31, y = 19, zone = "Stranglethorn Vale" },
|
||||
[10] = { str = "09) #DOQUEST\"Bloodscalp Ears\"# and..." },
|
||||
[11] = { str = "10) #DOQUEST\"Hunt for Yenniku\"# " },
|
||||
[12] = { str = "11) #DOQUEST\"Bloody Bone Necklaces\"# (you don't have to finish all of this now)" },
|
||||
[13] = { str = "12) #DOQUEST\"Raptor Mastery\"# (#NPCLashtail Raptors#)" },
|
||||
[14] = { str = "13) #DOQUEST\"The Defense of Grom'gol\"# " },
|
||||
[15] = { str = "14) Once all those are done (besides #DOQUEST\"Bloody Bone Necklaces\"# ), go to Grom'gol.." },
|
||||
[16] = { str = "15) Turn in #TURNIN\"Hunt for Yenniku\"# ... accept #ACCEPT\"Headhunting\"# " },
|
||||
[17] = { str = "16) Turn in #TURNIN\"The Defense of Grom'gol\"# ... accept #ACCEPT\"The Defense of Grom'gol\"# part2." },
|
||||
[18] = { str = "17) Should be lvl 35 now, either way buy lvl 35 food/water/repair (so that you are prepared for when you do turn level 35), then go do in the following order:" },
|
||||
[19] = { str = "18) #DOQUEST\"Headhunting\"# along with finishing up #DOQUEST\"Bloody Bone Necklaces\"# (21.14)", x = 21, y = 14, zone = "Stranglethorn Vale" },
|
||||
[20] = { str = "19) #DOQUEST\"The Vile Reef\"# along with #DOQUEST\"Encrusted Tail Fins\"# (24.24) Use a breath potion if you can.", x = 24, y = 24, zone = "Stranglethorn Vale" },
|
||||
[21] = { str = "20) Then go to Nesingwary's Expedition (35.10)... turn in ALL quests, accept all new ones (except \"#NPCThe Green Hills of Stranglethorn\"# ). Then go do:", x = 35, y = 10, zone = "Stranglethorn Vale" },
|
||||
[22] = { str = "21) #DOQUEST\"Tiger Mastery\"# (#NPCSin'Dall#) (he is usually on top of the hill at 31.17). Once that is done, go turn it in, then go do:", x = 31, y = 17, zone = "Stranglethorn Vale" },
|
||||
[23] = { str = "22) #DOQUEST\"Hostile Takeover\"# along with #DOQUEST\"Goblin Sponsorship\"# (44.19)", x = 44, y = 19, zone = "Stranglethorn Vale" },
|
||||
[24] = { str = "23) #DOQUEST\"Panther Mastery\"# along with #DOQUEST\"Mok'thardin's Enchantment\"# (kill #NPCshadowmaw panthers#) (48.21)", x = 48, y = 21, zone = "Stranglethorn Vale" },
|
||||
[25] = { str = "24) #DOQUEST\"The Defense of Grom'gol\"# part2 (36.30), once that's done...", x = 36, y = 30, zone = "Stranglethorn Vale" },
|
||||
[26] = { str = "25) Head up north and turn in #TURNIN\"Panther Mastery\"# ...accept #ACCEPT\"Panther Mastery\"# (#NPCBhag'thera#) but don't do it now." },
|
||||
[27] = { str = "26) Hearth to BB, turn in #TURNIN\"Singing Blue Shards\"# #TURNIN\"Hostile Takeover\"# #TURNIN\"Bloodscalp Ears\"# #TURNIN\"Investigate the Camp\"# " },
|
||||
[28] = { str = "27) Turn in #TURNIN\"Goblin Sponsorship\"# part4 ... accept #ACCEPT\"Goblin Sponsorship\"# part5." },
|
||||
[29] = { str = "28) Fly to Grom'gol, turn in all quests: #TURNIN\"The Defense of Grom'gol\"# #TURNIN\"Mok'thardin's Enchantment\"# #TURNIN\"Headhunting\"# #TURNIN\"Bloody Bone Necklaces\"# and #TURNIN\"The Vile Reef\"# " },
|
||||
[30] = { str = "29) Should be level 36 now, if not, grind to it. Accept #Accept\"Trollbane\"#. #HUNTERThen get new hunter spells/abilities.#" },
|
||||
[31] = { str = "30) Get on the zeppelin to go to the Undercity." },
|
||||
[32] = { str = "31) Once in the UC, turn in 60 Silk Cloth for #TURNIN\"A Donation of Silk\"# quest (at 71.28).", x = 71, y = 28, zone = "Undercity" },
|
||||
[33] = { str = "32) Accept #ACCEPT\"To Steal From Thieves\"# (63.49)", x = 63, y = 49, zone = "Undercity" },
|
||||
[34] = { str = "33) Then fly to Hammerfall..." },
|
||||
--[35] = { str = "." },
|
||||
--[36] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------35-37 Arathi Highlands
|
||||
--[307] = {
|
||||
[3537] = {
|
||||
title = "35-37 Arathi Highlands",
|
||||
--n = "35-37 Arathi Highlands",
|
||||
--pID = 306, nID = 308,
|
||||
--itemCount = 28,
|
||||
items = {
|
||||
[1] = { str = "35-37 Arathi Highlands" },
|
||||
[2] = { str = "01) Make Hammerfall your home." },
|
||||
[3] = { str = "02) Turn in #TURNIN\"Trollbane\"# ... I SKIP \"#NPCSigil of Strom\"# " },
|
||||
[4] = { str = "03) Accept #ACCEPT\"Call to Arms\"#, #ACCEPT\"Foul Magics\"# and #ACCEPT\"Guile of the Raptor\"# " },
|
||||
[5] = { str = "04) grind your way down south and do: #DOQUEST\"Call to Arms\"# " },
|
||||
[6] = { str = "05) Then go west of hammerfall and accept #ACCEPT\"The Princess Trapped\"# (62.33)", x = 62, y = 33, zone = "Arathi Highlands" },
|
||||
[7] = { str = "06) Then go do #DOQUEST\"The Princess Trapped\"# (mobs are east of hammerfall)" },
|
||||
[8] = { str = "07) Go in the cave (look for the tree, shows you where the hidden path is)..." },
|
||||
[9] = { str = "08) Then turn in #TURNIN\"The Princess Trapped\"# (in the cave)... accept #ACCEPT\"Stones of Binding\"# " },
|
||||
[10] = { str = "09) Then turn in #TURNIN\"Call to Arms\"# ... accept #ACCEPT\"Call to Arms\"# " },
|
||||
[11] = { str = "10) Build up first aid, go do #DOQUEST\"Triage\"# (Doctor Gregory Victor, first aid training in Hammerfall)" },
|
||||
[12] = { str = "11) Then do:" },
|
||||
[13] = { str = "12) #DOQUEST\"Stones of Binding\"# (first key, just west of hammerfall 66.29)", x = 66, y = 29, zone = "Arathi Highlands" },
|
||||
[14] = { str = "13) Then do: #DOQUEST\"To Steal From Thieves\"# (at 54.40)", x = 54, y = 40, zone = "Arathi Highlands" },
|
||||
[15] = { str = "14) Go down south a little and get the next key for #DOQUEST\"Stones of Binding\"# (52.50)", x = 52, y = 50, zone = "Arathi Highlands" },
|
||||
[16] = { str = "15) Then go down and do:" },
|
||||
[17] = { str = "16) #DOQUEST\"Call to Arms\"# (killing ogres) and #DOQUEST\"Guile of the Raptor\"# (killing Highland Fleshstalkers, around 50.75)", x = 50, y = 75, zone = "Arathi Highlands" },
|
||||
[18] = { str = "17) Then go up and do #DOQUEST\"Foul Magics\"# (at 31.28)", x = 31, y = 28, zone = "Arathi Highlands" },
|
||||
[19] = { str = "18) Then go west and get the last key for #DOQUEST\"Stones of Binding\"# (25.31)", x = 25, y = 31, zone = "Arathi Highlands" },
|
||||
[20] = { str = "19) Go discover Stromguard, and turn in #TURNIN\"Stones of Binding\"# (at the Circle of Inner Binding) (36.57)", x = 36, y = 57, zone = "Arathi Highlands" },
|
||||
[21] = { str = "20) Note: i SKIP \"#NPCBreaking the Keystone\"# (Elite)" },
|
||||
[22] = { str = "21) Hearth to Hammerfall." },
|
||||
[23] = { str = "22) Turn in #TURNIN\"Foul Magics\"# #TURNIN\"Guile of the Raptor\"# and #TURNIN\"Call to Arms\"# " },
|
||||
[24] = { str = "23) Complete the #DOQUEST\"Guile of the Raptor\"# quest chain by running back and forth..." },
|
||||
[25] = { str = "24) NOTE: i SKIP all stromguard quests (but I still recommend doing them if you can find groups)" },
|
||||
[26] = { str = "25) Fly to Tarren Mill..." },
|
||||
--[27] = { str = "." },
|
||||
--[28] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------37-37 Alterac Mountains
|
||||
--[308] = {
|
||||
[3736] = {
|
||||
title = "37-37 Alterac Mountains",
|
||||
--n = "37-37 Alterac Mountains",
|
||||
--pID = 307, nID = 309,
|
||||
--itemCount = 16,
|
||||
items = {
|
||||
[1] = { str = "37-37 Alterac Mountains" },
|
||||
[2] = { str = "01) Once at TM, accept #ACCEPT\"Stone Tokens\"# and #ACCEPT\"Prison Break In\"# " },
|
||||
[3] = { str = "02) then go do them in Alterac Mountains (at Dalaran)" },
|
||||
[4] = { str = "03) then turn them in and accept #ACCEPT\"Dalaran Patrols\"# and #ACCEPT\"Bracers of Binding\"# " },
|
||||
[5] = { str = "04) then go do them in Alterac Mountains (at Dalaran)" },
|
||||
[6] = { str = "05) once they are both completed, die on purpose, so u end up at TM" },
|
||||
[7] = { str = "06) Turn them in" },
|
||||
[8] = { str = "07) Then fly to the UC." },
|
||||
[9] = { str = "08) Once at UC, turn in #TURNIN\"To Steal From Thieves\"# and buy 3x\"#NPCSoothing Spices\"" },
|
||||
[10] = { str = "09) Get on zeppelin to go to orgrimmar." },
|
||||
[11] = { str = "10) Once in Orgrimmar, turn in #TURNIN\"Alliance Relations\"# at #NPCKeldran#. (at 21.53)", x = 21, y = 53, zone = "Orgrimmar" },
|
||||
[12] = { str = "11) Then fly to XRs." },
|
||||
[13] = { str = "12) Make XRs your home." },
|
||||
[14] = { str = "13) Fly to Freewind Post (1k needles)..." },
|
||||
--[15] = { str = "." },
|
||||
--[16] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------37-37 Thousand Needles
|
||||
--[309] = {
|
||||
[3737] = {
|
||||
title = "37-37 Thousand Needles",
|
||||
--n = "37-37 Thousand Needles",
|
||||
--pID = 308, nID = 310,
|
||||
--itemCount = 14,
|
||||
items = {
|
||||
[1] = { str = "37-37 Thousand Needles" },
|
||||
[2] = { str = "01) Run towards the Shimmering Flats.." },
|
||||
[3] = { str = "02) Turn in #TURNIN\"The Swarm Grows\"# ... accept #ACCEPT\"The Swarm Grows\"# part2 (67.63)", x = 67, y = 63, zone = "Thousand Needles" },
|
||||
[4] = { str = "03) Stop at the goblins and turn in #TURNIN\"Parts for Kravel\"# ... accept #ACCEPT\"Delivery to the Gnomes\"# ... turn in #TURNIN\"Delivery to the Gnomes\"# . Turn in #TURNIN\"Goblin Sponsorship\"# part3 ... accept #ACCEPT\"The Eighteenth Pilot\"# . Turn in #TURNIN\"The Eighteenth Pilot\"# ... accept #ACCEPT\"Razzeric's Tweaking\"# . Turn in #TURNIN\"Encrusted Tail Fins\"# " },
|
||||
[5] = { str = "04) Accept #ACCEPT\"The Rumormonger\"# " },
|
||||
[6] = { str = "05) Do the following quests:" },
|
||||
[7] = { str = "06) #DOQUEST\"The Swarm Grows\"# and #DOQUEST\"Parts of the Swarm\"# (quest starts from an item drop) (71.85)", x = 71, y = 85, zone = "Thousand Needles" },
|
||||
[8] = { str = "07) Then go turn in #TURNIN\"The Swarm Grows\"# (67.63)", x = 67, y = 63, zone = "Thousand Needles" },
|
||||
[9] = { str = "08) Hearth to XRs" },
|
||||
[10] = { str = "09) Turn in #TURNIN\"Parts of the Swarm\"# ... accept #ACCEPT\"Parts of the Swarm\"# part2" },
|
||||
[11] = { str = "10) Get new spells/abilities." },
|
||||
[12] = { str = "11) Fly to Dustwallow Marsh..." },
|
||||
--[13] = { str = "." },
|
||||
--[14] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------37-38 Dustwallow Marsh
|
||||
--[310] = {
|
||||
[3738] = {
|
||||
title = "37-38 Dustwallow Marsh",
|
||||
--n = "37-38 Dustwallow Marsh",
|
||||
--pID = 309, nID = 311,
|
||||
--itemCount = 25,
|
||||
items = {
|
||||
[1] = { str = "37-38 Dustwallow Marsh" },
|
||||
[2] = { str = "01) accept #ACCEPT\"Theramore Spies\"# and #ACCEPT\"The Black Shield\"# " },
|
||||
[3] = { str = "02) go slightly south of Brackenwall Village and accept #ACCEPT\"Hungry!\"# (the ogre at 35.37)", x = 35, y = 37, zone = "Dustwallow Marsh" },
|
||||
[4] = { str = "03) I turn this zone into a quest-grind area, ill move around killing anything in my path while focusing on these quests:" },
|
||||
[5] = { str = "04) #DOQUEST\"Theramore Spies\"#, #DOQUEST\"The Black Shield\"# #DOQUEST\"Hungry!\"# (I do #DOQUEST\"Hungry!\"# at 58.23)", x = 58, y = 23, zone = "Dustwallow Marsh" },
|
||||
[6] = { str = "05) I stop at Jarl's cabin (55.25) and get #ACCEPT\"The Lost Report\"# quest (the dirt mound next to his cabin)", x = 55, y = 25, zone = "Dustwallow Marsh" },
|
||||
[7] = { str = "06) and turn in #TURNIN\"Soothing Spices\"# ... accept #ACCEPT\"Jarl Needs Eyes\"#" },
|
||||
[8] = { str = "07) Go south at 54.56 to retrive the Seaforium Booster for Razzeric", x = 54, y = 56, zone = "Dustwallow Marsh" },
|
||||
[9] = { str = "08) go do #DOQUEST\"Jarl Needs Eyes\"# (while focusing on the others too)" },
|
||||
[10] = { str = "09) I do the escort quest: #DOQUEST\"Stinky's Escape\"# (starts at 47.18) (grind mobs during this quest)", x = 47, y = 18, zone = "Dustwallow Marsh" },
|
||||
[11] = { str = "10) I'll stop at the big raptor spot at 47.17, and grind it clear several times." , x = 47, y = 17, zone = "Dustwallow Marsh" },
|
||||
[12] = { str = "11) stop at Brackenwall Village and turn in all quests, accept new ones." },
|
||||
[13] = { str = "12) turn in #TURNIN\"Hungry!\"#" },
|
||||
[14] = { str = "13) stop back at Jarl's cabin at 55.25, go to the dirt mound once again to get \"#NPCThe Severed Head#\"", x = 55, y = 25, zone = "Dustwallow Marsh" },
|
||||
[15] = { str = "14) turn in #TURNIN\"Jarl Needs Eyes\"# ... i SKIP #TURNIN\"Jarl Needs a Blade\"#" },
|
||||
[16] = { str = "15) I grind some more at the raptors and such, at this point i should be a little over half way to 39." },
|
||||
[17] = { str = "16) I then go do this quest:" },
|
||||
[18] = { str = "17) #DOQUEST\"The Theramore Docks\"# the Captain's Documents are under the water at 71.51" , x = 71, y = 51, zone = "Dustwallow Marsh" },
|
||||
[19] = { str = "18) I then die on purpose, so i end up right at Brackenwall Village." },
|
||||
[20] = { str = "19) turn in #TURNIN\"The Theramore Docks\"#" },
|
||||
[21] = { str = "20) turn in #TURNIN\"The Severed Head\"# ... accept #ACCEPT\"The Troll Witchdoctor\"#" },
|
||||
--[BB] = { str = "CC) Kill Deadmire at XX.YY" , x = XX, y = YY, zone = "Dustwallow Marsh" },
|
||||
[22] = { str = "21) Hearth to XRs" },
|
||||
[23] = { str = "22) fly to Ratchet, turn in #TURNIN\"Stinky's Escape\"# while your there." },
|
||||
[24] = { str = "23) get on the boat to go to BB..." },
|
||||
--[25] = { str = "." },
|
||||
--[26] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------38-40 Stranglethorn Vale
|
||||
--[311] = {
|
||||
[3840] = {
|
||||
title = "38-40 Stranglethorn Vale",
|
||||
--n = "38-40 Stranglethorn Vale",
|
||||
--pID = 310, nID = 401,
|
||||
--itemCount = 34,
|
||||
items = {
|
||||
[1] = { str = "38-40 Stranglethorn Vale" },
|
||||
[2] = { str = "01) Accept #ACCEPT\"The Bloodsail Buccaneers\"#, #ACCEPT\"Venture Company Mining\"# and #ACCEPT\"Scaring Shaky\"# " },
|
||||
[3] = { str = "02) Make BB your home, then go up the steps and turn in #TURNIN\"The Rumormonger\"# " },
|
||||
[4] = { str = "03) Fly to Grom'gol." },
|
||||
[5] = { str = "04) Accept #ACCEPT\"Mok'thardin's Enchantment\"# " },
|
||||
[6] = { str = "05) Turn in #TURNIN\"The Troll Witchdoctor\"# ... right click the cauldron ... accept #ACCEPT\"Marg Speaks\"# " },
|
||||
[7] = { str = "06) Go do:" },
|
||||
[8] = { str = "07) #DOQUEST\"Raptor Mastery\"# along with #DOQUEST\"Mok'thardin's Enchantment\"# (31.41) (Kill #NPCJungle Stalkers#)", x = 31, y = 41, zone = "Stranglethorn Vale" },
|
||||
[9] = { str = "08) grind away at raptors/cold eye ballisks till level 39, then do:" },
|
||||
[10] = { str = "09) #DOQUEST\"Venture Company Mining\"# (at 40.42)", x = 40, y = 42, zone = "Stranglethorn Vale" },
|
||||
[11] = { str = "10) Once that is done, go back to Grom'Gol and turn in #TURNIN\"Mok'thardin's Enchantment\"# ... accept #ACCEPT\"Mok'thardin's Enchantment\"# part3." },
|
||||
[12] = { str = "11) Then do #DOQUEST\"Panther Mastery\"# (#NPCBhag'thera#) (he has 3 different spawn points, either at 48.20, 49.23, or 47.26)", x = 48, y = 20, zone = "Stranglethorn Vale" },
|
||||
[13] = { str = "12) Then turn in #TURNIN\"Panther Mastery\"# (#NPCBhag'thera#) and #TURNIN\"Raptor Mastery\"# (#NPCJungle Stalkers#) at Nesingwary's Expedition (35.10)", x = 35, y = 10, zone = "Stranglethorn Vale" },
|
||||
[14] = { str = "13) Accept #ACCEPT\"Raptor Mastery\"# (#NPCTethis#) but don't do it now." },
|
||||
[15] = { str = "14) Hearth to BB." },
|
||||
[16] = { str = "15) turn in #TURNIN\"Venture Company Mining\"# " },
|
||||
[17] = { str = "16) Then go do:" },
|
||||
[18] = { str = "17) #DOQUEST\"The Bloodsail Buccaneers\"# (just slightly north-west of BB at 27.69, there's a little note on a barrel, click on it, accept new quest). ", x = 27, y = 69, zone = "Stranglethorn Vale" },
|
||||
[19] = { str = "18) #DOQUEST\"Scaring Shaky\"# along with #DOQUEST\"Mok'thardin's Enchantment\"# part3 (32.66)", x = 32, y = 66, zone = "Stranglethorn Vale" },
|
||||
[20] = { str = "19) Once that's done run back into BB." },
|
||||
[21] = { str = "20) Turn in #TURNIN\"Scaring Shaky\"# ... accept #ACCEPT\"Return to MacKinley\"# " },
|
||||
[22] = { str = "21) Turn in #TURNIN\"The Bloodsail Buccaneers\"# ... accept #ACCEPT\"The Bloodsail Buccaneers\"# " },
|
||||
[23] = { str = "22) Turn in #TURNIN\"Return to MacKinley\"# " },
|
||||
[24] = { str = "23) Then turn in #TURNIN\"The Bloodsail Buccaneers\"# at Fleet Master Seahorn." },
|
||||
[25] = { str = "24) Fly to Grom'gol." },
|
||||
[26] = { str = "25) Turn in #TURNIN\"Mok'thardin's Enchantment\"# part3 ... accept #ACCEPT\"Mok'thardin's Enchantment\"# part4" },
|
||||
[27] = { str = "26) You should be level 40 for sure now. If not grind the rest of the way to 40 on raptors/cold eye basilisks." },
|
||||
[28] = { str = "27) OPTIONAL: Scarlet Monastery instance instead of the grinding." },
|
||||
[29] = { str = "#HUNTER28) I get new hunter spells/abilities at grom'gol, also make sure you get the lvl 40 arrows/bullets.#" },
|
||||
[30] = { str = "29) Then get on the zeppelin to go to the UC." },
|
||||
[31] = { str = "30) Fly to Hammerfall and stop at the inn to get the #NPCFrost Oil#, the #NPCGyrochronatom#, the #NPCHealing Potion#, the #NPCLesser Invisibility Potion# and the #NPCPatterned Bronze Bracers# items for some free XP in Badlands." },
|
||||
[32] = { str = "31) Run all the way to the Badlands..." },
|
||||
--[33] = { str = "." },
|
||||
--[34] = { str = "." },
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,557 @@
|
||||
--[[--------------------------------------------------
|
||||
003_Horde_40to50.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 003 From Lvl 40 to Lvl 50
|
||||
1.04.1
|
||||
-- First Release
|
||||
Horde's Guide
|
||||
from level 40 to lever 50
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_003_Horde_40to50 = {
|
||||
-----------40-41 Badlands
|
||||
--[401] = {
|
||||
[4041] = {
|
||||
title = "40-41 Badlands",
|
||||
--n = "40-41 Badlands",
|
||||
--pID = 311, nID = 402,
|
||||
--itemCount = 29,
|
||||
items = {
|
||||
[1] = { str = "40-41 Badlands" },
|
||||
[2] = { str = "01) The goal here is not to leave till your level 41, so grind mobs every where you go to...As you enter Badlands, run southwest to (42.52)...", x = 42, y = 52, zone = "Badlands" },
|
||||
[3] = { str = "02) Turn in #TURNIN\"Martek the Exiled\"# (at 42.52) ... accept #ACCEPT\"Indurium\"# and #ACCEPT\"Barbecued Buzzard Wings\"# ", x = 42, y = 52, zone = "Badlands" },
|
||||
[4] = { str = "03) Go down south a little and do #DOQUEST\"Indurium\"# (51.67)", x = 51, y = 67, zone = "Badlands" },
|
||||
[5] = { str = "04) Go back up and turn #TURNIN\"Indurium\"# in ... accept #ACCEPT\"News for Fizzle\"# " },
|
||||
[6] = { str = "05) Then go north-west and accept #ACCEPT\"Study of the Elements: Rock\"# (at 25.44). #VIDEONOTE:# If you have the #NPCFrost Oil#, the #NPCGyrochronatom#, the #NPCHealing Potion#, the #NPCLesser Invisibility Potion# and the #NPCPatterned Bronze Bracers# items, accept and complete all the quests there.", x = 25, y = 44, zone = "Badlands" },
|
||||
[7] = { str = "06) Grind your way west to Kargath (4.46)...", x = 4, y = 46, zone = "Badlands" },
|
||||
[8] = { str = "07) Get FP at Kargath." },
|
||||
[9] = { str = "08) Do NOT make Kargath your home. (it should still be BB)" },
|
||||
[10] = { str = "09) Accept: #ACCEPT\"Coyote Thieves\"# #ACCEPT\"Report to Helgrum\"# #ACCEPT\"Broken Alliances\"# and #ACCEPT\"Badlands Reagent Run\"# " },
|
||||
[11] = { str = "10) Then go do:" },
|
||||
[12] = { str = "11) #DOQUEST\"Barbecued Buzzard Wings\"# " },
|
||||
[13] = { str = "12) #DOQUEST\"Coyote Thieves\"# " },
|
||||
[14] = { str = "13) #DOQUEST\"Broken Alliances\"# (skip the next part to this quest)" },
|
||||
[15] = { str = "14) #DOQUEST\"Badlands Reagent Run\"# " },
|
||||
[16] = { str = "16) #DOQUEST\"Study of the Elements: Rock\"# (#NPClesser rock elementals#), turn in, then do..." },
|
||||
[17] = { str = "17) #DOQUEST\"Study of the Elements: Rock\"# (#NPCrock elementals#), turn in, then do..." },
|
||||
[18] = { str = "18) #DOQUEST\"Study of the Elements: Rock\"# (#NPCgreater rock elementals#)" },
|
||||
[19] = { str = "19) Then make sure all Badlands quests (besides #ACCEPT\"Report to Helgrum\"# ) are done and turned in." },
|
||||
[20] = { str = "20) You should be about level 41 right now, if not grind to it." },
|
||||
[21] = { str = "21) Hearth to BB and check if you have #DOQUEST\"Dream Dust in the Swamp\"# in your questlog. If not, go accept it from Krazek at 27.77", x = 27, y = 77, zone = "Stranlethorn Vale" },
|
||||
[22] = { str = "22) Fly to Grom'gol." },
|
||||
[23] = { str = "23) Go turn in all the #NPCThe Green Hills of Stranglethorn Chapters/Quests# at Nesingwary's Expedition (35.10) if you have all the pages for it, if not you have another chance to turn this in again later. You can also look in the AH for your missing pages.", x = 35, y = 10, zone = "Badlands" },
|
||||
[24] = { str = "24) Then run all the way to Swamp of Sorrows, stopping along the way to accept this quest: #ACCEPT\"Nothing But the Truth\"# (in Duskwood at 87.35)", x = 87, y = 35, zone = "Duskwood" },
|
||||
[25] = { str = "25) Then turn in #TURNIN\"Nothing But the Truth\"# (the guy right next to him)" },
|
||||
[26] = { str = "26) #ACCEPT\"Nothing But the Truth\"# again" },
|
||||
[27] = { str = "27) Then run into Swamp of Sorrows..." },
|
||||
--[28] = { str = "." },
|
||||
--[29] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------41-42 Swamp of Sorrows
|
||||
--[402] = {
|
||||
[4142] = {
|
||||
title = "41-42 Swamp of Sorrows",
|
||||
--n = "41-42 Swamp of Sorrows",
|
||||
--pID = 401, nID = 403,
|
||||
--itemCount = 27,
|
||||
items = {
|
||||
[1] = { str = "41-42 Swamp of Sorrows" },
|
||||
[2] = { str = "01) Start off doing: #DOQUEST\"Dream Dust in the Swamp\"# (14.59) It may take several trips to that area to complete it..", x = 14, y = 59, zone = "Swamp of Sorrows" },
|
||||
[3] = { str = "02) #DOQUEST\"Nothing But the Truth\"# kill the Mire Lord for the Mire Lord Fungus (at 6.32)", x = 6, y = 32, zone = "Swamp of Sorrows" },
|
||||
[4] = { str = "03) Find and kill #NPCCudgel#, he drops Noboru's Cudgel, which starts #ACCEPT\"Noboru the Cudgel\"# " },
|
||||
[5] = { str = "04) Go turn in #TURNIN\"Noboru the Cudgel\"# (25.31) ... accept #ACCEPT\"Draenethyst Crystals\"# ", x = 25, y = 31, zone = "Swamp of Sorrows" },
|
||||
[6] = { str = "05) Grind to Stonard (45.54)", x = 45, y = 54, zone = "Swamp of Sorrows" },
|
||||
[7] = { str = "06) Make Stonard your home." },
|
||||
[8] = { str = "07) Accept #ACCEPT\"Lack of Surplus\"# and #ACCEPT\"#NPCFresh Meat\"# " },
|
||||
[9] = { str = "08) Get FP." },
|
||||
[10] = { str = "09) Turn in #TURNIN\"Report to Helgrum\"# ... accept #ACCEPT\"Pool of Tears\"# (Elite)" },
|
||||
[11] = { str = "10) Go do the following quests:" },
|
||||
[12] = { str = "11) #DOQUEST\"Pool of Tears\"# (the artifacts are in the water around temple of atal'hakkar)" },
|
||||
[13] = { str = "12) #DOQUEST\"Lack of Surplus\"# then turn it in (at 81.80) ... accept #ACCEPT\"Lack of Surplus\"# part2 and go do it", x = 81, y = 80, zone = "Swamp of Sorrows" },
|
||||
[14] = { str = "13) Go do #DOQUEST\"Fresh Meat\"# and #DOQUEST\"Nothing But the Truth\"# (#NPCShadow Panthers#' hearts) " },
|
||||
[15] = { str = "14) #DOQUEST\"Draenethyst Crystals\"# then turn it in at (25.31)", x = 25, y = 31, zone = "Swamp of Sorrows" },
|
||||
[16] = { str = "15) #DOQUEST\"Ongeku\"# " },
|
||||
[17] = { str = "16) turn in #TURNIN\"Lack of Surplus\"# part2 ... accept #ACCEPT\"Threat From the Sea\"#" },
|
||||
[18] = { str = "17) turn in #TURNIN\"Threat From the Sea\"# then accept #ACCEPT\"Threat From the Sea\"# again" },
|
||||
[19] = { str = "18) go do #DOQUEST\"Threat From the Sea\"# along with #DOQUEST\"Fresh Meat\"# " },
|
||||
[20] = { str = "19) turn in #TURNIN\"Threat From the Sea\"# ... accept #ACCEPT\"Continued Threat\"# " },
|
||||
[21] = { str = "20) go do #DOQUEST\"Continued Threat\"# then turn it in." },
|
||||
[22] = { str = "21) Hearth to Stonard." },
|
||||
[23] = { str = "22) Turn in #TURNIN\"Fresh Meat\"# and #TURNIN\"Pool of Tears\"# ... accept #ACCEPT\"The Atal'ai Exile\"# " },
|
||||
[24] = { str = "23) Should be about lvl 42 now, if not grind to it. #HUNTERGet new hunter spells/abilities.#" },
|
||||
[25] = { str = "24) Fly to Grom'gol..." },
|
||||
--[26] = { str = "." },
|
||||
--[27] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------42-43 Stranglethorn Vale
|
||||
--[403] = {
|
||||
[4243] = {
|
||||
title = "42-43 Stranglethorn Vale",
|
||||
--n = "42-43 Stranglethorn Vale",
|
||||
--pID = 402, nID = 404,
|
||||
--itemCount = 23,
|
||||
items = {
|
||||
[1] = { str = "42-43 Stranglethorn Vale" },
|
||||
[2] = { str = "01) accept #ACCEPT\"Mok'thardin's Enchantment\"# part4 and #ACCEPT\"Split Bone Necklace\"# " },
|
||||
[3] = { str = "02) fly to BB" },
|
||||
[4] = { str = "03) accept ALL quests in BB: #ACCEPT\"The Bloodsail Buccaneers\"# #ACCEPT\"Up to Snuff\"# #ACCEPT\"Zanzil's Secret\"# #ACCEPT\"Akiris by the Bundle\"# #ACCEPT\"Voodoo Dues\"# #ACCEPT\"Stoley's Debt\"# #ACCEPT\"Stranglethorn Fever\"# and #ACCEPT\"Keep An Eye Out\"#" },
|
||||
[5] = { str = "04) Turn in #TURNIN\"Dream Dust in the Swamp\"# " },
|
||||
[6] = { str = "05) Make BB your home." },
|
||||
[7] = { str = "06) Then go do in the following order:" },
|
||||
[8] = { str = "07) #DOQUEST\"The Bloodsail Buccaneers\"# along with #DOQUEST\"Up to Snuff\"# and #DOQUEST\"Keep An Eye Out\"# (these are done at the shore around 31.80, and some more mobs can be found at 27.70). Also do #DOQUEST\"Stranglethorn Fever\"# (for #DOQUEST\"Stranglethorn Fever\"# you will need one gorilla fang, and the witch doctor is in the cave at 34.60)", x = 31, y = 80, zone = "Stranglethorn Vale" },
|
||||
[9] = { str = "08) #DOQUEST\"Mok'thardin's Enchantment\"# part4 along with #DOQUEST\"Akiris by the Bundle\"# (25.63)", x = 25, y = 63, zone = "Stranglethorn Vale" },
|
||||
[10] = { str = "09) #DOQUEST\"Zanzil's Secret\"# along with #DOQUEST\"Voodoo Dues\"# (34.52 and 39.58)", x = 34, y = 52, zone = "Stranglethorn Vale" },
|
||||
[11] = { str = "10) #DOQUEST\"Skullsplitter Tusks\"# along with #DOQUEST\"Split Bone Necklace\"# " },
|
||||
[12] = { str = "11) I keep grinding away at Skullsplitter trolls until im at least 2-3 bars away from 43." },
|
||||
[13] = { str = "12) Hearth to BB" },
|
||||
[14] = { str = "13) Turn in ALL quests and make sure to accept #ACCEPT\"Tran'Rek\"# and #ACCEPT\"Rumors for Kravel\"# from Krazek and #ACCEPT\"Whiskey Slim's Lost Grog\"# from Whiskey Slim" },
|
||||
[15] = { str = "14) Fly to Grom'gol " },
|
||||
[16] = { str = "15) turn in #TURNIN\"Mok'thardin's Enchantment\"# part4 and #TURNIN\"Split Bone Necklace\"# " },
|
||||
[17] = { str = "16) Accept #ACCEPT\"Grim Message\"#" },
|
||||
[18] = { str = "17) Get on the zeppelin to Orgrimmar" },
|
||||
[19] = { str = "18) Once there go to Belgrom Rockmaul at 75.34 and accept #ACCEPT\"A Threath in Ferelas\"#", x = 75, y = 34, zone = "Orgrimmar" },
|
||||
[20] = { str = "19) Fly to Thunder Bluff" },
|
||||
[21] = { str = "20) turn in #TURNIN\"Frostmaw\"# ... accept #ACCEPT\"Deadmire\"# (hint: i usually keep Frostmaw's mane in my bank for a long time)" },
|
||||
[22] = { str = "21) Fly to Desolace if you're not 4/5 bars into lvl 43 or Dustwallow Marsh if you're." },
|
||||
--[22] = { str = "." },
|
||||
--[23] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------43-43 Desolace
|
||||
--[404] = {
|
||||
[4342] = {
|
||||
title = "43-43 Desolace",
|
||||
--n = "43-43 Desolace",
|
||||
--pID = 403, nID = 405,
|
||||
--itemCount = 16,
|
||||
items = {
|
||||
[1] = { str = "43-43 Desolace" },
|
||||
[2] = { str = "01) OPTIONAL: This whole section can be skipped if you are 4-5 blocks or more into lvl 43, it would not hurt to skip this section and go straight to Dustwallow Marsh." },
|
||||
[3] = { str = "02) make Shadowprey Village your home." },
|
||||
[4] = { str = "03) accept #ACCEPT\"Portals of the Legion\"# " },
|
||||
[5] = { str = "04) go turn in #TURNIN\"Ongeku\"# at 36.79 ... SKIP #NPC\"Khan Jehn\"# ", x = 36, y = 79, zone = "Desolace" },
|
||||
[6] = { str = "05) while your in Desolace, keep an eye out for an Elite Giant for the quest #NPC\"Nothing But the Truth\"#..." },
|
||||
[7] = { str = "06) ...if you don’t find the giant and get the \"#NPCDeepstrider Tumor#\", then the quest will have to be abandoned, i don’t spend time going all over looking for a deepstrider gaint." },
|
||||
[8] = { str = "07) then go to Mannoroc Coven at 50.76 and do:", x = 50, y = 76, zone = "Desolace" },
|
||||
[9] = { str = "08) #DOQUEST\"Portals of the Legion\"# " },
|
||||
[10] = { str = "09) #DOQUEST\"The Corrupter\"# (Elite) (Slay #NPCLord Azrethoc# and #NPCJugkar Grim'rod#)" },
|
||||
[11] = { str = "10) turn in #TURNIN\"The Corrupter\"# (Elite) at 53.54", x = 53, y = 54, zone = "Desolace" },
|
||||
[12] = { str = "11) then hearth to Shadowprey Village" },
|
||||
[13] = { str = "12) turn in #TURNIN\"Portals of the Legion\"# " },
|
||||
[14] = { str = "13) fly to TB, then to Dustwallow Marsh..." },
|
||||
--[15] = { str = "." },
|
||||
--[16] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------43-43 Dustwallow Marsh
|
||||
--[405] = {
|
||||
[4343] = {
|
||||
title = "43-43 Dustwallow Marsh",
|
||||
--n = "43-43 Dustwallow Marsh",
|
||||
--pID = 404, nID = 406,
|
||||
--itemCount = 14,
|
||||
items = {
|
||||
[1] = { str = "43-43 Dustwallow Marsh" },
|
||||
[2] = { str = "01) Accept #ACCEPT\"Identifying the Brood\"# " },
|
||||
[3] = { str = "02) Go down to (40.36) and accept #DOQUEST\"Questioning Reethe\"# then do it.", x = 40, y = 36, zone = "Dustwallow Marsh" },
|
||||
[4] = { str = "03) Go down and do:" },
|
||||
[5] = { str = "04) #DOQUEST\"Deadmire\"# " },
|
||||
[6] = { str = "05) #DOQUEST\"Marg Speaks\"# Kill the mobs at around (58.63)", x = 58, y = 63, zone = "Dustwallow Marsh" },
|
||||
[7] = { str = "06) #DOQUEST\"Identifying the Brood\"# " },
|
||||
[8] = { str = "07) Then grind your way back to Brackenwall Village" },
|
||||
[9] = { str = "08) Turn in #TURNIN\"Questioning Reethe\"# and #TURNIN\"Identifying the Brood\"# ... accept #ACCEPT\"The Brood of Onyxia\"# " },
|
||||
[10] = { str = "09) Run back and forth until #DOQUEST\"The Brood of Onyxia\"# is done, but don't actually do the final quest yet (this will be done later at #NPClevel 48#, so you can abandon it for now)." },
|
||||
[11] = { str = "10) Turn in #TURNIN\"Marg Speaks\"# ... accept #ACCEPT\"Report to Zor\"# " },
|
||||
[12] = { str = "11) Fly to Tanaris..." },
|
||||
--[13] = { str = "." },
|
||||
--[14] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------43-44 Tanaris
|
||||
--[406] = {
|
||||
[4344] = {
|
||||
title = "43-44 Tanaris",
|
||||
--n = "43-44 Tanaris",
|
||||
--pID = 405, nID = 407,
|
||||
--itemCount = 36,
|
||||
items = {
|
||||
[1] = { str = "43-44 Tanaris" },
|
||||
[2] = { str = "01) Go into Gadgetzan..." },
|
||||
[3] = { str = "02) Accept: #ACCEPT\"WANTED: Caliph Scorpidsting\"# and #ACCEPT\"WANTED: Andre Firebeard\"# (Wanted Poster)" },
|
||||
[4] = { str = "03) Turn in #TURNIN\"Tran'Rek\"# " },
|
||||
[5] = { str = "04) Accept: #ACCEPT\"Gadgetzan Water Survey\"# #ACCEPT\"Wastewander Justice\"# and #ACCEPT\"Water Pouch Bounty\"# " },
|
||||
[6] = { str = "05) Make Gadgetzan your home." },
|
||||
[7] = { str = "06) Go to the Shimmering Flats (in Thousand Needles at 78.77) and turn in #TURNIN\"Rumors for Kravel\"# #TURNIN\"News for Fizzle\"# and #TURNIN\"Razzeric's Tweaking\"# ... accept #ACCEPT\"Safety First\"# ", x = 53, y = 76, zone = "Tanaris" },
|
||||
[8] = { str = "07) Accept #ACCEPT\"Keeping Pace\"# " },
|
||||
[9] = { str = "08) Turn #TURNIN\"Keeping Pace\"# in at Zamek, then go pick up Rizzle's Plans at (77.77) ... accept #ACCEPT\"Rizzle's Schematics\"# " },
|
||||
[10] = { str = "09) Accept #ACCEPT\"Back to Booty Bay\"# (at Kravel Koalbeard)" },
|
||||
[11] = { str = "10) Go turn in #TURNIN\"Rizzle's Schematics\"# at Pozzik." },
|
||||
[12] = { str = "11) Hearth back to Gadgetzan." },
|
||||
[13] = { str = "12) Turn in #TURNIN\"Safety First\"# ... i SKIP the next part to this quest." },
|
||||
[14] = { str = "13) Then grind your way east to Steamwheedle Port. (67.23)", x = 67, y = 23, zone = "Tanaris" },
|
||||
[15] = { str = "14) Accept: #ACCEPT\"Pirate Hats Ahoy!\"# #ACCEPT\"Screecher Spirits\"# and #ACCEPT\"Southsea Shakedown\"# " },
|
||||
[16] = { str = "15) Turn in #TURNIN\"Stoley's Debt\"# ... accept #ACCEPT\"Stoley's Shipment\"# " },
|
||||
[17] = { str = "16) Then go complete these quests:" },
|
||||
[18] = { str = "17) #DOQUEST\"Wastewander Justice\"# along with #DOQUEST\"Water Pouch Bounty\"# (at 64.29", x = 64, y = 29, zone = "Tanaris" },
|
||||
[19] = { str = "18) Then go do all of the following (steps 19 - 23) at Lost Rigger Cove (72.47):", x = 72, y = 47, zone = "Tanaris" },
|
||||
[20] = { str = "19) #DOQUEST\"Southsea Shakedown\"# " },
|
||||
[21] = { str = "20) #DOQUEST\"Pirate Hats Ahoy!\"# " },
|
||||
[22] = { str = "21) #DOQUEST\"Stoley's Shipment\"# " },
|
||||
[23] = { str = "22) #DOQUEST\"Ship Schedules\"# (find this in one of the #NPCPirate's footlocker# at Lost Rigger Cove. If the item cannot be found, just skip it)" },
|
||||
[24] = { str = "23) #DOQUEST\"WANTED: Andre Firebeard\"# " },
|
||||
[25] = { str = "24) Once they're all done, hearth to Gadgetzan." },
|
||||
[26] = { str = "25) Turn in #TURNIN\"Water Pouch Bounty\"# #TURNIN\"Wastewander Justice\"# ... accept #ACCEPT\"More Wastewander Justice\"# " },
|
||||
[27] = { str = "26) Go do #DOQUEST\"Gadgetzan Water Survey\"# (grinding mobs along the way, coords are at 38.29), then go back and turn it in.", x = 38, y = 29, zone = "Tanaris" },
|
||||
[28] = { str = "27) Go to Steamwheedle Port." },
|
||||
[29] = { str = "28) Turn in ALL quests there ... accept #ACCEPT\"Deliver to MacKinley\"# " },
|
||||
[30] = { str = "29) Then go do: #DOQUEST\"More Wastewander Justice\"# along with #DOQUEST\"WANTED: Caliph Scorpidsting\"# (59.37)", x = 59, y = 37, zone = "Tanaris" },
|
||||
[31] = { str = "30) Then hearth to Gadgetzan. Make sure you save (put in your bank) all the Wastewander Water Pouches you have, because you will need them for a later quest." },
|
||||
[32] = { str = "31) Turn in #TURNIN\"More Wastewander Justice\"# and #TURNIN\"WANTED: Caliph Scorpidsting\"# " },
|
||||
[33] = { str = "32) Fly to Freewind Post." },
|
||||
[34] = { str = "33) Run west into Feralas..." },
|
||||
--[35] = { str = "." },
|
||||
--[36] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------44-46 Feralas
|
||||
--[407] = {
|
||||
[4446] = {
|
||||
title = "44-46 Feralas",
|
||||
--n = "44-46 Feralas",
|
||||
--pID = 406, nID = 408,
|
||||
--itemCount = 51,
|
||||
items = {
|
||||
[1] = { str = "44-46 Feralas" },
|
||||
[2] = { str = "01) Run into Camp Mojache. (75.44)", x = 75, y = 44, zone = "Feralas" },
|
||||
[3] = { str = "02) Accept ALL quests there: #ACCEPT\"A New Cloak's Sheen\"# #ACCEPT\"The Ogres of Feralas\"# #ACCEPT\"Gordunni Cobalt\"# #ACCEPT\"War on the Woodpaw\"# #ACCEPT\"The Mark of Quality\"# #ACCEPT\"A Strange Request\"# " },
|
||||
[4] = { str = "03) Get FP." },
|
||||
[5] = { str = "04) Make Camp Mojache your home." },
|
||||
[6] = { str = "05) Then go do in the following order:" },
|
||||
[7] = { str = "06) #DOQUEST\"War on the Woodpaw\"# go just north of Camp Mojache to do this. (71.37)", x = 71, y = 37, zone = "Feralas" },
|
||||
[8] = { str = "07) #DOQUEST\"The Ogres of Feralas\"# along with #DOQUEST\"Gordunni Cobalt\"# (75.31)", x = 75, y = 31, zone = "Feralas" },
|
||||
[9] = { str = "08) Make sure you click on one of the scrolls laying on the ground which starts: #ACCEPT\"The Gordunni Scroll\"# " },
|
||||
[10] = { str = "09) Then go do: #DOQUEST\"A New Cloak's Sheen\"# (67.48)", x = 67, y = 48, zone = "Feralas" },
|
||||
[11] = { str = "10) Go back to Camp Mojache, turn in ALL those quests, accept all new quests." },
|
||||
[12] = { str = "11) Go do #DOQUEST\"Alpha Strike\"# (at 72.56) then turn it in. ... accept #ACCEPT\"Woodpaw Investigation\"# ", x = 72, y = 56, zone = "Feralas" },
|
||||
[13] = { str = "12) Go do #DOQUEST\"Woodpaw Investigation\"# (at 71.55) complete it ... accept #ACCEPT\"The Battle Plans\"# ", x = 71, y = 55, zone = "Feralas" },
|
||||
[14] = { str = "13) Then go do #DOQUEST\"A Grim Discovery\"# (66.46)", x = 66, y = 46, zone = "Feralas" },
|
||||
[15] = { str = "14) Hearth back to Camp Mojache, turn in #TURNIN\"The Battle Plans\"# and #TURNIN\"A Grim Discovery\"# , accept ALL new quests." },
|
||||
[16] = { str = "15) PLEASE NOTE: If the 'OOX-22/FE Distress Beacon' item drops, accept the quest #ACCEPT\"Find OOX-22/FE!\"# . Turn in #TURNIN\"Find OOX-22/FE!\"# (at 53.55). Then go do:", x = 53, y = 55, zone = "Feralas" },
|
||||
[17] = { str = "16) #DOQUEST\"Stinglasher\"# along with #DOQUEST\"Zukk'ash Infestation\"# (74.62)", x = 74, y = 62, zone = "Feralas" },
|
||||
[18] = { str = "17) #DOQUEST\"Screecher Spirits\"# (55.56)", x = 55, y = 56, zone = "Feralas" },
|
||||
[19] = { str = "18) #DOQUEST\"The Ogres of Feralas\"# part2 (59.68)", x = 59, y = 68, zone = "Feralas" },
|
||||
[20] = { str = "#VIDEONOTE:# While in this area, make sure you pick up a #NPCHippogryph Egg# down south-west (around 55.76), this will be turned in at Tanaris for a later #NPCquest#.", x = 53, y = 76, zone = "Feralas" },
|
||||
[21] = { str = "19) #DOQUEST\"Dark Ceremony\"# (59.68)", x = 59, y = 68, zone = "Feralas" },
|
||||
[22] = { str = "20) #DOQUEST\"The Mark of Quality\"# (53.55)", x = 53, y = 55, zone = "Feralas" },
|
||||
[23] = { str = "21) Run back to Camp Mojache, then go turn those quests in, accept all new quests just from those quest givers. " },
|
||||
[24] = { str = "22) Then do the following (If you have 90+ gold, go buy your mount! You should have them by now...):" },
|
||||
[25] = { str = "23) Fly to Orgrimmar..." },
|
||||
[26] = { str = "24) Make sure to get 120 Silk Cloths and 120 Mageweave out from either your bank or mailbox. For those of you who can't add, that's 6 stacks of 20 for both Silk and Mageweave." },
|
||||
[27] = { str = "25) Then go turn in: #TURNIN\"Zukk'ash Report\"# (56.46)", x = 56, y = 46, zone = "Orgrimmar" },
|
||||
[28] = { str = "26) Go complete #DOQUEST\"A Donation of Silk\"# and #DOQUEST\"A Donation of Mageweave\"# (at 63.51)", x = 63, y = 51, zone = "Orgrimmar" },
|
||||
[29] = { str = "27) Accept #ACCEPT\"Ripple Recovery\"# (from Dran Droffers) (59.36)", x = 59, y = 36, zone = "Orgrimmar" },
|
||||
[30] = { str = "28) Then turn in #TURNIN\"Ripple Recovery\"# (the guy right next to Dran) ... accept #ACCEPT\"Ripple Recovery\"# again." },
|
||||
[31] = { str = "29) Turn in #TURNIN\"Parts of the Swarm\"# and #TURNIN\"A Grim Discovery\"# at #NPCBelgrom Rockmaul#... accept #ACCEPT\"Betrayed\"# (75.34). Also get new spells/abilities while you are in Orgrimmar.", x = 75, y = 34, zone = "Orgrimmar" },
|
||||
[32] = { str = "30) Go turn in #TURNIN\"A Strange Request\"# ... Accept #ACCEPT\"Retrun to Witch Doctor Uzer'i\"# (cleft of shadow, 49.50)", x = 49, y = 50, zone = "Orgrimmar" },
|
||||
[33] = { str = "31) Go turn in #ACCEPT\"Report to Zor\"# ... accept/complete #DOQUEST\"Service to the Horde\"# (valley of wisdom, 38.38)", x = 38, y = 38, zone = "Orgrimmar" },
|
||||
[34] = { str = "32) Go turn in #TURNIN\"The Gordunni Orb\"# (valley of spirits, 39.86)", x = 39, y = 86, zone = "Orgrimmar" },
|
||||
[35] = { str = "33) Turn in #TURNIN\"A Donation of Silk\"# and #TURNIN\"A Donation of Mageweave\"# (for the troll faction, at 37.87)", x = 37, y = 87, zone = "Orgrimmar" },
|
||||
[36] = { str = "34) Now, before hearting back to Ferelas, go Durotar and buy your mount!" },
|
||||
[37] = { str = "35) turn in #TURNIN\"Retrun to Witch Doctor Uzer'i\"# ... accept #ACCEPT\"Natural Materials\"# and #ACCEPT\"Testing the Vessel\"# " },
|
||||
[38] = { str = "36) then do #DOQUEST\"Natural Materials\"# " },
|
||||
[39] = { str = "37) grind away at hippogryphs till it's completed." },
|
||||
[40] = { str = "38) If the \"#NPCOOX-22/FE Distress Beacon#\" item drops, accept the quest #ACCEPT\"Find OOX-22/FE!\"# " },
|
||||
[41] = { str = "39) turn in #TURNIN\"Find OOX-22/FE!\"# (at 51.57)", x = 51, y = 57, zone = Ferelas },
|
||||
[42] = { str = "40) if your not level 46, grind till you are on hippogryphs.." },
|
||||
[43] = { str = "41) hearth back to Camp Mojache." },
|
||||
[44] = { str = "42) turn #TURNIN\"Natural Materials\"# in ... accept #ACCEPT\"The Sunken Temple\"# " },
|
||||
[45] = { str = "43) fly to Thunder Bluff" },
|
||||
[46] = { str = "44) turn in #TURNIN\"Deadmire\"# " },
|
||||
[47] = { str = "45) get new spells/abilites." },
|
||||
[48] = { str = "46) Fly to XRs, then to Splintertree Post (Ashenvale)" },
|
||||
[49] = { str = "47) Then go east into Azshara..." },
|
||||
--[50] = { str = "." },
|
||||
--[51] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------46-46 Azshara
|
||||
--[408] = {
|
||||
[4646] = {
|
||||
title = "46-46 Azshara",
|
||||
--n = "46-46 Azshara",
|
||||
--pID = 407, nID = 409,
|
||||
--itemCount = 16,
|
||||
items = {
|
||||
[1] = { str = "46-46 Azshara" },
|
||||
[2] = { str = "01) Go accept #DOQUEST\"Spiritual Unrest\"# and #DOQUEST\"A Land Filled with Hatred\"# (at 10.78)", x = 10, y = 78, zone = "Azshara" },
|
||||
[3] = { str = "02) Then go do them (at 17.66 and 20.62), and turn them in.", x = 17, y = 66, zone = "Azshara" },
|
||||
[4] = { str = "03) Then go to Valormok (at 21.52)", x = 21, y = 52, zone = "Azshara" },
|
||||
[5] = { str = "04) Turn in #TURNIN\"Betrayed\"# (skip the next part to this quest for now)" },
|
||||
[6] = { str = "05) Then get FP there and fly to Orgrimmar." },
|
||||
[7] = { str = "06) Then head to Under City." },
|
||||
[8] = { str = "07) Then go to Magic Quarter and accept #ACCEPT\"Lines of Communication\"# " },
|
||||
[9] = { str = "08) Head to Apothecarium Quarter and accept: #ACCEPT\"Seeping Corruption\"# and #ACCEPT\"Errand for Apothecary Zinge\"# " },
|
||||
[10] = { str = "09) Then go turn in #ACCEPT\"Errand for Apothecary Zinge\"# (out in the other room)" },
|
||||
[11] = { str = "10) Go return back, and turn in #TURNIN\"Errand for Apothecary Zinge\"# again ... accept #ACCEPT\"Into the Field\"# " },
|
||||
[12] = { str = "11) You can put the 'Field Testing Kit' and the 'Box of Empty Vials' in the Bank for now." },
|
||||
[13] = { str = "12) Fly to Tarren Mill and make it your home." },
|
||||
[14] = { str = "13) Head to the Hinterlands. There a passage at around 83.33", x = 83, y = 33, zone = "Hillsbard Foothills" },
|
||||
--[15] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------46-47 Hinterlands
|
||||
--[409] = {
|
||||
[4647] = {
|
||||
title = "46-47 Hinterlands",
|
||||
--n = "46-47 Hinterlands",
|
||||
--pID = 408, nID = 410,
|
||||
--itemCount = 38,
|
||||
items = {
|
||||
[1] = { str = "46-47 Hinterlands" },
|
||||
[2] = { str = "01) go turn in #TURNIN\"Ripple Recovery\"# (at 27.49) ... accept #ACCEPT\"A Sticky Situation\"# ", x = 27, y = 49, zone = "Hinterlands" },
|
||||
[3] = { str = "02) Ride all the way to Revantusk Village (at 77.80)", x = 77, y = 80, zone = "Hinterlands" },
|
||||
[4] = { str = "03) accept: #ACCEPT\"Vilebranch Hooligans\"#, #ACCEPT\"Cannibalistic Cousins\"#, #ACCEPT\"Message to the Wildhammer\"#, #ACCEPT\"Stalking the Stalkers\"#, #ACCEPT\"Hunt the Savages\"# and #ACCEPT\"Avenging the Fallen\"# " },
|
||||
[5] = { str = "04) then go do the following:" },
|
||||
[6] = { str = "05) #DOQUEST\"Whiskey Slim's Lost Grog\"# " },
|
||||
[7] = { str = "06) #DOQUEST\"Vilebranch Hooligans\"# " },
|
||||
[8] = { str = "07) #DOQUEST\"Cannibalistic Cousins\"# " },
|
||||
[9] = { str = "08) #DOQUEST\"A Sticky Situation\"# turn in later ... accept #ACCEPT\"Ripple Delivery\"# " },
|
||||
[10] = { str = "09) #DOQUEST\"Stalking the Stalkers\"# " },
|
||||
[11] = { str = "10) #DOQUEST\"Hunt the Savages\"# " },
|
||||
[12] = { str = "11) #DOQUEST\"Testing the Vessel\"# " },
|
||||
[13] = { str = "12) #DOQUEST\"Avenging the Fallen\"# " },
|
||||
[14] = { str = "13) #DOQUEST\"Lines of Communication\"# " },
|
||||
[15] = { str = "14) #DOQUEST\"Message to the Wildhammer\"# " },
|
||||
[16] = { str = "15) #DOQUEST\"Rin'ji is Trapped!\"# (the escort quest, starts at 31.48)", x = 31, y = 48, zone = "Hinterlands" },
|
||||
[17] = { str = "16) #DOQUEST\"Grim Message\"# ...while doing this quest accept #ACCEPT\"Venom Bottles\"# (one of those little bottles on the table)" },
|
||||
[18] = { str = "17) Yeah the good 'ol hinterlands grind.. have fun LOL." },
|
||||
[19] = { str = "18) If the \"#NPCOOX-09/HL Distress Beacon#\" item drops, accept the quest #ACCEPT\"Find OOX-09/HL!\"# " },
|
||||
[20] = { str = "19) Turn in #TURNIN\"Find OOX-09/HL!\"# (at 49.38)", x = 49, y = 38, zone = "Hinterlands" },
|
||||
[21] = { str = "20) Turn in #TURNIN\"Rin'ji is Trapped!\"# (at 86.59) ... accept #ACCEPT\"Rin'ji's Secret\"# ", x = 86, y = 59, zone = "Hinterlands" },
|
||||
[22] = { str = "21) Go to Revantusk Village." },
|
||||
[23] = { str = "22) Turn in ALL quests." },
|
||||
[24] = { str = "23) Then get FP and fly to TM." },
|
||||
[25] = { str = "24) turn in #TURNIN\"Venom Bottles\"# ... accept #ACCEPT\"Undamaged Venom Sac\"# " },
|
||||
[26] = { str = "25) I then get all my magewaeve out from my mailbox, then fly to Hammerfall..." },
|
||||
[27] = { str = "26) Then go to Doctor Gregory Victor to build up first aid..." },
|
||||
[28] = { str = "27) ...I’m usually able to get to 290 first aid for Heavy Runecloth bandage." },
|
||||
[29] = { str = "28) Then fly back to TM." },
|
||||
[30] = { str = "29) then ride back into Hinterlands (don’t fly)" },
|
||||
[31] = { str = "30) go do #DOQUEST\"Undamaged Venom Sac\"# and #DOQUEST\"The Atal'ai Exile\"# ... accept #ACCEPT\"Return to Fel'Zerul\"# " },
|
||||
[32] = { str = "31) Then hearth to TarrenMill." },
|
||||
[33] = { str = "32) turn in #TURNIN\"Undamaged Venom Sac\"# ... i SKIP #NPC\"Consult Master Gadrin\"# Only accept this quest if you still need to get a mount as orc/troll, as you turn it in in the same spot." },
|
||||
[34] = { str = "33) Fly to the Undercity." },
|
||||
[35] = { str = "34) go to magic quarter and turn in #TURNIN\"A Donation of Mageweave\"# (you need 60 mageweave cloth for this quest) " },
|
||||
[36] = { str = "35) then turn in: #TURNIN\"Lines of Communication\"# and #TURNIN\"Rin'ji's Secret\"# ..then complete #TURNIN\"Oran's Gratitude\"# " },
|
||||
[37] = { str = "36) get on the zeppelin to go to Grom'gol..." },
|
||||
--[38] = { str = "." },
|
||||
--[39] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------47-47 Stranglethorn Vale
|
||||
--[410] = {
|
||||
[4747] = {
|
||||
title = "47-47 Stranglethorn Vale",
|
||||
--n = "47-47 Stranglethorn Vale",
|
||||
--pID = 409, nID = 411,
|
||||
--itemCount = 20,
|
||||
items = {
|
||||
[1] = { str = "47-47 Stranglethorn Vale" },
|
||||
[2] = { str = "01) Go do #DOQUEST\"Raptor Mastery\"# (#NPCTethis#) (28.44) and go turn it in", x = 28, y = 44, zone = "Stranglethorn Vale" },
|
||||
[3] = { str = "02) accept #ACCEPT\"Big Game Hunter\"# (Elite), go do it, then turn it in." },
|
||||
[4] = { str = "03) Go to Grom'gol and turn in #TURNIN\"Grim Message\"# (if you did the Hinterlands section)." },
|
||||
[5] = { str = "04) Fly to BB." },
|
||||
[6] = { str = "05) Accept #ACCEPT\"The Bloodsail Buccaneers\"# part5 and #ACCEPT\"Whiskey Slim's Lost Grog\"# " },
|
||||
[7] = { str = "06) Make BB your home." },
|
||||
[8] = { str = "07) Accept #ACCEPT\"The Captain's Chest\"# (Elite) then go do it (at 36.65) NOTE: This quest is tough to solo, it can be soloed, but you should find a group to help you kill Gorlash, I personally skip it while racing to 60.", x = 36, y = 65, zone = "Stranglethorn Vale" },
|
||||
[9] = { str = "08) Turn in #TURNIN\"Back to Booty Bay\"# and #TURNIN\"Deliver to MacKinley\"# " },
|
||||
[10] = { str = "09) Make sure that #DOQUEST\"The Captain's Chest\"# is accepted, then go do it (at 36.65) . If your class has troubles, either find a group to help, or you can simply skip it.", x = 36, y = 65, zone = "Stranglethorn Vale" },
|
||||
[11] = { str = "10) Find a small bottle laying around the shore east of BB, until this item: #NPCCarefully Folded Note# shows up ... which starts #ACCEPT\"Message in a Bottle\"# " },
|
||||
[12] = { str = "11) Go turn #TURNIN\"Message in a Bottle\"# in (at 38.80)", x = 38, y = 80, zone = "Stranglethorn Vale" },
|
||||
[13] = { str = "12) Then go do #DOQUEST\"The Bloodsail Buccaneers\"# part5 (kill the three pirates in the three ships) ...while doing it, find #ACCEPT\"Cortello's Riddle\"# (it's usually a little scroll downstairs in the middle ship)" },
|
||||
[14] = { str = "13) Then hearth back to BB, if hearth stone still is on a cooldown, die on purpose." },
|
||||
[15] = { str = "14) Turn in #TURNIN\"The Captain's Chest\"# and #TURNIN\"The Bloodsail Buccaneers\"# part5" },
|
||||
[16] = { str = "15) Fly to Kargath (Badlands).." },
|
||||
[17] = { str = "16) I get a stack of Silk Cloth out of the mailbox for the quest #ACCEPT\"Caught\"# , then..." },
|
||||
[18] = { str = "17) Go into Searing Gorge..." },
|
||||
--[19] = { str = "." },
|
||||
--[20] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------47-48 Searing Gorge
|
||||
--[411] = {
|
||||
[4748] = {
|
||||
title = "47-48 Searing Gorge",
|
||||
--n = "47-48 Searing Gorge",
|
||||
--pID = 410, nID = 412,
|
||||
--itemCount = 26,
|
||||
items = {
|
||||
[1] = { str = "47-48 Searing Gorge" },
|
||||
[2] = { str = "01) First thing I do here is go south-east and do #DOQUEST\"Caught!\"# (guy in the outhouse, 65.62), then turn it in. ... accept #ACCEPT\"Ledger from Tanaris\"# ... click on outhouse to get the #NPCGoodsteel Ledger#", x = 65, y = 62, zone = "Searing Gorge" },
|
||||
[3] = { str = "02) I then go start killing Glassweb Spiders for the #DOQUEST\"Ledger from Tanaris\"# quest." },
|
||||
[4] = { str = "03) Then go up north-west, Talk to #NPCKalaran Windblade# (at 39.38) on way to Thorium Point (35.25). Do first his listen to me quest #DOQUEST\"Divine Retribution\"#. In order to get #ACCEPT\"The Flawless Flame\"# Once at Thorium Point collect ALL quests there and get the FP there too.", x = 35, y = 25, zone = "Searing Gorge" },
|
||||
[5] = { str = "04) Then do the following (steps 5 - 13 in any order):" },
|
||||
[6] = { str = "05) #DOQUEST\"Fiery Menace!\"# " },
|
||||
[7] = { str = "06) #DOQUEST\"Curse These Fat Fingers\"# " },
|
||||
[8] = { str = "07) #DOQUEST\"STOLEN: Smithing Tuyere and Lookout's Spyglass\"# " },
|
||||
[9] = { str = "08) #DOQUEST\"The Flawless Flame\"# turn in, then get and do #DOQUEST\"Forging the Shaft\"# " },
|
||||
[10] = { str = "09) #DOQUEST\"JOB OPPORTUNITY: Culling the Competition\"# " },
|
||||
[11] = { str = "10) #DOQUEST\"WANTED: Overseer Maltorius\"# (Elite) (only do this quest with a group, even a level 60 has a hard time soloing this quest)." },
|
||||
[12] = { str = "11) #DOQUEST\"What the Flux?\"# (the plans for #DOQUEST\"What the Flux?\"# quest is right behind Overseer Maltorius)" },
|
||||
[13] = { str = "12) #DOQUEST\"Incendosaurs? Whateverosaur is More Like It\"# " },
|
||||
[14] = { str = "13) #DOQUEST\"The Key to Freedom\"# starts from an item drop #NPCGrimsite Outhouse Key#, turn in at the outhouse (south-east, 65.62)", x = 65, y = 62, zone = "Searing Gorge" },
|
||||
[15] = { str = "14) Turn in #TURNIN\"Forging the Shaft\"# ... accept #ACCEPT\"The Flame's Casing\"# " },
|
||||
[16] = { str = "15) Do #DOQUEST\"The Flame's Casing\"# (around 24.36). Just keep killing the mobs there until the item drops.", x = 24, y = 36, zone = "Searing Gorge" },
|
||||
[17] = { str = "16) Then turn in #TURNIN\"The Flame's Casing\"# ... accept and do #DOQUEST\"The Torch of Retribution\"# , then turn it in ... accept and do #DOQUEST\"The Torch of Retribution\"# Part2 (just pick up the torch on the ground." },
|
||||
[18] = { str = "17) Accept #ACCEPT\"Squire Maltrake\"# , then turn it in ... accept #ACCEPT\"Set Them Ablaze!\"# " },
|
||||
[19] = { str = "18) Do #DOQUEST\"Set Them Ablaze!\"# (north=33.54, south=44.61, east=50.54, west=35.60). Once that is done, go back and turn it in.", x = 33, y = 54, zone = "Searing Gorge" },
|
||||
[20] = { str = "19) Click on the little chest on the ground (at 38.38) and accept #ACCEPT\"Trinkets...\"# , then click on the chest again to turn it in.", x = 38, y = 38, zone = "Searing Gorge" },
|
||||
[21] = { str = "20) Make sure you keep the #NPCBlack Dragonflight Molt# in your inventory as you will need it for a later #NPCquest#." },
|
||||
[22] = { str = "21) Once all that's done, turn all Searing Gorge quests in. make sure you have all 20 solid crystal leg shafts." },
|
||||
[23] = { str = "22) Head south into Burning Steppes (You have to go through Black Rock Mountains).." },
|
||||
[24] = { str = "23) I discover some areas, then get FP there (at 65.25), and fly directly to Stonard (swamp of sorrows)...", x = 65, y = 25, zone = "Searing Gorge" },
|
||||
--[25] = { str = "." },
|
||||
--[26] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------48-48 Swamp of Sorrows
|
||||
--[412] = {
|
||||
[4848] = {
|
||||
title = "48-48 Swamp of Sorrows",
|
||||
--n = "48-48 Swamp of Sorrows",
|
||||
--pID = 411, nID = 413,
|
||||
--itemCount = 29,
|
||||
items = {
|
||||
[1] = { str = "48-48 Swamp of Sorrows" },
|
||||
[2] = { str = "01) Do NOT make Stonard your home. (it should still be Booty Bay)" },
|
||||
[3] = { str = "02) Go to the #NPCFallen Hero of the Horde# (34.66) ... keep talking to him till you get this quest: #ACCEPT\"The Disgraced One\"# ", x = 34, y = 66, zone = "Searing Gorge" },
|
||||
[4] = { str = "03) Then go do #DOQUEST\"Cortello's Riddle\"# (22.48 under the bridge)", x = 22, y = 48, zone = "Searing Gorge" },
|
||||
[5] = { str = "04) Accept #ACCEPT\"Cortello's Riddle\"# part2" },
|
||||
[6] = { str = "05) Go back to Stonard." },
|
||||
[7] = { str = "06) Go turn in #TURNIN\"The Disgraced One\"# (and #TURNIN\"Return to Fel'Zerul\"# if you did Hinterlands)... accept #ACCEPT\"The Missing Orders\"# " },
|
||||
[8] = { str = "#HUNTER07) Get new hunter spells/abilities#" },
|
||||
[9] = { str = "08) Go turn in #TURNIN\"The Missing Orders\"# (in the inn) ... accept #ACCEPT\"The Swamp Talker\"# " },
|
||||
[10] = { str = "09) Go do #DOQUEST\"The Swamp Talker\"# (in the cave at 65.78)", x = 65, y = 78, zone = "Searing Gorge" },
|
||||
[11] = { str = "10) Then head north east and.." },
|
||||
[12] = { str = "11) Go kill the mob #NPCJarquia# (at around 94.50 or 92.65), he drops #NPCGoodsteel's Balanced Flameberge#... for the quest #DOQUEST\"Ledger from Tanaris\"# ", x = 94, y = 50, zone = "Searing Gorge" },
|
||||
[13] = { str = "12) Then die on purpose, so you end up at Stonard." },
|
||||
[14] = { str = "13) Go to the #NPCFallen Hero of the Horde# (34.66) and turn in #TURNIN\"The Swamp Talker\"# ", x = 34, y = 66, zone = "Searing Gorge" },
|
||||
[15] = { str = "14) Accept and do #DOQUEST\"A Tale of Sorrow\"# (Just talk to the guy)" },
|
||||
[16] = { str = "15) Hearth to Booty Bay." },
|
||||
[17] = { str = "16) Get on the boat to go to Ratchet." },
|
||||
[18] = { str = "17) Fly to Brackenwall Village (Dustwallow Marsh). Once there accept #ACCEPT\"The Brood of Onyxia\"# " },
|
||||
[19] = { str = "18) Then head south and get the #NPCOverdue Package# for the quest #DOQUEST\"Ledger from Tanaris\"# (at 54.55)", x = 54, y = 55, zone = "Dustwallow Marsh" },
|
||||
[20] = { str = "19) Go down a bit and do #DOQUEST\"The Brood of Onyxia\"# (the eggs can be found at 53.72 and 48.75)", x = 53, y = 72, zone = "Dustwallow Marsh" },
|
||||
[21] = { str = "20) Then head west to Bloodfen Burrow cave (32.67), and do #DOQUEST\"Cortello's Riddle\"# ... accept the next part to it.", x = 32, y = 67, zone = "Dustwallow Marsh" },
|
||||
[22] = { str = "21) Then die on purpose, so you end up back at Brackenwall Village." },
|
||||
[23] = { str = "22) Turn in #TURNIN\"The Brood of Onyxia\"# ... accept #ACCEPT\"Challenge Overlord Mok'Morokk\"# (??? TBC Quest)" },
|
||||
[24] = { str = "23) Do #DOQUEST\"Challenge Overlord Mok'Morokk\"# Then turn it in. (??? TBC Quest)" },
|
||||
[25] = { str = "24) Then fly to Tanaris.." },
|
||||
[26] = { str = "25) Turn in #TURNIN\"Ledger from Tanaris\"# and #TURNIN\"Into the Field\"# ... accept and complete #DOQUEST\"Slake that Thirst\"#" },
|
||||
[27] = { str = "26) Then fly to Ferelas.." },
|
||||
--[28] = { str = "." },
|
||||
--[29] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
--------48-49 Feralas
|
||||
--[413] = {
|
||||
[4849] = {
|
||||
title = "48-49 Ferelas",
|
||||
--n = "48-49 Feralas",
|
||||
--pID = 412, nID = 414,
|
||||
--itemCount = 27,
|
||||
items = {
|
||||
[1] = { str = "48-49 Feralas" },
|
||||
[2] = { str = "01) turn in #TURNIN\"Testing the Vessel\"# ... accept #ACCEPT\"Hippogryph Muisek\"# " },
|
||||
[3] = { str = "02) accept: #ACCEPT\"Improved Quality\"#, #ACCEPT\"Vengeance on the Northspring\"# and #ACCEPT\"Dark Heart\"# (Elite)" },
|
||||
[4] = { str = "03) make it your home." },
|
||||
[5] = { str = "04) go do #DOQUEST\"Hippogryph Muisek\"# " },
|
||||
[6] = { str = "05) then hearth back to Camp Mojache." },
|
||||
[7] = { str = "06) turn in #TURNIN\"Hippogryph Muisek\"# ... accept #ACCEPT\"Faerie Dragon Muisek\"# " },
|
||||
[8] = { str = "07) go do #DOQUEST\"Faerie Dragon Muisek\"# .. then turn it in ... accept #ACCEPT\"Treant Muisek\"# " },
|
||||
[9] = { str = "08) go do #DOQUEST\"Treant Muisek\"# .. then turn it in ... accept #ACCEPT\"Mountain Giant Muisek\"# (Elite)" },
|
||||
[10] = { str = "09) Stable pet." },
|
||||
[11] = { str = "10) go accept #ACCEPT\"Zapped Giants\"# (at 44.44)" },
|
||||
[12] = { str = "11) go tame an Ironfur Patriarch (for Claw Rank7)" },
|
||||
[13] = { str = "12) then use that pet to Do the following quests:" },
|
||||
[14] = { str = "13) #DOQUEST\"Improved Quality\"# " },
|
||||
[15] = { str = "14) #DOQUEST\"Perfect Yeti Hide\"# (you should find this item/quest while doing this quest: #NPC\"Improved Quality\"#)" },
|
||||
[16] = { str = "15) #DOQUEST\"Vengeance on the Northspring\"# " },
|
||||
[17] = { str = "16) #DOQUEST\"Dark Heart\"# (Elite)" },
|
||||
[18] = { str = "17) #DOQUEST\"Mountain Giant Muisek\"# (Elite) along with #DOQUEST\"Zapped Giants\"#" },
|
||||
[19] = { str = "18) once those quests are completed and #TURNIN\"Zapped Giants\"# is turned in..." },
|
||||
[20] = { str = "19) ..hearth to Camp Mojache." },
|
||||
[21] = { str = "20) abandon bear, get cat back out." },
|
||||
[22] = { str = "21) Turn in #TURNIN\"Mountain Giant Muisek\"# (Elite) ... accept #ACCEPT\"Weapons of Spirit\"# ... then turn it in complete it." },
|
||||
[23] = { str = "22) Turn in #TURNIN\"Improved Quality\"#, #TURNIN\"Perfect Yeti Hide\"#, #TURNIN\"Vengeance on the Northspring\"# and #TURNIN\"Dark Heart\"# " },
|
||||
[24] = { str = "23) Accept #ACCEPT\"The Strength of Corruption\"# " },
|
||||
[25] = { str = "24) Fly to Tanaris..." },
|
||||
--[26] = { str = "." },
|
||||
--[27] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------49-50 Tanaris
|
||||
--[414] = {
|
||||
[4950] = {
|
||||
title = "49-50 Tanaris",
|
||||
--n = "49-50 Tanaris",
|
||||
--pID = 413, nID = 501,
|
||||
--itemCount = 33,
|
||||
items = {
|
||||
[1] = { str = "49-50 Tanaris" },
|
||||
[2] = { str = "01) Go to the Egg-O-Matic machine in Gadgetzan, and turn in the #NPCHippogryph Egg# for #DOQUEST\"The Super Egg-O-Matic\"# quest." },
|
||||
[3] = { str = "02) Make Gadgetzan your home." },
|
||||
[4] = { str = "03) Accept: #ACCEPT\"The Thirsty Goblin\"# #ACCEPT\"Noxious Lair Investigation\"# #ACCEPT\"Super Sticky\"# #ACCEPT\"Thistleshrub Valley\"# and #ACCEPT\"The Dunemaul Compound\"# " },
|
||||
[5] = { str = "04) Go turn in #TURNIN\"The Sunken Temple\"# (at 52.45) ... accept #ACCEPT\"The Stone Circle\"# and #ACCEPT\"Gahz'ridian\"# ", x = 52, y = 45, zone = "Tanaris" },
|
||||
[6] = { str = "05) Go do in the following order:" },
|
||||
[7] = { str = "06) #DOQUEST\"The Dunemaul Compound\"# along with #DOQUEST\"Gahz'ridian\"# (done at 46.66 and 40.73, Gor'marok is in the cave at 40.58)", x = 40, y = 58, zone = "Tanaris" },
|
||||
[8] = { str = "07) #DOQUEST\"Noxious Lair Investigation\"# (34.47)", x = 34, y = 47, zone = "Tanaris" },
|
||||
[9] = { str = "08) #DOQUEST\"Thistleshrub Valley\"# along with #DOQUEST\"The Thirsty Goblin\"# (28.65)", x = 28, y = 65, zone = "Tanaris" },
|
||||
[10] = { str = "09) #DOQUEST\"Tooga's Quest\"# (escort turtle quest starts in the Thistleshrub Valley, lead Tooga to Torta at 66.25).", x = 66, y = 25, zone = "Tanaris" },
|
||||
[11] = { str = "10) Then turn in #TURNIN\"Tooga's Quest\"# along with #TURNIN\"Screecher Spirits\"# " },
|
||||
[12] = { str = "11) Run to Gadgetzan." },
|
||||
[13] = { str = "12) Turn in #TURNIN\"The Thirsty Goblin\"# ... accept #ACCEPT\"In Good Taste\"# turn it in ... accept #ACCEPT\"Sprinkle's Secret Ingredient\"# " },
|
||||
[14] = { str = "13) Turn in #TURNIN\"Thistleshrub Valley\"# #TURNIN\"The Dunemaul Compound\"# and #TURNIN\"Noxious Lair Investigation\"# " },
|
||||
[15] = { str = "14) Accept #ACCEPT\"The Scrimshank Redemption\"# " },
|
||||
[16] = { str = "15) Remember to get your Sampling Kit from the bank and go do:" },
|
||||
[17] = { str = "16) #DOQUEST\"Tanaris Field Sampling\"# and turn in #TURNIN\"Gahz'ridian\"# (at 52.45).", x = 52, y = 45, zone = "Tanaris" },
|
||||
[18] = { str = "17) #DOQUEST\"The Scrimshank Redemption\"# (in the cave at 53.70) The secret for finding the item for this quest is keep making right turns in the cave and it will lead you to it. ", x = 53, y = 70, zone = "Tanaris" },
|
||||
[19] = { str = "18) If the \"OOX-17/TN Distress Beacon\" item drops, accept the quest #ACCEPT\"Find OOX-17/TN!\"# " },
|
||||
[20] = { str = "19) Turn in #TURNIN\"Find OOX-17/TN!\"# (at 60.64)", x = 60, y = 64, zone = "Tanaris" },
|
||||
[21] = { str = "20) Then do the Chicken escort #DOQUEST\"Rescue OOX-17/TN!\"# " },
|
||||
[22] = { str = "21) Once all those quests are finished.." },
|
||||
[23] = { str = "22) Hearth to Gadgetzan." },
|
||||
[24] = { str = "23) Turn in #TURNIN\"Tanaris Fiels Sampling\"# ... accept #ACCEPT\"Return to Apothecary Zinge\"# " },
|
||||
[25] = { str = "24) Turn in #TURNIN\"The Scrimshank Redemption\"# ... accept #ACCEPT\"Insect Part Analysis\"# " },
|
||||
[26] = { str = "25) Turn in #TURNIN\"Insect Part Analysis\"# ... accept #ACCEPT\"Insect Part Analysis\"# again." },
|
||||
[27] = { str = "26) Turn in #TURNIN\"Insect Part Analysis\"# ... accept #ACCEPT\"Rise of the Silithid\"# " },
|
||||
[28] = { str = "27) Fly to Orgrimmar.." },
|
||||
[29] = { str = "28) Make Orgrimmar your home." },
|
||||
[30] = { str = "29) Get the Box of Empty Vials out of your Bank." },
|
||||
[31] = { str = "30) Fly to Azshara..." },
|
||||
--[32] = { str = "." },
|
||||
--[33] = { str = "." },
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,579 @@
|
||||
--[[--------------------------------------------------
|
||||
003_Horde_50to60.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description: Guide Serie - 003 From Lvl 50 to Lvl 60
|
||||
1.04.1
|
||||
-- First Release
|
||||
Horde's Guide
|
||||
from level 50 to lever 60
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
Table_003_Horde_50to60 = {
|
||||
-----------50-50 Azshara
|
||||
--[501] = {
|
||||
[5049] = {
|
||||
title = "50-50 Azshara",
|
||||
n = "50-50 Azshara",
|
||||
pID = 414, nID = 502,
|
||||
itemCount = 23,
|
||||
items = {
|
||||
[1] = { str = "50-50 Azshara" },
|
||||
[2] = { str = "01) Accept: #ACCEPT\"Stealing Knowledge\"# " },
|
||||
[3] = { str = "02) Go do:" },
|
||||
[4] = { str = "03) #DOQUEST\"Stealing Knowledge\"# (Done at the Ruins of Eldarath, 36.54)", x = 36, y = 54, zone = "Azshara" },
|
||||
[5] = { str = "04) #DOQUEST\"Seeping Corruption\"# (Tide Pools are at: 1=47.61, 2=47.51, 3=48.48, 4=47.46)", x = 47, y = 61, zone = "Azshara" },
|
||||
[6] = { str = "05) Once their done, turn in #TURNIN\"Stealing Knowledge\"# ..accept ALL 4 delivery quests." },
|
||||
[7] = { str = "06) Turn in #TURNIN\"Delivery to Archmage Xylem\"# (there is a teleporter at 28.50,#VIDEOSee Video#) ... accept #ACCEPT\"Xylem's Payment to Jediga\"# ", x = 28, y = 50, zone = "Azshara" },
|
||||
[8] = { str = "07) Then fly to Thunder Bluff.." },
|
||||
[9] = { str = "08) Turn in #TURNIN\"Delivery to Magatha\"# (on Elder Rise) ... accept #ACCEPT\"Magatha's Payment to Jediga\"# " },
|
||||
[10] = { str = "09) Hearth to Orgrimmar." },
|
||||
[11] = { str = "10) Go turn in #TURNIN\"Rise of the Silithid\"# ... accept #ACCEPT\"March of the Silithid\"# (at 56.46)", x = 56, y = 46, zone = "Azshara" },
|
||||
[12] = { str = "11) Turn in #TURNIN\"Delivery to Jes'rimon\"# (at 55.34) ... accept #ACCEPT\"Jes'rimon's Payment to Jediga\"# and #ACCEPT\"Bone-Bladed Weapons\"# ", x = 55, y = 34, zone = "Azshara" },
|
||||
[13] = { str = "12) Then turn in #TURNIN\"Ripple Delivery\"# (at 59.36) (If you did the Hinterlands section)", x = 59, y = 36, zone = "Azshara" },
|
||||
[14] = { str = "13) Then I go get new #HUNTERhunter# spells/abilities ... #HUNTERaccept# #ACCEPT\"The Hunter's Charm\"# #HUNTER(if you're a Hunter).#" },
|
||||
[15] = { str = "14) Then go to The Undercity, head to the Apothecarium Quarter..." },
|
||||
[16] = { str = "15) Turn in #TURNIN\"Delivery to Andron Gant\"# ... accept #ACCEPT\"Andron's Payment to Jediga\"# " },
|
||||
[17] = { str = "16) Then turn in #TURNIN\"Seeping Corruption\"# and #TURNIN\"Return to Apothecary Zinge\"# ... accept #ACCEPT\"Vivian Lagrave\"# while you are there." },
|
||||
[18] = { str = "17) Then accept #ACCEPT\"Seeping Corruption\"# ... then turn it in (at the tauren right next to him) ..." },
|
||||
[19] = { str = "18) ... Then complete #TURNIN\"Seeping Corruption\"# for the final time." },
|
||||
[20] = { str = "19) Then accept #ACCEPT\"A Sample of Slime...\"# and #ACCEPT\"... and a Batch of Ooze\"# " },
|
||||
[21] = { str = "20) Then fly to Raventusj Village..." },
|
||||
--[22] = { str = "." },
|
||||
--[23] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------50-50 Hinterlands
|
||||
--[502] = {
|
||||
[5050] = {
|
||||
title = "50-50 Hinterlands",
|
||||
--n = "50-50 Hinterlands",
|
||||
--pID = 501, nID = 503,
|
||||
--itemCount = 20,
|
||||
items = {
|
||||
[1] = { str = "50-50 Hinterlands" },
|
||||
[2] = { str = "05) Accept: #ACCEPT\"Snapjaws, Mon!\"# #ACCEPT\"Gammerita, Mon!\"# (Elite) and #ACCEPT\"Lard Lost His Lunch\"# " },
|
||||
[3] = { str = "06) Go do in the following order:" },
|
||||
[4] = { str = "07) #DOQUEST\"Snapjaws, Mon!\"# along with #DOQUEST\"Gammerita, Mon!\"# and #DOQUEST\"Whiskey Slim's Lost Grog\"# " },
|
||||
[5] = { str = "08) #DOQUEST\"Cortello's Riddle\"# (at 80.46, little chest in the water, 14 slot bag along with 8800 XP)", x = 80, y = 46, zone = "The Hinterlands" },
|
||||
[6] = { str = "09) #DOQUEST\"Lard Lost His Lunch\"# (at 84.42)", x = 84, y = 42, zone = "The Hinterlands" },
|
||||
[7] = { str = "10) Then go turn in #TURNIN\"Snapjaws, Mon!\"# #TURNIN\"Gammerita, Mon!\"# and #TURNIN\"Lard Lost His Lunch\"# " },
|
||||
[8] = { str = "09) then go do #DOQUEST\"Sprinkle's Secret Ingredient\"# (at 41.60)", x = 41, y = 60, zone = "The Hinterlands" },
|
||||
[9] = { str = "10) then hearth to Orgrimmar." },
|
||||
[10] = { str = "11) Fly to Azshara." },
|
||||
[11] = { str = "12) turn in all 4 delivery quests." },
|
||||
[12] = { str = "13) Fly to XRs." },
|
||||
[13] = { str = "14) make XRs your home." },
|
||||
[14] = { str = "15) Fly to Ratchet." },
|
||||
[15] = { str = "16) pick up the \"#NPCStone Circle#\" at Liv Rizzlefix shop ... also accept #ACCEPT\"Volcanic Activity\"# while your there." },
|
||||
[16] = { str = "17) get on the boat to go to BB" },
|
||||
[17] = { str = "18) Fly to Stonard (swamp of sorrows).." },
|
||||
[18] = { str = "19) go into Blasted Lands..." },
|
||||
--[19] = { str = "." },
|
||||
--[20] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
------------50-51 Blasted Lands
|
||||
--[503] = {
|
||||
[5051] = {
|
||||
title = "50-51 Blasted Lands",
|
||||
--n = "50-51 Blasted Lands",
|
||||
--pID = 502, nID = 504,
|
||||
--itemCount = 27,
|
||||
items = {
|
||||
[1] = { str = "50-51 Blasted Lands" },
|
||||
[2] = { str = "01) I then find all the items to complete these 5 quests:" },
|
||||
[3] = { str = "02) #DOQUEST\"A Boar's Vitality\"# " },
|
||||
[4] = { str = "03) #DOQUEST\"Snickerfang Jowls\"# " },
|
||||
[5] = { str = "04) #DOQUEST\"The Basilisk's Bite\"# " },
|
||||
[6] = { str = "05) #DOQUEST\"The Decisive Striker\"# " },
|
||||
[7] = { str = "06) #DOQUEST\"Vulture's Vigor\"# " },
|
||||
[8] = { str = "07) you need to find these many items to complete these quests:" },
|
||||
[9] = { str = "08) #NPCVulture Gizzards# x14" },
|
||||
[10] = { str = "09) #NPCBasilisk Brain# x11" },
|
||||
[11] = { str = "10) #NPCBlasted Boar Lungs# x6" },
|
||||
[12] = { str = "11) #NPCScorpok Pincers# x6" },
|
||||
[13] = { str = "12) #NPCSnickerfang Jowls# x5" },
|
||||
[14] = { str = "13) While I'm in Blasted Lands, I discover most of all the areas for XP." },
|
||||
[15] = { str = "14) If an \"#NPCImperfect Draenethyst Fragment\" drops turn in for this quest: #TURNIN\"Everything Counts In Large Amounts\"# " },
|
||||
[16] = { str = "15) NOTE: I have NEVER found a \"#NPCFlawless Draenethyst Sphere#\" for the quest #TURNIN\"To Serve Kum'isha\"# ..good luck on that." },
|
||||
[17] = { str = "16) Turn in all quests." },
|
||||
[18] = { str = "17) I turn in #TURNIN\"The Decisive Striker\"# in last for Ground Scorpok Assay (+50 to agility)" },
|
||||
[19] = { str = "18) then hearth to XRs." },
|
||||
[20] = { str = "19) Fly to Tanaris (GET A MITHRIL CASING for a later quest in Un'Goro!!!)" },
|
||||
[21] = { str = "20) turn in #TURNIN\"Sprinkle's Secret Ingredient\"# ... accept #ACCEPT\"Delivery for Marin\"# " },
|
||||
[22] = { str = "21) turn in #TURNIN\"March of the Silithid\"# ... accept #ACCEPT\"Bungle in the Jungle\"# " },
|
||||
[23] = { str = "22) turn in #TURNIN\"Delivery for Marin\"# ...accept #ACCEPT\"Noggenfogger Elixir\"# then turn it in." },
|
||||
[24] = { str = "23) go turn in #TURNIN\"The Stone Circle\"# (at 52.46 in Tanaris)", x = 52, y = 46, zone = "Tanaris" },
|
||||
[25] = { str = "24) then go into Un'Goro Crater..." },
|
||||
--[26] = { str = "." },
|
||||
--[27] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------51-52 Un'Goro Crater
|
||||
--[504] = {
|
||||
[5152] = {
|
||||
title = "51-52 Un'Goro Crater",
|
||||
--n = "51-52 Un'Goro Crater",
|
||||
--pID = 503, nID = 505,
|
||||
--itemCount = 56,
|
||||
items = {
|
||||
[1] = { str = "51-52 Un'Goro Crater" },
|
||||
[2] = { str = "01) Go accept: #ACCEPT\"The Apes of Un'Goro\"# and #ACCEPT\"The Fare of Lar'korwi\"# (at 71.75)", x = 71, y = 75, zone = "Un'Goro Crater" },
|
||||
[3] = { str = "02) Go do #DOQUEST\"The Fare of Lar'korwi\"# (at 68.56)", x = 68, y = 56, zone = "Un'Goro Crater" },
|
||||
[4] = { str = "03) Then go start doing: #DOQUEST\"Super Sticky\"# (up north in the middle) until this item drops #NPCA Mangled Journal#" },
|
||||
[5] = { str = "04) Then go into Marshal's Refuge (43.10), accept ALL quests there: #ACCEPT\"Chasing A-Me 01\"# #ACCEPT\"Shizzle's Flyer\"# #ACCEPT\"Lost!\"# #ACCEPT\"Beware of Pterrordax\"# #ACCEPT\"Roll the Bones\"# #ACCEPT\"Alien Ecology\"# #ACCEPT\"Expedition Salvation\"# #ACCEPT\"Larion and Muigin\"# ", x = 43, y = 10, zone = "Un'Goro Crater" },
|
||||
[6] = { str = "05) Turn in #TURNIN\"Williden's Journal\"# " },
|
||||
[7] = { str = "06) Get FP there, then go do the Ungoro Grind :) ..." },
|
||||
[8] = { str = "07) NOTE: don't worry about the ungoro dirt mounds, you'll find enough soil from mob drops. Also I don't worry about the Bloodpetal Sprouts, as they are not turned in for any XP." },
|
||||
[9] = { str = "08) While questing, find 7 crystals of each color (red, blue, green, and yellow for the #DOQUEST\"Crystals of Power\"# quest)" },
|
||||
[10] = { str = "09) #DOQUEST\"Super Sticky\"# " },
|
||||
[11] = { str = "10) #DOQUEST\"The Apes of Un'Goro\"# along with #DOQUEST\"Chasing A-Me 01\"# (if you have a #NPCmithril casing# do the escort) (63.17)", x = 63, y = 17, zone = "Un'Goro Crater" },
|
||||
[12] = { str = "11) #DOQUEST\"Larion and Muigin\"# " },
|
||||
[13] = { str = "12) #DOQUEST\"Beware of Pterrordax\"# along with #DOQUEST\"Shizzle's Flyer\"# and.." },
|
||||
[14] = { str = "13) #DOQUEST\"Roll the Bones\"# " },
|
||||
[15] = { str = "14) #DOQUEST\"Expedition Salvation\"# (68.36 and 38.65)", x = 68, y = 36, zone = "Un'Goro Crater" },
|
||||
[16] = { str = "15) #DOQUEST\"... and a Batch of Ooze\"# (I make sure I get at least 30 ooze samples)" },
|
||||
[17] = { str = "16) Go turn in #TURNIN\"The Apes of Un'Goro\"# ... accept #ACCEPT\"The Mighty U'cha\"# " },
|
||||
[18] = { str = "17) Turn in #TURNIN\"The Fare of Lar'korwi\"# ... accept #ACCEPT\"The Scent of Lar'korwi\"# " },
|
||||
[19] = { str = "18) Then go do:" },
|
||||
[20] = { str = "19) #DOQUEST\"Bone-Bladed Weapons\"# along with #DOQUEST\"The Scent of Lar'korwi\"# " },
|
||||
[21] = { str = "20) #ACCEPT\"It's a Secret to Everybody\"# ... click on boat and then bag under water (at 63.68)", x = 63, y = 68, zone = "Un'Goro Crater" },
|
||||
[22] = { str = "21) Then turn in #TURNIN\"The Scent of Lar'korwi\"# ... accept #ACCEPT\"The Bait for Lar'korwi\"# (71.75)", x = 71, y = 75, zone = "Un'Goro Crater" },
|
||||
[23] = { str = "22) Then go do #DOQUEST\"Alien Ecology\"# along with #DOQUEST\"Bungle in the Jungle\"# (50.80)", x = 50, y = 80, zone = "Un'Goro Crater" },
|
||||
[24] = { str = "23) Go accept #ACCEPT\"Finding the Source\"# (at 30.50), then do it along with #DOQUEST\"Volcanic Activity\"# ", x = 30, y = 50, zone = "Un'Goro Crater" },
|
||||
[25] = { str = "24) The hotspot path for the quest #DOQUEST\"Finding the Source\"# starts at 51,42 and the hot spot is at 50,46 (#VIDEOSee Video on where to find the hotspot#)", x = 51, y = 42, zone = "Un'Goro Crater" },
|
||||
[26] = { str = "25) #DOQUEST\"Lost!\"# Make sure all quests are done before doing this (besides \"#NPCThe Mighty U'cha\"# and \"#NPCThe Bait for Lar'korwi\"# ), then..." },
|
||||
[27] = { str = "26) ...This leads back to Marshal's Refuge, Turn in ALL quests there, accept new ones (including all the Pylon quests in the cave)." },
|
||||
[28] = { str = "27) Then go do (in the following order):" },
|
||||
[29] = { str = "28) #DOQUEST\"The Northern Pylon\"# (at 56.13)", x = 56, y = 13, zone = "Un'Goro Crater" },
|
||||
[30] = { str = "29) #DOQUEST\"The Mighty U'cha\"# (cave at 63.13)", x = 63, y = 13, zone = "Un'Goro Crater" },
|
||||
[31] = { str = "30) #DOQUEST\"The Eastern Pylon\"# (at 77.50)", x = 77, y = 50, zone = "Un'Goro Crater" },
|
||||
[32] = { str = "31) #DOQUEST\"The Bait for Lar'korwi\"# (80.50). Then turn it in along with #TURNIN\"The Mighty U'cha\"# (71.75)", x = 71, y = 75, zone = "Un'Goro Crater" },
|
||||
[33] = { str = "32) Go west killing oozes along the way.." },
|
||||
[34] = { str = "33) Turn in #TURNIN\"Finding the Source\"# ... accept #ACCEPT\"The New Springs\"# (30.50)", x = 30, y = 50, zone = "Un'Goro Crater" },
|
||||
[35] = { str = "34) #DOQUEST\"The Western Pylon\"# (at 23.58)", x = 23, y = 58, zone = "Un'Goro Crater" },
|
||||
[36] = { str = "35) Go back to Marshal's Refuge killing oozes along the way.." },
|
||||
[37] = { str = "36) Turn in quests. make sure you complete #DOQUEST\"Making Sense of It\"# (just talk to the gnome in the cave)" },
|
||||
[38] = { str = "37) Fly to Tanaris." },
|
||||
[39] = { str = "38) Turn in #TURNIN\"Super Sticky\"# and #TURNIN\"Bungle in the Jungle\"# ... I SKIP \"#NPCPawn Captures Queen\"# " },
|
||||
[40] = { str = "39) Then fly to Thunder Bluff." },
|
||||
[41] = { str = "40) Go to Elder Rise." },
|
||||
[42] = { str = "41) Accept #ACCEPT\"Un'goro Soil\"# .. then turn it in ... accept #ACCEPT\"Morrowgrain Research\"# .. then turn that in..." },
|
||||
[43] = { str = "42) ...but SKIP the next part (the part that says bring 10 Morrowgrain)" },
|
||||
[44] = { str = "43) Go get new spells/abilities." },
|
||||
[45] = { str = "44) Hearth to XRs." },
|
||||
[46] = { str = "45) Then fly to Ratchet.." },
|
||||
[47] = { str = "46) Turn in #TURNIN\"Volcanic Activity\"# and #TURNIN\"Marvon's Workshop\"# - I SKIP \"#NPCZapper Fuel\"# " },
|
||||
[48] = { str = "47) Get on the boat to go to BB.." },
|
||||
[49] = { str = "48) Turn in #TURNIN\"Whiskey Slim's Lost Grog\"# " },
|
||||
[50] = { str = "49) Also turn in #TURNIN\"Rescue OOX-17/TN!\"# (if you did it)" },
|
||||
[51] = { str = "50) Fly to Kargath (Badlands).." },
|
||||
[52] = { str = "51) Turn in #TURNIN\"Vivian Lagrave\"# " },
|
||||
[53] = { str = "52) Accept: #ACCEPT\"Dreadmaul Rock\"# and #ACCEPT\"The Rise of the Machines\"# " },
|
||||
[54] = { str = "53) Then fly to Burning Steppes..." },
|
||||
--[55] = { str = "." },
|
||||
--[56] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------52-53 Burning Steppes
|
||||
--[505] = {
|
||||
[5253] = {
|
||||
title = "52-53 Burning Steppes",
|
||||
--n = "52-53 Burning Steppes",
|
||||
--pID = 504, nID = 506,
|
||||
--itemCount = 18,
|
||||
items = {
|
||||
[1] = { str = "52-53 Burning Steppes" },
|
||||
[2] = { str = "01) Accept: #ACCEPT\"Broodling Essence\"# and #ACCEPT\"Tablet of the Seven\"# " },
|
||||
[3] = { str = "02) Then go do:" },
|
||||
[4] = { str = "03) #DOQUEST\"Broodling Essence\"# (to the east) (also kill as many dragon whelps you see, their \"squishy\" mobs that die real fast)" },
|
||||
[5] = { str = "04) #DOQUEST\"Dreadmaul Rock\"# (79.45)... then #DOQUEST\"Krom'Grul\"# (Krom'Grul has 2 different spawn points, in either cave)", x = 79, y = 45, zone = "Burning Steppes" },
|
||||
[6] = { str = "05) #DOQUEST\"The Rise of the Machines\"# " },
|
||||
[7] = { str = "06) #DOQUEST\"Tablet of the Seven\"# (it's at 54.40)", x = 54, y = 40, zone = "Burning Steppes" },
|
||||
[8] = { str = "07) Go turn in #TURNIN\"Tablet of the Seven\"# and #TURNIN\"Broodling Essence\"# ... accept #ACCEPT\"Felnok Steelspring\"# " },
|
||||
[9] = { str = "08) Then fly to Kargath (Badlands)" },
|
||||
[10] = { str = "09) Turn in #TURNIN\"Krom'Grul\"# " },
|
||||
[11] = { str = "10) Turn in #TURNIN\"The Rise of the Machines\"# ... accept #ACCEPT\"The Rise of the Machines\"# part2" },
|
||||
[12] = { str = "11) Go turn in #TURNIN\"The Rise of the Machines\"# part2 (at 25.46 in Badlands)", x = 25, y = 46, zone = "Badlands" },
|
||||
[13] = { str = "12) Then hearth to XRs." },
|
||||
[14] = { str = "13) Then fly to Orgrimmar and make it your home." },
|
||||
[15] = { str = "14) Go turn in #TURNIN\"Bone-Bladed Weapons\"# (55.34)", x = 55, y = 34, zone = "Orgrimmar" },
|
||||
[16] = { str = "15) Fly Azshara..." },
|
||||
--[17] = { str = "." },
|
||||
--[18] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
--------------53-54 Azshara
|
||||
--[506] = {
|
||||
[5354] = {
|
||||
title = "53-54 Azshara",
|
||||
--n = "53-54 Azshara",
|
||||
--pID = 505, nID = 507,
|
||||
--itemCount = 28,
|
||||
items = {
|
||||
[1] = { str = "53-54 Azshara" },
|
||||
[2] = { str = "01) accept #ACCEPT\"Betrayed\"# " },
|
||||
[3] = { str = "02) go turn in #TURNIN\"The Hunter's Charm\"# (this is a hunter only quest, at 41.42) ... accept #ACCEPT\"Courser Antlers\"# " },
|
||||
[4] = { str = "03) go accept #ACCEPT\"Kim'jael Indeed!\"# (at 52.22 on top of the hill)", x = 52, y = 22, zone = "Azshara" },
|
||||
[5] = { str = "04) then go do:" },
|
||||
[6] = { str = "05) #DOQUEST\"Courser Antlers\"# " },
|
||||
[7] = { str = "06) #DOQUEST\"Betrayed\"# " },
|
||||
[8] = { str = "07) #DOQUEST\"Kim'jael Indeed!\"# " },
|
||||
[9] = { str = "08) NOTE: I grind away at bloodelfs for a while doing those 2 quests." },
|
||||
[10] = { str = "09) Once those 3 quests are done, go turn in #TURNIN\"Kim'jael Indeed!\"# ... accept #ACCEPT\"Kim'jael's \"Missing\" Equipment\"# " },
|
||||
[11] = { str = "10) turn in #TURNIN\"Courser Antlers\"# ... accept #ACCEPT\"Wavethrashing\"# " },
|
||||
[12] = { str = "11) then go do:" },
|
||||
[13] = { str = "12) #DOQUEST\"Kim'jael's \"Missing\" Equipment\"# " },
|
||||
[14] = { str = "13) #DOQUEST\"Wavethrashing\"# " },
|
||||
[15] = { str = "14) Once both are done, Hearth to Orgrimmar." },
|
||||
[16] = { str = "15) then Fly to Azshara.." },
|
||||
[17] = { str = "16) turn in #TURNIN\"Betrayed\"# ... accept #ACCEPT\"Betrayed\"# " },
|
||||
[18] = { str = "17) turn in #TURNIN\"Wavethrashing\"# ... i SKIP #NPC\"The Green Drake\"# " },
|
||||
[19] = { str = "18) turn in #TURNIN\"Kim'jael's \"Missing\" Equipment\"# " },
|
||||
[20] = { str = "19) At this point im usually about 3/4th the way to lvl 54, I grind my way to level 54 on BloodElfs." },
|
||||
[21] = { str = "20) I grind bloodelfs, cause their \"squishy\" mobs (mobs that have 30% fewer health/armor, than the average mob that level). I used to grind satyrs on previous speed runs, but I was able to cut off almost a whole hour with the blood elfs." },
|
||||
[22] = { str = "21) OPTIONAL: Instead of the grinding you could go do BRD instance instead." },
|
||||
[23] = { str = "22) Once i hit 54 (or a few bars past it), i then hearth to Orgrimmar." },
|
||||
[24] = { str = "23) I then go turn in #TURNIN\"Bone-Bladed Weapons\"# and #TURNIN\"Betrayed\"# " },
|
||||
[25] = { str = "24) then fly to Splintertree Post (Ashenvale).." },
|
||||
[26] = { str = "25) then go into Felwood..." },
|
||||
--[27] = { str = "." },
|
||||
--[28] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------54-54 Felwood
|
||||
--[507] = {
|
||||
[5454] = {
|
||||
title = "54-54 Felwood",
|
||||
--n = "54-54 Felwood",
|
||||
--pID = 506, nID = 508,
|
||||
--itemCount = 16,
|
||||
items = {
|
||||
[1] = { str = "54-54 Felwood" },
|
||||
[2] = { str = "01) Accept #ACCEPT\"Timbermaw Ally\"# (at 50.85) (??? TBC Quest?) Just talk to the NPC there he will give it to you.", x = 50, y = 85, zone = "Felwood" },
|
||||
[3] = { str = "02) Go accept #ACCEPT\"Forces of Jaedenar\"# and #ACCEPT\"Verifying the Corruption\"# (at the Emerald Sanctuary 51.82).", x = 51, y = 82, zone = "Felwood" },
|
||||
[4] = { str = "03) Go accept #ACCEPT\"Cleansing Felwood\"# (at 46.84)", x = 46, y = 84, zone = "Felwood" },
|
||||
[5] = { str = "04) I start killing oozes, I make sure I kill about 30/40 oozes here total for the quest #DOQUEST\"A Sample of Slime...\"# (40.68)", x = 40, y = 68, zone = "Felwood" },
|
||||
[6] = { str = "05) Then go complete #DOQUEST\"Forces of Jaedenar\"# (38.60)", x = 38, y = 60, zone = "Felwood" },
|
||||
[7] = { str = "06) Then go to BloodVenom Post. (34.52)", x = 34, y = 52, zone = "Felwood" },
|
||||
[8] = { str = "07) Accept: #ACCEPT\"A Husband's Last Battle\"# and #ACCEPT\"Wild Guardians\"# " },
|
||||
[9] = { str = "08) Get FP there." },
|
||||
[10] = { str = "09) Then go do in the following order:" },
|
||||
[11] = { str = "10) #DOQUEST\"Verifying the Corruption\"# (Elite) (41.41)", x = 41, y = 41, zone = "Felwood" },
|
||||
[12] = { str = "11) #DOQUEST\"Cleansing Felwood\"# (54.16)", x = 54, y = 16, zone = "Felwood" },
|
||||
[13] = { str = "12) Go accept #ACCEPT\"Deadwood of the North\"# (at 64.8) but DON'T do it now.", x = 64, y = 8, zone = "Felwood" },
|
||||
[14] = { str = "13) Grind your way through the cave to go to Winterspring..." },
|
||||
--[15] = { str = "." },
|
||||
--[16] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------54-55 Winterspring
|
||||
--[508] = {
|
||||
[5455] = {
|
||||
title = "54-55 Winterspring",
|
||||
--n = "54-55 Winterspring",
|
||||
--pID = 507, nID = 509,
|
||||
--itemCount = 31,
|
||||
items = {
|
||||
[1] = { str = "54-55 Winterspring" },
|
||||
[2] = { str = "01) Exit the cave and accept #ACCEPT\"Winterfall Activity\"# right outside of it." },
|
||||
[3] = { str = "02) Go to Donova Snowden (at 31.45)", x = 31, y = 45, zone = "Winterspring" },
|
||||
[4] = { str = "03) Turn in #TURNIN\"The New Springs\"# and #TURNIN\"It's a Secret to Everybody\"# and accept #ACCEPT\"Strange Sources\"#" },
|
||||
[5] = { str = "04) NOTE: I SKIP \"#NPCThe Videre Elixir\"# and the rest of that chain." },
|
||||
[6] = { str = "05) Go to Everlook.. (61.38)", x = 61, y = 38, zone = "Winterspring" },
|
||||
[7] = { str = "06) Accept: #ACCEPT\"Are We There, Yeti?\"# #ACCEPT\"The Everlook Report\"# #ACCEPT\"Duke Nicholas Zverenhoff\"# #ACCEPT\"Sister Pamela\"# #ACCEPT\"Trouble in Winterspring\"#and #ACCEPT\"Ursius of the Shardtooth\"#" },
|
||||
[8] = { str = "07) Turn in #TURNIN\"Felnok Steelspring\"# ... accept #ACCEPT\"Chillwind Horns\"# " },
|
||||
[9] = { str = "08) Make Everlook your home." },
|
||||
[10] = { str = "09) Go do #DOQUEST\"Ursius of the Shardtooth\"# (just keep grinding mobs on the hill north of everlook till #NPCUrsius# shows up)" },
|
||||
[11] = { str = "10) Then turn in #TURNIN\"Ursius of the Shardtooth\"# ... accept #ACCEPT\"Brumeran of the Chillwind\"# " },
|
||||
[12] = { str = "11) Go do #DOQUEST\"Brumeran of the Chillwind\"# (he patrols around 60.60, see map for complete patrol path)", x = 60, y = 60, zone = "Winterspring" },
|
||||
[13] = { str = "12) Then go Discover Darkwhisper Gorge (at 59.73) for the quest #DOQUEST\"Strange Sources\"# ", x = 59, y = 73, zone = "Winterspring" },
|
||||
[14] = { str = "13) Then hearth back to Everlook." },
|
||||
[15] = { str = "14) Turn in #TURNIN\"Brumeran of the Chillwind\"# ... SKIP \"#NPCShy-Rotam\"# " },
|
||||
[16] = { str = "15) Then go do the following quests (steps 17-20, in any order) to the west and some to the north. When you're at west remember to turn-in #TURNIN\"Trouble in Winterspring\"# and accept #ACCEPT\"Threat of the Winterfall\"#:" },
|
||||
[17] = { str = "16) #DOQUEST\"Are We There, Yeti?\"# " },
|
||||
[18] = { str = "17) #DOQUEST\"Threat of the Winterfall\"# you should find #NPCEmpty Firewater Flask# which starts #ACCEPT\"Winterfall Firewater\"# while doing this quest. When the #NPC\"Winterfall Ritual Totem\"# item drops, save it and put it in your bank you will need it later." },
|
||||
[19] = { str = "18) #DOQUEST\"Wild Guardians\"# (the Ragged Owls are west of Everlook, and the Raging Owls are just north of Everlook)" },
|
||||
[20] = { str = "19) #DOQUEST\"Chillwind Horns\"# (you can find a larger concentration of chimaera around 66.29)", x = 66, y = 29, zone = "Winterspring" },
|
||||
[21] = { str = "20) Once #DOQUEST\"Threat of the Winterfall\"# and #DOQUEST\"Winterfall Firewater\"# is completed go turn them in along with #TURNIN\"Strange Sources\"# (at 31.45)... accept #ACCEPT\"Falling to Corruption\"# ", x = 31, y = 45, zone = "Winterspring" },
|
||||
[22] = { str = "21) Once the rest of those quests are complete, go back to Everlook and turn in #TURNIN\"Are We There, Yeti?\"# ...accept #ACCEPT\"Are We There, Yeti?\"# part2. Turn in #TURNIN\"Chillwind Horns\"# ... i SKIP \"#NPCReturn to Tinkee\"# " },
|
||||
[23] = { str = "22) Then go do:" },
|
||||
[24] = { str = "23) #DOQUEST\"Winterfall Activity\"# (67.37)", x = 67, y = 37, zone = "Winterspring" },
|
||||
[25] = { str = "24) #DOQUEST\"Are We There, Yeti?\"# (find 2 Pristine Yeti Horns) (66.43)", x = 66, y = 43, zone = "Winterspring" },
|
||||
[26] = { str = "25) Then hearth to Everlook and accept #ACCEPT\"A Strange One \"#" },
|
||||
[27] = { str = "26) Go turn in #TURNIN\"Are We There, Yeti?\"# ... accept #ACCEPT\"Are We There, Yeti?\"# part3" },
|
||||
[28] = { str = "27) go scare Legacki with the mechanical yeti for the quest #DOQUEST\"Are We There, Yeti?\"# part3" },
|
||||
[29] = { str = "28) Then fly to Felwood..." },
|
||||
--[30] = { str = "." },
|
||||
--[31] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------55-55 Felwood
|
||||
--[509] = {
|
||||
[5554] = {
|
||||
title = "55-55 Felwood",
|
||||
--n = "55-55 Felwood",
|
||||
--pID = 508, nID = 510,
|
||||
--itemCount = 31,
|
||||
items = {
|
||||
[1] = { str = "55-55 Felwood" },
|
||||
[2] = { str = "01) Turn in #TURNIN\"Wild Guardians\"# ... Accept #ACCEPT\"Wild Guardians\"# part2 and #ACCEPT\"Well of Corruption\"#" },
|
||||
[3] = { str = "02) Go turn in #TURNIN\"Cleansing Felwood\"# ... then get a cenarion beacon for the quest #DOQUEST\"Salve Via Hunting\"# (just talk to the NPC to get it) (46.83)", x = 46, y = 83, zone = "Felwood" },
|
||||
[4] = { str = "03) Go turn in #TURNIN\"Verifying the Corruption\"# and #TURNIN\"Forces of Jaedenar\"# ... accept #ACCEPT\"Collection of the Corrupt Water\"# (51.82)", x = 51, y = 82, zone = "Felwood" },
|
||||
[5] = { str = "04) Go do in the following order:" },
|
||||
[6] = { str = "05) Go do #DOQUEST\"A Husband's Last Battle\"# along with #DOQUEST\"Timbermaw Ally\"# (48.94)", x = 48, y = 94, zone = "Felwood" },
|
||||
[7] = { str = "06) Once they are done go turn in #TURNIN\"Timbermaw Ally\"# (at 50.85) ... accept #ACCEPT\"Speak to Nafien\"#", x = 50, y = 85, zone = "Winterspring" },
|
||||
[8] = { str = "07) Go do #DOQUEST\"Well of Corruption\"# (at 32.66). Also make sure you collect 6 #NPCCorrupted Soul Shards# for the quest #DOQUEST\"Salve Via Hunting\"# ", x = 32, y = 66, zone = "Felwood" },
|
||||
[9] = { str = "08) #DOQUEST\"Collection of the Corrupt Water\"# (35.59)", x = 35, y = 59, zone = "Felwood" },
|
||||
[10] = { str = "09) Then go to Bloodvenom Post" },
|
||||
[11] = { str = "10) Turn in #TURNIN\"A Husband's Last Battle\"# and #TURNIN\"Well of Corruption\"# ... accept #ACCEPT\"Corrupted Sabers\"# " },
|
||||
[12] = { str = "11) Go turn in #TURNIN\"Salve Via Hunting\"# (the 6 Corrupted Soul Shards) (46.83)", x = 46, y = 83, zone = "Felwood" },
|
||||
[13] = { str = "12) Go turn in #TURNIN\"Collection of the Corrupt Water\"# ... I SKIP \"#NPCSeeking Spiritual Aid\"# (51.82) ", x = 51, y = 82, zone = "Felwood" },
|
||||
[14] = { str = "13) Go do #DOQUEST\"Corrupted Sabers\"# (32.66) then go turn it in. (NOTE: when you turn it in, you have to talk to the cat first once you get to the NPC)", x = 32, y = 66, zone = "Felwood" },
|
||||
[15] = { str = "14) Then go up north and do:" },
|
||||
[16] = { str = "15) #DOQUEST\"Deadwood of the North\"# (61.9) When the \"Deadwood Ritual Totem\" item drops, save it and put it in your bank when you get a chance, you will need it later.", x = 61, y = 9, zone = "Felwood" },
|
||||
[17] = { str = "16) #DOQUEST\"Falling to Corruption\"# (the cauldron at 60.5) (hint: I have my pet distract the mobs, while doing this quest) ... then accept #ACCEPT\"Mystery Goo\"# ", x = 60, y = 5, zone = "Felwood" },
|
||||
[18] = { str = "17) Go turn in #TURNIN\"Deadwood of the North\"# (64.8) ... accept #ACCEPT\"Speak to Salfa\"# . And turn in #TURNIN\"Speak to Nafien\"# ", x = 64, y = 8, zone = "Felwood" },
|
||||
[19] = { str = "18) Then run through the cave (you should be Unfriendly with Timbermaw, so they shouldn't attack you).." },
|
||||
[20] = { str = "19) Turn in #TURNIN\"Winterfall Activity\"# and #TURNIN\"Speak to Salfa\"# " },
|
||||
[21] = { str = "20) Then go turn in #TURNIN\"Mystery Goo\"# (at 31.45 in Winterspring) ... SKIP \"#NPCToxic Horrors\"# ", x = 31, y = 45, zone = "Winterspring" },
|
||||
[22] = { str = "21) Then hearth to Everlook." },
|
||||
[23] = { str = "22) Fly to Orgrimmar and make it your home." },
|
||||
[24] = { str = "23) If you happen to see #NPCWarcaller Gorlach#, accept #ACCEPT\"A Call To Arms: The Plaguelands!\"# " },
|
||||
[25] = { str = "24) Fly to Thunder Bluff, then directly to Camp Mojache, Ferelas" },
|
||||
[26] = { str = "25) Turn in #TURNIN\"The Strength of Corruption\"# " },
|
||||
[27] = { str = "26) Then fly to Tanaris..." },
|
||||
[28] = { str = "27) Go scare #NPCSprinkle# with the mechanical yeti for the quest #DOQUEST\"Are We There, Yeti?\"# part3" },
|
||||
[29] = { str = "28) Then fly to Silithus" },
|
||||
--[30] = { str = "." },
|
||||
--[31] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
------------55-55 Silithus
|
||||
--[510] = {
|
||||
[5555] = {
|
||||
title = "55-55 Silithus",
|
||||
--n = "55-55 Silithus",
|
||||
--pID = 509, nID = 511,
|
||||
--itemCount = 25,
|
||||
items = {
|
||||
[1] = { str = "55-55 Silithus" },
|
||||
[2] = { str = "01) accept: #ACCEPT\"The Twilight Mystery\"# #ACCEPT\"Securing the Supply Lines\"# and #ACCEPT\"Deadly Desert Venom\"# " },
|
||||
[3] = { str = "02) go do: #DOQUEST\"Securing the Supply Lines\"# and #DOQUEST\"Deadly Desert Venom\"# (do these 2 quests northeast of Cenarion Hold)" },
|
||||
[4] = { str = "03) then turn them in and accept new quests." },
|
||||
[5] = { str = "04) then go do:" },
|
||||
[6] = { str = "05) #DOQUEST\"Stepping Up Security\"# " },
|
||||
[7] = { str = "06) #DOQUEST\"The Twilight Mystery\"# " },
|
||||
[8] = { str = "07) #DOQUEST\"Noggle's Last Hope\"# " },
|
||||
[9] = { str = "08) Once all three of those are done, go turn them in accept new ones." },
|
||||
[10] = { str = "09) go do:" },
|
||||
[11] = { str = "10) #DOQUEST\"Noggle's Lost Satchel\"# (it's at around 40.90)", x = 40, y = 90, zone = "Silithus" },
|
||||
[12] = { str = "11) NOTE: I skip #NPC\"Wanted - Deathclasp, Terror of the Sands\"# (Elite) cause it's too hard to solo at 55, but do it if you can find a group." },
|
||||
[13] = { str = "12) #DOQUEST\"The Deserter\"# (he's in the cave at 67.71) ... i SKIP #NPC\"The Twilight Lexicon\"# ", x = 67, y = 71, zone = "Silithus" },
|
||||
[14] = { str = "13) then i die on purpose, so i end up at Cenarion Hold." },
|
||||
[15] = { str = "14) turn in #TURNIN\"Noggle's Lost Satchel\"# " },
|
||||
[16] = { str = "15) then go to Marshal's Refuge in Un'Goro Crater." },
|
||||
[17] = { str = "16) go scare Quixxil with the mechanical yeti for the quest #DOQUEST\"Are We There, Yeti?\"# part3" },
|
||||
[18] = { str = "17) then hearth to Orgrimmar." },
|
||||
[19] = { str = "18) go to the Under City." },
|
||||
[20] = { str = "19) go complete #TURNIN\"A Sample of Slime...\"# and #TURNIN\"... and a Batch of Ooze\"# " },
|
||||
[21] = { str = "20) go accept #ACCEPT\"A Call To Arms: The Plaguelands!\"# " },
|
||||
[22] = { str = "21) make Under City your home." },
|
||||
[23] = { str = "22) go to the Bulwark... (which is a small village east of Tirisfal Glades)" },
|
||||
--[24] = { str = "." },
|
||||
--[25] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------55-56 Western Plaguelands
|
||||
--[511] = {
|
||||
[5556] = {
|
||||
title = "55-56 Western Plaguelands",
|
||||
--n = "55-56 Western Plaguelands",
|
||||
--pID = 510, nID = 512,
|
||||
--itemCount = 24,
|
||||
items = {
|
||||
[1] = { str = "55-56 Western Plaguelands" },
|
||||
[2] = { str = "01) Turn in #TURNIN\"A Call To Arms: The Plaguelands!\"# accept #ACCEPT\"Scarlet Diversions\"# ..." },
|
||||
[3] = { str = "02) ... (make sure you get a Flame in a Bottle first, before doing this quest, it's in the box)" },
|
||||
[4] = { str = "03) Turn in #TURNIN\"The Everlook Report\"# " },
|
||||
[5] = { str = "04) Accept and complete #DOQUEST\"Argent Dawn Commission\"# " },
|
||||
[6] = { str = "05) Accept #ACCEPT\"A Plague Upon Thee\"# " },
|
||||
[7] = { str = "06) Go into the Western Plaguelands (Felstone field at 37.56) and...", x = 37, y = 56, zone = "Western Plaguelands" },
|
||||
[8] = { str = "07) Accept #ACCEPT\"Better Late Than Never\"# (the lady in the house)" },
|
||||
[9] = { str = "08) Then go to the barn next door, and..." },
|
||||
[10] = { str = "09) Complete #DOQUEST\"Better Late Than Never\"# .. click on the chest again to accept #ACCEPT\"Better Late Than Never\"# again." },
|
||||
[11] = { str = "10) Go do #DOQUEST\"Scarlet Diversions\"# (burn the tent down, and plant the banner, 40.51) ", x = 40, y = 51, zone = "Western Plaguelands" },
|
||||
[12] = { str = "11) Go back to the Bulwark.. (#VIDEONOTE:# Make sure you save all #NPCBone Fragments# you find, you will need 30 of them for a later #NPCquest#)" },
|
||||
[13] = { str = "12) Turn in #TURNIN\"Scarlet Diversions\"# ... accept #ACCEPT\"All Along the Watchtowers\"# (Elite) and #ACCEPT\"The Scourge Cauldrons\"# " },
|
||||
[14] = { str = "13) Turn in #TURNIN\"The Scourge Cauldrons\"# ... accept #ACCEPT\"Target: Felstone Field\"# " },
|
||||
[15] = { str = "14) Go complete the whole Cauldron quest chain, you need to kill the Cauldron Lord at each targeted field (listed below), grab their key and use it at the big cauldron in the middle of the field. (Just keep going back and forth from The Bulwark to the next field completing each one, turning them in and then accepting and doing the next one)..." },
|
||||
[16] = { str = "15) #DOQUEST\"Target: Felstone Field\"# (37.56)", x = 37, y = 56, zone = "Western Plaguelands" },
|
||||
[17] = { str = "16) #DOQUEST\"Target: Dalson's Tears\"# (46.52). #VIDEONOTE:# While you are here, there is a small quest chain here that starts with a little Diary in the barn (47.50) called #TURNIN\"Mrs. Dalson's Diary\"# , just click that to complete the quest. Now, after you did that, then you need to kill a #NPCWandering Skeleton# to get a key that opens the outhouse behind the barn. After you get the key and open the outhouse, it will release a #NPCFarmer Dalson#, a level 56 undead. Kill him, grab that key, and then run in the house (that is right next to the barn) and go up the stairs, there you will find a cabinet, open the cabinet with that key (For the quest #DOQUEST\"Locked Away\"# ) and finally it's over. Easy 10200 XP! Or was it?", x = 46, y = 52, zone = "Western Plaguelands" },
|
||||
[18] = { str = "17) #DOQUEST\"Target: Writhing Haunt\"# (53.65) (while you're there accept #ACCEPT\"The Wildlife Suffers Too\"# (at 53.64, the almost dead tauren in the hut)", x = 53, y = 65, zone = "Western Plaguelands" },
|
||||
[19] = { str = "18) #DOQUEST\"Target: Gahrron's Withering\"# (62.59)", x = 62, y = 59, zone = "Western Plaguelands" },
|
||||
[20] = { str = "19) Just keep going back and forth completing each one." },
|
||||
[21] = { str = "20) Then go accept and complete #DOQUEST\"Mission Accomplished!\"# " },
|
||||
[22] = { str = "21) Then head into Eastern Plaguelands..." },
|
||||
--[23] = { str = "." },
|
||||
--[24] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------56-57 Eastern Plaguelands
|
||||
--[512] = {
|
||||
[5657] = {
|
||||
title = "56-57 Eastern Plaguelands",
|
||||
--n = "56-57 Eastern Plaguelands",
|
||||
--pID = 511, nID = 513,
|
||||
--itemCount = 38,
|
||||
items = {
|
||||
[1] = { str = "56-57 Eastern Plaguelands" },
|
||||
[2] = { str = "01) Go accept: #ACCEPT\"Demon Dogs\"# #ACCEPT\"Blood Tinged Skies\"# and #ACCEPT\"Carrion Grubbage\"# (at 7.43)", x = 7, y = 43, zone = "Eastern Plaguelands" },
|
||||
[3] = { str = "02) Grind your way to (26.74) and accept: #ACCEPT\"To Kill With Purpose\"# and #ACCEPT\"Un-Life's Little Annoyances\"# . NOTE: I SKIP \"#NPCThe Ranger Lord's Behest\"# ", x = 26, y = 74, zone = "Eastern Plaguelands" },
|
||||
[4] = { str = "03) Go down in the crypt at The Undercroft (27.85) and accept #ACCEPT\"Hameya's Plea\"# (the scroll on the ground). (??? TBC Quest?)", x = 27, y = 85, zone = "Eastern Plaguelands" },
|
||||
[5] = { str = "04) Grind your way to Darrowshire (36.90) while doing these quests:", x = 36, y = 90, zone = "Eastern Plaguelands" },
|
||||
[6] = { str = "05) #DOQUEST\"Demon Dogs\"# " },
|
||||
[7] = { str = "06) #DOQUEST\"Blood Tinged Skies\"# " },
|
||||
[8] = { str = "07) #DOQUEST\"Carrion Grubbage\"# " },
|
||||
[9] = { str = "08) Then turn in #TURNIN\"Sister Pamela\"# ... accept and do #ACCEPT\"Pamela's Doll\"# (there's 3 parts of the doll)" },
|
||||
[10] = { str = "09) Turn in #TURNIN\"Pamela's Doll\"# ... accept #ACCEPT\"Auntie Marlene\"# and #ACCEPT\"Uncle Carlin\"# " },
|
||||
[11] = { str = "10) Then go complete #DOQUEST\"Blood Tinged Skies\"# " },
|
||||
[12] = { str = "11) Then make sure you kill 20 Plaguehound Runts for the quest #DOQUEST\"Demon Dogs\"# " },
|
||||
[13] = { str = "12) Then go to Light's Hope Chapel (at 81.60)", x = 81, y = 60, zone = "Eastern Plaguelands" },
|
||||
[14] = { str = "13) Accept: #ACCEPT\"Zaeldarr the Outcast\"# and #ACCEPT\"The Restless Souls\"# " },
|
||||
[15] = { str = "14) Turn in #TURNIN\"Duke Nicholas Zverenhoff\"# and #TURNIN\"Uncle Carlin\"# ... accept #ACCEPT\"Defenders of Darrowshire\"# " },
|
||||
[16] = { str = "15) Get FP there. Then go do:" },
|
||||
[17] = { str = "16) #DOQUEST\"To Kill With Purpose\"# " },
|
||||
[18] = { str = "17) #DOQUEST\"Defenders of Darrowshire\"# " },
|
||||
[19] = { str = "18) #DOQUEST\"Hameya's Plea\"# (72.14) (??? TBC Quest?)", x = 72, y = 14, zone = "Eastern Plaguelands" },
|
||||
[20] = { str = "19) #DOQUEST\"Demon Dogs\"# " },
|
||||
[21] = { str = "20) #DOQUEST\"Carrion Grubbage\"# " },
|
||||
[22] = { str = "21) #DOQUEST\"Un-Life's Little Annoyances\"# " },
|
||||
[23] = { str = "22) #DOQUEST\"A Plague Upon Thee\"# (done at Plaguewood up north)" },
|
||||
[24] = { str = "23) #DOQUEST\"Augustus' Receipt Book\"# (get this quest in the hut at 13.34, the book is upstairs in the inn at 15.33)", x = 15, y = 33, zone = "Eastern Plaguelands" },
|
||||
[25] = { str = "24) #DOQUEST\"The Restless Souls\"# (#NPCEgan# is in the hut at 13.34) (The next part refers to Stratholme, which I skip)", x = 13, y = 34, zone = "Eastern Plaguelands" },
|
||||
[26] = { str = "25) Then go turn in: #TURNIN\"Augustus' Receipt Book\"# " },
|
||||
[27] = { str = "26) Grind your way through the cave (15.29) (watch out it is not easy) ", x = 15, y = 29, zone = "Eastern Plaguelands" },
|
||||
[28] = { str = "#VIDEONOTE:# If the cave is too hard for you, another easy alternative is to take the Tower Gryphon ride from the Plaguewood Tower (22.32) to the Crown Guard tower (39.75), as long as the horde has control over the towers that is. Then turn in #TURNIN\"Demon Dogs\"# #TURNIN\"Blood Tinged Skies\"# and #TURNIN\"Carrion Grubbage\"# accept #ACCEPT\"Redemption\"# ... Just talk to the guy to complete it ... I SKIP \"#NPCOf Forgotten Memories\"# (you can try it if you find a group)", x = 22, y = 32, zone = "Eastern Plaguelands" },
|
||||
[29] = { str = "27) Then go turn in: #TURNIN\"To Kill With Purpose\"# and #TURNIN\"Un-Life's Little Annoyances\"# (at 26.74)", x = 26, y = 74, zone = "Eastern Plaguelands" },
|
||||
[30] = { str = "28) Then go do #DOQUEST\"Zaeldarr the Outcast\"# (27.85)", x = 27, y = 85, zone = "Eastern Plaguelands" },
|
||||
[31] = { str = "29) Then go to the dirt mound behind the crypt and turn in #TURNIN\"Hameya's Plea\"# (??? TBC Quest?)" },
|
||||
[32] = { str = "30) Then turn in: #TURNIN\"Zaeldarr the Outcast\"# and #TURNIN\"Defenders of Darrowshire\"# at Light's Hope Chapel" },
|
||||
[33] = { str = "31) Hearth to Under City.." },
|
||||
[34] = { str = "32) Turn in #TURNIN\"Better Late Than Never\"# ... accept #ACCEPT\"The Jeremiah Blues\"# " },
|
||||
[35] = { str = "33) Turn in #TURNIN\"The Jeremiah Blues\"# (just right underneath the bank) ... accept #ACCEPT\"Good Luck Charm\"# " },
|
||||
[36] = { str = "34) Go back to the Bulwark..." },
|
||||
--[37] = { str = "." },
|
||||
--[38] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
-----------57-58 Western Plaguelands
|
||||
--[513] = {
|
||||
[5758] = {
|
||||
title = "57-58 Western Plaguelands",
|
||||
--n = "57-58 Western Plaguelands",
|
||||
--pID = 512, nID = 514,
|
||||
--itemCount = 37,
|
||||
items = {
|
||||
[1] = { str = "57-58 Western Plaguelands" },
|
||||
[2] = { str = "01) Turn in #TURNIN\"A Plague Upon Thee\"# ... accept #ACCEPT\"A Plague Upon Thee\"# part2." },
|
||||
[3] = { str = "02) Go turn in #TURNIN\"Good Luck Charm\"# ...accept #ACCEPT\"Two Halves Become One\"# (the lady in the house at 37.56)", x = 37, y = 56, zone = "Western Plaguelands" },
|
||||
[4] = { str = "03) Do #DOQUEST\"Two Halves Become One\"# (#NPCJabbering ghouls# out in Felstone Field drop the item you need, once you get the item right-click it in your inventory), then go back to the lady in the house to turn it in." },
|
||||
[5] = { str = "04) Then do #DOQUEST\"A Plague Upon Thee\"# part2 ... accept #ACCEPT\"A Plague Upon Thee\"# part3 (this is all done at 48.31) " },
|
||||
[6] = { str = "05) Then go accept #ACCEPT\"Unfinished Business\"# part1 (at 51.28), then do it. (the mobs for this quest are at 50.42 and 53.44)", x = 51, y = 28, zone = "Western Plaguelands" },
|
||||
[7] = { str = "06) Turn in #TURNIN\"Unfinished Business\"# part1 (back at 51.28) ... accept #ACCEPT\"Unfinished Business\"# part2, then go do it. The 2 mobs for this quest are at (57.37 and 54.24).", x = 55, y = 30, zone = "Western Plaguelands" },
|
||||
[8] = { str = "07) Turn in #TURNIN\"Unfinished Business\"# part2 (back at 51.28) ... accept #ACCEPT\"Unfinished Business\"# part3, then go do it. Need to go up in the tower (at 45.19) in a certain spot, watch out for Elites.", x = 51, y = 28, zone = "Western Plaguelands" },
|
||||
[9] = { str = "08) Then turn in #TURNIN\"Unfinished Business\"# part3" },
|
||||
[10] = { str = "09) Then go complete and turn in #TURNIN\"The Wildlife Suffers Too\"# ... accept #ACCEPT\"The Wildlife Suffers Too\"# part2 (53.64)", x = 53, y = 64, zone = "Western Plaguelands" },
|
||||
[11] = { str = "10) Do #DOQUEST\"The Wildlife Suffers Too\"# part2, then turn it in ... accept #ACCEPT\"Glyphed Oaken Branch\"# " },
|
||||
[12] = { str = "11) Go turn in #TURNIN\"Auntie Marlene\"# (in the house at 49.78) ...accept #ACCEPT\"A Strange Historian\"# ", x = 49, y = 78, zone = "Western Plaguelands" },
|
||||
[13] = { str = "12) Go get the ring for #DOQUEST\"A Strange Historian\"# (the ring is out in the graveyard)" },
|
||||
[14] = { str = "13) Go into Andorhal.." },
|
||||
[15] = { str = "14) Do #DOQUEST\"All Along the Watchtowers\"# while working your way to the inn (at 39.66)", x = 39, y = 66, zone = "Western Plaguelands" },
|
||||
[16] = { str = "15) Turn in #TURNIN\"A Strange Historian\"# (at #NPCChromie# up stairs in the inn at 39.68) ... accept #ACCEPT\"The Annals of Darrowshire\"# and #ACCEPT\"A Matter of Time\"# ", x = 39, y = 68, zone = "Western Plaguelands" },
|
||||
[17] = { str = "16) Then go do (while grinding away at mobs):" },
|
||||
[18] = { str = "17) #DOQUEST\"All Along the Watchtowers\"# (Elite) " },
|
||||
[19] = { str = "18) #DOQUEST\"A Matter of Time\"# (47.62)", x = 47, y = 62, zone = "Western Plaguelands" },
|
||||
[20] = { str = "19) #DOQUEST\"The Annals of Darrowshire\"# the book for this is in the building at (42.67), the actual Annals of Darrowshire book looks different from the others, it has a lighter tint on the top portion of the pages in the book, unlike the rest which has a darker tint on the top portion of the pages.", x = 42, y = 67, zone = "Western Plaguelands" },
|
||||
[21] = { str = "20) Go turn in #TURNIN\"A Matter of Time\"# and #TURNIN\"The Annals of Darrowshire\"# ... accept #ACCEPT\"Counting Out Time\"# and #ACCEPT\"Brother Carlin\"# " },
|
||||
[22] = { str = "21) Go do #DOQUEST\"Counting Out Time\"# then turn it in. (it's repeatable but you only get XP once from it)" },
|
||||
[23] = { str = "22) I then keep grinding away at mobs in Andorhal till i'm Friendly with the Argent Dawn, so im able to buy Enriched Manna Biscuits (which replenish mana faster from drinking). As soon as I hit friendly with AD, I then go back to the Bulwark.." },
|
||||
[24] = { str = "23) Turn in #TURNIN\"A Plague Upon Thee\"# part3" },
|
||||
[25] = { str = "24) Turn in #TURNIN\"All Along the Watchtowers\"# ... accept #ACCEPT\"Scholomance\"# " },
|
||||
[26] = { str = "25) Turn in #TURNIN\"Scholomance\"# at the undead guy right next to him ... accept #ACCEPT\"Skeletal Fragments\"# " },
|
||||
[27] = { str = "26) Stock up on #NPCEnriched Manna Biscuits# (which replenishes mana faster from drinking)" },
|
||||
[28] = { str = "27) I then go back to Andorhal, and grind all the way to level 58 while doing #DOQUEST\"Skeletal Fragments\"# quest." },
|
||||
[29] = { str = "28) As soon as I hit 58 and #DOQUEST\"Skeletal Fragments\"# is done and you also have 30 #NPCBone Fragments# (please note, if you are far off from the 30 bone fragments, then you can just skip it), then go back to the Bulwark and turn in #TURNIN\"Skeletal Fragments\"# .. I SKIP \"#NPCMold Rhymes With...\"# " },
|
||||
[30] = { str = "29) I turn in any scourge stones, I have." },
|
||||
[31] = { str = "30) I then stock up on #NPCEnriched Manna Biscuits# (about 600? :D)" },
|
||||
[32] = { str = "31) then go get on the zeppelin to go to Orgrimmar. (while waiting, make heavy runecloth bandages)" },
|
||||
[33] = { str = "32) Once in Orgrimmar i get new spells/abilites." },
|
||||
[34] = { str = "33) bank 2/3rd of my manna biscuits." },
|
||||
[35] = { str = "34) then fly to Winterspring..." },
|
||||
--[36] = { str = "." },
|
||||
--[37] = { str = "." },
|
||||
}
|
||||
},
|
||||
|
||||
------------58-60 Winterspring
|
||||
--[514] = {
|
||||
[5860] = {
|
||||
title = "58-60 Winterspring",
|
||||
--n = "58-60 Winterspring",
|
||||
--pID = 513, nID = 514,
|
||||
--itemCount = 32,
|
||||
items = {
|
||||
[1] = { str = "58-60 Winterspring" },
|
||||
[2] = { str = "01) First thing i do here is stable my pet." },
|
||||
[3] = { str = "02) then make Everlook your home." },
|
||||
[4] = { str = "03) turn in #TURNIN\"Are We There, Yeti?\"# part3" },
|
||||
[5] = { str = "04) accept: #ACCEPT\"Luck Be With You\"# (Elite) and #ACCEPT\"Ursius of the Shardtooth\"# (Elite)" },
|
||||
[6] = { str = "05) then go tame a Winterspring Screecher (for Claw Rank8) (head south to do this)" },
|
||||
[7] = { str = "06) then use that pet to do #DOQUEST\"Luck Be With You\"# (just use your pet to distract the giants while picking up the Frostmaul Shards)" },
|
||||
[8] = { str = "07) then hearth to Everlook." },
|
||||
[9] = { str = "08) go do #DOQUEST\"Ursius of the Shardtooth\"# (Elite) (just keep grinding mobs on the hill north of everlook till Ursius shows up)" },
|
||||
[10] = { str = "09) go turn in #TURNIN\"Luck Be With You\"# (if it's done yet) and #TURNIN\"Ursius of the Shardtooth\"# ... accept #ACCEPT\"Brumeran of the Chillwind\"# (Elite)" },
|
||||
[11] = { str = "10) then go south and do:" },
|
||||
[12] = { str = "11) #DOQUEST\"Brumeran of the Chillwind\"# (Elite)" },
|
||||
[13] = { str = "12) #DOQUEST\"Luck Be With You\"# (Elite) (if you still need to finish it up)" },
|
||||
[14] = { str = "13) #DOQUEST\"Wild Guardians\"# part2 (i grind away at owls at the Owl Wing Thicket for a few hours, before leaving here)" },
|
||||
[15] = { str = "14) then when im a few bars away from 59, i go back up to Everlook (DONT hearth).." },
|
||||
[16] = { str = "15) turn in #TURNIN\"Luck Be With You\"# and #TURNIN\"Brumeran of the Chillwind\"# ... i SKIP #NPC\"Shy-Rotam\"# (Elite)" },
|
||||
[17] = { str = "16) Fly to Bloodvenom Post (Felwood).." },
|
||||
[18] = { str = "17) turn in #TURNIN\"Wild Guardians\"# part2 ... accept #ACCEPT\"Wild Guardians\"# part3" },
|
||||
[19] = { str = "18) then hearth back to Everlook." },
|
||||
[20] = { str = "19) Then go down to the Owl Wing Thicket and do #DOQUEST\"Wild Guardians\"# part3" },
|
||||
[21] = { str = "20) I keep grinding away at Owls till im about 59 and a half, then..." },
|
||||
[22] = { str = "21) I die on purpose, so i end up at Everlook (don’t hearth)" },
|
||||
[23] = { str = "22) then Fly to Bloodvenom Post (Felwood).." },
|
||||
[24] = { str = "23) turn in #TURNIN\"Wild Guardians\"# part3 and #TURNIN\"Guarding Secrets\"# ... accept #ACCEPT\"Guarding Secrets\"# part2" },
|
||||
[25] = { str = "24) I then fly to XRs, then to Thunderbluff, go to Elder Rise.." },
|
||||
[26] = { str = "25) turn in #TURNIN\"Guarding Secrets\"# part2 and #TURNIN\"Glyphed Oaken Branch\"# (both at Nara Wildmane)" },
|
||||
[27] = { str = "26) Hearth back to Everlook." },
|
||||
[28] = { str = "27) At this point im usually about 3/4 way to 60." },
|
||||
[29] = { str = "28) I then go back down to the Owl Wing Thicket and Grind to 60. (See End Game Credits)" },
|
||||
[30] = { str = "." },
|
||||
[31] = { str = "." },
|
||||
[32] = { str = "CONGRATULATION, you're lvl60 now!"},
|
||||
[33] = { str = "." },
|
||||
--[34] = { str = "." },
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
VanillaGuide
|
||||
============
|
||||
VanillaGuide aim to cover the hole for an in-game guide for Vanilla WoW. The AddOn features:
|
||||
|
||||
Step-by-Step Zone Guides (from Joana and Brian Kopps work)
|
||||
Hints and Tips for various Quests
|
||||
MetaMapBWP Integration
|
||||
|
||||
|
||||
Credits
|
||||
=======
|
||||
Well, thank you Joana/Mancow, you ruined my life with WoW, but I love you anyway.
|
||||
|
||||
and here're the links to the REAL guide:
|
||||
|
||||
http://www.joanasworld.com/meet_joana_mancow.html
|
||||
http://www.joanasworld.com/azeroth.htm
|
||||
http://www.joanasworld.com/Joanas1-60Guide.pdf
|
||||
|
||||
|
||||
Donations
|
||||
=========
|
||||
If you would like to support this project, you may donate to our development fund via Paypal.
|
||||
|
||||
[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=LSR84M2ZJEPJS)
|
||||
|
||||
Any funds donated will be used to help further development on this project, by purchasing equipment, etc.
|
||||
|
||||
We are always looking for more volunteers to help with coding, customizations, etc, so feel free to contact us.
|
||||
|
||||
Thank you.
|
||||
+280
@@ -0,0 +1,280 @@
|
||||
--[[--------------------------------------------------
|
||||
----- VanillaGuide -----
|
||||
------------------
|
||||
Settings.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description:
|
||||
This object handles the various addon settings
|
||||
1.00
|
||||
-- Initial Ace2 release
|
||||
1.99a
|
||||
-- Ally addition starter version
|
||||
1.03
|
||||
-- No Changes. Just adjusting "version".
|
||||
1.99x for a beta release was a weird choise.
|
||||
1.04.1
|
||||
-- Settings and/or "Saved Variables" are inclosed in
|
||||
VGuide.Settings
|
||||
1.04.2
|
||||
-- scraped MetaMapBWP settings for MetaMapBWP
|
||||
Now support for MetaMapNotes, too
|
||||
-- Added a function for a proper MetaMap checking
|
||||
MetaMapBWPSupportCheck()
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
--local VGuide = VGuide
|
||||
Dv(" VGuide Settings.lua Start")
|
||||
|
||||
objSettings = {}
|
||||
objSettings.__index = objSettings
|
||||
|
||||
function objSettings:new()
|
||||
local obj = {}
|
||||
setmetatable(obj, self)
|
||||
|
||||
local profile_defaults = {}
|
||||
local char_defaults = {
|
||||
UI = {
|
||||
Locked = false,
|
||||
StepFrameVisible = true,
|
||||
ScrollFrameVisible = true,
|
||||
StepScroll = 0.33,
|
||||
MinimapToggle = true,
|
||||
MinimapPos = 0,
|
||||
Opacity = 1,
|
||||
Scale = 1,
|
||||
Layer = "HIGH",
|
||||
MainFrameSize = {
|
||||
nWidth = 320,
|
||||
nHeight = 320,
|
||||
},
|
||||
MainFrameAnchor = {
|
||||
sFrom = "CENTER",
|
||||
sTo = "CENTER",
|
||||
nX = 0,
|
||||
nY = 0,
|
||||
},
|
||||
MainFrameColor = {
|
||||
nR = .11,
|
||||
nG = .11,
|
||||
nB = .11,
|
||||
nA = .81,
|
||||
},
|
||||
StepFrameColor = {
|
||||
nR = .11,
|
||||
nG = .11,
|
||||
nB = .41,
|
||||
nA = .71,
|
||||
},
|
||||
ScrollFrameColor = {
|
||||
nR = .41,
|
||||
nG = .11,
|
||||
nB = .11,
|
||||
nA = .71,
|
||||
},
|
||||
StepFrameTextColor = {
|
||||
nR = .91,
|
||||
nG = .91,
|
||||
nB = .91,
|
||||
nA = .99,
|
||||
},
|
||||
ScrollFrameTextColor = {
|
||||
nR = .59,
|
||||
nG = .59,
|
||||
nB = .59,
|
||||
nA = .71,
|
||||
},
|
||||
},
|
||||
CharInfo = {
|
||||
CharName = "Unknown", --CharName,
|
||||
RealmName = "Unknown", --RealmName,
|
||||
Class = "Unknown", --Class,
|
||||
Race = "Unknown", --Race,
|
||||
Faction = "Unknown", --Faction,
|
||||
},
|
||||
GuideValues = {
|
||||
GuideID = 1,
|
||||
Step = 1,
|
||||
},
|
||||
VGuideFu = {
|
||||
ShowTitle = true,
|
||||
ShowGuideName = false,
|
||||
ShowGuideStep = false,
|
||||
ShowLabels = true,
|
||||
},
|
||||
MetaMap = {
|
||||
Presence = false,
|
||||
NotesPresence = false,
|
||||
BWPPresence = false,
|
||||
NotesEnable = false,
|
||||
BWPEnable = false,
|
||||
},
|
||||
}
|
||||
|
||||
obj = AceLibrary("AceAddon-2.0"):new("AceDB-2.0")
|
||||
|
||||
obj:RegisterDB("VanillaGuideDB", "VanillaGuideDBPC")
|
||||
|
||||
obj:RegisterDefaults("profile", profile_defaults)
|
||||
obj:RegisterDefaults("char", char_defaults)
|
||||
|
||||
obj.PrintSettings = function(self)
|
||||
Dv("---------------------------")
|
||||
Dv(" -- CharInfo")
|
||||
Dv(" - - Name: " .. tostring(obj.db.char.CharInfo.CharName))
|
||||
Dv(" - - Faction: " .. tostring(obj.db.char.CharInfo.Faction))
|
||||
Dv(" - - Race: " .. tostring(obj.db.char.CharInfo.Race))
|
||||
Dv(" ------------------")
|
||||
Dv(" -- MetaMap")
|
||||
Dv(" - - Presence: " .. tostring(obj.db.char.MetaMap.Presence))
|
||||
Dv(" - - NotesPresence: " .. tostring(obj.db.char.MetaMap.NotesPresence))
|
||||
Dv(" - - BWPPresence: " .. tostring(obj.db.char.MetaMap.BWPPresence))
|
||||
Dv(" - - Notes: " .. tostring(obj.db.char.MetaMap.NotesEnable))
|
||||
Dv(" - - BWP: " .. tostring(obj.db.char.MetaMap.BWPEnable))
|
||||
Dv(" ------------------")
|
||||
Dv(" -- GuideValues")
|
||||
Dv(" - - GuideID: " .. tostring(obj.db.char.GuideValues.GuideID))
|
||||
Dv(" - - Step: " .. tostring(obj.db.char.GuideValues.Step))
|
||||
Dv(" ------------------")
|
||||
Dv(" -- UI")
|
||||
Dv(" - - Locked: " .. tostring(obj.db.char.UI.Locked))
|
||||
Dv(" - - MainFrameSize X: " .. tostring(obj.db.char.UI.MainFrameSize.nWidth) .. " Y: " .. tostring(obj.db.char.UI.MainFrameSize.nHeight))
|
||||
Dv("---------------------------")
|
||||
end
|
||||
|
||||
obj.CheckSettings = function(self)
|
||||
local function MetaMapBWPSupportCheck()
|
||||
local MetaMapPresence, MetaMapNotesPresence, MetaMapBWPPresence
|
||||
Dv(" MetaMap Support Check:")
|
||||
-- control THESE TOO, although they're part of the WoW API
|
||||
-- GetZoneText, GetRealZoneText, GetSubZoneText, GetMinimapZoneText.
|
||||
|
||||
-- MetaMap Support Check
|
||||
if IsAddOnLoaded("MetaMap") then
|
||||
if MetaMap_GetCurrentMapInfo and MetaMap_NameToZoneID then
|
||||
Di(" - MetaMap Support Present")
|
||||
MetaMapPresence = true
|
||||
-- MetaMapNotes Support Check
|
||||
if MetaMapNotes_AddNewNote then
|
||||
Di(" - MetaMapNotes Support Present")
|
||||
MetaMapNotesPresence = true
|
||||
else
|
||||
Di(" - MetaMapNotes Support not Present - no markers on your WorldMap")
|
||||
MetaMapNotesPresence = false
|
||||
end
|
||||
-- MetaMapBWP Support Check
|
||||
-- let's try to load the BWP module if it's not already
|
||||
if not IsAddOnLoaded("MetaMapBWP") then
|
||||
LoadAddOn("MetaMapBWP");
|
||||
end
|
||||
if IsAddOnLoaded("MetaMapBWP") then
|
||||
-- let's load the BWP module in "always on" mode
|
||||
if MetaMap_LoadBWP then
|
||||
-- MetaMap_LoadBWP(id, mode)
|
||||
-- mode 0 BWP_CallMenu();
|
||||
-- mode 1 MetaKBMenu_RBSelect(id);
|
||||
-- mode 2 MetaMapNotes_RBSelect(id);
|
||||
-- mode 3 should be BWPAlwaysOn
|
||||
MetaMap_LoadBWP(0, 3)
|
||||
if BWP_ClearDest and BWP_DisplayFrame and BWPDistanceText and BWPDestText then
|
||||
Di(" - MetaMapBWP Support Present")
|
||||
MetaMapBWPPresence = true
|
||||
else
|
||||
Di(" - MetaMapBWP Support not Present - no pointing arrow for ya")
|
||||
MetaMapBWPPresence = false
|
||||
end
|
||||
end
|
||||
else
|
||||
Di(" - MetaMapBWP Support not Present - no pointing arrow for ya")
|
||||
MetaMapBWPPresence = false
|
||||
end
|
||||
else
|
||||
Di(" - MetaMap Support not Present - no pointing arrow and no markers on your WorldMap")
|
||||
MetaMapPresence = false
|
||||
end
|
||||
else
|
||||
Di(" - MetaMap Support not Present - no pointing arrow and no markers on your WorldMap")
|
||||
MetaMapPresence = false
|
||||
end
|
||||
return MetaMapPresence, MetaMapNotesPresence, MetaMapBWPPresence
|
||||
end
|
||||
|
||||
if obj.db.char.CharInfo.CharName == "Unknown" then
|
||||
Di(" New Settings for \"|cFFbb7777" .. AceLibrary("AceDB-2.0").CHAR_ID .. " - " .. AceLibrary("AceDB-2.0").FACTION .."|r\"")
|
||||
obj.db.char.CharInfo.CharName = AceLibrary("AceDB-2.0").NAME
|
||||
obj.db.char.CharInfo.RealmName = AceLibrary("AceDB-2.0").REALM
|
||||
obj.db.char.CharInfo.Class = AceLibrary("AceDB-2.0").CLASS_ID
|
||||
obj.db.char.CharInfo.Race = UnitRace("player")
|
||||
obj.db.char.CharInfo.Faction = AceLibrary("AceDB-2.0").FACTION
|
||||
elseif obj.db.char.CharInfo.CharName == AceLibrary("AceDB-2.0").NAME then
|
||||
if obj.db.char.CharInfo.Faction ~= AceLibrary("AceDB-2.0").FACTION then
|
||||
Di(" Settings for \"|cFFbb7777 " .. AceLibrary("AceDB-2.0").CHAR_ID .. " - " .. AceLibrary("AceDB-2.0").FACTION .. "|r\" need to be wiped out!")
|
||||
Di(" This character was already used on the opposite faction!")
|
||||
obj:ResetDB("char")
|
||||
else
|
||||
Di(" Settings for \"|cFFbb7777" .. AceLibrary("AceDB-2.0").CHAR_ID .. " - " .. AceLibrary("AceDB-2.0").FACTION .. "|r\" loaded!")
|
||||
end
|
||||
end
|
||||
|
||||
obj.db.char.MetaMap.Presence,
|
||||
obj.db.char.MetaMap.NotesPresence,
|
||||
obj.db.char.MetaMap.BWPPresence = MetaMapBWPSupportCheck()
|
||||
end
|
||||
|
||||
obj.GetSettingsCharInfo = function(self)
|
||||
return obj.db.char.CharInfo
|
||||
end
|
||||
|
||||
obj.GetSettingsUI = function(self)
|
||||
return obj.db.char.UI
|
||||
end
|
||||
|
||||
obj.GetSettingsGuideValues = function(self)
|
||||
return obj.db.char.GuideValues
|
||||
end
|
||||
|
||||
obj.GetSettingsVGuideFu = function(self)
|
||||
return obj.db.char.VGuideFu
|
||||
end
|
||||
|
||||
obj.GetSettingsMetaMap = function(self)
|
||||
return obj.db.char.MetaMap
|
||||
end
|
||||
|
||||
obj.GetSettingsEntireCharDB = function(self)
|
||||
return obj.db.char
|
||||
end
|
||||
|
||||
obj.SetSettingsCharInfo = function(self, tCharInfo)
|
||||
obj.db.char.CharInfo = tCharInfo
|
||||
end
|
||||
|
||||
obj.SetSettingsUI = function(self, tUI)
|
||||
obj.db.char.UI = tUI
|
||||
end
|
||||
|
||||
obj.SetSettingsGuideValues = function(self, tGuideValues)
|
||||
obj.db.char.GuideValues = tGuideValues
|
||||
end
|
||||
|
||||
obj.SetSettingsVGuideFu = function(self, tVGuideFu)
|
||||
obj.db.char.VGuideFu = tVGuideFu
|
||||
end
|
||||
|
||||
obj.SetSettingsMetaMap = function(self, tMetaMap)
|
||||
obj.db.char.MetaMap = tMetaMap
|
||||
end
|
||||
|
||||
obj.SetSettingEntireCharDB = function(self, tSettingsTable)
|
||||
VGuide.Settings.db.char = tSettingsTable
|
||||
end
|
||||
|
||||
return obj
|
||||
end
|
||||
|
||||
Dv(" VGuide Settings.lua End")
|
||||
--return VGuide
|
||||
@@ -0,0 +1,65 @@
|
||||
--[[--------------------------------------------------
|
||||
----- VanillaGuide -----
|
||||
------------------
|
||||
SlashCommands.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description:
|
||||
This file handles Slash Commands using Ace2 lib
|
||||
1.00
|
||||
-- Initial Ace2 release
|
||||
1.99a
|
||||
-- Ally addition starter version
|
||||
1.03
|
||||
-- No Changes. Just adjusting "version".
|
||||
1.99x for a beta release was a weird choise.
|
||||
1.04.1
|
||||
-- no changes at all ;)
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
local VGuide = VGuide
|
||||
|
||||
local options = {
|
||||
type='group',
|
||||
args = {
|
||||
toggle = {
|
||||
type = 'toggle',
|
||||
name = 'toggle',
|
||||
desc = 'This Toggle VanillaGuide Main Frame visibility',
|
||||
get = "IsMFVisible",
|
||||
set = "ToggleMFVisibility"
|
||||
}
|
||||
--},
|
||||
},
|
||||
}
|
||||
|
||||
VGuide:RegisterChatCommand({"/vguide", "/vg"}, options)
|
||||
|
||||
function VGuide:IsMFVisible()
|
||||
local frame = getglobal("VG_MainFrame")
|
||||
return frame:IsVisible()
|
||||
end
|
||||
|
||||
function VGuide:ToggleMFVisibility()
|
||||
local frame = getglobal("VG_MainFrame")
|
||||
local fSettings = getglobal("VG_SettingsFrame")
|
||||
if frame:IsVisible() then
|
||||
frame:Hide()
|
||||
if fSettings:IsVisible() then
|
||||
fSettings.showthis = true
|
||||
fSettings:Hide()
|
||||
end
|
||||
else
|
||||
frame:Show()
|
||||
if fSettings.showthis then
|
||||
fSettings:Show()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return VGuide
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 8.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 8.0 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,150 @@
|
||||
--[[--------------------------------------------------
|
||||
----- VanillaGuide -----
|
||||
------------------
|
||||
UI.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description:
|
||||
Master UI object.
|
||||
From here Main/Settings/About frames spawns
|
||||
1.00
|
||||
-- Initial Ace2 release
|
||||
1.99a
|
||||
-- Ally addition starter version
|
||||
1.03
|
||||
-- No Changes. Just adjusting "version".
|
||||
1.99x for a beta release was a weird choise.
|
||||
1.04.1
|
||||
-- UI object rivisited!
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
|
||||
--local VGuide = VGuide
|
||||
Dv(" VGuide UI.lua Start")
|
||||
|
||||
objUI = {}
|
||||
objUI.__index = objUI
|
||||
|
||||
function objUI:new(oSettings, oDisplay)
|
||||
local VG_TEXTURE_DIR = "Interface\\AddOns\\VanillaGuide\\Textures\\"
|
||||
local VG_TEXTURE = {
|
||||
FONT = "GameFontNormalSmall",
|
||||
FONT_PATH = "Fonts\\FRIZQT__.TTF",
|
||||
FONT_HEIGHT = 9.5, -- DO NOT CHANGE THIS OR THE SCROLLFRAME WILL BE BORKED!
|
||||
|
||||
--BACKGROUNDFILE = "Interface\\Tooltips\\UI-Tooltip-Background",
|
||||
--EDGEFILE = DIR .. "Borders\\fer1",
|
||||
--local bd = {
|
||||
BACKDROP = {
|
||||
bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
|
||||
edgeFile = "Borders\\fer1",
|
||||
edgeSize = 4,
|
||||
insets = { left = 1, right = 1, top = 1, bottom = 1 },
|
||||
},
|
||||
|
||||
--local bdsh = {
|
||||
BACKDROPSH = {
|
||||
bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
|
||||
--edgeSize = 4,
|
||||
insets = { left = -1, right = -2, top = -3, bottom = -3 },
|
||||
},
|
||||
|
||||
B_CLOSE = {
|
||||
NORMAL = VG_TEXTURE_DIR .. "Buttons\\Button-Close-Normal",
|
||||
PUSHED = VG_TEXTURE_DIR .. "Buttons\\Button-Close-Pushed",
|
||||
HIGHLIGHT = VG_TEXTURE_DIR .. "Buttons\\Button-Close-Highlight"
|
||||
},
|
||||
B_ARROWDOWN = {
|
||||
NORMAL = VG_TEXTURE_DIR .. "Buttons\\Button-ArrowDown-Normal",
|
||||
PUSHED = VG_TEXTURE_DIR .. "Buttons\\Button-ArrowDown-Pushed",
|
||||
HIGHLIGHT = VG_TEXTURE_DIR .. "Buttons\\Button-ArrowDown-Highlight"
|
||||
},
|
||||
B_ARROWUP = {
|
||||
NORMAL = VG_TEXTURE_DIR .. "Buttons\\Button-ArrowUp-Normal",
|
||||
PUSHED = VG_TEXTURE_DIR .. "Buttons\\Button-ArrowUp-Pushed",
|
||||
HIGHLIGHT = VG_TEXTURE_DIR .. "Buttons\\Button-ArrowUp-Highlight"
|
||||
},
|
||||
B_DETAILS = {
|
||||
NORMAL = VG_TEXTURE_DIR .. "Buttons\\Button-Details-Normal",
|
||||
PUSHED = VG_TEXTURE_DIR .. "Buttons\\Button-Details-Pushed",
|
||||
HIGHLIGHT = VG_TEXTURE_DIR .. "Buttons\\Button-Details-Highlight"
|
||||
},
|
||||
B_DOUBLEARROWLEFT = {
|
||||
NORMAL = VG_TEXTURE_DIR .. "Buttons\\Button-DoubleArrowLeft-Normal",
|
||||
PUSHED = VG_TEXTURE_DIR .. "Buttons\\Button-DoubleArrowLeft-Pushed",
|
||||
HIGHLIGHT = VG_TEXTURE_DIR .. "Buttons\\Button-DoubleArrowLeft-Highlight"
|
||||
},
|
||||
B_DOUBLEARROWRIGHT = {
|
||||
NORMAL = VG_TEXTURE_DIR .. "Buttons\\Button-DoubleArrowRight-Normal",
|
||||
PUSHED = VG_TEXTURE_DIR .. "Buttons\\Button-DoubleArrowRight-Pushed",
|
||||
HIGHLIGHT = VG_TEXTURE_DIR .. "Buttons\\Button-DoubleArrowRight-Highlight"
|
||||
},
|
||||
B_FLASH = {
|
||||
NORMAL = VG_TEXTURE_DIR .. "Buttons\\Button-Flash-Normal",
|
||||
PUSHED = VG_TEXTURE_DIR .. "Buttons\\Button-Flash-Pushed",
|
||||
HIGHLIGHT = VG_TEXTURE_DIR .. "Buttons\\Button-Flash-Highlight"
|
||||
},
|
||||
B_LOCKED = {
|
||||
NORMAL = VG_TEXTURE_DIR .. "Buttons\\Button-Locked-Normal",
|
||||
PUSHED = VG_TEXTURE_DIR .. "Buttons\\Button-Locked-Pushed",
|
||||
HIGHLIGHT = VG_TEXTURE_DIR .. "Buttons\\Button-Locked-Highlight"
|
||||
},
|
||||
B_UNLOCKED = {
|
||||
NORMAL = VG_TEXTURE_DIR .. "Buttons\\Button-Unlocked-Normal",
|
||||
PUSHED = VG_TEXTURE_DIR .. "Buttons\\Button-Unlocked-Pushed",
|
||||
HIGHLIGHT = VG_TEXTURE_DIR .. "Buttons\\Button-Unlocked-Highlight"
|
||||
},
|
||||
B_OPTION = {
|
||||
NORMAL = VG_TEXTURE_DIR .. "Buttons\\Button-Option-Normal",
|
||||
PUSHED = VG_TEXTURE_DIR .. "Buttons\\Button-Option-Pushed",
|
||||
HIGHLIGHT = VG_TEXTURE_DIR .. "Buttons\\Button-Option-Highlight"
|
||||
},
|
||||
B_ABOUT = {
|
||||
NORMAL = VG_TEXTURE_DIR .. "Buttons\\Button-About-Normal",
|
||||
PUSHED = VG_TEXTURE_DIR .. "Buttons\\Button-About-Pushed",
|
||||
HIGHLIGHT = VG_TEXTURE_DIR .. "Buttons\\Button-About-Highlight"
|
||||
},
|
||||
B_DUMLEFT_UP = {
|
||||
NORMAL = VG_TEXTURE_DIR .. "Buttons\\Button-DUMonLeft-ArrowUp-Normal",
|
||||
PUSHED = VG_TEXTURE_DIR .. "Buttons\\Button-DUMonLeft-ArrowUp-Pushed",
|
||||
HIGHLIGHT = VG_TEXTURE_DIR .. "Buttons\\Button-DUMonLeft-ArrowUp-Highlight"
|
||||
},
|
||||
B_DUMRIGHT_UP = {
|
||||
NORMAL = VG_TEXTURE_DIR .. "Buttons\\Button-DUMonRight-ArrowUp-Normal",
|
||||
PUSHED = VG_TEXTURE_DIR .. "Buttons\\Button-DUMonRight-ArrowUp-Pushed",
|
||||
HIGHLIGHT = VG_TEXTURE_DIR .. "Buttons\\Button-DUMonRight-ArrowUp-Highlight"
|
||||
},
|
||||
B_DDMLEFT_DOWN = {
|
||||
NORMAL = VG_TEXTURE_DIR .. "Buttons\\Button-DDMonLeft-ArrowDown-Normal",
|
||||
PUSHED = VG_TEXTURE_DIR .. "Buttons\\Button-DDMonLeft-ArrowDown-Pushed",
|
||||
HIGHLIGHT = VG_TEXTURE_DIR .. "Buttons\\Button-DDMonLeft-ArrowDown-Highlight"
|
||||
},
|
||||
B_DDMRIGHT_DOWN = {
|
||||
NORMAL = VG_TEXTURE_DIR .. "Buttons\\Button-DDMonRight-ArrowDown-Normal",
|
||||
PUSHED = VG_TEXTURE_DIR .. "Buttons\\Button-DDMonRight-ArrowDown-Pushed",
|
||||
HIGHLIGHT = VG_TEXTURE_DIR .. "Buttons\\Button-DDMonRight-ArrowDown-Highlight"
|
||||
},
|
||||
|
||||
SCROLLFRAME_PADDING = 9
|
||||
}
|
||||
|
||||
local obj = {}
|
||||
setmetatable(obj, self)
|
||||
|
||||
obj.fMain = {}
|
||||
obj.fSettings = {}
|
||||
obj.fAbout = {}
|
||||
|
||||
obj.fMain = objMainFrame:new(nil, VG_TEXTURE, oSettings, oDisplay)
|
||||
obj.fSettings = objSettingsFrame:new(obj.fMain.tWidgets.frame_MainFrame, VG_TEXTURE, oSettings)
|
||||
obj.fAbout = objAboutFrame:new(obj.fMain.tWidgets.frame_MainFrame, VG_TEXTURE, oSettings)
|
||||
|
||||
return obj
|
||||
end
|
||||
|
||||
Dv(" VGuide UI.lua End")
|
||||
+215
@@ -0,0 +1,215 @@
|
||||
--[[--------------------------------------------------
|
||||
----- VanillaGuide -----
|
||||
------------------
|
||||
VGuideFu.lua
|
||||
Authors: mrmr
|
||||
Version: 1.04.2
|
||||
------------------------------------------------------
|
||||
Description:
|
||||
Fubar plugin for VGuide
|
||||
1.00
|
||||
-- Initial Ace2 release
|
||||
1.99a
|
||||
-- Ally addition starter version
|
||||
1.03
|
||||
-- No Changes. Just adjusting "version".
|
||||
1.99x for a beta release was a weird choise.
|
||||
1.04.1
|
||||
-- Just minor adjustments to reflect changes in the
|
||||
rest of addon
|
||||
1.04.2
|
||||
-- no changes in here for this revision
|
||||
------------------------------------------------------
|
||||
Connection:
|
||||
--]]--------------------------------------------------
|
||||
|
||||
if not VGuide then
|
||||
return
|
||||
end
|
||||
|
||||
if not IsAddOnLoaded("Fubar") then
|
||||
return
|
||||
end
|
||||
|
||||
local tablet = AceLibrary("Tablet-2.0")
|
||||
|
||||
VGuideFu = AceLibrary("AceAddon-2.0"):new("FuBarPlugin-2.0")
|
||||
VGuideFu.hasIcon = "Interface\\AddOns\\VanillaGuide\\Textures\\FuBar_Icon"
|
||||
|
||||
-- using an AceOptions data table
|
||||
VGuideFu.OnMenuRequest = {
|
||||
type = 'group',
|
||||
args = {
|
||||
titletoggle = {
|
||||
order = 1,
|
||||
type = "toggle",
|
||||
name = "Show Title",
|
||||
desc = "Click to Toggle Title Visibility",
|
||||
get = "IsTitle",
|
||||
set = "ToggleTitle",
|
||||
},
|
||||
guidenametoggle = {
|
||||
order = 2,
|
||||
type = "toggle",
|
||||
name = "Show Guide Name",
|
||||
desc = "Click to Toggle Guide Name Visibility",
|
||||
get = "IsGuideName",
|
||||
set = "ToggleGuideName",
|
||||
},
|
||||
guidesteptoggle = {
|
||||
order = 3,
|
||||
type = "toggle",
|
||||
name = "Show Guide Step",
|
||||
desc = "Click to Toggle Guide Step Visibility",
|
||||
get = "IsGuideStep",
|
||||
set = "ToggleGuideStep",
|
||||
},
|
||||
lablestoggle = {
|
||||
order = 4,
|
||||
type = "toggle",
|
||||
name = "Show Labels",
|
||||
desc = "Click to Toggle Labels Visibility",
|
||||
get = "IsLabels",
|
||||
set = "ToggleLabels",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
function VGuideFu:OnInitialize()
|
||||
self.title = "VanillaGuide"
|
||||
self.hasIcon = "Interface\\AddOns\\VanillaGuide\\Textures\\FuBar_Icon.tga"
|
||||
self.cannotHideText = true
|
||||
self.overrideMenu = false
|
||||
self.hideMenuTitle = true
|
||||
self.defaultPosition = "RIGHT"
|
||||
self.defaultMinimapPosition = 180
|
||||
self.independentProfile = false
|
||||
end
|
||||
|
||||
function VGuideFu:OnEnable()
|
||||
self.GuideID = nil
|
||||
self.GuideName = nil
|
||||
self.GuideStep = nil
|
||||
self.GuideStepLabel = nil
|
||||
|
||||
self:ShowIcon()
|
||||
self:SetIcon(true)
|
||||
end
|
||||
|
||||
function VGuideFu:IsTitle()
|
||||
return VGuide.Settings.db.char.VGuideFu.ShowTitle
|
||||
end
|
||||
|
||||
function VGuideFu:ToggleTitle()
|
||||
VGuide.Settings.db.char.VGuideFu.ShowTitle = not VGuide.Settings.db.char.VGuideFu.ShowTitle
|
||||
self:UpdateText()
|
||||
end
|
||||
|
||||
function VGuideFu:IsGuideName()
|
||||
return VGuide.Settings.db.char.VGuideFu.ShowGuideName
|
||||
end
|
||||
|
||||
function VGuideFu:ToggleGuideName()
|
||||
VGuide.Settings.db.char.VGuideFu.ShowGuideName = not VGuide.Settings.db.char.VGuideFu.ShowGuideName
|
||||
self:UpdateText()
|
||||
end
|
||||
|
||||
function VGuideFu:IsGuideStep()
|
||||
return VGuide.Settings.db.char.VGuideFu.ShowGuideStep
|
||||
end
|
||||
|
||||
function VGuideFu:ToggleGuideStep()
|
||||
VGuide.Settings.db.char.VGuideFu.ShowGuideStep = not VGuide.Settings.db.char.VGuideFu.ShowGuideStep
|
||||
self:UpdateText()
|
||||
end
|
||||
|
||||
function VGuideFu:IsLabels()
|
||||
return VGuide.Settings.db.char.VGuideFu.ShowLabels
|
||||
end
|
||||
|
||||
function VGuideFu:ToggleLabels()
|
||||
VGuide.Settings.db.char.VGuideFu.ShowLabels = not VGuide.Settings.db.char.VGuideFu.ShowLabels
|
||||
self:UpdateText()
|
||||
end
|
||||
|
||||
function VGuideFu:OnDataUpdate()
|
||||
self.GuideID = VGuide.Settings.db.char.GuideValues.GuideID
|
||||
self.GuideName = VGuide.Display:GetGuideTitle()
|
||||
self.GuideStep = VGuide.Settings.db.char.GuideValues.Step
|
||||
self.GuideStepLabel = VGuide.Display:GetStepLabel()
|
||||
end
|
||||
|
||||
function VGuideFu:OnTextUpdate()
|
||||
local guideLabel = self.GuideName or ""
|
||||
local step = self.GuideStep or ""
|
||||
local textTitle = "|c00FFFF00VGuide"
|
||||
local textGuideNameLabel = "|c0000FF00Guide:"
|
||||
local textGuideStepLabel = "|c0000FF00Step:"
|
||||
local whiteTextColor = "|c00FFFFFF"
|
||||
local text = ""
|
||||
if not self:IsLabels() then
|
||||
textGuideNameLabel = ""
|
||||
textGuideStepLabel = ""
|
||||
end
|
||||
|
||||
if self:IsTitle() then
|
||||
text = text .. textTitle
|
||||
end
|
||||
if self:IsGuideName() then
|
||||
if self:IsTitle() then
|
||||
text = text .. " - "
|
||||
end
|
||||
text = text .. textGuideNameLabel .. whiteTextColor .. guideLabel
|
||||
end
|
||||
if self:IsGuideStep() then
|
||||
if self:IsGuideName() or self:IsTitle() then
|
||||
text = text .. " - "
|
||||
end
|
||||
text = text .. textGuideStepLabel .. whiteTextColor .. step
|
||||
end
|
||||
|
||||
self:SetText(text)
|
||||
end
|
||||
|
||||
function VGuideFu:OnTooltipUpdate()
|
||||
tablet:SetHint("Click to Toggle VGuide's Frame")
|
||||
-- as a rule, if you have an OnClick or OnDoubleClick or OnMouseUp or
|
||||
-- OnMouseDown, you should set a hint.
|
||||
local cat = tablet:AddCategory(
|
||||
"text", "Guide",
|
||||
"columns", 1,
|
||||
"child_textR", 1,
|
||||
"child_textG", 1,
|
||||
"child_textB", 0
|
||||
)
|
||||
cat:AddLine(
|
||||
"text", "|c00FFFF00" .. tostring(self.GuideName) .. "|r"
|
||||
)
|
||||
cat = tablet:AddCategory(
|
||||
"text", "Step Label",
|
||||
"columns", 1,
|
||||
"child_textR", 1,
|
||||
"child_textG", 1,
|
||||
"child_textB", 1
|
||||
)
|
||||
cat:AddLine(
|
||||
"text", tostring(self.GuideStepLabel)
|
||||
)
|
||||
end
|
||||
|
||||
function VGuideFu:OnClick()
|
||||
local frame = getglobal("VG_MainFrame")
|
||||
local fSettings = getglobal("VG_SettingsFrame")
|
||||
if frame:IsVisible() then
|
||||
frame:Hide()
|
||||
if fSettings:IsVisible() then
|
||||
fSettings.showthis = true
|
||||
fSettings:Hide()
|
||||
end
|
||||
else
|
||||
frame:Show()
|
||||
if fSettings.showthis then
|
||||
fSettings:Show()
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,61 @@
|
||||
## Interface: 11200
|
||||
## Title: VanillaGuide |cff7fff7f -Ace2-|r
|
||||
## Notes: Step-by-Step 1to60 Guides, in an Ace2 addon.
|
||||
## Author: mrmr
|
||||
## Version: 1.04.2
|
||||
## DefaultState: enabled
|
||||
## LoadOnDemand: 0
|
||||
|
||||
## X-Credits: Joana/Mancow and Brian Kopps for the guides. myself for the Joana's guide and the addon itself. Kira and Cdlp for the Brian Kopps' guide. Velenran for Profession guides.
|
||||
## X-Category: Quests
|
||||
## X-Date: 2013-04-04
|
||||
## X-ReleaseDate: 2012-xx-xx
|
||||
## X-Email: rsheep@gmail.com
|
||||
## X-Website: http://vanillaguide.googlecode.com
|
||||
## X-Embeds: Ace2, FuBar-Plugin-2.0, Tablet-2.0
|
||||
## OptionalDeps: Ace2, FuBar, Tablet-2.0
|
||||
|
||||
## SavedVariables: VanillaGuideDB
|
||||
## SavedVariablesPerCharacter: VanillaGuideDBPC
|
||||
|
||||
libs\AceLibrary\AceLibrary.lua
|
||||
libs\AceOO-2.0\AceOO-2.0.lua
|
||||
libs\AceConsole-2.0\AceConsole-2.0.lua
|
||||
libs\AceEvent-2.0\AceEvent-2.0.lua
|
||||
libs\AceAddon-2.0\AceAddon-2.0.lua
|
||||
libs\AceDB-2.0\AceDB-2.0.lua
|
||||
libs\AceDebug-2.0\AceDebug-2.0.lua
|
||||
|
||||
Core.lua
|
||||
Settings.lua
|
||||
GuideTables\001_Introduction.lua
|
||||
GuideTables\Horde\002_Mulgore.lua
|
||||
GuideTables\Horde\002_TirisfalGlades.lua
|
||||
GuideTables\Horde\002_Durotar.lua
|
||||
GuideTables\Horde\003_Horde_12to20.lua
|
||||
GuideTables\Horde\003_Horde_20to30.lua
|
||||
GuideTables\Horde\003_Horde_30to40.lua
|
||||
GuideTables\Horde\003_Horde_40to50.lua
|
||||
GuideTables\Horde\003_Horde_50to60.lua
|
||||
GuideTables\Alliance\002_ElwynnForest.lua
|
||||
GuideTables\Alliance\002_Teldrassil.lua
|
||||
GuideTables\Alliance\002_DunMorogh.lua
|
||||
GuideTables\Alliance\003_Alliance_12to20.lua
|
||||
GuideTables\Alliance\003_Alliance_20to30.lua
|
||||
GuideTables\Alliance\003_Alliance_30to40.lua
|
||||
GuideTables\Alliance\003_Alliance_40to50.lua
|
||||
GuideTables\Alliance\003_Alliance_50to60.lua
|
||||
GuideTables\004_Professions.lua
|
||||
GuideTable.lua
|
||||
Display.lua
|
||||
SlashCommands.lua
|
||||
Frame_MainFrame.lua
|
||||
Frame_AboutFrame.lua
|
||||
Frame_SettingsFrame.lua
|
||||
UI.lua
|
||||
|
||||
libs\Tablet-2.0\Tablet-2.0.lua
|
||||
libs\Dewdrop-2.0\Dewdrop-2.0.lua
|
||||
libs\FuBarPlugin-2.0\FubarPlugin-2.0.lua
|
||||
|
||||
VGuideFu.lua
|
||||
@@ -0,0 +1,995 @@
|
||||
--[[
|
||||
Name: AceAddon-2.0
|
||||
Revision: $Rev: 16523 $
|
||||
Developed by: The Ace Development Team (http://www.wowace.com/index.php/The_Ace_Development_Team)
|
||||
Inspired By: Ace 1.x by Turan (turan@gryphon.com)
|
||||
Website: http://www.wowace.com/
|
||||
Documentation: http://www.wowace.com/index.php/AceAddon-2.0
|
||||
SVN: http://svn.wowace.com/root/trunk/Ace2/AceAddon-2.0
|
||||
Description: Base for all Ace addons to inherit from.
|
||||
Dependencies: AceLibrary, AceOO-2.0, AceEvent-2.0, (optional) AceConsole-2.0
|
||||
]]
|
||||
|
||||
local MAJOR_VERSION = "AceAddon-2.0"
|
||||
local MINOR_VERSION = "$Revision: 16523 $"
|
||||
|
||||
-- This ensures the code is only executed if the libary doesn't already exist, or is a newer version
|
||||
if not AceLibrary then error(MAJOR_VERSION .. " requires AceLibrary.") end
|
||||
if not AceLibrary:IsNewVersion(MAJOR_VERSION, MINOR_VERSION) then return end
|
||||
|
||||
if not AceLibrary:HasInstance("AceOO-2.0") then error(MAJOR_VERSION .. " requires AceOO-2.0.") end
|
||||
|
||||
-- Localization
|
||||
local STANDBY, TITLE, NOTES, VERSION, AUTHOR, DATE, CATEGORY, EMAIL, CREDITS, WEBSITE, CATEGORIES, ABOUT, PRINT_ADDON_INFO
|
||||
if GetLocale() == "deDE" then
|
||||
STANDBY = "|cffff5050(Standby)|r" -- capitalized
|
||||
|
||||
TITLE = "Titel"
|
||||
NOTES = "Anmerkung"
|
||||
VERSION = "Version"
|
||||
AUTHOR = "Autor"
|
||||
DATE = "Datum"
|
||||
CATEGORY = "Kategorie"
|
||||
EMAIL = "E-mail"
|
||||
WEBSITE = "Webseite"
|
||||
CREDITS = "Credits" -- fix
|
||||
|
||||
ABOUT = "\195\188ber"
|
||||
PRINT_ADDON_INFO = "Gibt Addondaten aus"
|
||||
|
||||
CATEGORIES = {
|
||||
["Action Bars"] = "Aktionsleisten",
|
||||
["Auction"] = "Auktion",
|
||||
["Audio"] = "Audio",
|
||||
["Battlegrounds/PvP"] = "Schlachtfeld/PvP",
|
||||
["Buffs"] = "Buffs",
|
||||
["Chat/Communication"] = "Chat/Kommunikation",
|
||||
["Druid"] = "Druide",
|
||||
["Hunter"] = "Jäger",
|
||||
["Mage"] = "Magier",
|
||||
["Paladin"] = "Paladin",
|
||||
["Priest"] = "Priester",
|
||||
["Rogue"] = "Schurke",
|
||||
["Shaman"] = "Schamane",
|
||||
["Warlock"] = "Hexenmeister",
|
||||
["Warrior"] = "Krieger",
|
||||
["Healer"] = "Heiler",
|
||||
["Tank"] = "Tank", -- noone use "Brecher"...
|
||||
["Caster"] = "Caster",
|
||||
["Combat"] = "Kampf",
|
||||
["Compilations"] = "Compilations", -- whats that o_O
|
||||
["Data Export"] = "Datenexport",
|
||||
["Development Tools"] = "Entwicklungs Tools",
|
||||
["Guild"] = "Gilde",
|
||||
["Frame Modification"] = "Frame Modifikation",
|
||||
["Interface Enhancements"] = "Interface Verbesserungen",
|
||||
["Inventory"] = "Inventar",
|
||||
["Library"] = "Library",
|
||||
["Map"] = "Map",
|
||||
["Mail"] = "Mail",
|
||||
["Miscellaneous"] = "Diverses",
|
||||
["Quest"] = "Quest",
|
||||
["Raid"] = "Schlachtzug",
|
||||
["Tradeskill"] = "Handelsf\195\164higkeit",
|
||||
["UnitFrame"] = "UnitFrame",
|
||||
}
|
||||
elseif GetLocale() == "frFR" then
|
||||
STANDBY = "|cffff5050(attente)|r"
|
||||
|
||||
TITLE = "Titre"
|
||||
NOTES = "Notes"
|
||||
VERSION = "Version"
|
||||
AUTHOR = "Auteur"
|
||||
DATE = "Date"
|
||||
CATEGORY = "Cat\195\169gorie"
|
||||
EMAIL = "E-mail"
|
||||
WEBSITE = "Site web"
|
||||
CREDITS = "Credits" -- fix
|
||||
|
||||
ABOUT = "A propos"
|
||||
PRINT_ADDON_INFO = "Afficher les informations sur l'addon"
|
||||
|
||||
CATEGORIES = {
|
||||
["Action Bars"] = "Barres d'action",
|
||||
["Auction"] = "H\195\180tel des ventes",
|
||||
["Audio"] = "Audio",
|
||||
["Battlegrounds/PvP"] = "Champs de bataille/JcJ",
|
||||
["Buffs"] = "Buffs",
|
||||
["Chat/Communication"] = "Chat/Communication",
|
||||
["Druid"] = "Druide",
|
||||
["Hunter"] = "Chasseur",
|
||||
["Mage"] = "Mage",
|
||||
["Paladin"] = "Paladin",
|
||||
["Priest"] = "Pr\195\170tre",
|
||||
["Rogue"] = "Voleur",
|
||||
["Shaman"] = "Chaman",
|
||||
["Warlock"] = "D\195\169moniste",
|
||||
["Warrior"] = "Guerrier",
|
||||
["Healer"] = "Soigneur",
|
||||
["Tank"] = "Tank",
|
||||
["Caster"] = "Casteur",
|
||||
["Combat"] = "Combat",
|
||||
["Compilations"] = "Compilations",
|
||||
["Data Export"] = "Exportation de donn\195\169es",
|
||||
["Development Tools"] = "Outils de d\195\169veloppement",
|
||||
["Guild"] = "Guilde",
|
||||
["Frame Modification"] = "Modification des fen\195\170tres",
|
||||
["Interface Enhancements"] = "Am\195\169liorations de l'interface",
|
||||
["Inventory"] = "Inventaire",
|
||||
["Library"] = "Biblioth\195\168ques",
|
||||
["Map"] = "Carte",
|
||||
["Mail"] = "Courrier",
|
||||
["Miscellaneous"] = "Divers",
|
||||
["Quest"] = "Qu\195\170tes",
|
||||
["Raid"] = "Raid",
|
||||
["Tradeskill"] = "M\195\169tiers",
|
||||
["UnitFrame"] = "Fen\195\170tres d'unit\195\169",
|
||||
}
|
||||
elseif GetLocale() == "koKR" then
|
||||
STANDBY = "|cffff5050(사용가능)|r"
|
||||
|
||||
TITLE = "ì œëª©"
|
||||
NOTES = "노트"
|
||||
VERSION = "ë²„ì „"
|
||||
AUTHOR = "ì €ìž‘ìž�"
|
||||
DATE = "ë‚ ì§œ"
|
||||
CATEGORY = "분류"
|
||||
EMAIL = "E-mail"
|
||||
WEBSITE = "웹사�트"
|
||||
CREDITS = "Credits" -- fix
|
||||
|
||||
ABOUT = "ì •ë³´"
|
||||
PRINT_ADDON_INFO = "ì• ë“œì˜¨ ì •ë³´ ì¶œë ¥"
|
||||
|
||||
CATEGORIES = {
|
||||
["Action Bars"] = "액션바",
|
||||
["Auction"] = "경매",
|
||||
["Audio"] = "�향",
|
||||
["Battlegrounds/PvP"] = "ì „ìž¥/PvP",
|
||||
["Buffs"] = "버프",
|
||||
["Chat/Communication"] = "대화/�사소통",
|
||||
["Druid"] = "드루�드",
|
||||
["Hunter"] = "사냥꾼",
|
||||
["Mage"] = "마법사",
|
||||
["Paladin"] = "성기사",
|
||||
["Priest"] = "ì‚¬ì œ",
|
||||
["Rogue"] = "ë�„ì �",
|
||||
["Shaman"] = "ì£¼ìˆ ì‚¬",
|
||||
["Warlock"] = "�마법사",
|
||||
["Warrior"] = "ì „ì‚¬",
|
||||
["Healer"] = "�러",
|
||||
["Tank"] = "탱커",
|
||||
["Caster"] = "�스터",
|
||||
["Combat"] = "ì „íˆ¬",
|
||||
["Compilations"] = "복합",
|
||||
["Data Export"] = "ìž�료 ì¶œë ¥",
|
||||
["Development Tools"] = "개발 �구",
|
||||
["Guild"] = "길드",
|
||||
["Frame Modification"] = "구조 변경",
|
||||
["Interface Enhancements"] = "�터페�스 강화",
|
||||
["Inventory"] = "ì�¸ë²¤í† 리",
|
||||
["Library"] = "��브러리",
|
||||
["Map"] = "지�",
|
||||
["Mail"] = "우편",
|
||||
["Miscellaneous"] = "기타",
|
||||
["Quest"] = "퀘스트",
|
||||
["Raid"] = "공격대",
|
||||
["Tradeskill"] = "ì „ë¬¸ê¸°ìˆ ",
|
||||
["UnitFrame"] = "ìœ ë‹› í”„ë ˆìž„",
|
||||
}
|
||||
elseif GetLocale() == "zhTW" then
|
||||
STANDBY = "|cffff5050(待命)|r"
|
||||
|
||||
TITLE = "標題"
|
||||
NOTES = "註記"
|
||||
VERSION = "版本"
|
||||
AUTHOR = "作者"
|
||||
DATE = "日期"
|
||||
CATEGORY = "類別"
|
||||
EMAIL = "E-mail"
|
||||
WEBSITE = "網站"
|
||||
CREDITS = "Credits" -- fix
|
||||
|
||||
ABOUT = "關於"
|
||||
PRINT_ADDON_INFO = "顯示�件資訊"
|
||||
|
||||
CATEGORIES = {
|
||||
["Action Bars"] = "動作列",
|
||||
["Auction"] = "�賣",
|
||||
["Audio"] = "音樂",
|
||||
["Battlegrounds/PvP"] = "æˆ°å ´/PvP",
|
||||
["Buffs"] = "增益",
|
||||
["Chat/Communication"] = "�天/通訊",
|
||||
["Druid"] = "å¾·é¯ä¼Š",
|
||||
["Hunter"] = "�人",
|
||||
["Mage"] = "法師",
|
||||
["Paladin"] = "�騎士",
|
||||
["Priest"] = "牧師",
|
||||
["Rogue"] = "盜賊",
|
||||
["Shaman"] = "薩滿",
|
||||
["Warlock"] = "術士",
|
||||
["Warrior"] = "戰士",
|
||||
["Healer"] = "治療者",
|
||||
["Tank"] = "�克",
|
||||
["Caster"] = "施法者",
|
||||
["Combat"] = "戰鬥",
|
||||
["Compilations"] = "編輯",
|
||||
["Data Export"] = "資料匯出",
|
||||
["Development Tools"] = "開發工具",
|
||||
["Guild"] = "公會",
|
||||
["Frame Modification"] = "框架修改",
|
||||
["Interface Enhancements"] = "介�增強",
|
||||
["Inventory"] = "背包",
|
||||
["Library"] = "資料庫",
|
||||
["Map"] = "地圖",
|
||||
["Mail"] = "郵件",
|
||||
["Miscellaneous"] = "綜�",
|
||||
["Quest"] = "任務",
|
||||
["Raid"] = "團隊",
|
||||
["Tradeskill"] = "å•†æ¥æŠ€èƒ½",
|
||||
["UnitFrame"] = "單�框架",
|
||||
}
|
||||
elseif GetLocale() == "zhCN" then
|
||||
STANDBY = "|cffff5050(\230\154\130\230\140\130)|r"
|
||||
|
||||
TITLE = "\230\160\135\233\162\152"
|
||||
NOTES = "\233\153\132\230\179\168"
|
||||
VERSION = "\231\137\136\230\156\172"
|
||||
AUTHOR = "\228\189\156\232\128\133"
|
||||
DATE = "\230\151\165\230\156\159"
|
||||
CATEGORY = "\229\136\134\231\177\187"
|
||||
EMAIL = "\231\148\181\229\173\144\233\130\174\228\187\182"
|
||||
WEBSITE = "\231\189\145\231\171\153"
|
||||
CREDITS = "Credits" -- fix
|
||||
|
||||
ABOUT = "\229\133\179\228\186\142"
|
||||
PRINT_ADDON_INFO = "\229\141\176\229\136\151\229\135\186\230\143\146\228\187\182\228\191\161\230\129\175"
|
||||
|
||||
CATEGORIES = {
|
||||
["Action Bars"] = "\229\138\168\228\189\156\230\157\161",
|
||||
["Auction"] = "\230\139\141\229\141\150",
|
||||
["Audio"] = "\233\159\179\233\162\145",
|
||||
["Battlegrounds/PvP"] = "\230\136\152\229\156\186/PvP",
|
||||
["Buffs"] = "\229\162\158\231\155\138\233\173\148\230\179\149",
|
||||
["Chat/Communication"] = "\232\129\138\229\164\169/\228\186\164\230\181\129",
|
||||
["Druid"] = "\229\190\183\233\178\129\228\188\138",
|
||||
["Hunter"] = "\231\140\142\228\186\186",
|
||||
["Mage"] = "\230\179\149\229\184\136",
|
||||
["Paladin"] = "\229\156\163\233\170\145\229\163\171",
|
||||
["Priest"] = "\231\137\167\229\184\136",
|
||||
["Rogue"] = "\231\155\151\232\180\188",
|
||||
["Shaman"] = "\232\144\168\230\187\161\231\165\173\229\143\184",
|
||||
["Warlock"] = "\230\156\175\229\163\171",
|
||||
["Warrior"] = "\230\136\152\229\163\171",
|
||||
-- ["Healer"] = "\230\178\187\231\150\151\228\191\157\233\154\156",
|
||||
-- ["Tank"] = "\232\191\145\230\136\152\230\142\167\229\136\182",
|
||||
-- ["Caster"] = "\232\191\156\231\168\139\232\190\147\229\135\186",
|
||||
["Combat"] = "\230\136\152\230\150\151",
|
||||
["Compilations"] = "\231\188\150\232\175\145",
|
||||
["Data Export"] = "\230\149\176\230\141\174\229\175\188\229\135\186",
|
||||
["Development Tools"] = "\229\188\128\229\143\145\229\183\165\229\133\183",
|
||||
["Guild"] = "\229\133\172\228\188\154",
|
||||
["Frame Modification"] = "\230\161\134\230\158\182\228\191\174\230\148\185",
|
||||
["Interface Enhancements"] = "\231\149\140\233\157\162\229\162\158\229\188\186",
|
||||
["Inventory"] = "\232\131\140\229\140\133",
|
||||
["Library"] = "\229\186\147",
|
||||
["Map"] = "\229\156\176\229\155\190",
|
||||
["Mail"] = "\233\130\174\228\187\182",
|
||||
["Miscellaneous"] = "\230\157\130\233\161\185",
|
||||
["Quest"] = "\228\187\187\229\138\161",
|
||||
["Raid"] = "\229\155\162\233\152\159",
|
||||
["Tradeskill"] = "\229\149\134\228\184\154\230\138\128\232\131\189",
|
||||
["UnitFrame"] = "\229\164\180\229\131\143\230\161\134\230\158\182",
|
||||
}
|
||||
else -- enUS
|
||||
STANDBY = "|cffff5050(standby)|r"
|
||||
|
||||
TITLE = "Title"
|
||||
NOTES = "Notes"
|
||||
VERSION = "Version"
|
||||
AUTHOR = "Author"
|
||||
DATE = "Date"
|
||||
CATEGORY = "Category"
|
||||
EMAIL = "E-mail"
|
||||
WEBSITE = "Website"
|
||||
CREDITS = "Credits"
|
||||
|
||||
ABOUT = "About"
|
||||
PRINT_ADDON_INFO = "Print out addon info"
|
||||
|
||||
CATEGORIES = {
|
||||
["Action Bars"] = "Action Bars",
|
||||
["Auction"] = "Auction",
|
||||
["Audio"] = "Audio",
|
||||
["Battlegrounds/PvP"] = "Battlegrounds/PvP",
|
||||
["Buffs"] = "Buffs",
|
||||
["Chat/Communication"] = "Chat/Communication",
|
||||
["Druid"] = "Druid",
|
||||
["Hunter"] = "Hunter",
|
||||
["Mage"] = "Mage",
|
||||
["Paladin"] = "Paladin",
|
||||
["Priest"] = "Priest",
|
||||
["Rogue"] = "Rogue",
|
||||
["Shaman"] = "Shaman",
|
||||
["Warlock"] = "Warlock",
|
||||
["Warrior"] = "Warrior",
|
||||
["Healer"] = "Healer",
|
||||
["Tank"] = "Tank",
|
||||
["Caster"] = "Caster",
|
||||
["Combat"] = "Combat",
|
||||
["Compilations"] = "Compilations",
|
||||
["Data Export"] = "Data Export",
|
||||
["Development Tools"] = "Development Tools",
|
||||
["Guild"] = "Guild",
|
||||
["Frame Modification"] = "Frame Modification",
|
||||
["Interface Enhancements"] = "Interface Enhancements",
|
||||
["Inventory"] = "Inventory",
|
||||
["Library"] = "Library",
|
||||
["Map"] = "Map",
|
||||
["Mail"] = "Mail",
|
||||
["Miscellaneous"] = "Miscellaneous",
|
||||
["Quest"] = "Quest",
|
||||
["Raid"] = "Raid",
|
||||
["Tradeskill"] = "Tradeskill",
|
||||
["UnitFrame"] = "UnitFrame",
|
||||
}
|
||||
end
|
||||
|
||||
setmetatable(CATEGORIES, { __index = function(self, key) -- case-insensitive
|
||||
local lowerKey = string.lower(key)
|
||||
for k,v in pairs(CATEGORIES) do
|
||||
if string.lower(k) == lowerKey then
|
||||
return v
|
||||
end
|
||||
end
|
||||
end })
|
||||
|
||||
-- Create the library object
|
||||
|
||||
local AceOO = AceLibrary("AceOO-2.0")
|
||||
local AceAddon = AceOO.Class()
|
||||
local AceEvent
|
||||
local AceConsole
|
||||
local AceModuleCore
|
||||
|
||||
function AceAddon:ToString()
|
||||
return "AceAddon"
|
||||
end
|
||||
|
||||
local function print(text)
|
||||
DEFAULT_CHAT_FRAME:AddMessage(text)
|
||||
end
|
||||
|
||||
function AceAddon:ADDON_LOADED(name)
|
||||
while table.getn(self.nextAddon) > 0 do
|
||||
local addon = table.remove(self.nextAddon, 1)
|
||||
table.insert(self.addons, addon)
|
||||
if not self.addons[name] then
|
||||
self.addons[name] = addon
|
||||
end
|
||||
self:InitializeAddon(addon, name)
|
||||
end
|
||||
end
|
||||
|
||||
local function RegisterOnEnable(self)
|
||||
if DEFAULT_CHAT_FRAME and DEFAULT_CHAT_FRAME.defaultLanguage then -- HACK
|
||||
AceAddon.playerLoginFired = true
|
||||
end
|
||||
if AceAddon.playerLoginFired then
|
||||
AceAddon.addonsStarted[self] = true
|
||||
if (type(self.IsActive) ~= "function" or self:IsActive()) and (not AceModuleCore or not AceModuleCore:IsModule(self) or AceModuleCore:IsModuleActive(self)) then
|
||||
local current = self.class
|
||||
while true do
|
||||
if current == AceOO.Class then
|
||||
break
|
||||
end
|
||||
if current.mixins then
|
||||
for mixin in pairs(current.mixins) do
|
||||
if type(mixin.OnEmbedEnable) == "function" then
|
||||
mixin:OnEmbedEnable(self)
|
||||
end
|
||||
end
|
||||
end
|
||||
current = current.super
|
||||
end
|
||||
if type(self.OnEnable) == "function" then
|
||||
self:OnEnable()
|
||||
end
|
||||
end
|
||||
else
|
||||
if not AceAddon.addonsToOnEnable then
|
||||
AceAddon.addonsToOnEnable = {}
|
||||
end
|
||||
table.insert(AceAddon.addonsToOnEnable, self)
|
||||
end
|
||||
end
|
||||
|
||||
local function stripSpaces(text)
|
||||
if type(text) == "string" then
|
||||
return (string.gsub(string.gsub(text, "^%s*(.-)%s*$", "%1"), "%s%s+", " "))
|
||||
end
|
||||
return text
|
||||
end
|
||||
|
||||
function AceAddon:InitializeAddon(addon, name)
|
||||
if addon.name == nil then
|
||||
addon.name = name
|
||||
end
|
||||
if GetAddOnMetadata then
|
||||
-- TOC checks
|
||||
if addon.title == nil then
|
||||
addon.title = GetAddOnMetadata(name, "Title")
|
||||
if addon.title then
|
||||
local num = string.find(addon.title, " |cff7fff7f %-Ace2%-|r$")
|
||||
if num then
|
||||
addon.title = string.sub(addon.title, 1, num - 1)
|
||||
end
|
||||
addon.title = stripSpaces(addon.title)
|
||||
end
|
||||
end
|
||||
if addon.notes == nil then
|
||||
addon.notes = GetAddOnMetadata(name, "Notes")
|
||||
addon.notes = stripSpaces(addon.notes)
|
||||
end
|
||||
if addon.version == nil then
|
||||
addon.version = GetAddOnMetadata(name, "Version")
|
||||
if addon.version then
|
||||
if string.find(addon.version, "%$Revision: (%d+) %$") then
|
||||
addon.version = string.gsub(addon.version, "%$Revision: (%d+) %$", "%1")
|
||||
elseif string.find(addon.version, "%$Rev: (%d+) %$") then
|
||||
addon.version = string.gsub(addon.version, "%$Rev: (%d+) %$", "%1")
|
||||
elseif string.find(addon.version, "%$LastChangedRevision: (%d+) %$") then
|
||||
addon.version = string.gsub(addon.version, "%$LastChangedRevision: (%d+) %$", "%1")
|
||||
end
|
||||
end
|
||||
addon.version = stripSpaces(addon.version)
|
||||
end
|
||||
if addon.author == nil then
|
||||
addon.author = GetAddOnMetadata(name, "Author")
|
||||
addon.author = stripSpaces(addon.author)
|
||||
end
|
||||
if addon.credits == nil then
|
||||
addon.credits = GetAddOnMetadata(name, "X-Credits")
|
||||
addon.credits = stripSpaces(addon.credits)
|
||||
end
|
||||
if addon.date == nil then
|
||||
addon.date = GetAddOnMetadata(name, "X-Date") or GetAddOnMetadata(name, "X-ReleaseDate")
|
||||
if addon.date then
|
||||
if string.find(addon.date, "%$Date: (.-) %$") then
|
||||
addon.date = string.gsub(addon.date, "%$Date: (.-) %$", "%1")
|
||||
elseif string.find(addon.date, "%$LastChangedDate: (.-) %$") then
|
||||
addon.date = string.gsub(addon.date, "%$LastChangedDate: (.-) %$", "%1")
|
||||
end
|
||||
end
|
||||
addon.date = stripSpaces(addon.date)
|
||||
end
|
||||
if addon.category == nil then
|
||||
addon.category = GetAddOnMetadata(name, "X-Category")
|
||||
addon.category = stripSpaces(addon.category)
|
||||
end
|
||||
if addon.email == nil then
|
||||
addon.email = GetAddOnMetadata(name, "X-eMail") or GetAddOnMetadata(name, "X-Email")
|
||||
addon.email = stripSpaces(addon.email)
|
||||
end
|
||||
if addon.website == nil then
|
||||
addon.website = GetAddOnMetadata(name, "X-Website")
|
||||
addon.website = stripSpaces(addon.website)
|
||||
end
|
||||
end
|
||||
local current = addon.class
|
||||
while true do
|
||||
if current == AceOO.Class then
|
||||
break
|
||||
end
|
||||
if current.mixins then
|
||||
for mixin in pairs(current.mixins) do
|
||||
if type(mixin.OnEmbedInitialize) == "function" then
|
||||
mixin:OnEmbedInitialize(addon, name)
|
||||
end
|
||||
end
|
||||
end
|
||||
current = current.super
|
||||
end
|
||||
if type(addon.OnInitialize) == "function" then
|
||||
addon:OnInitialize(name)
|
||||
end
|
||||
RegisterOnEnable(addon)
|
||||
end
|
||||
|
||||
function AceAddon.prototype:PrintAddonInfo()
|
||||
local x
|
||||
if self.title then
|
||||
x = "|cffffff7f" .. tostring(self.title) .. "|r"
|
||||
elseif self.name then
|
||||
x = "|cffffff7f" .. tostring(self.name) .. "|r"
|
||||
else
|
||||
x = "|cffffff7f<" .. tostring(self.class) .. " instance>|r"
|
||||
end
|
||||
if type(self.IsActive) == "function" then
|
||||
if not self:IsActive() then
|
||||
x = x .. " " .. STANDBY
|
||||
end
|
||||
end
|
||||
if self.version then
|
||||
x = x .. " - |cffffff7f" .. tostring(self.version) .. "|r"
|
||||
end
|
||||
if self.notes then
|
||||
x = x .. " - " .. tostring(self.notes)
|
||||
end
|
||||
print(x)
|
||||
if self.author then
|
||||
print(" - |cffffff7f" .. AUTHOR .. ":|r " .. tostring(self.author))
|
||||
end
|
||||
if self.credits then
|
||||
print(" - |cffffff7f" .. CREDITS .. ":|r " .. tostring(self.credits))
|
||||
end
|
||||
if self.date then
|
||||
print(" - |cffffff7f" .. DATE .. ":|r " .. tostring(self.date))
|
||||
end
|
||||
if self.category then
|
||||
local category = CATEGORIES[self.category]
|
||||
if category then
|
||||
print(" - |cffffff7f" .. CATEGORY .. ":|r " .. category)
|
||||
end
|
||||
end
|
||||
if self.email then
|
||||
print(" - |cffffff7f" .. EMAIL .. ":|r " .. tostring(self.email))
|
||||
end
|
||||
if self.website then
|
||||
print(" - |cffffff7f" .. WEBSITE .. ":|r " .. tostring(self.website))
|
||||
end
|
||||
end
|
||||
|
||||
local options
|
||||
function AceAddon:GetAceOptionsDataTable(target)
|
||||
if not options then
|
||||
options = {
|
||||
about = {
|
||||
name = ABOUT,
|
||||
desc = PRINT_ADDON_INFO,
|
||||
type = "execute",
|
||||
func = "PrintAddonInfo",
|
||||
order = -1,
|
||||
}
|
||||
}
|
||||
end
|
||||
return options
|
||||
end
|
||||
|
||||
function AceAddon:PLAYER_LOGIN()
|
||||
self.playerLoginFired = true
|
||||
if self.addonsToOnEnable then
|
||||
while table.getn(self.addonsToOnEnable) > 0 do
|
||||
local addon = table.remove(self.addonsToOnEnable, 1)
|
||||
self.addonsStarted[addon] = true
|
||||
if (type(addon.IsActive) ~= "function" or addon:IsActive()) and (not AceModuleCore or not AceModuleCore:IsModule(addon) or AceModuleCore:IsModuleActive(addon)) then
|
||||
local current = addon.class
|
||||
while true do
|
||||
if current == AceOO.Class then
|
||||
break
|
||||
end
|
||||
if current.mixins then
|
||||
for mixin in pairs(current.mixins) do
|
||||
if type(mixin.OnEmbedEnable) == "function" then
|
||||
mixin:OnEmbedEnable(addon)
|
||||
end
|
||||
end
|
||||
end
|
||||
current = current.super
|
||||
end
|
||||
if type(addon.OnEnable) == "function" then
|
||||
addon:OnEnable()
|
||||
end
|
||||
end
|
||||
end
|
||||
self.addonsToOnEnable = nil
|
||||
end
|
||||
end
|
||||
|
||||
function AceAddon.prototype:Inject(t)
|
||||
AceAddon:argCheck(t, 2, "table")
|
||||
for k,v in pairs(t) do
|
||||
self[k] = v
|
||||
end
|
||||
end
|
||||
|
||||
function AceAddon.prototype:init()
|
||||
if not AceEvent then
|
||||
error(MAJOR_VERSION .. " requires AceEvent-2.0", 4)
|
||||
end
|
||||
AceAddon.super.prototype.init(self)
|
||||
|
||||
self.super = self.class.prototype
|
||||
|
||||
AceAddon:RegisterEvent("ADDON_LOADED", "ADDON_LOADED", true)
|
||||
table.insert(AceAddon.nextAddon, self)
|
||||
end
|
||||
|
||||
function AceAddon.prototype:ToString()
|
||||
local x
|
||||
if type(self.title) == "string" then
|
||||
x = self.title
|
||||
elseif type(self.name) == "string" then
|
||||
x = self.name
|
||||
else
|
||||
x = "<" .. tostring(self.class) .. " instance>"
|
||||
end
|
||||
if (type(self.IsActive) == "function" and not self:IsActive()) or (AceModuleCore and AceModuleCore:IsModule(addon) and AceModuleCore:IsModuleActive(addon)) then
|
||||
x = x .. " " .. STANDBY
|
||||
end
|
||||
return x
|
||||
end
|
||||
|
||||
AceAddon.new = function(self, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20)
|
||||
local class = AceAddon:pcall(AceOO.Classpool, self, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20)
|
||||
return class:new()
|
||||
end
|
||||
|
||||
local function external(self, major, instance)
|
||||
if major == "AceEvent-2.0" then
|
||||
AceEvent = instance
|
||||
|
||||
AceEvent:embed(self)
|
||||
|
||||
self:RegisterEvent("PLAYER_LOGIN", "PLAYER_LOGIN", true)
|
||||
elseif major == "AceConsole-2.0" then
|
||||
AceConsole = instance
|
||||
|
||||
local slashCommands = { "/ace2" }
|
||||
local _,_,_,enabled,loadable = GetAddOnInfo("Ace")
|
||||
if not enabled or not loadable then
|
||||
table.insert(slashCommands, "/ace")
|
||||
end
|
||||
local function listAddon(addon, depth)
|
||||
if not depth then
|
||||
depth = 0
|
||||
end
|
||||
|
||||
local s = string.rep(" ", depth) .. " - " .. tostring(addon)
|
||||
if rawget(addon, 'version') then
|
||||
s = s .. " - |cffffff7f" .. tostring(addon.version) .. "|r"
|
||||
end
|
||||
if rawget(addon, 'slashCommand') then
|
||||
s = s .. " |cffffff7f(" .. tostring(addon.slashCommand) .. ")|r"
|
||||
end
|
||||
print(s)
|
||||
if type(rawget(addon, 'modules')) == "table" then
|
||||
local i = 0
|
||||
for k,v in pairs(addon.modules) do
|
||||
i = i + 1
|
||||
if i == 6 then
|
||||
print(string.rep(" ", depth + 1) .. " - more...")
|
||||
break
|
||||
else
|
||||
listAddon(v, depth + 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
local function listNormalAddon(i)
|
||||
local name,_,_,enabled,loadable = GetAddOnInfo(i)
|
||||
if not loadable then
|
||||
enabled = false
|
||||
end
|
||||
if self.addons[name] then
|
||||
local addon = self.addons[name]
|
||||
if not AceCoreAddon or not AceCoreAddon:IsModule(addon) then
|
||||
listAddon(addon)
|
||||
end
|
||||
else
|
||||
local s = " - " .. tostring(GetAddOnMetadata(i, "Title") or name)
|
||||
local version = GetAddOnMetadata(i, "Version")
|
||||
if version then
|
||||
if string.find(version, "%$Revision: (%d+) %$") then
|
||||
version = string.gsub(version, "%$Revision: (%d+) %$", "%1")
|
||||
elseif string.find(version, "%$Rev: (%d+) %$") then
|
||||
version = string.gsub(version, "%$Rev: (%d+) %$", "%1")
|
||||
elseif string.find(version, "%$LastChangedRevision: (%d+) %$") then
|
||||
version = string.gsub(version, "%$LastChangedRevision: (%d+) %$", "%1")
|
||||
end
|
||||
s = s .. " - |cffffff7f" .. version .. "|r"
|
||||
end
|
||||
if not enabled then
|
||||
s = s .. " |cffff0000(disabled)|r"
|
||||
end
|
||||
if IsAddOnLoadOnDemand(i) then
|
||||
s = s .. " |cff00ff00[LoD]|r"
|
||||
end
|
||||
print(s)
|
||||
end
|
||||
end
|
||||
local function mySort(alpha, bravo)
|
||||
return tostring(alpha) < tostring(bravo)
|
||||
end
|
||||
AceConsole.RegisterChatCommand(self, slashCommands, {
|
||||
desc = "AddOn development framework",
|
||||
name = "Ace2",
|
||||
type = "group",
|
||||
args = {
|
||||
about = {
|
||||
desc = "Get information about Ace2",
|
||||
name = "About",
|
||||
type = "execute",
|
||||
func = function()
|
||||
print("|cffffff7fAce2|r - |cffffff7f2.0." .. string.gsub(MINOR_VERSION, "%$Revision: (%d+) %$", "%1") .. "|r - AddOn development framework")
|
||||
print(" - |cffffff7f" .. AUTHOR .. ":|r Ace Development Team")
|
||||
print(" - |cffffff7f" .. WEBSITE .. ":|r http://www.wowace.com/")
|
||||
end
|
||||
},
|
||||
list = {
|
||||
desc = "List addons",
|
||||
name = "List",
|
||||
type = "group",
|
||||
args = {
|
||||
ace2 = {
|
||||
desc = "List addons using Ace2",
|
||||
name = "Ace2",
|
||||
type = "execute",
|
||||
func = function()
|
||||
print("|cffffff7fAddon list:|r")
|
||||
local AceCoreAddon = AceLibrary:HasInstance("AceCoreAddon-2.0") and AceLibrary("AceCoreAddon-2.0")
|
||||
table.sort(self.addons, mySort)
|
||||
for _,v in ipairs(self.addons) do
|
||||
if not AceCoreAddon or not AceCoreAddon:IsModule(v) then
|
||||
listAddon(v)
|
||||
end
|
||||
end
|
||||
end
|
||||
},
|
||||
all = {
|
||||
desc = "List all addons",
|
||||
name = "All",
|
||||
type = "execute",
|
||||
func = function()
|
||||
print("|cffffff7fAddon list:|r")
|
||||
local AceCoreAddon = AceLibrary:HasInstance("AceCoreAddon-2.0") and AceLibrary("AceCoreAddon-2.0")
|
||||
local count = GetNumAddOns()
|
||||
for i = 1, count do
|
||||
listNormalAddon(i)
|
||||
end
|
||||
end
|
||||
},
|
||||
enabled = {
|
||||
desc = "List all enabled addons",
|
||||
name = "Enabled",
|
||||
type = "execute",
|
||||
func = function()
|
||||
print("|cffffff7fAddon list:|r")
|
||||
local AceCoreAddon = AceLibrary:HasInstance("AceCoreAddon-2.0") and AceLibrary("AceCoreAddon-2.0")
|
||||
local count = GetNumAddOns()
|
||||
for i = 1, count do
|
||||
local _,_,_,enabled,loadable = GetAddOnInfo(i)
|
||||
if enabled and loadable then
|
||||
listNormalAddon(i)
|
||||
end
|
||||
end
|
||||
end
|
||||
},
|
||||
disabled = {
|
||||
desc = "List all disabled addons",
|
||||
name = "Disabled",
|
||||
type = "execute",
|
||||
func = function()
|
||||
print("|cffffff7fAddon list:|r")
|
||||
local AceCoreAddon = AceLibrary:HasInstance("AceCoreAddon-2.0") and AceLibrary("AceCoreAddon-2.0")
|
||||
local count = GetNumAddOns()
|
||||
for i = 1, count do
|
||||
local _,_,_,enabled,loadable = GetAddOnInfo(i)
|
||||
if not enabled or not loadable then
|
||||
listNormalAddon(i)
|
||||
end
|
||||
end
|
||||
end
|
||||
},
|
||||
lod = {
|
||||
desc = "List all LoadOnDemand addons",
|
||||
name = "LoadOnDemand",
|
||||
type = "execute",
|
||||
func = function()
|
||||
print("|cffffff7fAddon list:|r")
|
||||
local AceCoreAddon = AceLibrary:HasInstance("AceCoreAddon-2.0") and AceLibrary("AceCoreAddon-2.0")
|
||||
local count = GetNumAddOns()
|
||||
for i = 1, count do
|
||||
if IsAddOnLoadOnDemand(i) then
|
||||
listNormalAddon(i)
|
||||
end
|
||||
end
|
||||
end
|
||||
},
|
||||
ace1 = {
|
||||
desc = "List all addons using Ace1",
|
||||
name = "Ace 1.x",
|
||||
type = "execute",
|
||||
func = function()
|
||||
print("|cffffff7fAddon list:|r")
|
||||
local count = GetNumAddOns()
|
||||
for i = 1, count do
|
||||
local dep1, dep2, dep3, dep4 = GetAddOnDependencies(i)
|
||||
if dep1 == "Ace" or dep2 == "Ace" or dep3 == "Ace" or dep4 == "Ace" then
|
||||
listNormalAddon(i)
|
||||
end
|
||||
end
|
||||
end
|
||||
},
|
||||
libs = {
|
||||
desc = "List all libraries using AceLibrary",
|
||||
name = "Libraries",
|
||||
type = "execute",
|
||||
func = function()
|
||||
if type(AceLibrary) == "table" and type(AceLibrary.libs) == "table" then
|
||||
print("|cffffff7fLibrary list:|r")
|
||||
for name, data in pairs(AceLibrary.libs) do
|
||||
local s
|
||||
if data.minor then
|
||||
s = " - " .. tostring(name) .. "." .. tostring(data.minor)
|
||||
else
|
||||
s = " - " .. tostring(name)
|
||||
end
|
||||
if AceLibrary(name).slashCommand then
|
||||
s = s .. " |cffffff7f(" .. tostring(AceLibrary(name).slashCommand) .. "|cffffff7f)"
|
||||
end
|
||||
print(s)
|
||||
end
|
||||
end
|
||||
end
|
||||
},
|
||||
search = {
|
||||
desc = "Search by name",
|
||||
name = "Search",
|
||||
type = "text",
|
||||
usage = "<keyword>",
|
||||
input = true,
|
||||
get = false,
|
||||
set = function(...)
|
||||
for i,v in ipairs(arg) do
|
||||
arg[i] = string.lower(string.gsub(string.gsub(v, '%*', '.*'), '%%', '%%%%'))
|
||||
end
|
||||
local count = GetNumAddOns()
|
||||
for i = 1, count do
|
||||
local name = GetAddOnInfo(i)
|
||||
local good = true
|
||||
for _,v in ipairs(arg) do
|
||||
if not string.find(string.lower(name), v) then
|
||||
good = false
|
||||
break
|
||||
end
|
||||
end
|
||||
if good then
|
||||
listNormalAddon(i)
|
||||
end
|
||||
end
|
||||
end
|
||||
}
|
||||
},
|
||||
},
|
||||
enable = {
|
||||
desc = "Enable addon",
|
||||
name = "Enable",
|
||||
type = "text",
|
||||
usage = "<addon>",
|
||||
get = false,
|
||||
set = function(text)
|
||||
local name,title,_,_,_,reason = GetAddOnInfo(text)
|
||||
if reason == "MISSING" then
|
||||
print(string.format("|cffffff7fAce2:|r AddOn %q does not exist", text))
|
||||
else
|
||||
EnableAddOn(text)
|
||||
print(string.format("|cffffff7fAce2:|r %s is now enabled", title or name))
|
||||
end
|
||||
end,
|
||||
},
|
||||
disable = {
|
||||
desc = "Disable addon",
|
||||
name = "Disable",
|
||||
type = "text",
|
||||
usage = "<addon>",
|
||||
get = false,
|
||||
set = function(text)
|
||||
local name,title,_,_,_,reason = GetAddOnInfo(text)
|
||||
if reason == "MISSING" then
|
||||
print(string.format("|cffffff7fAce2:|r AddOn %q does not exist", text))
|
||||
else
|
||||
DisableAddOn(text)
|
||||
print(string.format("|cffffff7fAce2:|r %s is now disabled", title or name))
|
||||
end
|
||||
end,
|
||||
},
|
||||
load = {
|
||||
desc = "Load addon",
|
||||
name = "Load",
|
||||
type = "text",
|
||||
usage = "<addon>",
|
||||
get = false,
|
||||
set = function(text)
|
||||
local name,title,_,_,loadable,reason = GetAddOnInfo(text)
|
||||
if reason == "MISSING" then
|
||||
print(string.format("|cffffff7fAce2:|r AddOn %q does not exist.", text))
|
||||
elseif not loadable then
|
||||
print(string.format("|cffffff7fAce2:|r AddOn %q is not loadable. Reason: %s", text, reason))
|
||||
else
|
||||
LoadAddOn(text)
|
||||
print(string.format("|cffffff7fAce2:|r %s is now loaded", title or name))
|
||||
end
|
||||
end
|
||||
},
|
||||
info = {
|
||||
desc = "Display information",
|
||||
name = "Information",
|
||||
type = "execute",
|
||||
func = function()
|
||||
local mem, threshold = gcinfo()
|
||||
print(string.format(" - |cffffff7fMemory usage [|r%.3f MiB|cffffff7f]|r", mem / 1024))
|
||||
print(string.format(" - |cffffff7fThreshold [|r%.3f MiB|cffffff7f]|r", threshold / 1024))
|
||||
print(string.format(" - |cffffff7fFramerate [|r%.0f fps|cffffff7f]|r", GetFramerate()))
|
||||
local bandwidthIn, bandwidthOut, latency = GetNetStats()
|
||||
bandwidthIn, bandwidthOut = floor(bandwidthIn * 1024), floor(bandwidthOut * 1024)
|
||||
print(string.format(" - |cffffff7fLatency [|r%.0f ms|cffffff7f]|r", latency))
|
||||
print(string.format(" - |cffffff7fBandwidth in [|r%.0f B/s|cffffff7f]|r", bandwidthIn))
|
||||
print(string.format(" - |cffffff7fBandwidth out [|r%.0f B/s|cffffff7f]|r", bandwidthOut))
|
||||
print(string.format(" - |cffffff7fTotal addons [|r%d|cffffff7f]|r", GetNumAddOns()))
|
||||
print(string.format(" - |cffffff7fAce2 addons [|r%d|cffffff7f]|r", table.getn(self.addons)))
|
||||
local ace = 0
|
||||
local enabled = 0
|
||||
local disabled = 0
|
||||
local lod = 0
|
||||
for i = 1, GetNumAddOns() do
|
||||
local dep1, dep2, dep3, dep4 = GetAddOnDependencies(i)
|
||||
if dep1 == "Ace" or dep2 == "Ace" or dep3 == "Ace" or dep4 == "Ace" then
|
||||
ace = ace + 1
|
||||
end
|
||||
if IsAddOnLoadOnDemand(i) then
|
||||
lod = lod + 1
|
||||
end
|
||||
local _,_,_,IsActive,loadable = GetAddOnInfo(i)
|
||||
if not IsActive or not loadable then
|
||||
disabled = disabled + 1
|
||||
else
|
||||
enabled = enabled + 1
|
||||
end
|
||||
end
|
||||
print(string.format(" - |cffffff7fAce 1.x addons [|r%d|cffffff7f]|r", ace))
|
||||
print(string.format(" - |cffffff7fLoadOnDemand addons [|r%d|cffffff7f]|r", lod))
|
||||
print(string.format(" - |cffffff7fenabled addons [|r%d|cffffff7f]|r", enabled))
|
||||
print(string.format(" - |cffffff7fdisabled addons [|r%d|cffffff7f]|r", disabled))
|
||||
local libs = 0
|
||||
if type(AceLibrary) == "table" and type(AceLibrary.libs) == "table" then
|
||||
for _ in pairs(AceLibrary.libs) do
|
||||
libs = libs + 1
|
||||
end
|
||||
end
|
||||
print(string.format(" - |cffffff7fAceLibrary instances [|r%d|cffffff7f]|r", libs))
|
||||
end
|
||||
}
|
||||
}
|
||||
})
|
||||
elseif major == "AceModuleCore-2.0" then
|
||||
AceModuleCore = instance
|
||||
end
|
||||
end
|
||||
|
||||
local function activate(self, oldLib, oldDeactivate)
|
||||
AceAddon = self
|
||||
|
||||
if oldLib then
|
||||
self.playerLoginFired = oldLib.playerLoginFired or DEFAULT_CHAT_FRAME and DEFAULT_CHAT_FRAME.defaultLanguage
|
||||
self.addonsToOnEnable = oldLib.addonsToOnEnable
|
||||
self.addons = oldLib.addons
|
||||
self.nextAddon = oldLib.nextAddon
|
||||
self.addonsStarted = oldLib.addonsStarted
|
||||
end
|
||||
if not self.addons then
|
||||
self.addons = {}
|
||||
end
|
||||
if not self.nextAddon then
|
||||
self.nextAddon = {}
|
||||
end
|
||||
if not self.addonsStarted then
|
||||
self.addonsStarted = {}
|
||||
end
|
||||
if oldDeactivate then
|
||||
oldDeactivate(oldLib)
|
||||
end
|
||||
end
|
||||
|
||||
AceLibrary:Register(AceAddon, MAJOR_VERSION, MINOR_VERSION, activate, nil, external)
|
||||
AceAddon = AceLibrary(MAJOR_VERSION)
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,238 @@
|
||||
--[[
|
||||
Name: AceDebug-2.0
|
||||
Revision: $Rev: 15024 $
|
||||
Developed by: The Ace Development Team (http://www.wowace.com/index.php/The_Ace_Development_Team)
|
||||
Inspired By: Ace 1.x by Turan (turan@gryphon.com)
|
||||
Website: http://www.wowace.com/
|
||||
Documentation: http://www.wowace.com/index.php/AceDebug-2.0
|
||||
SVN: http://svn.wowace.com/root/trunk/Ace2/AceDebug-2.0
|
||||
Description: Mixin to allow for simple debugging capabilities.
|
||||
Dependencies: AceLibrary, AceOO-2.0
|
||||
]]
|
||||
|
||||
local MAJOR_VERSION = "AceDebug-2.0"
|
||||
local MINOR_VERSION = "$Revision: 15024 $"
|
||||
|
||||
if not AceLibrary then error(MAJOR_VERSION .. " requires AceLibrary") end
|
||||
if not AceLibrary:IsNewVersion(MAJOR_VERSION, MINOR_VERSION) then return end
|
||||
|
||||
if not AceLibrary:HasInstance("AceOO-2.0") then error(MAJOR_VERSION .. " requires AceOO-2.0") end
|
||||
|
||||
local DEBUGGING, TOGGLE_DEBUGGING
|
||||
|
||||
if GetLocale() == "frFR" then
|
||||
DEBUGGING = "D\195\169boguage"
|
||||
TOGGLE_DEBUGGING = "Activer/d\195\169sactiver le d\195\169boguage"
|
||||
elseif GetLocale() == "deDE" then
|
||||
DEBUGGING = "Debuggen"
|
||||
TOGGLE_DEBUGGING = "Aktiviert/Deaktiviert Debugging"
|
||||
elseif GetLocale() == "koKR" then
|
||||
DEBUGGING = "디버깅"
|
||||
TOGGLE_DEBUGGING = "디버깅 기능 사용함/사용안함"
|
||||
elseif GetLocale() == "zhTW" then
|
||||
DEBUGGING = "除錯"
|
||||
TOGGLE_DEBUGGING = "啟用/停用除錯功能"
|
||||
elseif GetLocale() == "zhCN" then
|
||||
DEBUGGING = "\232\176\131\232\175\149"
|
||||
TOGGLE_DEBUGGING = "\229\144\175\231\148\168/\231\166\129\231\148\168 \232\176\131\232\175\149"
|
||||
else -- enUS
|
||||
DEBUGGING = "Debugging"
|
||||
TOGGLE_DEBUGGING = "Enable/disable debugging"
|
||||
end
|
||||
|
||||
local table_setn
|
||||
do
|
||||
local version = GetBuildInfo()
|
||||
if string.find(version, "^2%.") then
|
||||
-- 2.0.0
|
||||
table_setn = function() end
|
||||
else
|
||||
table_setn = table.setn
|
||||
end
|
||||
end
|
||||
|
||||
local math_mod = math.mod or math.fmod
|
||||
|
||||
local AceOO = AceLibrary:GetInstance("AceOO-2.0")
|
||||
local AceDebug = AceOO.Mixin {"Debug", "CustomDebug", "IsDebugging", "SetDebugging", "SetDebugLevel", "LevelDebug", "CustomLevelDebug", "GetDebugLevel"}
|
||||
|
||||
local function print(text, r, g, b, frame, delay)
|
||||
(frame or DEFAULT_CHAT_FRAME):AddMessage(text, r, g, b, 1, delay or 5)
|
||||
end
|
||||
|
||||
local tmp
|
||||
|
||||
function AceDebug:CustomDebug(r, g, b, frame, delay, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
if not self.debugging then return end
|
||||
|
||||
local output = string.format("|cff7fff7f(DEBUG) %s:[%s%3d]|r", tostring(self), date("%H:%M:%S"), math_mod(GetTime(), 1) * 1000)
|
||||
|
||||
if string.find(tostring(a1), "%%") then
|
||||
output = output .. " " .. string.format(tostring(a1), tostring(a2), tostring(a3), tostring(a4), tostring(a5), tostring(a6), tostring(a7), tostring(a8), tostring(a9), tostring(a10), tostring(a11), tostring(a12), tostring(a13), tostring(a14), tostring(a15), tostring(a16), tostring(a17), tostring(a18), tostring(a19), tostring(a20))
|
||||
else
|
||||
if not tmp then
|
||||
tmp = {}
|
||||
end
|
||||
|
||||
-- This block dynamically rebuilds the tmp array stopping on the first nil.
|
||||
table.insert(tmp, output)
|
||||
|
||||
table.insert(tmp, tostring(a1))
|
||||
table.insert(tmp, a2)
|
||||
table.insert(tmp, a3)
|
||||
table.insert(tmp, a4)
|
||||
table.insert(tmp, a5)
|
||||
table.insert(tmp, a6)
|
||||
table.insert(tmp, a7)
|
||||
table.insert(tmp, a8)
|
||||
table.insert(tmp, a9)
|
||||
table.insert(tmp, a10)
|
||||
table.insert(tmp, a11)
|
||||
table.insert(tmp, a12)
|
||||
table.insert(tmp, a13)
|
||||
table.insert(tmp, a14)
|
||||
table.insert(tmp, a15)
|
||||
table.insert(tmp, a16)
|
||||
table.insert(tmp, a17)
|
||||
table.insert(tmp, a18)
|
||||
table.insert(tmp, a19)
|
||||
table.insert(tmp, a20)
|
||||
while tmp[table.getn(tmp)] == nil do
|
||||
table.remove(tmp)
|
||||
end
|
||||
for k = 1, table.getn(tmp) do
|
||||
tmp[k] = tostring(tmp[k])
|
||||
end
|
||||
|
||||
output = table.concat(tmp, " ")
|
||||
|
||||
for k,v in pairs(tmp) do
|
||||
tmp[k] = nil
|
||||
end
|
||||
table_setn(tmp, 0)
|
||||
end
|
||||
|
||||
print(output, r, g, b, frame or self.debugFrame, delay)
|
||||
end
|
||||
|
||||
function AceDebug:Debug(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
AceDebug.CustomDebug(self, nil, nil, nil, nil, nil, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
end
|
||||
|
||||
function AceDebug:IsDebugging()
|
||||
return self.debugging
|
||||
end
|
||||
|
||||
function AceDebug:SetDebugging(debugging)
|
||||
self.debugging = debugging
|
||||
end
|
||||
|
||||
-- Takes a number 1-3
|
||||
-- Level 1: Critical messages that every user should receive
|
||||
-- Level 2: Should be used for local debugging (function calls, etc)
|
||||
-- Level 3: Very verbose debugging, will dump everything and anything
|
||||
-- If set to nil, you will receive no debug information
|
||||
function AceDebug:SetDebugLevel(level)
|
||||
AceDebug:argCheck(level, 1, "number", "nil")
|
||||
if not level then
|
||||
self.debuglevel = nil
|
||||
return
|
||||
end
|
||||
if level < 1 or level > 3 then
|
||||
AceDebug:error("Bad argument #1 to `SetDebugLevel`, must be a number 1-3")
|
||||
end
|
||||
self.debuglevel = level
|
||||
end
|
||||
|
||||
function AceDebug:GetDebugLevel()
|
||||
return self.debuglevel
|
||||
end
|
||||
|
||||
function AceDebug:CustomLevelDebug(level, r, g, b, frame, delay, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
if not self.debugging or not self.debuglevel then return end
|
||||
AceDebug:argCheck(level, 1, "number")
|
||||
if level < 1 or level > 3 then
|
||||
AceDebug:error("Bad argument #1 to `LevelDebug`, must be a number 1-3")
|
||||
end
|
||||
if level > self.debuglevel then return end
|
||||
|
||||
local output = string.format("|cff7fff7f(DEBUG) %s:[%s.%3d]|r", tostring(self), date("%H:%M:%S"), math_mod(GetTime(), 1) * 1000)
|
||||
|
||||
if string.find(tostring(a1), "%%") then
|
||||
output = output .. " " .. string.format(tostring(a1), tostring(a2), tostring(a3), tostring(a4), tostring(a5), tostring(a6), tostring(a7), tostring(a8), tostring(a9), tostring(a10), tostring(a11), tostring(a12), tostring(a13), tostring(a14), tostring(a15), tostring(a16), tostring(a17), tostring(a18), tostring(a19), tostring(a20))
|
||||
else
|
||||
if not tmp then
|
||||
tmp = {}
|
||||
end
|
||||
|
||||
-- This block dynamically rebuilds the tmp array stopping on the first nil.
|
||||
table.insert(tmp, output)
|
||||
|
||||
table.insert(tmp, tostring(a1))
|
||||
table.insert(tmp, a2)
|
||||
table.insert(tmp, a3)
|
||||
table.insert(tmp, a4)
|
||||
table.insert(tmp, a5)
|
||||
table.insert(tmp, a6)
|
||||
table.insert(tmp, a7)
|
||||
table.insert(tmp, a8)
|
||||
table.insert(tmp, a9)
|
||||
table.insert(tmp, a10)
|
||||
table.insert(tmp, a11)
|
||||
table.insert(tmp, a12)
|
||||
table.insert(tmp, a13)
|
||||
table.insert(tmp, a14)
|
||||
table.insert(tmp, a15)
|
||||
table.insert(tmp, a16)
|
||||
table.insert(tmp, a17)
|
||||
table.insert(tmp, a18)
|
||||
table.insert(tmp, a19)
|
||||
table.insert(tmp, a20)
|
||||
while tmp[table.getn(tmp)] == nil do
|
||||
table.remove(tmp)
|
||||
end
|
||||
for k = 1, table.getn(tmp) do
|
||||
tmp[k] = tostring(tmp[k])
|
||||
end
|
||||
|
||||
output = table.concat(tmp, " ")
|
||||
|
||||
for k,v in pairs(tmp) do
|
||||
tmp[k] = nil
|
||||
end
|
||||
table_setn(tmp, 0)
|
||||
end
|
||||
|
||||
print(output, r, g, b, frame or self.debugFrame, delay)
|
||||
end
|
||||
|
||||
function AceDebug:LevelDebug(level, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
if not self.debugging or not self.debuglevel then return end
|
||||
AceDebug:argCheck(level, 1, "number")
|
||||
if level < 1 or level > 3 then
|
||||
AceDebug:error("Bad argument #1 to `LevelDebug`, must be a number 1-3")
|
||||
end
|
||||
if level > self.debuglevel then return end
|
||||
|
||||
AceDebug.CustomLevelDebug(self, level, nil, nil, nil, nil, nil, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
end
|
||||
|
||||
|
||||
local options
|
||||
function AceDebug:GetAceOptionsDataTable(target)
|
||||
if not options then
|
||||
options = {
|
||||
debug = {
|
||||
name = DEBUGGING,
|
||||
desc = TOGGLE_DEBUGGING,
|
||||
type = "toggle",
|
||||
get = "IsDebugging",
|
||||
set = "SetDebugging",
|
||||
order = -2,
|
||||
}
|
||||
}
|
||||
end
|
||||
return options
|
||||
end
|
||||
AceLibrary:Register(AceDebug, MAJOR_VERSION, MINOR_VERSION, AceDebug.activate)
|
||||
AceDebug = AceLibrary(MAJOR_VERSION)
|
||||
@@ -0,0 +1,969 @@
|
||||
--[[
|
||||
Name: AceEvent-2.0
|
||||
Revision: $Rev: 17136 $
|
||||
Developed by: The Ace Development Team (http://www.wowace.com/index.php/The_Ace_Development_Team)
|
||||
Inspired By: Ace 1.x by Turan (turan@gryphon.com)
|
||||
Website: http://www.wowace.com/
|
||||
Documentation: http://www.wowace.com/index.php/AceEvent-2.0
|
||||
SVN: http://svn.wowace.com/root/trunk/Ace2/AceEvent-2.0
|
||||
Description: Mixin to allow for event handling, scheduling, and inter-addon
|
||||
communication.
|
||||
Dependencies: AceLibrary, AceOO-2.0
|
||||
]]
|
||||
|
||||
local MAJOR_VERSION = "AceEvent-2.0"
|
||||
local MINOR_VERSION = "$Revision: 17136 $"
|
||||
|
||||
if not AceLibrary then error(MAJOR_VERSION .. " requires AceLibrary") end
|
||||
if not AceLibrary:IsNewVersion(MAJOR_VERSION, MINOR_VERSION) then return end
|
||||
|
||||
if not AceLibrary:HasInstance("AceOO-2.0") then error(MAJOR_VERSION .. " requires AceOO-2.0") end
|
||||
|
||||
local AceOO = AceLibrary:GetInstance("AceOO-2.0")
|
||||
local Mixin = AceOO.Mixin
|
||||
local AceEvent = Mixin {
|
||||
"RegisterEvent",
|
||||
"RegisterAllEvents",
|
||||
"UnregisterEvent",
|
||||
"UnregisterAllEvents",
|
||||
"TriggerEvent",
|
||||
"ScheduleEvent",
|
||||
"ScheduleRepeatingEvent",
|
||||
"CancelScheduledEvent",
|
||||
"CancelAllScheduledEvents",
|
||||
"IsEventRegistered",
|
||||
"IsEventScheduled",
|
||||
"RegisterBucketEvent",
|
||||
"UnregisterBucketEvent",
|
||||
"UnregisterAllBucketEvents",
|
||||
"IsBucketEventRegistered",
|
||||
}
|
||||
|
||||
local table_setn
|
||||
do
|
||||
local version = GetBuildInfo()
|
||||
if string.find(version, "^2%.") then
|
||||
-- 2.0.0
|
||||
table_setn = function() end
|
||||
else
|
||||
table_setn = table.setn
|
||||
end
|
||||
end
|
||||
|
||||
local weakKey = {__mode="k"}
|
||||
local new, del
|
||||
do
|
||||
local list = setmetatable({}, weakKey)
|
||||
function new()
|
||||
local t = next(list)
|
||||
if t then
|
||||
list[t] = nil
|
||||
return t
|
||||
else
|
||||
return {}
|
||||
end
|
||||
end
|
||||
|
||||
function del(t)
|
||||
setmetatable(t, nil)
|
||||
for k in pairs(t) do
|
||||
t[k] = nil
|
||||
end
|
||||
list[t] = true
|
||||
end
|
||||
end
|
||||
|
||||
local FAKE_NIL
|
||||
local RATE
|
||||
|
||||
local eventsWhichHappenOnce = {
|
||||
PLAYER_LOGIN = true,
|
||||
AceEvent_FullyInitialized = true,
|
||||
VARIABLES_LOADED = true,
|
||||
PLAYER_LOGOUT = true,
|
||||
}
|
||||
|
||||
local registeringFromAceEvent
|
||||
function AceEvent:RegisterEvent(event, method, once)
|
||||
AceEvent:argCheck(event, 2, "string")
|
||||
if self == AceEvent and not registeringFromAceEvent then
|
||||
AceEvent:argCheck(method, 3, "function")
|
||||
self = method
|
||||
else
|
||||
AceEvent:argCheck(method, 3, "string", "function", "nil", "boolean", "number")
|
||||
if type(method) == "boolean" or type(method) == "number" then
|
||||
AceEvent:argCheck(once, 4, "nil")
|
||||
once, method = method, event
|
||||
end
|
||||
end
|
||||
AceEvent:argCheck(once, 4, "number", "boolean", "nil")
|
||||
if eventsWhichHappenOnce[event] then
|
||||
once = true
|
||||
end
|
||||
local throttleRate
|
||||
if type(once) == "number" then
|
||||
throttleRate, once = once
|
||||
end
|
||||
if not method then
|
||||
method = event
|
||||
end
|
||||
if type(method) == "string" and type(self[method]) ~= "function" then
|
||||
AceEvent:error("Cannot register event %q to method %q, it does not exist", event, method)
|
||||
else
|
||||
assert(type(method) == "function" or type(method) == "string")
|
||||
end
|
||||
|
||||
local AceEvent_registry = AceEvent.registry
|
||||
if not AceEvent_registry[event] then
|
||||
AceEvent_registry[event] = new()
|
||||
AceEvent.frame:RegisterEvent(event)
|
||||
end
|
||||
|
||||
local remember = true
|
||||
if AceEvent_registry[event][self] then
|
||||
remember = false
|
||||
end
|
||||
AceEvent_registry[event][self] = method
|
||||
|
||||
local AceEvent_onceRegistry = AceEvent.onceRegistry
|
||||
if once then
|
||||
if not AceEvent_onceRegistry then
|
||||
AceEvent.onceRegistry = new()
|
||||
AceEvent_onceRegistry = AceEvent.onceRegistry
|
||||
end
|
||||
if not AceEvent_onceRegistry[event] then
|
||||
AceEvent_onceRegistry[event] = new()
|
||||
end
|
||||
AceEvent_onceRegistry[event][self] = true
|
||||
else
|
||||
if AceEvent_onceRegistry and AceEvent_onceRegistry[event] then
|
||||
AceEvent_onceRegistry[event][self] = nil
|
||||
if not next(AceEvent_onceRegistry[event]) then
|
||||
AceEvent_onceRegistry[event] = del(AceEvent_onceRegistry[event])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local AceEvent_throttleRegistry = AceEvent.throttleRegistry
|
||||
if throttleRate then
|
||||
if not AceEvent_throttleRegistry then
|
||||
AceEvent.throttleRegistry = new()
|
||||
AceEvent_throttleRegistry = AceEvent.throttleRegistry
|
||||
end
|
||||
if not AceEvent_throttleRegistry[event] then
|
||||
AceEvent_throttleRegistry[event] = new()
|
||||
end
|
||||
if AceEvent_throttleRegistry[event][self] then
|
||||
AceEvent_throttleRegistry[event][self] = del(AceEvent_throttleRegistry[event][self])
|
||||
end
|
||||
AceEvent_throttleRegistry[event][self] = setmetatable(new(), weakKey)
|
||||
local t = AceEvent_throttleRegistry[event][self]
|
||||
t[RATE] = throttleRate
|
||||
else
|
||||
if AceEvent_throttleRegistry and AceEvent_throttleRegistry[event] then
|
||||
if AceEvent_throttleRegistry[event][self] then
|
||||
AceEvent_throttleRegistry[event][self] = del(AceEvent_throttleRegistry[event][self])
|
||||
end
|
||||
if not next(AceEvent_throttleRegistry[event]) then
|
||||
AceEvent_throttleRegistry[event] = del(AceEvent_throttleRegistry[event])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if remember then
|
||||
AceEvent:TriggerEvent("AceEvent_EventRegistered", self, event)
|
||||
end
|
||||
end
|
||||
|
||||
local ALL_EVENTS
|
||||
|
||||
function AceEvent:RegisterAllEvents(method)
|
||||
if self == AceEvent then
|
||||
AceEvent:argCheck(method, 1, "function")
|
||||
self = method
|
||||
else
|
||||
AceEvent:argCheck(method, 1, "string", "function")
|
||||
if type(method) == "string" and type(self[method]) ~= "function" then
|
||||
AceEvent:error("Cannot register all events to method %q, it does not exist", method)
|
||||
end
|
||||
end
|
||||
|
||||
local AceEvent_registry = AceEvent.registry
|
||||
if not AceEvent_registry[ALL_EVENTS] then
|
||||
AceEvent_registry[ALL_EVENTS] = new()
|
||||
AceEvent.frame:RegisterAllEvents()
|
||||
end
|
||||
|
||||
AceEvent_registry[ALL_EVENTS][self] = method
|
||||
end
|
||||
|
||||
local _G = getfenv(0)
|
||||
local memstack, timestack = {}, {}
|
||||
local memdiff, timediff
|
||||
function AceEvent:TriggerEvent(event, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
AceEvent:argCheck(event, 2, "string")
|
||||
local AceEvent_registry = AceEvent.registry
|
||||
if (not AceEvent_registry[event] or not next(AceEvent_registry[event])) and (not AceEvent_registry[ALL_EVENTS] or not next(AceEvent_registry[ALL_EVENTS])) then
|
||||
return
|
||||
end
|
||||
local _G_event = _G.event
|
||||
_G.event = event
|
||||
local lastEvent = AceEvent.currentEvent
|
||||
AceEvent.currentEvent = event
|
||||
|
||||
local AceEvent_onceRegistry = AceEvent.onceRegistry
|
||||
local AceEvent_debugTable = AceEvent.debugTable
|
||||
if AceEvent_onceRegistry and AceEvent_onceRegistry[event] then
|
||||
local tmp = new()
|
||||
for obj, method in pairs(AceEvent_onceRegistry[event]) do
|
||||
tmp[obj] = AceEvent_registry[event] and AceEvent_registry[event][obj] or nil
|
||||
end
|
||||
local obj = next(tmp)
|
||||
while obj do
|
||||
local mem, time
|
||||
if AceEvent_debugTable then
|
||||
if not AceEvent_debugTable[event] then
|
||||
AceEvent_debugTable[event] = new()
|
||||
end
|
||||
if not AceEvent_debugTable[event][obj] then
|
||||
AceEvent_debugTable[event][obj] = new()
|
||||
AceEvent_debugTable[event][obj].mem = 0
|
||||
AceEvent_debugTable[event][obj].time = 0
|
||||
AceEvent_debugTable[event][obj].count = 0
|
||||
end
|
||||
if memdiff then
|
||||
table.insert(memstack, memdiff)
|
||||
table.insert(timestack, timediff)
|
||||
end
|
||||
memdiff, timediff = 0, 0
|
||||
mem, time = gcinfo(), GetTime()
|
||||
end
|
||||
local method = tmp[obj]
|
||||
AceEvent.UnregisterEvent(obj, event)
|
||||
if type(method) == "string" then
|
||||
local obj_method = obj[method]
|
||||
if obj_method then
|
||||
obj_method(obj, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
end
|
||||
elseif method then -- function
|
||||
method(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
end
|
||||
if AceEvent_debugTable then
|
||||
local dmem, dtime = memdiff, timediff
|
||||
mem, time = gcinfo() - mem - memdiff, GetTime() - time - timediff
|
||||
AceEvent_debugTable[event][obj].mem = AceEvent_debugTable[event][obj].mem + mem
|
||||
AceEvent_debugTable[event][obj].time = AceEvent_debugTable[event][obj].time + time
|
||||
AceEvent_debugTable[event][obj].count = AceEvent_debugTable[event][obj].count + 1
|
||||
|
||||
memdiff, timediff = table.remove(memstack), table.remove(timestack)
|
||||
if memdiff then
|
||||
memdiff = memdiff + mem + dmem
|
||||
timediff = timediff + time + dtime
|
||||
end
|
||||
end
|
||||
tmp[obj] = nil
|
||||
obj = next(tmp)
|
||||
end
|
||||
del(tmp)
|
||||
end
|
||||
|
||||
local AceEvent_throttleRegistry = AceEvent.throttleRegistry
|
||||
local throttleTable = AceEvent_throttleRegistry and AceEvent_throttleRegistry[event]
|
||||
if AceEvent_registry[event] then
|
||||
local tmp = new()
|
||||
for obj, method in pairs(AceEvent_registry[event]) do
|
||||
tmp[obj] = method
|
||||
end
|
||||
local obj = next(tmp)
|
||||
while obj do
|
||||
local method = tmp[obj]
|
||||
local continue = false
|
||||
if throttleTable and throttleTable[obj] then
|
||||
local a1 = a1
|
||||
if a1 == nil then
|
||||
a1 = FAKE_NIL
|
||||
end
|
||||
if not throttleTable[obj][a1] or GetTime() - throttleTable[obj][a1] >= throttleTable[obj][RATE] then
|
||||
throttleTable[obj][a1] = GetTime()
|
||||
else
|
||||
continue = true
|
||||
end
|
||||
end
|
||||
if not continue then
|
||||
local mem, time
|
||||
if AceEvent_debugTable then
|
||||
if not AceEvent_debugTable[event] then
|
||||
AceEvent_debugTable[event] = new()
|
||||
end
|
||||
if not AceEvent_debugTable[event][obj] then
|
||||
AceEvent_debugTable[event][obj] = new()
|
||||
AceEvent_debugTable[event][obj].mem = 0
|
||||
AceEvent_debugTable[event][obj].time = 0
|
||||
AceEvent_debugTable[event][obj].count = 0
|
||||
end
|
||||
if memdiff then
|
||||
table.insert(memstack, memdiff)
|
||||
table.insert(timestack, timediff)
|
||||
end
|
||||
memdiff, timediff = 0, 0
|
||||
mem, time = gcinfo(), GetTime()
|
||||
end
|
||||
if type(method) == "string" then
|
||||
local obj_method = obj[method]
|
||||
if obj_method then
|
||||
obj_method(obj, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
end
|
||||
elseif method then -- function
|
||||
method(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
end
|
||||
if AceEvent_debugTable then
|
||||
local dmem, dtime = memdiff, timediff
|
||||
mem, time = gcinfo() - mem - memdiff, GetTime() - time - timediff
|
||||
AceEvent_debugTable[event][obj].mem = AceEvent_debugTable[event][obj].mem + mem
|
||||
AceEvent_debugTable[event][obj].time = AceEvent_debugTable[event][obj].time + time
|
||||
AceEvent_debugTable[event][obj].count = AceEvent_debugTable[event][obj].count + 1
|
||||
|
||||
memdiff, timediff = table.remove(memstack), table.remove(timestack)
|
||||
if memdiff then
|
||||
memdiff = memdiff + mem + dmem
|
||||
timediff = timediff + time + dtime
|
||||
end
|
||||
end
|
||||
end
|
||||
tmp[obj] = nil
|
||||
obj = next(tmp)
|
||||
end
|
||||
del(tmp)
|
||||
end
|
||||
if AceEvent_registry[ALL_EVENTS] then
|
||||
local tmp = new()
|
||||
for obj, method in pairs(AceEvent_registry[ALL_EVENTS]) do
|
||||
tmp[obj] = method
|
||||
end
|
||||
local obj = next(tmp)
|
||||
while obj do
|
||||
local method = tmp[obj]
|
||||
local mem, time
|
||||
if AceEvent_debugTable then
|
||||
if not AceEvent_debugTable[event] then
|
||||
AceEvent_debugTable[event] = new()
|
||||
end
|
||||
if not AceEvent_debugTable[event][obj] then
|
||||
AceEvent_debugTable[event][obj] = new()
|
||||
AceEvent_debugTable[event][obj].mem = 0
|
||||
AceEvent_debugTable[event][obj].time = 0
|
||||
AceEvent_debugTable[event][obj].count = 0
|
||||
end
|
||||
if memdiff then
|
||||
table.insert(memstack, memdiff)
|
||||
table.insert(timestack, timediff)
|
||||
end
|
||||
memdiff, timediff = 0, 0
|
||||
mem, time = gcinfo(), GetTime()
|
||||
end
|
||||
if type(method) == "string" then
|
||||
local obj_method = obj[method]
|
||||
if obj_method then
|
||||
obj_method(obj, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
end
|
||||
elseif method then -- function
|
||||
method(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
end
|
||||
if AceEvent_debugTable then
|
||||
local dmem, dtime = memdiff, timediff
|
||||
mem, time = gcinfo() - mem - memdiff, GetTime() - time - timediff
|
||||
AceEvent_debugTable[event][obj].mem = AceEvent_debugTable[event][obj].mem + mem
|
||||
AceEvent_debugTable[event][obj].time = AceEvent_debugTable[event][obj].time + time
|
||||
AceEvent_debugTable[event][obj].count = AceEvent_debugTable[event][obj].count + 1
|
||||
|
||||
memdiff, timediff = table.remove(memstack), table.remove(timestack)
|
||||
if memdiff then
|
||||
memdiff = memdiff + mem + dmem
|
||||
timediff = timediff + time + dtime
|
||||
end
|
||||
end
|
||||
tmp[obj] = nil
|
||||
obj = next(tmp)
|
||||
end
|
||||
del(tmp)
|
||||
end
|
||||
_G.event = _G_event
|
||||
AceEvent.currentEvent = lastEvent
|
||||
end
|
||||
|
||||
-- local accessors
|
||||
local getn = table.getn
|
||||
local tinsert = table.insert
|
||||
local tremove = table.remove
|
||||
local floor = math.floor
|
||||
local GetTime = GetTime
|
||||
local next = next
|
||||
local pairs = pairs
|
||||
local unpack = unpack
|
||||
|
||||
local delayRegistry
|
||||
local tmp = {}
|
||||
local function OnUpdate()
|
||||
local t = GetTime()
|
||||
for k,v in pairs(delayRegistry) do
|
||||
tmp[k] = true
|
||||
end
|
||||
for k in pairs(tmp) do
|
||||
local v = delayRegistry[k]
|
||||
if v then
|
||||
local v_time = v.time
|
||||
if not v_time then
|
||||
delayRegistry[k] = del(v)
|
||||
elseif v_time <= t then
|
||||
local v_repeatDelay = v.repeatDelay
|
||||
if v_repeatDelay then
|
||||
-- use the event time, not the current time, else timing inaccuracies add up over time
|
||||
v.time = v_time + v_repeatDelay
|
||||
end
|
||||
local event = v.event
|
||||
local mem, time
|
||||
if AceEvent_debugTable then
|
||||
mem, time = gcinfo(), GetTime()
|
||||
end
|
||||
if type(event) == "function" then
|
||||
event(unpack(v))
|
||||
else
|
||||
AceEvent:TriggerEvent(event, unpack(v))
|
||||
end
|
||||
if AceEvent_debugTable then
|
||||
mem, time = gcinfo() - mem, GetTime() - time
|
||||
v.mem = v.mem + mem
|
||||
v.timeSpent = v.timeSpent + time
|
||||
v.count = v.count + 1
|
||||
end
|
||||
if not v_repeatDelay then
|
||||
local x = delayRegistry[k]
|
||||
if x and x.time == v_time then -- check if it was manually reset
|
||||
delayRegistry[k] = del(v)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
for k in pairs(tmp) do
|
||||
tmp[k] = nil
|
||||
end
|
||||
if not next(delayRegistry) then
|
||||
AceEvent.frame:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
local function ScheduleEvent(self, repeating, event, delay, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
local id
|
||||
if type(event) == "string" or type(event) == "table" then
|
||||
if type(event) == "table" then
|
||||
if not delayRegistry or not delayRegistry[event] then
|
||||
AceEvent:error("Bad argument #2 to `ScheduleEvent'. Improper id table fed in.")
|
||||
end
|
||||
end
|
||||
if type(delay) ~= "number" then
|
||||
id, event, delay, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20 = event, delay, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20
|
||||
AceEvent:argCheck(event, 3, "string", "function", --[[ so message is right ]] "number")
|
||||
AceEvent:argCheck(delay, 4, "number")
|
||||
self:CancelScheduledEvent(id)
|
||||
end
|
||||
else
|
||||
AceEvent:argCheck(event, 2, "string", "function")
|
||||
AceEvent:argCheck(delay, 3, "number")
|
||||
end
|
||||
|
||||
if not delayRegistry then
|
||||
AceEvent.delayRegistry = new()
|
||||
delayRegistry = AceEvent.delayRegistry
|
||||
AceEvent.frame:SetScript("OnUpdate", OnUpdate)
|
||||
end
|
||||
local t
|
||||
if type(id) == "table" then
|
||||
for k in pairs(id) do
|
||||
id[k] = nil
|
||||
end
|
||||
t = id
|
||||
else
|
||||
t = new()
|
||||
end
|
||||
t[1] = a1
|
||||
t[2] = a2
|
||||
t[3] = a3
|
||||
t[4] = a4
|
||||
t[5] = a5
|
||||
t[6] = a6
|
||||
t[7] = a7
|
||||
t[8] = a8
|
||||
t[9] = a9
|
||||
t[10] = a10
|
||||
t[11] = a11
|
||||
t[12] = a12
|
||||
t[13] = a13
|
||||
t[14] = a14
|
||||
t[15] = a15
|
||||
t[16] = a16
|
||||
t[17] = a17
|
||||
t[18] = a18
|
||||
t[19] = a19
|
||||
t[20] = a20
|
||||
table_setn(t, 20)
|
||||
t.event = event
|
||||
t.time = GetTime() + delay
|
||||
t.self = self
|
||||
t.id = id or t
|
||||
t.repeatDelay = repeating and delay
|
||||
if AceEvent_debugTable then
|
||||
t.mem = 0
|
||||
t.count = 0
|
||||
t.timeSpent = 0
|
||||
end
|
||||
delayRegistry[t.id] = t
|
||||
AceEvent.frame:Show()
|
||||
return t.id
|
||||
end
|
||||
|
||||
function AceEvent:ScheduleEvent(event, delay, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
if type(event) == "string" or type(event) == "table" then
|
||||
if type(event) == "table" then
|
||||
if not delayRegistry or not delayRegistry[event] then
|
||||
AceEvent:error("Bad argument #2 to `ScheduleEvent'. Improper id table fed in.")
|
||||
end
|
||||
end
|
||||
if type(delay) ~= "number" then
|
||||
AceEvent:argCheck(delay, 3, "string", "function", --[[ so message is right ]] "number")
|
||||
AceEvent:argCheck(a1, 4, "number")
|
||||
end
|
||||
else
|
||||
AceEvent:argCheck(event, 2, "string", "function")
|
||||
AceEvent:argCheck(delay, 3, "number")
|
||||
end
|
||||
|
||||
return ScheduleEvent(self, false, event, delay, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
end
|
||||
|
||||
function AceEvent:ScheduleRepeatingEvent(event, delay, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
if type(event) == "string" or type(event) == "table" then
|
||||
if type(event) == "table" then
|
||||
if not delayRegistry or not delayRegistry[event] then
|
||||
AceEvent:error("Bad argument #2 to `ScheduleEvent'. Improper id table fed in.")
|
||||
end
|
||||
end
|
||||
if type(delay) ~= "number" then
|
||||
AceEvent:argCheck(delay, 3, "string", "function", --[[ so message is right ]] "number")
|
||||
AceEvent:argCheck(a1, 4, "number")
|
||||
end
|
||||
else
|
||||
AceEvent:argCheck(event, 2, "string", "function")
|
||||
AceEvent:argCheck(delay, 3, "number")
|
||||
end
|
||||
|
||||
return ScheduleEvent(self, true, event, delay, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
end
|
||||
|
||||
function AceEvent:CancelScheduledEvent(t)
|
||||
AceEvent:argCheck(t, 2, "string", "table")
|
||||
if delayRegistry then
|
||||
local v = delayRegistry[t]
|
||||
if v then
|
||||
delayRegistry[t] = del(v)
|
||||
if not next(delayRegistry) then
|
||||
AceEvent.frame:Hide()
|
||||
end
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function AceEvent:IsEventScheduled(t)
|
||||
AceEvent:argCheck(t, 2, "string", "table")
|
||||
if delayRegistry then
|
||||
local v = delayRegistry[t]
|
||||
if v then
|
||||
return true, v.time - GetTime()
|
||||
end
|
||||
end
|
||||
return false, nil
|
||||
end
|
||||
|
||||
function AceEvent:UnregisterEvent(event)
|
||||
AceEvent:argCheck(event, 2, "string")
|
||||
local AceEvent_registry = AceEvent.registry
|
||||
if AceEvent_registry[event] and AceEvent_registry[event][self] then
|
||||
AceEvent_registry[event][self] = nil
|
||||
local AceEvent_onceRegistry = AceEvent.onceRegistry
|
||||
if AceEvent_onceRegistry and AceEvent_onceRegistry[event] and AceEvent_onceRegistry[event][self] then
|
||||
AceEvent_onceRegistry[event][self] = nil
|
||||
if not next(AceEvent_onceRegistry[event]) then
|
||||
AceEvent_onceRegistry[event] = del(AceEvent_onceRegistry[event])
|
||||
end
|
||||
end
|
||||
local AceEvent_throttleRegistry = AceEvent.throttleRegistry
|
||||
if AceEvent_throttleRegistry and AceEvent_throttleRegistry[event] and AceEvent_throttleRegistry[event][self] then
|
||||
AceEvent_throttleRegistry[event][self] = del(AceEvent_throttleRegistry[event][self])
|
||||
if not next(AceEvent_throttleRegistry[event]) then
|
||||
AceEvent_throttleRegistry[event] = del(AceEvent_throttleRegistry[event])
|
||||
end
|
||||
end
|
||||
if not next(AceEvent_registry[event]) then
|
||||
AceEvent_registry[event] = del(AceEvent_registry[event])
|
||||
if not AceEvent_registry[ALL_EVENTS] or not next(AceEvent_registry[ALL_EVENTS]) then
|
||||
AceEvent.frame:UnregisterEvent(event)
|
||||
end
|
||||
end
|
||||
else
|
||||
if self == AceEvent then
|
||||
error(string.format("Cannot unregister event %q. Improperly unregistering from AceEvent-2.0.", event), 2)
|
||||
else
|
||||
AceEvent:error("Cannot unregister event %q. %q is not registered with it.", event, self)
|
||||
end
|
||||
end
|
||||
AceEvent:TriggerEvent("AceEvent_EventUnregistered", self, event)
|
||||
end
|
||||
|
||||
function AceEvent:UnregisterAllEvents()
|
||||
local AceEvent_registry = AceEvent.registry
|
||||
if AceEvent_registry[ALL_EVENTS] and AceEvent_registry[ALL_EVENTS][self] then
|
||||
AceEvent_registry[ALL_EVENTS][self] = nil
|
||||
if not next(AceEvent_registry[ALL_EVENTS]) then
|
||||
del(AceEvent_registry[ALL_EVENTS])
|
||||
AceEvent.frame:UnregisterAllEvents()
|
||||
for k,v in pairs(AceEvent_registry) do
|
||||
if k ~= ALL_EVENTS then
|
||||
AceEvent.frame:RegisterEvent(k)
|
||||
end
|
||||
end
|
||||
AceEvent_registry[event] = nil
|
||||
end
|
||||
end
|
||||
local first = true
|
||||
for event, data in pairs(AceEvent_registry) do
|
||||
if first then
|
||||
if AceEvent_registry.AceEvent_EventUnregistered then
|
||||
event = "AceEvent_EventUnregistered"
|
||||
else
|
||||
first = false
|
||||
end
|
||||
end
|
||||
local x = data[self]
|
||||
data[self] = nil
|
||||
if x and event ~= ALL_EVENTS then
|
||||
if not next(data) then
|
||||
del(data)
|
||||
if not AceEvent_registry[ALL_EVENTS] or not next(AceEvent_registry[ALL_EVENTS]) then
|
||||
AceEvent.frame:UnregisterEvent(event)
|
||||
end
|
||||
AceEvent_registry[event] = nil
|
||||
end
|
||||
AceEvent:TriggerEvent("AceEvent_EventUnregistered", self, event)
|
||||
end
|
||||
if first then
|
||||
event = nil
|
||||
end
|
||||
end
|
||||
if AceEvent.onceRegistry then
|
||||
for event, data in pairs(AceEvent.onceRegistry) do
|
||||
data[self] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function AceEvent:CancelAllScheduledEvents()
|
||||
if delayRegistry then
|
||||
for k,v in pairs(delayRegistry) do
|
||||
if v.self == self then
|
||||
delayRegistry[k] = del(v)
|
||||
end
|
||||
end
|
||||
if not next(delayRegistry) then
|
||||
AceEvent.frame:Hide()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function AceEvent:IsEventRegistered(event)
|
||||
AceEvent:argCheck(event, 2, "string")
|
||||
local AceEvent_registry = AceEvent.registry
|
||||
if self == AceEvent then
|
||||
return AceEvent_registry[event] and next(AceEvent_registry[event]) and true or false
|
||||
end
|
||||
if AceEvent_registry[event] and AceEvent_registry[event][self] then
|
||||
return true, AceEvent_registry[event][self]
|
||||
end
|
||||
return false, nil
|
||||
end
|
||||
|
||||
local bucketfunc
|
||||
function AceEvent:RegisterBucketEvent(event, delay, method)
|
||||
AceEvent:argCheck(event, 2, "string", "table")
|
||||
if type(event) == "table" then
|
||||
for k,v in pairs(event) do
|
||||
if type(k) ~= "number" then
|
||||
AceEvent:error("All keys to argument #2 to `RegisterBucketEvent' must be numbers.")
|
||||
elseif type(v) ~= "string" then
|
||||
AceEvent:error("All values to argument #2 to `RegisterBucketEvent' must be strings.")
|
||||
end
|
||||
end
|
||||
end
|
||||
AceEvent:argCheck(delay, 3, "number")
|
||||
if AceEvent == self then
|
||||
AceEvent:argCheck(method, 4, "function")
|
||||
self = method
|
||||
else
|
||||
if type(event) == "string" then
|
||||
AceEvent:argCheck(method, 4, "string", "function", "nil")
|
||||
if not method then
|
||||
method = event
|
||||
end
|
||||
else
|
||||
AceEvent:argCheck(method, 4, "string", "function")
|
||||
end
|
||||
|
||||
if type(method) == "string" and type(self[method]) ~= "function" then
|
||||
AceEvent:error("Cannot register event %q to method %q, it does not exist", event, method)
|
||||
end
|
||||
end
|
||||
if not AceEvent.buckets then
|
||||
AceEvent.buckets = new()
|
||||
end
|
||||
if not AceEvent.buckets[event] then
|
||||
AceEvent.buckets[event] = new()
|
||||
end
|
||||
if not AceEvent.buckets[event][self] then
|
||||
AceEvent.buckets[event][self] = new()
|
||||
AceEvent.buckets[event][self].current = new()
|
||||
AceEvent.buckets[event][self].self = self
|
||||
else
|
||||
AceEvent.CancelScheduledEvent(self, AceEvent.buckets[event][self].id)
|
||||
end
|
||||
local bucket = AceEvent.buckets[event][self]
|
||||
bucket.method = method
|
||||
|
||||
local func = function(arg1)
|
||||
bucket.run = true
|
||||
if arg1 then
|
||||
bucket.current[arg1] = true
|
||||
end
|
||||
end
|
||||
AceEvent.buckets[event][self].func = func
|
||||
if type(event) == "string" then
|
||||
AceEvent.RegisterEvent(self, event, func)
|
||||
else
|
||||
for _,v in ipairs(event) do
|
||||
AceEvent.RegisterEvent(self, v, func)
|
||||
end
|
||||
end
|
||||
if not bucketfunc then
|
||||
bucketfunc = function(bucket)
|
||||
local current = bucket.current
|
||||
local method = bucket.method
|
||||
local self = bucket.self
|
||||
if bucket.run then
|
||||
if type(method) == "string" then
|
||||
self[method](self, current)
|
||||
elseif method then -- function
|
||||
method(current)
|
||||
end
|
||||
for k in pairs(current) do
|
||||
current[k] = nil
|
||||
k = nil
|
||||
end
|
||||
bucket.run = false
|
||||
end
|
||||
end
|
||||
end
|
||||
bucket.id = AceEvent.ScheduleRepeatingEvent(self, bucketfunc, delay, bucket)
|
||||
end
|
||||
|
||||
function AceEvent:IsBucketEventRegistered(event)
|
||||
AceEvent:argCheck(event, 2, "string", "table")
|
||||
return AceEvent.buckets and AceEvent.buckets[event] and AceEvent.buckets[event][self]
|
||||
end
|
||||
|
||||
function AceEvent:UnregisterBucketEvent(event)
|
||||
AceEvent:argCheck(event, 2, "string", "table")
|
||||
if not AceEvent.buckets or not AceEvent.buckets[event] or not AceEvent.buckets[event][self] then
|
||||
AceEvent:error("Cannot unregister bucket event %q. %q is not registered with it.", event, self)
|
||||
end
|
||||
|
||||
local bucket = AceEvent.buckets[event][self]
|
||||
|
||||
if type(event) == "string" then
|
||||
AceEvent.UnregisterEvent(self, event)
|
||||
else
|
||||
for _,v in ipairs(event) do
|
||||
AceEvent.UnregisterEvent(self, v)
|
||||
end
|
||||
end
|
||||
AceEvent:CancelScheduledEvent(bucket.id)
|
||||
|
||||
del(bucket.current)
|
||||
AceEvent.buckets[event][self] = del(AceEvent.buckets[event][self])
|
||||
if not next(AceEvent.buckets[event]) then
|
||||
AceEvent.buckets[event] = del(AceEvent.buckets[event])
|
||||
end
|
||||
end
|
||||
|
||||
function AceEvent:UnregisterAllBucketEvents()
|
||||
if not AceEvent.buckets or not next(AceEvent.buckets) then
|
||||
return
|
||||
end
|
||||
for k,v in pairs(AceEvent.buckets) do
|
||||
if v == self then
|
||||
AceEvent.UnregisterBucketEvent(self, k)
|
||||
k = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function AceEvent:OnEmbedDisable(target)
|
||||
self.UnregisterAllEvents(target)
|
||||
|
||||
self.CancelAllScheduledEvents(target)
|
||||
|
||||
self.UnregisterAllBucketEvents(target)
|
||||
end
|
||||
|
||||
function AceEvent:EnableDebugging()
|
||||
if not self.debugTable then
|
||||
self.debugTable = new()
|
||||
|
||||
if delayRegistry then
|
||||
for k,v in pairs(self.delayRegistry) do
|
||||
if not v.mem then
|
||||
v.mem = 0
|
||||
v.count = 0
|
||||
v.timeSpent = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function AceEvent:IsFullyInitialized()
|
||||
return self.postInit or false
|
||||
end
|
||||
|
||||
function AceEvent:IsPostPlayerLogin()
|
||||
return self.playerLogin or false
|
||||
end
|
||||
|
||||
function AceEvent:activate(oldLib, oldDeactivate)
|
||||
AceEvent = self
|
||||
|
||||
if oldLib then
|
||||
self.onceRegistry = oldLib.onceRegistry
|
||||
self.throttleRegistry = oldLib.throttleRegistry
|
||||
self.delayRegistry = oldLib.delayRegistry
|
||||
self.buckets = oldLib.buckets
|
||||
self.registry = oldLib.registry
|
||||
self.frame = oldLib.frame
|
||||
self.debugTable = oldLib.debugTable
|
||||
self.playerLogin = oldLib.pew or DEFAULT_CHAT_FRAME and DEFAULT_CHAT_FRAME.defaultLanguage and true
|
||||
self.postInit = oldLib.postInit or self.playerLogin and ChatTypeInfo and ChatTypeInfo.WHISPER and ChatTypeInfo.WHISPER.r and true
|
||||
self.ALL_EVENTS = oldLib.ALL_EVENTS
|
||||
self.FAKE_NIL = oldLib.FAKE_NIL
|
||||
self.RATE = oldLib.RATE
|
||||
end
|
||||
if not self.registry then
|
||||
self.registry = {}
|
||||
end
|
||||
if not self.frame then
|
||||
self.frame = CreateFrame("Frame", "AceEvent20Frame")
|
||||
end
|
||||
if not self.ALL_EVENTS then
|
||||
self.ALL_EVENTS = {}
|
||||
end
|
||||
if not self.FAKE_NIL then
|
||||
self.FAKE_NIL = {}
|
||||
end
|
||||
if not self.RATE then
|
||||
self.RATE = {}
|
||||
end
|
||||
ALL_EVENTS = self.ALL_EVENTS
|
||||
FAKE_NIL = self.FAKE_NIL
|
||||
RATE = self.RATE
|
||||
local inPlw = false
|
||||
local blacklist = {
|
||||
UNIT_INVENTORY_CHANGED = true,
|
||||
BAG_UPDATE = true,
|
||||
ITEM_LOCK_CHANGED = true,
|
||||
ACTIONBAR_SLOT_CHANGED = true,
|
||||
}
|
||||
self.frame:SetScript("OnEvent", function()
|
||||
local event = event
|
||||
if event == "PLAYER_ENTERING_WORLD" then
|
||||
inPlw = false
|
||||
elseif event == "PLAYER_LEAVING_WORLD" then
|
||||
inPlw = true
|
||||
end
|
||||
if event and (not inPlw or not blacklist[event]) then
|
||||
self:TriggerEvent(event, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
|
||||
end
|
||||
end)
|
||||
if self.delayRegistry then
|
||||
delayRegistry = self.delayRegistry
|
||||
self.frame:SetScript("OnUpdate", OnUpdate)
|
||||
end
|
||||
|
||||
self:UnregisterAllEvents()
|
||||
self:CancelAllScheduledEvents()
|
||||
|
||||
registeringFromAceEvent = true
|
||||
self:RegisterEvent("LOOT_OPENED", function()
|
||||
SendAddonMessage("LOOT_OPENED", "", "RAID")
|
||||
end)
|
||||
registeringFromAceEvent = nil
|
||||
|
||||
if not self.playerLogin then
|
||||
registeringFromAceEvent = true
|
||||
self:RegisterEvent("PLAYER_LOGIN", function()
|
||||
self.playerLogin = true
|
||||
end, true)
|
||||
registeringFromAceEvent = nil
|
||||
end
|
||||
|
||||
if not self.postInit then
|
||||
local isReload = true
|
||||
local function func()
|
||||
self.postInit = true
|
||||
self:TriggerEvent("AceEvent_FullyInitialized")
|
||||
if self.registry["CHAT_MSG_CHANNEL_NOTICE"] and self.registry["CHAT_MSG_CHANNEL_NOTICE"][self] then
|
||||
self:UnregisterEvent("CHAT_MSG_CHANNEL_NOTICE")
|
||||
end
|
||||
if self.registry["MEETINGSTONE_CHANGED"] and self.registry["MEETINGSTONE_CHANGED"][self] then
|
||||
self:UnregisterEvent("MEETINGSTONE_CHANGED")
|
||||
end
|
||||
if self.registry["MINIMAP_ZONE_CHANGED"] and self.registry["MINIMAP_ZONE_CHANGED"][self] then
|
||||
self:UnregisterEvent("MINIMAP_ZONE_CHANGED")
|
||||
end
|
||||
if self.registry["LANGUAGE_LIST_CHANGED"] and self.registry["LANGUAGE_LIST_CHANGED"][self] then
|
||||
self:UnregisterEvent("LANGUAGE_LIST_CHANGED")
|
||||
end
|
||||
end
|
||||
registeringFromAceEvent = true
|
||||
local f = function()
|
||||
self.playerLogin = true
|
||||
self:ScheduleEvent("AceEvent_FullyInitialized", func, 1)
|
||||
end
|
||||
self:RegisterEvent("MEETINGSTONE_CHANGED", f, true)
|
||||
self:RegisterEvent("CHAT_MSG_CHANNEL_NOTICE", function()
|
||||
self:ScheduleEvent("AceEvent_FullyInitialized", func, 0.05)
|
||||
end)
|
||||
self:RegisterEvent("LANGUAGE_LIST_CHANGED", function()
|
||||
if self.registry["MEETINGSTONE_CHANGED"] and self.registry["MEETINGSTONE_CHANGED"][self] then
|
||||
self:UnregisterEvent("MEETINGSTONE_CHANGED")
|
||||
self:RegisterEvent("MINIMAP_ZONE_CHANGED", f, true)
|
||||
end
|
||||
end)
|
||||
registeringFromAceEvent = nil
|
||||
end
|
||||
|
||||
self.super.activate(self, oldLib, oldDeactivate)
|
||||
if oldLib then
|
||||
oldDeactivate(oldLib)
|
||||
end
|
||||
end
|
||||
|
||||
AceLibrary:Register(AceEvent, MAJOR_VERSION, MINOR_VERSION, AceEvent.activate)
|
||||
AceEvent = AceLibrary(MAJOR_VERSION)
|
||||
@@ -0,0 +1,751 @@
|
||||
--[[
|
||||
Name: AceLibrary
|
||||
Revision: $Rev: 14130 $
|
||||
Developed by: The Ace Development Team (http://www.wowace.com/index.php/The_Ace_Development_Team)
|
||||
Inspired By: Iriel (iriel@vigilance-committee.org)
|
||||
Tekkub (tekkub@gmail.com)
|
||||
Revision: $Rev: 14130 $
|
||||
Website: http://www.wowace.com/
|
||||
Documentation: http://www.wowace.com/index.php/AceLibrary
|
||||
SVN: http://svn.wowace.com/root/trunk/Ace2/AceLibrary
|
||||
Description: Versioning library to handle other library instances, upgrading,
|
||||
and proper access.
|
||||
It also provides a base for libraries to work off of, providing
|
||||
proper error tools. It is handy because all the errors occur in the
|
||||
file that called it, not in the library file itself.
|
||||
Dependencies: None
|
||||
]]
|
||||
|
||||
local ACELIBRARY_MAJOR = "AceLibrary"
|
||||
local ACELIBRARY_MINOR = "$Revision: 14130 $"
|
||||
|
||||
local table_setn
|
||||
do
|
||||
local version = GetBuildInfo()
|
||||
if string.find(version, "^2%.") then
|
||||
-- 2.0.0
|
||||
table_setn = function() end
|
||||
else
|
||||
table_setn = table.setn
|
||||
end
|
||||
end
|
||||
|
||||
local string_gfind = string.gmatch or string.gfind
|
||||
|
||||
local _G = getfenv(0)
|
||||
local previous = _G[ACELIBRARY_MAJOR]
|
||||
if previous and not previous:IsNewVersion(ACELIBRARY_MAJOR, ACELIBRARY_MINOR) then return end
|
||||
|
||||
-- @table AceLibrary
|
||||
-- @brief System to handle all versioning of libraries.
|
||||
local AceLibrary = {}
|
||||
local AceLibrary_mt = {}
|
||||
setmetatable(AceLibrary, AceLibrary_mt)
|
||||
|
||||
local tmp
|
||||
local function error(self, message, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
if type(self) ~= "table" then
|
||||
_G.error(string.format("Bad argument #1 to `error' (table expected, got %s)", type(self)), 2)
|
||||
end
|
||||
if not tmp then
|
||||
tmp = {}
|
||||
else
|
||||
for k in pairs(tmp) do tmp[k] = nil end
|
||||
table_setn(tmp, 0)
|
||||
end
|
||||
|
||||
table.insert(tmp, a1)
|
||||
table.insert(tmp, a2)
|
||||
table.insert(tmp, a3)
|
||||
table.insert(tmp, a4)
|
||||
table.insert(tmp, a5)
|
||||
table.insert(tmp, a6)
|
||||
table.insert(tmp, a7)
|
||||
table.insert(tmp, a8)
|
||||
table.insert(tmp, a9)
|
||||
table.insert(tmp, a10)
|
||||
table.insert(tmp, a11)
|
||||
table.insert(tmp, a12)
|
||||
table.insert(tmp, a13)
|
||||
table.insert(tmp, a14)
|
||||
table.insert(tmp, a15)
|
||||
table.insert(tmp, a16)
|
||||
table.insert(tmp, a17)
|
||||
table.insert(tmp, a18)
|
||||
table.insert(tmp, a19)
|
||||
table.insert(tmp, a20)
|
||||
|
||||
local stack = debugstack()
|
||||
if not message then
|
||||
local _,_,second = string.find(stack, "\n(.-)\n")
|
||||
message = "error raised! " .. second
|
||||
else
|
||||
for i = 1,table.getn(tmp) do
|
||||
tmp[i] = tostring(tmp[i])
|
||||
end
|
||||
for i = 1,10 do
|
||||
table.insert(tmp, "nil")
|
||||
end
|
||||
message = string.format(message, unpack(tmp))
|
||||
end
|
||||
|
||||
if getmetatable(self) and getmetatable(self).__tostring then
|
||||
message = string.format("%s: %s", tostring(self), message)
|
||||
elseif type(rawget(self, 'GetLibraryVersion')) == "function" and AceLibrary:HasInstance(self:GetLibraryVersion()) then
|
||||
message = string.format("%s: %s", self:GetLibraryVersion(), message)
|
||||
elseif type(rawget(self, 'class')) == "table" and type(rawget(self.class, 'GetLibraryVersion')) == "function" and AceLibrary:HasInstance(self.class:GetLibraryVersion()) then
|
||||
message = string.format("%s: %s", self.class:GetLibraryVersion(), message)
|
||||
end
|
||||
|
||||
local first = string.gsub(stack, "\n.*", "")
|
||||
local file = string.gsub(first, ".*\\(.*).lua:%d+: .*", "%1")
|
||||
file = string.gsub(file, "([%(%)%.%*%+%-%[%]%?%^%$%%])", "%%%1")
|
||||
|
||||
local i = 0
|
||||
for s in string_gfind(stack, "\n([^\n]*)") do
|
||||
i = i + 1
|
||||
if not string.find(s, file .. "%.lua:%d+:") then
|
||||
file = string.gsub(s, "^.*\\(.*).lua:%d+: .*", "%1")
|
||||
file = string.gsub(file, "([%(%)%.%*%+%-%[%]%?%^%$%%])", "%%%1")
|
||||
break
|
||||
end
|
||||
end
|
||||
local j = 0
|
||||
for s in string_gfind(stack, "\n([^\n]*)") do
|
||||
j = j + 1
|
||||
if j > i and not string.find(s, file .. "%.lua:%d+:") then
|
||||
_G.error(message, j + 1)
|
||||
return
|
||||
end
|
||||
end
|
||||
_G.error(message, 2)
|
||||
return
|
||||
end
|
||||
|
||||
local function assert(self, condition, message, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
if not condition then
|
||||
if not message then
|
||||
local stack = debugstack()
|
||||
local _,_,second = string.find(stack, "\n(.-)\n")
|
||||
message = "assertion failed! " .. second
|
||||
end
|
||||
error(self, message, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
return
|
||||
end
|
||||
return condition
|
||||
end
|
||||
|
||||
local function argCheck(self, arg, num, kind, kind2, kind3, kind4, kind5)
|
||||
if type(num) ~= "number" then
|
||||
error(self, "Bad argument #3 to `argCheck' (number expected, got %s)", type(num))
|
||||
elseif type(kind) ~= "string" then
|
||||
error(self, "Bad argument #4 to `argCheck' (string expected, got %s)", type(kind))
|
||||
end
|
||||
local errored = false
|
||||
arg = type(arg)
|
||||
if arg ~= kind and arg ~= kind2 and arg ~= kind3 and arg ~= kind4 and arg ~= kind5 then
|
||||
local _,_,func = string.find(debugstack(), "`argCheck'.-([`<].-['>])")
|
||||
if not func then
|
||||
_,_,func = string.find(debugstack(), "([`<].-['>])")
|
||||
end
|
||||
if kind5 then
|
||||
error(self, "Bad argument #%s to %s (%s, %s, %s, %s, or %s expected, got %s)", tonumber(num) or 0/0, func, kind, kind2, kind3, kind4, kind5, arg)
|
||||
elseif kind4 then
|
||||
error(self, "Bad argument #%s to %s (%s, %s, %s, or %s expected, got %s)", tonumber(num) or 0/0, func, kind, kind2, kind3, kind4, arg)
|
||||
elseif kind3 then
|
||||
error(self, "Bad argument #%s to %s (%s, %s, or %s expected, got %s)", tonumber(num) or 0/0, func, kind, kind2, kind3, arg)
|
||||
elseif kind2 then
|
||||
error(self, "Bad argument #%s to %s (%s or %s expected, got %s)", tonumber(num) or 0/0, func, kind, kind2, arg)
|
||||
else
|
||||
error(self, "Bad argument #%s to %s (%s expected, got %s)", tonumber(num) or 0/0, func, kind, arg)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function pcall(self, func, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20 = _G.pcall(func, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
|
||||
if not a1 then
|
||||
error(self, string.gsub(a2, ".-%.lua:%d-: ", ""))
|
||||
else
|
||||
return a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20
|
||||
end
|
||||
end
|
||||
|
||||
local recurse = {}
|
||||
local function addToPositions(t, major)
|
||||
if not AceLibrary.positions[t] or AceLibrary.positions[t] == major then
|
||||
rawset(t, recurse, true)
|
||||
AceLibrary.positions[t] = major
|
||||
for k,v in pairs(t) do
|
||||
if type(v) == "table" and not rawget(v, recurse) then
|
||||
addToPositions(v, major)
|
||||
end
|
||||
if type(k) == "table" and not rawget(k, recurse) then
|
||||
addToPositions(k, major)
|
||||
end
|
||||
end
|
||||
local mt = getmetatable(t)
|
||||
if mt and not rawget(mt, recurse) then
|
||||
addToPositions(mt, major)
|
||||
end
|
||||
rawset(t, recurse, nil)
|
||||
end
|
||||
end
|
||||
|
||||
local function svnRevisionToNumber(text)
|
||||
if type(text) == "string" then
|
||||
if string.find(text, "^%$Revision: (%d+) %$$") then
|
||||
return tonumber((string.gsub(text, "^%$Revision: (%d+) %$$", "%1")))
|
||||
elseif string.find(text, "^%$Rev: (%d+) %$$") then
|
||||
return tonumber((string.gsub(text, "^%$Rev: (%d+) %$$", "%1")))
|
||||
elseif string.find(text, "^%$LastChangedRevision: (%d+) %$$") then
|
||||
return tonumber((string.gsub(text, "^%$LastChangedRevision: (%d+) %$$", "%1")))
|
||||
end
|
||||
elseif type(text) == "number" then
|
||||
return text
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
local crawlReplace
|
||||
do
|
||||
local recurse = {}
|
||||
local function func(t, to, from)
|
||||
if recurse[t] then
|
||||
return
|
||||
end
|
||||
recurse[t] = true
|
||||
local mt = getmetatable(t)
|
||||
setmetatable(t, nil)
|
||||
rawset(t, to, rawget(t, from))
|
||||
rawset(t, from, nil)
|
||||
for k,v in pairs(t) do
|
||||
if v == from then
|
||||
t[k] = to
|
||||
elseif type(v) == "table" then
|
||||
if not recurse[v] then
|
||||
func(v, to, from)
|
||||
end
|
||||
end
|
||||
|
||||
if type(k) == "table" then
|
||||
if not recurse[k] then
|
||||
func(k, to, from)
|
||||
end
|
||||
end
|
||||
end
|
||||
setmetatable(t, mt)
|
||||
if mt then
|
||||
if mt == from then
|
||||
setmetatable(t, to)
|
||||
elseif not recurse[mt] then
|
||||
func(mt, to, from)
|
||||
end
|
||||
end
|
||||
end
|
||||
function crawlReplace(t, to, from)
|
||||
func(t, to, from)
|
||||
for k in pairs(recurse) do
|
||||
recurse[k] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- @function destroyTable
|
||||
-- @brief remove all the contents of a table
|
||||
-- @param t table to destroy
|
||||
local function destroyTable(t)
|
||||
setmetatable(t, nil)
|
||||
for k,v in pairs(t) do t[k] = nil end
|
||||
table_setn(t, 0)
|
||||
end
|
||||
|
||||
local function isFrame(frame)
|
||||
return type(frame) == "table" and type(rawget(frame, 0)) == "userdata" and type(rawget(frame, 'IsFrameType')) == "function" and getmetatable(frame) and type(rawget(getmetatable(frame), '__index')) == "function"
|
||||
end
|
||||
|
||||
local new, del
|
||||
do
|
||||
local tables = setmetatable({}, {__mode = "k"})
|
||||
|
||||
function new()
|
||||
local t = next(tables)
|
||||
if t then
|
||||
tables[t] = nil
|
||||
return t
|
||||
else
|
||||
return {}
|
||||
end
|
||||
end
|
||||
|
||||
function del(t, depth)
|
||||
if depth and depth > 0 then
|
||||
for k,v in pairs(t) do
|
||||
if type(v) == "table" and not isFrame(v) then
|
||||
del(v, depth - 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
destroyTable(t)
|
||||
tables[t] = true
|
||||
end
|
||||
end
|
||||
|
||||
-- @function copyTable
|
||||
-- @brief Create a shallow copy of a table and return it.
|
||||
-- @param from The table to copy from
|
||||
-- @return A shallow copy of the table
|
||||
local function copyTable(from)
|
||||
local to = new()
|
||||
for k,v in pairs(from) do to[k] = v end
|
||||
table_setn(to, table.getn(from))
|
||||
setmetatable(to, getmetatable(from))
|
||||
return to
|
||||
end
|
||||
|
||||
-- @function deepTransfer
|
||||
-- @brief Fully transfer all data, keeping proper previous table
|
||||
-- backreferences stable.
|
||||
-- @param to The table with which data is to be injected into
|
||||
-- @param from The table whose data will be injected into the first
|
||||
-- @param saveFields If available, a shallow copy of the basic data is saved
|
||||
-- in here.
|
||||
-- @param list The account of table references
|
||||
-- @param list2 The current status on which tables have been traversed.
|
||||
local deepTransfer
|
||||
do
|
||||
-- @function examine
|
||||
-- @brief Take account of all the table references to be shared
|
||||
-- between the to and from tables.
|
||||
-- @param to The table with which data is to be injected into
|
||||
-- @param from The table whose data will be injected into the first
|
||||
-- @param list An account of the table references
|
||||
local function examine(to, from, list, major)
|
||||
list[from] = to
|
||||
for k,v in pairs(from) do
|
||||
if rawget(to, k) and type(from[k]) == "table" and type(to[k]) == "table" and not list[from[k]] then
|
||||
if from[k] == to[k] then
|
||||
list[from[k]] = to[k]
|
||||
elseif AceLibrary.positions[from[v]] ~= major and AceLibrary.positions[from[v]] then
|
||||
list[from[k]] = from[k]
|
||||
elseif not list[from[k]] then
|
||||
examine(to[k], from[k], list, major)
|
||||
end
|
||||
end
|
||||
end
|
||||
return list
|
||||
end
|
||||
|
||||
function deepTransfer(to, from, saveFields, major, list, list2)
|
||||
setmetatable(to, nil)
|
||||
local createdList
|
||||
if not list then
|
||||
createdList = true
|
||||
list = new()
|
||||
list2 = new()
|
||||
examine(to, from, list, major)
|
||||
end
|
||||
list2[to] = to
|
||||
for k,v in pairs(to) do
|
||||
if type(rawget(from, k)) ~= "table" or type(v) ~= "table" or isFrame(v) then
|
||||
if saveFields then
|
||||
saveFields[k] = v
|
||||
end
|
||||
to[k] = nil
|
||||
elseif v ~= _G then
|
||||
if saveFields then
|
||||
saveFields[k] = copyTable(v)
|
||||
end
|
||||
end
|
||||
end
|
||||
for k in pairs(from) do
|
||||
if rawget(to, k) and to[k] ~= from[k] and AceLibrary.positions[to[k]] == major and from[k] ~= _G then
|
||||
if not list2[to[k]] then
|
||||
deepTransfer(to[k], from[k], nil, major, list, list2)
|
||||
end
|
||||
to[k] = list[to[k]] or list2[to[k]]
|
||||
else
|
||||
rawset(to, k, from[k])
|
||||
end
|
||||
end
|
||||
table_setn(to, table.getn(from))
|
||||
setmetatable(to, getmetatable(from))
|
||||
local mt = getmetatable(to)
|
||||
if mt then
|
||||
if list[mt] then
|
||||
setmetatable(to, list[mt])
|
||||
elseif mt.__index and list[mt.__index] then
|
||||
mt.__index = list[mt.__index]
|
||||
end
|
||||
end
|
||||
destroyTable(from)
|
||||
if createdList then
|
||||
del(list)
|
||||
del(list2)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- @method TryToLoadStandalone
|
||||
-- @brief Attempt to find and load a standalone version of the requested library
|
||||
-- @param major A string representing the major version
|
||||
-- @return If library is found, return values from the call to LoadAddOn are returned
|
||||
-- If the library has been requested previously, nil is returned.
|
||||
local function TryToLoadStandalone(major)
|
||||
if not AceLibrary.scannedlibs then AceLibrary.scannedlibs = {} end
|
||||
if AceLibrary.scannedlibs[major] then return end
|
||||
|
||||
AceLibrary.scannedlibs[major] = true
|
||||
|
||||
local name, _, _, enabled, loadable = GetAddOnInfo(major)
|
||||
if loadable then
|
||||
return LoadAddOn(name)
|
||||
end
|
||||
|
||||
for i=1,GetNumAddOns() do
|
||||
if GetAddOnMetadata(i, "X-AceLibrary-"..major) then
|
||||
local name, _, _, enabled, loadable = GetAddOnInfo(i)
|
||||
if loadable then
|
||||
return LoadAddOn(name)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- @method IsNewVersion
|
||||
-- @brief Obtain whether the supplied version would be an upgrade to the
|
||||
-- current version. This allows for bypass code in library
|
||||
-- declaration.
|
||||
-- @param major A string representing the major version
|
||||
-- @param minor An integer or an svn revision string representing the minor version
|
||||
-- @return whether the supplied version would be newer than what is
|
||||
-- currently available.
|
||||
function AceLibrary:IsNewVersion(major, minor)
|
||||
argCheck(self, major, 2, "string")
|
||||
TryToLoadStandalone(major)
|
||||
|
||||
if type(minor) == "string" then
|
||||
local m = svnRevisionToNumber(minor)
|
||||
if m then
|
||||
minor = m
|
||||
else
|
||||
_G.error(string.format("Bad argument #3 to `IsNewVersion'. Must be a number or SVN revision string. %q is not appropriate", minor), 2)
|
||||
end
|
||||
end
|
||||
argCheck(self, minor, 3, "number")
|
||||
local data = self.libs[major]
|
||||
if not data then
|
||||
return true
|
||||
end
|
||||
return data.minor < minor
|
||||
end
|
||||
|
||||
-- @method HasInstance
|
||||
-- @brief Returns whether an instance exists. This allows for optional support of a library.
|
||||
-- @param major A string representing the major version.
|
||||
-- @param minor (optional) An integer or an svn revision string representing the minor version.
|
||||
-- @return Whether an instance exists.
|
||||
function AceLibrary:HasInstance(major, minor)
|
||||
argCheck(self, major, 2, "string")
|
||||
TryToLoadStandalone(major)
|
||||
|
||||
if minor then
|
||||
if type(minor) == "string" then
|
||||
local m = svnRevisionToNumber(minor)
|
||||
if m then
|
||||
minor = m
|
||||
else
|
||||
_G.error(string.format("Bad argument #3 to `HasInstance'. Must be a number or SVN revision string. %q is not appropriate", minor), 2)
|
||||
end
|
||||
end
|
||||
argCheck(self, minor, 3, "number")
|
||||
if not self.libs[major] then
|
||||
return
|
||||
end
|
||||
return self.libs[major].minor == minor
|
||||
end
|
||||
return self.libs[major] and true
|
||||
end
|
||||
|
||||
-- @method GetInstance
|
||||
-- @brief Returns the library with the given major/minor version.
|
||||
-- @param major A string representing the major version.
|
||||
-- @param minor (optional) An integer or an svn revision string representing the minor version.
|
||||
-- @return The library with the given major/minor version.
|
||||
function AceLibrary:GetInstance(major, minor)
|
||||
argCheck(self, major, 2, "string")
|
||||
TryToLoadStandalone(major)
|
||||
|
||||
local data = self.libs[major]
|
||||
if not data then
|
||||
_G.error(string.format("Cannot find a library instance of %s.", major), 2)
|
||||
return
|
||||
end
|
||||
if minor then
|
||||
if type(minor) == "string" then
|
||||
local m = svnRevisionToNumber(minor)
|
||||
if m then
|
||||
minor = m
|
||||
else
|
||||
_G.error(string.format("Bad argument #3 to `GetInstance'. Must be a number or SVN revision string. %q is not appropriate", minor), 2)
|
||||
end
|
||||
end
|
||||
argCheck(self, minor, 2, "number")
|
||||
if data.minor ~= minor then
|
||||
_G.error(string.format("Cannot find a library instance of %s, minor version %d.", major, minor), 2)
|
||||
return
|
||||
end
|
||||
end
|
||||
return data.instance
|
||||
end
|
||||
|
||||
-- Syntax sugar. AceLibrary("FooBar-1.0")
|
||||
AceLibrary_mt.__call = AceLibrary.GetInstance
|
||||
|
||||
local donothing
|
||||
|
||||
local AceEvent
|
||||
|
||||
-- @method Register
|
||||
-- @brief Registers a new version of a given library.
|
||||
-- @param newInstance the library to register
|
||||
-- @param major the major version of the library
|
||||
-- @param minor the minor version of the library
|
||||
-- @param activateFunc (optional) A function to be called when the library is
|
||||
-- fully activated. Takes the arguments
|
||||
-- (newInstance [, oldInstance, oldDeactivateFunc]). If
|
||||
-- oldInstance is given, you should probably call
|
||||
-- oldDeactivateFunc(oldInstance).
|
||||
-- @param deactivateFunc (optional) A function to be called by a newer library's
|
||||
-- activateFunc.
|
||||
-- @param externalFunc (optional) A function to be called whenever a new
|
||||
-- library is registered.
|
||||
function AceLibrary:Register(newInstance, major, minor, activateFunc, deactivateFunc, externalFunc)
|
||||
argCheck(self, newInstance, 2, "table")
|
||||
argCheck(self, major, 3, "string")
|
||||
if type(minor) == "string" then
|
||||
local m = svnRevisionToNumber(minor)
|
||||
if m then
|
||||
minor = m
|
||||
else
|
||||
_G.error(string.format("Bad argument #4 to `Register'. Must be a number or SVN revision string. %q is not appropriate", minor), 2)
|
||||
end
|
||||
end
|
||||
argCheck(self, minor, 4, "number")
|
||||
if math.floor(minor) ~= minor or minor < 0 then
|
||||
error(self, "Bad argument #4 to `Register' (integer >= 0 expected, got %s)", minor)
|
||||
end
|
||||
argCheck(self, activateFunc, 5, "function", "nil")
|
||||
argCheck(self, deactivateFunc, 6, "function", "nil")
|
||||
argCheck(self, externalFunc, 7, "function", "nil")
|
||||
if not deactivateFunc then
|
||||
if not donothing then
|
||||
donothing = function() end
|
||||
end
|
||||
deactivateFunc = donothing
|
||||
end
|
||||
local data = self.libs[major]
|
||||
if not data then
|
||||
-- This is new
|
||||
local instance = copyTable(newInstance)
|
||||
crawlReplace(instance, instance, newInstance)
|
||||
destroyTable(newInstance)
|
||||
if AceLibrary == newInstance then
|
||||
self = instance
|
||||
AceLibrary = instance
|
||||
end
|
||||
self.libs[major] = {
|
||||
instance = instance,
|
||||
minor = minor,
|
||||
deactivateFunc = deactivateFunc,
|
||||
externalFunc = externalFunc,
|
||||
}
|
||||
rawset(instance, 'GetLibraryVersion', function(self)
|
||||
return major, minor
|
||||
end)
|
||||
if not rawget(instance, 'error') then
|
||||
rawset(instance, 'error', error)
|
||||
end
|
||||
if not rawget(instance, 'assert') then
|
||||
rawset(instance, 'assert', assert)
|
||||
end
|
||||
if not rawget(instance, 'argCheck') then
|
||||
rawset(instance, 'argCheck', argCheck)
|
||||
end
|
||||
if not rawget(instance, 'pcall') then
|
||||
rawset(instance, 'pcall', pcall)
|
||||
end
|
||||
addToPositions(instance, major)
|
||||
if activateFunc then
|
||||
activateFunc(instance, nil, nil) -- no old version, so explicit nil
|
||||
end
|
||||
|
||||
if externalFunc then
|
||||
for k,data in pairs(self.libs) do
|
||||
if k ~= major then
|
||||
externalFunc(instance, k, data.instance)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for k,data in pairs(self.libs) do
|
||||
if k ~= major and data.externalFunc then
|
||||
data.externalFunc(data.instance, major, instance)
|
||||
end
|
||||
end
|
||||
if major == "AceEvent-2.0" then
|
||||
AceEvent = instance
|
||||
end
|
||||
if AceEvent then
|
||||
AceEvent.TriggerEvent(self, "AceLibrary_Register", major, instance)
|
||||
end
|
||||
|
||||
return instance
|
||||
end
|
||||
local instance = data.instance
|
||||
if minor <= data.minor then
|
||||
-- This one is already obsolete, raise an error.
|
||||
_G.error(string.format("Obsolete library registered. %s is already registered at version %d. You are trying to register version %d. Hint: if not AceLibrary:IsNewVersion(%q, %d) then return end", major, data.minor, minor, major, minor), 2)
|
||||
return
|
||||
end
|
||||
-- This is an update
|
||||
local oldInstance = new()
|
||||
|
||||
addToPositions(newInstance, major)
|
||||
local isAceLibrary = (AceLibrary == newInstance)
|
||||
local old_error, old_assert, old_argCheck, old_pcall
|
||||
if isAceLibrary then
|
||||
self = instance
|
||||
AceLibrary = instance
|
||||
|
||||
old_error = instance.error
|
||||
old_assert = instance.assert
|
||||
old_argCheck = instance.argCheck
|
||||
old_pcall = instance.pcall
|
||||
|
||||
self.error = error
|
||||
self.assert = assert
|
||||
self.argCheck = argCheck
|
||||
self.pcall = pcall
|
||||
end
|
||||
deepTransfer(instance, newInstance, oldInstance, major)
|
||||
crawlReplace(instance, instance, newInstance)
|
||||
local oldDeactivateFunc = data.deactivateFunc
|
||||
data.minor = minor
|
||||
data.deactivateFunc = deactivateFunc
|
||||
data.externalFunc = externalFunc
|
||||
rawset(instance, 'GetLibraryVersion', function(self)
|
||||
return major, minor
|
||||
end)
|
||||
if not rawget(instance, 'error') then
|
||||
rawset(instance, 'error', error)
|
||||
end
|
||||
if not rawget(instance, 'assert') then
|
||||
rawset(instance, 'assert', assert)
|
||||
end
|
||||
if not rawget(instance, 'argCheck') then
|
||||
rawset(instance, 'argCheck', argCheck)
|
||||
end
|
||||
if not rawget(instance, 'pcall') then
|
||||
rawset(instance, 'pcall', pcall)
|
||||
end
|
||||
if isAceLibrary then
|
||||
for _,v in pairs(self.libs) do
|
||||
local i = type(v) == "table" and v.instance
|
||||
if type(i) == "table" then
|
||||
if not rawget(i, 'error') or i.error == old_error then
|
||||
rawset(i, 'error', error)
|
||||
end
|
||||
if not rawget(i, 'assert') or i.assert == old_assert then
|
||||
rawset(i, 'assert', assert)
|
||||
end
|
||||
if not rawget(i, 'argCheck') or i.argCheck == old_argCheck then
|
||||
rawset(i, 'argCheck', argCheck)
|
||||
end
|
||||
if not rawget(i, 'pcall') or i.pcall == old_pcall then
|
||||
rawset(i, 'pcall', pcall)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if activateFunc then
|
||||
activateFunc(instance, oldInstance, oldDeactivateFunc)
|
||||
else
|
||||
oldDeactivateFunc(oldInstance)
|
||||
end
|
||||
del(oldInstance)
|
||||
|
||||
if externalFunc then
|
||||
for k,data in pairs(self.libs) do
|
||||
if k ~= major then
|
||||
externalFunc(instance, k, data.instance)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return instance
|
||||
end
|
||||
|
||||
local iter
|
||||
function AceLibrary:IterateLibraries()
|
||||
if not iter then
|
||||
local function iter(t, k)
|
||||
k = next(t, k)
|
||||
if not k then
|
||||
return nil
|
||||
else
|
||||
return k, t[k].instance
|
||||
end
|
||||
end
|
||||
end
|
||||
return iter, self.libs, nil
|
||||
end
|
||||
|
||||
-- @function Activate
|
||||
-- @brief The activateFunc for AceLibrary itself. Called when
|
||||
-- AceLibrary properly registers.
|
||||
-- @param self Reference to AceLibrary
|
||||
-- @param oldLib (optional) Reference to an old version of AceLibrary
|
||||
-- @param oldDeactivate (optional) Function to deactivate the old lib
|
||||
local function activate(self, oldLib, oldDeactivate)
|
||||
if not self.libs then
|
||||
if oldLib then
|
||||
self.libs = oldLib.libs
|
||||
self.scannedlibs = oldLib.scannedlibs
|
||||
end
|
||||
if not self.libs then
|
||||
self.libs = {}
|
||||
end
|
||||
if not self.scannedlibs then
|
||||
self.scannedlibs = {}
|
||||
end
|
||||
end
|
||||
if not self.positions then
|
||||
if oldLib then
|
||||
self.positions = oldLib.positions
|
||||
end
|
||||
if not self.positions then
|
||||
self.positions = setmetatable({}, { __mode = "k" })
|
||||
end
|
||||
end
|
||||
|
||||
-- Expose the library in the global environment
|
||||
_G[ACELIBRARY_MAJOR] = self
|
||||
|
||||
if oldDeactivate then
|
||||
oldDeactivate(oldLib)
|
||||
end
|
||||
end
|
||||
|
||||
if not previous then
|
||||
previous = AceLibrary
|
||||
end
|
||||
if not previous.libs then
|
||||
previous.libs = {}
|
||||
end
|
||||
AceLibrary.libs = previous.libs
|
||||
if not previous.positions then
|
||||
previous.positions = setmetatable({}, { __mode = "k" })
|
||||
end
|
||||
AceLibrary.positions = previous.positions
|
||||
AceLibrary:Register(AceLibrary, ACELIBRARY_MAJOR, ACELIBRARY_MINOR, activate)
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user