Mercurial > wow > mylilpony
view libMyLilPony/libMyLilPony_mountFunctions.lua @ 1:7dfbf42c2d60
Initial commit of MyLilPony
author | syzler |
---|---|
date | Mon, 04 Apr 2011 04:43:05 +0000 |
parents | |
children | a4711e3c1eef |
line wrap: on
line source
-- 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