Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1.14.0 support (private server) #9

Closed
kalypto89 opened this issue Oct 21, 2022 · 19 comments
Closed

1.14.0 support (private server) #9

kalypto89 opened this issue Oct 21, 2022 · 19 comments
Assignees
Labels
question Further information is requested

Comments

@kalypto89
Copy link

kalypto89 commented Oct 21, 2022

Hello;
I know this version is for classic wotlk but is it possible to enable support for 1.14.0 version?
Currently there is no highlight on the action buttons for target (for either buffs on friendly or debuff on enemy).
the addon only works for your own buffs on yourself
image_2022-10-21_130328742

image

If you can't support for this version, could you please advise the code lines to alter?
I'm not anywhere near a developer or skill, but I understand that my request is quite particular so maybe it's something I can do on my own otherwise.

@mbattersby
Copy link
Collaborator

mbattersby commented Oct 22, 2022

Your first screenshot "my friendly buff on target" is not something that LBA does, so it's expected that it doesn't show. LBA only shows friendly buffs on player, other friendly units are better handled by unit frame addons.

The second one should work. As far as I can tell it works for me. See screenshot below of a level 2 warlock I made on WoW Classic (Edit) Season of Mastery showing Immolate highlighting on my bar according to the debuff on my target.

image

What's different between what I've done and what you're doing? Does it work with the default actionbars? Do the spell names and the buff names not match for these spells? Do you have any other suggestion on how I can test it when I don't play classic (and aren't going to spend hundreds of hours leveling)?

@mbattersby
Copy link
Collaborator

I just noticed that was a SoM realm. I'll try again on non-SoM just in case.

@mbattersby
Copy link
Collaborator

Re-tested on regular (not Season of Mastery) realm. Same result, seems to be working for me.

@mbattersby mbattersby added the question Further information is requested label Oct 22, 2022
@mbattersby mbattersby self-assigned this Oct 22, 2022
@kalypto89
Copy link
Author

hey, thank you for the reply and for looking into this.
I mentioned this in the title but maybe I wasn't specific; I think this works for me on both SoM and classic era; however the version im working on right now is 1.14.0 pls see screenshot. this is used via hermes proxy to be able to play 1.14.0 classic client emulated on a vanilla server 1.12.
I was wondering if you are able to test for this? Or again maybe advise some code that I could have changed.
Sorry I know this is very specific, but your add-on is a huge QoL improvement especially for playing warlock
image

@mbattersby
Copy link
Collaborator

mbattersby commented Oct 22, 2022

Ah, I see!

My best guess is that this is probably a bug in Hermes Proxy.

The UnitAura() API call to fetch buffs and debuffs didn't exist in WoW 1.12 (didn't come in until 3.0.2 I think), also there were spell ranks in the UnitBuff() and UnitBuff() return values which were removed at the start of BfA retail and also aren't there in the Classic client.

So Hermes Proxy must be doing something to handle these differences. Maybe not 100% right.

First thing to check would be to see if the aura query is working. Put up one DoT on a target and do:
/dump UnitAura('target', 1, 'HARMFUL PLAYER')
and see if it prints the debuff. Most obvious problem would be that nothing comes up because they aren't handling 'HARMFUL PLAYER' properly'. If it shows nothing you probably should log that as a bug with Hermes Proxy on github. You can also test if
/dump UnitDebuff('target', 1, 'PLAYER')
works instead.

What it should show is 15 values as per https://wowpedia.fandom.com/wiki/API_UnitAura

image

If it shows a different number of values that would be interesting too, or if the [2] value is a small number or 0 or missing indicating that they have left the spell rank in their incorrectly.

@mbattersby mbattersby changed the title 1.14.0 support 1.14.0 support (private server) Oct 22, 2022
@kalypto89
Copy link
Author

Hi there, first of all thanks for the support here. I followed your instructions and neither of the queries from above listed any result - please see the screenshot.
image

Does this mean I should log the bug with HermesProxy instead? Thank you.

@kalypto89
Copy link
Author

