WoWInterface SVN Livestock

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /trunk
    from Rev 140 to Rev 141
    Reverse comparison

Rev 140 → Rev 141

Livestock/Preferences/Main.lua
75,7 → 75,7
mb8:SetText(LivestockLocalizations.LIVESTOCK_FONTSTRING_SHOWLANDLABEL)
mb8:SetPoint("TOP", 0, -180)
mb8:SetScript("OnClick", function()
CreateMacro("LandMounts", "INV_Misc_QuestionMark", "/click LivestockLandMountsButton LeftButton 1", 1)
CreateMacro("LandMounts", "INV_Misc_QuestionMark", "/click LivestockLandMountsButton", 1)
DEFAULT_CHAT_FRAME:AddMessage(LivestockLocalizations.LIVESTOCK_INTERFACE_LANDMACROCREATED)
end)
 
85,17 → 85,17
mb9:SetText(LivestockLocalizations.LIVESTOCK_FONTSTRING_SHOWFLYINGLABEL)
mb9:SetPoint("TOP", 133, -180)
mb9:SetScript("OnClick", function()
CreateMacro("FlyingMounts", "INV_Misc_QuestionMark", "/click LivestockFlyingMountsButton LeftButton 1", 1)
CreateMacro("FlyingMounts", "INV_Misc_QuestionMark", "/click LivestockFlyingMountsButton", 1)
DEFAULT_CHAT_FRAME:AddMessage(LivestockLocalizations.LIVESTOCK_INTERFACE_FLYINGMACROCREATED)
end)
 
local mb10 = CreateFrame("Button", "LivestockComboMacroButton", mainprefs, "GameMenuButtonTemplate")
local mb10 = CreateFrame("Button", "LivestockSmartMacroButton", mainprefs, "GameMenuButtonTemplate")
mb10:SetHeight(25)
mb10:SetWidth(115)
mb10:SetText(LivestockLocalizations.LIVESTOCK_FONTSTRING_SHOWSMARTLABEL)
mb10:SetPoint("TOP", 0, -210)
mb10:SetScript("OnClick", function()
CreateMacro("ComboMounts", "INV_Misc_QuestionMark", "/click LivestockSmartButton LeftButton 1", 1)
CreateMacro("ComboMounts", "INV_Misc_QuestionMark", "/click LivestockSmartButton", 1)
DEFAULT_CHAT_FRAME:AddMessage(LivestockLocalizations.LIVESTOCK_INTERFACE_SMARTMACROCREATED)
end)
 
Livestock/Livestock.xml
294,7 → 294,9
<Scripts>
<OnLoad>
self:RegisterForDrag("LeftButton", "RightButton")
self:RegisterForClicks("LeftButtonDown","RightButtonDown")
self:RegisterForClicks("AnyUp")
self:SetAttribute("pressAndHoldAction", true);
self:SetAttribute("typerelease", "macro");
</OnLoad>
<OnDragStart>
if IsModifierKeyDown() then
323,7 → 325,7
</Anchors>
<Attributes>
<Attribute name="type" value="macro" />
<Attribute name="macrotext" value="/click LivestockComboButton LeftButton 1" />
<Attribute name="macrotext" value="/click LivestockComboButton" />
</Attributes>
<Layers>
<Layer level="OVERLAY" >
346,7 → 348,9
<Scripts>
<OnLoad>
self:RegisterForDrag("LeftButton","RightButton")
self:RegisterForClicks("LeftButtonDown","RightButtonDown")
self:RegisterForClicks("AnyUp")
self:SetAttribute("pressAndHoldAction", true);
self:SetAttribute("typerelease", "macro");
</OnLoad>
<OnDragStart>
if IsModifierKeyDown() then
394,7 → 398,9
<Scripts>
<OnLoad>
self:RegisterForDrag("LeftButton","RightButton")
self:RegisterForClicks("LeftButtonDown","RightButtonDown")
self:RegisterForClicks("AnyUp")
self:SetAttribute("pressAndHoldAction", true);
self:SetAttribute("typerelease", "macro");
</OnLoad>
<OnDragStart>
if IsModifierKeyDown() then
448,7 → 454,9
<Scripts>
<OnLoad>
self:RegisterForDrag("LeftButton","RightButton")
self:RegisterForClicks("LeftButtonDown","RightButtonDown")
self:RegisterForClicks("AnyUp")
self:SetAttribute("pressAndHoldAction", true);
self:SetAttribute("typerelease", "macro");
</OnLoad>
<OnDragStart>
if IsModifierKeyDown() then
476,6 → 484,10
 
