Rematch 4.0

Discuss your favorite pet addons and macros.
User avatar
Mot
Posts: 12
Joined: February 19th, 2018
Pet Score: 9448
Realm: Azjol-Nerub-EU
Contact:

Re: Rematch 4.0

Post by Mot » June 18th, 2020, 12:57 pm

A little suggestion here (please enlighten me, if this is already possible and I missed it):

A per-team (or per-pet-in-team) setting to ignore the breed.

Use-case:

I have a Taming team for taming wilds, with Emerald as tank, Nexus as damage dealer and Scraps|Grumpy|Turnip as tamer.

Since I have 3×PP Nexus and 3×PP Emerald, and Scraps|Grumpy|Turnip only come in one breed, this works fine: After each fight the team is cycled to the healthiest pets by Rematch.

I have another team that comes with the Dream Whelpling. I have 2×PP and 1×PS dream Whelpling. Here it doesn’t work. If the team has the PP Dream Whelpling, Rematch will cycle two times. But for the third Dream Whelpling (the PS) I have to found a separate team, since Rematch will not replace a damaged PP with a fresh PS.

A setting “Ignore Breed” would solve this.This could be done as per-team setting, or as per-pet-in-team setting. Not sure what would be better / more convenient / easier.

I flagged this suggestion as “little” because it really is. Not an issue, just a minor QoL improvement if you have spare time ;)

Gello
Posts: 458
Joined: January 23rd, 2014
Pet Score: 6649
Realm: Hyjal-US
Contact:

Re: Rematch 4.0

Post by Gello » June 18th, 2020, 6:55 pm

You may already know this due to the specific mention of per-team or per-pet, but there is a global option 'Allow Any Version' under 'Load Healthiest Pets' that will ignore breed.

User avatar
Mot
Posts: 12
Joined: February 19th, 2018
Pet Score: 9448
Realm: Azjol-Nerub-EU
Contact:

Re: Rematch 4.0

Post by Mot » June 19th, 2020, 9:28 am

Yep, I know that. But this is a global setting and, since most of the teams are breed-specific, changing this back and forth is a bit clumsy (and I tend to forget to reset it ;) ).

But maybe I’ll try it again. Maybe with some sort of a reminder when a tamer is targeted or when going PvP, if I can build such a thing with TMW or whatever.

Gello
Posts: 458
Joined: January 23rd, 2014
Pet Score: 6649
Realm: Hyjal-US
Contact:

Re: Rematch 4.0

Post by Gello » June 19th, 2020, 9:36 pm

How about a compromise. This macro will let you switch it more easily:

Code: Select all

/run local s,v=RematchSettings,"LoadHealthiestAny" s[v]=not s[v] print("Load Healthiest Pets -> Any Version is now "..(s[v] and "\124cff00ff00ON\124r." or "\124cffff0000OFF\124r.")) Rematch:UpdateUI()

Sservis
Posts: 5
Joined: October 12th, 2011
Pet Score: 8712
Realm: Mal'Ganis-US
Contact:

Re: Rematch 4.0

Post by Sservis » June 29th, 2020, 6:17 pm

Interesting Edge Case found.

Brown Marmot, Borean Marmot, and Brown Prairie Dog all have the same moveset, but Rematch considers the Brown Prairie Dog to be in it's own moveset and not shared with the Marmots. This is likely due to the fact that the abilities granted at level 2 and 15 are in different orders for the pets. Given that the only differences is ability order gained at levels 2 and 15, nearly everyone will never care about the difference. By the time people are figuring out movesets and optimal pet collections (hitting the cap rather than collect them all), they're really only using rare 25 pets in active roles. (and even if not, they still likely only care about the end state result)

It would be nice if all three were considered part of the same group as they functionally are the same for all practical purposes. There may be other cases, but I only noticed as the database I stumbled across this group manually. You can't cover all stat lines with just the available Marmots as you'd need 7 total pets. Adding the Brown Prairie Dog into the mix allows spreading the 7 different stat lines over 3 species of battle pet.

Gello
Posts: 458
Joined: January 23rd, 2014
Pet Score: 6649
Realm: Hyjal-US
Contact:

Re: Rematch 4.0

Post by Gello » June 29th, 2020, 6:43 pm

That's an interesting find.

