diff --git a/.gitignore b/.gitignore
index 723ef36..1ac0165 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
-.idea
\ No newline at end of file
+.idea
+libs/LibBabble-SubZone-3.0/
\ No newline at end of file
diff --git a/BeStride.lua b/BeStride.lua
index 640c582..5dbc44b 100644
--- a/BeStride.lua
+++ b/BeStride.lua
@@ -1,437 +1,3 @@
BeStride = LibStub("AceAddon-3.0"):NewAddon("Bestride","AceConsole-3.0", "AceEvent-3.0")
-debugLevel = 8
-
-function sortTable(unsortedTable)
- keys = {}
- sortedTable = {}
- for key in pairs(unsortedTable) do table.insert(keys,key) end
- table.sort(keys)
- for _,key in ipairs(keys) do sortedTable[key] = unsortedTable[key] end
- return sortedTable
-end
-
-function searchTableForValue(haystack,needle)
- for k,v in pairs(haystack) do
- if v == needle then
- return k
- end
- end
-
- return nil
-end
-
-function pairsByKeys (t, f)
- local a = {}
- for n in pairs(t) do table.insert(a, n) end
- table.sort(a, f)
- local i = 0 -- iterator variable
- local iter = function () -- iterator function
- i = i + 1
- if a[i] == nil then return nil
- else return a[i], t[a[i]]
- end
- end
- return iter
-end
-
-function countTable(t)
- assert(type(t) == 'table', 'bad parameter #1: must be table')
- local count = 0
- for k, v in pairs(t) do
- count = count + 1
- end
-
- return count
-end
-
-function BeStride:OnInitialize()
- self.db = LibStub("AceDB-3.0"):New("BeStrideDB", defaults, "Default")
- self:RegisterChatCommand("bestride","ChatCommand")
- self:RegisterChatCommand("br","ChatCommand")
-
- local bestrideOptions = LibStub("AceConfigRegistry-3.0")
- bestrideOptions:RegisterOptionsTable("BeStride",BeStride_Options)
- self.bestrideOptionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("BeStride","BeStride")
-
- self.buttons = {
- ["mount"] = nil,
- ["ground"] = nil,
- ["repair"] = nil,
- ["passenger"] = nil,
- }
-
- self.buttons["regular"] = BeStride:CreateActionButton('Regular')
- self.buttons["ground"] = BeStride:CreateActionButton('Ground')
- self.buttons["repair"] = BeStride:CreateActionButton('Repair')
- self.buttons["passenger"] = BeStride:CreateActionButton('Passenger')
-
- local className,classFilename,classID = UnitClass("player")
- local raceName,raceFile,raceID = UnitRace("player")
- local factionName,factionLocalized = UnitFactionGroup("player")
- local factionId = nil
-
- if factionName == "Alliance" then
- factionId = 1
- else
- factionId = 0
- end
-
- playerTable["class"] = {}
- playerTable["class"]["id"] = classID
- playerTable["class"]["name"] = className
- playerTable["race"] = {}
- playerTable["race"]["name"] = raceName
- playerTable["race"]["id"] = raceID
- playerTable["faction"] = {}
- playerTable["faction"]["name"] = factionName
- playerTable["faction"]["id"] = factionId
- playerTable["faction"]["localization"] = factionLocalized
-end
-
-function BeStride:Frame()
- BeStride_GUI:Frame()
-end
-
-function BeStride:OnEnable()
- BeStride:buildMountTables()
-
- if BeStride_Game == "Mainline" then
- BeStride:RegisterEvent("NEW_MOUNT_ADDED", "EventNewMount")
- end
-
- BeStride:RegisterEvent("PLAYER_REGEN_DISABLED", "EventCombatEnter")
- BeStride:RegisterEvent("PLAYER_REGEN_ENABLED", "EventCombatExit")
-
- BeStride:Upgrade()
-end
-
-function BeStride:GetProfiles()
- local profiles = BeStride.db:GetProfiles()
- table.sort(profiles)
- return profiles
-end
-
-function BeStride:NewMount(...)
- --BeStride_Debug:Debug("NewMount")
- table.foreach(args,function (k,v) print("Arg: " .. k) end)
-end
-
-function BeStride:UpdateBindings()
- BeStride:SetKeyBindings(self.buttons["regular"])
- BeStride:SetKeyBindings(self.buttons["ground"])
- BeStride:SetKeyBindings(self.buttons["passenger"])
- BeStride:SetKeyBindings(self.buttons["repair"])
-
- SaveBindings(GetCurrentBindingSet())
-end
-
-function BeStride:UpdateOverrideBindings()
- BeStride:SetKeyBindingsOverrides(self.buttons["regular"])
- BeStride:SetKeyBindingsOverrides(self.buttons["ground"])
- BeStride:SetKeyBindingsOverrides(self.buttons["passenger"])
- BeStride:SetKeyBindingsOverrides(self.buttons["repair"])
-
- SaveBindings(GetCurrentBindingSet())
-end
-
-
-function BeStride:Upgrade()
- local db = LibStub("AceDB-3.0"):New("BestrideDB")
-
- local mountButtons = {
- BRMOUNT = BeStride_ABRegularMount,
- BRFORCEGROUND = BeStride_ABGroundMount,
- BRFORCEPASSENGER = BeStride_ABPassengerMount,
- BRFORCEREPAIR = BeStride_ABRepairMount
- }
-
- if self.db.profile.settings.ymBindingsMigrated == false then
- table.foreach(mountButtons,function (binding,button)
- local primaryKey,secondaryKey = GetBindingKey(binding)
- if primaryKey then
- SetBindingClick(primaryKey,button:GetName())
- end
-
- if secondaryKey then
- SetBindingClick(secondaryKey,button:GetName())
- end
- end)
- end
- if self.db.profile.settings.bindingsMigrated == false then
- table.foreach({BeStride_ABRegularMount,BeStride_ABGroundMount,BeStride_ABPassengerMount,BeStride_ABRepairMount},function (key,button)
- local primaryKey,secondaryKey = GetBindingKey(button:GetName())
- if primaryKey then
- SetBindingClick(primaryKey,button:GetName())
- end
-
- if secondaryKey then
- SetBindingClick(secondaryKey,button:GetName())
- end
- end)
- end
- self.db.profile.settings.bindingsMigrated = true
- self.db.profile.settings.ymBindingsMigrated = true
-
- if db.profile.settings and self.db.profile.settings.migrated == false then
- table.foreach(db.profile.settings,function (key,value)
- if key == "HM" then
- self.db.profile.settings.mount.hasmount = value
- elseif key == "ER" then
- self.db.profile.settings.mount.emptyrandom = value
- elseif key == "FBP" then
- self.db.profile.settings.mount.flyingbroom = value
- elseif key == "TTT" then
- self.db.profile.settings.classes.druid.traveltotravel = value
- elseif key == "MTFF" then
- self.db.profile.settings.classes.druid.mountedtoflightform = value
- elseif key == "NDWF" then
- self.db.profile.settings.mount.nodismountwhileflying = value
- elseif key == "FFM" then
- self.db.profile.settings.mount.useflyingmount = value
- elseif key == "URM" then
- self.db.profile.settings.mount.repair.use = value
- elseif key == "ENABLENEW" then
- self.db.profile.settings.mount.enablenew = value
- elseif key == "TELAARI" then
- self.db.profile.settings.mount.telaari = value
- elseif key == "DEATHKNIGHT" then
- self.db.profile.settings.classes.deathknight.wraithwalk = value
- elseif key == "PALADIN" then
- self.db.profile.settings.classes.paladin.steed = value
- elseif key == "SHAMAN" then
- self.db.profile.settings.classes.shaman.ghostwolf = value
- elseif key == "MONK" then
- self.db.profile.settings.classes.monk.roll = value
- elseif key == "MONKZENUSE" then
- self.db.profile.settings.classes.monk.zenflight = value
- elseif key == "ROGUE" then
- self.db.profile.settings.classes.rogue.sprint = value
- elseif key == "PRIEST" then
- self.db.profile.settings.classes.levitate = value
- elseif key == "MAGE" then
- self.db.profile.settings.classes.mage.slowfall = value
- self.db.profile.settings.classes.mage.blink = value
- end
- end)
-
- table.foreach(db.profile.mounts,function (key,value)
- if mountTable.master[value[3]] and mountTable.master[value[3]].spellID == key then
- local mountID,spellID,status,savedType = value[3],key,value[1],value[2]
- local mountType = mountTable.master[mountID].type
-
- if mountType == "ground" or mountType == "flying" or mountType == "swimming" then
- self.db.profile.mounts[mountType][mountID] = status
- end
-
- if savedType == "special" then
- if BeStride_Constants.Mount.Mounts[mountTable.master[mountID].spellID] and BeStride_Constants.Mount.Mounts[mountTable.master[mountID].spellID].type == "zone" then
- self.db.profile.mounts[mountType][mountID] = status
- end
- end
- end
- end)
- end
-
- self.db.profile.settings.migrated = true
-end
-
-function BeStride:SetKeyBindings(button)
- local primaryKey,secondaryKey = GetBindingKey("CLICK " .. button:GetName() .. ":LeftButton")
-
- if primaryKey then
- SetBindingClick(primaryKey,button:GetName())
- end
-
- if secondaryKey then
- SetBindingClick(secondaryKey,button:GetName())
- end
-end
-
-function BeStride:SetKeyBindingsOverrides(button)
- ClearOverrideBindings(button)
-
- local primaryKey,secondaryKey = GetBindingKey(button:GetName())
- if primaryKey then
- SetOverrideBindingClick(button, true, primaryKey, button:GetName())
- end
-
- if secondaryKey then
- SetOverrideBindingClick(button, true, secondaryKey, button:GetName())
- end
-end
-
-function BeStride:ChatCommand(input)
- if input == "reload" then
- BeStride:buildMountTables()
- elseif input == "map" then
- local locID = C_Map.GetBestMapForUnit("player")
- print("mapID:name:mapType:parentMapID")
- local map = self:GetMapUntil(locID,0,true)
- print("Final: ")
- print(map.mapID .. ":" .. map.name .. ":" .. map.mapType .. ":" .. map.parentMapID)
- elseif input == "maplast" then
- local locID = C_Map.GetBestMapForUnit("player")
- print("mapID:name:mapType:parentMapID")
- local map = self:GetMapUntilLast(locID,0,true)
- print("Final: ")
- print(map.mapID .. ":" .. map.name .. ":" .. map.mapType .. ":" .. map.parentMapID)
- elseif input == "underwater" then
- BeStride_Logic:IsUnderwater()
- elseif input == "bug" then
- BeStride_GUI:BugReport()
- elseif input == "depth" then
- BeStride_GUI:DebugTable({},0)
- else
- BeStride_GUI:Frame(input)
- end
-end
-
-function BeStride:SpellToName(spellID)
- local name, rank, icon, castTime, minRange, maxRange, spellID = GetSpellInfo(spellID)
-
- return name
-end
-
-function BeStride:DBGet(path,parent)
- local child,nextPath = strsplit(".",path,2)
-
- if child ~= nil and parent ~= nil and parent[child] ~= nil and nextPath == nil then
- return parent[child]
- elseif child ~= nil and parent ~= nil and parent[child] ~= nil and nextPath ~= nil then
- return BeStride:DBGet(nextPath,parent[child])
- elseif child ~= nil and parent == nil and nextPath == nil then
- return self.db.profile[child]
- elseif child ~= nil and parent == nil and nextPath ~= nil then
- if self.db.profile[child] ~= nil then
- return BeStride:DBGet(nextPath,self.db.profile[child])
- else
- BeStride_Debug:Debug("Fatal: self.db.profile[child(" .. child .. ")] == nil")
- return nil
- end
- else
- BeStride_Debug:Debug("Fatal: Unmatch (" .. path .. ")")
- return nil
- end
-end
-
-function BeStride:DBSet(path,value,parent)
- local child,nextPath = strsplit(".",path,2)
-
- if child ~= nil and parent ~= nil and nextPath == nil then
- parent[child] = value
- elseif child ~= nil and parent ~= nil and parent[child] == nil and nextPath ~= nil then
- parent[child] = {}
- BeStride:DBSet(nextPath,value,parent[child])
- elseif child ~= nil and parent ~= nil and parent[child] ~= nil and nextPath ~= nil then
- BeStride:DBSet(nextPath,value,parent[child])
- elseif child ~= nil and parent == nil and nextPath == nil then
- self.db.profile[child] = value
- elseif child ~= nil and parent == nil and nextPath ~= nil then
- if self.db.profile[child] == nil then
- self.db.profile[child] = {}
- end
- BeStride:DBSet(nextPath,value,self.db.profile[child])
- end
-end
-
-function BeStride:DBGetMount(mountType,mountID)
- if self.db.profile.mounts[mountType][mountID] ~= nil then
- return self.db.profile.mounts[mountType][mountID]
- else
- if self.db.profile.settings.mount.enablenew ~= nil and self.db.profile.settings.mount.enablenew == true then
- self.db.profile.mounts[mountType][mountID] = true
- else
- self.db.profile.mounts[mountType][mountID] = true
- end
- return self.db.profile.mounts[mountType][mountID]
- end
-end
-
-function BeStride:DBSetMount(mountType,mountID,value)
- self.db.profile.mounts[mountType][mountID] = value
-end
-
-function BeStride:DBGetSetting(setting)
- return self:DBGet("settings." .. setting)
-end
-
-function BeStride:DBSetSetting(setting, value)
- return self:DBSet("settings." .. setting,value)
-end
-
-function BeStride:DBGetClassSetting(parent,setting)
- if parent and self.db.profile.settings.classes[parent] ~= nil and self.db.profile.settings.classes[parent][setting] ~= nil then
- return self.db.profile.settings.classes[parent][setting]
- else
- return nil
- end
-end
-
-function BeStride:DBSetClassSetting(parent,setting, value)
- if parent and self.db.profile.settings.classes[parent] ~= nil then
- self.db.profile.settings.classes[parent][setting] = value
- end
-end
-
-function BeStride:buildMountTables()
- BeStride:BuildMasterMountTable()
- BeStride:LoadMountTables()
-end
-
-function BeStride:LoadMountTables()
- mountTable["ground"] = {}
- mountTable["flying"] = {}
- mountTable["swimming"] = {}
- mountTable["passenger"] = {}
- mountTable["repair"] = {}
- for key,value in pairs(mountTable["master"]) do
- if value["faction"] == nil or value["faction"] == playerTable["faction"]["id"] then
- --if value["faction"] then
- --print("Adding Mount: " .. value["name"] .. " Id: " .. key .. " Type: " .. value["type"] .. " Faction: " .. value["faction"] .. " Player Faction: " .. playerTable["faction"]["id"] .. " SID: " .. value["spellID"] .. " MID: " .. value["mountID"])
- --end
- --print("Adding Mount: " .. value["name"] .. " Id: " .. key .. " Type: " .. value["type"] .. " SID: " .. value["spellID"] .. " MID: " .. value["mountID"] .. " Type: " .. value["type"])
- BeStride:AddCommonMount(key)
- BeStride:AddPassengerMount(key)
- BeStride:AddRepairMount(key)
- end
- end
-end
-
-function BeStride:AddCommonMount(mountId)
- local mount = mountTable["master"][mountId]
- if mount["type"] == "ground" then
- --print("Adding Mount: " .. mount["name"] .. " Id: " .. mountId .. " Type: " .. mount["type"])
- table.insert(mountTable["ground"],mountId)
- elseif mount["type"] == "flying" then
- --print("Adding Mount: " .. mount["name"] .. " Id: " .. mountId .. " Type: " .. mount["type"])
- table.insert(mountTable["flying"],mountId)
- elseif mount["type"] == "swimming" then
- --print("Adding Mount: " .. mount["name"] .. " Id: " .. mountId .. " Type: " .. mount["type"])
- table.insert(mountTable["swimming"],mountId)
- elseif mount["type"] == "zone" then
- if mountId == 373 then
- table.insert(mountTable["swimming"],mountId)
- end
- table.insert(mountTable["zone"],mountId)
- end
-end
-
-function BeStride:AddPassengerMount(mountId)
- if BeStride_Constants.Mount.Mounts[mountTable["master"][mountId]["spellID"]] ~= nil and BeStride_Constants.Mount.Mounts[mountTable["master"][mountId]["spellID"]]["type"] == "passenger" then
- table.insert(mountTable["passenger"],mountId)
- end
-end
-
-function BeStride:AddRepairMount(mountId)
- if BeStride_Constants.Mount.Mounts[mountTable["master"][mountId]["spellID"]] ~= nil and BeStride_Constants.Mount.Mounts[mountTable["master"][mountId]["spellID"]]["repair"] then
- table.insert(mountTable["repair"],mountId)
- end
-end
-
-function BeStride:ItemToName(itemID)
- local itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemIcon, itemSellPrice, itemClassID, itemSubClassID, bindType, expacID, itemSetID, isCraftingReagent = GetItemInfo(itemID)
-
- return itemName
-end
-
+debugLevel = 8
\ No newline at end of file
diff --git a/Versions/BeStride_Mainline.xml b/Versions/BeStride_Mainline.xml
index 7cda92f..2b13f8b 100644
--- a/Versions/BeStride_Mainline.xml
+++ b/Versions/BeStride_Mainline.xml
@@ -4,12 +4,28 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Versions/BeStride_Wrath.xml b/Versions/BeStride_Wrath.xml
index 998d60b..6623917 100644
--- a/Versions/BeStride_Wrath.xml
+++ b/Versions/BeStride_Wrath.xml
@@ -3,15 +3,30 @@
-
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Versions/Common/BeStride_ActionButton.lua b/Versions/Common/BeStride_ActionButton.lua
index 118bfae..1e02612 100644
--- a/Versions/Common/BeStride_ActionButton.lua
+++ b/Versions/Common/BeStride_ActionButton.lua
@@ -37,11 +37,11 @@ end
-- Action Button Wrapper
function BeStride_ActionButtonRegularMount:PreClick()
- if BeStride_Logic:IsCombat() then
+ if BeStride:IsCombat() then
return
end
- local mount = BeStride_Logic:Regular()
+ local mount = BeStride:Regular()
if mount ~= nil then
self:SetAttribute("macrotext",mount)
end
@@ -49,7 +49,7 @@ end
-- Action Button Cleanup
function BeStride_ActionButtonRegularMount:PostClick()
- if BeStride_Logic:IsCombat() then
+ if BeStride:IsCombat() then
return
end
@@ -63,11 +63,11 @@ end
-- Action Button Wrapper
function BeStride_ActionButtonGroundMount:PreClick()
- if BeStride_Logic:IsCombat() then
+ if BeStride:IsCombat() then
return
end
- local mount = BeStride_Logic:GroundMountButton()
+ local mount = BeStride:GroundMountButton()
if mount ~= nil then
self:SetAttribute("macrotext",mount)
end
@@ -75,7 +75,7 @@ end
-- Action Button Cleanup
function BeStride_ActionButtonGroundMount:PostClick()
- if BeStride_Logic:IsCombat() then
+ if BeStride:IsCombat() then
return
end
@@ -89,11 +89,11 @@ end
-- Action Button Wrapper
function BeStride_ActionButtonPassengerMount:PreClick()
- if BeStride_Logic:IsCombat() then
+ if BeStride:IsCombat() then
return
end
- local mount = BeStride_Logic:PassengerMountButton()
+ local mount = BeStride:PassengerMountButton()
if mount ~= nil then
self:SetAttribute("macrotext",mount)
end
@@ -101,7 +101,7 @@ end
-- Action Button Cleanup
function BeStride_ActionButtonPassengerMount:PostClick()
- if BeStride_Logic:IsCombat() then
+ if BeStride:IsCombat() then
return
end
@@ -115,11 +115,11 @@ end
-- Action Button Wrapper
function BeStride_ActionButtonRepairMount:PreClick()
- if BeStride_Logic:IsCombat() then
+ if BeStride:IsCombat() then
return
end
- local mount = BeStride_Logic:RepairMountButton()
+ local mount = BeStride:RepairMountButton()
if mount ~= nil then
self:SetAttribute("macrotext",mount)
end
@@ -127,7 +127,7 @@ end
-- Action Button Cleanup
function BeStride_ActionButtonRepairMount:PostClick()
- if BeStride_Logic:IsCombat() then
+ if BeStride:IsCombat() then
return
end
diff --git a/Versions/Common/BeStride_Constants.lua b/Versions/Common/BeStride_Constants.lua
index 1929f2e..c262db5 100644
--- a/Versions/Common/BeStride_Constants.lua
+++ b/Versions/Common/BeStride_Constants.lua
@@ -174,6 +174,10 @@ BeStride_Constants = {
[1355] = {
requires = 278833,
},
+ [125] = {
+ blocked = true,
+ except = "Krasus' Landing"
+ }
},
},
},
diff --git a/Versions/Common/BeStride_Events.lua b/Versions/Common/BeStride_Events.lua
index 7026387..cac09ba 100644
--- a/Versions/Common/BeStride_Events.lua
+++ b/Versions/Common/BeStride_Events.lua
@@ -14,7 +14,7 @@ function BeStride:EventUpdateKeyBinding()
end
function BeStride:EventCombatEnter()
- local combatButton = BeStride_Logic:Combat()
+ local combatButton = BeStride:Combat()
if combatButton ~= nil then
BeStride_ABRegularMount:SetAttribute("macrotext",combatButton)
BeStride_ABGroundMount:SetAttribute("macrotext",combatButton)
diff --git a/Versions/Common/BeStride_GUI.lua b/Versions/Common/BeStride_GUI.lua
index 9315af2..5ff2fa1 100644
--- a/Versions/Common/BeStride_GUI.lua
+++ b/Versions/Common/BeStride_GUI.lua
@@ -62,8 +62,10 @@ function BeStride_GUI:Open(defaultTab)
end
function BeStride_GUI:Close()
- ClearOverrideBindings(self.close)
- self.close = nil
+ if self.close ~= nil then
+ ClearOverrideBindings(self.close)
+ self.close = nil
+ end
AceGUI:Release(BeStride_Frame)
BeStride_Frame = nil
@@ -186,8 +188,11 @@ function BeStride_GUI:CreateMountCheckBoxes(group,filter)
if filter == nil or (filter ~= nil and (string.len(filter) == 0 or string.find(string.lower(mountTable.master[mount].name), string.lower(filter)))) then
local mountCheck = BeStride_GUI:CreateMountCheckBox(group,mount)
if mountCheck ~= nil then
- --print("Creating mount: " .. mount)
local name = mountTable.master[mount].name
+ if self.mounts[group] == nil then
+ self.mounts[group] = {}
+ self.mounts[group][name] = nil
+ end
self.mounts[group][name] = mountCheck
end
end
diff --git a/Versions/Common/BeStride_Mount.lua b/Versions/Common/BeStride_Mount.lua
index 6455818..c650738 100644
--- a/Versions/Common/BeStride_Mount.lua
+++ b/Versions/Common/BeStride_Mount.lua
@@ -33,8 +33,8 @@ end
function BeStride_Mount:IsUsable(mount)
--print("" .. mount)
- local spellID,mountID,isUsable = BeStride_Logic:isMountUsable(mount)
- if BeStride_Logic:isZoneMount(mountID) then
+ local spellID,mountID,isUsable = BeStride:isMountUsable(mount)
+ if BeStride:isZoneMount(mountID) then
if zone ~= nil and zone.mapID == BeStride_Constants.Mount.Mounts[spellID].zone then
return true
@@ -164,13 +164,13 @@ function BeStride_Mount:Passenger(type)
end
function BeStride_Mount:Broom()
- return self:Mount(BeStride:ItemToName(37011))
+ return self:Mount(ItemToName(37011))
end
function BeStride_Mount:Loaned()
- local mount = BeStride_Logic:CheckLoanedMount()
+ local mount = BeStride:CheckLoanedMount()
- return self:MountSpell(BeStride:SpellToName(mount))
+ return self:MountSpell(SpellToName(mount))
end
function BeStride_Mount:VashjirSeahorse()
@@ -183,9 +183,9 @@ end
function BeStride_Mount:Chauffeur()
if IsUsableSpell(179245) then
- return self:MountSpell(BeStride:SpellToName(179245))
+ return self:MountSpell(SpellToName(179245))
elseif IsUsableSpell(179244) then
- return self:MountSpell(BeStride:SpellToName(179244))
+ return self:MountSpell(SpellToName(179244))
end
end
@@ -199,32 +199,32 @@ function BeStride_Mount:Robot()
table.insert(mounts,223814)
end
- return self:MountSpell(BeStride:SpellToName(mounts[math.random(#mounts)]))
+ return self:MountSpell(SpellToName(mounts[math.random(#mounts)]))
end
function BeStride_Mount:Nagrand()
- return self:MountSpell(BeStride:SpellToName(164222))
+ return self:MountSpell(SpellToName(164222))
end
function BeStride_Mount:DeathKnightWraithWalk()
- return self:MountSpell(BeStride:SpellToName(212552))
+ return self:MountSpell(SpellToName(212552))
end
function BeStride_Mount:DemonHunterFelRush()
- return self:MountSpell(BeStride:SpellToName(195072))
+ return self:MountSpell(SpellToName(195072))
end
function BeStride_Mount:DemonHunterGlide()
- return self:MountSpell(BeStride:SpellToName(131347))
+ return self:MountSpell(SpellToName(131347))
end
function BeStride_Mount:Druid()
local travelForm, flightForm = 783, 783 -- 3 in 1 travel form
if GetUnitSpeed("player") ~= 0 then
- return self:MountSpell(BeStride:SpellToName(783))
- elseif BeStride_Logic:DruidFlyingMTFF() or IsFalling() or IsFlying() or GetShapeshiftForm() == 3 then
- return self:MountSpell(BeStride:SpellToName(783))
+ return self:MountSpell(SpellToName(783))
+ elseif BeStride:DruidFlyingMTFF() or IsFalling() or IsFlying() or GetShapeshiftForm() == 3 then
+ return self:MountSpell(SpellToName(783))
elseif IsFlying() then
return self:Flying(name)
else
@@ -240,42 +240,42 @@ function BeStride_Mount:DruidAquaticForm()
end
function BeStride_Mount:DruidTravel()
- return self:MountSpell(BeStride:SpellToName(783))
+ return self:MountSpell(SpellToName(783))
end
function BeStride_Mount:HunterAspectOfTheCheetah()
- return self:MountSpell(BeStride:SpellToName(186257))
+ return self:MountSpell(SpellToName(186257))
end
function BeStride_Mount:PriestLevitate()
- return self:MountSpell("[@player] "..BeStride:SpellToName(1706).."\n/cancelaura "..BeStride:SpellToName(1706))
+ return self:MountSpell("[@player] "..SpellToName(1706).."\n/cancelaura "..SpellToName(1706))
end
function BeStride_Mount:MageSlowFall()
--Activate SlowFall
- return self:MountSpell("[@player] "..BeStride:SpellToName(130).."\n/cancelaura "..BeStride:SpellToName(130))
+ return self:MountSpell("[@player] "..SpellToName(130).."\n/cancelaura "..SpellToName(130))
end
function BeStride_Mount:MageBlink()
--Blink
- return self:MountSpell("[@player] "..BeStride:SpellToName(1953))
+ return self:MountSpell("[@player] "..SpellToName(1953))
end
function BeStride_Mount:MageBlinkNoSlowFall()
--Blink and cancel Slowfall if active, we're running on the ground or swimming.
- return self:MountSpell("[@player] "..BeStride:SpellToName(1953))
+ return self:MountSpell("[@player] "..SpellToName(1953))
end
function BeStride_Mount:MonkRoll()
if IsUsableSpell(109132) then
- return self:MountSpell("[@player] " .. BeStride:SpellToName(109132))
+ return self:MountSpell("[@player] " .. SpellToName(109132))
else
- return self:MountSpell("[@player] " .. BeStride:SpellToName(115008))
+ return self:MountSpell("[@player] " .. SpellToName(115008))
end
end
function BeStride_Mount:MonkZenFlight()
- return self:MountSpell("[@player] " .. BeStride:SpellToName(125883))
+ return self:MountSpell("[@player] " .. SpellToName(125883))
end
function BeStride_Mount:Paladin()
@@ -283,7 +283,7 @@ function BeStride_Mount:Paladin()
end
function BeStride_Mount:PaladinDivineSteed()
- return self:MountSpell("[@player] "..BeStride:SpellToName(190784).."\n/cancelaura "..BeStride:SpellToName(190784))
+ return self:MountSpell("[@player] "..SpellToName(190784).."\n/cancelaura "..SpellToName(190784))
end
function BeStride_Mount:Shaman()
@@ -291,7 +291,7 @@ function BeStride_Mount:Shaman()
end
function BeStride_Mount:ShamanGhostWolf()
- return self:MountSpell("[@player] "..BeStride:SpellToName(2645).."\n/cancelaura "..BeStride:SpellToName(2645))
+ return self:MountSpell("[@player] "..SpellToName(2645).."\n/cancelaura "..SpellToName(2645))
end
function BeStride_Mount:Rogue()
@@ -299,5 +299,5 @@ function BeStride_Mount:Rogue()
end
function BeStride_Mount:RogueSprint()
- return self:MountSpell("[@player] "..BeStride:SpellToName(2983))
+ return self:MountSpell("[@player] "..SpellToName(2983))
end
\ No newline at end of file
diff --git a/Versions/Common/Mapping.lua b/Versions/Common/Mapping.lua
index 97be67e..31a44ca 100644
--- a/Versions/Common/Mapping.lua
+++ b/Versions/Common/Mapping.lua
@@ -9,6 +9,9 @@ function BeStride:GetMap()
end
function BeStride:GetMapUntil(locID,filter,printOut)
+ if not locID then
+ return nil
+ end
local map = C_Map.GetMapInfo(locID)
if printOut == true then
diff --git a/Versions/Common/bestride.lua b/Versions/Common/bestride.lua
new file mode 100644
index 0000000..8982647
--- /dev/null
+++ b/Versions/Common/bestride.lua
@@ -0,0 +1,142 @@
+function BeStride:OnInitialize()
+ self.db = LibStub("AceDB-3.0"):New("BeStrideDB", defaults, "Default")
+ self:RegisterChatCommand("bestride","ChatCommand")
+ self:RegisterChatCommand("br","ChatCommand")
+
+ local bestrideOptions = LibStub("AceConfigRegistry-3.0")
+ bestrideOptions:RegisterOptionsTable("BeStride",BeStride_Options)
+ self.bestrideOptionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("BeStride","BeStride")
+
+ self.buttons = {
+ ["mount"] = nil,
+ ["ground"] = nil,
+ ["repair"] = nil,
+ ["passenger"] = nil,
+ }
+
+ self.buttons["regular"] = BeStride:CreateActionButton('Regular')
+ self.buttons["ground"] = BeStride:CreateActionButton('Ground')
+ self.buttons["repair"] = BeStride:CreateActionButton('Repair')
+ self.buttons["passenger"] = BeStride:CreateActionButton('Passenger')
+
+ local className,classFilename,classID = UnitClass("player")
+ local raceName,raceFile,raceID = UnitRace("player")
+ local factionName,factionLocalized = UnitFactionGroup("player")
+ local factionId = nil
+
+ if factionName == "Alliance" then
+ factionId = 1
+ else
+ factionId = 0
+ end
+
+ playerTable["class"] = {}
+ playerTable["class"]["id"] = classID
+ playerTable["class"]["name"] = className
+ playerTable["race"] = {}
+ playerTable["race"]["name"] = raceName
+ playerTable["race"]["id"] = raceID
+ playerTable["faction"] = {}
+ playerTable["faction"]["name"] = factionName
+ playerTable["faction"]["id"] = factionId
+ playerTable["faction"]["localization"] = factionLocalized
+end
+
+function BeStride:Frame()
+ BeStride_GUI:Frame()
+end
+
+function BeStride:OnEnable()
+ BeStride:buildMountTables()
+
+ if BeStride_Game == "Mainline" then
+ BeStride:RegisterEvent("NEW_MOUNT_ADDED", "EventNewMount")
+ else
+ BeStride:RegisterEvent("COMPANION_LEARNED", "EventNewMount")
+ end
+
+ BeStride:RegisterEvent("PLAYER_REGEN_DISABLED", "EventCombatEnter")
+ BeStride:RegisterEvent("PLAYER_REGEN_ENABLED", "EventCombatExit")
+
+ BeStride:Upgrade()
+end
+
+function BeStride:GetProfiles()
+ local profiles = BeStride.db:GetProfiles()
+ table.sort(profiles)
+ return profiles
+end
+
+function BeStride:UpdateBindings()
+ BeStride:SetKeyBindings(self.buttons["regular"])
+ BeStride:SetKeyBindings(self.buttons["ground"])
+ BeStride:SetKeyBindings(self.buttons["passenger"])
+ BeStride:SetKeyBindings(self.buttons["repair"])
+
+ SaveBindings(GetCurrentBindingSet())
+end
+
+function BeStride:UpdateOverrideBindings()
+ BeStride:SetKeyBindingsOverrides(self.buttons["regular"])
+ BeStride:SetKeyBindingsOverrides(self.buttons["ground"])
+ BeStride:SetKeyBindingsOverrides(self.buttons["passenger"])
+ BeStride:SetKeyBindingsOverrides(self.buttons["repair"])
+
+ SaveBindings(GetCurrentBindingSet())
+end
+
+function BeStride:SetKeyBindings(button)
+ local primaryKey,secondaryKey = GetBindingKey("CLICK " .. button:GetName() .. ":LeftButton")
+
+ if primaryKey then
+ SetBindingClick(primaryKey,button:GetName())
+ end
+
+ if secondaryKey then
+ SetBindingClick(secondaryKey,button:GetName())
+ end
+end
+
+function BeStride:SetKeyBindingsOverrides(button)
+ ClearOverrideBindings(button)
+
+ local primaryKey,secondaryKey = GetBindingKey(button:GetName())
+ if primaryKey then
+ SetOverrideBindingClick(button, true, primaryKey, button:GetName())
+ end
+
+ if secondaryKey then
+ SetOverrideBindingClick(button, true, secondaryKey, button:GetName())
+ end
+end
+
+function BeStride:ChatCommand(input)
+ if input == "help" then
+ print("/br help - This help")
+ print("/br reload - Rebuild the mount table")
+ print("/br map - Print the current map layers")
+ print("/br - The configuration window")
+ elseif input == "reload" then
+ BeStride:buildMountTables()
+ elseif input == "map" then
+ local locID = C_Map.GetBestMapForUnit("player")
+ print("mapID:name:mapType:parentMapID")
+ local map = self:GetMapUntil(locID,0,true)
+ print("Final: ")
+ print(map.mapID .. ":" .. map.name .. ":" .. map.mapType .. ":" .. map.parentMapID)
+ elseif input == "maplast" then
+ local locID = C_Map.GetBestMapForUnit("player")
+ print("mapID:name:mapType:parentMapID")
+ local map = self:GetMapUntilLast(locID,0,true)
+ print("Final: ")
+ print(map.mapID .. ":" .. map.name .. ":" .. map.mapType .. ":" .. map.parentMapID)
+ elseif input == "underwater" then
+ BeStride:IsUnderwater()
+ elseif input == "bug" then
+ BeStride_GUI:BugReport()
+ elseif input == "depth" then
+ BeStride_GUI:DebugTable({},0)
+ else
+ BeStride_GUI:Frame(input)
+ end
+end
\ No newline at end of file
diff --git a/Versions/Common/functions.lua b/Versions/Common/functions.lua
new file mode 100644
index 0000000..e5c80cf
--- /dev/null
+++ b/Versions/Common/functions.lua
@@ -0,0 +1,78 @@
+function sortTable(unsortedTable)
+ keys = {}
+ sortedTable = {}
+ for key in pairs(unsortedTable) do table.insert(keys,key) end
+ table.sort(keys)
+ for _,key in ipairs(keys) do sortedTable[key] = unsortedTable[key] end
+ return sortedTable
+end
+
+function searchTableForValue(haystack,needle)
+ for k,v in pairs(haystack) do
+ if v == needle then
+ return k
+ end
+ end
+
+ return nil
+end
+
+function pairsByKeys (t, f)
+ local a = {}
+ for n in pairs(t) do table.insert(a, n) end
+ table.sort(a, f)
+ local i = 0 -- iterator variable
+ local iter = function () -- iterator function
+ i = i + 1
+ if a[i] == nil then return nil
+ else return a[i], t[a[i]]
+ end
+ end
+ return iter
+end
+
+function countTable(t)
+ assert(type(t) == 'table', 'bad parameter #1: must be table')
+ local count = 0
+ for k, v in pairs(t) do
+ count = count + 1
+ end
+
+ return count
+end
+
+function SpellToName(spellID)
+ local name, rank, icon, castTime, minRange, maxRange, spellID = GetSpellInfo(spellID)
+
+ return name
+end
+
+function ItemToName(itemID)
+ local itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemIcon, itemSellPrice, itemClassID, itemSubClassID, bindType, expacID, itemSetID, isCraftingReagent = GetItemInfo(itemID)
+
+ return itemName
+end
+
+function mapPos(map)
+end
+
+function areaInfo()
+ --vector = Create2DVector(x, y)
+ --DevTools_Dump(vector)
+
+ local ui_map_id = C_Map.GetBestMapForUnit("player")
+ local unit_x, unit_y = C_Map.GetPlayerMapPosition(ui_map_id, "player"):GetXY()
+ local unit_vector = CreateVector2D(unit_x, unit_y)
+ local area = C_MapExplorationInfo.GetExploredAreaIDsAtPosition(ui_map_id, unit_vector)
+ print(area)
+
+ return area
+end
+
+function GetAreaIDsForPlayer()
+ local mapID = C_Map.GetBestMapForUnit("player")
+ local pos = C_Map.GetPlayerMapPosition(mapID, "player")
+ local areaIDs = C_MapExplorationInfo.GetExploredAreaIDsAtPosition(mapID, pos)
+ local areaString = areaIDs and table.concat(areaIDs, ", ") or "none"
+ print(format("MapID=%d, Position=%.3f:%.3f, AreaIDs=%s", mapID, pos.x, pos.y, areaString))
+end
\ No newline at end of file
diff --git a/Versions/Common/logic.class.lua b/Versions/Common/logic.class.lua
new file mode 100644
index 0000000..84d0097
--- /dev/null
+++ b/Versions/Common/logic.class.lua
@@ -0,0 +1,717 @@
+function BeStride:IsDeathKnight()
+ -- Check for DeathKnight
+ if playerTable["class"]["id"] == 6 then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:IsDemonHunter()
+ -- Check for DemonHunter
+ if playerTable["class"]["id"] == 12 then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:IsDruid()
+ -- Check for Druid
+ if playerTable["class"]["id"] == 11 then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:IsHunter()
+ -- Check for Hunter
+ if playerTable["class"]["id"] == 3 then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:IsMage()
+ -- Check for Mage
+ if playerTable["class"]["id"] == 8 then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:IsMonk()
+ -- Check for Monk
+ if playerTable["class"]["id"] == 10 then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:IsPaladin()
+ -- Check for Paladin
+ if playerTable["class"]["id"] == 2 then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:IsPriest()
+ -- Check for Priest
+ if playerTable["class"]["id"] == 5 then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:IsRogue()
+ -- Check for Rogue
+ if playerTable["class"]["id"] == 4 then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:IsShaman()
+ -- Check for Shaman
+ if playerTable["class"]["id"] == 7 then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:IsDeathKnightAndSpecial()
+ if self:IsDeathKnight() then
+ if not IsFlying() and not IsFalling() and self:MovementCheck() and self:DeathKnightWraithWalk() then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:IsDemonHunterAndSpecial()
+ if ( IsFlying() or IsFalling() ) and self:DemonHunterGlide() then
+ if IsFlying() and self:NoDismountWhileFlying() then
+ return false
+ elseif IsFalling() and self:DemonHunterGlide() then
+ return true
+ else
+ return false
+ end
+ elseif self:MovementCheck() and self:DemonHunterFelRush() then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:IsDruidAndSpecial()
+ if self:IsDruid() then
+ if IsOutdoors() ~= true and self:DruidCanCat() then
+ return true
+ elseif (IsMounted() or self:IsDruidTraveling()) and IsFlying() and self:IsFlyable() and self:DruidFlying() and self:DruidFlyingMTFF() then
+ return true
+ elseif IsFlying() and self:DruidFlying() == true and self:DruidUseFlightForm() == false then
+ return false
+ elseif IsFlying() and self:NoDismountWhileFlying() then
+ return false
+ elseif self:IsFlyable() and self:DruidFlying() and self:DruidFlightFormPriority() then
+ return true
+ elseif IsFalling() and self:DruidFlying() then
+ return true
+ elseif IsSwimming() and self:DruidCanSwim() and BeStride:DBGet("settings.mount.noswimming") == false then
+ return true
+ elseif self:MovementCheck() then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:IsHunterAndSpecial()
+ if self:IsHunter() and BeStride:DBGet("settings.classes.hunter.aspectofthecheetah") then
+ if (self:MovementCheck() or self:IsCombat()) and self:HunterCanAspectOfTheCheetah() then
+ return true
+ end
+ end
+ return false
+end
+
+function BeStride:IsMageAndSpecial()
+ if self:IsMage() then
+ if IsFlying() and self:NoDismountWhileFlying() then
+ return false
+ elseif IsMounted() and IsFlying() and (self:MageSlowFall() or self:MageBlink()) then
+ return true
+ elseif (self:MageSlowFall() or self:MageBlink()) and IsFalling() then
+ return true
+ elseif self:MageBlink() and self:MovementCheck() then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:IsMonkAndSpecial()
+ if self:IsMonk() then
+ if IsMounted() and IsFlying() and self:NoDismountWhileFlying() then
+ return false
+ elseif IsFlying() and self:MonkZenFlight() then
+ return true
+ elseif (self:MonkZenFlight() or self:MonkRoll()) and IsFalling() then
+ return true
+ elseif self:MonkRoll() and self:MovementCheck() then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:IsPaladinAndSpecial()
+ if self:IsPaladin() then
+ if self:PaladinDivineSteed() and self:MovementCheck() then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:IsPriestAndSpecial()
+ if self:IsPriest() then
+ if IsMounted() and IsFlying() and self:NoDismountWhileFlying() then
+ return false
+ elseif IsMounted() and IsFlying() and self:PriestLevitate() and self:NoDismountWhileFlying() then
+ return true
+ elseif self:PriestLevitate() and IsFalling() then
+ return true
+ elseif self:PriestLevitate() and self:MovementCheck() then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:IsRogueAndSpecial()
+ if self:IsRogue() then
+ if IsFlying() then
+ return false
+ elseif not IsFlying() and self:MovementCheck() and self:RogueSprint() then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:IsShamanAndSpecial()
+ if self:IsShaman() then
+ if IsFlying() and self:NoDismountWhileFlying() then
+ return false
+ elseif self:ShamanGhostWolf() and (self:MovementCheck() or IsOutdoors() ~= true) then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+
+
+-- +--------------------------+ --
+-- Class Specific Spells Checks --
+-- +--------------------------+ --
+-- ------------ --
+-- Druid Spells --
+-- ------------ --
+
+-- Check for Swim Form
+-- Returns: boolean
+function BeStride:DruidCanSwim()
+ if IsUsableSpell(783) then
+ return true
+ else
+ return false
+ end
+end
+
+-- Check for Travel Form
+-- Returns: boolean
+function BeStride:DruidCanTravel()
+ if IsUsableSpell(783) then
+ return true
+ else
+ return false
+ end
+end
+
+-- Check for Travel Form
+-- Returns: boolean
+function BeStride:DruidCanCat()
+ if IsSpellKnown(768) and IsUsableSpell(768) then
+ return true
+ else
+ return false
+ end
+end
+
+-- Check for Flight Form
+-- Returns: boolean
+function BeStride:DruidCanFly()
+ if IsUsableSpell(783) then
+ return true
+ else
+ return false
+ end
+end
+
+-- ------------------ --
+-- Deathknight Spells --
+-- ------------------ --
+
+function BeStride:DeathKnightCanWraithWalk()
+ if IsUsableSpell(212552) then
+ return true
+ else
+ return false
+ end
+end
+
+-- ------------------- --
+-- Demon Hunter Spells --
+-- ------------------- --
+
+function BeStride:DemonHunterCanFelRush()
+
+ if IsUsableSpell(195072) then
+ local OnCooldown, _, _, _ = GetSpellCooldown(195072)
+ if OnCooldown == 0 then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:DemonHunterCanGlide()
+ if IsUsableSpell(131347) then
+ return true
+ else
+ return false
+ end
+end
+
+-- ------------- --
+-- Hunter Spells --
+-- ------------- --
+function BeStride:HunterCanAspectOfTheCheetah()
+ if IsSpellKnown(186257) and IsUsableSpell(186257) then
+ local OnCooldown, _, _, _ = GetSpellCooldown(186257)
+ if OnCooldown == 0 then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+-- ----------- --
+-- Mage Spells --
+-- ----------- --
+
+function BeStride:MageCanSlowFall()
+ if IsUsableSpell(1706) then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:MageCanBlink()
+ if IsUsableSpell(1953) then
+ local OnCooldown, _, _, _ = GetSpellCooldown(1953)
+ if OnCooldown == 0 then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+-- ----------- --
+-- Monk Spells --
+-- ----------- --
+
+function BeStride:MonkCanRoll()
+ if IsUsableSpell(109132) or self:MonkCanTorpedo() then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:MonkCanTorpedo()
+ if IsUsableSpell(115008) then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:MonkCanZenFlight()
+ if IsUsableSpell(125883) then
+ return true
+ else
+ return false
+ end
+end
+
+-- ------------- --
+-- Priest Spells --
+-- ------------- --
+
+function BeStride:PaladinCanDivineSteed()
+ if IsUsableSpell(190784) then
+ return true
+ else
+ return false
+ end
+end
+
+-- ------------- --
+-- Priest Spells --
+-- ------------- --
+
+function BeStride:PriestCanLevitate()
+ if IsUsableSpell(1706) then
+ return true
+ else
+ return false
+ end
+end
+
+-- ------------- --
+-- Shaman Spells --
+-- ------------- --
+
+function BeStride:ShamanCanGhostWolf()
+ if IsUsableSpell(2645) then
+ return true
+ else
+ return false
+ end
+end
+
+-- ------------- --
+-- Rogue Spells --
+-- ------------- --
+
+function BeStride:RogueCanSprint()
+ if IsUsableSpell(2983) then
+ return true
+ else
+ return false
+ end
+end
+
+-- +-------------------------+ --
+-- Class Specific Mount Checks --
+-- +-------------------------+ --
+-- ----------- --
+-- DeathKnight --
+-- ----------- --
+
+function BeStride:DeathKnightWraithWalk()
+ if self:IsDeathKnight() then
+ if self:DeathKnightCanWraithWalk() and BeStride:DBGet("settings.classes.deathknight.wraithwalk") then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+-- ------------ --
+-- Demon Hunter --
+-- ------------ --
+
+function BeStride:DemonHunterFelRush()
+ if self:IsDemonHunter() then
+ if self:DemonHunterCanFelRush() and BeStride:DBGet("settings.classes.demonhunter.felrush") then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:DemonHunterGlide()
+ if self:IsDemonHunter() then
+ if self:DemonHunterCanGlide() and BeStride:DBGet("settings.classes.demonhunter.glide") then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+-- ----- --
+-- Druid --
+-- ----- --
+
+function BeStride:IsDruidTraveling()
+ if self:IsDruid() then
+ local index = GetShapeshiftForm()
+ if index == 3 then
+ return true
+ end
+ end
+end
+
+function BeStride:DruidFlying()
+ if self:IsDruid() then
+ if self:DruidCanFly() and self:DruidUseFlightForm() then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:DruidUseFlightForm()
+ if self:IsDruid() then
+ if BeStride:DBGet("settings.classes.druid.flightform") then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:DruidTravelToTravel()
+ if self:IsDruid() then
+ if BeStride:DBGet("settings.classes.druid.traveltotravel") then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:DruidFlightFormPriority()
+ if self:IsDruid() then
+ if self:DruidFlying() and BeStride:DBGet("settings.classes.druid.flightformpriority") == true then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+-- Check for Flying, Mounted and Mount to Flight Form
+-- Returns: boolean
+function BeStride:DruidFlyingMTFF()
+ -- Had a "GetUnitSpeed("player") ~= 0", unsure if we want to go with that
+ -- Todo: Bitwise Compare
+ if self:IsDruid() then
+ if self:DruidFlying() and BeStride:DBGet("settings.classes.druid.mountedtoflightform") then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+-- ---- --
+-- Mage --
+-- ---- --
+
+function BeStride:MageSpecial()
+ if self:IsMage() then
+ if (not self:IsCombat()) then
+ local BlinkOnCooldown, _, _, _ = GetSpellCooldown(1953)
+ if not BlinkOnCooldown and IsFalling() and self:MovementCheck() and self:MageCanBlink() then
+ BeStride_Mount:MageBlinkNoSlowFall()
+ elseif not BlinkOnCooldown and not IsFalling() and self:MovementCheck() and self:MageCanBlink() and self:MageIsSlowFalling() then
+ BeStride_Mount:MageBlink()
+ elseif IsFalling() then
+ BeStride_Mount:MageSlowFall()
+ end
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:MageBlink()
+ -- Todo: Bitwise Compare
+ if self:IsMage() then
+ if self:MageCanBlink() and BeStride:DBGet("settings.classes.mage.blink") then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:MageSlowFall()
+ -- Todo: Bitwise Compare
+ if self:IsMage() then
+ if self:MageCanSlowFall() and BeStride:DBGet("settings.classes.mage.slowfall") then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+-- ---- --
+-- Monk --
+-- ---- --
+
+function BeStride:MonkRoll()
+ if self:IsMonk() then
+ if self:MonkCanRoll() and BeStride:DBGet("settings.classes.monk.roll") then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:MonkZenFlight()
+ if self:IsMonk() then
+ if self:MonkCanZenFlight() and BeStride:DBGet("settings.classes.monk.zenflight") then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+-- ------- --
+-- Paladin --
+-- ------- --
+
+function BeStride:PaladinDivineSteed()
+ -- Todo: Bitwise Compare
+ if self:IsPaladin() then
+ if self:PaladinCanDivineSteed() and BeStride:DBGet("settings.classes.paladin.steed") then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+-- ------ --
+-- Priest --
+-- ------ --
+
+function BeStride:PriestLevitate()
+ -- Todo: Bitwise Compare
+ if self:IsPriest() then
+ if self:PriestCanLevitate() and BeStride:DBGet("settings.classes.priest.levitate") then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+-- ----- --
+-- Rogue --
+-- ----- --
+
+function BeStride:RogueSprint()
+ -- Todo: Bitwise Compare
+ if self:IsRogue() then
+ if self:RogueCanSprint() and BeStride:DBGet("settings.classes.rogue.sprint") then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+-- ------ --
+-- Shaman --
+-- ------ --
+
+function BeStride:ShamanGhostWolf()
+ -- Todo: Bitwise Compare
+ if self:IsShaman() then
+ if self:ShamanCanGhostWolf() and BeStride:DBGet("settings.classes.shaman.ghostwolf") then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
\ No newline at end of file
diff --git a/Versions/Common/logic.mounts.lua b/Versions/Common/logic.mounts.lua
new file mode 100644
index 0000000..e31f2eb
--- /dev/null
+++ b/Versions/Common/logic.mounts.lua
@@ -0,0 +1,55 @@
+function BeStride:CanBroom()
+ if GetItemCount(37011, false) > 0 and not BeStride:IsCombat() and BeStride:GetBroomSetting() == true then
+ return true
+ end
+end
+
+function BeStride:IsLoanedMount()
+ local loanedMount = BeStride:CheckLoanedMount()
+ if loanedMount ~= nil then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:CheckLoanedMount()
+ local mapID = C_Map.GetBestMapForUnit("player")
+ local zone = BeStride:GetMapUntil(mapID,3)
+ if zone == nil then
+ return nil
+ elseif IsSwimming() and (
+ zone.mapID == BeStride_Constants.Zone.Vashjir.KelptharForest.id or
+ zone.mapID == BeStride_Constants.Zone.Vashjir.ShimmeringExpanse.id or
+ zone.mapID == BeStride_Constants.Zone.Vashjir.AbyssalDepths.id or
+ zone.mapID == BeStride_Constants.Zone.Vashjir.id
+ ) then
+ return BeStride_Mount:VashjirSeahorse()
+ elseif zone.name == BeStride_Locale.Zone.Dalaran.Name then
+ local subzone = GetSubZoneText()
+ if subzone == BeStride_Locale.Zone.Dalaran.SubZone.Underbelly.Name or
+ subzone == BeStride_Locale.Zone.Dalaran.SubZone.UnderbellyDescent.Name or
+ subzone == BeStride_Locale.Zone.Dalaran.SubZone.CircleofWills.Name or
+ subzone == BeStride_Locale.Zone.Dalaran.SubZone.BlackMarket.Name then
+ if GetItemCount(139421, false) > 0 then
+ return 139421
+ end
+ end
+ elseif zone.name == BeStride_Locale.Zone.Oculus.Name then
+ if GetItemCount(37859) == 1 then
+ return 37859
+ elseif GetItemCount(37860) == 1 then
+ return 37860
+ elseif GetItemCount(37815) == 1 then
+ return 37815
+ end
+ elseif zone.name == BeStride_Locale.Zone.StormPeaks.Name or zone.name == BeStride_Locale.Zone.Icecrown.Name or zone.name == BeStride_Locale.Zone.SholazarBasin.Name then
+ if GetItemCount(44221, false) > 0 then
+ return 44221
+ elseif GetItemCount(44229, false) > 0 then
+ return 44229
+ end
+ end
+
+ return nil
+end
\ No newline at end of file
diff --git a/Versions/Common/logic.player.lua b/Versions/Common/logic.player.lua
new file mode 100644
index 0000000..f392cbd
--- /dev/null
+++ b/Versions/Common/logic.player.lua
@@ -0,0 +1,16 @@
+function BeStride:IsFalling()
+ return IsFalling()
+end
+
+function BeStride:IsUnderwater()
+ if IsSwimming() and BeStride:DBGet("settings.mount.noswimming") == false then
+ local timer, initial, maxvalue, scale, paused, label = GetMirrorTimerInfo(2)
+ if timer ~= nil and timer == "BREATH" and scale < 0 then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
diff --git a/Versions/Common/logic.special.lua b/Versions/Common/logic.special.lua
new file mode 100644
index 0000000..28c6e9b
--- /dev/null
+++ b/Versions/Common/logic.special.lua
@@ -0,0 +1,132 @@
+function BeStride:NoDismountWhileFlying()
+ -- Check whether we can dismount while flying
+ -- Returns: boolean
+ -- Todo: Bitwise Compare
+ if BeStride:DBGet("settings.mount.nodismountwhileflying") then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:IsCombat()
+ if InCombatLockdown() then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:NeedToRepair()
+ -- Check whether we need to repair
+ -- Returns: boolean
+ if BeStride:ForceRepair() then
+ return true
+ end
+
+ if size(BeStride.db.profile.misc.RepairMounts) > 0 and BeStride:UseRepair() then
+ for i = 0, 17 do
+ local current, maximum = GetInventoryItemDurability(i)
+ if current ~= nil and maximum ~= nil and ( (current/maximum) <= BeStride:GetRepairThreshold() ) then
+ return true
+ end
+ end
+ end
+
+ return false
+end
+
+function BeStride:IsRepairable()
+ if not self:IsMountable() or IsFlying() or not IsOutdoors() then
+ return false
+ end
+ mounts = BeStride:DBGet("mounts.repair")
+ local mountCount = {}
+
+ table.foreach(mounts,function (key,value) table.insert(mountCount,key) end )
+
+ if #mountCount ~= 0 then
+ local globalDurability,count = 0,0
+ for i = 0, 17 do
+ local current, maximum = GetInventoryItemDurability(i)
+ if current ~= nil and maximum ~= nil then
+ local durability = (current / maximum)
+ count = count + 1
+ globalDurability = globalDurability + durability
+ if (durability * 100) <= BeStride:DBGet("settings.mount.repair.durability") then
+ return true
+ end
+ end
+ end
+
+ if ((globalDurability/count)*100) <= BeStride:DBGet("settings.mount.repair.globaldurability") then
+ return true
+ end
+
+ for i = 0, 4 do
+ for j = 0, GetContainerNumSlots(i) do
+ local current, maximum = GetContainerItemDurability(i, j)
+ if current ~= nil and maximum ~= nil then
+ if ((current / maximum)*100) <= BeStride:DBGet("settings.mount.repair.inventorydurability") then
+ return true
+ end
+ end
+ end
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:IsForceRepair()
+ -- Check whether we force a repair mount
+ -- Returns: boolean
+ if BeStride.db.profile.settings["repair"]["force"] then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:IsUseRepair()
+ -- Checks whether we check to repair or not
+ -- Returns: boolean
+ if BeStride.db.profile.settings["repair"]["use"] then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:GetRepairThreshold()
+ -- Get repair threshold
+ -- Returns: signed integer
+ if BeStride.db.profile.settings["repair"]["durability"] then
+ return BeStride.db.profile.settings["repair"]["durability"]
+ else
+ return -1
+ end
+end
+
+function BeStride:IsHerbalismAndCanRobot()
+ if BeStride:IsHerbalism() and not BeStride:IsCombat() and BeStride:CanRobotSetting() then
+ if IsUsableSpell(134359) or IsUsableSpell(223814) then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:IsHerbalism()
+ local prof1,prof2 = self:GetProfessions()
+ -- 182 = Herbalism
+ -- ref: http://wowwiki.wikia.com/wiki/API_GetProfessionInfo
+ if (prof1 and select(7,GetProfessionInfo(prof1)) == 182) or (prof2 and select(7,GetProfessionInfo(prof2)) == 182) then
+ return true
+ else
+ return false
+ end
+end
\ No newline at end of file
diff --git a/Versions/Common/logic.zone.lua b/Versions/Common/logic.zone.lua
new file mode 100644
index 0000000..cbe5d47
--- /dev/null
+++ b/Versions/Common/logic.zone.lua
@@ -0,0 +1,95 @@
+function BeStride:IsFlyableArea()
+ return IsFlyableArea()
+end
+
+function BeStride:IsMountable()
+ if self:IsFlyable() and IsOutdoors() then
+ return true
+ elseif not self:IsFlyable() and IsOutdoors() then
+ return true
+ elseif not IsOutdoors() then
+ return false
+ else
+ return false
+ end
+end
+
+function BeStride:IsFlyable()
+ if IsOutdoors() then
+ local skill,spells = self:GetRidingSkill()
+ local mapID = C_Map.GetBestMapForUnit("player")
+
+ if countTable(BeStride_Constants.Riding.Flight.Restricted.Continents) > 0 then
+ local continent = BeStride:GetMapUntil(mapID,2)
+ if continent ~= nil then
+ for key,value in pairsByKeys(BeStride_Constants.Riding.Flight.Restricted.Continents) do
+ if continent.mapID == key and value.blocked == true then
+ return false
+ elseif continent.mapID == key and value.requires ~= nil and spells[value.requires] == true then
+ break
+ elseif continent.mapID == key and value.requires ~= nil then
+ return false
+ end
+ end
+ end
+ end
+
+ if countTable(BeStride_Constants.Riding.Flight.Restricted.Continents) > 0 then
+ local zone = BeStride:GetMapUntil(mapID,3)
+ if zone ~= nil then
+ for key,value in pairsByKeys(BeStride_Constants.Riding.Flight.Restricted.Zones) do
+ if zone.mapID == key and value.blocked == true and (not value.except or (value.except and value.except ~= GetSubZoneText())) then
+ return false
+ elseif zone.mapID == key and value.requires ~= nil and spells[value.requires] == true then
+ break
+ elseif zone.mapID == key then
+ return false
+ end
+ end
+ end
+ end
+
+ if self:IsFlyableArea() and skill >= 225 then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:IsUnderwater()
+ if IsSwimming() and BeStride:DBGet("settings.mount.noswimming") == false then
+ local timer, initial, maxvalue, scale, paused, label = GetMirrorTimerInfo(2)
+ if timer ~= nil and timer == "BREATH" and scale < 0 then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
+
+function BeStride:IsSpecialZone()
+ local mapID = C_Map.GetBestMapForUnit("player")
+ local micro = BeStride:GetMapUntil(mapID,5)
+ local dungeon = BeStride:GetMapUntil(mapID,4)
+ local zone = BeStride:GetMapUntil(mapID,3)
+ local continent = BeStride:GetMapUntil(mapID,2)
+
+ if continent ~= nil and continent.name == BeStride_Locale.Continent.Draenor and micro.name == BeStride_Locale.Zone.Nagrand and self:DBGet("settings.mount.telaari") == true then
+ local garrisonAbilityName = GetSpellInfo(161691)
+ local _,_,_,_,_,_,spellID = GetSpellInfo(garrisonAbilityName)
+ if(spellID == 165803 or spellID == 164222) then
+ return true
+ end
+ end
+
+ return false
+end
+
+function BeStride:WGActive()
+ return true
+end
\ No newline at end of file
diff --git a/Versions/Common/mount.lua b/Versions/Common/mount.lua
new file mode 100644
index 0000000..9d4ab7d
--- /dev/null
+++ b/Versions/Common/mount.lua
@@ -0,0 +1,261 @@
+function BeStride:Regular()
+ -- Aspect of the Cheetah is available from level 5
+ if self:IsHunterAndSpecial() then
+ return self:Hunter()
+ -- Check if we are mounted
+ elseif IsMounted() and self:NeedsChauffeur() then
+ self:DismountAndExit()
+ return BeStride_Mount:Chauffeur()
+ elseif self:NeedsChauffeur() then
+ self:DismountAndExit()
+ return BeStride_Mount:Chauffeur()
+ elseif self:IsHerbalismAndCanRobot() then
+ self:DismountAndExit()
+ return BeStride_Mount:Robot()
+ elseif self:IsDeathKnightAndSpecial() then
+ self:DismountAndExit()
+ return self:DeathKnight()
+ elseif self:IsDemonHunterAndSpecial() then
+ self:DismountAndExit()
+ return self:DemonHunter()
+ elseif self:IsDruidAndSpecial() then
+ self:DismountAndExit()
+ return self:Druid()
+ elseif self:IsMageAndSpecial() then
+ self:DismountAndExit()
+ return self:Mage()
+ elseif self:IsMonkAndSpecial() then
+ self:DismountAndExit()
+ return self:Monk()
+ elseif self:IsPaladinAndSpecial() then
+ self:DismountAndExit()
+ return self:Paladin()
+ elseif self:IsPriestAndSpecial() then
+ self:DismountAndExit()
+ return self:Priest()
+ elseif self:IsShamanAndSpecial() then
+ self:DismountAndExit()
+ return self:Shaman()
+ elseif self:IsRogueAndSpecial() then
+ self:DismountAndExit()
+ return self:Rogue()
+ elseif self:IsLoanedMount() then
+ self:DismountAndExit()
+ return BeStride_Mount:Loaned()
+ elseif self:CanBroom() then
+ self:DismountAndExit()
+ return BeStride_Mount:Broom()
+ elseif self:IsSpecialZone() then
+ self:DismountAndExit()
+ return BeStride_Mount:SpecialZone()
+ elseif self:IsRepairable() then
+ self:DismountAndExit()
+ return BeStride_Mount:Repair()
+ elseif IsMounted() then
+ if IsFlying() then
+ if self:IsFlyable() and BeStride:DBGet("settings.mount.nodismountwhileflying") ~= true then
+ self:DismountAndExit()
+ if BeStride:DBGet("settings.mount.remount") then
+ return BeStride_Mount:Flying()
+ else
+ return nil
+ end
+ else
+ return nil
+ end
+ elseif IsSwimming() and BeStride:DBGet("settings.mount.noswimming") == false then
+ self:DismountAndExit()
+ return BeStride_Mount:Swimming()
+ elseif self:IsFlyable() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
+ self:DismountAndExit()
+ if BeStride:DBGet("settings.mount.remount") then
+ return BeStride_Mount:Passenger("flying")
+ else
+ return nil
+ end
+ elseif self:IsFlyable() then
+ self:DismountAndExit()
+ if BeStride:DBGet("settings.mount.remount") then
+ return BeStride_Mount:Flying()
+ else
+ return nil
+ end
+ elseif IsOutdoors() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
+ self:DismountAndExit()
+ if BeStride:DBGet("settings.mount.remount") then
+ return BeStride_Mount:Passenger("ground")
+ else
+ return nil
+ end
+ else
+ self:DismountAndExit()
+ if BeStride:DBGet("settings.mount.remount") then
+ return BeStride_Mount:Regular()
+ else
+ return nil
+ end
+ end
+ elseif IsSwimming() and IsOutdoors() and BeStride:DBGet("settings.mount.noswimming") == false then
+ self:DismountAndExit()
+ return BeStride_Mount:Swimming()
+ elseif CanExitVehicle() then
+ self:DismountAndExit()
+ return BeStride_Mount:Regular()
+ elseif self:IsFlyable() and IsOutdoors() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
+ return BeStride_Mount:Passenger("flying")
+ elseif self:IsFlyable() then
+ return BeStride_Mount:Flying()
+ elseif IsOutdoors() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
+ return BeStride_Mount:Passenger("ground")
+ elseif self:IsMountable() then
+ return BeStride_Mount:Regular()
+ elseif IsOutdoors() then
+ return BeStride_Mount:Ground()
+ else
+ return nil
+ end
+end
+
+
+
+function BeStride:GroundMountButton()
+ -- Aspect of the Cheetah is available from level 5
+ if self:IsHunterAndSpecial() then
+ return self:Hunter()
+ -- Check if we are mounted
+ elseif IsMounted() and self:NeedsChauffeur() then
+ self:DismountAndExit()
+ return BeStride_Mount:Chauffeur()
+ elseif self:NeedsChauffeur() then
+ self:DismountAndExit()
+ return BeStride_Mount:Chauffeur()
+ elseif self:IsHerbalismAndCanRobot() then
+ self:DismountAndExit()
+ return BeStride_Mount:Robot()
+ elseif self:IsDeathKnightAndSpecial() then
+ self:DismountAndExit()
+ return self:DeathKnight()
+ elseif self:IsDemonHunterAndSpecial() then
+ self:DismountAndExit()
+ return self:DemonHunter()
+ elseif self:IsDruidAndSpecial() then
+ self:DismountAndExit()
+ return self:Druid()
+ elseif self:IsMageAndSpecial() then
+ self:DismountAndExit()
+ return self:Mage()
+ elseif self:IsMonkAndSpecial() then
+ self:DismountAndExit()
+ return self:Monk()
+ elseif self:IsPaladinAndSpecial() then
+ self:DismountAndExit()
+ return self:Paladin()
+ elseif self:IsShamanAndSpecial() then
+ self:DismountAndExit()
+ return self:Shaman()
+ elseif self:IsRogueAndSpecial() then
+ self:DismountAndExit()
+ return self:Rogue()
+ elseif self:CanBroom() then
+ self:DismountAndExit()
+ return BeStride_Mount:Broom()
+ elseif self:IsLoanedMount() then
+ self:DismountAndExit()
+ return BeStride_Mount:Loaned()
+ elseif self:IsSpecialZone() then
+ self:DismountAndExit()
+ return BeStride_Mount:SpecialZone()
+ elseif self:IsRepairable() then
+ self:DismountAndExit()
+ return BeStride_Mount:Repair()
+ elseif IsMounted() then
+ if IsFlying() and self:IsFlyable() and BeStride:DBGet("settings.mount.nodismountwhileflying") == true then
+ return nil
+ elseif IsOutdoors() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
+ self:DismountAndExit()
+ if BeStride:DBGet("settings.mount.remount") then
+ return BeStride_Mount:Passenger("ground")
+ else
+ return nil
+ end
+ elseif IsSwimming() and BeStride:DBGet("settings.mount.noswimming") == false then
+ self:DismountAndExit()
+ return BeStride_Mount:Swimming()
+ else
+ return BeStride_Mount:Ground()
+ end
+ elseif IsOutdoors() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
+ return BeStride_Mount:Passenger("ground")
+ elseif IsSwimming() and IsOutdoors() and BeStride:DBGet("settings.mount.noswimming") == false then
+ self:DismountAndExit()
+ return BeStride_Mount:Swimming()
+ elseif IsOutdoors() then
+ return BeStride_Mount:Ground()
+ else
+ return nil
+ end
+end
+
+function BeStride:RepairMountButton()
+ if IsMounted() or IsOutdoors() then
+ if IsFlying() and self:IsFlyable() and BeStride:DBGet("settings.mount.nodismountwhileflying") == true then
+ return nil
+ else
+ self:DismountAndExit()
+ return BeStride_Mount:Repair()
+ end
+ else
+ return nil
+ end
+end
+
+function BeStride:PassengerMountButton(type)
+ if IsMounted() or IsOutdoors() then
+ if IsFlying() and self:IsFlyable() and BeStride:DBGet("settings.mount.nodismountwhileflying") == true then
+ return nil
+ else
+ self:DismountAndExit()
+ return BeStride_Mount:Passenger(type)
+ end
+ else
+ return nil
+ end
+end
+
+function BeStride:Combat()
+ if self:IsDeathKnight() and BeStride:DBGet("settings.classes.deathknight.wraithwalk") and BeStride:CanWraithWalk() then
+ return BeStride_Mount:DeathKnightWraithWalk()
+ elseif self:IsDemonHunter() and self:DemonHunterFelRush() then
+ return BeStride_Mount:DemonHunterFelRush()
+ elseif self:IsDruid() and BeStride:DBGet("settings.classes.druid.traveltotravel") then
+ return BeStride_Mount:DruidTravel()
+ elseif self:IsHunterAndSpecial() then
+ return self:Hunter()
+ elseif self:IsMage() and (BeStride:DBGet("settings.classes.mage.blink") or BeStride:DBGet("settings.classes.mage.slowfall")) then
+ if self:MageBlink() and BeStride:DBGet("settings.classes.mage.blinkpriority") then
+ return BeStride_Mount:MageBlink()
+ else
+ return BeStride_Mount:MageSlowFall()
+ end
+ elseif self:IsMonk() and BeStride:DBGet("settings.classes.monk.roll") then
+ return BeStride_Mount:MonkRoll()
+ elseif self:IsPaladin() and BeStride:DBGet("settings.classes.paladin.steed") then
+ return BeStride_Mount:PaladinDivineSteed()
+ elseif self:IsPriest() and BeStride:DBGet("settings.classes.priest.levitate") then
+ return BeStride_Mount:PriestLevitate()
+ elseif self:IsRogue() and BeStride:DBGet("settings.classes.rogue.sprint") then
+ return BeStride_Mount:RogueSprint()
+ elseif self:IsShaman() and BeStride:DBGet("settings.classes.shaman.ghostwolf") then
+ return BeStride_Mount:ShamanGhostWolf()
+ elseif self:IsSpecialZone() then
+ return BeStride_Mount:SpecialZone()
+ end
+end
+
+function BeStride:DismountAndExit()
+ if CanExitVehicle() then
+ VehicleExit()
+ elseif IsMounted() then
+ Dismount()
+ end
+end
diff --git a/Versions/Common/mount.table.lua b/Versions/Common/mount.table.lua
new file mode 100644
index 0000000..eddd9bf
--- /dev/null
+++ b/Versions/Common/mount.table.lua
@@ -0,0 +1,57 @@
+function BeStride:buildMountTables()
+ BeStride:BuildMasterMountTable()
+ BeStride:LoadMountTables()
+end
+
+function BeStride:LoadMountTables()
+ mountTable["ground"] = {}
+ mountTable["flying"] = {}
+ mountTable["swimming"] = {}
+ mountTable["passenger"] = {}
+ mountTable["repair"] = {}
+ for key,value in pairs(mountTable["master"]) do
+ if value["faction"] == nil or value["faction"] == playerTable["faction"]["id"] then
+ --if value["faction"] then
+ --print("Adding Mount: " .. value["name"] .. " Id: " .. key .. " Type: " .. value["type"] .. " Faction: " .. value["faction"] .. " Player Faction: " .. playerTable["faction"]["id"] .. " SID: " .. value["spellID"] .. " MID: " .. value["mountID"])
+ --end
+ --print("Adding Mount: " .. value["name"] .. " Id: " .. key .. " Type: " .. value["type"] .. " SID: " .. value["spellID"] .. " MID: " .. value["mountID"] .. " Type: " .. value["type"])
+ BeStride:AddCommonMount(key)
+ BeStride:AddPassengerMount(key)
+ BeStride:AddRepairMount(key)
+ end
+ end
+end
+
+function BeStride:AddCommonMount(mountId)
+ local mount = mountTable["master"][mountId]
+ if BeStride_MountDB and BeStride_MountDB[mount.spellID] and BeStride_MountDB[mount.spellID].attributes.flying and BeStride_MountDB[mount.spellID].attributes.ground then
+ table.insert(mountTable["flying"],mountId)
+ table.insert(mountTable["ground"],mountId)
+ elseif mount["type"] == "ground" then
+ --print("Adding Mount: " .. mount["name"] .. " Id: " .. mountId .. " Type: " .. mount["type"])
+ table.insert(mountTable["ground"],mountId)
+ elseif mount["type"] == "flying" then
+ --print("Adding Mount: " .. mount["name"] .. " Id: " .. mountId .. " Type: " .. mount["type"])
+ table.insert(mountTable["flying"],mountId)
+ elseif mount["type"] == "swimming" then
+ --print("Adding Mount: " .. mount["name"] .. " Id: " .. mountId .. " Type: " .. mount["type"])
+ table.insert(mountTable["swimming"],mountId)
+ elseif mount["type"] == "zone" then
+ if mountId == 373 then
+ table.insert(mountTable["swimming"],mountId)
+ end
+ table.insert(mountTable["zone"],mountId)
+ end
+end
+
+function BeStride:AddPassengerMount(mountId)
+ if BeStride_Constants.Mount.Mounts[mountTable["master"][mountId]["spellID"]] ~= nil and BeStride_Constants.Mount.Mounts[mountTable["master"][mountId]["spellID"]]["type"] == "passenger" then
+ table.insert(mountTable["passenger"],mountId)
+ end
+end
+
+function BeStride:AddRepairMount(mountId)
+ if BeStride_Constants.Mount.Mounts[mountTable["master"][mountId]["spellID"]] ~= nil and BeStride_Constants.Mount.Mounts[mountTable["master"][mountId]["spellID"]]["repair"] then
+ table.insert(mountTable["repair"],mountId)
+ end
+end
\ No newline at end of file
diff --git a/Versions/Common/mounting.checks.lua b/Versions/Common/mounting.checks.lua
new file mode 100644
index 0000000..06ec96d
--- /dev/null
+++ b/Versions/Common/mounting.checks.lua
@@ -0,0 +1,15 @@
+function BeStride:MovementCheck()
+ -- Checks Player Speed
+ -- Returns: integer
+ if BeStride:SpeedCheck() ~= 0 then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:SpeedCheck()
+ -- Checks Player Speed
+ -- Returns: integer
+ return GetUnitSpeed("player")
+end
\ No newline at end of file
diff --git a/Versions/Common/mounting.class.lua b/Versions/Common/mounting.class.lua
new file mode 100644
index 0000000..7b1a322
--- /dev/null
+++ b/Versions/Common/mounting.class.lua
@@ -0,0 +1,117 @@
+function BeStride:DeathKnight()
+ if not IsFlying() and self:MovementCheck() and self:DeathKnightWraithWalk() then
+ return BeStride_Mount:DeathKnightWraithWalk()
+ else
+ BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: DKBSL")
+ end
+end
+
+function BeStride:DemonHunter()
+ if ( IsFlying() or IsFalling() ) and self:DemonHunterGlide() then
+ if IsFlying() and self:NoDismountWhileFlying() then
+ return BeStride_Mount:DemonHunterGlide()
+ elseif IsFalling() and self:DemonHunterGlide() then
+ return BeStride_Mount:DemonHunterGlide()
+ else
+ return false
+ end
+ elseif self:MovementCheck() and self:DemonHunterFelRush() then
+ return BeStride_Mount:DemonHunterFelRush()
+ else
+ BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: DHBSL")
+ end
+end
+
+function BeStride:Druid()
+ if IsOutdoors() ~= true and self:DruidCanCat() then
+ return BeStride_Mount:MountSpell(SpellToName(768))
+ elseif IsSwimming() and self:DruidCanSwim() and BeStride:DBGet("settings.mount.noswimming") == false then
+ return BeStride_Mount:MountSpell(SpellToName(783))
+ elseif self:MovementCheck() and IsOutdoors() then
+ return BeStride_Mount:MountSpell(SpellToName(783))
+ elseif GetShapeshiftForm() == 3 then
+ return BeStride_Mount:MountSpell(SpellToName(783))
+ elseif IsMounted() and IsFlying() and self:IsFlyable() and self:DruidCanFly() and self:DruidFlyingMTFF() then
+ return BeStride_Mount:MountSpell(SpellToName(783))
+ elseif self:IsFlyable() and self:DruidCanFly() and self:DruidFlightFormPriority() then
+ return BeStride_Mount:MountSpell(SpellToName(783))
+ elseif IsFalling() and self:DruidCanFly() then
+ return BeStride_Mount:MountSpell(SpellToName(783))
+ else
+ BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: DRBSL")
+ end
+end
+
+function BeStride:Hunter()
+ if IsMounted() and IsFlying() and self:NoDismountWhileFlying() then
+ return false
+ else
+ return BeStride_Mount:HunterAspectOfTheCheetah()
+ end
+
+ BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: HUBSL")
+end
+
+function BeStride:Mage()
+ if IsMounted() and IsFlying() and (self:MageSlowFall() or self:MageBlink()) and not self:NoDismountWhileFlying() then
+ return BeStride_Mount:MageSlowFall()
+ elseif (self:MageSlowFall() or self:MageBlink()) and IsFalling() then
+ return BeStride_Mount:MageSlowFall()
+ elseif self:MageBlink() and self:MovementCheck() then
+ return BeStride_Mount:MageBlink()
+ end
+end
+
+function BeStride:Monk()
+ if IsMounted() and IsFlying() and self:NoDismountWhileFlying() then
+ return false
+ elseif IsFlying() and self:MonkZenFlight() then
+ return BeStride_Mount:MonkZenFlight()
+ elseif (self:MonkZenFlight() or self:MonkRoll()) and IsFalling() then
+ if self:MonkZenFlight() then
+ return BeStride_Mount:MonkZenFlight()
+ else
+ return BeStride_Mount:MonkRoll()
+ end
+ elseif self:MonkRoll() and self:MovementCheck() then
+ return BeStride_Mount:MonkRoll()
+ else
+ BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: MONKBSL")
+ end
+end
+
+function BeStride:Paladin()
+ if not IsFlying() and self:MovementCheck() and self:PaladinDivineSteed() then
+ return BeStride_Mount:Paladin()
+ else
+ --BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/")
+ end
+end
+
+function BeStride:Priest()
+ if self:MovementCheck() then
+ return BeStride_Mount:PriestLevitate()
+ elseif IsMounted() and IsFlying() and self:PriestLevitate() and not self:NoDismountWhileFlying() then
+ return BeStride_Mount:PriestLevitate()
+ elseif IsFalling() and self:PriestLevitate() then
+ return BeStride_Mount:PriestLevitate()
+ elseif self:MovementCheck() and self:PriestLevitate() then
+ return BeStride_Mount:PriestLevitate()
+ else
+ BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: SHBSL")
+ end
+end
+
+function BeStride:Shaman()
+ if not IsFlying() and (self:MovementCheck() or IsOutdoors ~= true) and self:ShamanGhostWolf() then
+ return BeStride_Mount:Shaman()
+ end
+end
+
+function BeStride:Rogue()
+ if not IsFlying() and self:MovementCheck() and self:RogueSprint() then
+ return BeStride_Mount:Rogue()
+ else
+ BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: RGBSL")
+ end
+end
\ No newline at end of file
diff --git a/Versions/Common/mounting.player.lua b/Versions/Common/mounting.player.lua
new file mode 100644
index 0000000..e3572e3
--- /dev/null
+++ b/Versions/Common/mounting.player.lua
@@ -0,0 +1,13 @@
+
+function BeStride:NeedsChauffeur()
+ local skill,spells = self:GetRidingSkill()
+ if skill == 0 then
+ if IsUsableSpell(179245) or IsUsableSpell(179244) then
+ return true
+ else
+ return false
+ end
+ else
+ return false
+ end
+end
\ No newline at end of file
diff --git a/Versions/Common/mounting.special.lua b/Versions/Common/mounting.special.lua
new file mode 100644
index 0000000..52fb60c
--- /dev/null
+++ b/Versions/Common/mounting.special.lua
@@ -0,0 +1,7 @@
+function BeStride:CanRobotSetting()
+ return BeStride:DBGet("settings.mount.forcerobot")
+end
+
+function BeStride:GetBroomSetting()
+ return BeStride:DBGet("settings.mount.flyingbroom")
+end
\ No newline at end of file
diff --git a/Versions/Common/mounting.zone.lua b/Versions/Common/mounting.zone.lua
new file mode 100644
index 0000000..591c32c
--- /dev/null
+++ b/Versions/Common/mounting.zone.lua
@@ -0,0 +1,13 @@
+function BeStride:SpecialZone()
+ local mapID = C_Map.GetBestMapForUnit("player")
+ local micro = BeStride:GetMapUntil(mapID,5)
+ local dungeon = BeStride:GetMapUntil(mapID,4)
+ local zone = BeStride:GetMapUntil(mapID,3)
+ local continent = BeStride:GetMapUntil(mapID,2)
+
+ if continent ~= nil and continent.name == BeStride_Locale.Continent.Draenor and micro.name == BeStride_Locale.Zone.Nagrand and self:DBGet("settings.mount.telaari") == true then
+ return BeStride_Mount:Nagrand()
+ end
+
+ return nil
+end
\ No newline at end of file
diff --git a/Versions/Common/settings.lua b/Versions/Common/settings.lua
new file mode 100644
index 0000000..5c2c219
--- /dev/null
+++ b/Versions/Common/settings.lua
@@ -0,0 +1,80 @@
+function BeStride:DBGet(path,parent)
+ local child,nextPath = strsplit(".",path,2)
+
+ if child ~= nil and parent ~= nil and parent[child] ~= nil and nextPath == nil then
+ return parent[child]
+ elseif child ~= nil and parent ~= nil and parent[child] ~= nil and nextPath ~= nil then
+ return BeStride:DBGet(nextPath,parent[child])
+ elseif child ~= nil and parent == nil and nextPath == nil then
+ return self.db.profile[child]
+ elseif child ~= nil and parent == nil and nextPath ~= nil then
+ if self.db.profile[child] ~= nil then
+ return BeStride:DBGet(nextPath,self.db.profile[child])
+ else
+ BeStride_Debug:Debug("Fatal: self.db.profile[child(" .. child .. ")] == nil")
+ return nil
+ end
+ else
+ BeStride_Debug:Debug("Fatal: Unmatch (" .. path .. ")")
+ return nil
+ end
+end
+
+function BeStride:DBSet(path,value,parent)
+ local child,nextPath = strsplit(".",path,2)
+
+ if child ~= nil and parent ~= nil and nextPath == nil then
+ parent[child] = value
+ elseif child ~= nil and parent ~= nil and parent[child] == nil and nextPath ~= nil then
+ parent[child] = {}
+ BeStride:DBSet(nextPath,value,parent[child])
+ elseif child ~= nil and parent ~= nil and parent[child] ~= nil and nextPath ~= nil then
+ BeStride:DBSet(nextPath,value,parent[child])
+ elseif child ~= nil and parent == nil and nextPath == nil then
+ self.db.profile[child] = value
+ elseif child ~= nil and parent == nil and nextPath ~= nil then
+ if self.db.profile[child] == nil then
+ self.db.profile[child] = {}
+ end
+ BeStride:DBSet(nextPath,value,self.db.profile[child])
+ end
+end
+
+function BeStride:DBGetMount(mountType,mountID)
+ if self.db.profile.mounts[mountType][mountID] ~= nil then
+ return self.db.profile.mounts[mountType][mountID]
+ else
+ if self.db.profile.settings.mount.enablenew == nil or (self.db.profile.settings.mount.enablenew ~= nil and self.db.profile.settings.mount.enablenew == true) then
+ self.db.profile.mounts[mountType][mountID] = true
+ elseif self.db.profile.settings.mount.enablenew ~= nil and self.db.profile.settings.mount.enablenew == false then
+ self.db.profile.mounts[mountType][mountID] = false
+ end
+ return self.db.profile.mounts[mountType][mountID]
+ end
+end
+
+function BeStride:DBSetMount(mountType,mountID,value)
+ self.db.profile.mounts[mountType][mountID] = value
+end
+
+function BeStride:DBGetSetting(setting)
+ return self:DBGet("settings." .. setting)
+end
+
+function BeStride:DBSetSetting(setting, value)
+ return self:DBSet("settings." .. setting,value)
+end
+
+function BeStride:DBGetClassSetting(parent,setting)
+ if parent and self.db.profile.settings.classes[parent] ~= nil and self.db.profile.settings.classes[parent][setting] ~= nil then
+ return self.db.profile.settings.classes[parent][setting]
+ else
+ return nil
+ end
+end
+
+function BeStride:DBSetClassSetting(parent,setting, value)
+ if parent and self.db.profile.settings.classes[parent] ~= nil then
+ self.db.profile.settings.classes[parent][setting] = value
+ end
+end
\ No newline at end of file
diff --git a/Versions/Common/upgrade.lua b/Versions/Common/upgrade.lua
new file mode 100644
index 0000000..1084349
--- /dev/null
+++ b/Versions/Common/upgrade.lua
@@ -0,0 +1,99 @@
+function BeStride:Upgrade()
+ local db = LibStub("AceDB-3.0"):New("BestrideDB")
+
+ local mountButtons = {
+ BRMOUNT = BeStride_ABRegularMount,
+ BRFORCEGROUND = BeStride_ABGroundMount,
+ BRFORCEPASSENGER = BeStride_ABPassengerMount,
+ BRFORCEREPAIR = BeStride_ABRepairMount
+ }
+
+ if self.db.profile.settings.ymBindingsMigrated == false then
+ table.foreach(mountButtons,function (binding,button)
+ local primaryKey,secondaryKey = GetBindingKey(binding)
+ if primaryKey then
+ SetBindingClick(primaryKey,button:GetName())
+ end
+
+ if secondaryKey then
+ SetBindingClick(secondaryKey,button:GetName())
+ end
+ end)
+ end
+ if self.db.profile.settings.bindingsMigrated == false then
+ table.foreach({BeStride_ABRegularMount,BeStride_ABGroundMount,BeStride_ABPassengerMount,BeStride_ABRepairMount},function (key,button)
+ local primaryKey,secondaryKey = GetBindingKey(button:GetName())
+ if primaryKey then
+ SetBindingClick(primaryKey,button:GetName())
+ end
+
+ if secondaryKey then
+ SetBindingClick(secondaryKey,button:GetName())
+ end
+ end)
+ end
+ self.db.profile.settings.bindingsMigrated = true
+ self.db.profile.settings.ymBindingsMigrated = true
+
+ if db.profile.settings and self.db.profile.settings.migrated == false then
+ table.foreach(db.profile.settings,function (key,value)
+ if key == "HM" then
+ self.db.profile.settings.mount.hasmount = value
+ elseif key == "ER" then
+ self.db.profile.settings.mount.emptyrandom = value
+ elseif key == "FBP" then
+ self.db.profile.settings.mount.flyingbroom = value
+ elseif key == "TTT" then
+ self.db.profile.settings.classes.druid.traveltotravel = value
+ elseif key == "MTFF" then
+ self.db.profile.settings.classes.druid.mountedtoflightform = value
+ elseif key == "NDWF" then
+ self.db.profile.settings.mount.nodismountwhileflying = value
+ elseif key == "FFM" then
+ self.db.profile.settings.mount.useflyingmount = value
+ elseif key == "URM" then
+ self.db.profile.settings.mount.repair.use = value
+ elseif key == "ENABLENEW" then
+ self.db.profile.settings.mount.enablenew = value
+ elseif key == "TELAARI" then
+ self.db.profile.settings.mount.telaari = value
+ elseif key == "DEATHKNIGHT" then
+ self.db.profile.settings.classes.deathknight.wraithwalk = value
+ elseif key == "PALADIN" then
+ self.db.profile.settings.classes.paladin.steed = value
+ elseif key == "SHAMAN" then
+ self.db.profile.settings.classes.shaman.ghostwolf = value
+ elseif key == "MONK" then
+ self.db.profile.settings.classes.monk.roll = value
+ elseif key == "MONKZENUSE" then
+ self.db.profile.settings.classes.monk.zenflight = value
+ elseif key == "ROGUE" then
+ self.db.profile.settings.classes.rogue.sprint = value
+ elseif key == "PRIEST" then
+ self.db.profile.settings.classes.levitate = value
+ elseif key == "MAGE" then
+ self.db.profile.settings.classes.mage.slowfall = value
+ self.db.profile.settings.classes.mage.blink = value
+ end
+ end)
+
+ table.foreach(db.profile.mounts,function (key,value)
+ if mountTable.master[value[3]] and mountTable.master[value[3]].spellID == key then
+ local mountID,spellID,status,savedType = value[3],key,value[1],value[2]
+ local mountType = mountTable.master[mountID].type
+
+ if mountType == "ground" or mountType == "flying" or mountType == "swimming" then
+ self.db.profile.mounts[mountType][mountID] = status
+ end
+
+ if savedType == "special" then
+ if BeStride_Constants.Mount.Mounts[mountTable.master[mountID].spellID] and BeStride_Constants.Mount.Mounts[mountTable.master[mountID].spellID].type == "zone" then
+ self.db.profile.mounts[mountType][mountID] = status
+ end
+ end
+ end
+ end)
+ end
+
+ self.db.profile.settings.migrated = true
+end
\ No newline at end of file
diff --git a/Versions/Mainline/BeStride_Logic.lua b/Versions/Mainline/BeStride_Logic.lua
deleted file mode 100644
index af62f6f..0000000
--- a/Versions/Mainline/BeStride_Logic.lua
+++ /dev/null
@@ -1,1503 +0,0 @@
-BeStride_Logic = {}
-BeStride_Game = "Mainline"
-
-local class = UnitClass("player")
-local canRepair = false
-
-function BeStride_Logic:isMountUsable(mount)
- local name,spellID,icon,isActive,isUsable,sourceType,isFavorite,isFactionSpecific,faction,shouldHideOnChar,isCollected,mountID = C_MountJournal.GetMountInfoByID(mount)
-
- return spellID,mountID,isUsable
-end
-
-function BeStride_Logic:isZoneMount(mountId)
- spellId = mountTable.master[mountId].spellID
- if mountTable.master[mountId].type == "zone" and BeStride_Constants.Mount.Mounts[spellId] ~= nil and BeStride_Constants.Mount.Mounts[spellId].zone ~= nil then
- return true
- elseif BeStride_Game == "Mainline" and mountTable.master[mountId].type == "zone" and BeStride_Constants.Mount.Mounts[mountId] ~= nil and BeStride_Constants.Mount.Mounts[mountId].zone ~= nil then
- return true
- end
-
- return false
-end
-
-function BeStride_Logic:IsCombat()
- if InCombatLockdown() then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:Regular()
- -- Aspect of the Cheetah is available from level 5
- if self:IsHunterAndSpecial() then
- return self:Hunter()
- -- Check if we are mounted
- elseif IsMounted() and self:NeedsChauffeur() then
- self:DismountAndExit()
- return BeStride_Mount:Chauffeur()
- elseif self:NeedsChauffeur() then
- self:DismountAndExit()
- return BeStride_Mount:Chauffeur()
- elseif self:IsHerbalismAndCanRobot() then
- self:DismountAndExit()
- return BeStride_Mount:Robot()
- elseif self:IsDeathKnightAndSpecial() then
- self:DismountAndExit()
- return self:DeathKnight()
- elseif self:IsDemonHunterAndSpecial() then
- self:DismountAndExit()
- return self:DemonHunter()
- elseif self:IsDruidAndSpecial() then
- self:DismountAndExit()
- return self:Druid()
- elseif self:IsMageAndSpecial() then
- self:DismountAndExit()
- return self:Mage()
- elseif self:IsMonkAndSpecial() then
- self:DismountAndExit()
- return self:Monk()
- elseif self:IsPaladinAndSpecial() then
- self:DismountAndExit()
- return self:Paladin()
- elseif self:IsPriestAndSpecial() then
- self:DismountAndExit()
- return self:Priest()
- elseif self:IsShamanAndSpecial() then
- self:DismountAndExit()
- return self:Shaman()
- elseif self:IsRogueAndSpecial() then
- self:DismountAndExit()
- return self:Rogue()
- elseif self:IsLoanedMount() then
- self:DismountAndExit()
- return BeStride_Mount:Loaned()
- elseif self:CanBroom() then
- self:DismountAndExit()
- return BeStride_Mount:Broom()
- elseif self:IsSpecialZone() then
- self:DismountAndExit()
- return BeStride_Mount:SpecialZone()
- elseif self:IsRepairable() then
- self:DismountAndExit()
- return BeStride_Mount:Repair()
- elseif IsMounted() then
- if IsFlying() then
- if self:IsFlyable() and BeStride:DBGet("settings.mount.nodismountwhileflying") ~= true then
- self:DismountAndExit()
- if BeStride:DBGet("settings.mount.remount") then
- return BeStride_Mount:Flying()
- else
- return nil
- end
- else
- return nil
- end
- elseif IsSwimming() and BeStride:DBGet("settings.mount.noswimming") == false then
- self:DismountAndExit()
- return BeStride_Mount:Swimming()
- elseif self:IsFlyable() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
- self:DismountAndExit()
- if BeStride:DBGet("settings.mount.remount") then
- return BeStride_Mount:Passenger("flying")
- else
- return nil
- end
- elseif self:IsFlyable() then
- self:DismountAndExit()
- if BeStride:DBGet("settings.mount.remount") then
- return BeStride_Mount:Flying()
- else
- return nil
- end
- elseif IsOutdoors() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
- self:DismountAndExit()
- if BeStride:DBGet("settings.mount.remount") then
- return BeStride_Mount:Passenger("ground")
- else
- return nil
- end
- else
- self:DismountAndExit()
- if BeStride:DBGet("settings.mount.remount") then
- return BeStride_Mount:Regular()
- else
- return nil
- end
- end
- elseif IsSwimming() and IsOutdoors() and BeStride:DBGet("settings.mount.noswimming") == false then
- self:DismountAndExit()
- return BeStride_Mount:Swimming()
- elseif CanExitVehicle() then
- self:DismountAndExit()
- return BeStride_Mount:Regular()
- elseif self:IsFlyable() and IsOutdoors() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
- return BeStride_Mount:Passenger("flying")
- elseif self:IsFlyable() then
- return BeStride_Mount:Flying()
- elseif IsOutdoors() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
- return BeStride_Mount:Passenger("ground")
- elseif self:IsMountable() then
- return BeStride_Mount:Regular()
- elseif IsOutdoors() then
- return BeStride_Mount:Ground()
- else
- return nil
- end
-end
-
-
-
-function BeStride_Logic:GroundMountButton()
- -- Aspect of the Cheetah is available from level 5
- if self:IsHunterAndSpecial() then
- return self:Hunter()
- -- Check if we are mounted
- elseif IsMounted() and self:NeedsChauffeur() then
- self:DismountAndExit()
- return BeStride_Mount:Chauffeur()
- elseif self:NeedsChauffeur() then
- self:DismountAndExit()
- return BeStride_Mount:Chauffeur()
- elseif self:IsHerbalismAndCanRobot() then
- self:DismountAndExit()
- return BeStride_Mount:Robot()
- elseif self:IsDeathKnightAndSpecial() then
- self:DismountAndExit()
- return self:DeathKnight()
- elseif self:IsDemonHunterAndSpecial() then
- self:DismountAndExit()
- return self:DemonHunter()
- elseif self:IsDruidAndSpecial() then
- self:DismountAndExit()
- return self:Druid()
- elseif self:IsMageAndSpecial() then
- self:DismountAndExit()
- return self:Mage()
- elseif self:IsMonkAndSpecial() then
- self:DismountAndExit()
- return self:Monk()
- elseif self:IsPaladinAndSpecial() then
- self:DismountAndExit()
- return self:Paladin()
- elseif self:IsShamanAndSpecial() then
- self:DismountAndExit()
- return self:Shaman()
- elseif self:IsRogueAndSpecial() then
- self:DismountAndExit()
- return self:Rogue()
- elseif self:CanBroom() then
- self:DismountAndExit()
- return BeStride_Mount:Broom()
- elseif self:IsLoanedMount() then
- self:DismountAndExit()
- return BeStride_Mount:Loaned()
- elseif self:IsSpecialZone() then
- self:DismountAndExit()
- return BeStride_Mount:SpecialZone()
- elseif self:IsRepairable() then
- self:DismountAndExit()
- return BeStride_Mount:Repair()
- elseif IsMounted() then
- if IsFlying() and self:IsFlyable() and BeStride:DBGet("settings.mount.nodismountwhileflying") == true then
- return nil
- elseif IsOutdoors() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
- self:DismountAndExit()
- if BeStride:DBGet("settings.mount.remount") then
- return BeStride_Mount:Passenger("ground")
- else
- return nil
- end
- elseif IsSwimming() and BeStride:DBGet("settings.mount.noswimming") == false then
- self:DismountAndExit()
- return BeStride_Mount:Swimming()
- else
- return BeStride_Mount:Ground()
- end
- elseif IsOutdoors() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
- return BeStride_Mount:Passenger("ground")
- elseif IsSwimming() and IsOutdoors() and BeStride:DBGet("settings.mount.noswimming") == false then
- self:DismountAndExit()
- return BeStride_Mount:Swimming()
- elseif IsOutdoors() then
- return BeStride_Mount:Ground()
- else
- return nil
- end
-end
-
-function BeStride_Logic:RepairMountButton()
- if IsMounted() or IsOutdoors() then
- if IsFlying() and self:IsFlyable() and BeStride:DBGet("settings.mount.nodismountwhileflying") == true then
- return nil
- else
- self:DismountAndExit()
- return BeStride_Mount:Repair()
- end
- else
- return nil
- end
-end
-
-function BeStride_Logic:PassengerMountButton(type)
- if IsMounted() or IsOutdoors() then
- if IsFlying() and self:IsFlyable() and BeStride:DBGet("settings.mount.nodismountwhileflying") == true then
- return nil
- else
- self:DismountAndExit()
- return BeStride_Mount:Passenger(type)
- end
- else
- return nil
- end
-end
-
-function BeStride_Logic:Combat()
- if self:IsDeathKnight() and BeStride:DBGet("settings.classes.deathknight.wraithwalk") then
- return BeStride_Mount:DeathKnightWraithWalk()
- elseif self:IsDemonHunter() and self:DemonHunterFelRush() then
- return BeStride_Mount:DemonHunterFelRush()
- elseif self:IsDruid() and BeStride:DBGet("settings.classes.druid.traveltotravel") then
- return BeStride_Mount:DruidTravel()
- elseif self:IsHunterAndSpecial() then
- return self:Hunter()
- elseif self:IsMage() and (BeStride:DBGet("settings.classes.mage.blink") or BeStride:DBGet("settings.classes.mage.slowfall")) then
- if self:MageBlink() and BeStride:DBGet("settings.classes.mage.blinkpriority") then
- return BeStride_Mount:MageBlink()
- else
- return BeStride_Mount:MageSlowFall()
- end
- elseif self:IsMonk() and BeStride:DBGet("settings.classes.monk.roll") then
- return BeStride_Mount:MonkRoll()
- elseif self:IsPaladin() and BeStride:DBGet("settings.classes.paladin.steed") then
- return BeStride_Mount:PaladinDivineSteed()
- elseif self:IsPriest() and BeStride:DBGet("settings.classes.priest.levitate") then
- return BeStride_Mount:PriestLevitate()
- elseif self:IsRogue() and BeStride:DBGet("settings.classes.rogue.sprint") then
- return BeStride_Mount:RogueSprint()
- elseif self:IsShaman() and BeStride:DBGet("settings.classes.shaman.ghostwolf") then
- return BeStride_Mount:ShamanGhostWolf()
- elseif self:IsSpecialZone() then
- return BeStride_Mount:SpecialZone()
- end
-end
-
-function BeStride_Logic:DismountAndExit()
- if CanExitVehicle() then
- VehicleExit()
- elseif IsMounted() then
- Dismount()
- end
-end
-
-function BeStride_Logic:NeedsChauffeur()
- local skill,spells = self:GetRidingSkill()
- if skill == 0 then
- if IsUsableSpell(179245) or IsUsableSpell(179244) then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsDeathKnightAndSpecial()
- if self:IsDeathKnight() then
- if not IsFlying() and not IsFalling() and self:MovementCheck() and self:DeathKnightWraithWalk() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsDemonHunterAndSpecial()
- if ( IsFlying() or IsFalling() ) and self:DemonHunterGlide() then
- if IsFlying() and self:NoDismountWhileFlying() then
- return false
- elseif IsFalling() and self:DemonHunterGlide() then
- return true
- else
- return false
- end
- elseif self:MovementCheck() and self:DemonHunterFelRush() then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsDruidAndSpecial()
- if self:IsDruid() then
- if IsOutdoors() ~= true and self:DruidCanCat() then
- return true
- elseif (IsMounted() or self:IsDruidTraveling()) and IsFlying() and self:IsFlyable() and self:DruidFlying() and self:DruidFlyingMTFF() then
- return true
- elseif IsFlying() and self:DruidFlying() == true and self:DruidUseFlightForm() == false then
- return false
- elseif IsFlying() and self:NoDismountWhileFlying() then
- return false
- elseif self:IsFlyable() and self:DruidFlying() and self:DruidFlightFormPriority() then
- return true
- elseif IsFalling() and self:DruidFlying() then
- return true
- elseif IsSwimming() and self:DruidCanSwim() and BeStride:DBGet("settings.mount.noswimming") == false then
- return true
- elseif self:MovementCheck() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsHunterAndSpecial()
- if self:IsHunter() and BeStride:DBGet("settings.classes.hunter.aspectofthecheetah") then
- if (self:MovementCheck() or self:IsCombat()) and self:HunterCanAspectOfTheCheetah() then
- return true
- end
- end
- return false
-end
-
-function BeStride_Logic:IsMageAndSpecial()
- if self:IsMage() then
- if IsFlying() and self:NoDismountWhileFlying() then
- return false
- elseif IsMounted() and IsFlying() and (self:MageSlowFall() or self:MageBlink()) then
- return true
- elseif (self:MageSlowFall() or self:MageBlink()) and IsFalling() then
- return true
- elseif self:MageBlink() and self:MovementCheck() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsMonkAndSpecial()
- if self:IsMonk() then
- if IsMounted() and IsFlying() and self:NoDismountWhileFlying() then
- return false
- elseif IsFlying() and self:MonkZenFlight() then
- return true
- elseif (self:MonkZenFlight() or self:MonkRoll()) and IsFalling() then
- return true
- elseif self:MonkRoll() and self:MovementCheck() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsPaladinAndSpecial()
- if self:IsPaladin() then
- if self:PaladinDivineSteed() and self:MovementCheck() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsPriestAndSpecial()
- if self:IsPriest() then
- if IsMounted() and IsFlying() and self:NoDismountWhileFlying() then
- return false
- elseif IsMounted() and IsFlying() and self:PriestLevitate() and self:NoDismountWhileFlying() then
- return true
- elseif self:PriestLevitate() and IsFalling() then
- return true
- elseif self:PriestLevitate() and self:MovementCheck() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsRogueAndSpecial()
- if self:IsRogue() then
- if IsFlying() then
- return false
- elseif not IsFlying() and self:MovementCheck() and self:RogueSprint() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsShamanAndSpecial()
- if self:IsShaman() then
- if IsFlying() and self:NoDismountWhileFlying() then
- return false
- elseif self:ShamanGhostWolf() and (self:MovementCheck() or IsOutdoors() ~= true) then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:DeathKnight()
- if not IsFlying() and self:MovementCheck() and self:DeathKnightWraithWalk() then
- return BeStride_Mount:DeathKnightWraithWalk()
- else
- BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: DKBSL")
- end
-end
-
-function BeStride_Logic:DemonHunter()
- if ( IsFlying() or IsFalling() ) and self:DemonHunterGlide() then
- if IsFlying() and self:NoDismountWhileFlying() then
- return BeStride_Mount:DemonHunterGlide()
- elseif IsFalling() and self:DemonHunterGlide() then
- return BeStride_Mount:DemonHunterGlide()
- else
- return false
- end
- elseif self:MovementCheck() and self:DemonHunterFelRush() then
- return BeStride_Mount:DemonHunterFelRush()
- else
- BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: DHBSL")
- end
-end
-
-function BeStride_Logic:Druid()
- if IsOutdoors() ~= true and self:DruidCanCat() then
- return BeStride_Mount:MountSpell(BeStride:SpellToName(768))
- elseif IsSwimming() and self:DruidCanSwim() and BeStride:DBGet("settings.mount.noswimming") == false then
- return BeStride_Mount:MountSpell(BeStride:SpellToName(783))
- elseif self:MovementCheck() and IsOutdoors() then
- return BeStride_Mount:MountSpell(BeStride:SpellToName(783))
- elseif GetShapeshiftForm() == 3 then
- return BeStride_Mount:MountSpell(BeStride:SpellToName(783))
- elseif IsMounted() and IsFlying() and self:IsFlyable() and self:DruidCanFly() and self:DruidFlyingMTFF() then
- return BeStride_Mount:MountSpell(BeStride:SpellToName(783))
- elseif self:IsFlyable() and self:DruidCanFly() and self:DruidFlightFormPriority() then
- return BeStride_Mount:MountSpell(BeStride:SpellToName(783))
- elseif IsFalling() and self:DruidCanFly() then
- return BeStride_Mount:MountSpell(BeStride:SpellToName(783))
- else
- BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: DRBSL")
- end
-end
-
-function BeStride_Logic:Hunter()
- if IsMounted() and IsFlying() and self:NoDismountWhileFlying() then
- return false
- else
- return BeStride_Mount:HunterAspectOfTheCheetah()
- end
-
- BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: HUBSL")
-end
-
-function BeStride_Logic:Mage()
- if IsMounted() and IsFlying() and (self:MageSlowFall() or self:MageBlink()) and not self:NoDismountWhileFlying() then
- return BeStride_Mount:MageSlowFall()
- elseif (self:MageSlowFall() or self:MageBlink()) and IsFalling() then
- return BeStride_Mount:MageSlowFall()
- elseif self:MageBlink() and self:MovementCheck() then
- return BeStride_Mount:MageBlink()
- end
-end
-
-function BeStride_Logic:Monk()
- if IsMounted() and IsFlying() and self:NoDismountWhileFlying() then
- return false
- elseif IsFlying() and self:MonkZenFlight() then
- return BeStride_Mount:MonkZenFlight()
- elseif (self:MonkZenFlight() or self:MonkRoll()) and IsFalling() then
- if self:MonkZenFlight() then
- return BeStride_Mount:MonkZenFlight()
- else
- return BeStride_Mount:MonkRoll()
- end
- elseif self:MonkRoll() and self:MovementCheck() then
- return BeStride_Mount:MonkRoll()
- else
- BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: MONKBSL")
- end
-end
-
-function BeStride_Logic:Paladin()
- if not IsFlying() and self:MovementCheck() and self:PaladinDivineSteed() then
- return BeStride_Mount:Paladin()
- else
- --BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/")
- end
-end
-
-function BeStride_Logic:Priest()
- if self:MovementCheck() then
- return BeStride_Mount:PriestLevitate()
- elseif IsMounted() and IsFlying() and self:PriestLevitate() and not self:NoDismountWhileFlying() then
- return BeStride_Mount:PriestLevitate()
- elseif IsFalling() and self:PriestLevitate() then
- return BeStride_Mount:PriestLevitate()
- elseif self:MovementCheck() and self:PriestLevitate() then
- return BeStride_Mount:PriestLevitate()
- else
- BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: SHBSL")
- end
-end
-
-function BeStride_Logic:Shaman()
- if not IsFlying() and (self:MovementCheck() or IsOutdoors ~= true) and self:ShamanGhostWolf() then
- return BeStride_Mount:Shaman()
- end
-end
-
-function BeStride_Logic:Rogue()
- if not IsFlying() and self:MovementCheck() and self:RogueSprint() then
- return BeStride_Mount:Rogue()
- else
- BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: RGBSL")
- end
-end
-
-function BeStride_Logic:IsFlyableArea()
- return IsFlyableArea()
-end
-
-function BeStride_Logic:IsMountable()
- if self:IsFlyable() and IsOutdoors() then
- return true
- elseif not self:IsFlyable() and IsOutdoors() then
- return true
- elseif not IsOutdoors() then
- return false
- else
- return false
- end
-end
-
-function BeStride_Logic:IsUnderwater()
- if IsSwimming() and BeStride:DBGet("settings.mount.noswimming") == false then
- local timer, initial, maxvalue, scale, paused, label = GetMirrorTimerInfo(2)
- if timer ~= nil and timer == "BREATH" and scale < 0 then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsSpecialZone()
- local mapID = C_Map.GetBestMapForUnit("player")
- local micro = BeStride:GetMapUntil(mapID,5)
- local dungeon = BeStride:GetMapUntil(mapID,4)
- local zone = BeStride:GetMapUntil(mapID,3)
- local continent = BeStride:GetMapUntil(mapID,2)
-
- if continent ~= nil and continent.name == BeStride_Locale.Continent.Draenor and micro.name == BeStride_Locale.Zone.Nagrand and self:DBGet("settings.mount.telaari") == true then
- local garrisonAbilityName = GetSpellInfo(161691)
- local _,_,_,_,_,_,spellID = GetSpellInfo(garrisonAbilityName)
- if(spellID == 165803 or spellID == 164222) then
- return true
- end
- end
-
- return false
-end
-
-function BeStride_Logic:SpecialZone()
- local mapID = C_Map.GetBestMapForUnit("player")
- local micro = BeStride:GetMapUntil(mapID,5)
- local dungeon = BeStride:GetMapUntil(mapID,4)
- local zone = BeStride:GetMapUntil(mapID,3)
- local continent = BeStride:GetMapUntil(mapID,2)
-
- if continent ~= nil and continent.name == BeStride_Locale.Continent.Draenor and micro.name == BeStride_Locale.Zone.Nagrand and self:DBGet("settings.mount.telaari") == true then
- return BeStride_Mount:Nagrand()
- end
-
- return nil
-end
-
-function BeStride_Logic:IsRepairable()
- if not self:IsMountable() or IsFlying() or not IsOutdoors() then
- return false
- end
- mounts = BeStride:DBGet("mounts.repair")
- local mountCount = {}
-
- table.foreach(mounts,function (key,value) table.insert(mountCount,key) end )
-
- if #mountCount ~= 0 then
- local globalDurability,count = 0,0
- for i = 0, 17 do
- local current, maximum = GetInventoryItemDurability(i)
- if current ~= nil and maximum ~= nil then
- local durability = (current / maximum)
- count = count + 1
- globalDurability = globalDurability + durability
- if (durability * 100) <= BeStride:DBGet("settings.mount.repair.durability") then
- return true
- end
- end
- end
-
- if ((globalDurability/count)*100) <= BeStride:DBGet("settings.mount.repair.globaldurability") then
- return true
- end
-
- for i = 0, 4 do
- for j = 0, GetContainerNumSlots(i) do
- local current, maximum = GetContainerItemDurability(i, j)
- if current ~= nil and maximum ~= nil then
- if ((current / maximum)*100) <= BeStride:DBGet("settings.mount.repair.inventorydurability") then
- return true
- end
- end
- end
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:MovementCheck()
- -- Checks Player Speed
- -- Returns: integer
- if BeStride_Logic:SpeedCheck() ~= 0 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:SpeedCheck()
- -- Checks Player Speed
- -- Returns: integer
- return GetUnitSpeed("player")
-end
-
-function BeStride_Logic:IsMountable()
- if IsOutdoors() then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsFlyable()
- if IsOutdoors() then
- local skill,spells = self:GetRidingSkill()
- local mapID = C_Map.GetBestMapForUnit("player")
-
- if countTable(BeStride_Constants.Riding.Flight.Restricted.Continents) > 0 then
- local continent = BeStride:GetMapUntil(mapID,2)
- if continent ~= nil then
- for key,value in pairsByKeys(BeStride_Constants.Riding.Flight.Restricted.Continents) do
- if continent.mapID == key and value.blocked == true then
- return false
- elseif continent.mapID == key and value.requires ~= nil and spells[value.requires] == true then
- break
- elseif continent.mapID == key and value.requires ~= nil then
- return false
- end
- end
- end
- end
-
- if countTable(BeStride_Constants.Riding.Flight.Restricted.Continents) > 0 then
- local zone = BeStride:GetMapUntil(mapID,3)
- if zone ~= nil then
- for key,value in pairsByKeys(BeStride_Constants.Riding.Flight.Restricted.Zones) do
- if zone.mapID == key and value.blocked == true then
- return false
- elseif zone.mapID == key and value.requires ~= nil and spells[value.requires] == true then
- break
- elseif zone.mapID == key then
- return false
- end
- end
- end
- end
-
- if self:IsFlyableArea() and skill >= 225 then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsFalling()
- return IsFalling()
-end
-
--- +------------+ --
--- Special Checks --
--- +------------+ --
-
-function BeStride_Logic:IsLoanedMount()
- local loanedMount = BeStride_Logic:CheckLoanedMount()
- if loanedMount ~= nil then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:CheckLoanedMount()
- local mapID = C_Map.GetBestMapForUnit("player")
- local zone = BeStride:GetMapUntil(mapID,3)
- if zone == nil then
- return nil
- elseif IsSwimming() and (
- zone.mapID == BeStride_Constants.Zone.Vashjir.KelptharForest.id or
- zone.mapID == BeStride_Constants.Zone.Vashjir.ShimmeringExpanse.id or
- zone.mapID == BeStride_Constants.Zone.Vashjir.AbyssalDepths.id or
- zone.mapID == BeStride_Constants.Zone.Vashjir.id
- ) then
- return BeStride_Mount:VashjirSeahorse()
- elseif zone.name == BeStride_Locale.Zone.Dalaran.Name then
- local subzone = GetSubZoneText()
- if subzone == BeStride_Locale.Zone.Dalaran.SubZone.Underbelly.Name or
- subzone == BeStride_Locale.Zone.Dalaran.SubZone.UnderbellyDescent.Name or
- subzone == BeStride_Locale.Zone.Dalaran.SubZone.CircleofWills.Name or
- subzone == BeStride_Locale.Zone.Dalaran.SubZone.BlackMarket.Name then
- if GetItemCount(139421, false) > 0 then
- return 139421
- end
- end
- elseif zone.name == BeStride_Locale.Zone.Oculus.Name then
- if GetItemCount(37859) == 1 then
- return 37859
- elseif GetItemCount(37860) == 1 then
- return 37860
- elseif GetItemCount(37815) == 1 then
- return 37815
- end
- elseif zone.name == BeStride_Locale.Zone.StormPeaks.Name or zone.name == BeStride_Locale.Zone.Icecrown.Name or zone.name == BeStride_Locale.Zone.SholazarBasin.Name then
- if GetItemCount(44221, false) > 0 then
- return 44221
- elseif GetItemCount(44229, false) > 0 then
- return 44229
- end
- end
-
- return nil
-end
-
-function BeStride_Logic:NoDismountWhileFlying()
- -- Check whether we can dismount while flying
- -- Returns: boolean
- -- Todo: Bitwise Compare
- if BeStride:DBGet("settings.mount.nodismountwhileflying") then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:ForceRepair()
- -- Check whether we force a repair mount
- -- Returns: boolean
- if BeStride.db.profile.settings["repair"]["force"] then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:UseRepair()
- -- Checks whether we check to repair or not
- -- Returns: boolean
- if BeStride.db.profile.settings["repair"]["use"] then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:GetRepairThreshold()
- -- Get repair threshold
- -- Returns: signed integer
- if BeStride.db.profile.settings["repair"]["durability"] then
- return BeStride.db.profile.settings["repair"]["durability"]
- else
- return -1
- end
-end
-
-function BeStride_Logic:CanRepair()
- -- Check whether we can repair
- -- Returns: boolean
- if canRepair then
- return true
- end
-
- if BeStride_Mount:CountRepairMounts() > 0 then
- end
-
- return false
-end
-
-function BeStride_Logic:CanBroom()
- if GetItemCount(37011, false) > 0 and not BeStride_Logic:IsCombat() and BeStride_Logic:CanBroomSetting() == true then
- return true
- end
-end
-
-function BeStride_Logic:CanBroomSetting()
- return BeStride:DBGet("settings.mount.flyingbroom")
-end
-
-function BeStride_Logic:NeedToRepair()
- -- Check whether we need to repair
- -- Returns: boolean
- if BeStride_Logic:ForceRepair() then
- return true
- end
-
- if size(BeStride.db.profile.misc.RepairMounts) > 0 and BeStride_Logic:UseRepair() then
- for i = 0, 17 do
- local current, maximum = GetInventoryItemDurability(i)
- if current ~= nil and maximum ~= nil and ( (current/maximum) <= BeStride_Logic:GetRepairThreshold() ) then
- return true
- end
- end
- end
-
- return false
-end
-
-function BeStride_Logic:IsHerbalismAndCanRobot()
- if BeStride_Logic:IsHerbalism() and not BeStride_Logic:IsCombat() and BeStride_Logic:CanRobotSetting() then
- if IsUsableSpell(134359) or IsUsableSpell(223814) then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsHerbalism()
- local prof1,prof2 = GetProfessions()
- -- 182 = Herbalism
- -- ref: http://wowwiki.wikia.com/wiki/API_GetProfessionInfo
- if (prof1 and select(7,GetProfessionInfo(prof1)) == 182) or (prof2 and select(7,GetProfessionInfo(prof2)) == 182) then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:CanRobotSetting()
- return BeStride:DBGet("settings.mount.forcerobot")
-end
-
--- +----------+ --
--- Class Checks --
--- +----------+ --
-function BeStride_Logic:IsDeathKnight()
- -- Check for DeathKnight
- if playerTable["class"]["id"] == 6 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsDemonHunter()
- -- Check for DemonHunter
- if playerTable["class"]["id"] == 12 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsDruid()
- -- Check for Druid
- if playerTable["class"]["id"] == 11 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsHunter()
- -- Check for Hunter
- if playerTable["class"]["id"] == 3 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsMage()
- -- Check for Mage
- if playerTable["class"]["id"] == 8 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsMonk()
- -- Check for Monk
- if playerTable["class"]["id"] == 10 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsPaladin()
- -- Check for Paladin
- if playerTable["class"]["id"] == 2 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsPriest()
- -- Check for Priest
- if playerTable["class"]["id"] == 5 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsRogue()
- -- Check for Rogue
- if playerTable["class"]["id"] == 4 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsShaman()
- -- Check for Shaman
- if playerTable["class"]["id"] == 7 then
- return true
- else
- return false
- end
-end
-
--- +--------------------------+ --
--- Class Specific Spells Checks --
--- +--------------------------+ --
--- ------------ --
--- Druid Spells --
--- ------------ --
-
--- Check for Swim Form
--- Returns: boolean
-function BeStride_Logic:DruidCanSwim()
- if IsUsableSpell(783) then
- return true
- else
- return false
- end
-end
-
--- Check for Travel Form
--- Returns: boolean
-function BeStride_Logic:DruidCanTravel()
- if IsUsableSpell(783) then
- return true
- else
- return false
- end
-end
-
--- Check for Travel Form
--- Returns: boolean
-function BeStride_Logic:DruidCanCat()
- if IsSpellKnown(768) and IsUsableSpell(768) then
- return true
- else
- return false
- end
-end
-
--- Check for Flight Form
--- Returns: boolean
-function BeStride_Logic:DruidCanFly()
- if IsUsableSpell(783) then
- return true
- else
- return false
- end
-end
-
--- ------------------ --
--- Deathknight Spells --
--- ------------------ --
-
-function BeStride_Logic:DeathKnightCanWraithWalk()
- if IsUsableSpell(212552) then
- return true
- else
- return false
- end
-end
-
--- ------------------- --
--- Demon Hunter Spells --
--- ------------------- --
-
-function BeStride_Logic:DemonHunterCanFelRush()
-
- if IsUsableSpell(195072) then
- local OnCooldown, _, _, _ = GetSpellCooldown(195072)
- if OnCooldown == 0 then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:DemonHunterCanGlide()
- if IsUsableSpell(131347) then
- return true
- else
- return false
- end
-end
-
--- ------------- --
--- Hunter Spells --
--- ------------- --
-function BeStride_Logic:HunterCanAspectOfTheCheetah()
- if IsSpellKnown(186257) and IsUsableSpell(186257) then
- local OnCooldown, _, _, _ = GetSpellCooldown(186257)
- if OnCooldown == 0 then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ----------- --
--- Mage Spells --
--- ----------- --
-
-function BeStride_Logic:MageCanSlowFall()
- if IsUsableSpell(1706) then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:MageCanBlink()
- if IsUsableSpell(1953) then
- local OnCooldown, _, _, _ = GetSpellCooldown(1953)
- if OnCooldown == 0 then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ----------- --
--- Monk Spells --
--- ----------- --
-
-function BeStride_Logic:MonkCanRoll()
- if IsUsableSpell(109132) or self:MonkCanTorpedo() then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:MonkCanTorpedo()
- if IsUsableSpell(115008) then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:MonkCanZenFlight()
- if IsUsableSpell(125883) then
- return true
- else
- return false
- end
-end
-
--- ------------- --
--- Priest Spells --
--- ------------- --
-
-function BeStride_Logic:PaladinCanDivineSteed()
- if IsUsableSpell(190784) then
- return true
- else
- return false
- end
-end
-
--- ------------- --
--- Priest Spells --
--- ------------- --
-
-function BeStride_Logic:PriestCanLevitate()
- if IsUsableSpell(1706) then
- return true
- else
- return false
- end
-end
-
--- ------------- --
--- Shaman Spells --
--- ------------- --
-
-function BeStride_Logic:ShamanCanGhostWolf()
- if IsUsableSpell(2645) then
- return true
- else
- return false
- end
-end
-
--- ------------- --
--- Rogue Spells --
--- ------------- --
-
-function BeStride_Logic:RogueCanSprint()
- if IsUsableSpell(2983) then
- return true
- else
- return false
- end
-end
-
--- +-------------------------+ --
--- Class Specific Mount Checks --
--- +-------------------------+ --
--- ----------- --
--- DeathKnight --
--- ----------- --
-
-function BeStride_Logic:DeathKnightWraithWalk()
- if self:IsDeathKnight() then
- if self:DeathKnightCanWraithWalk() and BeStride:DBGet("settings.classes.deathknight.wraithwalk") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ------------ --
--- Demon Hunter --
--- ------------ --
-
-function BeStride_Logic:DemonHunterFelRush()
- if self:IsDemonHunter() then
- if self:DemonHunterCanFelRush() and BeStride:DBGet("settings.classes.demonhunter.felrush") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:DemonHunterGlide()
- if self:IsDemonHunter() then
- if self:DemonHunterCanGlide() and BeStride:DBGet("settings.classes.demonhunter.glide") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ----- --
--- Druid --
--- ----- --
-
-function BeStride_Logic:IsDruidTraveling()
- if self:IsDruid() then
- local index = GetShapeshiftForm()
- if index == 3 then
- return true
- end
- end
-end
-
-function BeStride_Logic:DruidFlying()
- if self:IsDruid() then
- if self:DruidCanFly() and self:DruidUseFlightForm() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:DruidUseFlightForm()
- if self:IsDruid() then
- if BeStride:DBGet("settings.classes.druid.flightform") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:DruidTravelToTravel()
- if self:IsDruid() then
- if BeStride:DBGet("settings.classes.druid.traveltotravel") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:DruidFlightFormPriority()
- if self:IsDruid() then
- if self:DruidFlying() and BeStride:DBGet("settings.classes.druid.flightformpriority") == true then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- Check for Flying, Mounted and Mount to Flight Form
--- Returns: boolean
-function BeStride_Logic:DruidFlyingMTFF()
- -- Had a "GetUnitSpeed("player") ~= 0", unsure if we want to go with that
- -- Todo: Bitwise Compare
- if self:IsDruid() then
- if self:DruidFlying() and BeStride:DBGet("settings.classes.druid.mountedtoflightform") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ---- --
--- Mage --
--- ---- --
-
-function BeStride_Logic:MageSpecial()
- if self:IsMage() then
- if (not self:IsCombat()) then
- local BlinkOnCooldown, _, _, _ = GetSpellCooldown(1953)
- if not BlinkOnCooldown and IsFalling() and self:MovementCheck() and self:MageCanBlink() then
- BeStride_Mount:MageBlinkNoSlowFall()
- elseif not BlinkOnCooldown and not IsFalling() and self:MovementCheck() and self:MageCanBlink() and self:MageIsSlowFalling() then
- BeStride_Mount:MageBlink()
- elseif IsFalling() then
- BeStride_Mount:MageSlowFall()
- end
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:MageBlink()
- -- Todo: Bitwise Compare
- if self:IsMage() then
- if self:MageCanBlink() and BeStride:DBGet("settings.classes.mage.blink") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:MageSlowFall()
- -- Todo: Bitwise Compare
- if self:IsMage() then
- if self:MageCanSlowFall() and BeStride:DBGet("settings.classes.mage.slowfall") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ---- --
--- Monk --
--- ---- --
-
-function BeStride_Logic:MonkRoll()
- if self:IsMonk() then
- if self:MonkCanRoll() and BeStride:DBGet("settings.classes.monk.roll") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:MonkZenFlight()
- if self:IsMonk() then
- if self:MonkCanZenFlight() and BeStride:DBGet("settings.classes.monk.zenflight") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ------- --
--- Paladin --
--- ------- --
-
-function BeStride_Logic:PaladinDivineSteed()
- -- Todo: Bitwise Compare
- if self:IsPaladin() then
- if self:PaladinCanDivineSteed() and BeStride:DBGet("settings.classes.paladin.steed") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ------ --
--- Priest --
--- ------ --
-
-function BeStride_Logic:PriestLevitate()
- -- Todo: Bitwise Compare
- if self:IsPriest() then
- if self:PriestCanLevitate() and BeStride:DBGet("settings.classes.priest.levitate") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ----- --
--- Rogue --
--- ----- --
-
-function BeStride_Logic:RogueSprint()
- -- Todo: Bitwise Compare
- if self:IsRogue() then
- if self:RogueCanSprint() and BeStride:DBGet("settings.classes.rogue.sprint") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ------ --
--- Shaman --
--- ------ --
-
-function BeStride_Logic:ShamanGhostWolf()
- -- Todo: Bitwise Compare
- if self:IsShaman() then
- if self:ShamanCanGhostWolf() and BeStride:DBGet("settings.classes.shaman.ghostwolf") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:GetRidingSkill()
- local ridingSkillLevel = 0
- local ridingSpells = {}
-
-
- for spellID,skill in pairsByKeys(BeStride_Constants.Riding.Skill) do
- if IsSpellKnown(spellID) and skill.level ~= nil and skill.level > ridingSkillLevel then
- ridingSkillLevel = skill.level
- ridingSpells[spellID] = true
- elseif IsSpellKnown(spellID) and skill.level == nil then
- ridingSpells[spellID] = true
- end
- end
-
- return ridingSkillLevel,ridingSpells
-end
-
-function BeStride_Logic:WGActive()
- return true
-end
\ No newline at end of file
diff --git a/Versions/Mainline/logic.lua b/Versions/Mainline/logic.lua
new file mode 100644
index 0000000..9d4ebf4
--- /dev/null
+++ b/Versions/Mainline/logic.lua
@@ -0,0 +1,45 @@
+BeStride_Game = "Mainline"
+
+local class = UnitClass("player")
+
+function BeStride:isMountUsable(mount)
+ local name,spellID,icon,isActive,isUsable,sourceType,isFavorite,isFactionSpecific,faction,shouldHideOnChar,isCollected,mountID = C_MountJournal.GetMountInfoByID(mount)
+
+ return spellID,mountID,isUsable
+end
+
+function BeStride:IsZoneMount(mountId)
+ spellId = mountTable.master[mountId].spellID
+ if mountTable.master[mountId].type == "zone" and BeStride_Constants.Mount.Mounts[spellId] ~= nil and BeStride_Constants.Mount.Mounts[spellId].zone ~= nil then
+ return true
+ elseif BeStride_Game == "Mainline" and mountTable.master[mountId].type == "zone" and BeStride_Constants.Mount.Mounts[mountId] ~= nil and BeStride_Constants.Mount.Mounts[mountId].zone ~= nil then
+ return true
+ end
+
+ return false
+end
+
+function BeStride:GetProfessions()
+ return GetProfessions()
+end
+
+function BeStride:GetRidingSkill()
+ local ridingSkillLevel = 0
+ local ridingSpells = {}
+
+
+ for spellID,skill in pairsByKeys(BeStride_Constants.Riding.Skill) do
+ if IsSpellKnown(spellID) and skill.level ~= nil and skill.level > ridingSkillLevel then
+ ridingSkillLevel = skill.level
+ ridingSpells[spellID] = true
+ elseif IsSpellKnown(spellID) and skill.level == nil then
+ ridingSpells[spellID] = true
+ end
+ end
+
+ return ridingSkillLevel,ridingSpells
+end
+
+function BeStride:CanWraithWalk()
+ return true
+end
\ No newline at end of file
diff --git a/Versions/Wrath/BeStride_Logic.lua b/Versions/Wrath/BeStride_Logic.lua
deleted file mode 100644
index 3d5429f..0000000
--- a/Versions/Wrath/BeStride_Logic.lua
+++ /dev/null
@@ -1,1501 +0,0 @@
-BeStride_Logic = {}
-BeStride_Game = "Wrath"
-
-local class = UnitClass("player")
-local canRepair = false
-
-
-function BeStride_Logic:isMountUsable(mountId)
- --print("isMountUsable: " .. mountId)
- spellID = mountTable["master"][mountId].spellID
-
- return spellID,mountID,true
-end
-
-function BeStride_Logic:isZoneMount(mountId)
- return false
-end
-
-function BeStride_Logic:IsCombat()
- if InCombatLockdown() then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:Regular()
- -- Aspect of the Cheetah is available from level 5
- if self:IsHunterAndSpecial() then
- return self:Hunter()
- -- Check if we are mounted
- elseif IsMounted() and self:NeedsChauffeur() then
- self:DismountAndExit()
- return BeStride_Mount:Chauffeur()
- elseif self:NeedsChauffeur() then
- self:DismountAndExit()
- return BeStride_Mount:Chauffeur()
- elseif self:IsHerbalismAndCanRobot() then
- self:DismountAndExit()
- return BeStride_Mount:Robot()
- elseif self:IsDeathKnightAndSpecial() then
- self:DismountAndExit()
- return self:DeathKnight()
- elseif self:IsDemonHunterAndSpecial() then
- self:DismountAndExit()
- return self:DemonHunter()
- elseif self:IsDruidAndSpecial() then
- self:DismountAndExit()
- return self:Druid()
- elseif self:IsMageAndSpecial() then
- self:DismountAndExit()
- return self:Mage()
- elseif self:IsMonkAndSpecial() then
- self:DismountAndExit()
- return self:Monk()
- elseif self:IsPaladinAndSpecial() then
- self:DismountAndExit()
- return self:Paladin()
- elseif self:IsPriestAndSpecial() then
- self:DismountAndExit()
- return self:Priest()
- elseif self:IsShamanAndSpecial() then
- self:DismountAndExit()
- return self:Shaman()
- elseif self:IsRogueAndSpecial() then
- self:DismountAndExit()
- return self:Rogue()
- elseif self:IsLoanedMount() then
- self:DismountAndExit()
- return BeStride_Mount:Loaned()
- elseif self:CanBroom() then
- self:DismountAndExit()
- return BeStride_Mount:Broom()
- elseif self:IsSpecialZone() then
- self:DismountAndExit()
- return BeStride_Mount:SpecialZone()
- elseif self:IsRepairable() then
- self:DismountAndExit()
- return BeStride_Mount:Repair()
- elseif IsMounted() then
- if IsFlying() then
- if self:IsFlyable() and BeStride:DBGet("settings.mount.nodismountwhileflying") ~= true then
- self:DismountAndExit()
- if BeStride:DBGet("settings.mount.remount") then
- return BeStride_Mount:Flying()
- else
- return nil
- end
- else
- return nil
- end
- elseif IsSwimming() and BeStride:DBGet("settings.mount.noswimming") == false then
- self:DismountAndExit()
- return BeStride_Mount:Swimming()
- elseif self:IsFlyable() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
- self:DismountAndExit()
- if BeStride:DBGet("settings.mount.remount") then
- return BeStride_Mount:Passenger("flying")
- else
- return nil
- end
- elseif self:IsFlyable() then
- self:DismountAndExit()
- if BeStride:DBGet("settings.mount.remount") then
- return BeStride_Mount:Flying()
- else
- return nil
- end
- elseif IsOutdoors() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
- self:DismountAndExit()
- if BeStride:DBGet("settings.mount.remount") then
- return BeStride_Mount:Passenger("ground")
- else
- return nil
- end
- else
- self:DismountAndExit()
- if BeStride:DBGet("settings.mount.remount") then
- return BeStride_Mount:Regular()
- else
- return nil
- end
- end
- elseif IsSwimming() and IsOutdoors() and BeStride:DBGet("settings.mount.noswimming") == false then
- self:DismountAndExit()
- return BeStride_Mount:Swimming()
- elseif CanExitVehicle() then
- self:DismountAndExit()
- return BeStride_Mount:Regular()
- elseif self:IsFlyable() and IsOutdoors() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
- return BeStride_Mount:Passenger("flying")
- elseif self:IsFlyable() then
- return BeStride_Mount:Flying()
- elseif IsOutdoors() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
- return BeStride_Mount:Passenger("ground")
- elseif self:IsMountable() then
- return BeStride_Mount:Regular()
- elseif IsOutdoors() then
- return BeStride_Mount:Ground()
- else
- return nil
- end
-end
-
-
-
-function BeStride_Logic:GroundMountButton()
- -- Aspect of the Cheetah is available from level 5
- if self:IsHunterAndSpecial() then
- return self:Hunter()
- -- Check if we are mounted
- elseif IsMounted() and self:NeedsChauffeur() then
- self:DismountAndExit()
- return BeStride_Mount:Chauffeur()
- elseif self:NeedsChauffeur() then
- self:DismountAndExit()
- return BeStride_Mount:Chauffeur()
- elseif self:IsHerbalismAndCanRobot() then
- self:DismountAndExit()
- return BeStride_Mount:Robot()
- elseif self:IsDeathKnightAndSpecial() then
- self:DismountAndExit()
- return self:DeathKnight()
- elseif self:IsDemonHunterAndSpecial() then
- self:DismountAndExit()
- return self:DemonHunter()
- elseif self:IsDruidAndSpecial() then
- self:DismountAndExit()
- return self:Druid()
- elseif self:IsMageAndSpecial() then
- self:DismountAndExit()
- return self:Mage()
- elseif self:IsMonkAndSpecial() then
- self:DismountAndExit()
- return self:Monk()
- elseif self:IsPaladinAndSpecial() then
- self:DismountAndExit()
- return self:Paladin()
- elseif self:IsShamanAndSpecial() then
- self:DismountAndExit()
- return self:Shaman()
- elseif self:IsRogueAndSpecial() then
- self:DismountAndExit()
- return self:Rogue()
- elseif self:CanBroom() then
- self:DismountAndExit()
- return BeStride_Mount:Broom()
- elseif self:IsLoanedMount() then
- self:DismountAndExit()
- return BeStride_Mount:Loaned()
- elseif self:IsSpecialZone() then
- self:DismountAndExit()
- return BeStride_Mount:SpecialZone()
- elseif self:IsRepairable() then
- self:DismountAndExit()
- return BeStride_Mount:Repair()
- elseif IsMounted() then
- if IsFlying() and self:IsFlyable() and BeStride:DBGet("settings.mount.nodismountwhileflying") == true then
- return nil
- elseif IsOutdoors() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
- self:DismountAndExit()
- if BeStride:DBGet("settings.mount.remount") then
- return BeStride_Mount:Passenger("ground")
- else
- return nil
- end
- elseif IsSwimming() and BeStride:DBGet("settings.mount.noswimming") == false then
- self:DismountAndExit()
- return BeStride_Mount:Swimming()
- else
- return BeStride_Mount:Ground()
- end
- elseif IsOutdoors() and IsInGroup() == true and BeStride:DBGet("settings.mount.prioritizepassenger") == true then
- return BeStride_Mount:Passenger("ground")
- elseif IsSwimming() and IsOutdoors() and BeStride:DBGet("settings.mount.noswimming") == false then
- self:DismountAndExit()
- return BeStride_Mount:Swimming()
- elseif IsOutdoors() then
- return BeStride_Mount:Ground()
- else
- return nil
- end
-end
-
-function BeStride_Logic:RepairMountButton()
- if IsMounted() or IsOutdoors() then
- if IsFlying() and self:IsFlyable() and BeStride:DBGet("settings.mount.nodismountwhileflying") == true then
- return nil
- else
- self:DismountAndExit()
- return BeStride_Mount:Repair()
- end
- else
- return nil
- end
-end
-
-function BeStride_Logic:PassengerMountButton(type)
- if IsMounted() or IsOutdoors() then
- if IsFlying() and self:IsFlyable() and BeStride:DBGet("settings.mount.nodismountwhileflying") == true then
- return nil
- else
- self:DismountAndExit()
- return BeStride_Mount:Passenger(type)
- end
- else
- return nil
- end
-end
-
-function BeStride_Logic:Combat()
- if self:IsDeathKnight() and BeStride:DBGet("settings.classes.deathknight.wraithwalk") then
- return BeStride_Mount:DeathKnightWraithWalk()
- elseif self:IsDemonHunter() and self:DemonHunterFelRush() then
- return BeStride_Mount:DemonHunterFelRush()
- elseif self:IsDruid() and BeStride:DBGet("settings.classes.druid.traveltotravel") then
- return BeStride_Mount:DruidTravel()
- elseif self:IsHunterAndSpecial() then
- return self:Hunter()
- elseif self:IsMage() and (BeStride:DBGet("settings.classes.mage.blink") or BeStride:DBGet("settings.classes.mage.slowfall")) then
- if self:MageBlink() and BeStride:DBGet("settings.classes.mage.blinkpriority") then
- return BeStride_Mount:MageBlink()
- else
- return BeStride_Mount:MageSlowFall()
- end
- elseif self:IsMonk() and BeStride:DBGet("settings.classes.monk.roll") then
- return BeStride_Mount:MonkRoll()
- elseif self:IsPaladin() and BeStride:DBGet("settings.classes.paladin.steed") then
- return BeStride_Mount:PaladinDivineSteed()
- elseif self:IsPriest() and BeStride:DBGet("settings.classes.priest.levitate") then
- return BeStride_Mount:PriestLevitate()
- elseif self:IsRogue() and BeStride:DBGet("settings.classes.rogue.sprint") then
- return BeStride_Mount:RogueSprint()
- elseif self:IsShaman() and BeStride:DBGet("settings.classes.shaman.ghostwolf") then
- return BeStride_Mount:ShamanGhostWolf()
- elseif self:IsSpecialZone() then
- return BeStride_Mount:SpecialZone()
- end
-end
-
-function BeStride_Logic:DismountAndExit()
- if CanExitVehicle() then
- VehicleExit()
- elseif IsMounted() then
- Dismount()
- end
-end
-
-function BeStride_Logic:NeedsChauffeur()
- local skill,spells = self:GetRidingSkill()
- if skill == 0 then
- if IsUsableSpell(179245) or IsUsableSpell(179244) then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsDeathKnightAndSpecial()
- if self:IsDeathKnight() then
- if not IsFlying() and not IsFalling() and self:MovementCheck() and self:DeathKnightWraithWalk() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsDemonHunterAndSpecial()
- if ( IsFlying() or IsFalling() ) and self:DemonHunterGlide() then
- if IsFlying() and self:NoDismountWhileFlying() then
- return false
- elseif IsFalling() and self:DemonHunterGlide() then
- return true
- else
- return false
- end
- elseif self:MovementCheck() and self:DemonHunterFelRush() then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsDruidAndSpecial()
- if self:IsDruid() then
- if IsOutdoors() ~= true and self:DruidCanCat() then
- return true
- elseif (IsMounted() or self:IsDruidTraveling()) and IsFlying() and self:IsFlyable() and self:DruidFlying() and self:DruidFlyingMTFF() then
- return true
- elseif IsFlying() and self:DruidFlying() == true and self:DruidUseFlightForm() == false then
- return false
- elseif IsFlying() and self:NoDismountWhileFlying() then
- return false
- elseif self:IsFlyable() and self:DruidFlying() and self:DruidFlightFormPriority() then
- return true
- elseif IsFalling() and self:DruidFlying() then
- return true
- elseif IsSwimming() and self:DruidCanSwim() and BeStride:DBGet("settings.mount.noswimming") == false then
- return true
- elseif self:MovementCheck() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsHunterAndSpecial()
- if self:IsHunter() and BeStride:DBGet("settings.classes.hunter.aspectofthecheetah") then
- if (self:MovementCheck() or self:IsCombat()) and self:HunterCanAspectOfTheCheetah() then
- return true
- end
- end
- return false
-end
-
-function BeStride_Logic:IsMageAndSpecial()
- if self:IsMage() then
- if IsFlying() and self:NoDismountWhileFlying() then
- return false
- elseif IsMounted() and IsFlying() and (self:MageSlowFall() or self:MageBlink()) then
- return true
- elseif (self:MageSlowFall() or self:MageBlink()) and IsFalling() then
- return true
- elseif self:MageBlink() and self:MovementCheck() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsMonkAndSpecial()
- if self:IsMonk() then
- if IsMounted() and IsFlying() and self:NoDismountWhileFlying() then
- return false
- elseif IsFlying() and self:MonkZenFlight() then
- return true
- elseif (self:MonkZenFlight() or self:MonkRoll()) and IsFalling() then
- return true
- elseif self:MonkRoll() and self:MovementCheck() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsPaladinAndSpecial()
- if self:IsPaladin() then
- if self:PaladinDivineSteed() and self:MovementCheck() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsPriestAndSpecial()
- if self:IsPriest() then
- if IsMounted() and IsFlying() and self:NoDismountWhileFlying() then
- return false
- elseif IsMounted() and IsFlying() and self:PriestLevitate() and self:NoDismountWhileFlying() then
- return true
- elseif self:PriestLevitate() and IsFalling() then
- return true
- elseif self:PriestLevitate() and self:MovementCheck() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsRogueAndSpecial()
- if self:IsRogue() then
- if IsFlying() then
- return false
- elseif not IsFlying() and self:MovementCheck() and self:RogueSprint() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsShamanAndSpecial()
- if self:IsShaman() then
- if IsFlying() and self:NoDismountWhileFlying() then
- return false
- elseif self:ShamanGhostWolf() and (self:MovementCheck() or IsOutdoors() ~= true) then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:DeathKnight()
- if not IsFlying() and self:MovementCheck() and self:DeathKnightWraithWalk() then
- return BeStride_Mount:DeathKnightWraithWalk()
- else
- BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: DKBSL")
- end
-end
-
-function BeStride_Logic:DemonHunter()
- if ( IsFlying() or IsFalling() ) and self:DemonHunterGlide() then
- if IsFlying() and self:NoDismountWhileFlying() then
- return BeStride_Mount:DemonHunterGlide()
- elseif IsFalling() and self:DemonHunterGlide() then
- return BeStride_Mount:DemonHunterGlide()
- else
- return false
- end
- elseif self:MovementCheck() and self:DemonHunterFelRush() then
- return BeStride_Mount:DemonHunterFelRush()
- else
- BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: DHBSL")
- end
-end
-
-function BeStride_Logic:Druid()
- if IsOutdoors() ~= true and self:DruidCanCat() then
- return BeStride_Mount:MountSpell(BeStride:SpellToName(768))
- elseif IsSwimming() and self:DruidCanSwim() and BeStride:DBGet("settings.mount.noswimming") == false then
- return BeStride_Mount:MountSpell(BeStride:SpellToName(783))
- elseif self:MovementCheck() and IsOutdoors() then
- return BeStride_Mount:MountSpell(BeStride:SpellToName(783))
- elseif GetShapeshiftForm() == 3 then
- return BeStride_Mount:MountSpell(BeStride:SpellToName(783))
- elseif IsMounted() and IsFlying() and self:IsFlyable() and self:DruidCanFly() and self:DruidFlyingMTFF() then
- return BeStride_Mount:MountSpell(BeStride:SpellToName(783))
- elseif self:IsFlyable() and self:DruidCanFly() and self:DruidFlightFormPriority() then
- return BeStride_Mount:MountSpell(BeStride:SpellToName(783))
- elseif IsFalling() and self:DruidCanFly() then
- return BeStride_Mount:MountSpell(BeStride:SpellToName(783))
- else
- BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: DRBSL")
- end
-end
-
-function BeStride_Logic:Hunter()
- if IsMounted() and IsFlying() and self:NoDismountWhileFlying() then
- return false
- else
- return BeStride_Mount:HunterAspectOfTheCheetah()
- end
-
- BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: HUBSL")
-end
-
-function BeStride_Logic:Mage()
- if IsMounted() and IsFlying() and (self:MageSlowFall() or self:MageBlink()) and not self:NoDismountWhileFlying() then
- return BeStride_Mount:MageSlowFall()
- elseif (self:MageSlowFall() or self:MageBlink()) and IsFalling() then
- return BeStride_Mount:MageSlowFall()
- elseif self:MageBlink() and self:MovementCheck() then
- return BeStride_Mount:MageBlink()
- end
-end
-
-function BeStride_Logic:Monk()
- if IsMounted() and IsFlying() and self:NoDismountWhileFlying() then
- return false
- elseif IsFlying() and self:MonkZenFlight() then
- return BeStride_Mount:MonkZenFlight()
- elseif (self:MonkZenFlight() or self:MonkRoll()) and IsFalling() then
- if self:MonkZenFlight() then
- return BeStride_Mount:MonkZenFlight()
- else
- return BeStride_Mount:MonkRoll()
- end
- elseif self:MonkRoll() and self:MovementCheck() then
- return BeStride_Mount:MonkRoll()
- else
- BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: MONKBSL")
- end
-end
-
-function BeStride_Logic:Paladin()
- if not IsFlying() and self:MovementCheck() and self:PaladinDivineSteed() then
- return BeStride_Mount:Paladin()
- else
- --BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/")
- end
-end
-
-function BeStride_Logic:Priest()
- if self:MovementCheck() then
- return BeStride_Mount:PriestLevitate()
- elseif IsMounted() and IsFlying() and self:PriestLevitate() and not self:NoDismountWhileFlying() then
- return BeStride_Mount:PriestLevitate()
- elseif IsFalling() and self:PriestLevitate() then
- return BeStride_Mount:PriestLevitate()
- elseif self:MovementCheck() and self:PriestLevitate() then
- return BeStride_Mount:PriestLevitate()
- else
- BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: SHBSL")
- end
-end
-
-function BeStride_Logic:Shaman()
- if not IsFlying() and (self:MovementCheck() or IsOutdoors ~= true) and self:ShamanGhostWolf() then
- return BeStride_Mount:Shaman()
- end
-end
-
-function BeStride_Logic:Rogue()
- if not IsFlying() and self:MovementCheck() and self:RogueSprint() then
- return BeStride_Mount:Rogue()
- else
- BeStride_Debug:Error("This is a error. Please report to the maintainer at https://www.github.com/dansheps/bestride/issues/. ID: RGBSL")
- end
-end
-
-function BeStride_Logic:IsFlyableArea()
- return IsFlyableArea()
-end
-
-function BeStride_Logic:IsMountable()
- if self:IsFlyable() and IsOutdoors() then
- return true
- elseif not self:IsFlyable() and IsOutdoors() then
- return true
- elseif not IsOutdoors() then
- return false
- else
- return false
- end
-end
-
-function BeStride_Logic:IsUnderwater()
- if IsSwimming() and BeStride:DBGet("settings.mount.noswimming") == false then
- local timer, initial, maxvalue, scale, paused, label = GetMirrorTimerInfo(2)
- if timer ~= nil and timer == "BREATH" and scale < 0 then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsSpecialZone()
- local mapID = C_Map.GetBestMapForUnit("player")
- local micro = BeStride:GetMapUntil(mapID,5)
- local dungeon = BeStride:GetMapUntil(mapID,4)
- local zone = BeStride:GetMapUntil(mapID,3)
- local continent = BeStride:GetMapUntil(mapID,2)
-
- if continent ~= nil and continent.name == BeStride_Locale.Continent.Draenor and micro.name == BeStride_Locale.Zone.Nagrand and self:DBGet("settings.mount.telaari") == true then
- local garrisonAbilityName = GetSpellInfo(161691)
- local _,_,_,_,_,_,spellID = GetSpellInfo(garrisonAbilityName)
- if(spellID == 165803 or spellID == 164222) then
- return true
- end
- end
-
- return false
-end
-
-function BeStride_Logic:SpecialZone()
- local mapID = C_Map.GetBestMapForUnit("player")
- local micro = BeStride:GetMapUntil(mapID,5)
- local dungeon = BeStride:GetMapUntil(mapID,4)
- local zone = BeStride:GetMapUntil(mapID,3)
- local continent = BeStride:GetMapUntil(mapID,2)
-
- if continent ~= nil and continent.name == BeStride_Locale.Continent.Draenor and micro.name == BeStride_Locale.Zone.Nagrand and self:DBGet("settings.mount.telaari") == true then
- return BeStride_Mount:Nagrand()
- end
-
- return nil
-end
-
-function BeStride_Logic:IsRepairable()
- if not self:IsMountable() or IsFlying() or not IsOutdoors() then
- return false
- end
- mounts = BeStride:DBGet("mounts.repair")
- local mountCount = {}
-
- table.foreach(mounts,function (key,value) table.insert(mountCount,key) end )
-
- if #mountCount ~= 0 then
- local globalDurability,count = 0,0
- for i = 0, 17 do
- local current, maximum = GetInventoryItemDurability(i)
- if current ~= nil and maximum ~= nil then
- local durability = (current / maximum)
- count = count + 1
- globalDurability = globalDurability + durability
- if (durability * 100) <= BeStride:DBGet("settings.mount.repair.durability") then
- return true
- end
- end
- end
-
- if ((globalDurability/count)*100) <= BeStride:DBGet("settings.mount.repair.globaldurability") then
- return true
- end
-
- for i = 0, 4 do
- for j = 0, GetContainerNumSlots(i) do
- local current, maximum = GetContainerItemDurability(i, j)
- if current ~= nil and maximum ~= nil then
- if ((current / maximum)*100) <= BeStride:DBGet("settings.mount.repair.inventorydurability") then
- return true
- end
- end
- end
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:MovementCheck()
- -- Checks Player Speed
- -- Returns: integer
- if BeStride_Logic:SpeedCheck() ~= 0 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:SpeedCheck()
- -- Checks Player Speed
- -- Returns: integer
- return GetUnitSpeed("player")
-end
-
-function BeStride_Logic:IsMountable()
- if IsOutdoors() then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:CanFly()
- local skill,spells = self:GetRidingSkill()
- print(skill)
- if self:IsFlyableArea() and skill >= 225 then
- return true
- end
-
- return false
-end
-
-function BeStride_Logic:IsFlyable()
- if IsOutdoors() then
- local skill,spells = self:GetRidingSkill()
- local mapID = C_Map.GetBestMapForUnit("player")
-
- if countTable(BeStride_Constants.Riding.Flight.Restricted.Continents) > 0 then
- local continent = BeStride:GetMapUntil(mapID,2)
- if continent ~= nil then
- for key,value in pairsByKeys(BeStride_Constants.Riding.Flight.Restricted.Continents) do
- if continent.mapID == key and value.blocked == true then
- return false
- elseif continent.mapID == key and value.requires ~= nil and spells[value.requires] == true then
- break
- elseif continent.mapID == key and value.requires ~= nil then
- return false
- end
- end
- end
- end
-
- if countTable(BeStride_Constants.Riding.Flight.Restricted.Continents) > 0 then
- local zone = BeStride:GetMapUntil(mapID,3)
- if zone ~= nil then
- for key,value in pairsByKeys(BeStride_Constants.Riding.Flight.Restricted.Zones) do
- if zone.mapID == key and value.blocked == true then
- return false
- elseif zone.mapID == key and value.requires ~= nil and spells[value.requires] == true then
- break
- elseif zone.mapID == key then
- return false
- end
- end
- end
- end
-
- if self:CanFly() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:IsFalling()
- return IsFalling()
-end
-
--- +------------+ --
--- Special Checks --
--- +------------+ --
-
-function BeStride_Logic:IsLoanedMount()
- local loanedMount = BeStride_Logic:CheckLoanedMount()
- if loanedMount ~= nil then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:CheckLoanedMount()
- local mapID = C_Map.GetBestMapForUnit("player")
- local zone = BeStride:GetMapUntil(mapID,3)
- if zone == nil then
- return nil
- elseif IsSwimming() and (
- zone.mapID == BeStride_Constants.Zone.Vashjir.KelptharForest.id or
- zone.mapID == BeStride_Constants.Zone.Vashjir.ShimmeringExpanse.id or
- zone.mapID == BeStride_Constants.Zone.Vashjir.AbyssalDepths.id or
- zone.mapID == BeStride_Constants.Zone.Vashjir.id
- ) then
- return BeStride_Mount:VashjirSeahorse()
- elseif zone.name == BeStride_Locale.Zone.Dalaran.Name then
- local subzone = GetSubZoneText()
- if subzone == BeStride_Locale.Zone.Dalaran.SubZone.Underbelly.Name or
- subzone == BeStride_Locale.Zone.Dalaran.SubZone.UnderbellyDescent.Name or
- subzone == BeStride_Locale.Zone.Dalaran.SubZone.CircleofWills.Name or
- subzone == BeStride_Locale.Zone.Dalaran.SubZone.BlackMarket.Name then
- if GetItemCount(139421, false) > 0 then
- return 139421
- end
- end
- elseif zone.name == BeStride_Locale.Zone.Oculus.Name then
- if GetItemCount(37859) == 1 then
- return 37859
- elseif GetItemCount(37860) == 1 then
- return 37860
- elseif GetItemCount(37815) == 1 then
- return 37815
- end
- elseif zone.name == BeStride_Locale.Zone.StormPeaks.Name or zone.name == BeStride_Locale.Zone.Icecrown.Name or zone.name == BeStride_Locale.Zone.SholazarBasin.Name then
- if GetItemCount(44221, false) > 0 then
- return 44221
- elseif GetItemCount(44229, false) > 0 then
- return 44229
- end
- end
-
- return nil
-end
-
-function BeStride_Logic:NoDismountWhileFlying()
- -- Check whether we can dismount while flying
- -- Returns: boolean
- -- Todo: Bitwise Compare
- if BeStride:DBGet("settings.mount.nodismountwhileflying") then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:ForceRepair()
- -- Check whether we force a repair mount
- -- Returns: boolean
- if BeStride.db.profile.settings["repair"]["force"] then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:UseRepair()
- -- Checks whether we check to repair or not
- -- Returns: boolean
- if BeStride.db.profile.settings["repair"]["use"] then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:GetRepairThreshold()
- -- Get repair threshold
- -- Returns: signed integer
- if BeStride.db.profile.settings["repair"]["durability"] then
- return BeStride.db.profile.settings["repair"]["durability"]
- else
- return -1
- end
-end
-
-function BeStride_Logic:CanRepair()
- -- Check whether we can repair
- -- Returns: boolean
- if canRepair then
- return true
- end
-
- if BeStride_Mount:CountRepairMounts() > 0 then
- end
-
- return false
-end
-
-function BeStride_Logic:CanBroom()
- if GetItemCount(37011, false) > 0 and not BeStride_Logic:IsCombat() and BeStride_Logic:CanBroomSetting() == true then
- return true
- end
-end
-
-function BeStride_Logic:CanBroomSetting()
- return BeStride:DBGet("settings.mount.flyingbroom")
-end
-
-function BeStride_Logic:NeedToRepair()
- -- Check whether we need to repair
- -- Returns: boolean
- if BeStride_Logic:ForceRepair() then
- return true
- end
-
- if size(BeStride.db.profile.misc.RepairMounts) > 0 and BeStride_Logic:UseRepair() then
- for i = 0, 17 do
- local current, maximum = GetInventoryItemDurability(i)
- if current ~= nil and maximum ~= nil and ( (current/maximum) <= BeStride_Logic:GetRepairThreshold() ) then
- return true
- end
- end
- end
-
- return false
-end
-
-function BeStride_Logic:IsHerbalismAndCanRobot()
- -- Return false as no herbalism mount yet
- return false
-end
-
-function BeStride_Logic:IsHerbalism()
- -- Return false as no herbalism mount yet
- return false
-end
-
-function BeStride_Logic:CanRobotSetting()
- return BeStride:DBGet("settings.mount.forcerobot")
-end
-
--- +----------+ --
--- Class Checks --
--- +----------+ --
-function BeStride_Logic:IsDeathKnight()
- -- Check for DeathKnight
- if playerTable["class"]["id"] == 6 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsDemonHunter()
- -- Check for DemonHunter
- if playerTable["class"]["id"] == 12 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsDruid()
- -- Check for Druid
- if playerTable["class"]["id"] == 11 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsHunter()
- -- Check for Hunter
- if playerTable["class"]["id"] == 3 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsMage()
- -- Check for Mage
- if playerTable["class"]["id"] == 8 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsMonk()
- -- Check for Monk
- if playerTable["class"]["id"] == 10 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsPaladin()
- -- Check for Paladin
- if playerTable["class"]["id"] == 2 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsPriest()
- -- Check for Priest
- if playerTable["class"]["id"] == 5 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsRogue()
- -- Check for Rogue
- if playerTable["class"]["id"] == 4 then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:IsShaman()
- -- Check for Shaman
- if playerTable["class"]["id"] == 7 then
- return true
- else
- return false
- end
-end
-
--- +--------------------------+ --
--- Class Specific Spells Checks --
--- +--------------------------+ --
--- ------------ --
--- Druid Spells --
--- ------------ --
-
--- Check for Swim Form
--- Returns: boolean
-function BeStride_Logic:DruidCanSwim()
- if IsUsableSpell(783) then
- return true
- else
- return false
- end
-end
-
--- Check for Travel Form
--- Returns: boolean
-function BeStride_Logic:DruidCanTravel()
- if IsUsableSpell(783) then
- return true
- else
- return false
- end
-end
-
--- Check for Travel Form
--- Returns: boolean
-function BeStride_Logic:DruidCanCat()
- if IsSpellKnown(768) and IsUsableSpell(768) then
- return true
- else
- return false
- end
-end
-
--- Check for Flight Form
--- Returns: boolean
-function BeStride_Logic:DruidCanFly()
- if IsUsableSpell(783) then
- return true
- else
- return false
- end
-end
-
--- ------------------ --
--- Deathknight Spells --
--- ------------------ --
-
-function BeStride_Logic:DeathKnightCanWraithWalk()
- if IsUsableSpell(212552) then
- return true
- else
- return false
- end
-end
-
--- ------------------- --
--- Demon Hunter Spells --
--- ------------------- --
-
-function BeStride_Logic:DemonHunterCanFelRush()
-
- if IsUsableSpell(195072) then
- local OnCooldown, _, _, _ = GetSpellCooldown(195072)
- if OnCooldown == 0 then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:DemonHunterCanGlide()
- if IsUsableSpell(131347) then
- return true
- else
- return false
- end
-end
-
--- ------------- --
--- Hunter Spells --
--- ------------- --
-function BeStride_Logic:HunterCanAspectOfTheCheetah()
- if IsSpellKnown(186257) and IsUsableSpell(186257) then
- local OnCooldown, _, _, _ = GetSpellCooldown(186257)
- if OnCooldown == 0 then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ----------- --
--- Mage Spells --
--- ----------- --
-
-function BeStride_Logic:MageCanSlowFall()
- if IsUsableSpell(1706) then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:MageCanBlink()
- if IsUsableSpell(1953) then
- local OnCooldown, _, _, _ = GetSpellCooldown(1953)
- if OnCooldown == 0 then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ----------- --
--- Monk Spells --
--- ----------- --
-
-function BeStride_Logic:MonkCanRoll()
- if IsUsableSpell(109132) or self:MonkCanTorpedo() then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:MonkCanTorpedo()
- if IsUsableSpell(115008) then
- return true
- else
- return false
- end
-end
-
-function BeStride_Logic:MonkCanZenFlight()
- if IsUsableSpell(125883) then
- return true
- else
- return false
- end
-end
-
--- ------------- --
--- Priest Spells --
--- ------------- --
-
-function BeStride_Logic:PaladinCanDivineSteed()
- if IsUsableSpell(190784) then
- return true
- else
- return false
- end
-end
-
--- ------------- --
--- Priest Spells --
--- ------------- --
-
-function BeStride_Logic:PriestCanLevitate()
- if IsUsableSpell(1706) then
- return true
- else
- return false
- end
-end
-
--- ------------- --
--- Shaman Spells --
--- ------------- --
-
-function BeStride_Logic:ShamanCanGhostWolf()
- if IsUsableSpell(2645) then
- return true
- else
- return false
- end
-end
-
--- ------------- --
--- Rogue Spells --
--- ------------- --
-
-function BeStride_Logic:RogueCanSprint()
- if IsUsableSpell(2983) then
- return true
- else
- return false
- end
-end
-
--- +-------------------------+ --
--- Class Specific Mount Checks --
--- +-------------------------+ --
--- ----------- --
--- DeathKnight --
--- ----------- --
-
-function BeStride_Logic:DeathKnightWraithWalk()
- if self:IsDeathKnight() then
- if self:DeathKnightCanWraithWalk() and BeStride:DBGet("settings.classes.deathknight.wraithwalk") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ------------ --
--- Demon Hunter --
--- ------------ --
-
-function BeStride_Logic:DemonHunterFelRush()
- if self:IsDemonHunter() then
- if self:DemonHunterCanFelRush() and BeStride:DBGet("settings.classes.demonhunter.felrush") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:DemonHunterGlide()
- if self:IsDemonHunter() then
- if self:DemonHunterCanGlide() and BeStride:DBGet("settings.classes.demonhunter.glide") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ----- --
--- Druid --
--- ----- --
-
-function BeStride_Logic:IsDruidTraveling()
- if self:IsDruid() then
- local index = GetShapeshiftForm()
- if index == 3 then
- return true
- end
- end
-end
-
-function BeStride_Logic:DruidFlying()
- if self:IsDruid() then
- if self:DruidCanFly() and self:DruidUseFlightForm() then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:DruidUseFlightForm()
- if self:IsDruid() then
- if BeStride:DBGet("settings.classes.druid.flightform") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:DruidTravelToTravel()
- if self:IsDruid() then
- if BeStride:DBGet("settings.classes.druid.traveltotravel") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:DruidFlightFormPriority()
- if self:IsDruid() then
- if self:DruidFlying() and BeStride:DBGet("settings.classes.druid.flightformpriority") == true then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- Check for Flying, Mounted and Mount to Flight Form
--- Returns: boolean
-function BeStride_Logic:DruidFlyingMTFF()
- -- Had a "GetUnitSpeed("player") ~= 0", unsure if we want to go with that
- -- Todo: Bitwise Compare
- if self:IsDruid() then
- if self:DruidFlying() and BeStride:DBGet("settings.classes.druid.mountedtoflightform") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ---- --
--- Mage --
--- ---- --
-
-function BeStride_Logic:MageSpecial()
- if self:IsMage() then
- if (not self:IsCombat()) then
- local BlinkOnCooldown, _, _, _ = GetSpellCooldown(1953)
- if not BlinkOnCooldown and IsFalling() and self:MovementCheck() and self:MageCanBlink() then
- BeStride_Mount:MageBlinkNoSlowFall()
- elseif not BlinkOnCooldown and not IsFalling() and self:MovementCheck() and self:MageCanBlink() and self:MageIsSlowFalling() then
- BeStride_Mount:MageBlink()
- elseif IsFalling() then
- BeStride_Mount:MageSlowFall()
- end
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:MageBlink()
- -- Todo: Bitwise Compare
- if self:IsMage() then
- if self:MageCanBlink() and BeStride:DBGet("settings.classes.mage.blink") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:MageSlowFall()
- -- Todo: Bitwise Compare
- if self:IsMage() then
- if self:MageCanSlowFall() and BeStride:DBGet("settings.classes.mage.slowfall") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ---- --
--- Monk --
--- ---- --
-
-function BeStride_Logic:MonkRoll()
- if self:IsMonk() then
- if self:MonkCanRoll() and BeStride:DBGet("settings.classes.monk.roll") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:MonkZenFlight()
- if self:IsMonk() then
- if self:MonkCanZenFlight() and BeStride:DBGet("settings.classes.monk.zenflight") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ------- --
--- Paladin --
--- ------- --
-
-function BeStride_Logic:PaladinDivineSteed()
- -- Todo: Bitwise Compare
- if self:IsPaladin() then
- if self:PaladinCanDivineSteed() and BeStride:DBGet("settings.classes.paladin.steed") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ------ --
--- Priest --
--- ------ --
-
-function BeStride_Logic:PriestLevitate()
- -- Todo: Bitwise Compare
- if self:IsPriest() then
- if self:PriestCanLevitate() and BeStride:DBGet("settings.classes.priest.levitate") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ----- --
--- Rogue --
--- ----- --
-
-function BeStride_Logic:RogueSprint()
- -- Todo: Bitwise Compare
- if self:IsRogue() then
- if self:RogueCanSprint() and BeStride:DBGet("settings.classes.rogue.sprint") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
--- ------ --
--- Shaman --
--- ------ --
-
-function BeStride_Logic:ShamanGhostWolf()
- -- Todo: Bitwise Compare
- if self:IsShaman() then
- if self:ShamanCanGhostWolf() and BeStride:DBGet("settings.classes.shaman.ghostwolf") then
- return true
- else
- return false
- end
- else
- return false
- end
-end
-
-function BeStride_Logic:GetRidingSkill()
- local ridingSkillLevel = 0
- local ridingSpells = {}
-
- for skillIndex = 1, GetNumSkillLines() do
- local skillName, isHeader, isExpanded, skillRank, numTempPoints, skillModifier, skillMaxRank, isAbandonable, stepCost, rankCost, minLevel, skillCostType, skillDescription = GetSkillLineInfo(skillIndex)
- if skillName == 'Riding' then
- ridingSkillLevel = skillRank
- end
- end
-
- for spellID,skill in pairsByKeys(BeStride_Constants.Riding.Skill) do
- if IsSpellKnown(spellID) and skill.level ~= nil and skill.level > ridingSkillLevel then
- ridingSkillLevel = skill.level
- ridingSpells[spellID] = true
- elseif IsSpellKnown(spellID) and skill.level == nil then
- ridingSpells[spellID] = true
- end
- end
-
- return ridingSkillLevel,ridingSpells
-end
-
-function BeStride_Logic:WGActive()
- return true
-end
\ No newline at end of file
diff --git a/Versions/Wrath/MountDB.lua b/Versions/Wrath/MountDB.lua
index 112d36a..7b64316 100644
--- a/Versions/Wrath/MountDB.lua
+++ b/Versions/Wrath/MountDB.lua
@@ -1,317 +1,5655 @@
BeStride_MountDB={
-- Name, SpellID, ItemID, MaxSpeed, MinSpeed, SwimSpeed, Category, Source, NormalMount, FlyingMount, PassengerMount, VendorMount, AQMount"
- [458]={"Brown Horse", 458, 5656, 60, 60, 0, "Horse", "Exalted Stormwind", true, false, false, false, false},
- [459]={"Gray Wolf", 459, 1134, 60, 60, 0, "Wolf", "", true, false, false, false, false},
- [468]={"White Stallion", 468, 2415, 60, 60, 0, "Horse", "", true, false, false, false, false},
- [470]={"Black Stallion", 470, 2411, 60, 60, 0, "Horse", "Exalted Stormwind", true, false, false, false, false},
- [471]={"Palamino", 471, 2413, 60, 60, 0, "Horse", "", true, false, false, false, false},
- [472]={"Pinto", 472, 2414, 60, 60, 0, "Horse", "Exalted Stormwind", true, false, false, false, false},
- [578]={"Black Wolf", 578, 1041, 60, 60, 0, "Wolf", "", true, false, false, false, false},
- [579]={"Red Wolf", 579, 5663, 1, 1, 0, "Wolf", "", true, false, false, false, false},
- [580]={"Timber Wolf", 580, 1132, 60, 60, 0, "Wolf", "Gold", true, false, false, false, false},
- [581]={"Winter Wolf", 581, 1133, 60, 60, 0, "Wolf", "", true, false, false, false, false},
- [3363]={"Nether Drake", 3363, 21736, 310, 310, 0, "Nether Drake", "", true, true, false, false, false},
- [5784]={"Felsteed", 5784, 304, 60, 60, 0, "Warlock", "Warlock", true, false, false, false, false},
- [6648]={"Chestnut Mare", 6648, 5655, 60, 60, 0, "Horse", "Exalted Stormwind", true, false, false, false, false},
- [6653]={"Dire Wolf", 6653, 5665, 60, 60, 0, "Wolf", "Gold", true, false, false, false, false},
- [6654]={"Brown Wolf", 6654, 5668, 60, 60, 0, "Wolf", "Gold", true, false, false, false, false},
- [6777]={"Gray Ram", 6777, 5864, 60, 60, 0, "Ram", "Exalted IronForge", true, false, false, false, false},
- [6896]={"Black Ram", 6896, 5874, 60, 60, 0, "Ram", "", true, false, false, false, false},
- [6897]={"Blue Ram", 6897, 5875, 60, 60, 0, "Ram", "", true, false, false, false, false},
- [6898]={"White Ram", 6898, 5873, 60, 60, 0, "Ram", "Exalted IronForge", true, false, false, false, false},
- [6899]={"Brown Ram", 6899, 5872, 60, 60, 0, "Ram", "Exalted IronForge", true, false, false, false, false},
- [8394]={"Striped Frostsaber", 8394, 8631, 60, 60, 0, "Saber", "Exalted Darnasses", true, false, false, false, false},
- [8395]={"Emerald Raptor", 8395, 8588, 60, 60, 0, "Raptor", "Gold", true, false, false, false, false},
- [8595]={"Blue Mechanostrider", 8595, 28025, 1, 1, 0, "Mechanostrider", "", true, false, false, false, false},
- [8980]={"Skeletal Horse", 8980, 8583, 60, 60, 0, "Horse", "", true, false, false, false, false},
- [10789]={"Spotted Frostsaber", 10789, 8632, 60, 60, 0, "Saber", "Exalted Darnasses", true, false, false, false, false},
- [10793]={"Striped Nightsaber", 10793, 8629, 60, 60, 0, "Saber", "Exalted Darnasses", true, false, false, false, false},
- [10795]={"Ivory Raptor", 10795, 49280, 60, 60, 0, "Raptor", "TCG", true, false, false, false, false},
- [10796]={"Turquoise Raptor", 10796, 8591, 60, 60, 0, "Raptor", "Gold", true, false, false, false, false},
- [10798]={"Obsidian Raptor", 10798, 8590, 60, 60, 0, "Raptor", "", true, false, false, false, false},
- [10799]={"Violet Raptor", 10799, 8592, 60, 60, 0, "Raptor", "Gold", true, false, false, false, false},
- [10873]={"Red Mechanostrider", 10873, 8563, 60, 60, 0, "Mechanostrider", "Exalted Gnomeragan", true, false, false, false, false},
- [10969]={"Blue Mechanostrider", 10969, 8595, 60, 60, 0, "Mechanostrider", "Duplicate", true, false, false, false, false},
- [13819]={"Warhorse", 13819, 9158, 60, 60, 0, "Paladin", "Paladin", true, false, false, false, false},
- [15779]={"White Mechanostrider Mod B", 15779, 13326, 1, 1, 0, "Mechanostrider", "", true, false, false, false, false},
- [15780]={"Green Mechanostrider", 15780, 13310, 60, 60, 0, "Mechanostrider", "", true, false, false, false, false},
- [15787]={"Steel Mechanostrider", 15787, 10180, 60, 60, 0, "Mechanostrider", "", true, false, false, false, false},
- [16055]={"Black Nightsaber", 16055, 12303, 1, 1, 0, "Saber", "", true, false, false, false, false},
- [1660]={"Ancient Frostsaber", 1660, 12302, 1, 1, 0, "Saber", "", true, false, false, false, false},
- [16058]={"Primal Leopard", 16058, 12325, 60, 60, 0, "Saber", "", true, false, false, false, false},
- [16059]={"Tawny Sabercat", 16059, 12326, 60, 60, 0, "Saber", "", true, false, false, false, false},
- [16060]={"Golden Sabercat", 16060, 12327, 60, 60, 0, "Saber", "", true, false, false, false, false},
- [16080]={"Red Wolf", 16080, 12330, 1, 1, 0, "Wolf", "", true, false, false, false, false},
- [16081]={"Winter Wolf", 16081, 1133, 1, 1, 0, "Wolf", "", true, false, false, false, false},
- [16082]={"Palomino", 16082, 12354, 1, 1, 0, "Horse", "", true, false, false, false, false},
- [16083]={"White Stallion", 16083, 12353, 1, 1, 0, "Horse", "Exalted Stormwind", true, false, false, false, false},
- [16084]={"Mottled Red Raptor", 16084, 8586, 1, 1, 0, "Raptor", "", true, false, false, false, false},
- [17229]={"Winterspring Frostsaber", 17229, 1360, 1, 1, 0, "Saber", "Exalted Winterspring Frostsaber", true, false, false, false, false},
- [17450]={"Ivory Raptor", 17450, 13107, 1, 1, 0, "Raptor", "", true, false, false, false, false},
- [17453]={"Green Mechanostrider", 17453, 13310, 60, 60, 0, "Mechanostrider", "Exalted Gnomeragan", true, false, false, false, false},
- [17454]={"Unpainted Mechanostrider", 17454, 13322, 60, 60, 0, "Mechanostrider", "Exalted Gnomeragan", true, false, false, false, false},
- [17455]={"Purple Mechanostrider", 17455, 13323, 60, 60, 0, "Mechanostrider", "", true, false, false, false, false},
- [17456]={"Red and Blue Mechanostrider", 17456, 13324, 60, 60, 0, "Mechanostrider", "", true, false, false, false, false},
- [17458]={"Fluorescent Green Mechanostrider", 17458, 13325, 60, 60, 0, "Mechanostrider", "", true, false, false, false, false},
- [17459]={"Icy Blue Mechanostrider Mod A", 17459, 13327, 1, 1, 0, "Mechanostrider", "", true, false, false, false, false},
- [17460]={"Frost Ram", 17460, 13329, 1, 1, 0, "Ram", "", true, false, false, false, false},
- [17461]={"Black Ram", 17461, 13328, 1, 1, 0, "Ram", "Exalted IronForge", true, false, false, false, false},
- [17462]={"Red Skeletal Horse", 17462, 13310, 60, 60, 0, "Horse", "Gold", true, false, false, false, false},
- [17463]={"Blue Skeletal Horse", 17463, 46308, 60, 60, 0, "DeadHorse", "Duplicate", true, false, false, false, false},
- [17464]={"Brown Skeletal Horse", 17464, 13333, 60, 60, 0, "Horse", "Gold", true, false, false, false, false},
- [17465]={"Green Skeletal Warhorse", 17465, 13334, 1, 1, 0, "Horse", "Gold", true, false, false, false, false},
- [17481]={"Rivendare's Deathcharger", 17481, 13335, 1, 1, 0, "DeadHorse", "Drop Stratholme", true, false, false, false, false},
- [18363]={"Riding Kodo", 18363, 14062, 60, 60, 0, "Kodo", "", true, false, false, false, false},
- [18989]={"Gray Kodo", 18989, 15277, 60, 60, 0, "Kodo", "Gold", true, false, false, false, false},
- [18990]={"Brown Kodo", 18990, 15290, 60, 60, 0, "Kodo", "Gold", true, false, false, false, false},
- [18991]={"Green Kodo", 18991, 15292, 1, 1, 0, "Kodo", "Gold", true, false, false, false, false},
- [18992]={"Teal Kodo", 18992, 15293, 1, 1, 0, "Kodo", "", true, false, false, false, false},
- [22717]={"Black War Steed", 22717, 29468, 1, 1, 0, "Horse", "Honor", true, false, false, false, false},
- [22718]={"Black War Kodo", 22718, 29466, 1, 1, 0, "Kodo", "Honor", true, false, false, false, false},
- [22719]={"Black Battlestrider", 22719, 29465, 1, 1, 0, "Mechanostrider", "Honor", true, false, false, false, false},
- [22720]={"Black War Ram", 22720, 29467, 1, 1, 0, "Ram", "Honor", true, false, false, false, false},
- [22721]={"Black War Raptor", 22721, 29472, 1, 1, 0, "Raptor", "Honor", true, false, false, false, false},
- [22722]={"Red Skeletal Warhorse", 22722, 29470, 1, 1, 0, "Horse", "Honor", true, false, false, false, false},
- [22723]={"Black War Tiger", 22723, 29471, 1, 1, 0, "Saber", "Honor", true, false, false, false, false},
- [22724]={"Black War Wolf", 22724, 29469, 1, 1, 0, "Wolf", "Honor", true, false, false, false, false},
- [23161]={"Dreadsteed", 23161, 14505, 1, 1, 0, "Warlock", "Warlock", true, false, false, false, false},
- [23214]={"Charger", 23104, 14565, 1, 1, 0, "Paladin", "Paladin", true, false, false, false, false},
- [23109]={"Swift Mistsaber", 23109, 18767, 1, 1, 0, "Saber", "Exalted Darnasses", true, false, false, false, false},
- [23220]={"Swift Dawnsaber", 23220, 18768, 1, 1, 0, "Saber", "", true, false, false, false, false},
- [23221]={"Swift Frostsaber", 23221, 18766, 1, 1, 0, "Saber", "Exalted Darnasses", true, false, false, false, false},
- [23222]={"Swift Yellow Mechanostrider", 23222, 18774, 1, 1, 0, "Mechanostrider", "Exalted Gnomeragan", true, false, false, false, false},
- [23223]={"Swift White Mechanostrider", 23223, 18773, 1, 1, 0, "Mechanostrider", "Exalted Gnomeragan", true, false, false, false, false},
- [23225]={"Swift Green Mechanostrider", 23225, 18772, 1, 1, 0, "Mechanostrider", "Exalted Gnomeragan", true, false, false, false, false},
- [23227]={"Swift Palomino", 23227, 18776, 1, 1, 0, "Horse", "Exalted Stormwind", true, false, false, false, false},
- [23280]={"Swift White Steed", 23280, 18778, 1, 1, 0, "Horse", "Exalted Stormwind", true, false, false, false, false},
- [23229]={"Swift Brown Steed", 23229, 18777, 1, 1, 0, "Horse", "Exalted Stormwind", true, false, false, false, false},
- [23280]={"Swift Brown Ram", 23280, 18786, 1, 1, 0, "Ram", "Exalted IronForge", true, false, false, false, false},
- [23239]={"Swift Gray Ram", 23239, 18787, 1, 1, 0, "Ram", "Exalted IronForge", true, false, false, false, false},
- [23240]={"Swift White Ram", 23240, 18785, 1, 1, 0, "Ram", "Exalted IronForge", true, false, false, false, false},
- [23241]={"Swift Blue Raptor", 23241, 18788, 1, 1, 0, "Raptor", "Gold", true, false, false, false, false},
- [23242]={"Swift Olive Raptor", 23242, 18789, 1, 1, 0, "Raptor", "Gold", true, false, false, false, false},
- [23243]={"Swift Orange Raptor", 23243, 18790, 1, 1, 0, "Raptor", "Gold", true, false, false, false, false},
- [23246]={"Purple Skeletal Warhorse", 23246, 18791, 1, 1, 0, "Horse", "Gold", true, false, false, false, false},
- [23247]={"Great White Kodo", 23247, 18793, 1, 1, 0, "Kodo", "Gold", true, false, false, false, false},
- [23280]={"Great Gray Kodo", 23280, 18795, 1, 1, 0, "Kodo", "Gold", true, false, false, false, false},
- [23249]={"Great Brown Kodo", 23249, 18794, 1, 1, 0, "Kodo", "Gold", true, false, false, false, false},
- [23250]={"Swift Brown Wolf", 23250, 18796, 1, 1, 0, "Wolf", "Gold", true, false, false, false, false},
- [23251]={"Swift Timber Wolf", 23251, 18797, 1, 1, 0, "Wolf", "Gold", true, false, false, false, false},
- [23252]={"Swift Gray Wolf", 23252, 18798, 1, 1, 0, "Wolf", "Gold", true, false, false, false, false},
- [23338]={"Swift Stormsaber", 23338, 18902, 1, 1, 0, "Saber", "Exalted Darnasses", true, false, false, false, false},
- [23509]={"Frostwolf Howler", 23509, 19029, 1, 1, 0, "Wolf", "Honor", true, false, false, false, false},
- [23100]={"Stormpike Battle Charger", 23100, 19030, 1, 1, 0, "Ram", "Honor", true, false, false, false, false},
- [24242]={"Swift Razzashi Raptor", 24242, 19872, 1, 1, 0, "Raptor", "Drop ZG", true, false, false, false, false},
- [24252]={"Swift Zulian Tiger", 24252, 19902, 1, 1, 0, "Saber", "Drop ZG", true, false, false, false, false},
- [25953]={"Blue Qiraji Battle Tank", 25953, 21280, 1, 1, 0, "Bug", "Drop, AQ40", false, false, false, false, true},
- [26054]={"Red Qiraji Battle Tank", 26054, 21310, 1, 1, 0, "Bug", "Drop AQ40", false, false, false, false, true},
- [26055]={"Yellow Qiraji Battle Tank", 26055, 21324, 1, 1, 0, "Bug", "Drop AQ40", false, false, false, false, true},
- [26056]={"Green Qiraji Battle Tank", 26056, 21323, 1, 1, 0, "Bug", "Drop AQ40", false, false, false, false, true},
- [26656]={"Black Qiraji Battle Tank", 26656, 21176, 1, 1, 0, "Bug", "", false, true, false, false, true},
- [28025]={"Nether Drake", 28025, 21736, 3, 3, 0, "Nether Drake", "", true, false, false, false, false},
- [29059]={"Naxxramas Deathcharger", 29059, 23193, 1, 1, 0, "DeadHorse", "", true, false, false, false, false},
- [31074]={"Riding Turtle", 31074, 23720, 0, 0, 1, "Turtle", "TCG", true, false, false, false, false},
- [32235]={"Golden Gryphon", 32235, 25470, 150, 150, 0, "Gryphon", "Gold", false, true, false, false, false},
- [32239]={"Ebon Gryphon", 32239, 25471, 150, 150, 0, "Gryphon", "Gold", false, true, false, false, false},
- [32240]={"Snowy Gryphon", 32240, 25472, 150, 150, 0, "Gryphon", "Gold", false, true, false, false, false},
- [32242]={"Swift Blue Gryphon", 32242, 25473, 280, 280, 0, "Gryphon", "Gold", false, true, false, false, false},
- [32243]={"Tawny Wind Rider", 32243, 25474, 150, 150, 0, "Wind Rider", "Gold", false, true, false, false, false},
- [32244]={"Blue Wind Rider", 32244, 25475, 150, 150, 0, "Wind Rider", "Gold", false, true, false, false, false},
- [32245]={"Green Wind Rider", 32245, 25476, 150, 150, 0, "Wind Rider", "Gold", false, true, false, false, false},
- [32246]={"Swift Red Wind Rider", 32246, 25477, 280, 280, 0, "Wind Rider", "Gold", false, true, false, false, false},
- [32289]={"Swift Red Gryphon", 32289, 25527, 280, 280, 0, "Gryphon", "Gold", false, true, false, false, false},
- [32290]={"Swift Green Gryphon", 32290, 25528, 280, 280, 0, "Gryphon", "Gold", false, true, false, false, false},
- [32292]={"Swift Purple Gryphon", 32292, 25529, 280, 280, 0, "Gryphon", "Gold", false, true, false, false, false},
- [32295]={"Swift Green Wind Rider", 32295, 25531, 280, 280, 0, "Wind Rider", "Gold", false, true, false, false, false},
- [32296]={"Swift Yellow Wind Rider", 32296, 25532, 280, 280, 0, "Wind Rider", "Gold", false, true, false, false, false},
- [32297]={"Swift Purple Wind Rider", 32297, 25533, 280, 280, 0, "Wind Rider", "Gold", false, true, false, false, false},
- [32345]={"Peep the Phoenix Mount", 32345, 25596, 310, 310, 0, "Phoenix", "", true, false, false, false, false},
- [32420]={"Old Crappy McWeakSauce", 32420, 25664, 60, 60, 0, "Wind Rider", "", true, false, false, false, false},
- [33630]={"Blue Mechanostrider", 33630, 8595, 60, 60, 0, "Mechanostrider", "Exalted Gnomeragan", true, false, false, false, false},
- [33660]={"Swift Pink Hawkstrider", 33660, 28936, 1, 1, 0, "Hawkstrider", "Gold", true, false, false, false, false},
- [34406]={"Brown Elekk", 34406, 28481, 60, 60, 0, "Elekk", "Exalted Exodar", true, false, false, false, false},
- [34407]={"Great Elite Elekk", 34407, 28482, 1, 1, 0, "Elekk", "Exalted Exodar", true, false, false, false, false},
- [34767]={"Summon Charger", 34767, 0, 1, 1, 0, "Paladin", "Duplicate", true, false, false, false, false},
- [34769]={"Summon Warhorse", 34769, 0, 60, 60, 0, "Paladin", "Duplicate", true, false, false, false, false},
- [34790]={"Dark War Talbuk", 34790, 29280, 1, 1, 0, "Talbuk", "Hala tokens", true, false, false, false, false},
- [34795]={"Red Hawkstrider", 34795, 28927, 60, 60, 0, "Hawkstrider", "Gold", true, false, false, false, false},
- [34896]={"Cobalt War Talbuk", 34896, 29227, 1, 1, 0, "Talbuk", "Exalted Kurenai", true, false, false, false, false},
- [34897]={"White War Talbuk", 34897, 29231, 1, 1, 0, "Talbuk", "Exalted Kurenai", true, false, false, false, false},
- [34898]={"Silver War Talbuk", 34898, 29229, 1, 1, 0, "Talbuk", "Exalted Kurenai", true, false, false, false, false},
- [34899]={"Tan War Talbuk", 34899, 29230, 1, 1, 0, "Talbuk", "Exalted Kurenai", true, false, false, false, false},
- [35018]={"Purple Hawkstrider", 35018, 29222, 60, 60, 0, "Hawkstrider", "Gold", true, false, false, false, false},
- [35020]={"Blue Hawkstrider", 35020, 29220, 60, 60, 0, "Hawkstrider", "Gold", true, false, false, false, false},
- [35022]={"Black Hawkstrider", 35022, 29221, 60, 60, 0, "Hawkstrider", "Gold", true, false, false, false, false},
- [35025]={"Swift Green Hawkstrider", 35025, 29223, 1, 1, 0, "Hawkstrider", "Gold", true, false, false, false, false},
- [35027]={"Swift Purple Hawkstrider", 35027, 29224, 1, 1, 0, "Hawkstrider", "Gold", true, false, false, false, false},
- [35028]={"Swift Warstrider", 35028, 31029, 1, 1, 0, "Hawkstrider", "Honor", true, false, false, false, false},
- [35710]={"Gray Elekk", 35710, 29744, 60, 60, 0, "Elekk", "Exalted Exodar", true, false, false, false, false},
- [35711]={"Purple Elekk", 35711, 29743, 60, 60, 0, "Elekk", "Exalted Exodar", true, false, false, false, false},
- [35712]={"Great Green Elekk", 35712, 29746, 1, 1, 0, "Elekk", "Exalted Exodar", true, false, false, false, false},
- [35713]={"Great Blue Elekk", 35713, 29745, 1, 1, 0, "Elekk", "Exalted Exodar", true, false, false, false, false},
- [35714]={"Great Purple Elekk", 35714, 29747, 1, 1, 0, "Elekk", "Exalted Exodar", true, false, false, false, false},
- [36702]={"Fiery Warhorse", 36702, 30480, 1, 1, 0, "Horse", "Drop Kara", true, false, false, false, false},
- [37015]={"Swift Nether Drake", 37015, 30609, 310, 310, 0, "Nether Drake", "Gladiator", false, true, false, false, false},
- [39315]={"Cobalt Riding Talbuk", 39315, 31830, 1, 1, 0, "Talbuk", "Exalted Kurenai", true, false, false, false, false},
- [39316]={"Dark Riding Talbuk", 39316, 28915, 1, 1, 0, "Talbuk", "Hala tokens", true, false, false, false, false},
- [39317]={"Silver Riding Talbuk", 39317, 31832, 1, 1, 0, "Talbuk", "Exalted Kurenai", true, false, false, false, false},
- [39318]={"Tan Riding Talbuk", 39318, 31834, 1, 1, 0, "Talbuk", "Exalted Kurenai", true, false, false, false, false},
- [39319]={"White Riding Talbuk", 39319, 31836, 1, 1, 0, "Talbuk", "Exalted Kurenai", true, false, false, false, false},
- [39798]={"Green Riding Nether Ray", 39798, 32314, 280, 280, 0, "Nether Ray", "Exalted Skyguard", false, true, false, false, false},
- [39800]={"Red Riding Nether Ray", 39800, 32317, 280, 280, 0, "Nether Ray", "Exalted Skyguard", false, true, false, false, false},
- [39801]={"Purple Riding Nether Ray", 39801, 32316, 280, 280, 0, "Nether Ray", "Exalted Skyguard", false, true, false, false, false},
- [39802]={"Silver Riding Nether Ray", 39802, 32318, 280, 280, 0, "Nether Ray", "Exalted Skyguard", false, true, false, false, false},
- [39803]={"Blue Riding Nether Ray", 39803, 32319, 280, 280, 0, "Nether Ray", "Exalted Skyguard", false, true, false, false, false},
- [40192]={"Ashes of Al'ar", 40192, 32458, 310, 310, 0, "Phoenix", "Drop Tempest Keep", false, true, false, false, false},
- [41502]={"Raven Lord", 41502, 32768, 1, 1, 0, "Raven", "Drop Sethekk Halls", true, false, false, false, false},
- [41513]={"Onyx Netherwing Drake", 41513, 32857, 280, 280, 0, "Nether Drake", "Exalted Netherwing", false, true, false, false, false},
- [41514]={"Azure Netherwing Drake", 41514, 32858, 280, 280, 0, "Nether Drake", "Exalted Netherwing", false, true, false, false, false},
- [41515]={"Cobalt Netherwing Drake", 41515, 32859, 280, 280, 0, "Nether Drake", "Exalted Netherwing", false, true, false, false, false},
- [41516]={"Purple Netherwing Drake", 41516, 32860, 280, 280, 0, "Nether Drake", "Exalted Netherwing", false, true, false, false, false},
- [41517]={"Veridian Netherwing Drake", 41517, 32861, 280, 280, 0, "Nether Drake", "Exalted Netherwing", false, true, false, false, false},
- [41518]={"Violet Netherwing Drake", 41518, 32862, 280, 280, 0, "Nether Drake", "Exalted Netherwing", false, true, false, false, false},
- [42776]={"Spectral Tiger", 42776, 49283, 60, 60, 0, "Saber", "TCG", true, false, false, false, false},
- [42777]={"Swift Spectral Tiger", 42777, 49284, 1, 1, 0, "Saber", "TCG", true, false, false, false, false},
- [43688]={"Amani War Bear", 43688, 33809, 1, 1, 0, "Bear", "ZA", true, false, false, false, false},
- --[43100]={"Frost Wyrm", 43100, 0, 280, 280, 0, "Wyrm", "", true, false, false, false, false},
- [43899]={"Brewfest Ram", 43899, 33976, 60, 60, 0, "Ram", "Duplicate", true, false, false, false, false},
- [43900]={"Swift Brewfest Ram", 43900, 33977, 1, 1, 0, "Ram", "Drop Brewfest", true, false, false, false, false},
- [43927]={"Cenarion War Hippogryph", 43927, 33999, 280, 280, 0, "Hippogryph", "Exalted Cenarion Expedition", false, true, false, false, false},
- [44151]={"Turbo-Charged Flying Machine", 44151, 34061, 280, 280, 0, "Machine", "Engineering", false, true, false, false, false},
- [44153]={"Flying Machine", 44153, 34060, 150, 150, 0, "Machine", "Engineering", false, true, false, false, false},
- [44317]={"Merciless Nether Drake", 44317, 34092, 310, 310, 0, "Nether Drake", "Gladiator", false, true, false, false, false},
- [44744]={"Merciless Nether Drake", 44744, 34092, 310, 310, 0, "Nether Drake", "Gladiator", false, true, false, false, false},
- [46197]={"X-51 Nether-Rocket", 46197, 198629, 150, 150, 0, "Rocket", "TCG", false, true, false, false, false},
- [46199]={"X-51 Nether-Rocket X-TREME", 46199, 198628, 280, 280, 0, "Rocket", "TCG", false, true, false, false, false},
- [46628]={"Swift White Hawkstrider", 46628, 35513, 1, 1, 0, "Hawkstrider", "Drop Magisters' Terrace", true, false, false, false, false},
- [47037]={"Swift War Elekk", 47037, 26439, 1, 1, 0, "Elekk", "", true, false, false, false, false},
- [48025]={"Headless Horseman's Mount", 48025, 37012, 280, 60, 0, "Horse", "Drop, Halloween", true, true, false, false, false},
- [48027]={"Black War Elekk", 48027, 35906, 1, 1, 0, "Elekk", "Honor", true, false, false, false, false},
- [48778]={"Acherus Deathcharger", 48778, 28302, 1, 1, 0, "DeathKnight", "DeathKnight", true, false, false, false, false},
- [48954]={"Swift Zhevra", 48954, 37598, 1, 1, 0, "Horse", "Recruit a Friend", true, false, false, false, false},
- [49193]={"Vengeful Nether Drake", 49193, 37676, 310, 310, 0, "Nether Drake", "Gladiator", false, true, false, false, false},
- [49322]={"Swift Zhevra", 49322, 37719, 1, 1, 0, "Horse", "Recruit a Friend", true, false, false, false, false},
- [49378]={"Brewfest Riding Kodo", 49378, 37827, 60, 60, 0, "Kodo", "Duplicate", true, false, false, false, false},
- [49379]={"Great Brewfest Kodo", 49379, 37828, 1, 1, 0, "Kodo", "Drop Brewfest", true, false, false, false, false},
- [5609]={"Brewfest Kodo", 5609, 37827, 60, 60, 0, "Kodo", "Duplicate", true, false, false, false, false},
- [50870]={"Brewfest Ram", 50870, 33976, 60, 60, 0, "Ram", "Duplicate", true, false, false, false, false},
- [51412]={"Big Battle Bear", 51412, 198632, 1, 1, 0, "Bear", "TCG", true, false, false, false, false},
- [51960]={"Frost Wyrm Mount", 51960, 38690, 280, 280, 0, "Wyrm", "", true, false, false, false, false},
- [54729]={"Winged Steed of the Ebon Blade", 54729, 40775, 280, 280, 0, "Wyrm", "DeathKnight", false, true, false, false, false},
- [54753]={"White Polar Bear", 54753, 43962, 1, 1, 0, "Bear", "Daily Storm Peaks", true, false, false, false, false},
- [55531]={"Mechano-hog", 55531, 41508, 1, 1, 0, "Machine", "Engineering", true, false, true, false, false},
- [58615]={"Brutal Nether Drake", 58615, 43106, 310, 310, 0, "Nether Drake", "Gladiator", false, true, false, false, false},
- [58983]={"Big Blizzard Bear", 58983, 43599, 1, 1, 0, "Bear", "TCG", true, false, false, false, false},
- [59567]={"Azure Drake", 59567, 43952, 280, 280, 0, "Drake", "Drop Eye of Eternity", false, true, false, false, false},
- [59568]={"Blue Drake", 59568, 43953, 280, 280, 0, "Drake", "Drop, The Eye of Eternity", false, true, false, false, false},
- [59569]={"Bronze Drake", 59569, 43951, 280, 280, 0, "Drake", "Drop The Culling of Stratholme", false, true, false, false, false},
- [59570]={"Red Drake", 59570, 43955, 280, 280, 0, "Drake", "Exalted, Wyrmrest Accord", false, true, false, false, false},
- [59571]={"Twilight Drake", 59571, 43954, 280, 280, 0, "Drake", "Drop, The Obsidian Sanctum", false, true, false, false, false},
- [59572]={"Black Polar Bear", 59572, 43964, 1, 1, 0, "Bear", "", true, false, false, false, false},
- [59573]={"Brown Polar Bear", 59573, 43963, 1, 1, 0, "Bear", "", true, false, false, false, false},
- [59650]={"Black Drake", 59650, 43986, 280, 280, 0, "Drake", "Drop, The Obsidian Sanctum", false, true, false, false, false},
- [59785]={"Black War Mammoth", 59785, 43956, 1, 1, 0, "Mammoth", "Stone Keeper's Shard", true, false, false, false, false},
- [59788]={"Black War Mammoth", 59788, 44077, 1, 1, 0, "Mammoth", "Stone Keeper's Shard", true, false, false, false, false},
- [59791]={"Wooly Mammoth", 59791, 44230, 1, 1, 0, "Mammoth", "Embelm of Heroism", true, false, false, false, false},
- [59793]={"Wooly Mammoth", 59793, 44231, 1, 1, 0, "Mammoth", "Embelm of Heroism", true, false, false, false, false},
- [59797]={"Ice Mammoth", 59797, 43958, 1, 1, 0, "Mammoth", "Revered Sons of Hodir", true, false, false, false, false},
- [59799]={"Ice Mammoth", 59799, 44080, 1, 1, 0, "Mammoth", "Revered Sons of Hodir", true, false, false, false, false},
- [59802]={"Grand Ice Mammoth", 59802, 44086, 1, 1, 0, "Mammoth", "", true, false, true, false, false},
- [59804]={"Grand Ice Mammoth", 59804, 43961, 1, 1, 0, "Mammoth", "", true, false, true, false, false},
- [59961]={"Red Proto-Drake", 59961, 44160, 280, 280, 0, "Proto-Drake", "Achievment", false, true, false, false, false},
- [59976]={"Black Proto-Drake", 59976, 44164, 310, 310, 0, "Proto-Drake", "Achievment", false, true, false, false, false},
- [59996]={"Blue Proto-Drake", 59996, 44151, 280, 280, 0, "Proto-Drake", "Drop, Skadi the Ruthless", false, true, false, false, false},
- [60002]={"Time-Lost Proto-Drake", 60002, 44168, 280, 280, 0, "Proto-Drake", "Drop Rare", false, true, false, false, false},
- [60021]={"Plagued Proto-Drake", 60021, 44150, 310, 310, 0, "Proto-Drake", "Achievment", false, true, false, false, false},
- [60024]={"Violet Proto-Drake", 60024, 44177, 310, 310, 0, "Proto-Drake", "Achievment", false, true, false, false, false},
- [60025]={"Albino Drake", 60025, 44178, 280, 280, 0, "Drake", "Achievment", false, true, false, false, false},
- [60114]={"Armored Brown Bear", 60114, 44225, 1, 1, 0, "Bear", "Gold", true, false, false, false, false},
- [60116]={"Armored Brown Bear", 60116, 44226, 1, 1, 0, "Bear", "Gold", true, false, false, false, false},
- [60118]={"Black War Bear", 60118, 44223, 1, 1, 0, "Bear", "Achievment", true, false, false, false, false},
- [60119]={"Black War Bear", 60119, 44224, 1, 1, 0, "Bear", "Achievment", true, false, false, false, false},
- [60136]={"Grand Caravan Mammoth", 60136, 32212, 1, 1, 0, "Mammoth", "", true, false, false, false, false},
- [60140]={"Grand Caravan Mammoth", 60140, 32213, 1, 1, 0, "Mammoth", "", true, false, false, false, false},
- [60424]={"Mekgineer's Chopper", 60424, 44413, 1, 1, 0, "Machine", "Engineering", true, false, true, false, false},
- [61229]={"Armored Snowy Gryphon", 61229, 44689, 280, 280, 0, "Gryphon", "Gold", false, true, false, false, false},
- [61230]={"Armored Blue Wind Rider", 61230, 44690, 280, 280, 0, "Wind Rider", "Gold", false, true, false, false, false},
- [61294]={"Green Proto-Drake", 61294, 44707, 280, 280, 0, "Proto-Drake", "Revered Oracles, Mysterious Egg", false, true, false, false, false},
- [61309]={"Magnificent Flying Carpet", 61309, 44558, 280, 280, 0, "Carpet", "Tailoring", false, true, false, false, false},
- [61425]={"Traveler's Tundra Mammoth", 61425, 44234, 1, 1, 0, "Mammoth", "Gold", true, false, true, true, false},
- [61442]={"Swift Mooncloth Carpet", 61442, 44555, 280, 280, 0, "Carpet", "Tailoring", false, true, false, false, false},
- [61444]={"Swift Shadoweave Carpet", 61444, 44557, 280, 280, 0, "Carpet", "Tailoring", false, true, false, false, false},
- [61446]={"Swift Spellfire Carpet", 61446, 44556, 280, 280, 0, "Carpet", "Tailoring", false, true, false, false, false},
- [61447]={"Traveler's Tundra Mammoth", 61447, 44235, 1, 1, 0, "Mammoth", "Gold", true, false, true, true, false},
- [61451]={"Flying Carpet", 61451, 44554, 150, 150, 0, "Carpet", "Tailoring", false, true, false, false, false},
- [61465]={"Grand Black War Mammoth", 61465, 43959, 1, 1, 0, "Mammoth", "Drop Vault", true, false, true, false, false},
- [61467]={"Grand Black War Mammoth", 61467, 44083, 1, 1, 0, "Mammoth", "Drop Vault", true, false, true, false, false},
- [61469]={"Grand Ice Mammoth", 61469, 44086, 1, 1, 0, "Mammoth", "Exalted Sons of Hodir", true, false, true, false, false},
- [61470]={"Grand Ice Mammoth", 61470, 43961, 1, 1, 0, "Mammoth", "Exalted Sons of Hodir", true, false, true, false, false},
- [61996]={"Blue Dragonhawk", 61996, 44843, 280, 280, 0, "DragonHawk", "Achievment", false, true, false, false, false},
- [61997]={"Red Dragonhawk", 61997, 44842, 280, 280, 0, "DragonHawk", "Achievment", false, true, false, false, false},
- [62048]={"Black Dragonhawk Mount", 62048, 44857, 280, 280, 0, "DragonHawk", "", true, false, false, false, false},
- [63232]={"Stormwind Steed", 63232, 45150, 1, 1, 0, "Horse", "Champion's Seals", true, false, false, false, false},
- [63635]={"Darkspear Raptor", 63635, 45593, 1, 1, 0, "Raptor", "", true, false, false, false, false},
- [63636]={"Ironforge Ram", 63636, 45586, 1, 1, 0, "Ram", "Champion's Seals", true, false, false, false, false},
- [63637]={"Darnassian Nightsaber", 63637, 45591, 1, 1, 0, "Saber", "Champion's Seals", true, false, false, false, false},
- [63638]={"Gnomeregan Mechanostrider", 63638, 45589, 1, 1, 0, "Mechanostrider", "Champion's Seals", true, false, false, false, false},
- [63639]={"Exodar Elekk", 63639, 45590, 1, 1, 0, "Elekk", "Champion's Seals", true, false, false, false, false},
- [63640]={"Orgrimmar Wolf", 63640, 45595, 1, 1, 0, "Wolf", "Champion's Seals", true, false, false, false, false},
- [63641]={"Thunder Bluff Kodo", 63641, 45592, 1, 1, 0, "Kodo", "Champion's Seals", true, false, false, false, false},
- [63642]={"Silvermoon Hawkstrider", 63642, 45596, 1, 1, 0, "Hawkstrider", "Champion's Seals", true, false, false, false, false},
- [63643]={"Forsaken Warhorse", 63643, 45597, 1, 1, 0, "Horse", "Champion's Seals", true, false, false, false, false},
- [63796]={"Mimiron's Head", 63796, 45693, 310, 310, 0, "Machine", "Drop Ulduar", false, true, false, false, false},
- [63844]={"Argent Hippogryph", 63844, 45725, 280, 280, 0, "Hippogryph", "Champion's Seals", false, true, false, false, false},
- [63956]={"Ironbound Proto-Drake", 63956, 45801, 310, 310, 0, "Proto-Drake", "Achievment", false, true, false, false, false},
- [63963]={"Rusted Proto-Drake", 63963, 45802, 310, 310, 0, "Proto-Drake", "Achievment", false, true, false, false, false},
- [64656]={"Blue Skeletal Warhorse", 64656, 46101, 1, 1, 0, "Horse", "", true, false, false, false, false},
- [64657]={"White Kodo", 64657, 46100, 60, 60, 0, "Kodo", "Gold", true, false, false, false, false},
- [64658]={"Black Wolf", 64658, 46099, 60, 60, 0, "Wolf", "Gold", true, false, false, false, false},
- [64659]={"Venomhide Ravasaur", 64659, 46102, 1, 1, 0, "Raptor", "Dailies Ungoro Crator", true, false, false, false, false},
- [64731]={"Sea Turtle", 64731, 46109, 0, 0, 1, "Turtle", "fishing", true, false, false, false, false},
- [64927]={"Deadly Gladiator's Frost Wyrm", 64927, 46708, 310, 310, 0, "Wyrm", "Gladiator", false, true, false, false, false},
- [64977]={"Black Skeletal Horse", 64977, 46308, 60, 60, 0, "DeadHorse", "Gold", true, false, false, false, false},
- [65439]={"Furious Gladiator's Frost Wyrm", 65439, 46171, 310, 310, 0, "Wyrm", "Gladiator", false, true, false, false, false},
- [65637]={"Great Red Elekk", 65637, 46756, 1, 1, 0, "Elekk", "Champion's Seals", true, false, false, false, false},
- [65638]={"Swift Moonsaber", 65638, 46744, 1, 1, 0, "Saber", "Champion's Seals", true, false, false, false, false},
- [65639]={"Swift Red Hawkstrider", 65639, 46751, 1, 1, 0, "Hawkstrider", "Champion's Seals", true, false, false, false, false},
- [65640]={"Swift Gray Steed", 65640, 46752, 1, 1, 0, "Horse", "Champion's Seals", true, false, false, false, false},
- [65641]={"Great Golden Kodo", 65641, 46755, 1, 1, 0, "Kodo", "Champion's Seals", true, false, false, false, false},
- [65642]={"Turbostrider", 65642, 46747, 1, 1, 0, "Mechanostrider", "Champion's Seals", true, false, false, false, false},
- [65643]={"Swift Violet Ram", 65643, 46748, 1, 1, 0, "Ram", "Champion's Seals", true, false, false, false, false},
- [65644]={"Swift Purple Raptor", 65644, 46743, 1, 1, 0, "Raptor", "Champion's Seals", true, false, false, false, false},
- [65645]={"White Skeletal Warhorse", 65645, 46764, 1, 1, 0, "Horse", "Champion's Seals", true, false, false, false, false},
- [65646]={"Swift Burgundy Wolf", 65646, 46757, 1, 1, 0, "Wolf", "Champion's Seals", true, false, false, false, false},
- [66087]={"Silver Covenant Hippogryph", 66087, 46813, 280, 280, 0, "Hippogryph", "Champion's Seals", false, true, false, false, false},
- [66088]={"Sunreaver Dragonhawk", 66088, 46814, 280, 280, 0, "DragonHawk", "Champion's Seals", false, true, false, false, false},
- [66090]={"Quel'dorei Steed", 66090, 46815, 1, 1, 0, "Horse", "Exalted Argent Tournament", true, false, false, false, false},
- [66091]={"Sunreaver Hawkstrider", 66091, 46816, 1, 1, 0, "Hawkstrider", "Champion's Seals", true, false, false, false, false},
- [66122]={"Magic Rooster", 66122, 46778, 1, 1, 0, "Rooster", "Duplicate", true, false, false, false, false},
- [66123]={"Magic Rooster", 66123, 49290, 1, 1, 0, "Rooster", "Duplicate", true, false, false, false, false},
- [66124]={"Magic Rooster", 66124, 198631, 1, 1, 0, "Rooster", "TCG", true, false, false, false, false},
- [66846]={"Ochre Skeletal Warhorse", 66846, 47101, 1, 1, 0, "DeadHorse", "Gold", true, false, false, false, false},
- [66847]={"Striped Dawnsaber", 66847, 47100, 60, 60, 0, "Saber", "Exalted Darnasses", true, false, false, false, false},
- [66906]={"Argent Charger", 66906, 47179, 1, 1, 0, "Horse", "Daily", true, false, false, false, false},
- [66907]={"Argent Warhorse", 66907, 66907, 60, 60, 0, "Horse", "", true, false, false, false, false},
- [67336]={"Relentless Gladiator's Frost Wyrm", 67336, 47840, 310, 310, 0, "Wyrm", "Gladiator", false, true, false, false, false},
- [67466]={"Argent Warhorse", 67466, 47180, 1, 1, 0, "Horse", "Exalted Argent Champion", true, false, false, false, false},
- [6860]={"Swift Horde Wolf", 6860, 4960, 1, 1, 0, "Wolf", "Drop Trial of the Champion", true, false, false, false, false},
- [68057]={"Swift Alliance Steed", 68057, 49044, 1, 1, 0, "Horse", "Champion's Seals", true, false, false, false, false},
- [68187]={"Crusader's White Warhorse", 68187, 4960, 1, 1, 0, "Horse", "Achievment", true, false, false, false, false},
- [68188]={"Crusader's Black Warhorse", 68188, 49098, 1, 1, 0, "Horse", "Achievment", true, false, false, false, false},
- [69395]={"Onyxian Drake", 69395, 49636, 310, 310, 0, "Drake", "Drop Onyxia'a Lair", false, true, false, false, false},
- [71342]={"X-45 Heartbreaker", 71342, 50250, 280, 60, 0, "Rocket", "Drop Valentines", true, false, false, false, false},
- [71810]={"Wrathful Gladiator's Frost Wyrm", 71810, 50435, 310, 310, 0, "Wyrm", "Gladiator", false, true, false, false, false},
- [72806]={"Invincible", 72806, 50818, 280, 280, 0, "Wyrm", "Drop Icecrown", false, true, false, false, false},
- [72807]={"Icebound Frostbrood Vanquisher", 72807, 51505, 310, 310, 0, "Wyrm", "Achievment", false, true, false, false, false},
- [72808]={"Bloodbathed Frostbrood Vanquisher", 72808, 51504, 310, 310, 0, "Wyrm", "Achievment", false, true, false, false, false},
- [73103]={"Crimson Deathcharger", 73103, 52200, 1, 1, 0, "DeadHorse", "Shadowmourn Quest", true, false, false, false, false},
- [74856]={"Blazing Hippogryph", 74856, 54069, 280, 280, 0, "Hippogryph", "TCG", false, true, false, false, false},
- [74918]={"Wooly White Rhino", 74918, 54068, 1, 1, 0, "Rhino", "Duplicate", true, false, false, false, false},
- [75596]={"Frosty Flying Carpet", 75596, 54797, 280, 280, 0, "Carpet", "Tailoring", false, true, false, false, false},
- [75614]={"Celestial Steed", 75614, 54811, 280, 280, 0, "Horse", "Store", false, true, false, false, false},
- [75973]={"X-53 Touring Rocket", 75973, 54860, 280, 280, 0, "Rocket", "Recruit a Friend", false, true, true, false, false},
- [348459]={"Reawakened Phase-Hunter", 348459, 184865, 1, 1, 0, "Warp Stalker", "Store", true, false, false, false, false},
- [372677]={"Kalu'ak Whalebone Glider", 372677, 192455, 280, 60, 0, "Glider", "Store", true, true, false, false, false},
- [387320]={"Blazing Hippogryph", 387320, 198630, 150, 150, 0, "Hippogryph", "TCG", false, true, false, false, false},
- [387310]={"Wooly White Rhino", 387310, 198633, 1, 1, 0, "Rhino", "TCG", true, false, false, false, false}
+ [458]= {
+ name="Brown Horse",
+ spellid=458,
+ mountid=nil,
+ itemid=5656,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Horse",
+ source="Exalted Stormwind",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [459]= {
+ name="Gray Wolf",
+ spellid=459,
+ mountid=nil,
+ itemid=1134,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Wolf",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [468]= {
+ name="White Stallion",
+ spellid=468,
+ mountid=nil,
+ itemid=2415,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Horse",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [470]= {
+ name="Black Stallion",
+ spellid=470,
+ mountid=nil,
+ itemid=2411,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Horse",
+ source="Exalted Stormwind",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [471]= {
+ name="Palamino",
+ spellid=471,
+ mountid=nil,
+ itemid=2413,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Horse",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [472]= {
+ name="Pinto",
+ spellid=472,
+ mountid=nil,
+ itemid=2414,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Horse",
+ source="Exalted Stormwind",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [578]= {
+ name="Black Wolf",
+ spellid=578,
+ mountid=nil,
+ itemid=1041,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Wolf",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [579]= {
+ name="Red Wolf",
+ spellid=579,
+ mountid=nil,
+ itemid=5663,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Wolf",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [580]= {
+ name="Timber Wolf",
+ spellid=580,
+ mountid=nil,
+ itemid=1132,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Wolf",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [581]= {
+ name="Winter Wolf",
+ spellid=581,
+ mountid=nil,
+ itemid=1133,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Wolf",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [3363]= {
+ name="Nether Drake",
+ spellid=3363,
+ mountid=nil,
+ itemid=21736,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Nether Drake",
+ source="",
+ attributes={
+ ground=true,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [5784]= {
+ name="Felsteed",
+ spellid=5784,
+ mountid=nil,
+ itemid=304,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Warlock",
+ source="Warlock",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [6648]= {
+ name="Chestnut Mare",
+ spellid=6648,
+ mountid=nil,
+ itemid=5655,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Horse",
+ source="Exalted Stormwind",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [6653]= {
+ name="Dire Wolf",
+ spellid=6653,
+ mountid=nil,
+ itemid=5665,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Wolf",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [6654]= {
+ name="Brown Wolf",
+ spellid=6654,
+ mountid=nil,
+ itemid=5668,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Wolf",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [6777]= {
+ name="Gray Ram",
+ spellid=6777,
+ mountid=nil,
+ itemid=5864,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Ram",
+ source="Exalted IronForge",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [6896]= {
+ name="Black Ram",
+ spellid=6896,
+ mountid=nil,
+ itemid=5874,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Ram",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [6897]= {
+ name="Blue Ram",
+ spellid=6897,
+ mountid=nil,
+ itemid=5875,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Ram",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [6898]= {
+ name="White Ram",
+ spellid=6898,
+ mountid=nil,
+ itemid=5873,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Ram",
+ source="Exalted IronForge",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [6899]= {
+ name="Brown Ram",
+ spellid=6899,
+ mountid=nil,
+ itemid=5872,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Ram",
+ source="Exalted IronForge",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [8394]= {
+ name="Striped Frostsaber",
+ spellid=8394,
+ mountid=nil,
+ itemid=8631,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Saber",
+ source="Exalted Darnasses",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [8395]= {
+ name="Emerald Raptor",
+ spellid=8395,
+ mountid=nil,
+ itemid=8588,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Raptor",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [8595]= {
+ name="Blue Mechanostrider",
+ spellid=8595,
+ mountid=nil,
+ itemid=28025,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [8980]= {
+ name="Skeletal Horse",
+ spellid=8980,
+ mountid=nil,
+ itemid=8583,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Horse",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [10789]= {
+ name="Spotted Frostsaber",
+ spellid=10789,
+ mountid=nil,
+ itemid=8632,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Saber",
+ source="Exalted Darnasses",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [10793]= {
+ name="Striped Nightsaber",
+ spellid=10793,
+ mountid=nil,
+ itemid=8629,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Saber",
+ source="Exalted Darnasses",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [10795]= {
+ name="Ivory Raptor",
+ spellid=10795,
+ mountid=nil,
+ itemid=49280,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Raptor",
+ source="TCG",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [10796]= {
+ name="Turquoise Raptor",
+ spellid=10796,
+ mountid=nil,
+ itemid=8591,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Raptor",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [10798]= {
+ name="Obsidian Raptor",
+ spellid=10798,
+ mountid=nil,
+ itemid=8590,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Raptor",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [10799]= {
+ name="Violet Raptor",
+ spellid=10799,
+ mountid=nil,
+ itemid=8592,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Raptor",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [10873]= {
+ name="Red Mechanostrider",
+ spellid=10873,
+ mountid=nil,
+ itemid=8563,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="Exalted Gnomeragan",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [10969]= {
+ name="Blue Mechanostrider",
+ spellid=10969,
+ mountid=nil,
+ itemid=8595,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="Duplicate",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [13819]= {
+ name="Warhorse",
+ spellid=13819,
+ mountid=nil,
+ itemid=9158,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Paladin",
+ source="Paladin",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [15779]= {
+ name="White Mechanostrider Mod B",
+ spellid=15779,
+ mountid=nil,
+ itemid=13326,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [15780]= {
+ name="Green Mechanostrider",
+ spellid=15780,
+ mountid=nil,
+ itemid=13310,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [15787]= {
+ name="Steel Mechanostrider",
+ spellid=15787,
+ mountid=nil,
+ itemid=10180,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [16055]= {
+ name="Black Nightsaber",
+ spellid=16055,
+ mountid=nil,
+ itemid=12303,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Saber",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [1660]= {
+ name="Ancient Frostsaber",
+ spellid=1660,
+ mountid=nil,
+ itemid=12302,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Saber",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [16058]= {
+ name="Primal Leopard",
+ spellid=16058,
+ mountid=nil,
+ itemid=12325,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Saber",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [16059]= {
+ name="Tawny Sabercat",
+ spellid=16059,
+ mountid=nil,
+ itemid=12326,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Saber",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [16060]= {
+ name="Golden Sabercat",
+ spellid=16060,
+ mountid=nil,
+ itemid=12327,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Saber",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [16080]= {
+ name="Red Wolf",
+ spellid=16080,
+ mountid=nil,
+ itemid=12330,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Wolf",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [16081]= {
+ name="Winter Wolf",
+ spellid=16081,
+ mountid=nil,
+ itemid=1133,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Wolf",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [16082]= {
+ name="Palomino",
+ spellid=16082,
+ mountid=nil,
+ itemid=12354,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [16083]= {
+ name="White Stallion",
+ spellid=16083,
+ mountid=nil,
+ itemid=12353,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Exalted Stormwind",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [16084]= {
+ name="Mottled Red Raptor",
+ spellid=16084,
+ mountid=nil,
+ itemid=8586,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Raptor",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [17229]= {
+ name="Winterspring Frostsaber",
+ spellid=17229,
+ mountid=nil,
+ itemid=1360,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Saber",
+ source="Exalted Winterspring Frostsaber",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [17450]= {
+ name="Ivory Raptor",
+ spellid=17450,
+ mountid=nil,
+ itemid=13107,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Raptor",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [17453]= {
+ name="Green Mechanostrider",
+ spellid=17453,
+ mountid=nil,
+ itemid=13310,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="Exalted Gnomeragan",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [17454]= {
+ name="Unpainted Mechanostrider",
+ spellid=17454,
+ mountid=nil,
+ itemid=13322,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="Exalted Gnomeragan",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [17455]= {
+ name="Purple Mechanostrider",
+ spellid=17455,
+ mountid=nil,
+ itemid=13323,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [17456]= {
+ name="Red and Blue Mechanostrider",
+ spellid=17456,
+ mountid=nil,
+ itemid=13324,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [17458]= {
+ name="Fluorescent Green Mechanostrider",
+ spellid=17458,
+ mountid=nil,
+ itemid=13325,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [17459]= {
+ name="Icy Blue Mechanostrider Mod A",
+ spellid=17459,
+ mountid=nil,
+ itemid=13327,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [17460]= {
+ name="Frost Ram",
+ spellid=17460,
+ mountid=nil,
+ itemid=13329,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Ram",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [17461]= {
+ name="Black Ram",
+ spellid=17461,
+ mountid=nil,
+ itemid=13328,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Ram",
+ source="Exalted IronForge",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [17462]= {
+ name="Red Skeletal Horse",
+ spellid=17462,
+ mountid=nil,
+ itemid=13310,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Horse",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [17463]= {
+ name="Blue Skeletal Horse",
+ spellid=17463,
+ mountid=nil,
+ itemid=46308,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="DeadHorse",
+ source="Duplicate",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [17464]= {
+ name="Brown Skeletal Horse",
+ spellid=17464,
+ mountid=nil,
+ itemid=13333,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Horse",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [17465]= {
+ name="Green Skeletal Warhorse",
+ spellid=17465,
+ mountid=nil,
+ itemid=13334,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [17481]= {
+ name="Rivendare's Deathcharger",
+ spellid=17481,
+ mountid=nil,
+ itemid=13335,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="DeadHorse",
+ source="Drop Stratholme",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [18363]= {
+ name="Riding Kodo",
+ spellid=18363,
+ mountid=nil,
+ itemid=14062,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Kodo",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [18989]= {
+ name="Gray Kodo",
+ spellid=18989,
+ mountid=nil,
+ itemid=15277,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Kodo",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [18990]= {
+ name="Brown Kodo",
+ spellid=18990,
+ mountid=nil,
+ itemid=15290,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Kodo",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [18991]= {
+ name="Green Kodo",
+ spellid=18991,
+ mountid=nil,
+ itemid=15292,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Kodo",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [18992]= {
+ name="Teal Kodo",
+ spellid=18992,
+ mountid=nil,
+ itemid=15293,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Kodo",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [22717]= {
+ name="Black War Steed",
+ spellid=22717,
+ mountid=nil,
+ itemid=29468,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Honor",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [22718]= {
+ name="Black War Kodo",
+ spellid=22718,
+ mountid=nil,
+ itemid=29466,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Kodo",
+ source="Honor",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [22719]= {
+ name="Black Battlestrider",
+ spellid=22719,
+ mountid=nil,
+ itemid=29465,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="Honor",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [22720]= {
+ name="Black War Ram",
+ spellid=22720,
+ mountid=nil,
+ itemid=29467,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Ram",
+ source="Honor",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [22721]= {
+ name="Black War Raptor",
+ spellid=22721,
+ mountid=nil,
+ itemid=29472,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Raptor",
+ source="Honor",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [22722]= {
+ name="Red Skeletal Warhorse",
+ spellid=22722,
+ mountid=nil,
+ itemid=29470,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Honor",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [22723]= {
+ name="Black War Tiger",
+ spellid=22723,
+ mountid=nil,
+ itemid=29471,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Saber",
+ source="Honor",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [22724]= {
+ name="Black War Wolf",
+ spellid=22724,
+ mountid=nil,
+ itemid=29469,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Wolf",
+ source="Honor",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23161]= {
+ name="Dreadsteed",
+ spellid=23161,
+ mountid=nil,
+ itemid=14505,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Warlock",
+ source="Warlock",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23214]= {
+ name="Charger",
+ spellid=23104,
+ mountid=nil,
+ itemid=14565,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Paladin",
+ source="Paladin",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23219]= {
+ name="Swift Mistsaber",
+ spellid=23219,
+ mountid=14555,
+ itemid=18767,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Saber",
+ source="Exalted Darnasses",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23220]= {
+ name="Swift Dawnsaber",
+ spellid=23220,
+ mountid=nil,
+ itemid=18768,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Saber",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23221]= {
+ name="Swift Frostsaber",
+ spellid=23221,
+ mountid=nil,
+ itemid=18766,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Saber",
+ source="Exalted Darnasses",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23222]= {
+ name="Swift Yellow Mechanostrider",
+ spellid=23222,
+ mountid=nil,
+ itemid=18774,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="Exalted Gnomeragan",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23223]= {
+ name="Swift White Mechanostrider",
+ spellid=23223,
+ mountid=nil,
+ itemid=18773,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="Exalted Gnomeragan",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23225]= {
+ name="Swift Green Mechanostrider",
+ spellid=23225,
+ mountid=nil,
+ itemid=18772,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="Exalted Gnomeragan",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23227]= {
+ name="Swift Palomino",
+ spellid=23227,
+ mountid=nil,
+ itemid=18776,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Exalted Stormwind",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23228]= {
+ name="Swift White Steed",
+ spellid=23228,
+ mountid=14560,
+ itemid=18778,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Exalted Stormwind",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23229]= {
+ name="Swift Brown Steed",
+ spellid=23229,
+ mountid=nil,
+ itemid=18777,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Exalted Stormwind",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23238]= {
+ name="Swift Brown Ram",
+ spellid=23238,
+ mountid=14546,
+ itemid=18786,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Ram",
+ source="Exalted IronForge",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23239]= {
+ name="Swift Gray Ram",
+ spellid=23239,
+ mountid=nil,
+ itemid=18787,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Ram",
+ source="Exalted IronForge",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23240]= {
+ name="Swift White Ram",
+ spellid=23240,
+ mountid=nil,
+ itemid=18785,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Ram",
+ source="Exalted IronForge",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23241]= {
+ name="Swift Blue Raptor",
+ spellid=23241,
+ mountid=nil,
+ itemid=18788,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Raptor",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23242]= {
+ name="Swift Olive Raptor",
+ spellid=23242,
+ mountid=nil,
+ itemid=18789,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Raptor",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23243]= {
+ name="Swift Orange Raptor",
+ spellid=23243,
+ mountid=nil,
+ itemid=18790,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Raptor",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23246]= {
+ name="Purple Skeletal Warhorse",
+ spellid=23246,
+ mountid=nil,
+ itemid=18791,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23247]= {
+ name="Great White Kodo",
+ spellid=23247,
+ mountid=nil,
+ itemid=18793,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Kodo",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23280]= {
+ name="Great Gray Kodo",
+ spellid=23280,
+ mountid=nil,
+ itemid=18795,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Kodo",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23249]= {
+ name="Great Brown Kodo",
+ spellid=23249,
+ mountid=nil,
+ itemid=18794,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Kodo",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23250]= {
+ name="Swift Brown Wolf",
+ spellid=23250,
+ mountid=nil,
+ itemid=18796,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Wolf",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23251]= {
+ name="Swift Timber Wolf",
+ spellid=23251,
+ mountid=nil,
+ itemid=18797,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Wolf",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23252]= {
+ name="Swift Gray Wolf",
+ spellid=23252,
+ mountid=nil,
+ itemid=18798,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Wolf",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23338]= {
+ name="Swift Stormsaber",
+ spellid=23338,
+ mountid=nil,
+ itemid=18902,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Saber",
+ source="Exalted Darnasses",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23509]= {
+ name="Frostwolf Howler",
+ spellid=23509,
+ mountid=nil,
+ itemid=19029,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Wolf",
+ source="Honor",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [23510]= {
+ name="Stormpike Battle Charger",
+ spellid=23510,
+ mountid=14745,
+ itemid=19030,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Ram",
+ source="Honor",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [24242]= {
+ name="Swift Razzashi Raptor",
+ spellid=24242,
+ mountid=nil,
+ itemid=19872,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Raptor",
+ source="Drop ZG",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [24252]= {
+ name="Swift Zulian Tiger",
+ spellid=24252,
+ mountid=nil,
+ itemid=19902,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Saber",
+ source="Drop ZG",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [25953]= {
+ name="Blue Qiraji Battle Tank",
+ spellid=25953,
+ mountid=nil,
+ itemid=21280,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Bug",
+ source="Drop, AQ40",
+ attributes={
+ ground=false,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=true
+ }
+ },
+ [26054]= {
+ name="Red Qiraji Battle Tank",
+ spellid=26054,
+ mountid=nil,
+ itemid=21310,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Bug",
+ source="Drop AQ40",
+ attributes={
+ ground=false,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=true
+ }
+ },
+ [26055]= {
+ name="Yellow Qiraji Battle Tank",
+ spellid=26055,
+ mountid=nil,
+ itemid=21324,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Bug",
+ source="Drop AQ40",
+ attributes={
+ ground=false,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=true
+ }
+ },
+ [26056]= {
+ name="Green Qiraji Battle Tank",
+ spellid=26056,
+ mountid=nil,
+ itemid=21323,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Bug",
+ source="Drop AQ40",
+ attributes={
+ ground=false,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=true
+ }
+ },
+ [26656]= {
+ name="Black Qiraji Battle Tank",
+ spellid=26656,
+ mountid=nil,
+ itemid=21176,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Bug",
+ source="",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=true
+ }
+ },
+ [28025]= {
+ name="Nether Drake",
+ spellid=28025,
+ mountid=nil,
+ itemid=21736,
+ maxspeed=3,
+ minspeed=3,
+ swimspeed=0,
+ category="Nether Drake",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [29059]= {
+ name="Naxxramas Deathcharger",
+ spellid=29059,
+ mountid=nil,
+ itemid=23193,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="DeadHorse",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [31074]= {
+ name="Riding Turtle",
+ spellid=31074,
+ mountid=nil,
+ itemid=23720,
+ maxspeed=0,
+ minspeed=0,
+ swimspeed=1,
+ category="Turtle",
+ source="TCG",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32235]= {
+ name="Golden Gryphon",
+ spellid=32235,
+ mountid=nil,
+ itemid=25470,
+ maxspeed=150,
+ minspeed=150,
+ swimspeed=0,
+ category="Gryphon",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32239]= {
+ name="Ebon Gryphon",
+ spellid=32239,
+ mountid=nil,
+ itemid=25471,
+ maxspeed=150,
+ minspeed=150,
+ swimspeed=0,
+ category="Gryphon",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32240]= {
+ name="Snowy Gryphon",
+ spellid=32240,
+ mountid=nil,
+ itemid=25472,
+ maxspeed=150,
+ minspeed=150,
+ swimspeed=0,
+ category="Gryphon",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32242]= {
+ name="Swift Blue Gryphon",
+ spellid=32242,
+ mountid=nil,
+ itemid=25473,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Gryphon",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32243]= {
+ name="Tawny Wind Rider",
+ spellid=32243,
+ mountid=nil,
+ itemid=25474,
+ maxspeed=150,
+ minspeed=150,
+ swimspeed=0,
+ category="Wind Rider",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32244]= {
+ name="Blue Wind Rider",
+ spellid=32244,
+ mountid=nil,
+ itemid=25475,
+ maxspeed=150,
+ minspeed=150,
+ swimspeed=0,
+ category="Wind Rider",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32245]= {
+ name="Green Wind Rider",
+ spellid=32245,
+ mountid=nil,
+ itemid=25476,
+ maxspeed=150,
+ minspeed=150,
+ swimspeed=0,
+ category="Wind Rider",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32246]= {
+ name="Swift Red Wind Rider",
+ spellid=32246,
+ mountid=nil,
+ itemid=25477,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Wind Rider",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32289]= {
+ name="Swift Red Gryphon",
+ spellid=32289,
+ mountid=nil,
+ itemid=25527,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Gryphon",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32290]= {
+ name="Swift Green Gryphon",
+ spellid=32290,
+ mountid=nil,
+ itemid=25528,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Gryphon",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32292]= {
+ name="Swift Purple Gryphon",
+ spellid=32292,
+ mountid=nil,
+ itemid=25529,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Gryphon",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32295]= {
+ name="Swift Green Wind Rider",
+ spellid=32295,
+ mountid=nil,
+ itemid=25531,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Wind Rider",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32296]= {
+ name="Swift Yellow Wind Rider",
+ spellid=32296,
+ mountid=nil,
+ itemid=25532,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Wind Rider",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32297]= {
+ name="Swift Purple Wind Rider",
+ spellid=32297,
+ mountid=nil,
+ itemid=25533,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Wind Rider",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32345]= {
+ name="Peep the Phoenix Mount",
+ spellid=32345,
+ mountid=nil,
+ itemid=25596,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Phoenix",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [32420]= {
+ name="Old Crappy McWeakSauce",
+ spellid=32420,
+ mountid=nil,
+ itemid=25664,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Wind Rider",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [33630]= {
+ name="Blue Mechanostrider",
+ spellid=33630,
+ mountid=nil,
+ itemid=8595,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="Exalted Gnomeragan",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [33660]= {
+ name="Swift Pink Hawkstrider",
+ spellid=33660,
+ mountid=nil,
+ itemid=28936,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Hawkstrider",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [34406]= {
+ name="Brown Elekk",
+ spellid=34406,
+ mountid=nil,
+ itemid=28481,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Elekk",
+ source="Exalted Exodar",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [34407]= {
+ name="Great Elite Elekk",
+ spellid=34407,
+ mountid=nil,
+ itemid=28482,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Elekk",
+ source="Exalted Exodar",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [34767]= {
+ name="Summon Charger",
+ spellid=34767,
+ mountid=nil,
+ itemid=0,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Paladin",
+ source="Duplicate",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [34769]= {
+ name="Summon Warhorse",
+ spellid=34769,
+ mountid=nil,
+ itemid=0,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Paladin",
+ source="Duplicate",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [34790]= {
+ name="Dark War Talbuk",
+ spellid=34790,
+ mountid=nil,
+ itemid=29280,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Talbuk",
+ source="Hala tokens",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [34795]= {
+ name="Red Hawkstrider",
+ spellid=34795,
+ mountid=nil,
+ itemid=28927,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Hawkstrider",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [34896]= {
+ name="Cobalt War Talbuk",
+ spellid=34896,
+ mountid=nil,
+ itemid=29227,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Talbuk",
+ source="Exalted Kurenai",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [34897]= {
+ name="White War Talbuk",
+ spellid=34897,
+ mountid=nil,
+ itemid=29231,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Talbuk",
+ source="Exalted Kurenai",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [34898]= {
+ name="Silver War Talbuk",
+ spellid=34898,
+ mountid=nil,
+ itemid=29229,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Talbuk",
+ source="Exalted Kurenai",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [34899]= {
+ name="Tan War Talbuk",
+ spellid=34899,
+ mountid=nil,
+ itemid=29230,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Talbuk",
+ source="Exalted Kurenai",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [35018]= {
+ name="Purple Hawkstrider",
+ spellid=35018,
+ mountid=nil,
+ itemid=29222,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Hawkstrider",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [35020]= {
+ name="Blue Hawkstrider",
+ spellid=35020,
+ mountid=nil,
+ itemid=29220,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Hawkstrider",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [35022]= {
+ name="Black Hawkstrider",
+ spellid=35022,
+ mountid=nil,
+ itemid=29221,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Hawkstrider",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [35025]= {
+ name="Swift Green Hawkstrider",
+ spellid=35025,
+ mountid=nil,
+ itemid=29223,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Hawkstrider",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [35027]= {
+ name="Swift Purple Hawkstrider",
+ spellid=35027,
+ mountid=nil,
+ itemid=29224,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Hawkstrider",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [35028]= {
+ name="Swift Warstrider",
+ spellid=35028,
+ mountid=nil,
+ itemid=31029,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Hawkstrider",
+ source="Honor",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [35710]= {
+ name="Gray Elekk",
+ spellid=35710,
+ mountid=nil,
+ itemid=29744,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Elekk",
+ source="Exalted Exodar",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [35711]= {
+ name="Purple Elekk",
+ spellid=35711,
+ mountid=nil,
+ itemid=29743,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Elekk",
+ source="Exalted Exodar",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [35712]= {
+ name="Great Green Elekk",
+ spellid=35712,
+ mountid=nil,
+ itemid=29746,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Elekk",
+ source="Exalted Exodar",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [35713]= {
+ name="Great Blue Elekk",
+ spellid=35713,
+ mountid=nil,
+ itemid=29745,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Elekk",
+ source="Exalted Exodar",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [35714]= {
+ name="Great Purple Elekk",
+ spellid=35714,
+ mountid=nil,
+ itemid=29747,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Elekk",
+ source="Exalted Exodar",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [36702]= {
+ name="Fiery Warhorse",
+ spellid=36702,
+ mountid=nil,
+ itemid=30480,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Drop Kara",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [37015]= {
+ name="Swift Nether Drake",
+ spellid=37015,
+ mountid=nil,
+ itemid=30609,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Nether Drake",
+ source="Gladiator",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [39315]= {
+ name="Cobalt Riding Talbuk",
+ spellid=39315,
+ mountid=nil,
+ itemid=31830,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Talbuk",
+ source="Exalted Kurenai",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [39316]= {
+ name="Dark Riding Talbuk",
+ spellid=39316,
+ mountid=nil,
+ itemid=28915,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Talbuk",
+ source="Hala tokens",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [39317]= {
+ name="Silver Riding Talbuk",
+ spellid=39317,
+ mountid=nil,
+ itemid=31832,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Talbuk",
+ source="Exalted Kurenai",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [39318]= {
+ name="Tan Riding Talbuk",
+ spellid=39318,
+ mountid=nil,
+ itemid=31834,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Talbuk",
+ source="Exalted Kurenai",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [39319]= {
+ name="White Riding Talbuk",
+ spellid=39319,
+ mountid=nil,
+ itemid=31836,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Talbuk",
+ source="Exalted Kurenai",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [39798]= {
+ name="Green Riding Nether Ray",
+ spellid=39798,
+ mountid=nil,
+ itemid=32314,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Nether Ray",
+ source="Exalted Skyguard",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [39800]= {
+ name="Red Riding Nether Ray",
+ spellid=39800,
+ mountid=nil,
+ itemid=32317,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Nether Ray",
+ source="Exalted Skyguard",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [39801]= {
+ name="Purple Riding Nether Ray",
+ spellid=39801,
+ mountid=nil,
+ itemid=32316,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Nether Ray",
+ source="Exalted Skyguard",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [39802]= {
+ name="Silver Riding Nether Ray",
+ spellid=39802,
+ mountid=nil,
+ itemid=32318,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Nether Ray",
+ source="Exalted Skyguard",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [39803]= {
+ name="Blue Riding Nether Ray",
+ spellid=39803,
+ mountid=nil,
+ itemid=32319,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Nether Ray",
+ source="Exalted Skyguard",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [40192]= {
+ name="Ashes of Al'ar",
+ spellid=40192,
+ mountid=nil,
+ itemid=32458,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Phoenix",
+ source="Drop Tempest Keep",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [41502]= {
+ name="Raven Lord",
+ spellid=41502,
+ mountid=nil,
+ itemid=32768,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Raven",
+ source="Drop Sethekk Halls",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [41513]= {
+ name="Onyx Netherwing Drake",
+ spellid=41513,
+ mountid=nil,
+ itemid=32857,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Nether Drake",
+ source="Exalted Netherwing",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [41514]= {
+ name="Azure Netherwing Drake",
+ spellid=41514,
+ mountid=nil,
+ itemid=32858,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Nether Drake",
+ source="Exalted Netherwing",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [41515]= {
+ name="Cobalt Netherwing Drake",
+ spellid=41515,
+ mountid=nil,
+ itemid=32859,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Nether Drake",
+ source="Exalted Netherwing",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [41516]= {
+ name="Purple Netherwing Drake",
+ spellid=41516,
+ mountid=nil,
+ itemid=32860,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Nether Drake",
+ source="Exalted Netherwing",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [41517]= {
+ name="Veridian Netherwing Drake",
+ spellid=41517,
+ mountid=nil,
+ itemid=32861,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Nether Drake",
+ source="Exalted Netherwing",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [41518]= {
+ name="Violet Netherwing Drake",
+ spellid=41518,
+ mountid=nil,
+ itemid=32862,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Nether Drake",
+ source="Exalted Netherwing",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [42776]= {
+ name="Spectral Tiger",
+ spellid=42776,
+ mountid=nil,
+ itemid=49283,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Saber",
+ source="TCG",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [42777]= {
+ name="Swift Spectral Tiger",
+ spellid=42777,
+ mountid=nil,
+ itemid=49284,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Saber",
+ source="TCG",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [43688]= {
+ name="Amani War Bear",
+ spellid=43688,
+ mountid=nil,
+ itemid=33809,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Bear",
+ source="ZA",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [43100]= {
+ name="Frost Wyrm",
+ spellid=43100,
+ mountid=nil,
+ itemid=0,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Wyrm",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [43899]= {
+ name="Brewfest Ram",
+ spellid=43899,
+ mountid=nil,
+ itemid=33976,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Ram",
+ source="Duplicate",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [43900]= {
+ name="Swift Brewfest Ram",
+ spellid=43900,
+ mountid=nil,
+ itemid=33977,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Ram",
+ source="Drop Brewfest",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [43927]= {
+ name="Cenarion War Hippogryph",
+ spellid=43927,
+ mountid=nil,
+ itemid=33999,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Hippogryph",
+ source="Exalted Cenarion Expedition",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [44151]= {
+ name="Turbo-Charged Flying Machine",
+ spellid=44151,
+ mountid=nil,
+ itemid=34061,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Machine",
+ source="Engineering",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [44153]= {
+ name="Flying Machine",
+ spellid=44153,
+ mountid=nil,
+ itemid=34060,
+ maxspeed=150,
+ minspeed=150,
+ swimspeed=0,
+ category="Machine",
+ source="Engineering",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [44317]= {
+ name="Merciless Nether Drake",
+ spellid=44317,
+ mountid=nil,
+ itemid=34092,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Nether Drake",
+ source="Gladiator",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [44744]= {
+ name="Merciless Nether Drake",
+ spellid=44744,
+ mountid=nil,
+ itemid=34092,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Nether Drake",
+ source="Gladiator",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [46197]= {
+ name="X-51 Nether-Rocket",
+ spellid=46197,
+ mountid=nil,
+ itemid=198629,
+ maxspeed=150,
+ minspeed=150,
+ swimspeed=0,
+ category="Rocket",
+ source="TCG",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [46199]= {
+ name="X-51 Nether-Rocket X-TREME",
+ spellid=46199,
+ mountid=nil,
+ itemid=198628,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Rocket",
+ source="TCG",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [46628]= {
+ name="Swift White Hawkstrider",
+ spellid=46628,
+ mountid=nil,
+ itemid=35513,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Hawkstrider",
+ source="Drop Magisters' Terrace",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [47037]= {
+ name="Swift War Elekk",
+ spellid=47037,
+ mountid=nil,
+ itemid=26439,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Elekk",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [48025]= {
+ name="Headless Horseman's Mount",
+ spellid=48025,
+ mountid=nil,
+ itemid=37012,
+ maxspeed=280,
+ minspeed=60,
+ swimspeed=0,
+ category="Horse",
+ source="Drop, Halloween",
+ attributes={
+ ground=true,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [48027]= {
+ name="Black War Elekk",
+ spellid=48027,
+ mountid=nil,
+ itemid=35906,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Elekk",
+ source="Honor",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [48778]= {
+ name="Acherus Deathcharger",
+ spellid=48778,
+ mountid=nil,
+ itemid=28302,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="DeathKnight",
+ source="DeathKnight",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [48954]= {
+ name="Swift Zhevra",
+ spellid=48954,
+ mountid=nil,
+ itemid=37598,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Recruit a Friend",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [49193]= {
+ name="Vengeful Nether Drake",
+ spellid=49193,
+ mountid=nil,
+ itemid=37676,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Nether Drake",
+ source="Gladiator",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [49322]= {
+ name="Swift Zhevra",
+ spellid=49322,
+ mountid=nil,
+ itemid=37719,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Recruit a Friend",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [49378]= {
+ name="Brewfest Riding Kodo",
+ spellid=49378,
+ mountid=nil,
+ itemid=37827,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Kodo",
+ source="Duplicate",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [49379]= {
+ name="Great Brewfest Kodo",
+ spellid=49379,
+ mountid=nil,
+ itemid=37828,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Kodo",
+ source="Drop Brewfest",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [5609]= {
+ name="Brewfest Kodo",
+ spellid=5609,
+ mountid=nil,
+ itemid=37827,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Kodo",
+ source="Duplicate",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [50870]= {
+ name="Brewfest Ram",
+ spellid=50870,
+ mountid=nil,
+ itemid=33976,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Ram",
+ source="Duplicate",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [51412]= {
+ name="Big Battle Bear",
+ spellid=51412,
+ mountid=nil,
+ itemid=198632,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Bear",
+ source="TCG",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [51960]= {
+ name="Frost Wyrm Mount",
+ spellid=51960,
+ mountid=nil,
+ itemid=38690,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Wyrm",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [54729]= {
+ name="Winged Steed of the Ebon Blade",
+ spellid=54729,
+ mountid=nil,
+ itemid=40775,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Wyrm",
+ source="DeathKnight",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [54753]= {
+ name="White Polar Bear",
+ spellid=54753,
+ mountid=nil,
+ itemid=43962,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Bear",
+ source="Daily Storm Peaks",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [55531]= {
+ name="Mechano-hog",
+ spellid=55531,
+ mountid=nil,
+ itemid=41508,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Machine",
+ source="Engineering",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=true,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [58615]= {
+ name="Brutal Nether Drake",
+ spellid=58615,
+ mountid=nil,
+ itemid=43106,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Nether Drake",
+ source="Gladiator",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [58983]= {
+ name="Big Blizzard Bear",
+ spellid=58983,
+ mountid=nil,
+ itemid=43599,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Bear",
+ source="TCG",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59567]= {
+ name="Azure Drake",
+ spellid=59567,
+ mountid=nil,
+ itemid=43952,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Drake",
+ source="Drop Eye of Eternity",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59568]= {
+ name="Blue Drake",
+ spellid=59568,
+ mountid=nil,
+ itemid=43953,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Drake",
+ source="Drop, The Eye of Eternity",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59569]= {
+ name="Bronze Drake",
+ spellid=59569,
+ mountid=nil,
+ itemid=43951,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Drake",
+ source="Drop The Culling of Stratholme",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59570]= {
+ name="Red Drake",
+ spellid=59570,
+ mountid=nil,
+ itemid=43955,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Drake",
+ source="Exalted, Wyrmrest Accord",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59571]= {
+ name="Twilight Drake",
+ spellid=59571,
+ mountid=nil,
+ itemid=43954,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Drake",
+ source="Drop, The Obsidian Sanctum",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59572]= {
+ name="Black Polar Bear",
+ spellid=59572,
+ mountid=nil,
+ itemid=43964,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Bear",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59573]= {
+ name="Brown Polar Bear",
+ spellid=59573,
+ mountid=nil,
+ itemid=43963,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Bear",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59650]= {
+ name="Black Drake",
+ spellid=59650,
+ mountid=nil,
+ itemid=43986,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Drake",
+ source="Drop, The Obsidian Sanctum",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59785]= {
+ name="Black War Mammoth",
+ spellid=59785,
+ mountid=nil,
+ itemid=43956,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="Stone Keeper's Shard",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59788]= {
+ name="Black War Mammoth",
+ spellid=59788,
+ mountid=nil,
+ itemid=44077,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="Stone Keeper's Shard",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59791]= {
+ name="Wooly Mammoth",
+ spellid=59791,
+ mountid=nil,
+ itemid=44230,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="Embelm of Heroism",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59793]= {
+ name="Wooly Mammoth",
+ spellid=59793,
+ mountid=nil,
+ itemid=44231,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="Embelm of Heroism",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59797]= {
+ name="Ice Mammoth",
+ spellid=59797,
+ mountid=nil,
+ itemid=43958,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="Revered Sons of Hodir",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59799]= {
+ name="Ice Mammoth",
+ spellid=59799,
+ mountid=nil,
+ itemid=44080,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="Revered Sons of Hodir",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59802]= {
+ name="Grand Ice Mammoth",
+ spellid=59802,
+ mountid=nil,
+ itemid=44086,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=true,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59804]= {
+ name="Grand Ice Mammoth",
+ spellid=59804,
+ mountid=nil,
+ itemid=43961,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=true,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59961]= {
+ name="Red Proto-Drake",
+ spellid=59961,
+ mountid=nil,
+ itemid=44160,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Proto-Drake",
+ source="Achievment",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59976]= {
+ name="Black Proto-Drake",
+ spellid=59976,
+ mountid=nil,
+ itemid=44164,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Proto-Drake",
+ source="Achievment",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [59996]= {
+ name="Blue Proto-Drake",
+ spellid=59996,
+ mountid=nil,
+ itemid=44151,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Proto-Drake",
+ source="Drop, Skadi the Ruthless",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [60002]= {
+ name="Time-Lost Proto-Drake",
+ spellid=60002,
+ mountid=nil,
+ itemid=44168,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Proto-Drake",
+ source="Drop Rare",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [60021]= {
+ name="Plagued Proto-Drake",
+ spellid=60021,
+ mountid=nil,
+ itemid=44150,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Proto-Drake",
+ source="Achievment",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [60024]= {
+ name="Violet Proto-Drake",
+ spellid=60024,
+ mountid=nil,
+ itemid=44177,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Proto-Drake",
+ source="Achievment",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [60025]= {
+ name="Albino Drake",
+ spellid=60025,
+ mountid=nil,
+ itemid=44178,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Drake",
+ source="Achievment",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [60114]= {
+ name="Armored Brown Bear",
+ spellid=60114,
+ mountid=nil,
+ itemid=44225,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Bear",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [60116]= {
+ name="Armored Brown Bear",
+ spellid=60116,
+ mountid=nil,
+ itemid=44226,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Bear",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [60118]= {
+ name="Black War Bear",
+ spellid=60118,
+ mountid=nil,
+ itemid=44223,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Bear",
+ source="Achievment",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [60119]= {
+ name="Black War Bear",
+ spellid=60119,
+ mountid=nil,
+ itemid=44224,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Bear",
+ source="Achievment",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [60136]= {
+ name="Grand Caravan Mammoth",
+ spellid=60136,
+ mountid=nil,
+ itemid=32212,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [60140]= {
+ name="Grand Caravan Mammoth",
+ spellid=60140,
+ mountid=nil,
+ itemid=32213,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [60424]= {
+ name="Mekgineer's Chopper",
+ spellid=60424,
+ mountid=nil,
+ itemid=44413,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Machine",
+ source="Engineering",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=true,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [61229]= {
+ name="Armored Snowy Gryphon",
+ spellid=61229,
+ mountid=nil,
+ itemid=44689,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Gryphon",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [61230]= {
+ name="Armored Blue Wind Rider",
+ spellid=61230,
+ mountid=nil,
+ itemid=44690,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Wind Rider",
+ source="Gold",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [61294]= {
+ name="Green Proto-Drake",
+ spellid=61294,
+ mountid=nil,
+ itemid=44707,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Proto-Drake",
+ source="Revered Oracles, Mysterious Egg",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [61309]= {
+ name="Magnificent Flying Carpet",
+ spellid=61309,
+ mountid=nil,
+ itemid=44558,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Carpet",
+ source="Tailoring",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [61425]= {
+ name="Traveler's Tundra Mammoth",
+ spellid=61425,
+ mountid=nil,
+ itemid=44234,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=true,
+ vendor=true,
+ swimming=false
+ }
+ },
+ [61442]= {
+ name="Swift Mooncloth Carpet",
+ spellid=61442,
+ mountid=nil,
+ itemid=44555,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Carpet",
+ source="Tailoring",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [61444]= {
+ name="Swift Shadoweave Carpet",
+ spellid=61444,
+ mountid=nil,
+ itemid=44557,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Carpet",
+ source="Tailoring",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [61446]= {
+ name="Swift Spellfire Carpet",
+ spellid=61446,
+ mountid=nil,
+ itemid=44556,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Carpet",
+ source="Tailoring",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [61447]= {
+ name="Traveler's Tundra Mammoth",
+ spellid=61447,
+ mountid=nil,
+ itemid=44235,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=true,
+ vendor=true,
+ swimming=false
+ }
+ },
+ [61451]= {
+ name="Flying Carpet",
+ spellid=61451,
+ mountid=nil,
+ itemid=44554,
+ maxspeed=150,
+ minspeed=150,
+ swimspeed=0,
+ category="Carpet",
+ source="Tailoring",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [61465]= {
+ name="Grand Black War Mammoth",
+ spellid=61465,
+ mountid=nil,
+ itemid=43959,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="Drop Vault",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=true,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [61467]= {
+ name="Grand Black War Mammoth",
+ spellid=61467,
+ mountid=nil,
+ itemid=44083,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="Drop Vault",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=true,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [61469]= {
+ name="Grand Ice Mammoth",
+ spellid=61469,
+ mountid=nil,
+ itemid=44086,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="Exalted Sons of Hodir",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=true,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [61470]= {
+ name="Grand Ice Mammoth",
+ spellid=61470,
+ mountid=nil,
+ itemid=43961,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mammoth",
+ source="Exalted Sons of Hodir",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=true,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [61996]= {
+ name="Blue Dragonhawk",
+ spellid=61996,
+ mountid=nil,
+ itemid=44843,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="DragonHawk",
+ source="Achievment",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [61997]= {
+ name="Red Dragonhawk",
+ spellid=61997,
+ mountid=nil,
+ itemid=44842,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="DragonHawk",
+ source="Achievment",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [62048]= {
+ name="Black Dragonhawk Mount",
+ spellid=62048,
+ mountid=nil,
+ itemid=44857,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="DragonHawk",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [63232]= {
+ name="Stormwind Steed",
+ spellid=63232,
+ mountid=nil,
+ itemid=45150,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [63635]= {
+ name="Darkspear Raptor",
+ spellid=63635,
+ mountid=nil,
+ itemid=45593,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Raptor",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [63636]= {
+ name="Ironforge Ram",
+ spellid=63636,
+ mountid=nil,
+ itemid=45586,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Ram",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [63637]= {
+ name="Darnassian Nightsaber",
+ spellid=63637,
+ mountid=nil,
+ itemid=45591,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Saber",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [63638]= {
+ name="Gnomeregan Mechanostrider",
+ spellid=63638,
+ mountid=nil,
+ itemid=45589,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [63639]= {
+ name="Exodar Elekk",
+ spellid=63639,
+ mountid=nil,
+ itemid=45590,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Elekk",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [63640]= {
+ name="Orgrimmar Wolf",
+ spellid=63640,
+ mountid=nil,
+ itemid=45595,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Wolf",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [63641]= {
+ name="Thunder Bluff Kodo",
+ spellid=63641,
+ mountid=nil,
+ itemid=45592,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Kodo",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [63642]= {
+ name="Silvermoon Hawkstrider",
+ spellid=63642,
+ mountid=nil,
+ itemid=45596,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Hawkstrider",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [63643]= {
+ name="Forsaken Warhorse",
+ spellid=63643,
+ mountid=nil,
+ itemid=45597,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [63796]= {
+ name="Mimiron's Head",
+ spellid=63796,
+ mountid=nil,
+ itemid=45693,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Machine",
+ source="Drop Ulduar",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [63844]= {
+ name="Argent Hippogryph",
+ spellid=63844,
+ mountid=nil,
+ itemid=45725,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Hippogryph",
+ source="Champion's Seals",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [63956]= {
+ name="Ironbound Proto-Drake",
+ spellid=63956,
+ mountid=nil,
+ itemid=45801,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Proto-Drake",
+ source="Achievment",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [63963]= {
+ name="Rusted Proto-Drake",
+ spellid=63963,
+ mountid=nil,
+ itemid=45802,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Proto-Drake",
+ source="Achievment",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [64656]= {
+ name="Blue Skeletal Warhorse",
+ spellid=64656,
+ mountid=nil,
+ itemid=46101,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [64657]= {
+ name="White Kodo",
+ spellid=64657,
+ mountid=nil,
+ itemid=46100,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Kodo",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [64658]= {
+ name="Black Wolf",
+ spellid=64658,
+ mountid=nil,
+ itemid=46099,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Wolf",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [64659]= {
+ name="Venomhide Ravasaur",
+ spellid=64659,
+ mountid=nil,
+ itemid=46102,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Raptor",
+ source="Dailies Ungoro Crator",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [64731]= {
+ name="Sea Turtle",
+ spellid=64731,
+ mountid=nil,
+ itemid=46109,
+ maxspeed=0,
+ minspeed=0,
+ swimspeed=1,
+ category="Turtle",
+ source="fishing",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [64927]= {
+ name="Deadly Gladiator's Frost Wyrm",
+ spellid=64927,
+ mountid=nil,
+ itemid=46708,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Wyrm",
+ source="Gladiator",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [64977]= {
+ name="Black Skeletal Horse",
+ spellid=64977,
+ mountid=nil,
+ itemid=46308,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="DeadHorse",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [65439]= {
+ name="Furious Gladiator's Frost Wyrm",
+ spellid=65439,
+ mountid=nil,
+ itemid=46171,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Wyrm",
+ source="Gladiator",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [65637]= {
+ name="Great Red Elekk",
+ spellid=65637,
+ mountid=nil,
+ itemid=46756,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Elekk",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [65638]= {
+ name="Swift Moonsaber",
+ spellid=65638,
+ mountid=nil,
+ itemid=46744,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Saber",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [65639]= {
+ name="Swift Red Hawkstrider",
+ spellid=65639,
+ mountid=nil,
+ itemid=46751,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Hawkstrider",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [65640]= {
+ name="Swift Gray Steed",
+ spellid=65640,
+ mountid=nil,
+ itemid=46752,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [65641]= {
+ name="Great Golden Kodo",
+ spellid=65641,
+ mountid=nil,
+ itemid=46755,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Kodo",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [65642]= {
+ name="Turbostrider",
+ spellid=65642,
+ mountid=nil,
+ itemid=46747,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Mechanostrider",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [65643]= {
+ name="Swift Violet Ram",
+ spellid=65643,
+ mountid=nil,
+ itemid=46748,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Ram",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [65644]= {
+ name="Swift Purple Raptor",
+ spellid=65644,
+ mountid=nil,
+ itemid=46743,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Raptor",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [65645]= {
+ name="White Skeletal Warhorse",
+ spellid=65645,
+ mountid=nil,
+ itemid=46764,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [65646]= {
+ name="Swift Burgundy Wolf",
+ spellid=65646,
+ mountid=nil,
+ itemid=46757,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Wolf",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [66087]= {
+ name="Silver Covenant Hippogryph",
+ spellid=66087,
+ mountid=nil,
+ itemid=46813,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Hippogryph",
+ source="Champion's Seals",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [66088]= {
+ name="Sunreaver Dragonhawk",
+ spellid=66088,
+ mountid=nil,
+ itemid=46814,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="DragonHawk",
+ source="Champion's Seals",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [66090]= {
+ name="Quel'dorei Steed",
+ spellid=66090,
+ mountid=nil,
+ itemid=46815,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Exalted Argent Tournament",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [66091]= {
+ name="Sunreaver Hawkstrider",
+ spellid=66091,
+ mountid=nil,
+ itemid=46816,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Hawkstrider",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [66122]= {
+ name="Magic Rooster",
+ spellid=66122,
+ mountid=nil,
+ itemid=46778,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Rooster",
+ source="Duplicate",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [66123]= {
+ name="Magic Rooster",
+ spellid=66123,
+ mountid=nil,
+ itemid=49290,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Rooster",
+ source="Duplicate",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [66124]= {
+ name="Magic Rooster",
+ spellid=66124,
+ mountid=nil,
+ itemid=198631,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Rooster",
+ source="TCG",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [66846]= {
+ name="Ochre Skeletal Warhorse",
+ spellid=66846,
+ mountid=nil,
+ itemid=47101,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="DeadHorse",
+ source="Gold",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [66847]= {
+ name="Striped Dawnsaber",
+ spellid=66847,
+ mountid=nil,
+ itemid=47100,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Saber",
+ source="Exalted Darnasses",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [66906]= {
+ name="Argent Charger",
+ spellid=66906,
+ mountid=nil,
+ itemid=47179,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Daily",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [66907]= {
+ name="Argent Warhorse",
+ spellid=66907,
+ mountid=nil,
+ itemid=66907,
+ maxspeed=60,
+ minspeed=60,
+ swimspeed=0,
+ category="Horse",
+ source="",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [67336]= {
+ name="Relentless Gladiator's Frost Wyrm",
+ spellid=67336,
+ mountid=nil,
+ itemid=47840,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Wyrm",
+ source="Gladiator",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [67466]= {
+ name="Argent Warhorse",
+ spellid=67466,
+ mountid=nil,
+ itemid=47180,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Exalted Argent Champion",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [6860]= {
+ name="Swift Horde Wolf",
+ spellid=6860,
+ mountid=nil,
+ itemid=4960,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Wolf",
+ source="Drop Trial of the Champion",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [68057]= {
+ name="Swift Alliance Steed",
+ spellid=68057,
+ mountid=nil,
+ itemid=49044,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Champion's Seals",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [68187]= {
+ name="Crusader's White Warhorse",
+ spellid=68187,
+ mountid=nil,
+ itemid=4960,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Achievment",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [68188]= {
+ name="Crusader's Black Warhorse",
+ spellid=68188,
+ mountid=nil,
+ itemid=49098,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Horse",
+ source="Achievment",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [69395]= {
+ name="Onyxian Drake",
+ spellid=69395,
+ mountid=nil,
+ itemid=49636,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Drake",
+ source="Drop Onyxia'a Lair",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [71342]= {
+ name="X-45 Heartbreaker",
+ spellid=71342,
+ mountid=nil,
+ itemid=50250,
+ maxspeed=280,
+ minspeed=60,
+ swimspeed=0,
+ category="Rocket",
+ source="Drop Valentines",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [71810]= {
+ name="Wrathful Gladiator's Frost Wyrm",
+ spellid=71810,
+ mountid=nil,
+ itemid=50435,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Wyrm",
+ source="Gladiator",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [72806]= {
+ name="Invincible",
+ spellid=72806,
+ mountid=nil,
+ itemid=50818,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Wyrm",
+ source="Drop Icecrown",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [72807]= {
+ name="Icebound Frostbrood Vanquisher",
+ spellid=72807,
+ mountid=nil,
+ itemid=51505,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Wyrm",
+ source="Achievment",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [72808]= {
+ name="Bloodbathed Frostbrood Vanquisher",
+ spellid=72808,
+ mountid=nil,
+ itemid=51504,
+ maxspeed=310,
+ minspeed=310,
+ swimspeed=0,
+ category="Wyrm",
+ source="Achievment",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [73103]= {
+ name="Crimson Deathcharger",
+ spellid=73103,
+ mountid=nil,
+ itemid=52200,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="DeadHorse",
+ source="Shadowmourn Quest",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [74856]= {
+ name="Blazing Hippogryph",
+ spellid=74856,
+ mountid=nil,
+ itemid=54069,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Hippogryph",
+ source="TCG",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [74918]= {
+ name="Wooly White Rhino",
+ spellid=74918,
+ mountid=nil,
+ itemid=54068,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Rhino",
+ source="Duplicate",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [75596]= {
+ name="Frosty Flying Carpet",
+ spellid=75596,
+ mountid=nil,
+ itemid=54797,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Carpet",
+ source="Tailoring",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [75614]= {
+ name="Celestial Steed",
+ spellid=75614,
+ mountid=nil,
+ itemid=54811,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Horse",
+ source="Store",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [75973]= {
+ name="X-53 Touring Rocket",
+ spellid=75973,
+ mountid=nil,
+ itemid=54860,
+ maxspeed=280,
+ minspeed=280,
+ swimspeed=0,
+ category="Rocket",
+ source="Recruit a Friend",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=true,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [348459]= {
+ name="Reawakened Phase-Hunter",
+ spellid=348459,
+ mountid=nil,
+ itemid=184865,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Warp Stalker",
+ source="Store",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [372677]= {
+ name="Kalu'ak Whalebone Glider",
+ spellid=372677,
+ mountid=nil,
+ itemid=192455,
+ maxspeed=280,
+ minspeed=60,
+ swimspeed=0,
+ category="Glider",
+ source="Store",
+ attributes={
+ ground=true,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [387320]= {
+ name="Blazing Hippogryph",
+ spellid=387320,
+ mountid=nil,
+ itemid=198630,
+ maxspeed=150,
+ minspeed=150,
+ swimspeed=0,
+ category="Hippogryph",
+ source="TCG",
+ attributes={
+ ground=false,
+ flying=true,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ },
+ [387310]= {
+ name="Wooly White Rhino",
+ spellid=387310,
+ mountid=nil,
+ itemid=198633,
+ maxspeed=1,
+ minspeed=1,
+ swimspeed=0,
+ category="Rhino",
+ source="TCG",
+ attributes={
+ ground=true,
+ flying=false,
+ passenger=false,
+ vendor=false,
+ swimming=false
+ }
+ }
}
\ No newline at end of file
diff --git a/Versions/Wrath/MountTable.lua b/Versions/Wrath/MountTable.lua
index 0799130..420fc8d 100644
--- a/Versions/Wrath/MountTable.lua
+++ b/Versions/Wrath/MountTable.lua
@@ -22,9 +22,9 @@ function BeStride:AddNewMount(mountId)
return
end
- if BeStride_MountDB[spellID][10] == true then
+ if BeStride_MountDB[spellID].attributes.flying == true then
mountType = "flying"
- elseif BeStride_MountDB[spellID][9] == true then
+ elseif BeStride_MountDB[spellID].attributes.ground == true then
mountType = "ground"
else
mountType = "unknown"
@@ -37,7 +37,7 @@ function BeStride:AddNewMount(mountId)
["isActive"] = isSummoned,
["faction"] = nil,
["icon"] = icon,
- ["source"] = BeStride_MountDB[spellID][8],
+ ["source"] = BeStride_MountDB[spellID].source,
["type"] = mountType,
}
end
\ No newline at end of file
diff --git a/Versions/Wrath/logic.lua b/Versions/Wrath/logic.lua
new file mode 100644
index 0000000..24ca569
--- /dev/null
+++ b/Versions/Wrath/logic.lua
@@ -0,0 +1,73 @@
+BeStride_Game = "Wrath"
+
+
+function BeStride:isMountUsable(mountId)
+ --print("isMountUsable: " .. mountId)
+ spellID = mountTable["master"][mountId].spellID
+
+ return spellID,mountID,true
+end
+
+function BeStride:isZoneMount(mountId)
+ return false
+end
+
+function BeStride:IsCombat()
+ if InCombatLockdown() then
+ return true
+ else
+ return false
+ end
+end
+
+function BeStride:GetSkills()
+ local skills = {}
+ local category = nil
+
+ for skillIndex = 1, GetNumSkillLines() do
+ local skillName, isHeader, isExpanded, skillRank, numTempPoints, skillModifier, skillMaxRank, isAbandonable, stepCost, rankCost, minLevel, skillCostType, skillDescription = GetSkillLineInfo(skillIndex)
+
+ if isHeader then
+ category = skillName
+ skills[category] = {}
+ else
+ skills[category][skillName] = skillRank
+ end
+ end
+
+ return skills
+end
+
+function BeStride:GetProfessions()
+ skills = self:GetSkills()
+
+ return nil, nil
+end
+
+function BeStride:GetRidingSkill()
+ local ridingSkillLevel = 0
+ local ridingSpells = {}
+
+ for skillIndex = 1, GetNumSkillLines() do
+ local skillName, isHeader, isExpanded, skillRank, numTempPoints, skillModifier, skillMaxRank, isAbandonable, stepCost, rankCost, minLevel, skillCostType, skillDescription = GetSkillLineInfo(skillIndex)
+
+ if skillName == 'Riding' then
+ ridingSkillLevel = skillRank
+ end
+ end
+
+ for spellID,skill in pairsByKeys(BeStride_Constants.Riding.Skill) do
+ if IsSpellKnown(spellID) and skill.level ~= nil and skill.level > ridingSkillLevel then
+ ridingSkillLevel = skill.level
+ ridingSpells[spellID] = true
+ elseif IsSpellKnown(spellID) and skill.level == nil then
+ ridingSpells[spellID] = true
+ end
+ end
+
+ return ridingSkillLevel,ridingSpells
+end
+
+function BeStride:CanWraithWalk()
+ return false
+end
diff --git a/pkgmeta.yaml b/pkgmeta.yaml
index 200fa2c..4f10bba 100644
--- a/pkgmeta.yaml
+++ b/pkgmeta.yaml
@@ -1,14 +1,16 @@
package-as: BeStride
externals:
- Libs/LibStub: https://repos.wowace.com/wow/libstub/trunk
- Libs/CallbackHandler-1.0: https://repos.wowace.com/wow/callbackhandler/trunk/CallbackHandler-1.0
- Libs/AceAddon-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceAddon-3.0
- Libs/AceConfig-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceConfig-3.0
- Libs/AceConsole-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceConsole-3.0
- Libs/AceDB-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceDB-3.0
- Libs/AceEvent-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceEvent-3.0
- Libs/AceGUI-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceGUI-3.0
+ Libs/Ace3/LibStub: https://repos.wowace.com/wow/libstub/trunk
+ Libs/Ace3/CallbackHandler-1.0: https://repos.wowace.com/wow/callbackhandler/trunk/CallbackHandler-1.0
+ Libs/Ace3/AceAddon-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceAddon-3.0
+ Libs/Ace3/AceConfig-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceConfig-3.0
+ Libs/Ace3/AceConsole-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceConsole-3.0
+ Libs/Ace3/AceDB-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceDB-3.0
+ Libs/Ace3/AceEvent-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceEvent-3.0
+ Libs/Ace3/AceGUI-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceGUI-3.0
+ Libs/LibBabble-SubZone-3.0: https://repos.curseforge.com/wow/libbabble-subzone-3-0/trunk
required-dependencies:
- Ace3
- LibStub
+ - LibBabble-SubZone-3.0
- CallbackHandler