<Button name="LivestockComboButton" inherits="SecureActionButtonTemplate" parent="UIParent" hidden="true" >
<Scripts>
<OnLoad>
self:RegisterForClicks("AnyUp")
self:SetAttribute("pressAndHoldAction", true);
</OnLoad>
<PreClick>
Livestock.SmartPreClick(self)
</PreClick>
502,7 → 514,7
Livestock.MenuButtonOnDoubleClick(self)
</OnDoubleClick>
<OnLoad>
self:RegisterForClicks("LeftButtonUp","RightButtonUp")
self:RegisterForClicks("AnyUp")
</OnLoad>
</Scripts>
</Button>
Livestock/Livestock.lua
102,7 → 102,7
["LivestockCritterMacroButton"] = L.LIVESTOCK_FONTSTRING_SHOWCRITTERSLABEL,
["LivestockLandMountMacroButton"] = L.LIVESTOCK_FONTSTRING_SHOWLANDLABEL,
["LivestockFlyingMountMacroButton"] = L.LIVESTOCK_FONTSTRING_SHOWFLYINGLABEL,
["LivestockComboMacroButton"] = L.LIVESTOCK_FONTSTRING_SHOWSMARTLABEL,
["LivestockSmartMacroButton"] = L.LIVESTOCK_FONTSTRING_SHOWSMARTLABEL,
["LivestockSmartPreferencesFrameSafeFlightText"] = L.LIVESTOCK_FONTSTRING_SAFEFLIGHTLABEL,
["LivestockPetPreferencesFrameAutoDismissOnStealthText"] = L.LIVESTOCK_FONTSTRING_AUTODISMISSONSTEALTHLABEL,
["LivestockPetPreferencesFramePVPDismissText"] = L.LIVESTOCK_FONTSTRING_PVPDISMISSLABEL,
992,48 → 992,43
self:SetAttribute("state-smartmap",self:GetAttribute("state-smartmap"))
 
elseif name == "state-smartmap" then
self:SetAttribute("type", nil)
self:SetAttribute("type", "spell")
self:SetAttribute("typerelease", "spell")
self:SetAttribute("spell", nil)
if value == 1 then
if LivestockClass == "DRUID" then
if catform == 1 then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", catspell)
end
elseif LivestockClass == "HUNTER" then
if indoorspeed == 1 then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", aotc)
end
elseif LivestockClass == "SHAMAN" then
if movingform == 1 then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", wolfspell)
end
end
elseif value == 2 then
self:SetAttribute("type", "macro")
self:SetAttribute("typerelease", "macro")
self:SetAttribute("macrotext", "/run Livestock.Dismount()")
self:SetAttribute("mounttype", nil)
elseif value == 3 then
if combatformstoggle == 1 then
if LivestockClass == "DRUID" then
self:SetAttribute("type", "macro")
self:SetAttribute("typerelease", "macro")
self:SetAttribute("macrotext", "/cast !"..travelspell)
elseif LivestockClass == "SHAMAN" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", wolfspell)
elseif LivestockClass == "HUNTER" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", aotc)
elseif LivestockClass == "PRIEST" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", shieldspell)
elseif LivestockClass == "MONK" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", rollspell)
elseif LivestockClass == "ROGUE" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", sprintspell)
end
end
1042,20 → 1037,22
 
elseif value == 6 then
if tonumber(waterwalkingtoggle) == 1 and (LivestockClass == "SHAMAN" or LivestockClass == "PRIEST" or LivestockClass == "DEATHKNIGHT") then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", waterwalkingspell)
self:SetAttribute("unit", "player")
elseif IsMounted() then
self:SetAttribute("type", "macro")
self:SetAttribute("typerelease", "macro")
self:SetAttribute("macrotext", "/run Livestock.Dismount()")
self:SetAttribute("mounttype", nil)
end
elseif value == 7 then
if safeflying == 1 then
self:SetAttribute("type", nil)
self:SetAttribute("typerelease", nil)
self:SetAttribute("spell", nil)
elseif IsMounted() then
self:SetAttribute("type", "macro")
self:SetAttribute("typerelease", "macro")
self:SetAttribute("macrotext", "/run Livestock.Dismount()")
self:SetAttribute("mounttype", nil)
end
1280,13 → 1277,13
return "LAND"
end
elseif continent == 572 or continent == 619 then -- if we're in Draenor or Broken Isles
if (expertRiding or artisanRiding or masterRiding) then -- IsFlyableArea() is currently bugged
if (expertRiding or artisanRiding or masterRiding) and IsFlyableArea() then
return "FLYING"
else
return "LAND"
end
elseif continent == 876 or continent == 875 or zoneID == 1355 then -- if we're in Kul Tiras or Zandalar or Nazjatar
if IsFlyableArea() and bfaFlying then
if bfaFlying and IsFlyableArea() then
return "FLYING"
else
return "LAND"
1316,12 → 1313,14
local race = select(2, UnitRace("player"))
local DraenorZoneAbilitySpellID = 161691
 