I think the solution is to find a way to represent movesets so the order within an ability slot doesn't matter. Right now it does <ab1>,<ab2>,<ab3>,<ab4>,<ab5>,<ab6>. Maybe it can order <ab1> and <ab4> so the lower abilityID is first and the higher second, and repeat for <ab2>,<ab5>, and <ab3>,<ab6>. My big fear is the performance hit this may cost. It already uses a cached table so an "in filter" speed would not matter; but doing 3 mini sorts on potentially thousands of pets may extend the cpu-bound processing out to uncomfortable levels.

I'll do some testing but I'm open to other ideas.

Sservis
Posts: 5
Joined: October 12th, 2011
Pet Score: 8712
Realm: Mal'Ganis-US
Contact:

Re: Rematch 4.0

Post by Sservis » July 1st, 2020, 6:27 am

There's another variance that the current strategy wouldn't handle. What if slots were switched? ie PetA.ab1 = PetB.ab2, PetA.ab4 = PetB.ab5, PetA.ab2 = PetB.ab1, PetA.ab5 = PetB.ab4. Note that this doesn't happen currently. However there is a second example of switched abilities within the same slot. The Jade Owl should be part of the same group as the Parrot. Here's the full listing of discrepancies based on my analysis. I compared these by calculating all 8 possible ability sets that could be used and then comparing how many matched across all species, looking for any where they had the same ability sets, but there was a difference in ability order.

FirstSpecieID FirstSpecieName SecondSpecieID SecondSpecieName SharedAbilitySetCount
47 Cockatiel 845 Jade Owl 8
49 Hyacinth Macaw 845 Jade Owl 8
50 Green Wing Macaw 845 Jade Owl 8
51 Senegal 845 Jade Owl 8
70 Brown Prairie Dog 449 Brown Marmot 8
70 Brown Prairie Dog 639 Borean Marmot 8
259 Blue Mini Jouster 845 Jade Owl 8
260 Gold Mini Jouster 845 Jade Owl 8
395 Fledgling Buzzard 845 Jade Owl 8
403 Parrot 845 Jade Owl 8
409 Polly 845 Jade Owl 8
537 Dragonbone Hatchling 845 Jade Owl 8

If there were a lot of differences in the Parrot family, then there'd be more records here. ie it'd say that Senegal and Parrot were also different in addition to being different to the Jade Owl. Likewise it's the Brown Prairie Dog that's different from the other Marmots listed, which are themselves the same.

This comparison does not require family to be the same. Rematch currently doesn't do that either, but it or some other mod I'm using also provides a very obvious display of family icon on the same line as pet name. This display makes it obvious that the pets despite being in the same moveset have a difference that might matter, but usually doesn't. ex. Silent Hedgehog is a beast with the same moveset as the Malayan Quillrat/Malayan Quillrat Pup/Porcupette critters. This grouping should be retained as designed as it's preferred most of the time and obvious so that distinctions can be made when warranted.

With only two atypical pets, maybe the best fix would be for Blizzard to switch the ability order and then retain an internal design guidance that "abilities in a pet slot are always assigned in a specific order"

Also knowing that there are only two exceptions, these could be handled as such potentially, although adding a check If SpecieID=X or Y is also a performance hit and uglier methodology too. Alternatively, all movesets could be precomputed and a table referenced. This would have the downside of requiring updates each patch that added pets, but retain or improve efficiency. Edit: This table could likely be dynamically computed once client side each patch (internal version check versus last time computed, button for player to use to update/recalc since it may take a while to compute all of them) Or we can all just remain aware that there are two exceptions to find moveset, the Brown Prairie Dog and the Jade Owl.

User avatar
Mot
Posts: 12
Joined: February 19th, 2018
Pet Score: 9448
Realm: Azjol-Nerub-EU
Contact:

Re: Rematch 4.0

Post by Mot » July 14th, 2020, 1:28 pm

Gello wrote:
June 19th, 2020, 9:36 pm
How about a compromise. This macro will let you switch it more easily:

[…]
This is great, thanks! (Sorry for the late reply; my notification setting was off.)

PS:

Your macro really proved useful. I deleted quite some dupe teams that were only there for accommodating different breeds though the strat was breed-agnostic. With the quick toggle via your macro this is not a problem anymore.

I made a minor adjustment: I switched the colors for the console notification: In my culture region (Germany) Red is semantically tied to “attention”/“danger”, and Green means “OK”/“save”. (Ignoring Breeds is the unsafe setting.)

Thanks again!

