PathOfBuildingCommunity / PathOfBuildingCommunity/PathOfBuilding

Unique items need to separate the game version from other variants

Open
#9,390 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Lua
Stars
5.4k
Forks
2.4k
Avg merge
1d 12h
Merged PRs (30d)
26

Description

Check for duplicates
  • I've checked for duplicate open and closed issues by using the search function of the issue tracker
What platform are you running Path of Building on?

Windows

Is your feature request related to a problem?

Problem: Uniques with variants get unwieldy when there are also differences between game versions for those variants. This is often handled by allowing an Alt Variant, one for the version, one for the actual variant. However this is making updating them very error-prone and potentially confusing users into thinking they can have more variants than possible. See https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/8999#issuecomment-3470427317

Another issue this would solve is a stupidly long number of variants on lines that haven't changed in years, but other mods on the item have. E.g. on Vessel of Vinktar:

{variant:1,2,3,4}30% of Lightning Damage Leeched as Life during Flask effect
{variant:5,6,7,8,9,10,11,12,13,14,15,16,17,18}20% of Lightning Damage Leeched as Life during Flask effect
Describe the solution you'd like

Proposal: Add a version spec to items that can be parsed and automatically create a version box, similar to our variant box. This would look something like this for a made-up item:

{version:,3.15.0}15% increased maximum life
{version:3.15.0,3.23.0}5% increased maximum life
{version:3.23.0,}10% increased maximum life

Note the leading/trailing commas, signifying those lines are the earliest/latest versions. This also directly specifies the version, so the code would have to parse the semantic version to decide which lines should be included depending on the selected version, but it simplifies the update process so you aren't having to go back and forth between some index and what it means

Describe alternatives you've considered

No response

Additional context

Longer example of the difference in a full item. Old:

unique name
Glorious Plate
Variant: pre 1
Variant: pre 2
Variant: Current
Variant: Life
Variant: Mana
Variant: ES
Variant: ES (pre 3)
{variant:6}ES
{variant:7}ES
{variant:4}Life
{variant:5}Mana
{variant:1}Quantity
{variant:2}Rarity
{variant:3}Big Rarity
Armour

New:

unique name
Glorious Plate
Variant: ES
Variant: Life
Variant: Mana
{version:3,}{variant:1}ES
{version:,3}{variant:1}big ES
{variant:2}Life
{variant:3}Mana
{version:,1}Quantity
{variant:1,3}Rarity
{variant:3,}Big Rarity
Armour

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the existing item variant parsing and variant box behavior described in the issue, including how semantic versions would be selected. Done means version specs are parsed into a separate version box, work alongside variants, and correctly handle open-ended version ranges such as {version:,3.15.0}.

Written by the indexing model from the issue text.

Assessment

Tech stack
lua
Domain
game-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.