self:SetAttribute("type", "spell")
self:SetAttribute("typerelease", "spell")
 
if (debug) then
print(format("PREDEBUG: '%s' is mount-type, state is '%d'", self.mounttype or "nil", self:GetAttribute("state-smartmap")))
end
 
if IsFalling() and LivestockSettings.slowfall == 1 then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", (LivestockClass == "PRIEST" and L.LIVESTOCK_SPELL_LEVITATE) or L.LIVESTOCK_SPELL_SLOWFALL)
self:SetAttribute("unit", "player")
return
1355,25 → 1354,20
if state == 1 then
if LivestockSettings.indoorspeed == 1 then
if LivestockClass == "HUNTER" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_CHEETAH)
self.mounttype = nil
elseif LivestockClass == "PRIEST" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_PWSHIELD)
self.mounttype = nil
elseif LivestockClass == "MONK" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_ROLL)
self.mounttype = nil
elseif LivestockClass == "ROGUE" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_SPRINT)
self.mounttype = nil
end
elseif LivestockClass == "SHAMAN" then
if LivestockSettings.movingform == 1 and GetUnitSpeed("player") ~= 0 then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_GHOSTWOLF)
self.mounttype = nil
self.clearmovingform = true
1384,7 → 1378,6
if LivestockClass == "DRUID" and not InCombatLockdown() then
if (Livestock.LandOrFlying() == "FLYING" and LivestockSettings.druidlogic == 1) or (Livestock.LandOrFlying() == "LAND" and LivestockSettings.travelform == 1) then
if GetSpellInfo(L.LIVESTOCK_SPELL_TRAVELFORM) then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_TRAVELFORM)
end
end
1397,15 → 1390,12
 
if LivestockSettings.movingspeed == 1 and GetUnitSpeed("player") ~= 0 then
if LivestockClass == "HUNTER" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_CHEETAH)
self.mounttype = nil
elseif LivestockClass == "PRIEST" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_PWSHIELD)
self.mounttype = nil
elseif LivestockClass == "ROGUE" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_SPRINT)
self.mounttype = nil
end
1414,12 → 1404,10
if LivestockClass == "MONK" then
if LivestockSettings.zenflight == 1 and GetUnitSpeed("player") ~= 0 and self.mounttype == "FLYING" then
if GetSpellInfo(L.LIVESTOCK_SPELL_ZENFLIGHT) then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_ZENFLIGHT)
self.mounttype = nil
end
elseif LivestockSettings.movingspeed == 1 and GetUnitSpeed("player") ~= 0 then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_ROLL)
self.mounttype = nil
end
1436,15 → 1424,12
 
if LivestockSettings.movingspeed == 1 and GetUnitSpeed("player") ~= 0 then
if LivestockClass == "HUNTER" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_CHEETAH)
self.mounttype = nil
elseif LivestockClass == "PRIEST" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_PWSHIELD)
self.mounttype = nil
elseif LivestockClass == "ROGUE" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_SPRINT)
self.mounttype = nil
end
1452,6 → 1437,7
local spellID = select(7, GetSpellInfo(GetSpellInfo(DraenorZoneAbilitySpellID)))
if spellID == 165803 or spellID == 164222 then
self:SetAttribute("type", "macro")
self:SetAttribute("typerelease", "macro")
self:SetAttribute("macrotext", "/use "..L.LIVESTOCK_SKILL_GARRISON)
self.mounttype = nil
return
1461,12 → 1447,10
if LivestockClass == "MONK" then
if LivestockSettings.zenflight == 1 and GetUnitSpeed("player") ~= 0 and self.mounttype == "FLYING" then
if GetSpellInfo(L.LIVESTOCK_SPELL_ZENFLIGHT) then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_ZENFLIGHT)
self.mounttype = nil
end
elseif LivestockSettings.movingspeed == 1 and GetUnitSpeed("player") ~= 0 then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_ROLL)
self.mounttype = nil
end
1478,7 → 1462,6
 
if LivestockClass == "SHAMAN" then
if LivestockSettings.movingform == 1 and GetUnitSpeed("player") ~= 0 then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_GHOSTWOLF)
self.mounttype = nil
self.clearmovingform = true
1489,11 → 1472,9
if LivestockClass == "DRUID" then
if LivestockSettings.movingform == 1 and GetUnitSpeed("player") ~= 0 or (LivestockSettings.druidlogic == 1 and self.mounttype == "FLYING") or (LivestockSettings.travelform == 1 and self.mounttype == "LAND") then
if AuraUtil.FindAuraByName(L.LIVESTOCK_SPELL_TRAVELFORM, "player") and LivestockSettings.moonkin == 1 and GetSpellInfo(L.LIVESTOCK_SPELL_MOONKINFORM) then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_MOONKINFORM)
self.mounttype = nil
else
self:SetAttribute("type", "spell")
self:SetAttribute("spell", GetSpellInfo(L.LIVESTOCK_SPELL_TRAVELFORM) or L.LIVESTOCK_SPELL_CATFORM)
self.mounttype = nil
self.clearmovingform = true
1502,13 → 1483,13
if AuraUtil.FindAuraByName(L.LIVESTOCK_SPELL_MOONKINFORM, "player") then
else
self:SetAttribute("type", "macro")
self:SetAttribute("typerelease", "macro")
self:SetAttribute("macrotext", "/cancelform")
end
end
end
 
if self.mounttype == "LAND" and race == "Worgen" and LivestockSettings.worgenlogic == 1 and GetUnitSpeed("player") == 0 then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_RUNNINGWILD)
self.mounttype = nil
end
1519,30 → 1500,24
 
if (LivestockSettings.movingform == 1 and GetUnitSpeed("player") ~= 0) or (LivestockSettings.travelform == 1 and self.mounttype == "LAND" and LivestockClass == "DRUID") then
if AuraUtil.FindAuraByName(L.LIVESTOCK_SPELL_TRAVELFORM, "player") and LivestockSettings.moonkin == 1 and GetSpellInfo(L.LIVESTOCK_SPELL_MOONKINFORM) then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_MOONKINFORM)
self.mounttype = nil
else
self:SetAttribute("type", "spell")
self:SetAttribute("spell", (LivestockClass == "SHAMAN" and L.LIVESTOCK_SPELL_GHOSTWOLF) or GetSpellInfo(L.LIVESTOCK_SPELL_TRAVELFORM) or L.LIVESTOCK_SPELL_CATFORM)
self.mounttype = nil
self.clearmovingform = true
end
elseif LivestockSettings.movingspeed == 1 and GetUnitSpeed("player") ~= 0 then
if LivestockClass == "HUNTER" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_CHEETAH)
self.mounttype = nil
elseif LivestockClass == "PRIEST" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_PWSHIELD)
self.mounttype = nil
elseif LivestockClass == "MONK" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_ROLL)
self.mounttype = nil
elseif LivestockClass == "ROGUE" then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_SPRINT)
self.mounttype = nil
end
1550,18 → 1525,19
local spellID = select(7, GetSpellInfo(GetSpellInfo(DraenorZoneAbilitySpellID)))
if spellID == 165803 or spellID == 164222 then
self:SetAttribute("type", "macro")
self:SetAttribute("typerelease", "macro")
self:SetAttribute("macrotext", "/use "..L.LIVESTOCK_SKILL_GARRISON)
self.mounttype = nil
return
end
elseif race == "Worgen" and LivestockSettings.worgenlogic == 1 then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_RUNNINGWILD)
self.mounttype = nil
elseif LivestockClass == "DRUID" then
if AuraUtil.FindAuraByName(L.LIVESTOCK_SPELL_MOONKINFORM, "player") then
else
self:SetAttribute("type", "macro")
self:SetAttribute("typerelease", "macro")
self:SetAttribute("macrotext", "/cancelform")
end
end
1569,7 → 1545,6
 
elseif state == 6 then -- swimming
if LivestockClass == "DRUID" and GetUnitSpeed("player") ~= 0 and GetSpellInfo(L.LIVESTOCK_SPELL_TRAVELFORM) then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_TRAVELFORM)
self.mounttype = nil
self.clearmovingform = true
1582,12 → 1557,10
self.mounttype = nil
local spellName = AuraUtil.FindAuraByName(L.LIVESTOCK_SPELL_TRAVELFORM, "player")
if LivestockSettings.moonkin == 1 and spellName and GetSpellInfo(L.LIVESTOCK_SPELL_MOONKINFORM) then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_MOONKINFORM)
else
if AuraUtil.FindAuraByName(L.LIVESTOCK_SPELL_MOONKINFORM, "player") then
else
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_TRAVELFORM)
end
end
1624,6 → 1597,7
if self.clearmovingform then
self.clearmovingform = nil
self:SetAttribute("type", nil)
self:SetAttribute("typerelease", nil)
self:SetAttribute("spell", nil)
self:SetAttribute("macrotext", nil)
end
1634,6 → 1608,9
 