– Tom

Gello
Posts: 458
Joined: January 23rd, 2014
Pet Score: 6649
Realm: Hyjal-US
Contact:

Re: Rematch 4.0

Post by Gello » August 16th, 2020, 8:25 am

A version for Shadowlands beta is posted here:
https://www.wowinterface.com/downloads/ ... sBeta.html

This version will not work on BfA (retail) clients. It's also on the curse client flagged for 9.0.1. I don't use the curse client so I'm not sure if it will prevent downloading it to BfA clients. Please let me know if so. (And of course any bugs or odd behavior you see.)

Thanks!

User avatar
FuxieDK
Posts: 848
Joined: July 27th, 2009
Pet Score: 9989
BattleTag®: FuxieDK#2678
Realm: Draenor-EU
Contact:

Re: Rematch 4.0

Post by FuxieDK » August 17th, 2020, 10:47 pm

Gello wrote:
August 16th, 2020, 8:25 am
A version for Shadowlands beta is posted here:
https://www.wowinterface.com/downloads/ ... sBeta.html

This version will not work on BfA (retail) clients. It's also on the curse client flagged for 9.0.1. I don't use the curse client so I'm not sure if it will prevent downloading it to BfA clients. Please let me know if so. (And of course any bugs or odd behavior you see.)

Thanks!
Just came to report that it doesn't work on retail.. I have to change back to "Release", since both Alpha and Beta installs the ShaLa version.

Please don't force us to use Release versions :(

And LUA errors...

Code: Select all

32x Rematch\Main.lua:84: attempt to index field 'Frame' (a nil value)
[string "@Rematch\Main.lua"]:84: in function `UpdateUI'
[string "@Rematch\Process\Roster.lua"]:99: in function `?'
[string "@Rematch\Process\Roster.lua"]:35: in function <Rematch\Process\Roster.lua:35>

Locals:
self = Rematch {
 0 = <userdata>
 HideMenu = <function> defined @Rematch\Menus\Menu.lua:298
 petInfo = <table> {
 }
 GetSpecialSlot = <function> defined @Rematch\Process\SpecialSlots.lua:69
 PET_BATTLE_QUEUE_STATUS = <function> defined @Rematch\Main.lua:493
 GetPetName = <function> defined @Rematch\Utils.lua:74
 SidelinePetsDifferentThan = <function> defined @Rematch\Dialogs\Save.lua:134
 breedNames = <table> {
 }
 FillCompactListButton = <function> defined @Rematch\Widgets\PetListButtons.lua:405
 PetListButtonOnEnter = <function> defined @Rematch\Widgets\PetListButtons.lua:167
 Start = <function> defined @Rematch\Main.lua:155
 GetPetIcon = <function> defined @Rematch\Utils.lua:66
 ADDON_LOADED = <function> defined @Rematch\Main.lua:656
 FindPetFromPetTag = <function> defined @Rematch\Process\PetTag.lua:117
 StopTimer = <function> defined @Rematch\Main.lua:682
 MinimapButtonOnMouseUp = <function> defined @Rematch\Widgets\MinimapButton.lua:53
 UpdatePreferencesDialog = <function> defined @Rematch\Dialogs\Preferences.lua:176
 PET_JOURNAL_LIST_UPDATE = <function> defined @Rematch\Main.lua:144
 UPDATE_MOUSEOVER_UNIT = <function> defined @Rematch\Main.lua:380
 SetFootnoteIcon = <function> defined @Rematch\Main.lua:958
 SpecialFootnoteOnClick = <function> defined @Rematch\Process\SpecialSlots.lua:97
 SetSpecialSlot = <function> defined @Rematch\Process\SpecialSlots.lua:61
 PetListButtonOnDoubleClick = <function> defined @Rematch\Widgets\PetListButtons.lua:248
 CreateNpcMenus = <function> defined @Rematch\Menus\Npcs.lua:595
 GetTeamStringNameAndNpcID = <function> defined @Rematch\Process\TeamStrings.lua:267
 UpdateScriptFilterMenu = <function> defined @Rematch\Menus\PetMenus.lua:707
 GetSpecialTooltip = <function> defined @Rematch\Process\SpecialSlots.lua:86
 ConvertTitlebarCloseButton = <function> defined @Rematch\Main.lua:921
 UpdateShareIncludes = <function> defined @Rematch\Dialogs\Share.lua:126
 StableSortQueue = <function> defined @Rematch\Process\QueueProcess.lua:405
 SetSaveAsTarget = <function> defined @Rematch\Dialogs\Save.lua:84
 MenuButtonOnMouseUp = <function> defined @Rematch\Menus\Menu.lua:384
 MenuButtonSetEnabled = <function> defined @Rematch\Menus\Menu.lua:97
 PetListButtonOnLoad = <function> defined @Rematch\Widgets\PetListButtons.lua:550
 AttemptLegacyStringToSideline = <function> defined @Rematch\Process\TeamStrings.lua:121
 IsNotableNPC = <function> defined @Rematch\Menus\Npcs.lua:513
 ShowAbilityCard = <function> defined @Rematch\Cards\AbilityCard.lua:16
 MaybeSlotNewLevelingPet = <function> defined @Rematch\Process\QueueProcess.lua:317
 CheckToOverwriteNotesAndPreferences = <function> defined @Rematch\Dialogs\Save.lua:188
 ProcessQueue = <function> defined @Rematch\Process\QueueProcess.lua:79
 movesetsAt25 = <table> {
 }
 ShowTeam = <function> defined @Rematch\Panels\TeamPanel.lua:406
 WinRecordOnClick = <function> defined @Rematch\Cards\WinRecord.lua:169
 ShowTextureHighlight = <function> defined @Rematch\Widgets\TextureHighlight.lua:32
 PreferencesExpectedDDOnClick = <function> defined @Rematch\Dialogs\Preferences.lua:254
 RegisterMenu = <function> defined @Rematch\Menus\Menu.lua:32
 ConvertStringToSideline = <function> defined @Rematch\Process\TeamStrings.lua:108
 GetPrefSetFrom = <function> defined @Rematch\Dialogs\Preferences.lua:96
 HandlePetShiftClick = <function
Maybe something as simple as

Code: Select all

If version = ShaLa
    ShaLa commands
Else
    BfA commands
Endif
Would work?
I've NEVER coded LUA and all my other coding skills are from 2001 and prior, but it would work in C/C++

Gello
Posts: 458
Joined: January 23rd, 2014
Pet Score: 6649
Realm: Hyjal-US
Contact:

Re: Rematch 4.0

Post by Gello » August 18th, 2020, 5:56 am

It's the god damn curse client that's been making me curse a lot the past couple days. Every file I've uploaded to try and replace the shadowlands version has been rejected and they're not responding to my ticket.

In lua it's trivial to handle separate clients in the same codebase. In an addon like Rematch with thousands of lines of xml (which would balloon to many more lines of lua if it didn't use xml), it's unfortunately not that simple due to the backdrop changes in shadowlands. There is no if/else structure in xml. It's purely a markup language.

User avatar
FuxieDK
Posts: 848
Joined: July 27th, 2009
Pet Score: 9989
BattleTag®: FuxieDK#2678
Realm: Draenor-EU
Contact:

Re: Rematch 4.0

Post by FuxieDK » August 19th, 2020, 11:47 pm

Gello wrote:
August 18th, 2020, 5:56 am
It's the god damn curse client that's been making me curse a lot the past couple days. Every file I've uploaded to try and replace the shadowlands version has been rejected and they're not responding to my ticket.

In lua it's trivial to handle separate clients in the same codebase. In an addon like Rematch with thousands of lines of xml (which would balloon to many more lines of lua if it didn't use xml), it's unfortunately not that simple due to the backdrop changes in shadowlands. There is no if/else structure in xml. It's purely a markup language.
v4.10.5b is now on Twitch... There is no mention on ShaLa in filename...

Approved for retail?

Gello
Posts: 458
Joined: January 23rd, 2014
Pet Score: 6649
Realm: Hyjal-US
Contact:

Re: Rematch 4.0

Post by Gello » August 20th, 2020, 3:06 am

4.10.5b is for retail yes they finally deleted the shadowlands one i won't be using curse again for the remainder of the shadowlands beta

User avatar
Mot
Posts: 12
Joined: February 19th, 2018
Pet Score: 9448
Realm: Azjol-Nerub-EU
Contact:

Re: Rematch 4.0

Post by Mot » September 3rd, 2020, 2:23 pm

A minor, but sometimes annoying thing:

Is there any way we could get rid of that “Cage this Pet?” confirmation dialog when caging pets? Or is this due to some Blizz-Protected API stuff?

