danreeves / dt-exchange

39 stars 18 forks source link

Allow filtering by specific stats #40

Open Coconutcoo opened 1 year ago

Coconutcoo commented 1 year ago

Add a new filter "type", to allow users to filter on a specific stat.

We should probably use the localised names, e.g. "Damage" not "combataxe_p1_m1_dps_stat", since obviously you'd have to filter for every item as the prefix.

Also, we should maybe consider changing the current "minStats" filter to "minTotalStats", and then we can add things like "minDamage", "maxDamage" etc.

{
  "minStatTotal": 370,
  "minDamage": 75,
  "maxQuellSpeed": 50
}

EDIT: Another user has asked if we can "assume" max rolls on dump stats. This is effectively saying "consider a 330 roll as a 380 if one stat rolled 0 and the others rolled 80s".

On first glance, as mentioned in https://github.com/danreeves/dt-exchange/pull/48#issuecomment-1373596907 we could perhaps do this with the minModifierRating / minTotalStats, where you can mark some stats as "dump", and therefore ignore it's roll and lerp the sum of the other 4 back up to 380?

{
  "minTotalStats": {
    "dumpStats": ["Mobility"],
    "effectiveRoll": 370
  }
}
errnoh commented 1 year ago

Yup, we'll have to add this at some point. It's mostly about figuring out the interface. One way is to have each of them separate, but it's possible that something like damage>70, mobility<60 might end up being cleaner.

Anyways, not planning on having this for the next release (1.3) but definitely something to look into after that.

Coconutcoo commented 1 year ago

If we wanted to be really verbose, perhaps then require

[{
  "damage": {
    "gt": 70
  },
  "mobility": {
    "gte": 60
  }
}]

Starting to get complex, but does allow for all the rules I can think someone might want. At some point the JSON representation becomes irrelevant if we have a nice UI to construct it though.

CautemocSg commented 1 year ago

Filtering by specific stats is implemented for minimum values here https://github.com/danreeves/dt-exchange/pull/77