local race = select(2, UnitRace("player"))
 
self:SetAttribute("type", "spell")
self:SetAttribute("typerelease", "spell")
 
if IsFlying() and LivestockSettings.safeflying == 1 then -- trying to summon a land or flying mount in the air should fail to set any attributes and not flag anything for summoning. No smush deaths.
return
end
1668,7 → 1645,6
if LivestockClass == "SHAMAN" then
local name = AuraUtil.FindAuraByName(L.LIVESTOCK_SPELL_GHOSTWOLF, "player")
if name then -- name will be the name of the form at this point
self:SetAttribute("type", "spell")
self:SetAttribute("spell", name) -- by casting the spell that we had on in the first place, we effectively remove the spell.
end
end
1681,13 → 1657,13
AuraUtil.FindAuraByName(L.LIVESTOCK_SPELL_TREANTFORM, "player") or
AuraUtil.FindAuraByName(L.LIVESTOCK_SPELL_STAGFORM, "player") then
self:SetAttribute("type", "macro")
self:SetAttribute("typerelease", "macro")
self:SetAttribute("macrotext", "/cancelform")
self:SetAttribute("mounttype", nil)
end
end
 
if self.typeofmount == "land" and race == "Worgen" and LivestockSettings.worgenlogic == 1 and GetUnitSpeed("player") == 0 then
self:SetAttribute("type", "spell")
self:SetAttribute("spell", L.LIVESTOCK_SPELL_RUNNINGWILD)
self.typeofmount = nil
end
1709,6 → 1685,7
end
 
self:SetAttribute("type", nil) -- clear the attributes of the button in case they were used
self:SetAttribute("typerelease", nil)
self:SetAttribute("spell", nil)
 
end
2247,6 → 2224,10
end
end
 
function Livestock_OnAddonCompartmentClick(addonName, buttonName)
Settings.OpenToCategory(LivestockLocalizations.LIVESTOCK_INTERFACE_MAINPANEL)
end
 
--[[
Ordered table iterator, allow to iterate on the natural order of the keys of a
table.
Livestock/Change Log.txt
1,7 → 1,14
Version 3.3.6
 
- TOC update for patch 10.1.0
- Addon compartment support
- Buttons and macros once again work like they did before 10.0
- *** Please recreate any macros to avoid issues ***
 
Version 3.3.5
 
- Updates for patch 10.0.7
- Reworked logic to choose dragonriding in the Dragon Isles.
- Reworked logic to choose dragonriding in the Dragon Isles
 
Version 3.3.4
 
9,35 → 16,35
 
Version 3.3.3
 
- Moved dragonriding mounts into their own menu.
- Moved dragonriding mounts into their own menu
 
Version 3.3.2
 
- Minor Druid logic updates.
- Minor Druid logic updates
 
Version 3.3.1
 
- Enabled dragonriding in The Nokhud Offensive.
- Enabled dragonriding in The Nokhud Offensive
 
Version 3.3.0
 
- Attempt to prevent dragonriding inside instances.
- Attempt to prevent dragonriding inside instances
 
Version 3.2.9
 
- Fixed dragonriding from water surface.
- Fixed dragonriding from water surface
 
Version 3.2.8
 
- Fixed item link parsing for zone/subzone/party commands.
- Fixed item link parsing for zone/subzone/party commands
 
Version 3.2.7
 
- Initial dragonriding support.
- Initial dragonriding support
 
Version 3.2.6
 
- Fixed cat form, ghost wolf, etc.
- Fixed cat form, ghost wolf, etc
 
Version 3.2.5
 
Livestock/Livestock.toc
1,8 → 1,10
## Interface: 100007
## Interface: 100100
## Title: Livestock
## Notes: Enables easy random summoning of vanity pets and mounts, including the option of "smart mounting"
## Author: Kharthus - Deathwing(US)
## Version: 3.3.5
## Version: 3.3.6
## AddonCompartmentFunc: Livestock_OnAddonCompartmentClick
## IconTexture: 136456
## SavedVariablesPerCharacter: LivestockSettings
 
LibRecompense\RecompenseTools.lua