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

Discussion: Percent vs Flat values for stats that stack additively (critical strike chance, lifesteal, omnivamp) #54

Open
rdavis0 opened this issue Jan 6, 2023 · 2 comments

Comments

@rdavis0
Copy link
Contributor

rdavis0 commented Jan 6, 2023

I'm wondering about the way Critical Strike Chance, Lifesteal, and Omnivamp are classified in item stats.

Each of these stats is displayed as a percentage in game. However, for the purposes of stat calculation, they behave more like flat bonuses; that is to say, they stack additively. This is in contrast to a stat like Armor Penetration which is both displayed as a percentage and stacks multiplicatively (and is also stored as a percent in the meraki data).

While the effects of these stats are indeed applied as percentages (e.g. 20% chance to critically strike or lifesteal healing for 8% of inflicted damage), the values are handled more like flat bonuses. Currently, meraki stores each of these three stats as percent values, but I think it would be more accurate to store them as flat values. To me, the difference between the way the stats stack seems more pertinent than the format in which they are displayed.

"6692": {  // Eclipse
 "stats": {
   "omnivamp": {
        "flat": 0.0,
        "percent": 7.0,
        "perLevel": 0.0,
        "percentPerLevel": 0.0,
        "percentBase": 0.0,
        "percentBonus": 0.0
    },
  },
}

Obviously this would be a major change, so I wanted to ask some opinions on it.

@jjmaldonis
Copy link
Member

Hello, as you said this would be a major change. We do not want to make breaking changes to the JSON.

With either naming scheme you as the user have to know how to use the data.

@rdavis0
Copy link
Contributor Author

rdavis0 commented Jan 15, 2023

What about adding a stackMethod property to each stat? That would provide useful data for stat calculation without breaking the current format.
"stackMethod": "additive" || "multiplicative"

Edit: On second thought, there are some issues with that solution since Riot doesn't handle flat Magic Penetration (additive) and percent Magic Penetration (multiplicative) as separate stats, the way they do for Lethality and Armor Penetration. In the JSON, you wouldn't be able to set a stackMethod value for magicPenetration. That's kind of the crux of the issue with the current format; you can't trust flat and percent to behave consistently across different stats.

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

No branches or pull requests

2 participants