Hey, I noticed that the debuff is also not showing on NeatPlates. Not sure if you are familliar with this add-on but the add-on shows your debuffs above the enemy target nameplates so maybe it is quering the same code as your addon?

So its not showing the debuff please see below:
image

But another addon, called Nameplate Auras will show the debuff, but only if the aura name is manually loaded as show in this screenshot.
image
image

Not sure this information helps you but I was thinking that maybe the source where NameplateAuras is querying would help in determining where the error comes from/or what could be changed in neatplates / litebuttons to help detect and display the debuff?
Also strange that it only works in nameplateaura when the spell is manually loaded in the addon interface but not before.

@mbattersby
Copy link
Collaborator

Reading the response to the HermesProxy issue, it seems like the 1.12 private server has no way to determine which buffs are cast by you at all.

You can go through Controller.lua in the LBA code and remove the PLAYER and RAID from all of the ForEachAura calls (should be 5 places). Then you can see the auras, but they will display if anyone cast them not just you. That appears to be the only thing possible in the 1.12 server – what LBA relies on to work just isn't there.

Sorry, looks like you're plain out of luck and it's just not possible to do in 1.12.

@kalypto89
Copy link
Author

hello.
well your suggestion did the trick.
better than nothing i guess, still helps alot!
see the result:
image
thank you so much for your help, you've been asweome!

@mbattersby
Copy link
Collaborator

Most welcome. I've never known anything about private servers before so it was an interesting thing to look at.

@kalypto89
Copy link
Author

kalypto89 commented Oct 24, 2022

Oh sorry - just one more thing!
shouldn't it also show the duration of the debuff in the action bar?
Thanks!
image

@mbattersby
Copy link
Collaborator

mbattersby commented Oct 24, 2022

Niether Vanilla nor Classic provide debuff durations – in the case of Classic by deliberate decision from the developers to take them out of the code. So the expirationTime field in the UnitAura return is always empty.

I think most of the addons that support timers are using the UnitAura wrapper from LibClassicDurations.

If you install that you can probably put something like this at the top of Controller.lua:

local LCD = LibStub("LibClassicDurations", true)

and then replace

local UnitAura = UnitAura

with

local UnitAura = LCD and LCD.UnitAuraWrapper or UnitAura

@mbattersby
Copy link
Collaborator

If I have time to test it I might put that into the core code, but you'd still have to install LibClassicDurations separately I'm not going to embed it as I can't keep it up-to-date.

@kalypto89
Copy link
Author

kalypto89 commented Oct 24, 2022

ill try it out and let you know. right now i can tell you for sure that weakauras for example populates the debuff duration on target. thanks for the tip, ill keep u updated!

  • edit
  • Update:
  • installed libclassicdurations
  • added the code as you suggested and it works!
  • you are a genius!

@mbattersby
Copy link
Collaborator

Ha, well the fact it works is proof at least one of your other addons is using LibClassicDurations, because it needs a bit of a tweak to work without one.

local LCD = LibStub("LibClassicDurations", true)
if LCD then LCD:Register("LiteButtonAuras") end

I also had to modify the LiteButtonAuras.toc to add LibClassicDurations to the OptionalDeps line

@mbattersby
Copy link
Collaborator

I checked and WeakAuras2 is using LibClassicDurations for this as well. :)

@mbattersby
Copy link
Collaborator

mbattersby commented Oct 25, 2022

Out of interest, one of the other return values from UnitAura is "isCastByPlayer" (field 13). I wonder if it's filled out in Hermes Proxy which would be a way around the "PLAYER" filter. I suspect not but if you feel like trying the DoT test again and running

/dump UnitAura('target', 1, 'HARMFUL')

I'm curious if [13] has anything in it.

Edit: probably not, internet seems to say almost none of the fields were there in 1.12.

@kalypto89
Copy link
Author

sure no worries, happy to help!
here you go
image

@mbattersby
Copy link
Collaborator

Nothing there, ah well. Best we can do with 1.12.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants