diff --git a/public/data/item-drop.json b/public/data/item-drop.json index 4dc8990b..7b129bf4 100644 --- a/public/data/item-drop.json +++ b/public/data/item-drop.json @@ -1,274 +1,274 @@ [ { "query": [ - "splinter-of-uul-netol", - "uul-netols-breachstone", - "uul-netols-charged-breachstone", - "uul-netols-enriched-breachstone", - "uul-netols-pure-breachstone" + "ITEM::Splinter of Uul-Netol", + "ITEM::Uul-Netol's Breachstone", + "ITEM::Uul-Netol's Charged Breachstone", + "ITEM::Uul-Netol's Enriched Breachstone", + "ITEM::Uul-Netol's Pure Breachstone" ], "items": [ - "blessing-of-uul-netol", - "the-infinite-pursuit-goliath-greaves", - "uul-netols-kiss-labrys", - "the-anticipation-ezomyte-tower-shield" + "ITEM::Blessing of Uul-Netol", + "UNIQUE::The Infinite Pursuit // Goliath Greaves", + "UNIQUE::Uul-Netol's Kiss // Labrys", + "UNIQUE::The Anticipation // Ezomyte Tower Shield" ] }, { "query": [ - "splinter-of-xoph", - "xophs-breachstone", - "xophs-charged-breachstone", - "xophs-enriched-breachstone", - "xophs-pure-breachstone" + "ITEM::Splinter of Xoph", + "ITEM::Xoph's Breachstone", + "ITEM::Xoph's Charged Breachstone", + "ITEM::Xoph's Enriched Breachstone", + "ITEM::Xoph's Pure Breachstone" ], "items": [ - "blessing-of-xoph", - "the-formless-flame-siege-helmet", - "xophs-heart-amber-amulet", - "xophs-inception-bone-bow", - "the-escape" + "ITEM::Blessing of Xoph", + "UNIQUE::The Formless Flame // Siege Helmet", + "UNIQUE::Xoph's Heart // Amber Amulet", + "UNIQUE::Xoph's Inception // Bone Bow", + "DIVINATION_CARD::The Escape" ] }, { "query": [ - "splinter-of-tul", - "tuls-breachstone", - "tuls-charged-breachstone", - "tuls-enriched-breachstone", - "tuls-pure-breachstone" + "ITEM::Splinter of Tul", + "ITEM::Tul's Breachstone", + "ITEM::Tul's Charged Breachstone", + "ITEM::Tul's Enriched Breachstone", + "ITEM::Tul's Pure Breachstone" ], "items": [ - "blessing-of-tul", - "tulborn-spiraled-wand", - "the-halcyon-jade-amulet", - "the-snowblind-grace-coronal-leather", - "the-escape" + "ITEM::Blessing of Tul", + "UNIQUE::Tulborn // Spiraled Wand", + "UNIQUE::The Halcyon // Jade Amulet", + "UNIQUE::The Snowblind Grace // Coronal Leather", + "DIVINATION_CARD::The Escape" ] }, { "query": [ - "splinter-of-esh", - "eshs-breachstone", - "eshs-charged-breachstone", - "eshs-enriched-breachstone", - "eshs-pure-breachstone" + "ITEM::Splinter of Esh", + "ITEM::Esh's Breachstone", + "ITEM::Esh's Charged Breachstone", + "ITEM::Esh's Enriched Breachstone", + "ITEM::Esh's Pure Breachstone" ], "items": [ - "blessing-of-esh", - "voice-of-the-storm-lapis-amulet", - "hand-of-thought-and-motion-blinder", - "eshs-mirror-thorium-spirit-shield", - "the-escape" + "ITEM::Blessing of Esh", + "UNIQUE::Voice of the Storm // Lapis Amulet", + "UNIQUE::Hand of Thought and Motion // Blinder", + "UNIQUE::Esh's Mirror // Thorium Spirit Shield", + "DIVINATION_CARD::The Escape" ] }, { "query": [ - "splinter-of-chayula", - "chayulas-breachstone", - "chayulas-charged-breachstone", - "chayulas-enriched-breachstone", - "chayulas-pure-breachstone" + "ITEM::Splinter of Chayula", + "ITEM::Chayula's Breachstone", + "ITEM::Chayula's Charged Breachstone", + "ITEM::Chayula's Enriched Breachstone", + "ITEM::Chayula's Pure Breachstone" ], "items": [ - "blessing-of-chayula", - "skin-of-the-loyal-simple-robe-6l", - "severed-in-sleep-cutlass", - "the-blue-dream-cobalt-jewel", - "the-green-dream-viridian-jewel", - "the-red-dream-crimson-jewel" + "ITEM::Blessing of Chayula", + "UNIQUE::Skin of the Loyal // Simple Robe // 6L", + "UNIQUE::Severed in Sleep // Cutlass", + "UNIQUE::The Blue Dream // Cobalt Jewel", + "UNIQUE::The Green Dream // Viridian Jewel", + "UNIQUE::The Red Dream // Crimson Jewel" ] }, { "query": [ - "sacrifice-at-dawn", - "sacrifice-at-midnight", - "sacrifice-at-noon", - "sacrifice-at-dusk" + "ITEM::Sacrifice at Dawn", + "ITEM::Sacrifice at Midnight", + "ITEM::Sacrifice at Noon", + "ITEM::Sacrifice at Dusk" ], "items": [ - "atziris-promise-amethyst-flask", - "doryanis-catalyst-vaal-sceptre", - "mortal-ignorance", - "mortal-hope", - "mortal-rage", - "mortal-grief", - "alluring-bounty", - "the-ethereal" + "UNIQUE::Atziri's Promise // Amethyst Flask", + "UNIQUE::Doryani's Catalyst // Vaal Sceptre", + "ITEM::Mortal Ignorance", + "ITEM::Mortal Hope", + "ITEM::Mortal Rage", + "ITEM::Mortal Grief", + "DIVINATION_CARD::Alluring Bounty", + "DIVINATION_CARD::The Ethereal" ] }, { "query": [ - "mortal-ignorance", - "mortal-hope", - "mortal-rage", - "mortal-grief" + "ITEM::Mortal Ignorance", + "ITEM::Mortal Hope", + "ITEM::Mortal Rage", + "ITEM::Mortal Grief" ], "items": [ - "atziris-acuity-vaal-gauntlets", - "atziris-disfavour-vaal-axe", - "the-vertex-vaal-mask", - "atziris-splendour-es-sacrificial-garb", - "atziris-splendour-evasion-es-life-sacrificial-garb", - "alluring-bounty", - "house-of-mirrors" + "UNIQUE::Atziri's Acuity // Vaal Gauntlets", + "UNIQUE::Atziri's Disfavour // Vaal Axe", + "UNIQUE::The Vertex // Vaal Mask", + "UNIQUE::Atziri's Splendour // Sacrificial Garb // ES", + "UNIQUE::Atziri's Splendour // Sacrificial Garb // Evasion/ES/Life", + "DIVINATION_CARD::Alluring Bounty", + "DIVINATION_CARD::House of Mirrors" ] }, { "query": [ - "volkuurs-key", - "yriels-key", - "inyas-key", - "ebers-key" + "ITEM::Volkuur's Key", + "ITEM::Yriel's Key", + "ITEM::Inya's Key", + "ITEM::Eber's Key" ], "items": [ - "ebers-unification-hubris-circlet", - "inyas-epiphany-arcanist-slippers", - "yriels-fostering-poison-exquisite-leather", - "yriels-fostering-bleeding-exquisite-leather", - "yriels-fostering-maim-exquisite-leather", - "volkuurs-guidance-cold-zealot-gloves", - "volkuurs-guidance-fire-zealot-gloves", - "volkuurs-guidance-lightning-zealot-gloves" + "UNIQUE::Eber's Unification // Hubris Circlet", + "UNIQUE::Inya's Epiphany // Arcanist Slippers", + "UNIQUE::Yriel's Fostering // Exquisite Leather // Poison", + "UNIQUE::Yriel's Fostering // Exquisite Leather // Bleeding", + "UNIQUE::Yriel's Fostering // Exquisite Leather // Maim", + "UNIQUE::Volkuur's Guidance // Zealot Gloves // Cold", + "UNIQUE::Volkuur's Guidance // Zealot Gloves // Fire", + "UNIQUE::Volkuur's Guidance // Zealot Gloves // Lightning" ] }, { "query": [ - "fragment-of-the-minotaur", - "fragment-of-the-chimera", - "fragment-of-the-phoenix", - "fragment-of-the-hydra" + "ITEM::Fragment of the Minotaur", + "ITEM::Fragment of the Chimera", + "ITEM::Fragment of the Phoenix", + "ITEM::Fragment of the Hydra" ], "items": [ - "starforge-infernal-sword", - "dying-sun-ruby-flask", - "shapers-touch-crusader-gloves", - "solstice-vigil-onyx-amulet", - "voidwalker-murder-boots", - "fragment-of-knowledge", - "fragment-of-shape" + "UNIQUE::Starforge // Infernal Sword", + "UNIQUE::Dying Sun // Ruby Flask", + "UNIQUE::Shaper's Touch // Crusader Gloves", + "UNIQUE::Solstice Vigil // Onyx Amulet", + "UNIQUE::Voidwalker // Murder Boots", + "ITEM::Fragment of Knowledge", + "ITEM::Fragment of Shape" ] }, { "query": [ - "fragment-of-eradication", - "fragment-of-enslavement", - "fragment-of-purification", - "fragment-of-constriction" + "ITEM::Fragment of Eradication", + "ITEM::Fragment of Enslavement", + "ITEM::Fragment of Purification", + "ITEM::Fragment of Constriction" ], "items": [ - "blasphemers-grasp-assassins-mitts", - "cyclopean-coil-leather-belt", - "nebuloch-nightmare-mace", - "shimmeron-tornado-wand", - "hopeshredder-ranger-bow", - "watchers-eye-prismatic-jewel", - "impresence-cold-onyx-amulet", - "impresence-lightning-onyx-amulet", - "impresence-fire-onyx-amulet", - "impresence-chaos-onyx-amulet", - "impresence-physical-onyx-amulet", - "fragment-of-terror", - "fragment-of-emptiness" + "UNIQUE::Blasphemer's Grasp // Assassin's Mitts", + "UNIQUE::Cyclopean Coil // Leather Belt", + "UNIQUE::Nebuloch // Nightmare Mace", + "UNIQUE::Shimmeron // Tornado Wand", + "UNIQUE::Hopeshredder // Ranger Bow", + "UNIQUE::Watcher's Eye // Prismatic Jewel", + "UNIQUE::Impresence // Onyx Amulet // Cold", + "UNIQUE::Impresence // Onyx Amulet // Lightning", + "UNIQUE::Impresence // Onyx Amulet // Fire", + "UNIQUE::Impresence // Onyx Amulet // Chaos", + "UNIQUE::Impresence // Onyx Amulet // Physical", + "ITEM::Fragment of Terror", + "ITEM::Fragment of Emptiness" ] }, { "query": [ - "fragment-of-knowledge", - "fragment-of-shape", - "fragment-of-terror", - "fragment-of-emptiness" + "ITEM::Fragment of Knowledge", + "ITEM::Fragment of Shape", + "ITEM::Fragment of Terror", + "ITEM::Fragment of Emptiness" ], "items": [ - "watchers-eye-prismatic-jewel", - "disintegrator-maelstrom-staff", - "voidfletcher-penetrating-arrow-quiver", - "mark-of-the-elder-steel-ring", - "mark-of-the-shaper-opal-ring", - "indigon-hubris-circlet", - "voidforge-infernal-sword", - "the-eternity-shroud-blood-raiment" + "UNIQUE::Watcher's Eye // Prismatic Jewel", + "UNIQUE::Disintegrator // Maelström Staff", + "UNIQUE::Voidfletcher // Penetrating Arrow Quiver", + "UNIQUE::Mark of the Elder // Steel Ring", + "UNIQUE::Mark of the Shaper // Opal Ring", + "UNIQUE::Indigon // Hubris Circlet", + "UNIQUE::Voidforge // Infernal Sword", + "UNIQUE::The Eternity Shroud // Blood Raiment" ] }, { "query": [ - "tainted-oil", - "golden-oil", - "silver-oil", - "opalescent-oil", - "black-oil", - "crimson-oil", - "violet-oil", - "indigo-oil", - "azure-oil", - "teal-oil", - "verdant-oil", - "amber-oil", - "sepia-oil", - "clear-oil" + "ITEM::Tainted Oil", + "ITEM::Golden Oil", + "ITEM::Silver Oil", + "ITEM::Opalescent Oil", + "ITEM::Black Oil", + "ITEM::Crimson Oil", + "ITEM::Violet Oil", + "ITEM::Indigo Oil", + "ITEM::Azure Oil", + "ITEM::Teal Oil", + "ITEM::Verdant Oil", + "ITEM::Amber Oil", + "ITEM::Sepia Oil", + "ITEM::Clear Oil" ], "items": [] }, { "query": [ - "Abrasive Catalyst", - "Fertile Catalyst", - "Imbued Catalyst", - "Intrinsic Catalyst", - "Prismatic Catalyst", - "Tempering Catalyst", - "Turbulent Catalyst", - "Unstable Catalyst", - "Accelerating Catalyst", - "Noxious Catalyst" + "ITEM::Abrasive Catalyst", + "ITEM::Fertile Catalyst", + "ITEM::Imbued Catalyst", + "ITEM::Intrinsic Catalyst", + "ITEM::Prismatic Catalyst", + "ITEM::Tempering Catalyst", + "ITEM::Turbulent Catalyst", + "ITEM::Unstable Catalyst", + "ITEM::Accelerating Catalyst", + "ITEM::Noxious Catalyst" ], "items": [] }, { "query": [ - "timeless-eternal-empire-splinter", - "timeless-karui-splinter", - "timeless-maraketh-splinter", - "timeless-templar-splinter", - "timeless-vaal-splinter" + "ITEM::Timeless Eternal Empire Splinter", + "ITEM::Timeless Karui Splinter", + "ITEM::Timeless Maraketh Splinter", + "ITEM::Timeless Templar Splinter", + "ITEM::Timeless Vaal Splinter" ], "items": [ - "timeless-eternal-emblem", - "timeless-karui-emblem", - "timeless-maraketh-emblem", - "timeless-templar-emblem", - "timeless-vaal-emblem" + "ITEM::Timeless Eternal Emblem", + "ITEM::Timeless Karui Emblem", + "ITEM::Timeless Maraketh Emblem", + "ITEM::Timeless Templar Emblem", + "ITEM::Timeless Vaal Emblem" ] }, { "query": [ - "timeless-eternal-emblem", - "timeless-karui-emblem", - "timeless-maraketh-emblem", - "timeless-templar-emblem", - "timeless-vaal-emblem" + "ITEM::Timeless Eternal Emblem", + "ITEM::Timeless Karui Emblem", + "ITEM::Timeless Maraketh Emblem", + "ITEM::Timeless Templar Emblem", + "ITEM::Timeless Vaal Emblem" ], "items": [] }, { "query": [ - "prime-chaotic-resonator", - "powerful-chaotic-resonator", - "potent-chaotic-resonator", - "primitive-chaotic-resonator" + "ITEM::Prime Chaotic Resonator", + "ITEM::Powerful Chaotic Resonator", + "ITEM::Potent Chaotic Resonator", + "ITEM::Primitive Chaotic Resonator" ], "items": [] }, { "query": [ - "simulacrum-splinter", - "simulacrum" + "ITEM::Simulacrum Splinter", + "ITEM::Simulacrum" ], "items": [ - "split-personality-crimson-jewel", - "Megalomaniac Medium Cluster Jewel", - "voices-5-passives-large-cluster-jewel", - "voices-7-passives-large-cluster-jewel" + "UNIQUE::Split Personality // Crimson Jewel", + "UNIQUE::Megalomaniac // Medium Cluster Jewel", + "UNIQUE::Voices // Large Cluster Jewel // 5 passives", + "UNIQUE::Voices // Large Cluster Jewel // 7 passives" ] }, @@ -281,345 +281,345 @@ { "query": [ - "Primordial Might Crimson Jewel", - "Primordial Harmony Cobalt Jewel", - "Primordial Eminence Viridian Jewel" + "UNIQUE::Primordial Might // Crimson Jewel", + "UNIQUE::Primordial Harmony // Cobalt Jewel", + "UNIQUE::Primordial Eminence // Viridian Jewel" ], "items": [ - "The Anima Stone Prismatic Jewel" + "UNIQUE::The Anima Stone // Prismatic Jewel" ] }, { "query": [ - "Grelwood Shank Eternal Sword", - "Beltimber Blade Eternal Sword" + "UNIQUE::Grelwood Shank // Eternal Sword", + "UNIQUE::Beltimber Blade // Eternal Sword" ], "items": [ - "Arborix Assassin Bow" + "UNIQUE::Arborix // Assassin Bow" ] }, { "query": [ - "Shade of Solaris Sage Wand", - "Light of Lunaris Jingling Spirit Shield" + "UNIQUE::Shade of Solaris // Sage Wand", + "UNIQUE::Light of Lunaris // Jingling Spirit Shield" ], "items": [ - "Duskdawn Maelström Staff" + "UNIQUE::Duskdawn // Maelström Staff" ] }, { "query": [ - "The Goddess Bound Whalebone Rapier" + "UNIQUE::The Goddess Bound // Whalebone Rapier" ], "items": [ - "The Goddess Scorned Elegant Sword" + "UNIQUE::The Goddess Scorned // Elegant Sword" ] }, { "query": [ - "Soul Taker Siege Axe", - "Heartbreaker Royal Skean" + "UNIQUE::Soul Taker // Siege Axe", + "UNIQUE::Heartbreaker // Royal Skean" ], "items": [ - "Kingmaker Despot Axe" + "UNIQUE::Kingmaker // Despot Axe" ] }, { "query": [ - "Invictus Solaris Archon Kite Shield", - "Vix Lunaris Cardinal Round Shield" + "UNIQUE::Invictus Solaris // Archon Kite Shield", + "UNIQUE::Vix Lunaris // Cardinal Round Shield" ], "items": [ - "Magna Eclipsis Pinnacle Tower Shield" + "UNIQUE::Magna Eclipsis // Pinnacle Tower Shield" ] }, { "query": [ - "Feastbind Rustic Sash", - "Faminebind Rustic Sash" + "UNIQUE::Feastbind // Rustic Sash", + "UNIQUE::Faminebind // Rustic Sash" ], "items": [ - "The Retch Rustic Sash" + "UNIQUE::The Retch // Rustic Sash" ] }, { "query": [ - "Berek's Grip Two-Stone Ring", - "Berek's Pass Two-Stone Ring", - "Berek's Respite Two-Stone Ring" + "UNIQUE::Berek's Grip // Two-Stone Ring", + "UNIQUE::Berek's Pass // Two-Stone Ring", + "UNIQUE::Berek's Respite // Two-Stone Ring" ], "items": [ - "The Taming Prismatic Ring" + "UNIQUE::The Taming // Prismatic Ring" ] }, { "query": [ - "First Piece of Brutality Imperial Staff Piece", - "Second Piece of Brutality Imperial Staff Piece", - "Third Piece of Brutality Imperial Staff Piece" + "UNIQUE::First Piece of Brutality // Imperial Staff Piece", + "UNIQUE::Second Piece of Brutality // Imperial Staff Piece", + "UNIQUE::Third Piece of Brutality // Imperial Staff Piece" ], "items": [ - "The Enmity Divine Imperial Staff" + "UNIQUE::The Enmity Divine // Imperial Staff" ] }, { "query": [ - "The Enmity Divine Imperial Staff", - "Haemocombustion Scroll" + "UNIQUE::The Enmity Divine // Imperial Staff", + "ITEM::Haemocombustion Scroll" ], "items": [ - "The Yielding Mortality Imperial Staff" + "UNIQUE::The Yielding Mortality // Imperial Staff" ] }, { "query": [ - "First Piece of Directions Blunt Arrow Quiver Piece", - "Second Piece of Directions Blunt Arrow Quiver Piece", - "Third Piece of Directions Blunt Arrow Quiver Piece" + "UNIQUE::First Piece of Directions // Blunt Arrow Quiver Piece", + "UNIQUE::Second Piece of Directions // Blunt Arrow Quiver Piece", + "UNIQUE::Third Piece of Directions // Blunt Arrow Quiver Piece" ], "items": [ - "The Fracturing Spinner Blunt Arrow Quiver" + "UNIQUE::The Fracturing Spinner // Blunt Arrow Quiver" ] }, { "query": [ - "The Fracturing Spinner Blunt Arrow Quiver", - "Fragmentation Scroll" + "UNIQUE::The Fracturing Spinner // Blunt Arrow Quiver", + "ITEM::Fragmentation Scroll" ], "items": [ - "The Shattered Divinity Blunt Arrow Quiver" + "UNIQUE::The Shattered Divinity // Blunt Arrow Quiver" ] }, { "query": [ - "First Piece of Focus Archon Kite Shield Piece", - "Second Piece of Focus Archon Kite Shield Piece", - "Third Piece of Focus Archon Kite Shield Piece", - "Fourth Piece of Focus Archon Kite Shield Piece" + "UNIQUE::First Piece of Focus // Archon Kite Shield Piece", + "UNIQUE::Second Piece of Focus // Archon Kite Shield Piece", + "UNIQUE::Third Piece of Focus // Archon Kite Shield Piece", + "UNIQUE::Fourth Piece of Focus // Archon Kite Shield Piece" ], "items": [ - "The Unshattered Will Archon Kite Shield" + "UNIQUE::The Unshattered Will // Archon Kite Shield" ] }, { "query": [ - "The Unshattered Will Archon Kite Shield", - "Specularity Scroll" + "UNIQUE::The Unshattered Will // Archon Kite Shield", + "ITEM::Specularity Scroll" ], "items": [ - "The Immortal Will Archon Kite Shield" + "UNIQUE::The Immortal Will // Archon Kite Shield" ] }, { "query": [ - "First Piece of Storms Callous Mask Piece", - "Second Piece of Storms Callous Mask Piece", - "Third Piece of Storms Callous Mask Piece" + "UNIQUE::First Piece of Storms // Callous Mask Piece", + "UNIQUE::Second Piece of Storms // Callous Mask Piece", + "UNIQUE::Third Piece of Storms // Callous Mask Piece" ], "items": [ - "The Tempest's Binding Callous Mask" + "UNIQUE::The Tempest's Binding // Callous Mask" ] }, { "query": [ - "The Tempest's Binding Callous Mask", - "Deregulation Scroll" + "UNIQUE::The Tempest's Binding // Callous Mask", + "ITEM::Deregulation Scroll" ], "items": [ - "The Tempest's Liberation Callous Mask" + "UNIQUE::The Tempest's Liberation // Callous Mask" ] }, { "query": [ - "First Piece of the Arcane Legion Sword Piece", - "Second Piece of the Arcane Legion Sword Piece", - "Third Piece of the Arcane Legion Sword Piece" + "UNIQUE::First Piece of the Arcane // Legion Sword Piece", + "UNIQUE::Second Piece of the Arcane // Legion Sword Piece", + "UNIQUE::Third Piece of the Arcane // Legion Sword Piece" ], "items": [ - "The Rippling Thoughts Legion Sword" + "UNIQUE::The Rippling Thoughts // Legion Sword" ] }, { "query": [ - "The Rippling Thoughts Legion Sword", - "Electroshock Scroll" + "UNIQUE::The Rippling Thoughts // Legion Sword", + "ITEM::Electroshock Scroll" ], "items": [ - "The Surging Thoughts Legion Sword" + "UNIQUE::The Surging Thoughts // Legion Sword" ] }, { "query": [ - "First Piece of Time Cloth Belt Piece", - "Second Piece of Time Cloth Belt Piece" + "UNIQUE::First Piece of Time // Cloth Belt Piece", + "UNIQUE::Second Piece of Time // Cloth Belt Piece" ], "items": [ - "The Flow Untethered Cloth Belt" + "UNIQUE::The Flow Untethered // Cloth Belt" ] }, { "query": [ - "The Flow Untethered Cloth Belt", - "Time-light Scroll" + "UNIQUE::The Flow Untethered // Cloth Belt", + "ITEM::Time-light Scroll" ], "items": [ - "The Torrent's Reclamation Cloth Belt" + "UNIQUE::The Torrent's Reclamation // Cloth Belt" ] }, { "query": [ - "The Blue Dream Cobalt Jewel", - "Skin of the Loyal Simple Robe", - "The Red Dream Crimson Jewel", - "Severed in Sleep Cutlass", - "Eye of Chayula Onyx Amulet", - "The Green Dream Viridian Jewel", - "Blessing of Chayula" + "UNIQUE::The Blue Dream // Cobalt Jewel", + "UNIQUE::Skin of the Loyal // Simple Robe // 6L", + "UNIQUE::The Red Dream // Crimson Jewel", + "UNIQUE::Severed in Sleep // Cutlass", + "UNIQUE::Eye of Chayula // Onyx Amulet", + "UNIQUE::The Green Dream // Viridian Jewel", + "ITEM::Blessing of Chayula" ], "items": [ - "The Blue Nightmare Cobalt Jewel", - "Skin of the Lords Simple Robe", - "The Red Nightmare Crimson Jewel", - "United in Dream Cutlass", - "Presence of Chayula Onyx Amulet", - "The Green Nightmare Viridian Jewel" + "UNIQUE::The Blue Nightmare // Cobalt Jewel", + "UNIQUE::Skin of the Lords // Simple Robe", + "UNIQUE::The Red Nightmare // Crimson Jewel", + "UNIQUE::United in Dream // Cutlass", + "UNIQUE::Presence of Chayula // Onyx Amulet", + "UNIQUE::The Green Nightmare // Viridian Jewel" ] }, { "query": [ - "Esh's Mirror Thorium Spirit Shield", - "Voice of the Storm Lapis Amulet", - "Hand of Thought and Motion Blinder", - "Blessing of Esh" + "UNIQUE::Esh's Mirror // Thorium Spirit Shield", + "UNIQUE::Voice of the Storm // Lapis Amulet", + "UNIQUE::Hand of Thought and Motion // Blinder", + "ITEM::Blessing of Esh" ], "items": [ - "Esh's Visage Vaal Spirit Shield", - "Choir of the Storm Lapis Amulet", - "Hand of Wisdom and Action Imperial Claw" + "UNIQUE::Esh's Visage // Vaal Spirit Shield", + "UNIQUE::Choir of the Storm // Lapis Amulet", + "UNIQUE::Hand of Wisdom and Action // Imperial Claw" ] }, { "query": [ - "Tulborn Spiraled Wand", - "The Snowblind Grace Coronal Leather", - "The Halcyon Jade Amulet", - "Blessing of Tul" + "UNIQUE::Tulborn // Spiraled Wand", + "UNIQUE::The Snowblind Grace // Coronal Leather", + "UNIQUE::The Halcyon // Jade Amulet", + "ITEM::Blessing of Tul" ], "items": [ - "Tulfall Tornado Wand", - "The Perfect Form Zodiac Leather", - "The Pandemonius Jade Amulet" + "UNIQUE::Tulfall // Tornado Wand", + "UNIQUE::The Perfect Form // Zodiac Leather", + "UNIQUE::The Pandemonius // Jade Amulet" ] }, { "query": [ - "The Infinite Pursuit Goliath Greaves", - "The Anticipation Ezomyte Tower Shield", - "Uul-Netol's Kiss Labrys", - "Blessing of Uul-Netol" + "UNIQUE::The Infinite Pursuit // Goliath Greaves", + "UNIQUE::The Anticipation // Ezomyte Tower Shield", + "UNIQUE::Uul-Netol's Kiss // Labrys", + "ITEM::Blessing of Uul-Netol" ], "items": [ - "The Red Trail Titan Greaves", - "The Surrender Ezomyte Tower Shield", - "Uul-Netol's Embrace Vaal Axe" + "UNIQUE::The Red Trail // Titan Greaves", + "UNIQUE::The Surrender // Ezomyte Tower Shield", + "UNIQUE::Uul-Netol's Embrace // Vaal Axe" ] }, { "query": [ - "The Formless Flame Siege Helmet", - "Xoph's Inception Bone Bow", - "Xoph's Heart Amber Amulet", - "Blessing of Xoph" + "UNIQUE::The Formless Flame // Siege Helmet", + "UNIQUE::Xoph's Inception // Bone Bow", + "UNIQUE::Xoph's Heart // Amber Amulet", + "ITEM::Blessing of Xoph" ], "items": [ - "The Formless Inferno Royal Burgonet", - "Xoph's Nurture Citadel Bow", - "Xoph's Blood Amber Amulet" + "UNIQUE::The Formless Inferno // Royal Burgonet", + "UNIQUE::Xoph's Nurture // Citadel Bow", + "UNIQUE::Xoph's Blood // Amber Amulet" ] }, { "query": [ - "Vial of Awakening", - "Apep's Slumber Ancient Spirit Shield" + "ITEM::Vial of Awakening", + "UNIQUE::Apep's Slumber // Vaal Spirit Shield" ], "items": [ - "Apep's Supremacy Vaal Spirit Shield" + "UNIQUE::Apep's Supremacy // Vaal Spirit Shield" ] }, { "query": [ - "Vial of Consequence", - "Coward's Chains Chain Belt" + "ITEM::Vial of Consequence", + "UNIQUE::Coward's Chains // Chain Belt" ], "items": [ - "Coward's Legacy Chain Belt" + "UNIQUE::Coward's Legacy // Chain Belt" ] }, { "query": [ - "Vial of Dominance", - "Architect's Hand Strapped Mitts" + "ITEM::Vial of Dominance", + "UNIQUE::Architect's Hand // Ambush Mitts" ], "items": [ - "Slavedriver's Hand Ambush Mitts" + "UNIQUE::Slavedriver's Hand // Ambush Mitts" ] }, { "query": [ - "Vial of Fate", - "Story of the Vaal Variscite Blade" + "ITEM::Vial of Fate", + "UNIQUE::Story of the Vaal // Gemstone Sword" ], "items": [ - "Fate of the Vaal Gemstone Sword" + "UNIQUE::Fate of the Vaal // Gemstone Sword" ] }, { "query": [ - "Vial of Summoning", - "Mask of the Spirit Drinker Crusader Helmet" + "ITEM::Vial of Summoning", + "UNIQUE::Mask of the Spirit Drinker // Magistrate Crown" ], "items": [ - "Mask of the Stitched Demon Magistrate Crown" + "UNIQUE::Mask of the Stitched Demon // Magistrate Crown" ] }, { "query": [ - "Vial of the Ritual", - "Dance of the Offered Shackled Boots" + "ITEM::Vial of the Ritual", + "UNIQUE::Dance of the Offered // Carnal Boots" ], "items": [ - "Omeyocan Carnal Boots" + "UNIQUE::Omeyocan // Carnal Boots" ] }, { "query": [ - "Tempered Flesh Crimson Jewel", - "Tempered Spirit Viridian Jewel", - "Tempered Mind Cobalt Jewel", - "Vial of Transcendence" + "UNIQUE::Tempered Flesh // Crimson Jewel", + "UNIQUE::Tempered Spirit // Viridian Jewel", + "UNIQUE::Tempered Mind // Cobalt Jewel", + "ITEM::Vial of Transcendence" ], "items": [ - "Transcendent Flesh Crimson Jewel", - "Transcendent Spirit Viridian Jewel", - "Transcendent Mind Cobalt Jewel" + "UNIQUE::Transcendent Flesh // Crimson Jewel", + "UNIQUE::Transcendent Spirit // Viridian Jewel", + "UNIQUE::Transcendent Mind // Cobalt Jewel" ] }, { "query": [ - "Vial of Sacrifice", - "Sacrificial Heart Paua Amulet" + "ITEM::Vial of Sacrifice", + "UNIQUE::Sacrificial Heart // Paua Amulet" ], "items": [ - "Zerphi's Heart Paua Amulet" + "UNIQUE::Zerphi's Heart // Paua Amulet" ] }, { "query": [ - "Vial of the Ghost", - "Soul Catcher Quartz Flask" + "ITEM::Vial of the Ghost", + "UNIQUE::Soul Catcher // Quartz Flask" ], "items": [ - "Soul Ripper Quartz Flask" + "UNIQUE::Soul Ripper // Quartz Flask" ] }, @@ -632,649 +632,649 @@ { "query": [ - "Power Magnified", - "Reverberation Rod Spiraled Wand" + "PROPHECY::Power Magnified", + "UNIQUE::Reverberation Rod // Spiraled Wand" ], "items": [ - "Amplification Rod Spiraled Wand" + "UNIQUE::Amplification Rod // Spiraled Wand" ] }, { "query": [ - "Song of the Sekhema", - "Asenath's Mark Iron Circlet" + "PROPHECY::Song of the Sekhema", + "UNIQUE::Asenath's Mark // Iron Circlet" ], "items": [ - "Asenath's Chant Iron Circlet" + "UNIQUE::Asenath's Chant // Iron Circlet" ] }, { "query": [ - "The Queen's Sacrifice", - "Atziri's Mirror Golden Buckler" + "PROPHECY::The Queen's Sacrifice", + "UNIQUE::Atziri's Mirror // Golden Buckler" ], "items": [ - "Atziri's Reflection Golden Buckler" + "UNIQUE::Atziri's Reflection // Golden Buckler" ] }, { "query": [ - "Cold Greed", - "Cameria's Maul Gavel" + "PROPHECY::Cold Greed", + "UNIQUE::Cameria's Maul // Gavel" ], "items": [ - "Cameria's Avarice Gavel" + "UNIQUE::Cameria's Avarice // Gavel" ] }, { "query": [ - "Faith Exhumed", - "Chober Chaber Great Mallet" + "PROPHECY::Faith Exhumed", + "UNIQUE::Chober Chaber // Great Mallet" ], "items": [ - "Chaber Cairn Great Mallet" + "UNIQUE::Chaber Cairn // Great Mallet" ] }, { "query": [ - "Blinding Light", - "Eclipse Solaris Crystal Wand" + "PROPHECY::Blinding Light", + "UNIQUE::Eclipse Solaris // Crystal Wand" ], "items": [ - "Corona Solaris Crystal Wand" + "UNIQUE::Corona Solaris // Crystal Wand" ] }, { "query": [ - "Heavy Blows", - "Craghead Serrated Arrow Quiver" + "PROPHECY::Heavy Blows", + "UNIQUE::Craghead // Serrated Arrow Quiver" ], "items": [ - "Cragfall Serrated Arrow Quiver" + "UNIQUE::Cragfall // Serrated Arrow Quiver" ] }, { "query": [ - "End of the Light", - "Icetomb Latticed Ringmail" + "PROPHECY::End of the Light", + "UNIQUE::Icetomb // Latticed Ringmail" ], "items": [ - "Crystal Vault Latticed Ringmail" + "UNIQUE::Crystal Vault // Latticed Ringmail" ] }, { "query": [ - "The Bowstring's Music", - "Death's Harp Death Bow" + "PROPHECY::The Bowstring's Music", + "UNIQUE::Death's Harp // Death Bow" ], "items": [ - "Death's Opus Death Bow" + "UNIQUE::Death's Opus // Death Bow" ] }, { "query": [ - "Dying Cry", - "Deidbell Gilded Sallet" + "PROPHECY::Dying Cry", + "UNIQUE::Deidbell // Gilded Sallet" ], "items": [ - "Deidbellow Gilded Sallet" + "UNIQUE::Deidbellow // Gilded Sallet" ] }, { "query": [ - "The Malevolent Witch", - "Doedre's Tenure Velvet Gloves" + "PROPHECY::The Malevolent Witch", + "UNIQUE::Doedre's Tenure // Velvet Gloves" ], "items": [ - "Doedre's Malevolence Velvet Gloves" + "UNIQUE::Doedre's Malevolence // Velvet Gloves" ] }, { "query": [ - "Ancient Doom", - "Doomfletch Royal Bow" + "PROPHECY::Ancient Doom", + "UNIQUE::Doomfletch // Royal Bow" ], "items": [ - "Doomfletch's Prism Royal Bow" + "UNIQUE::Doomfletch's Prism // Royal Bow" ] }, { "query": [ - "The Dreaded Rhoa", - "Redbeak Rusted Sword" + "PROPHECY::The Dreaded Rhoa", + "UNIQUE::Redbeak // Rusted Sword" ], "items": [ - "Dreadbeak Rusted Sword" + "UNIQUE::Dreadbeak // Rusted Sword" ] }, { "query": [ - "Burning Dread", - "Dreadarc Cleaver" + "PROPHECY::Burning Dread", + "UNIQUE::Dreadarc // Cleaver" ], "items": [ - "Dreadsurge Cleaver" + "UNIQUE::Dreadsurge // Cleaver" ] }, { "query": [ - "Agony at Dusk", - "Dusktoe Ironscale Boots" + "PROPHECY::Agony at Dusk", + "UNIQUE::Dusktoe // Ironscale Boots" ], "items": [ - "Duskblight Ironscale Boots" + "UNIQUE::Duskblight // Ironscale Boots" ] }, { "query": [ - "The Bloody Flowers Redux", - "Ezomyte Peak Iron Hat" + "PROPHECY::The Bloody Flowers Redux", + "UNIQUE::Ezomyte Peak // Iron Hat" ], "items": [ - "Ezomyte Hold Iron Hat" + "UNIQUE::Ezomyte Hold // Iron Hat" ] }, { "query": [ - "Dark Instincts", - "Foxshade Wild Leather" + "PROPHECY::Dark Instincts", + "UNIQUE::Foxshade // Wild Leather" ], "items": [ - "Fox's Fortune Wild Leather" + "UNIQUE::Fox's Fortune // Wild Leather" ] }, { "query": [ - "A Vision of Ice and Fire", - "Heatshiver Leather Hood" + "PROPHECY::A Vision of Ice and Fire", + "UNIQUE::Heatshiver // Leather Hood" ], "items": [ - "Frostferno Leather Hood" + "UNIQUE::Frostferno // Leather Hood" ] }, { "query": [ - "Black Devotion", - "Geofri's Baptism Brass Maul" + "PROPHECY::Black Devotion", + "UNIQUE::Geofri's Baptism // Brass Maul" ], "items": [ - "Geofri's Devotion Brass Maul" + "UNIQUE::Geofri's Devotion // Brass Maul" ] }, { "query": [ - "The Bishop's Legacy", - "Geofri's Crest Great Crown" + "PROPHECY::The Bishop's Legacy", + "UNIQUE::Geofri's Crest // Great Crown" ], "items": [ - "Geofri's Legacy Great Crown" + "UNIQUE::Geofri's Legacy // Great Crown" ] }, { "query": [ - "Greed's Folly", - "Wondertrap Velvet Slippers" + "PROPHECY::Greed's Folly", + "UNIQUE::Wondertrap // Velvet Slippers" ], "items": [ - "Greedtrap Velvet Slippers" + "UNIQUE::Greedtrap // Velvet Slippers" ] }, { "query": [ - "Fire and Ice", - "Hrimsorrow Goathide Gloves" + "PROPHECY::Fire and Ice", + "UNIQUE::Hrimsorrow // Goathide Gloves" ], "items": [ - "Hrimburn Goathide Gloves" + "UNIQUE::Hrimburn // Goathide Gloves" ] }, { "query": [ - "Winter's Mournful Melodies", - "Hrimnor's Hymn Sledgehammer" + "PROPHECY::Winter's Mournful Melodies", + "UNIQUE::Hrimnor's Hymn // Sledgehammer" ], "items": [ - "Hrimnor's Dirge Sledgehammer" + "UNIQUE::Hrimnor's Dirge // Sledgehammer" ] }, { "query": [ - "A Dishonourable Death", - "Hyrri's Bite Sharktooth Arrow Quiver" + "PROPHECY::A Dishonourable Death", + "UNIQUE::Hyrri's Bite // Sharktooth Arrow Quiver" ], "items": [ - "Hyrri's Demise Sharktooth Arrow Quiver" + "UNIQUE::Hyrri's Demise // Sharktooth Arrow Quiver" ] }, { "query": [ - "The Snuffed Flame", - "Kaltenhalt Painted Buckler" + "PROPHECY::The Snuffed Flame", + "UNIQUE::Kaltenhalt // Painted Buckler" ], "items": [ - "Kaltensoul Painted Buckler" + "UNIQUE::Kaltensoul // Painted Buckler" ] }, { "query": [ - "The King's Path", - "Kaom's Sign Coral Ring" + "PROPHECY::The King's Path", + "UNIQUE::Kaom's Sign // Coral Ring" ], "items": [ - "Kaom's Way Coral Ring" + "UNIQUE::Kaom's Way // Coral Ring" ] }, { "query": [ - "The Karui Rebellion", - "Karui Ward Jade Amulet" + "PROPHECY::The Karui Rebellion", + "UNIQUE::Karui Ward // Jade Amulet" ], "items": [ - "Karui Charge Jade Amulet" + "UNIQUE::Karui Charge // Jade Amulet" ] }, { "query": [ - "The Nightmare Awakens", - "Malachai's Simula Iron Mask" + "PROPHECY::The Nightmare Awakens", + "UNIQUE::Malachai's Simula // Iron Mask" ], "items": [ - "Malachai's Awakening Iron Mask" + "UNIQUE::Malachai's Awakening // Iron Mask" ] }, { "query": [ - "Pleasure and Pain", - "Crown of Thorns Vine Circlet" + "PROPHECY::Pleasure and Pain", + "UNIQUE::Crown of Thorns // Vine Circlet" ], "items": [ - "Martyr's Crown Vine Circlet" + "UNIQUE::Martyr's Crown // Vine Circlet" ] }, { "query": [ - "Trapped in the Tower", - "Fencoil Gnarled Branch" + "PROPHECY::Trapped in the Tower", + "UNIQUE::Fencoil // Gnarled Branch" ], "items": [ - "Mirebough Gnarled Branch" + "UNIQUE::Mirebough // Gnarled Branch" ] }, { "query": [ - "A Forest of False Idols", - "Araku Tiki Coral Amulet" + "PROPHECY::A Forest of False Idols", + "UNIQUE::Araku Tiki // Coral Amulet" ], "items": [ - "Ngamahu Tiki Coral Amulet" + "UNIQUE::Ngamahu Tiki // Coral Amulet" ] }, { "query": [ - "The Fall of an Empire", - "Quecholli Jagged Maul" + "PROPHECY::The Fall of an Empire", + "UNIQUE::Quecholli // Jagged Maul" ], "items": [ - "Panquetzaliztli Jagged Maul" + "UNIQUE::Panquetzaliztli // Jagged Maul" ] }, { "query": [ - "The Misunderstood Queen", - "Queen's Decree Ornate Sword" + "PROPHECY::The Misunderstood Queen", + "UNIQUE::Queen's Decree // Ornate Sword" ], "items": [ - "Queen's Escape Ornate Sword" + "UNIQUE::Queen's Escape // Ornate Sword" ] }, { "query": [ - "The Beginning and the End", - "Realmshaper Iron Staff" + "PROPHECY::The Beginning and the End", + "UNIQUE::Realmshaper // Iron Staff" ], "items": [ - "Realm Ender Iron Staff" + "UNIQUE::Realm Ender // Iron Staff" ] }, { "query": [ - "Crimson Hues", - "Goredrill Skinning Knife" + "PROPHECY::Crimson Hues", + "UNIQUE::Goredrill // Skinning Knife" ], "items": [ - "Sanguine Gambol Skinning Knife" + "UNIQUE::Sanguine Gambol // Skinning Knife" ] }, { "query": [ - "The Flow of Energy", - "Shavronne's Pace Scholar Boots" + "PROPHECY::The Flow of Energy", + "UNIQUE::Shavronne's Pace // Scholar Boots" ], "items": [ - "Shavronne's Gambit Scholar Boots" + "UNIQUE::Shavronne's Gambit // Scholar Boots" ] }, { "query": [ - "The Silverwood", - "Silverbranch Crude Bow" + "PROPHECY::The Silverwood", + "UNIQUE::Silverbranch // Crude Bow" ], "items": [ - "Silverbough Crude Bow" + "UNIQUE::Silverbough // Crude Bow" ] }, { "query": [ - "Sun's Punishment", - "Sundance Clasped Boots" + "PROPHECY::Sun's Punishment", + "UNIQUE::Sundance // Clasped Boots" ], "items": [ - "Sunspite Clasped Boots" + "UNIQUE::Sunspite // Clasped Boots" ] }, { "query": [ - "Severed Limbs", - "Limbsplit Woodsplitter" + "PROPHECY::Severed Limbs", + "UNIQUE::Limbsplit // Woodsplitter" ], "items": [ - "The Cauteriser Woodsplitter" + "UNIQUE::The Cauteriser // Woodsplitter" ] }, { "query": [ - "Dance of Steel", - "The Dancing Dervish Reaver Sword" + "PROPHECY::Dance of Steel", + "UNIQUE::The Dancing Dervish // Reaver Sword" ], "items": [ - "The Dancing Duo Reaver Sword" + "UNIQUE::The Dancing Duo // Reaver Sword" ] }, { "query": [ - "Blind Faith", - "The Ignomon Gold Amulet" + "PROPHECY::Blind Faith", + "UNIQUE::The Ignomon // Gold Amulet" ], "items": [ - "The Effigon Gold Amulet" + "UNIQUE::The Effigon // Gold Amulet" ] }, { "query": [ - "The Apex Predator", - "The Screaming Eagle Jade Hatchet" + "PROPHECY::The Apex Predator", + "UNIQUE::The Screaming Eagle // Jade Hatchet" ], "items": [ - "The Gryphon Jade Hatchet" + "UNIQUE::The Gryphon // Jade Hatchet" ] }, { "query": [ - "Battle Hardened", - "Iron Heart Crusader Plate" + "PROPHECY::Battle Hardened", + "UNIQUE::Iron Heart // Crusader Plate" ], "items": [ - "The Iron Fortress Crusader Plate" + "UNIQUE::The Iron Fortress // Crusader Plate" ] }, { "query": [ - "The Great Leader of the North", - "The Great Mind of the North", - "The Magnate Studded Belt" + "PROPHECY::The Great Leader of the North", + "PROPHECY::The Great Mind of the North", + "UNIQUE::The Magnate // Studded Belt" ], "items": [ - "The Nomad Studded Belt", - "The Tactician Studded Belt" + "UNIQUE::The Nomad // Studded Belt", + "UNIQUE::The Tactician // Studded Belt" ] }, { "query": [ - "Nature's Resilience", - "Springleaf Plank Kite Shield" + "PROPHECY::Nature's Resilience", + "UNIQUE::Springleaf // Plank Kite Shield" ], "items": [ - "The Oak Plank Kite Shield" + "UNIQUE::The Oak // Plank Kite Shield" ] }, { "query": [ - "Fire and Brimstone", - "Blackgleam Fire Arrow Quiver" + "PROPHECY::Fire and Brimstone", + "UNIQUE::Blackgleam // Fire Arrow Quiver" ], "items": [ - "The Signal Fire Fire Arrow Quiver" + "UNIQUE::The Signal Fire // Fire Arrow Quiver" ] }, { "query": [ - "The Storm Spire", - "The Stormheart Royal Staff" + "PROPHECY::The Storm Spire", + "UNIQUE::The Stormheart // Royal Staff" ], "items": [ - "The Stormwall Royal Staff" + "UNIQUE::The Stormwall // Royal Staff" ] }, { "query": [ - "The Servant's Heart", - "Storm Cloud Long Bow" + "PROPHECY::The Servant's Heart", + "UNIQUE::Storm Cloud // Long Bow" ], "items": [ - "The Tempest Long Bow" + "UNIQUE::The Tempest // Long Bow" ] }, { "query": [ - "Mouth of Horrors", - "Chalice of Horrors War Buckler" + "PROPHECY::Mouth of Horrors", + "UNIQUE::Chalice of Horrors // War Buckler" ], "items": [ - "Thirst for Horrors War Buckler" + "UNIQUE::Thirst for Horrors // War Buckler" ] }, { "query": [ - "A Rift in Time", - "Timeclasp Moonstone Ring" + "PROPHECY::A Rift in Time", + "UNIQUE::Timeclasp // Moonstone Ring" ], "items": [ - "Timetwist Moonstone Ring" + "UNIQUE::Timetwist // Moonstone Ring" ] }, { "query": [ - "From The Void", - "Blackheart Iron Ring" + "PROPHECY::From The Void", + "UNIQUE::Blackheart // Iron Ring" ], "items": [ - "Voidheart Iron Ring" + "UNIQUE::Voidheart // Iron Ring" ] }, { "query": [ - "The King and the Brambles", - "Bramblejack Plate Vest" + "PROPHECY::The King and the Brambles", + "UNIQUE::Bramblejack // Plate Vest" ], "items": [ - "Wall of Brambles Plate Vest" + "UNIQUE::Wall of Brambles // Plate Vest" ] }, { "query": [ - "The Mentor", - "Matua Tupuna Tarnished Spirit Shield" + "PROPHECY::The Mentor", + "UNIQUE::Matua Tupuna // Tarnished Spirit Shield" ], "items": [ - "Whakatutuki o Matua Tarnished Spirit Shield" + "UNIQUE::Whakatutuki o Matua // Tarnished Spirit Shield" ] }, { "query": [ - "Last of the Wildmen", - "Briskwrap Strapped Leather" + "PROPHECY::Last of the Wildmen", + "UNIQUE::Briskwrap // Strapped Leather" ], "items": [ - "Wildwrap Strapped Leather" + "UNIQUE::Wildwrap // Strapped Leather" ] }, { "query": [ - "Darktongue's Shriek", - "Windscream Reinforced Greaves" + "PROPHECY::Darktongue's Shriek", + "UNIQUE::Windscream // Reinforced Greaves" ], "items": [ - "Windshriek Reinforced Greaves" + "UNIQUE::Windshriek // Reinforced Greaves" ] }, { "query": [ - "Cold Blooded Fury", - "Bloodboil Coral Ring" + "PROPHECY::Cold Blooded Fury", + "UNIQUE::Bloodboil // Coral Ring" ], "items": [ - "Winterweave Coral Ring" + "UNIQUE::Winterweave // Coral Ring" ] }, { "query": [ - "Anarchy's End I", - "Anarchy's End II", - "Anarchy's End III", - "Anarchy's End IV" + "PROPHECY::Anarchy's End I", + "PROPHECY::Anarchy's End II", + "PROPHECY::Anarchy's End III", + "PROPHECY::Anarchy's End IV" ], "items": [ - "Voltaxic Rift Spine Bow" + "UNIQUE::Voltaxic Rift // Spine Bow" ] }, { "query": [ - "Beyond Sight I", - "Beyond Sight II", - "Beyond Sight III", - "Beyond Sight IV" + "PROPHECY::Beyond Sight I", + "PROPHECY::Beyond Sight II", + "PROPHECY::Beyond Sight III", + "PROPHECY::Beyond Sight IV" ], "items": [] }, { "query": [ - "Day of Sacrifice I", - "Day of Sacrifice II", - "Day of Sacrifice III", - "Day of Sacrifice IV" + "PROPHECY::Day of Sacrifice I", + "PROPHECY::Day of Sacrifice II", + "PROPHECY::Day of Sacrifice III", + "PROPHECY::Day of Sacrifice IV" ], "items": [ - "Sacrifice at Dawn", - "Sacrifice at Noon", - "Sacrifice at Dusk", - "Sacrifice at Midnight" + "ITEM::Sacrifice at Dawn", + "ITEM::Sacrifice at Noon", + "ITEM::Sacrifice at Dusk", + "ITEM::Sacrifice at Midnight" ] }, { "query": [ - "Deadly Rivalry I", - "Deadly Rivalry II", - "Deadly Rivalry III", - "Deadly Rivalry IV", - "Deadly Rivalry V" + "PROPHECY::Deadly Rivalry I", + "PROPHECY::Deadly Rivalry II", + "PROPHECY::Deadly Rivalry III", + "PROPHECY::Deadly Rivalry IV", + "PROPHECY::Deadly Rivalry V" ], "items": [ - "Kintsugi Exquisite Leather" + "UNIQUE::Kintsugi // Exquisite Leather" ] }, { "query": [ - "The Feral Lord I", - "The Feral Lord II", - "The Feral Lord III", - "The Feral Lord IV", - "The Feral Lord V" + "PROPHECY::The Feral Lord I", + "PROPHECY::The Feral Lord II", + "PROPHECY::The Feral Lord III", + "PROPHECY::The Feral Lord IV", + "PROPHECY::The Feral Lord V" ], "items": [ - "Yriel's Key", - "Reach of the Council Spine Bow" + "ITEM::Yriel's Key", + "UNIQUE::Reach of the Council // Spine Bow" ] }, { "query": [ - "The Plaguemaw I", - "The Plaguemaw II", - "The Plaguemaw III", - "The Plaguemaw IV", - "The Plaguemaw V" + "PROPHECY::The Plaguemaw I", + "PROPHECY::The Plaguemaw II", + "PROPHECY::The Plaguemaw III", + "PROPHECY::The Plaguemaw IV", + "PROPHECY::The Plaguemaw V" ], "items": [ - "Eber's Key", - "Breath of the Council Carnal Sceptre" + "ITEM::Eber's Key", + "UNIQUE::Breath of the Council // Carnal Sceptre" ] }, { "query": [ - "Thaumaturgical History I", - "Thaumaturgical History II", - "Thaumaturgical History III", - "Thaumaturgical History IV" + "PROPHECY::Thaumaturgical History I", + "PROPHECY::Thaumaturgical History II", + "PROPHECY::Thaumaturgical History III", + "PROPHECY::Thaumaturgical History IV" ], "items": [ - "Ascent From Flesh Chain Belt" + "UNIQUE::Ascent From Flesh // Chain Belt" ] }, { "query": [ - "The Ambitious Bandit I", - "The Ambitious Bandit II", - "The Ambitious Bandit III" + "PROPHECY::The Ambitious Bandit I", + "PROPHECY::The Ambitious Bandit II", + "PROPHECY::The Ambitious Bandit III" ], "items": [ - "The Ascetic Gold Amulet" + "UNIQUE::The Ascetic // Gold Amulet" ] }, { "query": [ - "Unbearable Whispers I", - "Unbearable Whispers II", - "Unbearable Whispers III", - "Unbearable Whispers IV", - "Unbearable Whispers V" + "PROPHECY::Unbearable Whispers I", + "PROPHECY::Unbearable Whispers II", + "PROPHECY::Unbearable Whispers III", + "PROPHECY::Unbearable Whispers IV", + "PROPHECY::Unbearable Whispers V" ], "items": [ - "Inya's Key", - "Mind of the Council Harlequin Mask" + "ITEM::Inya's Key", + "UNIQUE::Mind of the Council // Harlequin Mask" ] }, { "query": [ - "The Unbreathing Queen I", - "The Unbreathing Queen II", - "The Unbreathing Queen III", - "The Unbreathing Queen IV", - "The Unbreathing Queen V" + "PROPHECY::The Unbreathing Queen I", + "PROPHECY::The Unbreathing Queen II", + "PROPHECY::The Unbreathing Queen III", + "PROPHECY::The Unbreathing Queen IV", + "PROPHECY::The Unbreathing Queen V" ], "items": [ - "Volkuur's Key", - "Grip of the Council Arcanist Gloves" + "ITEM::Volkuur's Key", + "UNIQUE::Grip of the Council // Arcanist Gloves" ] }, { "query": [ - "The Warmongers I", - "The Warmongers II", - "The Warmongers III", - "The Warmongers IV" + "PROPHECY::The Warmongers I", + "PROPHECY::The Warmongers II", + "PROPHECY::The Warmongers III", + "PROPHECY::The Warmongers IV" ], "items": [ - "Brinerot Flag Tarnished Spirit Shield", - "Redblade Banner Painted Tower Shield", - "Brinerot Whalers Trapper Boots", - "Mutewind Pennant Enameled Buckler", - "Mutewind Whispersteps Serpentscale Boots", - "Brinerot Mark Unset Ring", - "Mutewind Seal Unset Ring", - "Redblade Band Unset Ring", - "Redblade Tramplers Ancient Greaves", - "The Pariah Unset Ring", - "Steppan Eard Sorcerer Boots", - "Broken Faith Archon Kite Shield" + "UNIQUE::Brinerot Flag // Tarnished Spirit Shield", + "UNIQUE::Redblade Banner // Painted Tower Shield", + "UNIQUE::Brinerot Whalers // Trapper Boots", + "UNIQUE::Mutewind Pennant // Enameled Buckler", + "UNIQUE::Mutewind Whispersteps // Serpentscale Boots", + "UNIQUE::Brinerot Mark // Unset Ring", + "UNIQUE::Mutewind Seal // Unset Ring", + "UNIQUE::Redblade Band // Unset Ring", + "UNIQUE::Redblade Tramplers // Ancient Greaves", + "UNIQUE::The Pariah // Unset Ring", + "UNIQUE::Steppan Eard // Sorcerer Boots", + "UNIQUE::Broken Faith // Archon Kite Shield" ] } ] \ No newline at end of file diff --git a/src/assets/data/index.ts b/src/assets/data/index.ts index d45dc61a..94763ef1 100644 --- a/src/assets/data/index.ts +++ b/src/assets/data/index.ts @@ -1,11 +1,10 @@ import fnv1a from '@bensjoberg/fnv1a' import type { BaseType, BlightRecipes, DropEntry, Stat, StatMatcher, TranslationDict } from './interfaces' import { AppConfig } from '@/web/Config' -import { nameToDetailsId } from '@/web/price-check/trends/getDetailsId' export * from './interfaces' -export const ITEM_DROP = new Map() +export let ITEM_DROP: DropEntry[] export let BLIGHT_RECIPES: BlightRecipes export let CLIENT_STRINGS: TranslationDict @@ -136,17 +135,6 @@ export function stat (text: string) { // eslint-disable-next-line no-eval CLIENT_STRINGS = (await eval(`import('/data/${language}/client_strings.js')`)).default BLIGHT_RECIPES = await (await fetch('/data/blight-recipes.json')).json() - } - - { - const itemDrop: DropEntry[] = await (await fetch('/data/item-drop.json')).json() - for (const entry of itemDrop) { - for (const query of entry.query) { - ITEM_DROP.set(nameToDetailsId(query), { - items: entry.items.map(nameToDetailsId), - query: entry.query.map(nameToDetailsId) - }) - } - } + ITEM_DROP = await (await fetch('/data/item-drop.json')).json() } })() diff --git a/src/web/background/Prices.ts b/src/web/background/Prices.ts index 1123f3f4..705935fe 100644 --- a/src/web/background/Prices.ts +++ b/src/web/background/Prices.ts @@ -1,7 +1,6 @@ import { ref, watch } from 'vue' import { MainProcess } from '@/ipc/main-process-bindings' import { selected as selectedLeague, isPublic as isPublicLeague } from './Leagues' -import { nameToDetailsId } from '../price-check/trends/getDetailsId' interface NinjaCurrencyInfo { /* eslint-disable camelcase */ currencyTypeName: string @@ -68,36 +67,45 @@ const UPDATE_TIME = 10 * 60 * 1000 export const chaosExaRate = ref(undefined) -const priceQueue = [ - { overview: 'currency', type: 'Currency', loaded: 0 }, - { overview: 'currency', type: 'Fragment', loaded: 0 }, - { overview: 'item', type: 'Watchstone', loaded: 0 }, - { overview: 'item', type: 'Oil', loaded: 0 }, - { overview: 'item', type: 'Incubator', loaded: 0 }, - { overview: 'item', type: 'Scarab', loaded: 0 }, - { overview: 'item', type: 'Fossil', loaded: 0 }, - { overview: 'item', type: 'Resonator', loaded: 0 }, - { overview: 'item', type: 'Essence', loaded: 0 }, - { overview: 'item', type: 'DivinationCard', loaded: 0 }, - { overview: 'item', type: 'Prophecy', loaded: 0 }, - { overview: 'item', type: 'SkillGem', loaded: 0 }, - { overview: 'item', type: 'BaseType', loaded: 0 }, - // { overview: 'item', type: 'HelmetEnchant', loaded: 0 }, - { overview: 'item', type: 'BlightedMap', loaded: 0 }, - { overview: 'item', type: 'BlightRavagedMap', loaded: 0 }, - { overview: 'item', type: 'UniqueMap', loaded: 0 }, - { overview: 'item', type: 'Map', loaded: 0 }, - { overview: 'item', type: 'UniqueJewel', loaded: 0 }, - { overview: 'item', type: 'UniqueFlask', loaded: 0 }, - { overview: 'item', type: 'UniqueWeapon', loaded: 0 }, - { overview: 'item', type: 'UniqueArmour', loaded: 0 }, - { overview: 'item', type: 'UniqueAccessory', loaded: 0 }, - { overview: 'item', type: 'Beast', loaded: 0 }, - { overview: 'item', type: 'Vial', loaded: 0 }, - { overview: 'item', type: 'DeliriumOrb', loaded: 0 }, - { overview: 'item', type: 'Invitation', loaded: 0 }, - { overview: 'item', type: 'Artifact', loaded: 0 } -] +const priceQueue = (() => { + function uniqueItemKey (item: NinjaItemInfo, extra = '') { + let key = `UNIQUE::${item.name} // ${item.baseType}` + if (item.variant) key += ` // ${item.variant}` + if (extra) key += ` // ${extra}` + return key + } + + return [ + { overview: 'currency', type: 'Currency', loaded: 0 }, + { overview: 'currency', type: 'Fragment', loaded: 0 }, + { overview: 'item', type: 'Watchstone', loaded: 0, key: (item: NinjaItemInfo) => `ITEM::${item.name} // ${item.variant}` }, + { overview: 'item', type: 'Oil', loaded: 0 }, + { overview: 'item', type: 'Incubator', loaded: 0 }, + { overview: 'item', type: 'Scarab', loaded: 0 }, + { overview: 'item', type: 'Fossil', loaded: 0 }, + { overview: 'item', type: 'Resonator', loaded: 0 }, + { overview: 'item', type: 'Essence', loaded: 0 }, + { overview: 'item', type: 'DivinationCard', loaded: 0, key: (item: NinjaItemInfo) => `DIVINATION_CARD::${item.name}` }, + { overview: 'item', type: 'Prophecy', loaded: 0, key: (item: NinjaItemInfo) => `PROPHECY::${item.name}` + ((item.variant) ? ` // ${item.variant}` : '') }, + { overview: 'item', type: 'SkillGem', loaded: 0, key: (item: NinjaItemInfo) => `GEM::${item.name} // ${item.gemLevel} // ${item.gemQuality ?? 0}%` + ((item.corrupted) ? ' // Corrupted' : '') }, + { overview: 'item', type: 'BaseType', loaded: 0, key: (item: NinjaItemInfo) => `ITEM::${item.name} // ${item.levelRequired}` + ((item.variant) ? ` // ${item.variant}` : '') }, + // { overview: 'item', type: 'HelmetEnchant', loaded: 0 }, + { overview: 'item', type: 'BlightedMap', loaded: 0, key: (item: NinjaItemInfo) => `ITEM::${item.name} // T${item.mapTier}` }, + { overview: 'item', type: 'BlightRavagedMap', loaded: 0, key: (item: NinjaItemInfo) => `ITEM::${item.name} // T${item.mapTier}` }, + { overview: 'item', type: 'UniqueMap', loaded: 0, key: (item: NinjaItemInfo) => `UNIQUE::${item.name} // T${item.mapTier}` }, + { overview: 'item', type: 'Map', loaded: 0, key: (item: NinjaItemInfo) => `ITEM::${item.name} // T${item.mapTier}` }, + { overview: 'item', type: 'UniqueJewel', loaded: 0, key: uniqueItemKey }, + { overview: 'item', type: 'UniqueFlask', loaded: 0, key: uniqueItemKey }, + { overview: 'item', type: 'UniqueWeapon', loaded: 0, key: (item: NinjaItemInfo) => uniqueItemKey(item, (item.links) ? `${item.links}L` : '') }, + { overview: 'item', type: 'UniqueArmour', loaded: 0, key: (item: NinjaItemInfo) => uniqueItemKey(item, (item.links) ? `${item.links}L` : '') }, + { overview: 'item', type: 'UniqueAccessory', loaded: 0, key: uniqueItemKey }, + { overview: 'item', type: 'Beast', loaded: 0, key: (item: NinjaItemInfo) => `CAPTURED_BEAST::${item.name}` }, + { overview: 'item', type: 'Vial', loaded: 0 }, + { overview: 'item', type: 'DeliriumOrb', loaded: 0 }, + { overview: 'item', type: 'Invitation', loaded: 0 }, + { overview: 'item', type: 'Artifact', loaded: 0 } + ] +})() async function load (force: boolean = false) { if (!selectedLeague.value || !isPublicLeague.value) return @@ -126,7 +134,7 @@ async function load (force: boolean = false) { continue } - PRICE_BY_DETAILS_ID.set(currency.detailsId, { + PRICE_BY_DETAILS_ID.set(`ITEM::${currency.currencyTypeName}`, { detailsId: currency.detailsId, icon: priceData.currencyDetails.find(detail => detail.id === currency.receive!.get_currency_id)!.icon, name: currency.currencyTypeName, @@ -156,12 +164,8 @@ async function load (force: boolean = false) { lines: NinjaItemInfo[] } = await response.json() for (const item of priceData.lines) { - const detailsId = dataType.type === 'UniqueFlask' // seems poe.ninja keeps this for compatability - ? nameToDetailsId(`${item.detailsId} ${item.baseType}`) - : item.detailsId - - PRICE_BY_DETAILS_ID.set(detailsId, { - detailsId, + PRICE_BY_DETAILS_ID.set(dataType.key?.(item) ?? `ITEM::${item.name}`, { + detailsId: item.detailsId, icon: item.icon, name: item.name, chaosValue: item.chaosValue, diff --git a/src/web/price-check/filters/FilterModifierAnointment.vue b/src/web/price-check/filters/FilterModifierAnointment.vue index 744ed5bd..42f32f14 100644 --- a/src/web/price-check/filters/FilterModifierAnointment.vue +++ b/src/web/price-check/filters/FilterModifierAnointment.vue @@ -10,7 +10,6 @@ import { defineComponent, PropType, computed } from 'vue' import { StatFilter } from './interfaces' import { autoCurrency, displayRounding, findByDetailsId, ItemInfo } from '@/web/background/Prices' -import { nameToDetailsId } from '../trends/getDetailsId' import { BLIGHT_RECIPES } from '@/assets/data' export default defineComponent({ @@ -30,8 +29,7 @@ export default defineComponent({ if (!oils.length) return null const prices = oils - .map(nameToDetailsId) - .map(findByDetailsId) + .map(oil => findByDetailsId(`ITEM::${oil}`)) .filter(Boolean) as ItemInfo[] if (prices.length !== oils.length) return null diff --git a/src/web/price-check/related-items/RelatedItems.vue b/src/web/price-check/related-items/RelatedItems.vue index 71364d8f..85b4a5c6 100644 --- a/src/web/price-check/related-items/RelatedItems.vue +++ b/src/web/price-check/related-items/RelatedItems.vue @@ -50,9 +50,11 @@ export default defineComponent({ }) const result = computed(() => { - if (!detailsId.value || !ITEM_DROP.has(detailsId.value)) return null + if (!detailsId.value) return null + + const r = ITEM_DROP.find(entry => entry.query.includes(detailsId.value!)) + if (!r) return null - const r = ITEM_DROP.get(detailsId.value)! const out = { // TODO: show at least icon when price is not available on poe.ninja yet related: r.query.map(id => findByDetailsId(id)).filter(_ => Boolean(_)), diff --git a/src/web/price-check/trends/getDetailsId.ts b/src/web/price-check/trends/getDetailsId.ts index b9d4b0d4..4557ed91 100644 --- a/src/web/price-check/trends/getDetailsId.ts +++ b/src/web/price-check/trends/getDetailsId.ts @@ -16,112 +16,92 @@ export function isValuableBasetype (item: ParsedItem): boolean { ) } -const LATEST_MAP_VARIANT = 'Gen-12' - export function getDetailsId (item: ParsedItem) { + const ns = item.info.namespace if (item.category === ItemCategory.Gem) { - return getGemDetailsId(item)! + return forSkillGem(item) } if (item.category === ItemCategory.Map) { if (item.rarity === ItemRarity.Unique) { - return nameToDetailsId(`${item.info.refName} t${item.mapTier}`) + return `${ns}::${item.info.refName} // T${item.mapTier}` } else { - return nameToDetailsId(`${item.mapBlighted ? `${item.mapBlighted} ` : ''}${item.info.refName} t${item.mapTier} ${LATEST_MAP_VARIANT}`) + return `${ns}::${item.mapBlighted ? `${item.mapBlighted} ` : ''}${item.info.refName} // T${item.mapTier}` } } - if (item.category === ItemCategory.CapturedBeast || - item.category === ItemCategory.MavenInvitation) { - return nameToDetailsId(item.info.refName) - } if (item.rarity === ItemRarity.Unique) { - return getUniqueDetailsId(item) + return forUniqueItem(item) } if (isValuableBasetype(item)) { - return getBaseTypeDetailsId(item) + return forBasetype(item) } if (item.info.prophecy?.masterName) { - return nameToDetailsId(`${item.info.refName} ${item.info.prophecy.masterName}`) + return `${ns}::${item.info.refName} // ${item.info.prophecy.masterName}` } - if (item.category === ItemCategory.Seed) { - return nameToDetailsId(`${item.info.refName} ${item.itemLevel! >= 76 ? '76' : '1-75'}`) - } - if (item.category === ItemCategory.DivinationCard && item.info.refName === 'The Scout') { - return 'the-scout-divcard' - } - if (item.category === ItemCategory.Prophecy && item.info.refName === 'The Twins') { - return 'the-twins-prophecy' - } - - return nameToDetailsId(item.info.name) + return `${ns}::${item.info.name}` } -const BRAND_RECALL_GEM = 'Brand Recall' -const BLOOD_AND_SAND_GEM = 'Blood and Sand' -const PORTAL_GEM = 'Portal' - -function getGemDetailsId (item: ParsedItem) { - if (item.info.refName === PORTAL_GEM) { - return 'portal-1' - } - +function forSkillGem (item: ParsedItem) { let id = item.gemAltQuality === 'Superior' - ? nameToDetailsId(item.info.refName) - : nameToDetailsId(`${item.gemAltQuality} ${item.info.refName}`) + ? `${item.info.namespace}::${item.info.refName}` + : `${item.info.namespace}::${item.gemAltQuality} ${item.info.refName}` if ( SPECIAL_SUPPORT_GEM.includes(item.info.refName) || - item.info.refName === BRAND_RECALL_GEM || - item.info.refName === BLOOD_AND_SAND_GEM || + item.info.refName === 'Portal' || + item.info.refName === 'Brand Recall' || + item.info.refName === 'Blood and Sand' || item.gemLevel! >= 20 ) { - id += `-${item.gemLevel}` + id += ` // ${item.gemLevel}` } else { - id += '-1' + id += ' // 1' } - if (item.quality) { - if ( - !SPECIAL_SUPPORT_GEM.includes(item.info.refName) && - !(item.info.refName === BRAND_RECALL_GEM && item.isCorrupted) - // @TODO(poe.ninja blocking): !(item.info.refName === BLOOD_AND_SAND_GEM && item.isCorrupted) - ) { - // Gem Q20 with up to 4xGCP (TODO: should this rule apply to corrupted gems?) - const q = (item.quality >= 16 && item.quality <= 20) ? 20 : item.quality - id += `-${q}` - } + if ( + item.quality && + !SPECIAL_SUPPORT_GEM.includes(item.info.refName) && + !(item.info.refName === 'Brand Recall' && item.isCorrupted) + // @TODO(poe.ninja blocking): !(item.info.refName === 'Blood and Sand' && item.isCorrupted) + ) { + // Gem Q20 with up to 4xGCP (TODO: should this rule apply to corrupted gems?) + const q = (item.quality >= 16 && item.quality <= 20) ? 20 : item.quality + id += ` // ${q}%` + } else { + id += ' // 0%' } - if (item.isCorrupted) { - id += 'c' + if (item.isCorrupted && item.info.refName !== 'Portal') { + id += ' // Corrupted' } - return id } -function getBaseTypeDetailsId (item: ParsedItem) { - let id = nameToDetailsId(item.info.refName) +function forBasetype (item: ParsedItem) { + let id = `${item.info.namespace}::${item.info.refName}` - id += `-${Math.min(item.itemLevel!, 86)}` + id += ` // ${Math.min(item.itemLevel!, 86)}` if (item.influences.length === 1) { - id += `-${item.influences[0].toLowerCase()}` + id += ` // ${item.influences[0]}` + return id } else if (item.influences.length > 1) { return undefined } - - return id } -function getUniqueDetailsId (item: ParsedItem) { +function forUniqueItem (item: ParsedItem) { if (!item.info.unique) return - let id = nameToDetailsId(`${item.info.refName}${getUniqueVariant(item) || ''} ${item.info.unique.base}`) - + let id = `${item.info.namespace}::${item.info.refName} // ${item.info.unique.base}` + const variant = getUniqueVariant(item) + if (variant) { + id += ` // ${variant}` + } if (item.sockets?.linked) { - id += `-${item.sockets.linked}l` + id += ` // ${item.sockets.linked}L` } if (item.info.unique.base === 'Ivory Watchstone') { const uses = item.statsByType.find(m => m.type === 'explicit' && m.stat.ref === '# uses remaining')! const roll = uses.sources[0].contributes!.value - id += `-${roll}` + id += ` // ${roll}` } return id @@ -136,96 +116,89 @@ function getUniqueVariant (item: ParsedItem) { if (uniqueName === 'Vessel of Vinktar') { if (hasStat(item, 'Adds # to # Lightning Damage to Attacks during Flask effect')) { - return '-added-attacks' + return 'Added Attacks' } else if (hasStat(item, 'Adds # to # Lightning Damage to Spells during Flask effect')) { - return '-added-spells' + return 'Added Spells' } else if (hasStat(item, 'Damage Penetrates #% Lightning Resistance during Flask effect')) { - return '-penetration' + return 'Penetration' } else if (hasStat(item, '#% of Physical Damage Converted to Lightning during Flask effect')) { - return '-conversion' + return 'Conversion' } } else if (uniqueName === "Atziri's Splendour") { if (hasStat(item, '#% increased Armour, Evasion and Energy Shield')) { - return '-armour-evasion-es' + return 'Armour/Evasion/ES' } else if (hasStat(item, '#% increased Evasion and Energy Shield') && hasStat(item, '+# to maximum Energy Shield')) { - return '-evasion-es' + return 'Evasion/ES' } else if (hasStat(item, '#% increased Evasion and Energy Shield') && hasStat(item, '+# to maximum Life')) { - return '-evasion-es-life' + return 'Evasion/ES/Life' } else if (hasStat(item, '#% increased Armour and Energy Shield') && hasStat(item, '+# to maximum Energy Shield')) { - return '-armour-es' + return 'Armour/ES' } else if (hasStat(item, '#% increased Armour and Energy Shield') && hasStat(item, '+# to maximum Life')) { - return '-armour-es-life' + return 'Armour/ES/Life' } else if (hasStat(item, '#% increased Armour and Evasion') && hasStat(item, '+# to maximum Life')) { - return '-armour-evasion' + return 'Armour/Evasion' } else if (hasStat(item, '+# to maximum Energy Shield') && hasStat(item, '#% increased Energy Shield')) { - return '-es' + return 'ES' } else if (hasStat(item, '#% increased Evasion Rating') && hasStat(item, '+# to maximum Life')) { - return '-evasion' + return 'Evasion' } else if (hasStat(item, '#% increased Armour') && hasStat(item, '+# to maximum Life')) { - return '-armour' + return 'Armour' } } else if (uniqueName === 'Bubonic Trail' || uniqueName === 'Lightpoacher' || uniqueName === 'Shroud of the Lightless' || uniqueName === 'Tombfist') { const sockets = item.statsByType.find(m => m.type === 'explicit' && m.stat.ref === 'Has # Abyssal Sockets')! const roll = sockets.sources[0].contributes!.value if (roll === 2) { - return '-2-jewels' + return '2 Jewels' } else if (roll === 1) { - return '-1-jewel' + return '1 Jewel' } } else if (uniqueName === "Volkuur's Guidance") { if (hasStat(item, 'Adds # to # Cold Damage to Spells and Attacks')) { - return '-cold' + return 'Cold' } else if (hasStat(item, 'Adds # to # Fire Damage to Spells and Attacks')) { - return '-fire' + return 'Fire' } else if (hasStat(item, 'Adds # to # Lightning Damage to Spells and Attacks')) { - return '-lightning' + return 'Lightning' } } else if (uniqueName === "Yriel's Fostering") { if (hasStat(item, 'Projectiles from Attacks have #% chance to Maim on Hit while\nyou have a Bestial Minion')) { - return '-maim' + return 'Maim' } else if (hasStat(item, 'Projectiles from Attacks have #% chance to Poison on Hit while\nyou have a Bestial Minion')) { - return '-poison' + return 'Poison' } else if (hasStat(item, 'Projectiles from Attacks have #% chance to inflict Bleeding on Hit while\nyou have a Bestial Minion')) { - return '-bleeding' + return 'Bleeding' } } else if (uniqueName === "Doryani's Invitation") { if (hasStat(item, '#% increased Global Physical Damage')) { - return '-physical' + return 'Physical' } else if (hasStat(item, '#% increased Fire Damage')) { - return '-fire' + return 'Fire' } else if (hasStat(item, '#% increased Cold Damage')) { - return '-cold' + return 'Cold' } else if (hasStat(item, '#% increased Lightning Damage')) { - return '-lightning' + return 'Lightning' } } else if (uniqueName === 'Impresence') { if (hasStat(item, 'Adds # to # Cold Damage')) { - return '-cold' + return 'Cold' } else if (hasStat(item, 'Adds # to # Chaos Damage')) { - return '-chaos' + return 'Chaos' } else if (hasStat(item, 'Adds # to # Fire Damage')) { - return '-fire' + return 'Fire' } else if (hasStat(item, 'Adds # to # Lightning Damage')) { - return '-lightning' + return 'Lightning' } else if (hasStat(item, 'Adds # to # Physical Damage')) { - return '-physical' + return 'Physical' } } else if (uniqueName === 'Voices') { const passives = item.statsByType.find(m => m.stat.ref === 'Adds # Small Passive Skills which grant nothing')! const roll = passives.sources[0].contributes!.value if (roll === 7) { - return '-7-passives' + return '7 passives' } else if (roll === 5) { - return '-5-passives' + return '5 passives' } else if (roll === 3) { - return '-3-passives' + return '3 passives' } } } - -export function nameToDetailsId (name: string) { - return name - .toLowerCase() - .replace(/\s/g, '-') - .replace(/'|,/g, '') -}