I guess, it’s the latter, and you can do nothing about it (?) But in case it is not, let me know, and I can give you some use-cases apt to convince you to remove that confirmation dialog.

– Tom

Gello
Posts: 458
Joined: January 23rd, 2014
Pet Score: 6649
Realm: Hyjal-US
Contact:

Re: Rematch 4.0

Post by Gello » September 3rd, 2020, 3:58 pm

That will be trivial to do and should make next update (no ETA yet, working through two more addons before returning focus back to Rematch for Shadowlands).

In the meantime, if you want to cage a ton of pets, you can use this macro on mouseover of pets in both Rematch and the default journal:

Code: Select all

/run local petID = GetMouseFocus().petID if petID and C_PetJournal.PetIsTradable(petID) then C_PetJournal.CagePetByID(petID) elseif petID then print("Pet is not tradable.") end

User avatar
Mot
Posts: 12
Joined: February 19th, 2018
Pet Score: 9448
Realm: Azjol-Nerub-EU
Contact:

Re: Rematch 4.0

Post by Mot » September 4th, 2020, 7:10 am

> That will be trivial to do and should make next update (no ETA yet […])

Wow, great! No hurry. Also many thanks for the macro, which works perfectly.

Gello
Posts: 458
Joined: January 23rd, 2014
Pet Score: 6649
Realm: Hyjal-US
Contact:

Re: Rematch 4.0

Post by Gello » September 21st, 2020, 8:47 pm

A major update has been posted tonight for those in Shadowlands beta/ptr:
https://www.wowinterface.com/downloads/ ... p?id=25653

1) The Options panel now has a search bar. There are now over 100 options so it's about time it was included. The Options Panel has also gone through a bit of a rework to make the collapsed view the principle view of options. If you like the old always-expanded view, there's an option 'Remember Expanded Lists' to restore the old functionality. And an option 'Collapses Lists With ESC Key" for those who want to take the collapsed posture a step further.

2) The Target button now summons a scrollable list of targets grouped by "expansion" and "map". (There are over 300 targets now and that context menu was getting ridiculous.) For those who don't like the new target panel, there's an option called 'Use Old Target Button Menu' to "restore" the old context menu targeting style. But please let me know what you didn't like about it.

I feel the new target panel could use some refinement, but it's been my plan to do this for some time and I'm reasonably happy with how it turned out. If it proves successful, I may do the same for the Teams panel too. In addition to allowing more groupings within a tab rather than attaching 64 tabs to the side of the window, this will solve an old issue of how to represent teams with more than one target (or vice versa) in the UI. In a collapsed view you see the topmost team/target, and expanding it would list the alternate teams/targets beneath it. Again, I think it could use some refinement. I don't want things to be buried behind too many clicks. Let me know what you think.

User avatar
Mot
Posts: 12
Joined: February 19th, 2018
Pet Score: 9448
Realm: Azjol-Nerub-EU
Contact:

Re: Rematch 4.0

Post by Mot » September 24th, 2020, 5:58 pm

Are there any issues with the “Allow any version” setting? Asking because for me it doesn’t work anymore.

[I had written up a complete issue description into the form, but it got deleted as I hit some wrong button. Stupid me, that I haven’t written it in my draft app before – and also darn stupid outdated webpage]

So, if you need more info, just let me know. I’ll post it again then.

Gello
Posts: 458
Joined: January 23rd, 2014
Pet Score: 6649
Realm: Hyjal-US
Contact:

Re: Rematch 4.0

Post by Gello » September 24th, 2020, 8:32 pm

I just tested and it seems to be working. Can you give a summary of the issue?

User avatar
Mot
Posts: 12
Joined: February 19th, 2018
Pet Score: 9448
Realm: Azjol-Nerub-EU
Contact:

Re: Rematch 4.0

Post by Mot » September 25th, 2020, 10:55 am

Hm, yes, today against Sir Galveston with HS and SS Surgers it worked again perfectly.

The issue was yesterday against Amalia with differently breeded Starlettes. I double-checked the setting several times and I reloaded the UI several times, and —if memory doesn’t fool me— after one reload it worked fine again, but not after other reloads. I used Starlettes as carry (battle) pet and another one as leveler at the same time in these fights; maybe this had something to do with it.

So, for the moment just forget it. I’ll report back if I can reproduce it again. Sorry for the noise.

– Tom

Post Reply