GearMenu

GearMenu

221k Downloads

Hunter Feign Death doesn't trigger gear swaps

Truth- opened this issue ยท 8 comments

commented

When having a trinket swap queued and feigning death the trinket swap doesn't happen.

I've tried this with the Item Rack addon as well and that one works works correctly, while feigned death and and combat drops it will swap the queued gear swap.

commented

Hi @Truth-

That sounds strange. I would expect Feign Death to behave not different from leaving combat regularly.

I don't have a hunter to test myself and thus need to ask you a lot of questions.

Are you able to reproduce this consistently and if so could you record a video when this happens? That would help tremendously. Can you also tell what do you mean by the trinket swap doesn't happen? Is the combatqueue just never updating and the icon stays there ready to be switched or is it disappearing but the switch is not done?

Right now I can only compare it to vanish because I think it is really similar to feign death and with vanish it works without a problem.

Cheers,
RagedUnicorn

commented

100% reproducible, i'll look into maybe recording something when i get home after work.

Steps i do to mimic normal combat is the following:

  1. Pull mob + send pet to attack
  2. Queue item swap (in my case i usually swap trinkets), icon in the top corner appears
  3. Put pet on passive (prerequisite to be able to get out of combat while pet is still in combat)
  4. Feign Death
  5. After ~500ms i leave combat while in feign death

After doing these steps still lying in feign death and out of combat the swap just never happens and the icon to indicate the queued item swap is still there.

Doing the same steps with ItemRack Classic it works as intended.

commented

Hi @Truth-

Thanks for your detailed description. I think I might have an idea what is causing this.

As far as I know feign death is a channeled spell right? Because I have a functionality built into the addon that is putting the item into the combatQueue either when you are in combat or when the player is currently casting. I did this because I saw this often happen when I was casting my mount and tried to switch an item at the same time. So I'm currently assuming that this might cause that.

However I'm not sure about if. If that would be the case then it should at least switch after you stand up again.

Regards,
RagedUnicorn

commented

Sorry, was too busy to provide you with a video.

It's true that while feigned you have a duration bar on the screen but i'm not sure it's technically a channeled spell. Is there anything i could try ingame to test this? Or maybe get some debug prints, i see a lot of debug prints in your code but how to i retrieve those logs?

commented

Not a problem.

Yes it is possible to activate those logs quite easily.

To enable the logs have a look into code/GM_Environment.lua and adapt the LOG_LEVEL to 4 and change LOG_EVENT to true

RGGM_ENVIRONMENT = {
  ADDON_IDENTIFIER = "com.ragedunicorn.wow.classic.gearmenu-addon",
  LOG_LEVEL = 4,
  LOG_EVENT = true,
  DEBUG = true
}

Just another question then. Is it possible to change gear completely manually while feign death is running? The core if this functionality is in the function IsPlayerCasting

I'm checking for normal spells such as a mage casting frostbolt
CastingInfo(RGGM_CONSTANTS.UNIT_ID_PLAYER)

And I'm also checking for channeled spells such as a shadow priest casting mindflay
ChannelInfo(RGGM_CONSTANTS.UNIT_ID_PLAYER)

If either of those are true I'm assuming that the player is "busy" and items can't be switched.

Edit: I just confirmed this with casting Mindvision. This is a channeled spell and while it is running I'm not able to change gear even manually with the standard blizzard interface.

Error simply says: "You can't do that right now"

So unlike Feign death is working completely different I would expect the same to be happening

commented

Ran the following script while Feign Death, grouped with it's output

/run print(CastingInfo("player") == nil)
[17:50:20] true

/run print(ChannelInfo("player") == nil)
[17:50:24] true

/run print(UnitIsDeadOrGhost("player"))
[17:50:27] true

/run print(UnitBuff("player", 1))
[17:50:33] Feign Death 132293 0 nil 360 3536.609 player false false 5384 true false true false 1

Suggested fix with the above pull request. Tested and works.

commented

Hi @Truth-

Thanks for the fix. I think that would certainly work. I did however completely rework that function after investigating a bit the new apis that classic offers here.

For the fix see here - 1cd97af

If this doesn't fix your issue feel free to reopen the ticket or just quickly confirm if that works. I will then make sure that it is included in the next release.

Cheers,
RagedUnicorn

commented

I tested your fix and it works as well.