Skip to content

Copy/Pasting items from the game results in massively bloated stats. #2684

Closed

Description

For instance a rare body armor with +93 to maximum life ends up with +9395 to maximum life when pasted into PoB. So obviously the various calculations (total life, dps etc) get messed up.

Using 2.3.0. The issue was there even before that version, however.

example

Activity

  1. ghost added
    bugSomething isn't working
    on Apr 25, 2021
  2. QuickStick123 commented on Apr 26, 2021

    @QuickStick123
    Contributor

    I can't seem to replicate this (2.3.0) could you try to provide more information and maybe a Pastebin link to a build it occurs on.

  3. zao commented on Apr 26, 2021

    @zao
    Contributor

    I could reproduce it when copying an item with Ctrl-Alt-C in PoE, as that leverages the new functionality in 3.14 to copy advanced mod descriptions. It seems to be picking up the value range for the stats, the appended digits is approximately the average of its range.

    image

    Ctrl-C:

    Item Class: Boots
    Rarity: Rare
    Corpse Hoof
    Wyrmscale Boots
    --------
    Armour: 92
    Evasion Rating: 108 (augmented)
    --------
    Requirements:
    Level: 51
    Str: 48
    Dex: 48
    --------
    Sockets: R-R-B-R 
    --------
    Item Level: 58
    --------
    6% increased Movement Speed if you haven't been Hit Recently (enchant)
    --------
    +12 to Dexterity
    +16 to Evasion Rating
    +99 to maximum Life
    +28% to Lightning Resistance
    30% increased Movement Speed
    +26% to Fire Resistance (crafted)
    

    Ctrl-Alt-C:

    Item Class: Boots
    Rarity: Rare
    Corpse Hoof
    Wyrmscale Boots
    --------
    Armour: 92
    Evasion Rating: 108 (augmented)
    --------
    Requirements:
    Level: 51
    Str: 48
    Dex: 48
    --------
    Sockets: R-R-B-R 
    --------
    Item Level: 58
    --------
    6% increased Movement Speed if you haven't been Hit Recently
    (Recently refers to the past 4 seconds) (enchant)
    --------
    { Prefix Modifier "Virile" (Tier: 2) — Life }
    +79(70-79) to maximum Life
    { Prefix Modifier "Cheetah's" (Tier: 2) — Speed }
    30% increased Movement Speed
    { Prefix Modifier "Flea's" (Tier: 2) — Life, Defences }
    +16(14-20) to Evasion Rating
    +20(18-23) to maximum Life
    { Suffix Modifier "of the Mongoose" (Tier: 9) — Attribute }
    +12(8-12) to Dexterity
    { Suffix Modifier "of the Thunderhead" (Tier: 5) — Elemental, Lightning, Resistance }
    +28(24-29)% to Lightning Resistance
    { Master Crafted Suffix Modifier "of Craft" (Rank: 2) — Elemental, Fire, Resistance }
    +26(21-28)% to Fire Resistance (crafted)
    
  4. zao commented on Apr 26, 2021

    @zao
    Contributor

    Good that you've found the root cause, until advanced mod descriptions are implemented in PoB it's probably best to ensure that your copy shortcut doesn't include advanced mod descriptions.

    For anyone curious, the reason it's sneakily evaluating as a range is that the parenthesis are detected as a range at:

    if line:match("%(%d+%-%d+ to %d+%-%d+%)") or line:match("%(%-?[%d%.]+ to %-?[%d%.]+%)") or line:match("%(%-?[%d%.]+%-[%d%.]+%)") then
    rangedLine = itemLib.applyRange(line, 1, catalystScalar)

    Getting a default range spec of 0.5 at:
    t_insert(modLines, { line = line, extra = extra, modList = modList, modTags = modTags, variantList = variantList, crafted = crafted, custom = custom, fractured = fractured, implicit = implicit, range = rangedLine and (tonumber(rangeSpec) or 0.5), valueScalar = catalystScalar })

    Finally having the range spec applied in BuildModList at:
    if modLine.range then
    local strippedModeLine = modLine.line:gsub("\n"," ")
    -- Look at the min and max of the range to confirm it's *actually* a range
    local rangeMin, rangeMax = itemLib.getLineRangeMinMax(strippedModeLine)
    if rangeMin ~= rangeMax then
    local catalystScalar = getCatalystScalar(self.catalyst, modLine.modTags, self.catalystQuality)
    -- Put the modified value into the string
    local line = itemLib.applyRange(strippedModeLine, modLine.range, catalystScalar)
    -- Check if we can parse it before adding the mods
    local list, extra = modLib.parseMod(line)
    if list and not extra then
    modLine.modList = list
    t_insert(self.rangeLineList, modLine)
    end
    end
    end

  5. Gnomiro commented on May 6, 2021

    @Gnomiro

    Having similar problems as I also use ctrl for advanced modifications. Is there currently any work on this? A relatively easy workaround would could probably be based on the {}-brackets which are, as far as I know, only used in advanced mod descriptions. If any of them are present the ()-brackets could be skipped or interpreted differently.

    If no one is working on it I maybe will have a look at it later this week.

  6. Wires77 commented on Oct 15, 2021

    @Wires77
    Member

    Having similar problems as I also use ctrl for advanced modifications. Is there currently any work on this? A relatively easy workaround would could probably be based on the {}-brackets which are, as far as I know, only used in advanced mod descriptions. If any of them are present the ()-brackets could be skipped or interpreted differently.

    If no one is working on it I maybe will have a look at it later this week.

    Unfortunately, PoB also uses curly brackets internally to give lines a special designation. I do want to support advanced mod descriptions, and it's probably not worth excluding them unless we're adding support for them at the same time.

  7. SnosMe commented on Oct 16, 2021

    @SnosMe

    It looks like PoB always places additional info on same line

    {crafted}Allocates Adder's Touch
    {tags:resource,life}{range:0.5}Regenerate (1.2-1.6)% of Life per second
    

    while the text from game has one { in the beginning of line and one } at the end, so you can clearly distinguish between them.

    { Suffix Modifier "of the Mongoose" (Tier: 9) — Attribute }
    +12(8-12) to Dexterity
    
  8. pinned this issue on Feb 14, 2024
  9. Wires77 commented on May 27, 2026

    @Wires77
    Member

    Fixed by #9830

  10. unpinned this issue on May 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions