Xruptor / BagSync

BagSync tracks your characters items and displays it within tooltips.
http://www.wowinterface.com/downloads/info15351-BagSync.html
Other
32 stars 21 forks source link

Explanation of pet breed, for potential use in extended search commands #271

Closed tflo closed 1 year ago

tflo commented 1 year ago

In continuation of: https://github.com/Xruptor/BagSync/issues/263#issuecomment-1465196529

breed? Not sure what you mean there. I'll have to look at the PetJournal API to see.

A pet can be one of ten different breed variants (or one of twenty breed IDs, since they are separated by sex). The breed determines the relative distribution of the primary stats of the pet. See here for better explanations:

https://www.warcraftpets.com/wow-pet-battles/breeds/ https://wow-petguide.com/Section/93/Breeds_and_Stats&ScrollTo=2-Explanation_of_Breeds

As an example, here the breed as displayed by BattlePetBreedID and PetTracker:

Breed example (tooltip) WoWScrnShot_031223_151218 Oribos Exchange (second tooltip block) is pretty good here, as it lists the breed-specific median price for many pets.

There are pets that are largely more useful (for battling) if they are of a certain breed, depending on their abilities. For a few pets, breed is a price factor for the AH, with the S/S Gilnean Raven as the (by far) most prominent example:

Scroll down to "Regional Breeds": https://theunderminejournal.com/#eu/azjolnerub/battlepet/630

I'll have to look at the PetJournal API to see.

I don't think this is directly accessible via API, that's why I mentioned the potential complications due to the use of a dedicated library (eg BattlePetBreedID). If I'm not mistaken, the breed ID has to be "reverse-engineered" from the pet's primary stats at a given level.


This just as an explanation. I don't think it's really worth the trouble to implement it as extended search, because, as discussed before, if the search hits are listed separately, you can see the breed in the tooltip (like shown here). If you have discarded that idea, then no issue either, since I still can use Armory when I need detailed search results.

Xruptor commented 1 year ago

Oh okay I was looking and the only thing relevant that I was able to find was PetType. https://wowpedia.fandom.com/wiki/BattlePetTypeID

Which is one of the returns from GetPetInfoBySpeciesID https://wowpedia.fandom.com/wiki/API_C_PetJournal.GetPetInfoBySpeciesID

I think you are right and the breed type is something that is calculated specifically for that addon. I really don't want to go out of the way to implement that. So perhaps like you said it may not be really worth it.

What I could do is level, petType (as described above) by a number, and the other stats I mentioned before. (speciesID, level, breedQuality, maxHealth, power, speed)

Right now I have the new Details screen just showing the Pet Level and when you hover over the item, it WILL display the BattlePet tooltip with the appropriate stats stored in the DB for that particular entry in the DB. So it will not be grayed out like it normally is.

If you think that's fine, I can leave it that way. However, if you feel that adding additional search commands for battlepets is worth it, you would need to let me know which commands you are interested in that I stated above.

tflo commented 1 year ago

Right now I have the new Details screen just showing the Pet Level and when you hover over the item, it WILL display the BattlePet tooltip with the appropriate stats stored in the DB for that particular entry in the DB.

Yes, this is great and totally sufficient! (I wasn't sure if you were still going for it or if you'd discarded it).

Any chance for a pre-release upload here? (But only if it does not make my database not backward compatible.)


What I could do is level, petType (as described above) by a number, and the other stats I mentioned before. (speciesID, level, breedQuality, maxHealth, power, speed)

If you think that's fine, I can leave it that way. However, if you feel that adding additional search commands for battlepets is worth it, you would need to let me know which commands you are interested in that I stated above.

So, I think it's fine, yes.

You can maybe get further inspiration from Rematch's pet filters:

WoWScrnShot_031223_172049

But not every filter/search that is useful in the pet collection is also useful for pets in bags/bank. So, ATM, I really think it's fine.


Damn, looking at my custom scripts in Rematch, I just had another idea: Saved Searches!

For example, in Rematch I use scripts like these to display certain pets, in this case pets that are high in demand because they are needed for many pet battles or pet dungeons:

local str = petInfo.speciesName
return
-- Xu-Fu Tier 1, tradable
str:find "Ikky" or
str:find "Iron Starlette" or
str:find "Chrominius" or
str:find "Mechanical Pandaren Dragonling"

I have this script (and many others) saved as filter in Rematch, so that I can – for example – quickly check if the slots of these pets are all filled with level 25 pets, or if I have to buy one, or level one, or get one from an alt's bank.

I'm regularly doing the same for bank pets with an Armory search, to make sure that I have at least one or two L25 extra in stock. Of course, this are 4 separate searches to do each time, so having the possibility to save this as a search in BS would be a really nice QoL thing!

But, hey, this is just a spontaneous idea 🤐, and I'm aware that it would take a lot of work, not to speak of GUI changes. However, this feature would really make BS stand out among all search tools 🙄

Xruptor commented 1 year ago

