Not summoning flying mount in Outland
eTzmNcbkrng opened this issue ยท 13 comments
What happens?
Doesn't summon flying mount in Shattrath, this continued to be an issue after I arrive in Hellfire Peninsula.
What did you expect to happen instead?
I was moving so expected to change into Flight Form, I stopped moving and summoned mount to see if a Flying mount would summon, but it did not.
Did it work in a previous version of LiteMount? If so, what was the last version that worked?
I only recently switched to Litemount from Mounts Journal where this did work previously.
Please do not modify anything below this line.
--- General ---
date: Sun Nov 12 13:48:42 2023
expansion: Wrath of the Lich King
build: 3.4.3 | 51943 | Oct 26 2023 | 30403 | | | 30403
version: 10.2.0-1-wrath
locale: enUS
current profile: Default
--- Player ---
name: Shiftace-Arugal
class: DRUID
level: 64
race: Tauren
faction: Horde
spec: 0 0 0
--- Location ---
map: Shattrath City (1955)
mapPath: Shattrath City (1955) -> Outland (1945) -> Cosmic (946)
instance: Outland (530)
zoneText: Shattrath City
subZoneText: Terrace of Light
IsFlyableArea(): true
--- Debugging Output ---
Dispatching rule ApplyRules
- checking 1 rules for button 1
- no rules matched
Dispatching flow control action IF [mod:shift] - IF test is false
Dispatching flow control action IF [submerged] - IF test is false
Dispatching flow control action ELSEIF [dragonridable] - ELSEIF test is false
Dispatching flow control action ELSEIF [flyable] - ELSEIF test is false
Dispatching flow control action ELSEIF [floating] - ELSEIF test is false
Dispatching flow control action END
Dispatching flow control action END
Dispatching rule SmartMount - filters:
- filtered list contains 2 mounts
- trying Ground Mount
- found 0 mounts.
- trying Slow Ground Mount
- found 1 mounts.
- WeightedRandom n=1, t=0.500, c=0.066, w=0.500, p=1.000
- setting action to mount Travel Form
PreClick ok time 7.1923000812531
PostClick handler called on LM_B1 (inputButton=LeftButton, isDown=true) - setting action to in-combat action
PreClick handler called on LM_B1 (inputButton=LeftButton, isDown=true)
Dispatching rule LeaveVehicle
Dispatching rule Dismount [nofalling] - setting action to cancel Travel Form
PreClick ok time 0.28430008888245
PostClick handler called on LM_B1 (inputButton=LeftButton, isDown=true) - setting action to in-combat action
PreClick handler called on LM_B1 (inputButton=LeftButton, isDown=true)
Dispatching rule LeaveVehicle
Dispatching rule Dismount [nofalling]
Dispatching rule CopyTargetsMount
Dispatching rule ApplyRules - checking 1 rules for button 1
- no rules matched
Dispatching flow control action IF [mod:shift] - IF test is false
Dispatching flow control action IF [submerged] - IF test is false
Dispatching flow control action ELSEIF [dragonridable] - ELSEIF test is false
Dispatching flow control action ELSEIF [flyable] - ELSEIF test is false
Dispatching flow control action ELSEIF [floating] - ELSEIF test is false
Dispatching flow control action END
Dispatching flow control action END
Dispatching rule SmartMount - filters:
- filtered list contains 2 mounts
- trying Ground Mount
- found 0 mounts.
- trying Slow Ground Mount
- found 1 mounts.
- WeightedRandom n=1, t=0.500, c=0.474, w=0.500, p=1.000
- setting action to mount Travel Form
PreClick ok time 6.492399930954
PostClick handler called on LM_B1 (inputButton=LeftButton, isDown=true) - setting action to in-combat action
PreClick handler called on LM_B1 (inputButton=LeftButton, isDown=true)
Dispatching rule LeaveVehicle
Dispatching rule Dismount [nofalling] - setting action to cancel Travel Form
PreClick ok time 0.42630004882812
PostClick handler called on LM_B1 (inputButton=LeftButton, isDown=true) - setting action to in-combat action
PreClick handler called on LM_B1 (inputButton=LeftButton, isDown=true)
Dispatching rule LeaveVehicle
Dispatching rule Dismount [nofalling]
Dispatching rule CopyTargetsMount
Dispatching rule ApplyRules - checking 1 rules for button 1
- no rules matched
Dispatching flow control action IF [mod:shift] - IF test is false
Dispatching flow control action IF [submerged] - IF test is false
Dispatching flow control action ELSEIF [dragonridable] - ELSEIF test is false
Dispatching flow control action ELSEIF [flyable] - ELSEIF test is false
Dispatching flow control action ELSEIF [floating] - ELSEIF test is false
Dispatching flow control action END
Dispatching flow control action END
Dispatching rule SmartMount - filters:
- filtered list contains 27 mounts
- trying Ground Mount
- found 24 mounts.
- WeightedRandom n=24, t=0.960, c=0.238, w=0.040, p=0.042
- setting action to mount Violet Raptor
PreClick ok time 5.772500038147
PostClick handler called on LM_B1 (inputButton=LeftButton, isDown=true)
--- Options DB ---
DJvuZXnUn4Fo3dDYmIIKIK9nNKM7AtU1zIssN(IgRSR2D1zTsE0kv3Kh8V9(brak7AN295ozgBAsaqGp
8baQuPQ(Cv52J1J0Vlp2UFQEBZd38QhU5QX5d1Dlhp0VV9WxBgp3o0xTjunvvE9UXlqQxpCF9y9PtdxG
SLhRpvFEEASEr4p1CAUB48)nPp99JdZxIBSP(hhMh7UajFDx95P94QVeZ(3AoFU(BnDDnxIhF15JdhUe
G4Vx)h13xFQz3LiCz9DiJD7fi5hM32m2FbcwEhcPVF(w6N)VfhkC34W(2UM3389Z)mwu5BB2xp39CIZ6
bVixz94Fc94Pc8CgX65Vaj4rx(lM3xp)NKQxf45z31ZE5e6J88NNdxp85PThP4pjtLKaYCOB4BXK35za
U9VzyUFIYtB0gVXgQ2yuvBSbBbwAlQ2OCMcDCPopp4Ga2QnfMcRhlXj6GjpJegRlkOFAHa56CdeWMrgS
qTiSzzBARc8NQmxGSp2SGmPFrDiJXfLlhldKF5iFrTC)0fsctUsbF)yxtCjzssJ4M2OOoVMOMlBrbbK1
6ZIUJYh8HOdBDEAdYOENJC34TyxDC4cakMEbEFzB)5P6(TnliPQQ891DTN2nmwTjRQ8VaY0ss79T9h2n
C6mzN8QYpFe0N3nmEa)Ay)d3uom3rNLHZ(T6UUZXT)q7HJt9q1fNVSCAy809T97GctdBVTExd0rbN4QJ
9)YT1hBM(ZpCZITVUBx6sj7cT)15(DJ13sMcA87OeBEhfdwho8lthQh3bfFFtZDKcW5FlK(x(mMim0l7
BD2hj7hB77R321SK4k)u9pgg33qYct3rcxWr6MM)18zINaRE98uxD)oGv5HhR0BhUV)8sYeLjTDW1F4M
3u)pb6DEjfXM66TZDKT0fe5UE3P2Ea9BcWY)A)WPMXMd19l0ywH3m3fn2coJUgthh6or(SFPAF7T7PTo
bpaHiLeaJT8JTtSgu4dQeS)x62Hop9e6G88v)4pg6E1MMX5Vr(h2zZW40XXgk2kYGn(A7qxdmZVn0rBb
2F5NhBR7IgEAX5qRQ7wyse0Cvhil1BF4MVckqZ3XM6LUz7gUFFnfcXKaOUy7T1Jlw)3h6xizqCRHOpOh
W(2rY4TtGH0juIx3nmasX7MhrsR5jnSx6wlTkWYXMZGQ1ackySV(Ly9iKExx9b4)9hIu)yrgu(tFztv5
FcwNlI(p3cz4Nj1ZvevEptk3t3k2Q6Psf7i9K94MqpvoxEHBXCV7d)JQYxr7boF(l4TpDlGz7))S4(5b
5lafiUprZl(4y7Wy7ulh7ENopBPdngwqdaIRkuXU20XkPbo3Y3gc8XXBjjyuBTnt5JhxeYIQyYuH84E(
mlp5i3XAqZBYLv2O3GPjAEYHXfS8EbLlzL4kJYY3MblzpWLPyn0fAlFQBzObwLR98qP4ipsdix8E1bnR
RZA5aUWeCUegzsyuUam(0mUG4FkVtqdgFrSPcYQCxcdmjn8jmqf9uTpesELa(oVGUEdFB6aJPfkmBp69
(yKHmjBdcl4Oan3I3a6dAy82XHOXYWPoKTcjoja5e1YRniBKvuKWdDcf4iE5TbmiW6f0oomnpkPNZHKv
Cr(ne8ThpLEmbFQ1ZxgcygSOq3LSIpfYr)KQ4KudJhgJewKcmoJXaCq79wgYjpqSIlOKGKjw8dBOtnUC
2mXI0fCj(kfgHyUt61tfitWWErYL5mc5YCQqjGbbvQKMSgQC(ArCyuP4qGfDwQosElMXl8uqoks6YaUv
kQ5xssgc3wUCVC2f3RolPlN7d(S0PbtLaAXtbuWGB8zFuaHsqBcEsik3SGCuFYrtjlPqotXLweOLlUSt
GVcBQWJzFOCtjv(kPWZUYsDkUOXlqqb8kMGBDUv4BfWJN6uEM4GEIz8TbNj1sKl4j)tfxX1bwRvRyFYW
B5sTNmjpJPoAVWfb9KbyUyMF3m9hOnf3upZj0Vmjn40A1QF5t(fJGkq3I(V3l1LG6Ssa5M2O1vcF1YDG
XarlJu9kwkKndJQMGI9fTXWJiafJzcEDqQtcpI)PfxHHl0dG7ulFKIks2w7vXTmJFDq1cSW1(yQbx0cg
gBzK3ujNxiGUWkLLxv4YeYMZh9a0kZUsX4k)4h0ebiU(aMZT25xLonbKmdG8G4PudZOvC5(mo04V2tfz
(S7JXb8GvTwNgLKV2ytYGwPfhWkFcoyicG1QZeThYh2KhKmmFfwVuUfCfP4MZlXpglkVsMZjnCsL2zkU
bp1mqM46msacDLBq(MtWBxrwxYkM0Q0mjzoNw6mI(XbXJL8dXPzEb38ancKgkgNDDsA6vafr5iGBTPfh
1ffsztEMrkGkKeMYWEmIq5Dsy016mAbXuYJSqhxzLsEJfQZYwHp25ZDCkGwX0SuvfXf4vG6LQMzyHwT6
cYCV4)5aQLhdWfX0nlJw0EUtCbAPWjoDqMmBKKj1VSiTxQxGBfcxpngtkNWBnCxjKjzRrpZlE)uhdwtu
6YZe0fYyXGqBjmWKUR1NaLLwLioCuqKKCELwIhAoBYEs0kdYr8ZucsxgFYmSxPbuUM4KxbIofc7qqxAG
cZaXBIwmnE3EDFpE5(2MV2w)L)k(AUPL)v9V)d
Did a bit of testing. Classic is all kinds of weird. My new DK has no riding skills at all but can ride ground mounts.
You should definitely hack your own copy for now. This is going to take a long long time to figure out what the right fix is that doesn't fix one issue and break 10 other things.
I have no way of investigating or fixing this on my own since I don't play classic and don't have any characters there that can fly nor intention of playing or leveling any. Also I doubt anyone is likely to buy me a boost and I'm definitely not planning to buy one myself.
If you can figure out what's wrong, let me know and I'll incorporate the fix. The most likely explanation is that whatever riding skills unlock flying have all changed, and so LiteMount doesn't think you know how to fly (assuming you do). The PTR max level character I boosted knew it from "Cold Weather Flying" spell ID 54197.
I found the problem is that IsSpellKnown()
returns incorrect values for these spell IDs. It will need to be changed to IsPlayerSpell()
.
Thanks to Meo and Rawr on the WoWUIDev Discord for this solution.
This screenshot on a character flying in Northrend shows incorrect value:
This screenshot shows the output of IsPlayerSpell()
on the Druid I reported this issue on (L64, 150% flying, no cold-weather).
Wanted to add, thanks for your help, much appreciated! I admit I'm not that familiar with the difference between IsSpellKnown and IsPlayerSpell and so far googling is not helping me as much as I want. :)
Not trying to be obtuse, just want to separate "works for me" from "works for everyone". Extreme example, this would fix your problem, but not so much mine:
function LM.Environment:KnowsFlyingSkill()
return true
end
Honestly, that seems pretty weird to me. I'll check it out though see what I can come up with. I can't see how this explains it working on my PTR with cold weather flying and not for you.
Do you have any toons without flying? What do those same tests show there?
In your (Blizzard) spell book what does riding skill does it say you know? And what is the output of /dump GetSpellInfo('name of that spell")?
Cheers, X.
Honestly, that seems pretty weird to me. I'll check it out though see what I can come up with. I can't see how this explains it working on my PTR with cold weather flying and not for you.
I think this will always work in Northrend because you can't purchase Cold-Weather Flying without already knowing how to fly and IsSpellKnown(54197)
correctly returns True/False.
In your (Blizzard) spell book what does riding skill does it say you know? And what is the output of /dump GetSpellInfo('name of that spell")?
In Classic only Cold Weather Flying shows in the spellbook. Riding otherwise displays like a secondary profession, again on my 64 Druid with only 150% flying:
60% mount is Apprentice at skill level 75
100% mount is Journeyman at skill level 150
150% flying is Artisan at skill level 225
280% flying is Expert at skill level 300
I just asked a Guildy who confirmed 310% only applies to some mounts so you couldn't check for a riding level, you'd have to check if any of those specific mounts are known.
Do you have any toons without flying? What do those same tests show there?
Level 28 Rogue with Apprentice/60% riding:
Level 80 Warrior with Expert/280% riding:
I think what's confusing me the most is the second of your original screenshots.
If the information that "IsPlayerSpell returns true if the spell or its overrides are known" is correct, then there's no possible way IsPlayerSpell could be false for 60% riding and 100% riding but true for 150% flying. You haven't forgotten how to ride!
That puts the whole idea this is the fix in a lot of doubt in my mind. It's not behaving the same as IsSpellKnown but it doesn't seem to be any more consistently right.
This has been an ongoing issue for years: Blizzard are very inconsistent in how they check if you know how to fly. In some patches you have been able to fly without knowing ANY riding skills (as a druid). It's probably going to take a bit to untangle and I want a fix that works for retail and classic without having to maintain both separately.
In the old days I used to keep characters are various levels with various riding skills learned or not to try to test this. But Blizzard have changed it all up 5 times in the last couple of years.
This is a series of /dump
s on a character that has Cold Weather Flying, but only Artisan riding (not Expert)
Dump: value=GetSpellInfo(34091)
[1]="Artisan Riding",
[3]=136103,
[4]=0,
[5]=0,
[6]=0,
[7]=34091
Dump: value=GetSpellInfo(34090)
[1]="Expert Riding",
[3]=136103,
[4]=0,
[5]=0,
[6]=0,
[7]=34090
Dump: value=GetSpellInfo(54197)
[1]="Cold Weather Flying",
[3]=135833,
[4]=0,
[5]=0,
[6]=0,
[7]=54197
This is a series of
/dump
s on a character that has Cold Weather Flying, but only Artisan riding (not Expert)
Sorry what I meant was doing /dump GetSpellInfo("Expert Riding")
etc. I wanted to check if the spell ID I'm using is the one they are too. There's at least 3 spell ID with the same name for some of them.
Dump: value=GetSpellInfo("Expert Riding")
empty result
I think what's confusing me the most is the second of your original screenshots.
If the information that "IsPlayerSpell returns true if the spell or its overrides are known" is correct, then there's no possible way IsPlayerSpell could be false for 60% riding and 100% riding but true for 150% flying. You haven't forgotten how to ride!
Then the information is incorrect, because that's what is happening.
Perhaps this will make it clearer:
if IsSpellKnown(54197) == true then --IsSpellKnown() can be used here because it's the only ID that shows something in the Spellbook
PlayerCanFlyInNorthrend = true
elseif IsPlayerSpell(34091) or IsPlayerSpell(34090) then
PlayerCanFlyInOutlands = true
elseif IsPlayerSpell(33391) or IsPlayerSpell(33388) then
PlayerCanGroundMount = true
else PlayerCannotMount = true
end