From b10dfee4b43995c81d96318e5a9b19e1fb958a8e Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Wed, 11 Oct 2023 17:53:52 -0500 Subject: [PATCH] Fixes: #261 - Fixes index error when for mount on target --- Versions/Common/bestride.lua | 15 +++++++++ Versions/Wrath/bestride.lua | 63 +++++++++++++----------------------- Versions/Wrath/logic.lua | 8 ++--- 3 files changed, 41 insertions(+), 45 deletions(-) diff --git a/Versions/Common/bestride.lua b/Versions/Common/bestride.lua index 8fea3b3..227abc4 100644 --- a/Versions/Common/bestride.lua +++ b/Versions/Common/bestride.lua @@ -173,6 +173,21 @@ function BeStride:ChatCommand(input) LibStub("AceConfigDialog-3.0"):Open("BeStride-Debug") elseif command == "about" then LibStub("AceConfigDialog-3.0"):Open("BeStride") + elseif command == "simulate" then + if args == "ground" then + print("Ground:") + local status, err = pcall(BeStride_Mount:Ground()) + BeStride_Mount:Ground() + print(err.code) + elseif args == "flying" then + print("Flying:") + local status, err = pcall(BeStride_Mount:Flying()) + print(err.code) + else + print("Regular:") + local status, err = pcall(BeStride_Mount:Regular()) + print(err.code) + end else print("/br - Open Main Configuration Dialog and print help") print("/br options - Open options Dialog") diff --git a/Versions/Wrath/bestride.lua b/Versions/Wrath/bestride.lua index 077398d..4e2ea67 100644 --- a/Versions/Wrath/bestride.lua +++ b/Versions/Wrath/bestride.lua @@ -16,59 +16,42 @@ function BeStride:IsMainline() end function BeStride:GetMountInfoBySpellID(id) - for i=1, GetNumCompanions("MOUNT") do - mount = self:GetMountInfoByIndex(i) - if mount.spellID == id then - return mount - end - end + local mountID = C_MountJournal.GetMountFromSpell(id) + if mountID then + return self:GetMountInfoByMountID(mountID) + end end function BeStride:GetMountInfoByMountID(id) - for i=1, GetNumCompanions("MOUNT") do - mount = self:GetMountInfoByIndex(i) - if mount.mountID == id then - return mount - end - end -end - -function BeStride:GetMountInfoByIndex(index) - local mountID,creatureName,spellID,icon,isSummoned = GetCompanionInfo("MOUNT", index) + local creatureName,spellID,icon,active,isUsable,sourceType,isFavorite,isFactionSpecific,faction,hideOnChar,isCollected,mountID,isForDragonriding = C_MountJournal.GetMountInfoByID(id) return { creatureName = creatureName, spellID = spellID, mountID = mountID, icon = icon, - active = nil, - isUsable = nil, - sourceType = nil, - isFavorite = nil, - isFactionSpecific = nil, - faction = nil, - hideOnChar = nil, - isCollected = true, - isForDragonriding = nil + active = active, + isUsable = isUsable, + sourceType = sourceType, + isFavorite = isFavorite, + isFactionSpecific = isFactionSpecific, + faction = faction, + hideOnChar = hideOnChar, + isCollected = isCollected, + isForDragonriding = isForDragonriding } end -function BeStride:OverrideConstants() - BeStride_Constants.Riding.Flight.Restricted.Continents[113] = {} - BeStride_Constants.Riding.Flight.Restricted.Continents[113].requires = 54197 +function BeStride:GetMountInfoByIndex(index) + return nil end function BeStride:GetKnownMountFromTarget() - local mountIdBySpellId = {} - for i=1,GetNumCompanions("MOUNT"),1 do - local mountID,name,spellID,icon,isSummoned = GetCompanionInfo("MOUNT", i) - mountIdBySpellId[spellID] = mountID - end - -- look for unit aura that matches known AND usable mount ID - for i=1,40,1 do - local spellId = select(10,UnitBuff("target",i)) + for i=1,40,1 do + local spellId = select(10, UnitBuff("target", i)) if not spellId then return end - if mountIdBySpellId[spellId] ~= nil then - return spellId, mountIdBySpellId[spellId], true - end - end + local mountId = C_MountJournal.GetMountFromSpell(spellId) + if mountId ~= nil then + return self:isMountUsable(mountId) + end + end end diff --git a/Versions/Wrath/logic.lua b/Versions/Wrath/logic.lua index 147817c..d17b37a 100644 --- a/Versions/Wrath/logic.lua +++ b/Versions/Wrath/logic.lua @@ -1,11 +1,9 @@ BeStride_Game = "Wrath" - -function BeStride:isMountUsable(mountId) - --print("isMountUsable: " .. mountId) - spellID = mountTable["master"][mountId].spellID +function BeStride:isMountUsable(mount) + local name,spellID,icon,isActive,isUsable,sourceType,isFavorite,isFactionSpecific,faction,shouldHideOnChar,isCollected,mountID = C_MountJournal.GetMountInfoByID(mount) - return spellID,mountID,true + return spellID,mountID,isUsable end function BeStride:isZoneMount(mountId)