level is of course useful, especially if it accepts operators (eg < 25 or > 1 and < 25) breedQuality: Not sure what you mean with this. If you mean just "quality" (aka 'Rarity'; poor, common, uncommon, rare), yes, this is useful too. maxHealth, power, speed: these are the primary pet stats (which together make up for the breed). Individual stats (eg speed) can be essential to know for certain pet battles, which means in first place they must be available in the Pet Journal / Rematch, and they are. For pets in bags/bank not really a useful search – IMHO. But again, why not.

Okay so I will look into implementing level, breedQuality (yes that's what blizzard calls the rarity), maxHealth, power and speed.

I like how specific and informative your posts are. They are elegantly organized and you provide a lot of detailed explanation for each of your points. So please fee free to be as descriptive as you like. I actually like long posts lol. It makes things clearer and allows you to get your point across.

P.S: You get extra bonus points for using advanced markdowns in your posts! I always forget about these and just use the standard GitHub toolbar options. I wish they would extend it to add more of the markdowns you use.

Anyways, in terms of the saved searches, actually that's not THAT difficult to implement. If you think about it I already have an advanced search algorithm in BagSync now with this rework. It would just require to update the search library and then allow you to save search strings.

local str = petInfo.speciesName
return
-- Xu-Fu Tier 1, tradable
str:find "Ikky" or
str:find "Iron Starlette" or
str:find "Chrominius" or
str:find "Mechanical Pandaren Dragonling"

Would be something like this. (Example as I'm STILL working on this) bpname:ikky|bpname:Iron Starlette|bpname:Chrominius|bpname:Mechanical Pandaren Dragonling

Right now the search library doesn't support adding spaces in between commands. It would be too difficult to explain why lol. Just know that's something I'm working on improving.

So it's possible to improve that and then just add the ability to save search strings.

tflo commented 1 year ago

P.S: You get extra bonus points for using advanced markdowns in your posts!

OT, but Github's MD flavor isn't what I would call 'advanced'[^1]. If you are looking for a really good MD flavor, have a look at Kramdown.

Or, for your basic PDF/print/web needs go AsciiDoc, or for more professional print/PDF stuff ConTeXt (way better than LaTeX, IMO).

[^1]: But at least they have added footnotes now. See also here.

Xruptor commented 1 year ago

I'm wrapping up some stuff but I'm getting to some of the final additions and cleanup.

One of the additions I'm looking at is the introduction of search parameters for Battle Pets as I have discussed before. After reviewing it, I've come across an issue and I'm not sure if I want to tackle it. So it may be possible that I don't implement this feature after all.

The issue is quite simple, unlike other addons I only display a single entry per item found in the search routine. There is no need to show multiple items of the same name or type in the search listing. So if I were to implement battlepet search parameters, how would it display multiple found instances when in reality only one will be displayed. Technically a result will be found but you can only see the results when you click on the new "item details" button. It won't however show up multiple times in the search listing. The issue with this that the return result will probably be a grayed out lvl 1 pet if the returned matches exceeds more than one.

Example issues:

name:gorm && bplvl:20

Bob has a pet "gorm" at lvl 20, with stats 50,60,30,100 Xavier has pet "gorm" at lvl 20, with stats 20,60,70,40

Which pet do I display if there is only one listing per item returned? When you hover over it, which tooltip should display? See the problem? This is why for multiple entries I return a gray lvl 1 as the stats are not checked, just the speciesID and the name.

another example: bplvl:20 && q:rare && bptype:4

Bob, Xavier, Amanda, Jackson all have pets that are level 20, are rare, and are 'Undead' (https://wowpedia.fandom.com/wiki/BattlePetTypeID)

Which do I show as the single listing?

I know Stash or Armory displays a found entry for each item found, so they can pull it off there, but I don't like doing that as it's just a lot of clutter. So I restrict it to one entry per item.

I REALLY don't want to show multiple listings for one item. So unless this can be useful to you in the "Details" view, I don't know what else to do here. If you are satisfied with the single search entry being returned and having to click on the "Details" button then I can do that, otherwise it would be somewhat of a pain to work around this issue.

tflo commented 1 year ago

Technically a result will be found but you can only see the results when you click on the new "item details" button

Example issues:

name:gorm && bplvl:20

Bob has a pet "gorm" at lvl 20, with stats 50,60,30,100 Xavier has pet "gorm" at lvl 20, with stats 20,60,70,40

Which pet do I display if there is only one listing per item returned? When you hover over it, which tooltip should display? See the problem? This is why for multiple entries I return a gray lvl 1 as the stats are not checked, just the speciesID and the name.

Isn't the issue the same, with or without extended search parameters?

I haven't seen the new Item Details feature yet, but what I understood so far is that the Details Button will show me detailed "subresults". E.g., if I search for a pet – without any search parameters beside the name –, I will get one hit in the main window (pet name), and when I click the Details button, I get a separated listing of the found instances, which allows me to see (via individual tooltip) which alt has a level-25 variant and which has only level 1 pets in the bank (for example).

Again, if I understood correctly – this would be like Armory's multi-instance listing, but instead of in the main search result window in a secondary "Details" window. A detailed listing in 2 stages, to say it so.

So, any search, with or without extended search parameters, has the potential to find instances with different properties (e.g. level, quality). The current solution, with the "generic" gray tooltip from the main search results, seems fine to me, as the variants can be displayed via Details button.

But in any case, extended searches for pets is something that absolutely is not necessary. No one has so many pets of the same species with varying attributes that it wouldn't be possible to locate the wanted one in the list also without narrowing down the search via parameters.

If you are satisfied with the single search entry being returned and having to click on the "Details" button then I can do that

Yes, this was what I was thinking you were going for.

I know Stash or Armory displays a found entry for each item found

Actually, only Armory does that:

WoWScrnShot_031623_140603

As a sidenote, have a look at the discrepancy in the number of found items:

[^1]: I was sure AH was already implemented in Stash before DF, or did he say he wanted to? Have to check this out…

Xruptor commented 1 year ago

Yes a detailed breakdown is displayed in the new Details window, which also displays the Pet Level in the breakdown. This is the only thing that is shown as the Breed calculations are not done. You can however hover over a pet in the Details listing and it WILL show you all the stats of that particular battlepet. This is because I now store all pet stats as they are found.

In addition due to all the changes and rework that I've been doing (it's a HUGE rework), I'm forcing everyone to reset their databases. This is to ensure compatibility and cleanout old garbage that I don't really want to do checks for. Honestly, the FixDB() function was growing too big, I want to slim it down, so this is a good way to do it. It's a slight inconvenience but it's worth it in the end. The last time I did this was YEARS ago.

I'll close this ticket then since you are satisfied with the Details view.

P.S: YAY! dances the counts are showing correctly.

tflo commented 1 year ago

Yes, I'm satisfied 🤤 …and…

it's a HUGE rework

…feeling guilty now 🙄.

But I think in the whole process you also did some things that I would consider very important fixes (though I know they weren't technically bugs), like:

tflo commented 1 year ago

Wow, indeed, huge update that you have released there! And it is absolutely great! Details window, exceptionally great!

A huge pile of extra bonus points for:

Thank you 🥰

Xruptor commented 1 year ago

Wow, indeed, huge update that you have released there! And it is absolutely great! Details window, exceptionally great!

A huge pile of extra bonus points for:

  • Including the Saved Search feature already (I expected this for later, if at all)
  • Making the pet level a "first class citizen" in the Details window. Seeing the level in the list, without the need for the tooltip, is fantastic!

Thank you 🥰

I'm glad you enjoy the changes. It was a lot of work as I had to rewrite all the GUI elements from scratch. In addition I went and streamlined and improved a lot of the wireframe and framework modules, of course adding enhancements along the way.

I'm debating on adding the rarity in the details listing for battlepets only. It would be a simple update. That way you can see it at a glance. I would do that by coloring the level number by it's quality, rather then displaying the actual word (which takes up space in the display line).. mmm or perhaps the word LEVEL in the quality color.

After that I'm definitely going to take a break/hiatus from implementing any new features. I'll just do bug fixes.

tflo commented 1 year ago

I'm definitely going to take a break/hiatus from implementing any new features

But wait, I have another idea… [just joking, of course]

debating on adding the rarity in the details listing for battlepets only

IMO, not really necessary. (Battle-Stones to make them blue are cheap, which makes the rarity less interesting than the level). But, on the other hand, if it's just the color of the level value/label it will not hurt…

But I would add an option to suppress the display of the bag and slot numbers in the Details listing.

Just a very tiny idea: Open the Details frame with a left-click (or double-left-click, or right-click) on the line, instead of only with an exact click on the Details icon.


I'll just do bug fixes.

Despite having unchecked the "Display [XR] and [BNet] realm identifiers.", I have a [*XR] label in front of my connected-realm guild, if I'm logged in to the faction of the guild. Both guilds are connected-realm, but for the guild of the currently opposing faction, the label is not displayed.

If I activate the "Display [XR] and [BNet] realm identifiers.", then I have a [*XR][XR] label for the same-faction guild and an [XR] label for the opposing-faction guild.

Probably a quick fix (or I'm doing something wrong), but if you want I open a separate ticket.


Thanks again!

tflo commented 1 year ago

PS: With the [*XR] label I mean the tooltip counters; in the Details list, the label does not appear.

Xruptor commented 1 year ago

Despite having unchecked the "Display [XR] and [BNet] realm identifiers.", I have a [*XR] label in front of my connected-realm guild, if I'm logged in to the faction of the guild. Both guilds are connected-realm, but for the guild of the currently opposing faction, the label is not displayed.

If I activate the "Display [XR] and [BNet] realm identifiers.", then I have a [*XR][XR] label for the same-faction guild and an [XR] label for the opposing-faction guild.

Probably a quick fix (or I'm doing something wrong), but if you want I open a separate ticket.

Thanks again!

Please open a new ticket and show me a picture of what you mean for the several occasions you mentioned above. Break it down for me by faction, realm, and connected realm. The "[*XR][XR]" should not be happening as an example. That should only show if a guild is a connected realm but none of the other options are enabled. This includes opposing faction guild. Just provide me adequate data and pictures (which help a lot) so I can see if I can replicate and trace the problem. I don't think it would be a huge issue to fix.