Mercurial > wow > mylilpony
changeset 1:7dfbf42c2d60
Initial commit of MyLilPony
author | syzler |
---|---|
date | Mon, 04 Apr 2011 04:43:05 +0000 |
parents | f6a1d182682e |
children | 54cfe45c0d78 |
files | MyLilPony.lua MyLilPony.toc MyLilPony.xml libMyLilPony/libMyLilPony.lua libMyLilPony/libMyLilPony_miscFunctions.lua libMyLilPony/libMyLilPony_mountData.lua libMyLilPony/libMyLilPony_mountFunctions.lua libMyLilPony/readme.txt readme.txt |
diffstat | 9 files changed, 697 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MyLilPony.lua Mon Apr 04 04:43:05 2011 +0000 @@ -0,0 +1,173 @@ +-- MyLilPony +-- Copyright (c) 2011 Syzler +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. + +function MyLilPony.OnLoad() + SlashCmdList["MyLilPony"] = MyLilPony.SlashHandler; + SLASH_MyLilPony1 = "/pony"; + SLASH_MyLilPony2 = "/mlp"; + SLASH_MyLilPony3 = "/mylilpony"; + + MyLilPony.Log(format("Version %s loaded", MYLILPONY_VERSION)); + MyLilPony.LoadDefaults(); +end + +function MyLilPony.LoadDefaults() + if MyLilPony.AutoDismount == nil then MyLilPony.AutoDismount = true end +end + +function MyLilPony.AutoMount() + if UnitIsDead("player") or UnitIsGhost("player") then + MyLilPony.Log("You are dead"); + return; + end + + if InCombatLockdown() then + MyLilPony.Log("You are in combat"); + return; + end + + if IsMounted() and not MyLilPony.AutoDismount then + MyLilPony.Log("You are already mounted"); + return; + end + + if IsMounted() and IsFlying() then + MyLilPony.Log("You are already flying"); + return; + end + + local zone = GetRealZoneText(); + + -- player is in Temple of Ahn'Qiraj (AQ40) + if zone == "Ahn'Qiraj" then + if not IsModifierKeyDown() and MyLilPony.CallMountByRegex("Qiraji Battle Tank") then + return + end + end + + -- player is in Wintergrasp + if zone == "Wintergrasp" then + -- always call ground mount if Wintergrasp is in progress + local _, _, wintergraspInProgress, _, _, _ = GetWorldPVPAreaInfo(1); + if wintergraspInProgress and MyLilPony.CallGroundMount() then + return; + end + end + + -- player is swimming in Vash'jir + if IsSwimming() and (zone == "Shimmering Expanse" or zone == "Kelp'thar Forest" or zone == "Abyssal Depths") then + -- normal behaviour in Vash'jir is to call the Abyssal Seahorse + -- modified behaviour is to attempt flight (i.e. you're at the surface) + if not IsModifierKeyDown() and MyLilPony.CallMountByName("Abyssal Seahorse") then + return; + elseif MyLilPony.CanFlyHere() and MyLilPony.CallFlyingMount() then + return; + elseif MyLilPony.CallAquaticMount() then + return; + end + end + + -- player is in flyable area and knows how to fly here too + if MyLilPony.CanFlyHere() and not IsModifierKeyDown() then + -- normal behaviour in flyable area is to call flying mount + if MyLilPony.CallFlyingMount() then + return; + end + end + + -- player is swimming + if IsSwimming() and not IsModifierKeyDown() then + -- normal behaviour while swimming is to call aquatic mount + if MyLilPony.CallAquaticMount() then + return; + end + end + + MyLilPony.CallGroundMount(); +end + +function MyLilPony.SlashHandler(arg) + if MyLilPony.StringMatchIgnoreCase(arg, "^auto$") then + MyLilPony.AutoMount(); + elseif MyLilPony.StringMatchIgnoreCase(arg, "^random$") + or MyLilPony.StringMatchIgnoreCase(arg, "^rand$") + or MyLilPony.StringMatchIgnoreCase(arg, "^rng$") + or MyLilPony.StringMatchIgnoreCase(arg, "^r$") then + MyLilPony.CallMount(); + elseif MyLilPony.StringMatchIgnoreCase(arg, "^ground$") + or MyLilPony.StringMatchIgnoreCase(arg, "^g$") then + MyLilPony.CallGroundMount(); + elseif MyLilPony.StringMatchIgnoreCase(arg, "^flying$") + or MyLilPony.StringMatchIgnoreCase(arg, "^fly$") + or MyLilPony.StringMatchIgnoreCase(arg, "^air$") + or MyLilPony.StringMatchIgnoreCase(arg, "^a$") then + MyLilPony.CallFlyingMount(); + elseif MyLilPony.StringMatchIgnoreCase(arg, "^aquatic$") + or MyLilPony.StringMatchIgnoreCase(arg, "^aqua$") + or MyLilPony.StringMatchIgnoreCase(arg, "^swim$") + or MyLilPony.StringMatchIgnoreCase(arg, "^s$") then + MyLilPony.CallAquaticMount(); + elseif MyLilPony.StringMatchIgnoreCase(arg, "^target$") + or MyLilPony.StringMatchIgnoreCase(arg, "^tgt$") + or MyLilPony.StringMatchIgnoreCase(arg, "^t$") then + local result = MyLilPony.CallMountByMatch("target"); + if not result then + MyLilPony.Log("No matching mounts were found"); + end + elseif MyLilPony.StringMatchIgnoreCase(arg, "^exact .+$") + or MyLilPony.StringMatchIgnoreCase(arg, "^x .+$") then + local param = MyLilPony.StringMatchIgnoreCase(arg, "^.+ (.+)$"); + local result = MyLilPony.CallMountByName(param); + if not result then + MyLilPony.Log(format("No matching mounts were found with NAME='%s'", param)); + end + elseif MyLilPony.StringMatchIgnoreCase(arg, "^list .+$") + or MyLilPony.StringMatchIgnoreCase(arg, "^find .+$") + or MyLilPony.StringMatchIgnoreCase(arg, "^l .+$") then + local param = MyLilPony.StringMatchIgnoreCase(arg, "^.+ (.+)$"); + local result = MyLilPony.ListMountsByPattern(param); + if not result then + MyLilPony.Log(format("No matching mounts were found with NAME like '%s'", param)); + else + for _, name in pairs(result) do + MyLilPony.Print(name); + end + end + elseif MyLilPony.StringMatchIgnoreCase(arg, "^%d+$") then + local result = MyLilPony.CallMountById(tonumber(arg)); + if not result then + MyLilPony.Log(format("No matching mounts were found with ID=%s", arg)); + end + elseif MyLilPony.StringMatchIgnoreCase(arg, "^.+$") then + local result = MyLilPony.CallMountByPattern(arg); + if not result then + MyLilPony.Log(format("No matching mounts were found with NAME like '%s'", arg)); + end + else + MyLilPony.Print(format("MyLilPony %s", MYLILPONY_VERSION)); + MyLilPony.Print("Slash Command: /mylilpony (/pony, /mlp)"); + MyLilPony.Print(" /mylilpony auto - Summons a \"suitable\" mount"); + MyLilPony.Print(" /mylilpony random - Summons random mount"); + MyLilPony.Print(" /mylilpony ground - Summons random ground mount"); + MyLilPony.Print(" /mylilpony flying - Summons random flying mount"); + MyLilPony.Print(" /mylilpony aquatic - Summons random aquatic mount"); + MyLilPony.Print(" /mylilpony target - Summons same mount as targeted unit"); + MyLilPony.Print(" /mylilpony list <NAME> - Lists mounts matching name"); + MyLilPony.Print(" /mylilpony exact <NAME> - Summons mount by exact name"); + MyLilPony.Print(" /mylilpony <ID> - Summons mount by spell or creature ID"); + MyLilPony.Print(" /mylilpony <NAME> - Summons random mount matching name"); + end +end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MyLilPony.toc Mon Apr 04 04:43:05 2011 +0000 @@ -0,0 +1,16 @@ +## Interface: 40000 +## Title: MyLilPony +## Version: 1.0.0 +## Author: Szylar +## License: GPLv3 +## Notes: Commands for calling ponies and unicorns. + +# libMyLilPony 1.0.0 +libMyLilPony\libMyLilPony.lua +libMyLilPony\libMyLilPony_mountData.lua +libMyLilPony\libMyLilPony_mountFunctions.lua +libMyLilPony\libMyLilPony_miscFunctions.lua + +# MyLilPony +MyLilPony.lua +MyLilPony.xml \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MyLilPony.xml Mon Apr 04 04:43:05 2011 +0000 @@ -0,0 +1,27 @@ +<!-- + MyLilPony + Copyright (c) 2011 Syzler + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +--> +<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ +..\FrameXML\UI.xsd"> + <Frame name="MyLilPonyFrame" hidden="false"> + <Scripts> + <OnLoad> + MyLilPony.OnLoad(); + </OnLoad> + </Scripts> + </Frame> +</Ui>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libMyLilPony/libMyLilPony.lua Mon Apr 04 04:43:05 2011 +0000 @@ -0,0 +1,23 @@ +-- libMyLilPony +-- Copyright (c) 2011 Syzler +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. + +-- This file contains initial declarations for the library +-- Make sure it loads first :P + +MyLilPony = {} + +MYLILPONY_VERSION = "1.0.0"; +MYLILPONY_DEBUG_LOGGING = false;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libMyLilPony/libMyLilPony_miscFunctions.lua Mon Apr 04 04:43:05 2011 +0000 @@ -0,0 +1,69 @@ +-- libMyLilPony +-- Copyright (c) 2011 Syzler +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. + +-- Misc helper functions used in the library + +function MyLilPony.GetUnitBuffs(unit) + -- build a hashtable of buffs on the unit + local buffs = {}; + for i = 1, 40 do + local _, _, _, _, _, _, _, _, _, _, id = UnitAura(unit, i, "HELPFUL"); + if id ~= nil then + buffs[id] = id; + end + end + return buffs; +end + +function MyLilPony.StringMatchIgnoreCase(subject, pattern) + if subject == nil and pattern == nil then return true end + if subject == nil or pattern == nil then return false end + local lSub = string.lower(subject); + local lPat = string.lower(pattern); + return string.match(lSub, lPat); +end + +function MyLilPony.CallCompanion(companionType, companionNumber, condition) + if condition == nil or condition then + CallCompanion(companionType, companionNumber); + end +end + +function MyLilPony.CanFlyHere() + if IsFlyableArea() then + SetMapToCurrentZone(); + local continent = GetCurrentMapContinent(); + if continent == 4 then + -- Northrend: requires Cold Weather Flying + return IsSpellKnown(54197); + elseif (continent == 1 or continent == 2) then + -- Old World: requires Flight Master's License + return IsSpellKnown(90267); + end + return true; + end + return false; +end + +function MyLilPony.Print(msg) + DEFAULT_CHAT_FRAME:AddMessage("|cff8ed6f0"..msg); +end + +function MyLilPony.Log(msg) + if MYLILPONY_DEBUG_LOGGING then + DEFAULT_CHAT_FRAME:AddMessage("|cff8ed6f0"..format("MyLilPony: %s", msg)); + end +end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libMyLilPony/libMyLilPony_mountData.lua Mon Apr 04 04:43:05 2011 +0000 @@ -0,0 +1,113 @@ +-- libMyLilPony +-- Copyright (c) 2011 Syzler +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. + +-- Mount data table and API functions for checking type of mount + +local MyLilPony_Mounts = { + -- standard ground mounts + [458] = "G"; [470] = "G"; [472] = "G"; [579] = "G"; [580] = "G"; [5784] = "G"; [6648] = "G"; + [6653] = "G"; [6654] = "G"; [6777] = "G"; [6898] = "G"; [6899] = "G"; [8394] = "G"; [8395] = "G"; + [10789] = "G"; [10793] = "G"; [10795] = "G"; [10796] = "G"; [10799] = "G"; [10873] = "G"; + [10969] = "G"; [13819] = "G"; [15779] = "G"; [15780] = "G"; [15781] = "G"; [16055] = "G"; + [16056] = "G"; [16058] = "G"; [16059] = "G"; [16060] = "G"; [16080] = "G"; [16081] = "G"; + [16082] = "G"; [16083] = "G"; [16084] = "G"; [17229] = "G"; [17450] = "G"; [17453] = "G"; + [17454] = "G"; [17455] = "G"; [17456] = "G"; [17458] = "G"; [17459] = "G"; [17460] = "G"; + [17461] = "G"; [17462] = "G"; [17463] = "G"; [17464] = "G"; [17465] = "G"; [17481] = "G"; + [18363] = "G"; [18989] = "G"; [18990] = "G"; [18991] = "G"; [18992] = "G"; [22717] = "G"; + [22718] = "G"; [22719] = "G"; [22720] = "G"; [22721] = "G"; [22722] = "G"; [22723] = "G"; + [22724] = "G"; [23161] = "G"; [23214] = "G"; [23219] = "G"; [23220] = "G"; [23221] = "G"; + [23222] = "G"; [23223] = "G"; [23225] = "G"; [23227] = "G"; [23228] = "G"; [23229] = "G"; + [23238] = "G"; [23239] = "G"; [23240] = "G"; [23241] = "G"; [23242] = "G"; [23243] = "G"; + [23246] = "G"; [23247] = "G"; [23248] = "G"; [23249] = "G"; [23250] = "G"; [23251] = "G"; + [23252] = "G"; [23338] = "G"; [23509] = "G"; [23510] = "G"; [24242] = "G"; [24252] = "G"; + [30174] = "G"; [33630] = "G"; [33660] = "G"; [34406] = "G"; [34407] = "G"; [34767] = "G"; + [34769] = "G"; [34790] = "G"; [34795] = "G"; [34896] = "G"; [34897] = "G"; [34898] = "G"; + [34899] = "G"; [35018] = "G"; [35020] = "G"; [35022] = "G"; [35025] = "G"; [35027] = "G"; + [35028] = "G"; [35710] = "G"; [35711] = "G"; [35712] = "G"; [35713] = "G"; [35714] = "G"; + [36702] = "G"; [39315] = "G"; [39316] = "G"; [39317] = "G"; [39318] = "G"; [39319] = "G"; + [41252] = "G"; [42776] = "G"; [42777] = "G"; [43688] = "G"; [43899] = "G"; [43900] = "G"; + [46628] = "G"; [47037] = "G"; [48027] = "G"; [48778] = "G"; [48954] = "G"; [49322] = "G"; + [49378] = "G"; [49379] = "G"; [50281] = "G"; [50869] = "G"; [51412] = "G"; [54753] = "G"; + [55531] = "G"; [59572] = "G"; [59573] = "G"; [59785] = "G"; [59788] = "G"; [59791] = "G"; + [59793] = "G"; [59797] = "G"; [59799] = "G"; [59802] = "G"; [59804] = "G"; [59810] = "G"; + [59811] = "G"; [60114] = "G"; [60116] = "G"; [60118] = "G"; [60119] = "G"; [60136] = "G"; + [60140] = "G"; [60424] = "G"; [61425] = "G"; [61447] = "G"; [61465] = "G"; [61466] = "G"; + [61467] = "G"; [61469] = "G"; [61470] = "G"; [63232] = "G"; [63234] = "G"; [63635] = "G"; + [63636] = "G"; [63637] = "G"; [63638] = "G"; [63639] = "G"; [63640] = "G"; [63641] = "G"; + [63642] = "G"; [63643] = "G"; [64657] = "G"; [64658] = "G"; [64659] = "G"; [64977] = "G"; + [65637] = "G"; [65638] = "G"; [65639] = "G"; [65640] = "G"; [65641] = "G"; [65642] = "G"; + [65643] = "G"; [65644] = "G"; [65645] = "G"; [65646] = "G"; [66091] = "G"; [66846] = "G"; + [66847] = "G"; [66906] = "G"; [67466] = "G"; [68056] = "G"; [68188] = "G"; [73313] = "G"; + [74918] = "G"; [87090] = "G"; [87091] = "G"; [88748] = "G"; [88749] = "G"; [88750] = "G"; + [92231] = "G"; + + -- standard flying mounts + [3363] = "A"; [28828] = "A"; [32235] = "A"; [32239] = "A"; [32240] = "A"; [32242] = "A"; + [32243] = "A"; [32244] = "A"; [32245] = "A"; [32246] = "A"; [32289] = "A"; [32290] = "A"; + [32292] = "A"; [32295] = "A"; [32296] = "A"; [32297] = "A"; [32345] = "A"; [33176] = "A"; + [33182] = "A"; [33184] = "A"; [37011] = "A"; [37015] = "A"; [39798] = "A"; [39800] = "A"; + [39801] = "A"; [39802] = "A"; [39803] = "A"; [40192] = "A"; [41513] = "A"; [41514] = "A"; + [41515] = "A"; [41516] = "A"; [41517] = "A"; [41518] = "A"; [43810] = "A"; [43927] = "A"; + [44151] = "A"; [44153] = "A"; [44221] = "A"; [44229] = "A"; [44317] = "A"; [44744] = "A"; + [46197] = "A"; [46199] = "A"; [49193] = "A"; [51960] = "A"; [54729] = "A"; [55164] = "A"; + [58615] = "A"; [59567] = "A"; [59568] = "A"; [59569] = "A"; [59570] = "A"; [59571] = "A"; + [59650] = "A"; [59961] = "A"; [59976] = "A"; [59996] = "A"; [60002] = "A"; [60021] = "A"; + [60024] = "A"; [60025] = "A"; [61229] = "A"; [61230] = "A"; [61294] = "A"; [61309] = "A"; + [61442] = "A"; [61444] = "A"; [61446] = "A"; [61451] = "A"; [61996] = "A"; [61997] = "A"; + [62048] = "A"; [63796] = "A"; [63844] = "A"; [63956] = "A"; [63963] = "A"; [64927] = "A"; + [65439] = "A"; [66087] = "A"; [66088] = "A"; [67336] = "A"; [69395] = "A"; [71342] = "A"; + [71810] = "A"; [72807] = "A"; [72808] = "A"; [74856] = "A"; [75596] = "A"; [75973] = "A"; + [88331] = "A"; [88335] = "A"; [88718] = "A"; [88741] = "A"; [88742] = "A"; [88744] = "A"; + [88746] = "A"; [88990] = "A"; [93623] = "A"; + + -- special mounts + [48025] = "AG"; -- headless horseman's mount + [72286] = "AG"; -- invincible (king lichy's mount) + [75614] = "AG"; -- celestial steed + [64731] = "SV"; -- sea turtle + [25953] = "Q"; -- blue qiraji battle tank + [26054] = "Q"; -- red qiraji battle tank + [26055] = "Q"; -- yellow qiraji battle tank + [26056] = "Q"; -- green qiraji battle tank + [26656] = "GQ"; -- black qiraji battle tank + [92155] = "GQ"; -- ultramarine qiraji battle tank + [75207] = "V"; -- abyssal seahorse +}; + +function MyLilPony.IsGroundMount(spellId) + local entry = MyLilPony_Mounts[spellId]; + return entry ~= nil and string.match(entry, "G"); +end + +function MyLilPony.IsFlyingMount(spellId) + local entry = MyLilPony_Mounts[spellId]; + return entry ~= nil and string.match(entry, "A"); +end + +function MyLilPony.IsAquaticMount(spellId) + local entry = MyLilPony_Mounts[spellId]; + return entry ~= nil and string.match(entry, "S"); +end + +function MyLilPony.IsAhnQirajMount(spellId) + local entry = MyLilPony_Mounts[spellId]; + return entry ~= nil and string.match(entry, "Q"); +end + +function MyLilPony.IsVashjirMount(spellId) + local entry = MyLilPony_Mounts[spellId]; + return entry ~= nil and string.match(entry, "V"); +end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libMyLilPony/libMyLilPony_mountFunctions.lua Mon Apr 04 04:43:05 2011 +0000 @@ -0,0 +1,231 @@ +-- libMyLilPony +-- Copyright (c) 2011 Syzler +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. + +-- API functions for calling mounts + +function MyLilPony.CallMount() + local countMounts = GetNumCompanions("MOUNT"); + if countMounts > 0 then + local i = random(1, countMounts); + local _, _, _, _, summoned = GetCompanionInfo("MOUNT", i); + MyLilPony.CallCompanion("MOUNT", i, not summoned); + return true; + end + return false; +end + +function MyLilPony.CallFlyingMount() + local filter = function (i) + local _, _, id, _, summoned = GetCompanionInfo("MOUNT", i); + return not summoned and MyLilPony.IsFlyingMount(id); + end + return MyLilPony.CallMountByFilter(filter); +end + +function MyLilPony.CallGroundMount() + local filter = function (i) + local _, _, id, _, summoned = GetCompanionInfo("MOUNT", i); + return not summoned and MyLilPony.IsGroundMount(id); + end + return MyLilPony.CallMountByFilter(filter); +end + +function MyLilPony.CallAquaticMount() + local filter = function (i) + local _, _, id, _, summoned = GetCompanionInfo("MOUNT", i); + return not summoned and MyLilPony.IsAquaticMount(id); + end + return MyLilPony.CallMountByFilter(filter); +end + +function MyLilPony.CallMountBySlot(slotNumber) + local countMounts = GetNumCompanions("MOUNT"); + if slotNumber > 0 and slotNumber < countMounts+1 then + local _, _, _, _, summoned = GetCompanionInfo("MOUNT", slotNumber); + MyLilPony.CallCompanion("MOUNT", slotNumber, not summoned); + return true; + end + return false; +end + +function MyLilPony.CallMountByName(mountName) + local result = false; + local countMounts = GetNumCompanions("MOUNT"); + for i = 1, countMounts do + local _, name, _, _, summoned = GetCompanionInfo("MOUNT", i); + if name == mountName then + MyLilPony.CallCompanion("MOUNT", i, not summoned); + result = true; + do break end + end + end + return result; +end + +function MyLilPony.CallMountByPattern(mountNamePattern) + local filter = function (i) + local _, name, _, _, summoned = GetCompanionInfo("MOUNT", i); + return not summoned and MyLilPony.StringMatchIgnoreCase(name, mountNamePattern); + end + return MyLilPony.CallMountByFilter(filter); +end + +function MyLilPony.CallMountById(id) + local result = false; + local countMounts = GetNumCompanions("MOUNT"); + for i = 1, countMounts do + local creatureId, _, spellId, _, summoned = GetCompanionInfo("MOUNT", i); + if id == creatureId or id == spellId then + MyLilPony.CallCompanion("MOUNT", i, not summoned); + result = true; + do break end + end + end + return result; +end + +function MyLilPony.CallMountBySpell(spellId) + local result = false; + local countMounts = GetNumCompanions("MOUNT"); + for i = 1, countMounts do + local _, _, id, _, summoned = GetCompanionInfo("MOUNT", i); + if id == spellId then + MyLilPony.CallCompanion("MOUNT", i, not summoned); + result = true; + do break end + end + end + return result; +end + +function MyLilPony.CallMountByCreature(creatureId) + local result = false; + local countMounts = GetNumCompanions("MOUNT"); + for i = 1, countMounts do + local id, _, _, _, summoned = GetCompanionInfo("MOUNT", i); + if id == creatureId then + MyLilPony.CallCompanion("MOUNT", i, not summoned); + result = true; + do break end + end + end + return result; +end + +function MyLilPony.CallMountByMatch(unit) + local result = false; + local unitBuffs = MyLilPony.GetUnitBuffs(unit); + local countMounts = GetNumCompanions("MOUNT"); + for i = 1, countMounts do + local _, _, id, _, summoned = GetCompanionInfo("MOUNT", i); + if unitBuffs[id] ~= nil then + MyLilPony.CallCompanion("MOUNT", i, not summoned); + result = true; + do break end + end + end + return result; +end + +function MyLilPony.CallMountByFilter(filter) + local countMounts = GetNumCompanions("MOUNT"); + if countMounts > 0 then + local results = {}; + local countResults = 0; + + for i = 1, countMounts do + if filter(i) then + countResults = countResults + 1; + results[countResults] = i; + end + end + + if countResults > 0 then + local i = random(1, countResults); + local _, _, _, _, summoned = GetCompanionInfo("MOUNT", results[i]); + MyLilPony.CallCompanion("MOUNT", results[i], not summoned); + return true; + end + end + return false; +end + +function MyLilPony.ListMounts() + local results = {}; + local countMounts = GetNumCompanions("MOUNT"); + for i = 1, countMounts do + local _, name, _, _, _ = GetCompanionInfo("MOUNT", i); + results[i] = name; + end + return results; +end + +function MyLilPony.ListGroundMounts() + local results = {}; + local countMounts = GetNumCompanions("MOUNT"); + local x = 1; + for i = 1, countMounts do + local _, _, id, _, _ = GetCompanionInfo("MOUNT", i); + if MyLilPony.IsGroundMount(id) then + results[x] = name; + x = x + 1; + end + end + return results; +end + +function MyLilPony.ListFlyingMounts() + local results = {}; + local countMounts = GetNumCompanions("MOUNT"); + local x = 1; + for i = 1, countMounts do + local _, _, id, _, _ = GetCompanionInfo("MOUNT", i); + if MyLilPony.IsFlyingMount(id) then + results[x] = name; + x = x + 1; + end + end + return results; +end + +function MyLilPony.ListAquaticMounts() + local results = {}; + local countMounts = GetNumCompanions("MOUNT"); + local x = 1; + for i = 1, countMounts do + local _, _, id, _, _ = GetCompanionInfo("MOUNT", i); + if MyLilPony.IsAquaticMount(id) then + results[x] = name; + x = x + 1; + end + end + return results; +end + +function MyLilPony.ListMountsByPattern(mountNamePattern) + local results = {}; + local countMounts = GetNumCompanions("MOUNT"); + local x = 1; + for i = 1, countMounts do + local _, name, _, _, _ = GetCompanionInfo("MOUNT", i); + if MyLilPony.StringMatchIgnoreCase(name, mountNamePattern) then + results[x] = name; + x = x + 1; + end + end + return results; +end +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libMyLilPony/readme.txt Mon Apr 04 04:43:05 2011 +0000 @@ -0,0 +1,28 @@ +libMyLilPony +Copyright (c) 2011 Syzler + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +===================================================================== + +To use libMyLilPony in your own addon, add the following lines +to your TOC *in this order*, before you add any scripts that will +call libMyLilPony. Adjust the path if necessary - the following +case assumes you put the library in a subfolder called libMyLilPony + +# libMyLilPony 1.0.0 +libMyLilPony\libMyLilPony.lua +libMyLilPony\libMyLilPony_mountData.lua +libMyLilPony\libMyLilPony_mountFunctions.lua +libMyLilPony\libMyLilPony_miscFunctions.lua \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/readme.txt Mon Apr 04 04:43:05 2011 +0000 @@ -0,0 +1,17 @@ +MyLilPony +Copyright (c) 2011 Syzler + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +=====================================================================