diff --git a/.gitignore b/.gitignore index aa34b5aaf7..cb45fe5541 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,6 @@ src/Data/TimelessJewelData/*.bin # Simplegraphic Debugging runtime/imgui.ini runtime/SimpleGraphic/SimpleGraphic.log + +buildcode.txt +main.go diff --git a/debug_args.lua b/debug_args.lua new file mode 100644 index 0000000000..e69de29bb2 diff --git a/jsons/items.json b/jsons/items.json new file mode 100644 index 0000000000..39a2d62c72 --- /dev/null +++ b/jsons/items.json @@ -0,0 +1 @@ +{"items":[{"verified":false,"w":1,"h":2,"icon":"https://web.poecdn.com/gen/image/WzksMTQseyJmIjoiMkRJdGVtcy9GbGFza3MvdG9wYXoiLCJ3IjoxLCJoIjoyLCJzY2FsZSI6MSwibGV2ZWwiOjEsImZzIjp0cnVlfV0/dfefd757a4/topaz.png","league":"Mercenaries","id":"75aff73e23767a6351899b59239e90fc1b766baa3d16bc9fa4135df226e660ee","name":"","typeLine":"Dabbler's Topaz Flask of the Ibex","baseType":"Topaz Flask","rarity":"Magic","ilvl":85,"identified":true,"properties":[{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6},{"name":"Lasts {0} Seconds","values":[["6.90",1]],"displayMode":3},{"name":"Consumes {0} of {1} Charges on use","values":[["20",0],["50",0]],"displayMode":3},{"name":"Currently has {0} Charges","values":[["50",0]],"displayMode":3}],"requirements":[{"name":"Level","values":[["46",0]],"displayMode":0,"type":62}],"explicitMods":["28% reduced Duration","25% increased effect","51% increased Evasion Rating during Effect"],"descrText":"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.","frameType":1,"x":4,"y":0,"inventoryId":"Flask","enchantMods":["70% increased effect","Gains no Charges during Effect"],"utilityMods":["+5% to maximum Lightning Resistance","+40% to Lightning Resistance"]},{"verified":false,"w":2,"h":3,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvV2VhcG9ucy9PbmVIYW5kV2VhcG9ucy9TY2VwdGVycy9UaGVzdXByZW1ldHJ1dGgiLCJ3IjoyLCJoIjozLCJzY2FsZSI6MX1d/1f03434324/Thesupremetruth.png","league":"Mercenaries","id":"d6555e9ca92566bc716fa87b517490e0653fd1286048541162082db0d25dd076","name":"The Supreme Truth","typeLine":"Crystal Sceptre","baseType":"Crystal Sceptre","rarity":"Unique","ilvl":70,"identified":true,"properties":[{"name":"Sceptre","values":[],"displayMode":0},{"name":"Physical Damage","values":[["65-96",1]],"displayMode":0,"type":9},{"name":"Critical Strike Chance","values":[["8.00%",0]],"displayMode":0,"type":12},{"name":"Attacks per Second","values":[["1.39",1]],"displayMode":0,"type":13},{"name":"Weapon Range: {0} metres","values":[["1.1",0]],"displayMode":3,"type":14}],"requirements":[{"name":"Level","values":[["41",0]],"displayMode":0,"type":62},{"name":"Str","values":[["59",0]],"displayMode":1,"type":63},{"name":"Int","values":[["136",1]],"displayMode":1,"type":65}],"explicitMods":["+1 to Level of Socketed Gems","60% increased Intelligence Requirement","85% increased Physical Damage","11% increased Attack Speed","3% increased Experience gain","20% increased Elemental Damage"],"implicitMods":["30% increased Elemental Damage"],"flavourText":["Knowledge brings power, and with power you can\r","grab truth by the throat and shape it as you wish."],"frameType":3,"x":0,"y":0,"inventoryId":"Weapon2","sockets":[{"group":0,"attr":"I","sColour":"B"},{"group":0,"attr":"D","sColour":"G"}]},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvUmluZ3MvUmluZzMiLCJ3IjoxLCJoIjoxLCJzY2FsZSI6MX1d/4f08d18365/Ring3.png","league":"Mercenaries","id":"4724640d9398d778fa9dfc05ecd25010686b754db8dc3b99e09bde791807ebd4","name":"Storm Gyre","typeLine":"Paua Ring","baseType":"Paua Ring","rarity":"Rare","ilvl":83,"identified":true,"duplicated":true,"requirements":[{"name":"Level","values":[["65",0]],"displayMode":0,"type":62}],"explicitMods":["+16 to all Attributes","+109 to Strength","+94 to Dexterity","+58 to Evasion Rating","+69 to maximum Mana"],"implicitMods":["+28 to maximum Mana"],"frameType":2,"x":0,"y":0,"inventoryId":"Ring"},{"verified":false,"w":2,"h":2,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvQXJtb3Vycy9TaGllbGRzL01hbGFjaGFpTG9vcCIsInciOjIsImgiOjIsInNjYWxlIjoxfV0/8c38fb6a4e/MalachaiLoop.png","league":"Mercenaries","id":"078967f375295934a2e1d9fa9bac3263c22609660728dd7253b3266346b4b94c","name":"Malachai's Loop","typeLine":"Harmonic Spirit Shield","baseType":"Harmonic Spirit Shield","rarity":"Unique","ilvl":82,"identified":true,"properties":[{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6},{"name":"Chance to Block","values":[["23%",0]],"displayMode":0,"type":15},{"name":"Energy Shield","values":[["265",1]],"displayMode":0,"type":18}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62,"suffix":"(gem)"},{"name":"Str","values":[["111",0]],"displayMode":1,"type":63,"suffix":"(gem)"},{"name":"Dex","values":[["155",0]],"displayMode":1,"type":64,"suffix":"(gem)"},{"name":"Int","values":[["159",0]],"displayMode":1,"type":65}],"explicitMods":["250% increased Energy Shield","+2 to Maximum Power Charges","20% chance to gain a Power Charge on Hit","15% increased Spell Damage per Power Charge","Lose all Power Charges on reaching Maximum Power Charges","Shocks you when you reach Maximum Power Charges"],"implicitMods":["15% increased Spell Damage"],"flavourText":["Thaumaturgy has no limit.\r","It is our fragile reality that imposes boundaries."],"frameType":3,"x":0,"y":0,"inventoryId":"Offhand","corrupted":true,"sockets":[{"group":0,"attr":"S","sColour":"R"},{"group":0,"attr":"I","sColour":"B"},{"group":0,"attr":"D","sColour":"G"}],"socketedItems":[{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9TdXBwb3J0L0luY3JlYXNlZER1cmF0aW9uIiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/a5db7ae0bd/IncreasedDuration.png","support":true,"league":"Mercenaries","id":"af43ffa289014b1fd8f530544085e9f2e7accb6e97faa4d2030ccebd5ba04b04","name":"","typeLine":"More Duration Support","baseType":"More Duration Support","ilvl":0,"identified":true,"properties":[{"name":"Support, Duration","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Cost \u0026 Reservation Multiplier","values":[["130%",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Str","values":[["111",0]],"displayMode":1,"type":63}],"explicitMods":["Supported Skills have 49% more Skill Effect Duration"],"descrText":"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Skill Gem you wish to augment. Right click to remove from a socket.","secDescrText":"Supports any skill with a duration.","frameType":4,"socket":0,"colour":"S"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzMwLDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9EZXNwYWlyIiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/5f14a5848e/Despair.png","support":false,"league":"Mercenaries","id":"dcad46c7a47d3a930581ecab77da458f4004513020a6b395dd0a53dab141a494","name":"","typeLine":"Despair","baseType":"Despair","ilvl":0,"identified":true,"properties":[{"name":"Spell, AoE, Duration, Chaos, Curse, Hex","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Cost","values":[["33 Mana",0]],"displayMode":0},{"name":"Cast Time","values":[["0.50 sec",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Dex","values":[["68",0]],"displayMode":1,"type":64},{"name":"Int","values":[["98",0]],"displayMode":1,"type":65}],"explicitMods":["Base duration is 11.80 seconds","+1 metre to radius","10% increased Effect of Curse","Cursed enemies have -30% to Chaos Resistance"],"descrText":"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.","secDescrText":"Curses all targets in an area, lowering their chaos resistance.","frameType":4,"socket":1,"colour":"I"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzMwLDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9WYWFsR2Vtcy9WYWFsSGFzdGUiLCJ3IjoxLCJoIjoxLCJzY2FsZSI6MX1d/f19f4c8a3f/VaalHaste.png","support":false,"league":"Mercenaries","id":"d10afd574e5fa6701f499fb62f8a549d9701c5bcfa3060290754e6f0648bad24","name":"","typeLine":"Vaal Haste","baseType":"Vaal Haste","ilvl":0,"identified":true,"properties":[{"name":"Aura, Spell, AoE, Duration, Vaal","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Reservation","values":[["50% Mana",0]],"displayMode":0},{"name":"Cooldown Time","values":[["1.20 sec",0]],"displayMode":0},{"name":"Cast Time","values":[["Instant",0]],"displayMode":0}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Dex","values":[["155",0]],"displayMode":1,"type":64}],"explicitMods":["+1.9 metres to radius","You and nearby allies gain 16% increased Movement Speed","You and nearby allies gain 24% increased Cast Speed","You and nearby allies gain 24% increased Attack Speed"],"descrText":"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.","secDescrText":"Casts an aura that increases the movement speed, attack speed and cast speed of you and your allies.","frameType":4,"socket":2,"colour":"D","corrupted":true,"hybrid":{"isVaalGem":true,"baseTypeName":"Haste","properties":[{"name":"Cooldown Time","values":[["0.50 sec",0]],"displayMode":0},{"name":"Souls Per Use","values":[["50",0]],"displayMode":0},{"name":"Can Store {0} Use","values":[["1",0]],"displayMode":3},{"name":"Soul Gain Prevention","values":[["6 sec",0]],"displayMode":0},{"name":"Cast Time","values":[["Instant",0]],"displayMode":0}],"explicitMods":["Base duration is 4.00 seconds","Modifiers to Buff Duration also apply to this Skill's Soul Gain Prevention","+1.9 metres to radius","You and nearby allies gain 20% increased Movement Speed","You and nearby allies gain 31% increased Cast Speed","You and nearby allies gain 31% increased Attack Speed"],"secDescrText":"Casts a temporary aura that increases the movement speed, attack speed and cast speed of you and your allies."}}]},{"verified":false,"w":2,"h":2,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvQXJtb3Vycy9HbG92ZXMvR2xvdmVzSW50NCIsInciOjIsImgiOjIsInNjYWxlIjoxfV0/484e9bd879/GlovesInt4.png","league":"Mercenaries","id":"cebaf65ba91052a21df2f8799d15dfe0d67ba042ed1c8d101e33f5a81e199c72","name":"Maelström Touch","typeLine":"Warlock Gloves","baseType":"Warlock Gloves","rarity":"Rare","ilvl":85,"identified":true,"properties":[{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6},{"name":"Energy Shield","values":[["166",1]],"displayMode":0,"type":18}],"requirements":[{"name":"Level","values":[["84",0]],"displayMode":0,"type":62},{"name":"Dex","values":[["111",0]],"displayMode":1,"type":64,"suffix":"(gem)"},{"name":"Int","values":[["155",0]],"displayMode":1,"type":65,"suffix":"(gem)"}],"explicitMods":["Socketed Gems are supported by Level 18 Faster Projectiles","Socketed Gems are Supported by Level 16 Faster Casting","Socketed Gems have +3.5% Critical Strike Chance","Socketed Spells have +50% to Critical Strike Multiplier","Adds 5 to 13 Fire Damage to Attacks","8% increased Cast Speed","24% increased Projectile Speed"],"frameType":2,"x":0,"y":0,"inventoryId":"Gloves","craftedMods":["73% increased Energy Shield"],"sockets":[{"group":0,"attr":"I","sColour":"B"},{"group":0,"attr":"I","sColour":"B"},{"group":0,"attr":"D","sColour":"G"},{"group":0,"attr":"I","sColour":"B"}],"socketedItems":[{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzMwLDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9Tb3VsZmVhc3RHZW0iLCJ3IjoxLCJoIjoxLCJzY2FsZSI6MSwiZ2QiOjEzfV0/9209c2ea6e/SoulfeastGem.png","support":false,"league":"Mercenaries","id":"2ca113aa954b1ea6bb72bdda10f73c8426282f757070279c0b947ef12020936b","name":"","typeLine":"Forbidden Rite of Soul Sacrifice","baseType":"Forbidden Rite of Soul Sacrifice","ilvl":0,"identified":true,"properties":[{"name":"Spell, AoE, Chaos, Projectile","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Cost","values":[["45 Life",0]],"displayMode":0},{"name":"Cast Time","values":[["0.75 sec",0]],"displayMode":0},{"name":"Critical Strike Chance","values":[["6.00%",0]],"displayMode":0},{"name":"Effectiveness of Added Damage","values":[["110%",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Int","values":[["155",0]],"displayMode":1,"type":65}],"explicitMods":["Deals 498 to 747 Chaos Damage","Deals 20% of your maximum Energy Shield as base Chaos Damage","Take 50% of maximum Energy Shield as Chaos Damage","Fires extra Projectiles at up to 9 surrounding Enemies"],"descrText":"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.","secDescrText":"Lobs an exploding projectile near the targeted location, and extra projectiles toward enemies around you. The projectiles deal chaos damage based on your energy shield. Casting this spell damages you.","frameType":4,"socket":0,"colour":"I"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9TdXBwb3J0L0VjaG8iLCJ3IjoxLCJoIjoxLCJzY2FsZSI6MX1d/1868afbf2e/Echo.png","support":true,"league":"Mercenaries","id":"341383942d960ffea716d8acc1496fa016cef90be3a5543280df9ceac69a6fd0","name":"","typeLine":"Spell Echo Support","baseType":"Spell Echo Support","ilvl":0,"identified":true,"properties":[{"name":"Spell, Support","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Cost \u0026 Reservation Multiplier","values":[["140%",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Int","values":[["111",0]],"displayMode":1,"type":65}],"explicitMods":["Supported Skills Repeat an additional time","Supported Skills have 54% more Cast Speed","Supported Skills deal 10% increased Spell Damage"],"descrText":"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Skill Gem you wish to augment. Right click to remove from a socket.","secDescrText":"Supports spell skills, making them repeat when cast. Cannot support Vaal skills, totem skills, channelling skills, triggered skills, instant skills, retaliation skills, blink skills, or skills with a reservation.","frameType":4,"socket":1,"colour":"I"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9TdXBwb3J0L0dyZWF0ZXJWb2xsZXlTdXBwb3J0IiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/bb821215f4/GreaterVolleySupport.png","support":true,"league":"Mercenaries","id":"13e4a3b27a4f304e061e0d5854f70c13a65cfb008922601a1a983089bd78123e","name":"","typeLine":"Greater Volley Support","baseType":"Greater Volley Support","ilvl":0,"identified":true,"properties":[{"name":"Support, Projectile","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Cost \u0026 Reservation Multiplier","values":[["150%",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Dex","values":[["111",0]],"displayMode":1,"type":64}],"explicitMods":["Supported Skills fire 4 additional Projectiles","Supported Skills deal 20% increased Projectile Damage","Supported Skills also fire Projectiles from up to 4 points on each side of you","Supported Skills deal 21% less Projectile Damage"],"descrText":"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Skill Gem you wish to augment. Right click to remove from a socket.","secDescrText":"Supports skills that fire projectiles from the user. Does not affect projectiles fired from other locations as secondary effects. Does not support skills that fire projectiles in a spiral.","frameType":4,"socket":2,"colour":"D"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9TdXBwb3J0L1Bvd2VyQ2hhcmdlcyIsInciOjEsImgiOjEsInNjYWxlIjoxfV0/d65c84e89f/PowerCharges.png","support":true,"league":"Mercenaries","id":"d1c23610c615051428b40151a314a24b17ed228f92bba55e97e54f0d30d328bb","name":"","typeLine":"Power Charge On Critical Support","baseType":"Power Charge On Critical Support","ilvl":0,"identified":true,"properties":[{"name":"Critical, Support","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Cost \u0026 Reservation Multiplier","values":[["120%",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Int","values":[["111",0]],"displayMode":1,"type":65}],"explicitMods":["Supported Skills have 64% chance to gain a Power Charge on Critical Strike","Supported Skills deal 4% more Damage per Power Charge"],"descrText":"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Skill Gem you wish to augment. Right click to remove from a socket.","secDescrText":"Supports any skill that hits enemies.","frameType":4,"socket":3,"colour":"I"}],"influences":{"elder":true,"shaper":true},"elder":true,"shaper":true},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvQW11bGV0cy9XaGlzcGVyc29mSW5maW5pdHkiLCJ3IjoxLCJoIjoxLCJzY2FsZSI6MX1d/4fc9361433/WhispersofInfinity.png","league":"Mercenaries","id":"022262605e6e55687810dd04061e29aa6c394bf1d7f8a0ab29af06ceac8d866f","name":"Whispers of Infinity","typeLine":"Seaglass Amulet","baseType":"Seaglass Amulet","rarity":"Unique","ilvl":86,"identified":true,"properties":[{"name":"Quality (Defence Modifiers)","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["74",0]],"displayMode":0,"type":62}],"explicitMods":["7 to 24 Added Attack Chaos Damage per 100 Maximum Mana","+450 to maximum Energy Shield","58% reduced maximum Mana","Skills Cost Energy Shield instead of Mana or Life"],"implicitMods":["18% faster start of Energy Shield Recharge"],"flavourText":["In the Atlas, you do not go mad. You are rewritten."],"frameType":3,"x":0,"y":0,"inventoryId":"Amulet","enchantMods":["Allocates Window of Opportunity"]},{"verified":false,"w":2,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvQmVsdHMvSW5qZWN0b3JCZWx0IiwidyI6MiwiaCI6MSwic2NhbGUiOjEsInJlbGljIjo4fV0/d2868a013e/InjectorBelt.png","league":"Mercenaries","id":"669cbf1993dcb8a80ff9653ba33a52a6ff6abe59c609aa88fef9b9c309732207","name":"Mageblood","typeLine":"Heavy Belt","baseType":"Heavy Belt","rarity":"Unique","ilvl":84,"identified":true,"properties":[{"name":"Quality (Attribute Modifiers)","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["44",0]],"displayMode":0,"type":62}],"explicitMods":["+58 to Dexterity","+21% to Fire Resistance","+15% to Cold Resistance","Magic Utility Flasks cannot be Used","Leftmost 4 Magic Utility Flasks constantly apply their Flask Effects to you","Magic Utility Flask Effects cannot be removed"],"implicitMods":["+42 to Strength"],"flavourText":["Rivers of power course through your veins."],"frameType":10,"x":0,"y":0,"inventoryId":"Belt","corrupted":true,"isRelic":true,"foilVariation":8},{"verified":false,"w":1,"h":2,"icon":"https://web.poecdn.com/gen/image/WzksMTQseyJmIjoiMkRJdGVtcy9GbGFza3MvcnVieSIsInciOjEsImgiOjIsInNjYWxlIjoxLCJsZXZlbCI6MSwiZnMiOnRydWV9XQ/e6ecc91189/ruby.png","league":"Mercenaries","id":"c24f9466dfff1291253aacc7c4183ae61a0ce7eec46e746a506bb5bb47d9bc24","name":"","typeLine":"Alchemist's Ruby Flask of Bracing","baseType":"Ruby Flask","rarity":"Magic","ilvl":85,"identified":true,"properties":[{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6},{"name":"Lasts {0} Seconds","values":[["7.30",1]],"displayMode":3},{"name":"Consumes {0} of {1} Charges on use","values":[["20",0],["50",0]],"displayMode":3},{"name":"Currently has {0} Charges","values":[["50",0]],"displayMode":3}],"requirements":[{"name":"Level","values":[["64",0]],"displayMode":0,"type":62}],"explicitMods":["24% reduced Duration","25% increased effect","58% increased Block and Stun Recovery during Effect"],"descrText":"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.","frameType":1,"x":2,"y":0,"inventoryId":"Flask","enchantMods":["70% increased effect","Gains no Charges during Effect"],"utilityMods":["+5% to maximum Fire Resistance","+40% to Fire Resistance"]},{"verified":false,"w":2,"h":2,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvQXJtb3Vycy9IZWxtZXRzL01pbmRCbG9ja01hc2siLCJ3IjoyLCJoIjoyLCJzY2FsZSI6MX1d/aeb4a78ada/MindBlockMask.png","league":"Mercenaries","id":"e9fa017653c0ded0486713cc80c928ab15fe27f458596f6f8c4923cfb53f729f","name":"Willclash","typeLine":"Golden Mask","baseType":"Golden Mask","rarity":"Unique","ilvl":84,"identified":true,"properties":[{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6},{"name":"Evasion Rating","values":[["545",1]],"displayMode":0,"type":17},{"name":"Energy Shield","values":[["113",1]],"displayMode":0,"type":18}],"requirements":[{"name":"Level","values":[["72",0]],"displayMode":0,"type":62,"suffix":"(gem)"},{"name":"Str","values":[["68",0]],"displayMode":1,"type":63,"suffix":"(gem)"},{"name":"Dex","values":[["155",0]],"displayMode":1,"type":64,"suffix":"(gem)"},{"name":"Int","values":[["159",0]],"displayMode":1,"type":65,"suffix":"(gem)"}],"explicitMods":["350% increased Evasion and Energy Shield","+5% Chance to Block Spell Damage per Power Charge","4% increased Elemental Damage per Power charge","Gain a Power Charge every Second if you haven't lost Power Charges Recently","Lose all Power Charges when you Block"],"implicitMods":["+1 to Maximum Power Charges"],"flavourText":["Obtaining information depends upon pretending one already has it."],"frameType":3,"x":0,"y":0,"inventoryId":"Helm","corrupted":true,"sockets":[{"group":0,"attr":"I","sColour":"B"},{"group":0,"attr":"I","sColour":"B"},{"group":0,"attr":"I","sColour":"B"},{"group":0,"attr":"D","sColour":"G"}],"socketedItems":[{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9TdXBwb3J0L0VubGlnaHRlbiIsInciOjEsImgiOjEsInNjYWxlIjoxfV0/05a949e270/Enlighten.png","support":true,"league":"Mercenaries","id":"95d37d3e24b87a2e179d63c98300ba89f837814f5d44d722cffbbd41deac1683","name":"","typeLine":"Enlighten Support","baseType":"Enlighten Support","ilvl":0,"identified":true,"properties":[{"name":"Exceptional, Support","values":[],"displayMode":0},{"name":"Level","values":[["3 (Max)",0]],"displayMode":0,"type":5},{"name":"Cost \u0026 Reservation Multiplier","values":[["92%",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["45",0]],"displayMode":0,"type":62},{"name":"Int","values":[["73",0]],"displayMode":1,"type":65}],"explicitMods":["This Gem gains 100% increased Experience"],"descrText":"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Skill Gem you wish to augment. Right click to remove from a socket.","secDescrText":"Supports any skill gem. Once this gem reaches level 2 or above, will apply a cost \u0026 reservation multiplier to supported gems. Cannot support skills that don't come from gems.","frameType":4,"socket":0,"colour":"I","corrupted":true},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzMwLDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9EaXNjaXBsaW5lIiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/d802479c30/Discipline.png","support":false,"league":"Mercenaries","id":"b5a2d1357f32838a1dc653fa3c5007195023a0175b7b7beb17847a1bdf332f53","name":"","typeLine":"Discipline","baseType":"Discipline","ilvl":0,"identified":true,"properties":[{"name":"Aura, Spell, AoE","values":[],"displayMode":0},{"name":"Level","values":[["21 (Max)",0]],"displayMode":0,"type":5},{"name":"Reservation","values":[["35% Mana",0]],"displayMode":0},{"name":"Cooldown Time","values":[["1.20 sec",0]],"displayMode":0},{"name":"Cast Time","values":[["Instant",0]],"displayMode":0}],"requirements":[{"name":"Level","values":[["72",0]],"displayMode":0,"type":62},{"name":"Int","values":[["159",0]],"displayMode":1,"type":65}],"explicitMods":["+2 metres to radius","You and nearby allies gain 221 additional Energy Shield","You and nearby Allies gain 30% increased Energy Shield Recharge Rate"],"descrText":"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.","secDescrText":"Casts an aura that grants additional energy shield and increased energy shield recharge rate to you and your allies.","frameType":4,"socket":1,"colour":"I","corrupted":true},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzMwLDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9QdXJpdHkiLCJ3IjoxLCJoIjoxLCJzY2FsZSI6MX1d/0b82235250/Purity.png","support":false,"league":"Mercenaries","id":"bfa12accefac8a5bc82be67716021774c6967da178c9c649eacb82d7f1a7d737","name":"","typeLine":"Purity of Elements","baseType":"Purity of Elements","ilvl":0,"identified":true,"properties":[{"name":"Aura, Spell, AoE","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Reservation","values":[["50% Mana",0]],"displayMode":0},{"name":"Cooldown Time","values":[["1.20 sec",0]],"displayMode":0},{"name":"Cast Time","values":[["Instant",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Str","values":[["68",0]],"displayMode":1,"type":63},{"name":"Int","values":[["98",0]],"displayMode":1,"type":65}],"explicitMods":["+1.9 metres to radius","You and nearby allies gain +39% to all Elemental Resistances","You and nearby allies are Immune to all Elemental Ailments"],"descrText":"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.","secDescrText":"Casts an aura that grants elemental resistances and elemental ailment immunity to you and your allies.","frameType":4,"socket":2,"colour":"I"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzMwLDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9HcmFjZSIsInciOjEsImgiOjEsInNjYWxlIjoxfV0/0d4fbca4ae/Grace.png","support":false,"league":"Mercenaries","id":"b0c94430bdabc68fd956a5dde1100c96b761ca0bf99ae12fefc12a9d525332af","name":"","typeLine":"Grace","baseType":"Grace","ilvl":0,"identified":true,"properties":[{"name":"Aura, Spell, AoE","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Reservation","values":[["50% Mana",0]],"displayMode":0},{"name":"Cooldown Time","values":[["1.20 sec",0]],"displayMode":0},{"name":"Cast Time","values":[["Instant",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Dex","values":[["155",0]],"displayMode":1,"type":64}],"explicitMods":["+1.9 metres to radius","40% increased Area of Effect","You and nearby allies gain 1545 additional Evasion Rating","You and nearby allies gain 29% more Evasion rating"],"descrText":"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.","secDescrText":"Casts an aura that grants evasion to you and your allies.","frameType":4,"socket":3,"colour":"D"}]},{"verified":false,"w":1,"h":2,"icon":"https://web.poecdn.com/gen/image/WzksMTQseyJmIjoiMkRJdGVtcy9GbGFza3MvQm90dGxlZEZ1dHVyZXMiLCJ3IjoxLCJoIjoyLCJzY2FsZSI6MSwibGV2ZWwiOjEsImZpIjp0cnVlfV0/b19cc88881/BottledFutures.png","league":"Mercenaries","id":"11d117e91cab32008a641cb8be4d62cea1bd5a2d46bbdd52ea597f3762d6492b","name":"Wine of the Prophet","typeLine":"Gold Flask","baseType":"Gold Flask","rarity":"Unique","ilvl":86,"identified":true,"properties":[{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6},{"name":"Lasts {0} Seconds","values":[["6",1]],"displayMode":3},{"name":"Consumes {0} of {1} Charges on use","values":[["75",1],["140",1]],"displayMode":3},{"name":"Currently has {0} Charges","values":[["140",0]],"displayMode":3}],"requirements":[{"name":"Level","values":[["33",0]],"displayMode":0,"type":62}],"explicitMods":["+60 to Maximum Charges","25% increased Charges per use","Grants a random Divination Buff for 20 seconds when Used"],"descrText":"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.","flavourText":["\"To proclaim a vision of the future is to make it so,\r","for those that have the will, and the way!\"\r","- High Templar Andronicus"],"frameType":3,"x":0,"y":0,"inventoryId":"Flask","enchantMods":["Used when Charges reach full"],"utilityMods":["30% increased Rarity of Items found"]},{"verified":false,"w":2,"h":2,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvQXJtb3Vycy9Cb290cy9SYWxha2VzaHNJbXBhdGllbmNlIiwidyI6MiwiaCI6Miwic2NhbGUiOjF9XQ/54540f0f3d/RalakeshsImpatience.png","league":"Mercenaries","id":"8f6c2b6e4516cce8eae75b07958b40afdc4555f7d2fb08b3c7d9d3fedd18b4d5","name":"Ralakesh's Impatience","typeLine":"Riveted Boots","baseType":"Riveted Boots","rarity":"Unique","ilvl":85,"identified":true,"properties":[{"name":"Armour","values":[["70",0]],"displayMode":0,"type":16},{"name":"Energy Shield","values":[["15",0]],"displayMode":0,"type":18}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62,"suffix":"(gem)"},{"name":"Str","values":[["155",0]],"displayMode":1,"type":63,"suffix":"(gem)"},{"name":"Dex","values":[["68",0]],"displayMode":1,"type":64,"suffix":"(gem)"},{"name":"Int","values":[["98",0]],"displayMode":1,"type":65,"suffix":"(gem)"}],"explicitMods":["+17% to Cold Resistance","+17% to Chaos Resistance","16% increased Movement Speed","Corrupted Blood cannot be inflicted on you","Count as having maximum number of Power Charges"],"flavourText":["The Master of a Million Faces lived by one\r","simple ethos: why make the effort, when\r","you can simply mimic what others have?"],"frameType":3,"x":0,"y":0,"inventoryId":"Boots","corrupted":true,"sockets":[{"group":0,"attr":"G","sColour":"W"},{"group":0,"attr":"S","sColour":"R"},{"group":0,"attr":"I","sColour":"B"},{"group":0,"attr":"S","sColour":"R"}],"socketedItems":[{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzMwLDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9JbW1vcnRhbENhbGwiLCJ3IjoxLCJoIjoxLCJzY2FsZSI6MX1d/a88b3eb5d4/ImmortalCall.png","support":false,"league":"Mercenaries","id":"c43cb877d88c4b9c6a7e583f44828ee746f55831b7b49bf6f04f56affb94f486","name":"","typeLine":"Immortal Call","baseType":"Immortal Call","ilvl":0,"identified":true,"properties":[{"name":"Spell, Duration, Guard","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Cost","values":[["36 Mana",0]],"displayMode":0},{"name":"Cooldown Time","values":[["3.00 sec",0]],"displayMode":0},{"name":"Cast Time","values":[["Instant",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Str","values":[["155",0]],"displayMode":1,"type":63}],"explicitMods":["Base duration is 1.00 seconds","20% increased Buff Duration per Endurance Charge removed","20% increased Cooldown Recovery Rate","This Skill's Cooldown does not recover during its effect","34% less Elemental Damage taken","35% less Physical Damage taken","15.0% less Physical Damage taken per Endurance Charge removed"],"descrText":"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.","secDescrText":"Take less Physical and Elemental Damage for a short time. Consumes up to 5 Endurance Charges to lengthen the buff and further lessen Physical Damage taken. Shares a cooldown with other Guard skills.","frameType":4,"socket":0,"colour":"S"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9TdXBwb3J0L0Nhc3RPbkRtZ1Rha2VuIiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/2f075f5964/CastOnDmgTaken.png","support":true,"league":"Mercenaries","id":"c238938506473ea2b4ca10bfc89b749dc64e927366e95dfd0100e6d447528fbe","name":"","typeLine":"Cast when Damage Taken Support","baseType":"Cast when Damage Taken Support","ilvl":0,"identified":true,"properties":[{"name":"Support, Spell, Trigger","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Cost \u0026 Reservation Multiplier","values":[["250%",0]],"displayMode":0},{"name":"Cooldown Time","values":[["0.25 sec",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Str","values":[["70",0]],"displayMode":1,"type":63},{"name":"Int","values":[["48",0]],"displayMode":1,"type":65}],"explicitMods":["This Gem can only Support Skill Gems requiring Level 70 or lower","Supported Skills deal 27% less Damage","Trigger Supported Spells when you take 3272 total Damage from Hits","Supported Skills require 10% reduced amount of Damage taken to Trigger"],"descrText":"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Skill Gem you wish to augment. Right click to remove from a socket.","secDescrText":"Each supported spell skill will track damage you take, and be triggered when the total damage taken reaches a threshold. Cannot support skills used by totems, traps, or mines. Vaal skills, channelling skills, and skills with a reservation cannot be triggered.","frameType":4,"socket":1,"colour":"S"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzMwLDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9Gcm9zdEdsb2JlIiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/c9d8957c73/FrostGlobe.png","support":false,"league":"Mercenaries","id":"6f64f4a565b506020b202a5b1c8f94c6146776487f8da4e120241147fce6270c","name":"","typeLine":"Frost Shield","baseType":"Frost Shield","ilvl":0,"identified":true,"properties":[{"name":"Critical, Spell, AoE, Duration, Cold","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Cost","values":[["54 Mana",0]],"displayMode":0},{"name":"Cooldown Time","values":[["5.00 sec",0]],"displayMode":0},{"name":"Cast Time","values":[["0.50 sec",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Dex","values":[["68",0]],"displayMode":1,"type":64},{"name":"Int","values":[["98",0]],"displayMode":1,"type":65}],"explicitMods":["Base duration is 10.00 seconds","20% increased Effect of Cold Ailments","20% of Damage dealt to you or Allies in Area with Hits by Enemies in Area is taken from Frost Shield's Life before your Life or Energy Shield","60% of Damage dealt to you or Allies in Area with Hits by Enemies outside Area is taken from Frost Shield's Life before your Life or Energy Shield","You gain +0.38% to Spell Critical Strike Chance per Stage while in Area","Frost Shield has 910 maximum Life per Stage","Maximum 4 Stages","Gains 1 Stage every 0.3 seconds while you are losing Energy Shield","You lose 730 Energy Shield per second"],"descrText":"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.","secDescrText":"Place a Frost Shield that drains your energy shield for one second or until you run out, gaining stages while this drain occurs. The Frost Shield takes some damage from hits in place of you and allies while in its area. Enemies in the area are Chilled. You can only have one Frost Shield active at once.","frameType":4,"socket":2,"colour":"I"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzMwLDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9Sb2NrR29sZW0iLCJ3IjoxLCJoIjoxLCJzY2FsZSI6MX1d/f0d237e67b/RockGolem.png","support":false,"league":"Mercenaries","id":"4fc78d0126709118d3b696b053ba116c0fafe54bd44e86c7c886cb96186486df","name":"","typeLine":"Summon Stone Golem","baseType":"Summon Stone Golem","ilvl":0,"identified":true,"properties":[{"name":"Minion, Spell, Golem, Physical","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Cost","values":[["54 Mana",0]],"displayMode":0},{"name":"Cooldown Time","values":[["6.00 sec",0]],"displayMode":0},{"name":"Cast Time","values":[["1.00 sec",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Str","values":[["98",0]],"displayMode":1,"type":63},{"name":"Dex","values":[["68",0]],"displayMode":1,"type":64}],"explicitMods":["Maximum 1 Summoned Golem","Golems grant 105 Life Regenerated per second","Golems grant 20% increased Defences","20% increased Buff Effect"],"descrText":"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.","secDescrText":"Summons a Stone Golem that grants you life regeneration and defences. In addition to its melee attack, the Stone Golem uses a rolling charge and a powerful slam that can taunt enemies.","frameType":4,"socket":3,"colour":"S"}]},{"verified":false,"w":1,"h":2,"icon":"https://web.poecdn.com/gen/image/WzksMTQseyJmIjoiMkRJdGVtcy9GbGFza3MvZXZhc2lvbmZsYXNrMDEiLCJ3IjoxLCJoIjoyLCJzY2FsZSI6MSwibGV2ZWwiOjEsImZzIjp0cnVlfV0/1acca1132e/evasionflask01.png","league":"Mercenaries","id":"8b24b7a496682c8876c9b10e814d84b9feedacbcf475ec2dc5e45edbbf874e1b","name":"","typeLine":"Dabbler's Jade Flask of the Cheetah","baseType":"Jade Flask","rarity":"Magic","ilvl":85,"identified":true,"properties":[{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6},{"name":"Lasts {0} Seconds","values":[["5",1]],"displayMode":3},{"name":"Consumes {0} of {1} Charges on use","values":[["30",0],["60",0]],"displayMode":3},{"name":"Currently has {0} Charges","values":[["60",0]],"displayMode":3}],"requirements":[{"name":"Level","values":[["68",0]],"displayMode":0,"type":62}],"explicitMods":["30% reduced Duration","25% increased effect","12% increased Movement Speed during Effect"],"descrText":"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.","frameType":1,"x":1,"y":0,"inventoryId":"Flask","enchantMods":["70% increased effect","Gains no Charges during Effect"],"utilityMods":["+1500 to Evasion Rating"]},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvUmluZ3MvQ2lyY2xlb2ZEYXJrUml0dWFscyIsInciOjEsImgiOjEsInNjYWxlIjoxfV0/15e83a745c/CircleofDarkRituals.png","league":"Mercenaries","id":"9fc77c3419d38204f94593ea90cae5ff2976bbaa2e2d2f543f3d7e4c9cf33e28","name":"Coiling Whisper","typeLine":"Amethyst Ring","baseType":"Amethyst Ring","rarity":"Unique","ilvl":85,"identified":true,"requirements":[{"name":"Level","values":[["32",0]],"displayMode":0,"type":62}],"explicitMods":["37% reduced Area of Effect of Hex Skills","Targets are Unaffected by your Hexes","When 90% of your Hex's Duration Expires on an Enemy, Eat 1 Soul per Enemy Power"],"implicitMods":["+18% to Chaos Resistance"],"flavourText":["I never knew fear until she was ripped away.\r","My promises were hollow ever after."],"frameType":3,"x":0,"y":0,"inventoryId":"Ring2","corrupted":true},{"verified":false,"w":1,"h":3,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvV2VhcG9ucy9PbmVIYW5kV2VhcG9ucy9XYW5kcy9Wb2lkQmF0dGVyeSIsInciOjEsImgiOjMsInNjYWxlIjoxfV0/71a0fdc8db/VoidBattery.png","league":"Mercenaries","id":"988990a63d19165819e1d6cf4c50ac55840de9ff020e327ac05d937a7aa42bdd","name":"Void Battery","typeLine":"Prophecy Wand","baseType":"Prophecy Wand","rarity":"Unique","ilvl":85,"identified":true,"properties":[{"name":"Wand","values":[],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6},{"name":"Physical Damage","values":[["34-62",1]],"displayMode":0,"type":9},{"name":"Critical Strike Chance","values":[["10.00%",0]],"displayMode":0,"type":12},{"name":"Attacks per Second","values":[["1.40",0]],"displayMode":0,"type":13}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62,"suffix":"(gem)"},{"name":"Dex","values":[["98",0]],"displayMode":1,"type":64,"suffix":"(gem)"},{"name":"Int","values":[["245",0]],"displayMode":1,"type":65}],"explicitMods":["80% reduced Spell Damage","19% increased Cast Speed","53% increased Global Critical Strike Chance","+43 to maximum Mana","+1 to Maximum Power Charges","25% increased Spell Damage per Power Charge"],"implicitMods":["36% increased Spell Damage"],"flavourText":["\"The trick is to give nothingness,\r","and to receive everything in return.\"\r","- Inquisitor Maligaro"],"frameType":3,"x":0,"y":0,"inventoryId":"Weapon","sockets":[{"group":0,"attr":"D","sColour":"G"},{"group":0,"attr":"D","sColour":"G"},{"group":0,"attr":"I","sColour":"B"}],"socketedItems":[{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzMwLDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9XaXRoZXJpbmdTdGVwR2VtIiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/9f7784c2fa/WitheringStepGem.png","support":false,"league":"Mercenaries","id":"01e19116fa87abb021db43d83c7bc95cba5d72a4a8a7c03ccdabc206d2387223","name":"","typeLine":"Withering Step","baseType":"Withering Step","ilvl":0,"identified":true,"properties":[{"name":"Travel, AoE, Chaos, Movement, Blink, Spell, Duration","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Cost","values":[["23 Mana",0]],"displayMode":0},{"name":"Cooldown Time","values":[["3.00 sec",0]],"displayMode":0},{"name":"Cast Time","values":[["Instant",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Dex","values":[["98",0]],"displayMode":1,"type":64},{"name":"Int","values":[["68",0]],"displayMode":1,"type":65}],"explicitMods":["Withered lasts 3 seconds","+0.6 metres to radius","Cannot be Cast or Triggered while Elusive\nGrants Elusive","This Skill's Cooldown does not recover during its effect","38% increased Effect of Elusive from this Skill","Inflicts 8 Withered Debuffs the first time each Enemy enters the Area","Buff grants Phasing"],"descrText":"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.","secDescrText":"Grants Elusive and a buff that grants Phasing. While you have this buff, monsters that enter an area around you will be Withered. Using a skill or losing the Elusive buff ends this skill's effects. Shares a cooldown with other Blink skills. Cannot be used while already Elusive.","frameType":4,"socket":0,"colour":"D"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9TdXBwb3J0L2VuaGFuY2UiLCJ3IjoxLCJoIjoxLCJzY2FsZSI6MX1d/9f8df30377/enhance.png","support":true,"league":"Mercenaries","id":"4bbe8121443a03f8d3d3f4f01ae8a9020fefe66814f3039625a8d5b173d7f924","name":"","typeLine":"Enhance Support","baseType":"Enhance Support","ilvl":0,"identified":true,"properties":[{"name":"Exceptional, Support","values":[],"displayMode":0},{"name":"Level","values":[["3 (Max)",0]],"displayMode":0,"type":5},{"name":"Cost \u0026 Reservation Multiplier","values":[["120%",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["45",0]],"displayMode":0,"type":62},{"name":"Dex","values":[["73",0]],"displayMode":1,"type":64}],"explicitMods":["This Gem gains 100% increased Experience","+16% to Quality of Supported Skill Gems"],"descrText":"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Skill Gem you wish to augment. Right click to remove from a socket.","secDescrText":"Supports any skill gem. Once this gem reaches level 2 or above, will raise the quality of supported gems. Cannot support skills that don't come from gems.","frameType":4,"socket":1,"colour":"D"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzMwLDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9BdXRvQ2FzdEluc3RhbnRTa2lsbHMiLCJ3IjoxLCJoIjoxLCJzY2FsZSI6MX1d/ec5d94a83e/AutoCastInstantSkills.png","support":false,"league":"Mercenaries","id":"2579ad6d7406cb4e6ad80c04907c779bb180d09ac2e8e0727884a77b35e97f59","name":"","typeLine":"Automation Support","baseType":"Automation","ilvl":0,"identified":true,"properties":[{"name":"Trigger, Spell","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Cooldown Time","values":[["0.60 sec",0]],"displayMode":0},{"name":"Cast Time","values":[["Instant",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Dex","values":[["68",0]],"displayMode":1,"type":64},{"name":"Int","values":[["98",0]],"displayMode":1,"type":65}],"explicitMods":["Each Supported Spell will Trigger when its Cooldown is over"],"descrText":"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.","secDescrText":"While this skill is active, supported spells will be repeatedly triggered.","frameType":4,"socket":2,"colour":"I","hybrid":{"baseTypeName":"Automation","properties":[{"name":"Cost \u0026 Reservation Multiplier","values":[["150%",0]],"displayMode":0}],"explicitMods":["Supported Spells are Triggered when their Cooldowns are over"],"secDescrText":"Supports spell skills that are instant and have no reservation. Cannot support Vaal skills or skills used by totems, traps or mines. Cannot modify the skills of minions."}}]},{"verified":false,"w":1,"h":2,"icon":"https://web.poecdn.com/gen/image/WzksMTQseyJmIjoiMkRJdGVtcy9GbGFza3Mvc2FwcGhpcmUiLCJ3IjoxLCJoIjoyLCJzY2FsZSI6MSwibGV2ZWwiOjEsImZzIjp0cnVlfV0/e14b38eac2/sapphire.png","league":"Mercenaries","id":"ad2edf05172aff337b2a17ae20ac3696a67e15d6c87c636a2737c7e06d083368","name":"","typeLine":"Dabbler's Sapphire Flask of the Gazelle","baseType":"Sapphire Flask","rarity":"Magic","ilvl":85,"identified":true,"properties":[{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6},{"name":"Lasts {0} Seconds","values":[["6.60",1]],"displayMode":3},{"name":"Consumes {0} of {1} Charges on use","values":[["20",0],["50",0]],"displayMode":3},{"name":"Currently has {0} Charges","values":[["50",0]],"displayMode":3}],"requirements":[{"name":"Level","values":[["40",0]],"displayMode":0,"type":62}],"explicitMods":["31% reduced Duration","25% increased effect","45% increased Evasion Rating during Effect"],"descrText":"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.","frameType":1,"x":3,"y":0,"inventoryId":"Flask","enchantMods":["70% increased effect","Gains no Charges during Effect"],"utilityMods":["+5% to maximum Cold Resistance","+40% to Cold Resistance"]},{"verified":false,"w":2,"h":3,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvQXJtb3Vycy9Cb2R5QXJtb3Vycy9Cb2R5U3RyRGV4SW50MUMiLCJ3IjoyLCJoIjozLCJzY2FsZSI6MSwic2VhcmluZyI6dHJ1ZSwidGFuZ2xlZCI6dHJ1ZX1d/0374235011/BodyStrDexInt1C.png","league":"Mercenaries","id":"e7cbb175c52f1264aa8869cab1b03a19031b716e1a834e907e076dc8d61e5e2e","name":"Cataclysm Veil","typeLine":"Twilight Regalia","baseType":"Twilight Regalia","rarity":"Rare","ilvl":86,"identified":true,"properties":[{"name":"Quality","values":[["+26%",1]],"displayMode":0,"type":6},{"name":"Energy Shield","values":[["1136",1]],"displayMode":0,"type":18}],"requirements":[{"name":"Level","values":[["84",0]],"displayMode":0,"type":62},{"name":"Str","values":[["111",0]],"displayMode":1,"type":63,"suffix":"(gem)"},{"name":"Dex","values":[["67",0]],"displayMode":1,"type":64,"suffix":"(gem)"},{"name":"Int","values":[["293",0]],"displayMode":1,"type":65}],"explicitMods":["+97 to maximum Energy Shield","126% increased Energy Shield","8% increased Stun and Block Recovery"],"implicitMods":["7% Chance to Block Attack Damage","+24% to Critical Strike Multiplier for Spell Damage"],"frameType":2,"x":0,"y":0,"inventoryId":"BodyArmour","craftedMods":["Can have up to 3 Crafted Modifiers","+25 to Dexterity and Intelligence","6% increased Attributes"],"sockets":[{"group":0,"attr":"D","sColour":"G"},{"group":0,"attr":"D","sColour":"G"},{"group":0,"attr":"D","sColour":"G"},{"group":0,"attr":"I","sColour":"B"},{"group":0,"attr":"I","sColour":"B"},{"group":0,"attr":"S","sColour":"R"}],"socketedItems":[{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzMwLDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9SYWluT2ZCbGFkZXMiLCJ3IjoxLCJoIjoxLCJzY2FsZSI6MSwiZ3QiOnRydWV9XQ/92b0a3ac60/RainOfBlades.png","support":false,"league":"Mercenaries","id":"9a5976c378d1ea6470aaf859d5f6309d1e86cfc9a6cef035f364cc19d00a7248","name":"","typeLine":"Bladefall of Trarthus","baseType":"Bladefall of Trarthus","ilvl":0,"identified":true,"properties":[{"name":"Spell, AoE, Physical, Arcane, Duration","values":[],"displayMode":0},{"name":"Level","values":[["1",0]],"displayMode":0,"type":5},{"name":"Cost","values":[["5% Mana per second",0]],"displayMode":0},{"name":"Cooldown Time","values":[["0.30 sec",0]],"displayMode":0},{"name":"Cast Time","values":[["Instant",0]],"displayMode":0},{"name":"Critical Strike Chance","values":[["6.00%",0]],"displayMode":0},{"name":"Effectiveness of Added Damage","values":[["120%",0]],"displayMode":0}],"requirements":[{"name":"Level","values":[["28",0]],"displayMode":0,"type":62},{"name":"Dex","values":[["67",0]],"displayMode":1,"type":64}],"explicitMods":["Deals 26 to 39 Physical Damage","Base duration is 6.00 seconds","A Volley of blades falls every 0.7 seconds","2% increased Volley frequency per 100 maximum Mana","Base Volley radius is 2.5 metres","Base Blade radius is 1 metre","5 Blades fall per Volley, which will then Linger in the ground","Maximum 40 Lingering Blades can be left in the ground at a time"],"descrText":"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.","secDescrText":"Once activated, continuously spends mana to cause volleys of ethereal weapons rain from the sky around you, dealing damage to enemies they impact. Each Blade will target a separate enemy in the volley area if possible. Each enemy can only be hit once by each volley, even if multiple blades land near them. This skill cannot be triggered or used by Totems, Traps, or Mines.","frameType":4,"socket":0,"colour":"D","additionalProperties":[{"name":"Experience","values":[["199345/199345",0]],"displayMode":2,"type":20,"progress":1}],"nextLevelRequirements":[{"name":"Level","values":[["31",0]],"displayMode":0},{"name":"Dex","values":[["73",0]],"displayMode":1}]},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzMwLDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9UZW1wb3JhbENoYWlucyIsInciOjEsImgiOjEsInNjYWxlIjoxfV0/5d0aef0dab/TemporalChains.png","support":false,"league":"Mercenaries","id":"394384808ceec56fa69cd0eb7151c92249accedf647f67602fe53fe663e472ce","name":"","typeLine":"Temporal Chains","baseType":"Temporal Chains","ilvl":0,"identified":true,"properties":[{"name":"Spell, AoE, Duration, Curse, Hex","values":[],"displayMode":0},{"name":"Level","values":[["1",0]],"displayMode":0,"type":5},{"name":"Cost","values":[["16 Mana",0]],"displayMode":0},{"name":"Cast Time","values":[["0.50 sec",0]],"displayMode":0}],"requirements":[{"name":"Level","values":[["24",0]],"displayMode":0,"type":62},{"name":"Dex","values":[["37",0]],"displayMode":1,"type":64},{"name":"Int","values":[["25",0]],"displayMode":1,"type":65}],"explicitMods":["Base duration is 5.00 seconds","50% less Effect of Curse against Players","Cursed Normal and Magic Enemies have 15% less Action Speed","Other effects on Cursed enemies expire 25% slower","Cursed Rare and Unique Enemies have 9% less Action Speed"],"descrText":"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.","secDescrText":"Curses all enemies in an area, lowering their action speed and making other effects on them expire more slowly.","frameType":4,"socket":1,"colour":"D","additionalProperties":[{"name":"Experience","values":[["118383/118383",0]],"displayMode":2,"type":20,"progress":1}],"nextLevelRequirements":[{"name":"Level","values":[["27",0]],"displayMode":0},{"name":"Dex","values":[["41",0]],"displayMode":1},{"name":"Int","values":[["28",0]],"displayMode":1}]},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9TdXBwb3J0L1N1cHBvcnRSYXBpZERlY2F5R2VtIiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/bed2b2a224/SupportRapidDecayGem.png","support":true,"league":"Mercenaries","id":"f8096fcf4921fb3771058e294ca924d64e3e00c55f256e05c121548679f60736","name":"","typeLine":"Swift Affliction Support","baseType":"Swift Affliction Support","ilvl":0,"identified":true,"properties":[{"name":"Support, Duration","values":[],"displayMode":0},{"name":"Level","values":[["1",0]],"displayMode":0,"type":5},{"name":"Cost \u0026 Reservation Multiplier","values":[["140%",0]],"displayMode":0}],"requirements":[{"name":"Level","values":[["31",0]],"displayMode":0,"type":62},{"name":"Dex","values":[["52",0]],"displayMode":1,"type":64}],"explicitMods":["Supported Skills deal 25% more Damage over Time","25% less Duration of Supported Skills and Damaging Ailments they inflict"],"descrText":"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Skill Gem you wish to augment. Right click to remove from a socket.","secDescrText":"Supports any skill that has a duration, or can hit enemies to inflict ailments on them.","frameType":4,"socket":2,"colour":"D","additionalProperties":[{"name":"Experience","values":[["285815/285815",0]],"displayMode":2,"type":20,"progress":1}],"nextLevelRequirements":[{"name":"Level","values":[["34",0]],"displayMode":0},{"name":"Dex","values":[["57",0]],"displayMode":1}]},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9TdXBwb3J0L0N1cnNlT25IaXQiLCJ3IjoxLCJoIjoxLCJzY2FsZSI6MX1d/da0ae156c5/CurseOnHit.png","support":true,"league":"Mercenaries","id":"a018487ec4cc9e56949d42f81c0a63329e9907b295361240795c69d19747d7e6","name":"","typeLine":"Hextouch Support","baseType":"Hextouch Support","ilvl":0,"identified":true,"properties":[{"name":"Support, Hex, Trigger","values":[],"displayMode":0},{"name":"Level","values":[["1",0]],"displayMode":0,"type":5},{"name":"Cost \u0026 Reservation Multiplier","values":[["130%",0]],"displayMode":0}],"requirements":[{"name":"Level","values":[["38",0]],"displayMode":0,"type":62},{"name":"Int","values":[["63",0]],"displayMode":1,"type":65}],"explicitMods":["Supported Skills apply supported Curses on Hit","You cannot Cast Supported Curse Spells","35% less Effect of Supported Curses","Supported Skills have 50% reduced Curse Duration"],"descrText":"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Skill Gem you wish to augment. Right click to remove from a socket.","secDescrText":"Must support both a skill that hits enemies, and a hex curse skill to work. The hex will be applied when enemies are hit by the other skill. Cannot support totems, traps, or mines. Minions cannot apply hexes this way.","frameType":4,"socket":3,"colour":"I","additionalProperties":[{"name":"Experience","values":[["388734/388734",0]],"displayMode":2,"type":20,"progress":1}],"nextLevelRequirements":[{"name":"Level","values":[["40",0]],"displayMode":0},{"name":"Int","values":[["66",0]],"displayMode":1}]},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzMwLDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9MaWdodG5pbmdXYXJwIiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/ca350bc087/LightningWarp.png","support":false,"league":"Mercenaries","id":"eeb3c4c4398e20729ff0b19dbcadcb9e7e6b1f49cdcccf8e5b9c6437c535f05b","name":"","typeLine":"Lightning Warp","baseType":"Lightning Warp","ilvl":0,"identified":true,"properties":[{"name":"Spell, AoE, Duration, Movement, Lightning, Travel","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Cost","values":[["26 Mana",0]],"displayMode":0},{"name":"Cast Time","values":[["0.70 sec",0]],"displayMode":0},{"name":"Critical Strike Chance","values":[["5.00%",0]],"displayMode":0},{"name":"Effectiveness of Added Damage","values":[["90%",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Int","values":[["155",0]],"displayMode":1,"type":65}],"explicitMods":["Deals 51 to 965 Lightning Damage","20% increased Cast Speed","+0.4 metres to radius","Can queue up to 50 uses","49% reduced Duration"],"descrText":"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.","secDescrText":"Waits for a duration before teleporting to a targeted destination, with the duration based on the distance and your movement speed. When the teleport occurs, lightning damage is dealt to the area around both where the player was and where they teleported to. Casting again will queue up multiple teleportations to occur in sequence.","frameType":4,"socket":4,"colour":"I"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvR2Vtcy9TdXBwb3J0L1JlZHVjZUR1cmF0aW9uIiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/ab88044f5f/ReduceDuration.png","support":true,"league":"Mercenaries","id":"29b8bbd677f731a758397c27b6eaa542e6ebcf7a456e3849cd3ad9a35a015d8a","name":"","typeLine":"Less Duration Support","baseType":"Less Duration Support","ilvl":0,"identified":true,"properties":[{"name":"Support, Duration","values":[],"displayMode":0},{"name":"Level","values":[["20 (Max)",0]],"displayMode":0,"type":5},{"name":"Cost \u0026 Reservation Multiplier","values":[["130%",0]],"displayMode":0},{"name":"Quality","values":[["+20%",1]],"displayMode":0,"type":6}],"requirements":[{"name":"Level","values":[["70",0]],"displayMode":0,"type":62},{"name":"Str","values":[["111",0]],"displayMode":1,"type":63}],"explicitMods":["Supported Skills deal 19% more Damage","Supported Skills have 59% less Skill Effect Duration"],"descrText":"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Skill Gem you wish to augment. Right click to remove from a socket.","secDescrText":"Supports any skill that has a duration.","frameType":4,"socket":5,"colour":"S"}],"searing":true,"tangled":true,"split":true}],"character":{"name":"JetTwoHolidayy","realm":"pc","class":"Occultist","league":"Mercenaries","level":98}} diff --git a/jsons/passives.json b/jsons/passives.json new file mode 100644 index 0000000000..0b876bf52c --- /dev/null +++ b/jsons/passives.json @@ -0,0 +1 @@ +{"character":3,"ascendancy":1,"alternate_ascendancy":0,"hashes":[1593,4367,4397,5296,5743,5935,6728,6770,7388,7444,7960,9261,9567,11420,11455,11730,12246,12536,12783,12888,13232,15064,15117,15631,16123,16954,18182,18769,19501,20528,20832,20987,21033,21974,21984,22577,22618,23659,25411,25535,25831,26196,26270,27096,27656,27733,29199,30370,31875,31931,31984,32176,32241,32417,32932,33310,33435,33864,34171,34173,35958,36452,36542,36634,36678,36858,37127,37492,37569,37999,39841,42760,43988,44184,45558,46340,46842,46897,46904,47197,48124,49605,50029,51219,51804,52502,52742,53456,55230,56158,56295,57264,58210,58218,60259,60398,60440,60472,61419,61653,61834,62214,62504,62970,63398,63447,64210,64426],"hashes_ex":[1,3,5,7,9,12,13,14,16,30,32,33,34,36,37,198,200,202,204,206],"mastery_effects":{"16123":2987,"25535":45307,"27733":23471,"32241":47642,"45558":30612,"47197":61097,"55230":62252},"skill_overrides":{"15064":{"activeEffectImage":"Art/2DArt/UIImages/InGame/AncestralTrial/PassiveTreeTattoos/NgamahuTribePassiveBG.png","icon":"Art/2DArt/SkillIcons/passives/FireResistNode.png","isTattoo":true,"name":"Tattoo of the Ngamahu Firewalker","stats":["+6% to Fire Resistance"]},"31931":{"activeEffectImage":"Art/2DArt/UIImages/InGame/AncestralTrial/PassiveTreeTattoos/NgamahuTribePassiveBG.png","icon":"Art/2DArt/SkillIcons/passives/FireResistNode.png","isTattoo":true,"name":"Tattoo of the Ngamahu Firewalker","stats":["+6% to Fire Resistance"]},"32241":{"activeEffectImage":"Art/2DArt/UIImages/InGame/Village/RuneCraftingPassiveBG.png","activeIcon":"Art/2DArt/SkillIcons/passives/AtlasTrees/RuneGraftingIcon1.png","icon":"Art/2DArt/SkillIcons/passives/AtlasTrees/RuneGraftingIcon1.png","inactiveIcon":"Art/2DArt/SkillIcons/passives/AtlasTrees/RuneGraftingIcon1.png","isMastery":true,"name":"Runegraft of the Fortress","reminderText":["(Attributes are Strength, Dexterity, and Intelligence)","(Armour, Evasion Rating and Energy Shield are the standard Defences)"],"stats":["10% reduced Attributes","40% increased Global Defences"]},"34171":{"activeEffectImage":"Art/2DArt/UIImages/InGame/AncestralTrial/PassiveTreeTattoos/NgamahuTribePassiveBG.png","icon":"Art/2DArt/SkillIcons/passives/FireResistNode.png","isTattoo":true,"name":"Tattoo of the Ngamahu Firewalker","stats":["+6% to Fire Resistance"]},"60472":{"activeEffectImage":"Art/2DArt/UIImages/InGame/AncestralTrial/PassiveTreeTattoos/NgamahuTribePassiveBG.png","icon":"Art/2DArt/SkillIcons/passives/FireResistNode.png","isTattoo":true,"name":"Tattoo of the Ngamahu Firewalker","stats":["+6% to Fire Resistance"]}},"items":[{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvSmV3ZWxzL05ld0dlbUJhc2UzIiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/db35e60885/NewGemBase3.png","league":"Mercenaries","id":"c96f429159b886b7d1f4ab95983263036d706b2eb83866b7e390cb565636646f","name":"Brood Wound","typeLine":"Large Cluster Jewel","baseType":"Large Cluster Jewel","rarity":"Rare","ilvl":83,"identified":true,"explicitMods":["Added Small Passive Skills also grant: +3 to Dexterity","1 Added Passive Skill is Touch of Cruelty","1 Added Passive Skill is Unholy Grace","1 Added Passive Skill is Unwaveringly Evil"],"descrText":"Place into an allocated Large Jewel Socket on the Passive Skill Tree. Added passives do not interact with jewel radiuses. Right click to remove from the Socket.","frameType":2,"x":20,"y":0,"inventoryId":"PassiveJewels","enchantMods":["Adds 8 Passive Skills","2 Added Passive Skills are Jewel Sockets","Added Small Passive Skills grant: 12% increased Chaos Damage"]},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvSmV3ZWxzL3VuaXF1ZTE5IiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/72dbd8bd3d/unique19.png","league":"Mercenaries","id":"6be5e8a64248647059a9560a36fbe291cbccd7928a256dfef90c7175af87204e","name":"The Balance of Terror","typeLine":"Cobalt Jewel","baseType":"Cobalt Jewel","rarity":"Unique","ilvl":85,"identified":true,"properties":[{"name":"Limited to","values":[["1",0]],"displayMode":0}],"explicitMods":["+13% to all Elemental Resistances","Inflict Withered for 2 seconds on Hit if you've cast Despair in the past 10 seconds","You are Unaffected by Ignite if you've cast Flammability in the past 10 seconds"],"descrText":"Place into an allocated Jewel Socket on the Passive Skill Tree. Right click to remove from the Socket.","flavourText":["Fellshrine stood as a holy bastion opposite the\r","Chamber of Sins, and all that it represented.\r","For one to rise, the other must fall."],"frameType":3,"x":53,"y":0,"inventoryId":"PassiveJewels"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvSmV3ZWxzL2Jhc2ljaW50IiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/510013aec2/basicint.png","league":"Mercenaries","id":"d8aaaa50a7db22affd190fa19d50e538817581231d5f5318f07979d2c9658b8a","name":"Maelström Star","typeLine":"Cobalt Jewel","baseType":"Cobalt Jewel","rarity":"Rare","ilvl":84,"identified":true,"explicitMods":["+18% to Critical Strike Multiplier with Lightning Skills","7% increased maximum Energy Shield","+9% to all Elemental Resistances","+12% to Fire and Cold Resistances"],"descrText":"Place into an allocated Jewel Socket on the Passive Skill Tree. Right click to remove from the Socket.","frameType":2,"x":1,"y":0,"inventoryId":"PassiveJewels"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvSmV3ZWxzL05ld0dlbUJhc2UzIiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/db35e60885/NewGemBase3.png","league":"Mercenaries","id":"b17e83ffdb3570bc40ff9f4522314c8df349123df514b020dcd983b37aba236e","name":"Apocalypse Vessel","typeLine":"Large Cluster Jewel","baseType":"Large Cluster Jewel","rarity":"Rare","ilvl":70,"identified":true,"explicitMods":["Added Small Passive Skills also grant: +2% to all Elemental Resistances","Added Small Passive Skills also grant: +7 to Maximum Energy Shield","1 Added Passive Skill is Unholy Grace","1 Added Passive Skill is Unwaveringly Evil"],"descrText":"Place into an allocated Large Jewel Socket on the Passive Skill Tree. Added passives do not interact with jewel radiuses. Right click to remove from the Socket.","frameType":2,"x":11,"y":0,"inventoryId":"PassiveJewels","requirements":[{"name":"Level","values":[["54",0]],"displayMode":0,"type":62}],"enchantMods":["Adds 8 Passive Skills","2 Added Passive Skills are Jewel Sockets","Added Small Passive Skills grant: 12% increased Chaos Damage"]},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvSmV3ZWxzL2Jhc2ljaW50IiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/510013aec2/basicint.png","league":"Mercenaries","id":"8e863369034b4684ec0b7ca2ac00a06ba6732705e05b727d57e2f0c8a65c28fc","name":"Gale Cut","typeLine":"Cobalt Jewel","baseType":"Cobalt Jewel","rarity":"Rare","ilvl":83,"identified":true,"explicitMods":["16% increased Spell Damage while holding a Shield","+10% to Global Critical Strike Multiplier","6% increased maximum Energy Shield","20% increased Burning Damage"],"descrText":"Place into an allocated Jewel Socket on the Passive Skill Tree. Right click to remove from the Socket.","frameType":2,"x":51,"y":0,"inventoryId":"PassiveJewels","corrupted":true,"implicitMods":["24% reduced Effect of Chill on you"]},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvSmV3ZWxzL05ld0dlbUJhc2UxIiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/0eb1a9d981/NewGemBase1.png","league":"Mercenaries","id":"1afdd36def77a899ed1beb0466a2fcf7632c8b04bad2f664f6ccef9a5d2819ab","name":"Rapture Glisten","typeLine":"Small Cluster Jewel","baseType":"Small Cluster Jewel","rarity":"Rare","ilvl":84,"identified":true,"explicitMods":["Added Small Passive Skills also grant: +4% to Chaos Resistance","Added Small Passive Skills also grant: +3% to Fire Resistance","Added Small Passive Skills also grant: +13 to Maximum Energy Shield","1 Added Passive Skill is Enduring Composure"],"descrText":"Place into an allocated Small, Medium or Large Jewel Socket on the Passive Skill Tree. Added passives do not interact with jewel radiuses. Right click to remove from the Socket.","frameType":2,"x":26,"y":0,"inventoryId":"PassiveJewels","requirements":[{"name":"Level","values":[["62",0]],"displayMode":0,"type":62}],"enchantMods":["Adds 2 Passive Skills","Added Small Passive Skills grant: 15% increased Armour"]},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvSmV3ZWxzL2Jhc2ljaW50IiwidyI6MSwiaCI6MSwic2NhbGUiOjEsImZyYWN0dXJlZCI6dHJ1ZX1d/b470123709/basicint.png","league":"Mercenaries","id":"90d16fcc00d6504b446ad8e93f4b64b1bb326f30b3479a9937d5cac8f0b3c7bd","name":"Carrion Cut","typeLine":"Cobalt Jewel","baseType":"Cobalt Jewel","rarity":"Rare","ilvl":85,"identified":true,"explicitMods":["9% increased Damage","14% increased Spell Damage while holding a Shield","+13% to Critical Strike Multiplier for Spell Damage"],"descrText":"Place into an allocated Jewel Socket on the Passive Skill Tree. Right click to remove from the Socket.","frameType":2,"x":24,"y":0,"inventoryId":"PassiveJewels","fractured":true,"fracturedMods":["6% increased maximum Energy Shield"]},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvSmV3ZWxzL05ld0dlbUJhc2UyIiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/78f6bf8356/NewGemBase2.png","league":"Mercenaries","id":"eb3593d3462bfcdb712e6cad06e7de91336e8234e52fe9b9437ccc70a037e92f","name":"Loath Heart","typeLine":"Medium Cluster Jewel","baseType":"Medium Cluster Jewel","rarity":"Rare","ilvl":84,"identified":true,"explicitMods":["Added Small Passive Skills also grant: +3 to All Attributes","Added Small Passive Skills also grant: 1% increased Area of Effect","1 Added Passive Skill is Magnifier","1 Added Passive Skill is Vast Power"],"descrText":"Place into an allocated Medium or Large Jewel Socket on the Passive Skill Tree. Added passives do not interact with jewel radiuses. Right click to remove from the Socket.","frameType":2,"x":21,"y":0,"inventoryId":"PassiveJewels","requirements":[{"name":"Level","values":[["54",0]],"displayMode":0,"type":62}],"enchantMods":["Adds 5 Passive Skills","1 Added Passive Skill is a Jewel Socket","Added Small Passive Skills grant: 10% increased Area Damage"]},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvSmV3ZWxzL05ld0dlbUJhc2UyIiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/78f6bf8356/NewGemBase2.png","league":"Mercenaries","id":"6234cb449c377fea88689c7e65ec57e6fc1ca12026ed0698bfc42a2f33981589","name":"Fulgent Glimmer","typeLine":"Medium Cluster Jewel","baseType":"Medium Cluster Jewel","rarity":"Rare","ilvl":84,"identified":true,"explicitMods":["Added Small Passive Skills also grant: +3 to All Attributes","Added Small Passive Skills also grant: 1% increased Area of Effect","1 Added Passive Skill is Magnifier","1 Added Passive Skill is Vast Power"],"descrText":"Place into an allocated Medium or Large Jewel Socket on the Passive Skill Tree. Added passives do not interact with jewel radiuses. Right click to remove from the Socket.","frameType":2,"x":23,"y":0,"inventoryId":"PassiveJewels","requirements":[{"name":"Level","values":[["54",0]],"displayMode":0,"type":62}],"enchantMods":["Adds 5 Passive Skills","1 Added Passive Skill is a Jewel Socket","Added Small Passive Skills grant: 10% increased Area Damage"]},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvSmV3ZWxzL1RlbXBsYXJDaXZpbGl6YXRpb24iLCJ3IjoxLCJoIjoxLCJzY2FsZSI6MX1d/09ecf8ac86/TemplarCivilization.png","league":"Mercenaries","id":"5617f008eb8bd44133933e6462e606ae17500ffb138e36a7bc11583540f97d63","name":"Militant Faith","typeLine":"Timeless Jewel","baseType":"Timeless Jewel","rarity":"Unique","ilvl":84,"identified":true,"properties":[{"name":"Limited to","values":[["1 Historic",0]],"displayMode":0},{"name":"Radius","values":[["Large",0]],"displayMode":0,"type":24}],"explicitMods":["Carved to glorify 9507 new faithful converted by High Templar Dominus\nPassives in radius are Conquered by the Templars","+2% to all Elemental Resistances per 10 Devotion","3% increased Defences from Equipped Shield per 10 Devotion","Historic"],"descrText":"Place into an allocated Jewel Socket on the Passive Skill Tree. Right click to remove from the Socket.","flavourText":["They believed themselves the utmost faithful, but that conviction became oppression."],"frameType":3,"x":14,"y":0,"inventoryId":"PassiveJewels"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvSmV3ZWxzL2Jhc2ljaW50IiwidyI6MSwiaCI6MSwic2NhbGUiOjF9XQ/510013aec2/basicint.png","league":"Mercenaries","id":"d5a41ee1fa4e0511c8a3d448c4f9ed360ef718814cf0d371adbea77a84bf0402","name":"Entropy Ruin","typeLine":"Cobalt Jewel","baseType":"Cobalt Jewel","rarity":"Rare","ilvl":79,"identified":true,"explicitMods":["16% increased Spell Damage while holding a Shield","+15% to Critical Strike Multiplier with Cold Skills","+8% to all Elemental Resistances","+11% to Fire and Cold Resistances"],"descrText":"Place into an allocated Jewel Socket on the Passive Skill Tree. Right click to remove from the Socket.","frameType":2,"x":5,"y":0,"inventoryId":"PassiveJewels"},{"verified":false,"w":1,"h":1,"icon":"https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvSmV3ZWxzL1RoZVJlZERyZWFtVXBncmFkZSIsInciOjEsImgiOjEsInNjYWxlIjoxfV0/69a20aa6e0/TheRedDreamUpgrade.png","league":"Mercenaries","id":"c13b180731f1347bb395de222fe6c0af2ea22ffc29210d464462c4a1c66ca96f","name":"The Red Nightmare","typeLine":"Crimson Jewel","baseType":"Crimson Jewel","rarity":"Unique","ilvl":85,"identified":true,"properties":[{"name":"Limited to","values":[["1",0]],"displayMode":0},{"name":"Radius","values":[["Large",0]],"displayMode":0,"type":24}],"explicitMods":["Gain 6% of Fire Damage as Extra Chaos Damage","Passives granting Fire Resistance or all Elemental Resistances in Radius\nalso grant Chance to Block Attack Damage at 50% of its value"],"descrText":"Place into an allocated Jewel Socket on the Passive Skill Tree. Right click to remove from the Socket.","flavourText":["We coagulate; a crimson shell\r","that suffocates the unworthy."],"frameType":3,"x":18,"y":0,"inventoryId":"PassiveJewels"}],"jewel_data":{"1":{"type":"JewelInt"},"11":{"type":"JewelPassiveTreeExpansionLarge","subgraph":{"groups":{"expansion_11":{"proxy":"43989","nodes":["0","1","10","1000","11","3","5","7","9"],"x":-4708.05,"y":-8281.17,"orbits":[3]}},"nodes":{"0":{"skill":"46248","name":"Chaos Damage","icon":"Art/2DArt/SkillIcons/passives/ChaosDamagenode.png","stats":["12% increased Chaos Damage","+7 to maximum Energy Shield","+2% to all Elemental Resistances"],"group":"expansion_11","orbit":3,"orbitIndex":0,"out":["1"],"in":["11"]},"1":{"skill":"9408","name":"Medium Jewel Socket","icon":"Art/2DArt/SkillIcons/passives/MasteryBlank.png","stats":[],"group":"expansion_11","orbit":3,"orbitIndex":1,"out":["3"],"in":["0"],"isJewelSocket":true,"expansionJewel":{"size":1,"index":2,"proxy":"13201","parent":"7960"}},"10":{"skill":"46248","name":"Chaos Damage","icon":"Art/2DArt/SkillIcons/passives/ChaosDamagenode.png","stats":["12% increased Chaos Damage","+7 to maximum Energy Shield","+2% to all Elemental Resistances"],"group":"expansion_11","orbit":3,"orbitIndex":13,"out":["11"],"in":["9"]},"1000":{"skill":"12117","name":"Chaos Damage Mastery","icon":"Art/2DArt/SkillIcons/passives/AltMasteryChaos.png","stats":[],"group":"expansion_11","orbit":0,"orbitIndex":0,"out":[],"in":[],"isMastery":true},"11":{"skill":"38592","name":"Unwaveringly Evil","icon":"Art/2DArt/SkillIcons/passives/IncreasedChaosDamage.png","stats":["30% increased Chaos Damage","Chaos Skills ignore interruption from Stuns"],"group":"expansion_11","orbit":3,"orbitIndex":15,"out":["0"],"in":["10"],"isNotable":true},"3":{"skill":"2264","name":"Unholy Grace","icon":"Art/2DArt/SkillIcons/passives/IncreasedChaosDamage.png","stats":["30% increased Chaos Damage","10% increased Attack and Cast Speed"],"group":"expansion_11","orbit":3,"orbitIndex":4,"out":["5"],"in":["1"],"isNotable":true},"5":{"skill":"46248","name":"Chaos Damage","icon":"Art/2DArt/SkillIcons/passives/ChaosDamagenode.png","stats":["12% increased Chaos Damage","+7 to maximum Energy Shield","+2% to all Elemental Resistances"],"group":"expansion_11","orbit":3,"orbitIndex":7,"out":["7","3"],"in":["7960"]},"7":{"skill":"46248","name":"Chaos Damage","icon":"Art/2DArt/SkillIcons/passives/ChaosDamagenode.png","stats":["12% increased Chaos Damage","+7 to maximum Energy Shield","+2% to all Elemental Resistances"],"group":"expansion_11","orbit":3,"orbitIndex":9,"out":["9"],"in":["5"]},"9":{"skill":"29712","name":"Medium Jewel Socket","icon":"Art/2DArt/SkillIcons/passives/MasteryBlank.png","stats":[],"group":"expansion_11","orbit":3,"orbitIndex":12,"out":["10"],"in":["7"],"isJewelSocket":true,"expansionJewel":{"size":1,"index":0,"proxy":"55706","parent":"7960"}}}}},"14":{"type":"JewelTimeless","radius":1800,"radiusVisual":"Templar"},"18":{"type":"JewelStr","radius":1800},"20":{"type":"JewelPassiveTreeExpansionLarge","subgraph":{"groups":{"expansion_20":{"proxy":"18756","nodes":["1195","195","196","197","198","200","202","204","206"],"x":4887.73,"y":-8158.76,"orbits":[3]}},"nodes":{"1195":{"skill":"12117","name":"Chaos Damage Mastery","icon":"Art/2DArt/SkillIcons/passives/AltMasteryChaos.png","stats":[],"group":"expansion_20","orbit":0,"orbitIndex":0,"out":[],"in":[],"isMastery":true},"195":{"skill":"46248","name":"Chaos Damage","icon":"Art/2DArt/SkillIcons/passives/ChaosDamagenode.png","stats":["12% increased Chaos Damage","+3 to Dexterity"],"group":"expansion_20","orbit":3,"orbitIndex":0,"out":["196"],"in":["206"]},"196":{"skill":"38592","name":"Unwaveringly Evil","icon":"Art/2DArt/SkillIcons/passives/IncreasedChaosDamage.png","stats":["30% increased Chaos Damage","Chaos Skills ignore interruption from Stuns"],"group":"expansion_20","orbit":3,"orbitIndex":1,"out":["197"],"in":["195"],"isNotable":true},"197":{"skill":"46248","name":"Chaos Damage","icon":"Art/2DArt/SkillIcons/passives/ChaosDamagenode.png","stats":["12% increased Chaos Damage","+3 to Dexterity"],"group":"expansion_20","orbit":3,"orbitIndex":3,"out":["198"],"in":["196"]},"198":{"skill":"13170","name":"Medium Jewel Socket","icon":"Art/2DArt/SkillIcons/passives/MasteryBlank.png","stats":[],"group":"expansion_20","orbit":3,"orbitIndex":4,"out":["200"],"in":["197"],"isJewelSocket":true,"expansionJewel":{"size":1,"index":2,"proxy":"24452","parent":"21984"}},"200":{"skill":"2264","name":"Unholy Grace","icon":"Art/2DArt/SkillIcons/passives/IncreasedChaosDamage.png","stats":["30% increased Chaos Damage","10% increased Attack and Cast Speed"],"group":"expansion_20","orbit":3,"orbitIndex":7,"out":["202"],"in":["198"],"isNotable":true},"202":{"skill":"46248","name":"Chaos Damage","icon":"Art/2DArt/SkillIcons/passives/ChaosDamagenode.png","stats":["12% increased Chaos Damage","+3 to Dexterity"],"group":"expansion_20","orbit":3,"orbitIndex":9,"out":["204","200"],"in":["21984"]},"204":{"skill":"49273","name":"Touch of Cruelty","icon":"Art/2DArt/SkillIcons/passives/IncreasedChaosDamage.png","stats":["Chaos Spells have 10% chance to Hinder Enemies on Hit","Enemies Hindered by you take 10% increased Chaos Damage"],"group":"expansion_20","orbit":3,"orbitIndex":12,"out":["206"],"in":["202"],"isNotable":true,"reminderText":["(Hinder reduces movement speed by 30% for 4 seconds)"]},"206":{"skill":"64583","name":"Medium Jewel Socket","icon":"Art/2DArt/SkillIcons/passives/MasteryBlank.png","stats":[],"group":"expansion_20","orbit":3,"orbitIndex":15,"out":["195"],"in":["204"],"isJewelSocket":true,"expansionJewel":{"size":1,"index":0,"proxy":"58194","parent":"21984"}}}}},"21":{"type":"JewelPassiveTreeExpansionMedium","subgraph":{"groups":{"expansion_21":{"proxy":"55706","nodes":["1012","12","13","14","16","17"],"x":-5519.05,"y":-8281.17,"orbits":[2]}},"nodes":{"1012":{"skill":"63454","name":"Area Damage Mastery","icon":"Art/2DArt/SkillIcons/passives/AltAreaDamageMastery.png","stats":[],"group":"expansion_21","orbit":0,"orbitIndex":0,"out":[],"in":[],"isMastery":true},"12":{"skill":"63969","name":"Vast Power","icon":"Art/2DArt/SkillIcons/passives/AreaDmgNotable.png","stats":["20% increased Area Damage","3% increased Area of Effect per Power Charge, up to a maximum of 50%"],"group":"expansion_21","orbit":2,"orbitIndex":1,"out":["13"],"in":["17"],"isNotable":true},"13":{"skill":"44483","name":"Area Damage","icon":"Art/2DArt/SkillIcons/passives/AreaDmgNode.png","stats":["+3 to all Attributes","1% increased Area of Effect","10% increased Area Damage"],"group":"expansion_21","orbit":2,"orbitIndex":4,"out":["14","12"],"in":["29712"]},"14":{"skill":"60617","name":"Magnifier","icon":"Art/2DArt/SkillIcons/passives/AreaDmgNotable.png","stats":["10% increased Area of Effect","+10% to Critical Strike Multiplier"],"group":"expansion_21","orbit":2,"orbitIndex":7,"out":["16"],"in":["13"],"isNotable":true},"16":{"skill":"12613","name":"Small Jewel Socket","icon":"Art/2DArt/SkillIcons/passives/MasteryBlank.png","stats":[],"group":"expansion_21","orbit":2,"orbitIndex":12,"out":["17"],"in":["14"],"isJewelSocket":true,"expansionJewel":{"size":0,"index":0,"proxy":"40114","parent":"29712"}},"17":{"skill":"44483","name":"Area Damage","icon":"Art/2DArt/SkillIcons/passives/AreaDmgNode.png","stats":["+3 to all Attributes","1% increased Area of Effect","10% increased Area Damage"],"group":"expansion_21","orbit":2,"orbitIndex":15,"out":["12"],"in":["16"]}}}},"23":{"type":"JewelPassiveTreeExpansionMedium","subgraph":{"groups":{"expansion_23":{"proxy":"13201","nodes":["1030","30","31","32","33","34"],"x":-4302.55,"y":-8983.51,"orbits":[2]}},"nodes":{"1030":{"skill":"63454","name":"Area Damage Mastery","icon":"Art/2DArt/SkillIcons/passives/AltAreaDamageMastery.png","stats":[],"group":"expansion_23","orbit":0,"orbitIndex":0,"out":[],"in":[],"isMastery":true},"30":{"skill":"2311","name":"Small Jewel Socket","icon":"Art/2DArt/SkillIcons/passives/MasteryBlank.png","stats":[],"group":"expansion_23","orbit":2,"orbitIndex":1,"out":["31"],"in":["34"],"isJewelSocket":true,"expansionJewel":{"size":0,"index":0,"proxy":"7956","parent":"9408"}},"31":{"skill":"44483","name":"Area Damage","icon":"Art/2DArt/SkillIcons/passives/AreaDmgNode.png","stats":["+3 to all Attributes","1% increased Area of Effect","10% increased Area Damage"],"group":"expansion_23","orbit":2,"orbitIndex":4,"out":["32"],"in":["30"]},"32":{"skill":"63969","name":"Vast Power","icon":"Art/2DArt/SkillIcons/passives/AreaDmgNotable.png","stats":["20% increased Area Damage","3% increased Area of Effect per Power Charge, up to a maximum of 50%"],"group":"expansion_23","orbit":2,"orbitIndex":7,"out":["33"],"in":["31"],"isNotable":true},"33":{"skill":"44483","name":"Area Damage","icon":"Art/2DArt/SkillIcons/passives/AreaDmgNode.png","stats":["+3 to all Attributes","1% increased Area of Effect","10% increased Area Damage"],"group":"expansion_23","orbit":2,"orbitIndex":9,"out":["34","32"],"in":["9408"]},"34":{"skill":"60617","name":"Magnifier","icon":"Art/2DArt/SkillIcons/passives/AreaDmgNotable.png","stats":["10% increased Area of Effect","+10% to Critical Strike Multiplier"],"group":"expansion_23","orbit":2,"orbitIndex":12,"out":["30"],"in":["33"],"isNotable":true}}}},"24":{"type":"JewelInt"},"26":{"type":"JewelPassiveTreeExpansionSmall","subgraph":{"groups":{"expansion_26":{"proxy":"7956","nodes":["36","37"],"x":-4064.55,"y":-9477.75,"orbits":[1]}},"nodes":{"36":{"skill":"57572","name":"Enduring Composure","icon":"Art/2DArt/SkillIcons/passives/ArmourNotable.png","stats":["30% increased Armour","Gain 1 Endurance Charge every second if you've been Hit Recently"],"group":"expansion_26","orbit":1,"orbitIndex":1,"out":[],"in":["37"],"isNotable":true,"reminderText":["(Recently refers to the past 4 seconds)"]},"37":{"skill":"3879","name":"Armour","icon":"Art/2DArt/SkillIcons/passives/ArmourNode.png","stats":["15% increased Armour","+13 to maximum Energy Shield","+3% to Fire Resistance","+4% to Chaos Resistance"],"group":"expansion_26","orbit":1,"orbitIndex":3,"out":["36"],"in":["2311"]}}}},"5":{"type":"JewelInt"},"51":{"type":"JewelInt"},"53":{"type":"JewelInt"}}} diff --git a/runtime/lua/xml.lua b/runtime/lua/xml.lua index bfbe00be05..3db3baf7a0 100644 --- a/runtime/lua/xml.lua +++ b/runtime/lua/xml.lua @@ -117,7 +117,13 @@ local function composeNode(frag, node, lvl) t_insert(frag, '<') t_insert(frag, node.elem) if node.attrib then - for key, val in pairs(node.attrib) do + local sortedKeys = {} + for key in pairs(node.attrib) do + t_insert(sortedKeys, key) + end + table.sort(sortedKeys) + for _, key in ipairs(sortedKeys) do + local val = node.attrib[key] if val then if type(key) ~= "string" then return "invalid xml tree (attribute name in <"..node.elem.."> is not a string)" diff --git a/src/Classes/CalcsTab.lua b/src/Classes/CalcsTab.lua index fe751b4674..7b6b394223 100644 --- a/src/Classes/CalcsTab.lua +++ b/src/Classes/CalcsTab.lua @@ -194,7 +194,13 @@ function CalcsTabClass:Load(xml, dbFileName) end function CalcsTabClass:Save(xml) - for k, v in pairs(self.input) do + local sortedInputKeys = { } + for k in pairs(self.input) do + t_insert(sortedInputKeys, k) + end + table.sort(sortedInputKeys) + for _, k in ipairs(sortedInputKeys) do + local v = self.input[k] local child = { elem = "Input", attrib = {name = k} } if type(v) == "number" then child.attrib.number = tostring(v) diff --git a/src/Classes/ConfigTab.lua b/src/Classes/ConfigTab.lua index 28de4d9598..a83243b833 100644 --- a/src/Classes/ConfigTab.lua +++ b/src/Classes/ConfigTab.lua @@ -709,7 +709,13 @@ function ConfigTabClass:Save(xml) local child = { elem = "ConfigSet", attrib = { id = tostring(configSetId), title = configSet.title } } t_insert(xml, child) - for k, v in pairs(configSet.input) do + local sortedInputKeys = { } + for k in pairs(configSet.input) do + t_insert(sortedInputKeys, k) + end + table.sort(sortedInputKeys) + for _, k in ipairs(sortedInputKeys) do + local v = configSet.input[k] if v ~= self:GetDefaultState(k, type(v)) then local node = { elem = "Input", attrib = { name = k } } if type(v) == "number" then @@ -722,7 +728,13 @@ function ConfigTabClass:Save(xml) t_insert(child, node) end end - for k, v in pairs(configSet.placeholder) do + local sortedPlaceholderKeys = { } + for k in pairs(configSet.placeholder) do + t_insert(sortedPlaceholderKeys, k) + end + table.sort(sortedPlaceholderKeys) + for _, k in ipairs(sortedPlaceholderKeys) do + local v = configSet.placeholder[k] local node = { elem = "Placeholder", attrib = { name = k } } if type(v) == "number" then node.attrib.number = tostring(v) diff --git a/src/Classes/ItemsTab.lua b/src/Classes/ItemsTab.lua index 9a8162b911..f718289ac9 100644 --- a/src/Classes/ItemsTab.lua +++ b/src/Classes/ItemsTab.lua @@ -1157,7 +1157,13 @@ function ItemsTabClass:Save(xml) for _, itemSetId in ipairs(self.itemSetOrderList) do local itemSet = self.itemSets[itemSetId] local child = { elem = "ItemSet", attrib = { id = tostring(itemSetId), title = itemSet.title, useSecondWeaponSet = tostring(itemSet.useSecondWeaponSet) } } - for slotName, slot in pairs(self.slots) do + local sortedSlotNames = { } + for slotName in pairs(self.slots) do + t_insert(sortedSlotNames, slotName) + end + table.sort(sortedSlotNames) + for _, slotName in ipairs(sortedSlotNames) do + local slot = self.slots[slotName] if not slot.nodeId then t_insert(child, { elem = "Slot", attrib = { name = slotName, itemId = tostring(itemSet[slotName].selItemId), itemPbURL = itemSet[slotName].pbURL or "", active = itemSet[slotName].active and "true" }}) else diff --git a/src/Classes/PassiveSpec.lua b/src/Classes/PassiveSpec.lua index 937be5065f..4ec8dfefa6 100644 --- a/src/Classes/PassiveSpec.lua +++ b/src/Classes/PassiveSpec.lua @@ -180,8 +180,15 @@ function PassiveSpecClass:Save(xml) for nodeId in pairs(self.allocNodes) do t_insert(allocNodeIdList, nodeId) end + table.sort(allocNodeIdList) local masterySelections = { } - for mastery, effect in pairs(self.masterySelections) do + local masteryKeys = { } + for mastery in pairs(self.masterySelections) do + t_insert(masteryKeys, mastery) + end + table.sort(masteryKeys) + for _, mastery in ipairs(masteryKeys) do + local effect = self.masterySelections[mastery] t_insert(masterySelections, "{"..mastery..","..effect.."}") end xml.attrib = { @@ -203,7 +210,13 @@ function PassiveSpecClass:Save(xml) local sockets = { elem = "Sockets" } - for nodeId, itemId in pairs(self.jewels) do + local jewelNodeIds = { } + for nodeId in pairs(self.jewels) do + t_insert(jewelNodeIds, nodeId) + end + table.sort(jewelNodeIds) + for _, nodeId in ipairs(jewelNodeIds) do + local itemId = self.jewels[nodeId] -- jewel socket contents should not be saved unless they contain a valid jewel if itemId > 0 then local socket = { elem = "Socket", attrib = { nodeId = tostring(nodeId), itemId = tostring(itemId) }} @@ -216,7 +229,13 @@ function PassiveSpecClass:Save(xml) elem = "Overrides" } if self.hashOverrides then - for nodeId, node in pairs(self.hashOverrides) do + local overrideNodeIds = { } + for nodeId in pairs(self.hashOverrides) do + t_insert(overrideNodeIds, nodeId) + end + table.sort(overrideNodeIds) + for _, nodeId in ipairs(overrideNodeIds) do + local node = self.hashOverrides[nodeId] local override = { elem = "Override", attrib = { nodeId = tostring(nodeId), icon = tostring(node.icon), activeEffectImage = tostring(node.activeEffectImage), dn = tostring(node.dn) } } for _, modLine in ipairs(node.sd) do t_insert(override, modLine) diff --git a/src/HeadlessWrapper.lua b/src/HeadlessWrapper.lua index 774f3ae214..d09319216c 100644 --- a/src/HeadlessWrapper.lua +++ b/src/HeadlessWrapper.lua @@ -2,6 +2,13 @@ -- This wrapper allows the program to run headless on any OS (in theory) -- It can be run using a standard lua interpreter, although LuaJIT is preferable +-- Store command line arguments before they get modified by the loading process +local originalArgs = {} +if arg then + for i = -5, 10 do + originalArgs[i] = arg[i] + end +end -- Callbacks local callbackTable = { } @@ -89,12 +96,12 @@ function IsKeyDown(keyName) end function Copy(text) end function Paste() end function Deflate(data) - -- TODO: Might need this - return "" + local zlib = require("zlib") + return zlib.deflate()(data, "finish") end function Inflate(data) - -- TODO: And this - return "" + local zlib = require("zlib") + return zlib.inflate()(data, "finish") end function GetTime() return 0 @@ -176,6 +183,22 @@ function require(name) if name == "lcurl.safe" then return end + -- Provide a basic utf8 stub for headless mode + if name == "lua-utf8" then + return { + len = function(s) return #s end, + sub = function(s, i, j) return string.sub(s, i, j) end, + char = function(...) return string.char(...) end, + byte = function(s, i) return string.byte(s, i) end, + find = function(s, pattern, init, plain) return string.find(s, pattern, init, plain) end, + gmatch = function(s, pattern) return string.gmatch(s, pattern) end, + gsub = function(s, pattern, repl, n) return string.gsub(s, pattern, repl, n) end, + match = function(s, pattern, init) return string.match(s, pattern, init) end, + reverse = function(s) return string.reverse(s) end, + upper = function(s) return string.upper(s) end, + lower = function(s) return string.lower(s) end, + } + end return l_require(name) end @@ -214,6 +237,148 @@ function loadBuildFromJSON(getItemsJSON, getPassiveSkillsJSON) runCallback("OnFrame") local charData = build.importTab:ImportItemsAndSkills(getItemsJSON) build.importTab:ImportPassiveTreeAndJewels(getPassiveSkillsJSON, charData) - -- You now have a build without a correct main skill selected, or any configuration options set - -- Good luck! + -- Try to select the first main skill group if available + if build and build.skillsTab and build.skillsTab.socketGroupList and #build.skillsTab.socketGroupList > 0 then + build.mainSocketGroup = 1 + build.skillsTab:SetActiveSkill(1, 1) + runCallback("OnFrame") -- Recalculate stats + end + -- You now have a build with a main skill selected (if available) +end + +-- Check if JSON files were provided as command line arguments using original args +local itemsJSONPath, passivesJSONPath + +-- Check original arguments for JSON files +if originalArgs[1] and originalArgs[2] then + itemsJSONPath = originalArgs[1] + passivesJSONPath = originalArgs[2] + -- print("Found JSON files in arguments - loading items and passives data...") + + -- Read the JSON files + local itemsFile = io.open(itemsJSONPath, "r") + local passivesFile = io.open(passivesJSONPath, "r") + + if itemsFile and passivesFile then + local itemsJSON = itemsFile:read("*all") + local passivesJSON = passivesFile:read("*all") + itemsFile:close() + passivesFile:close() + + -- print("Calling loadBuildFromJSON...") + local success, error_msg = pcall(function() + loadBuildFromJSON(itemsJSON, passivesJSON) + end) + + if not success then + -- print("Warning: loadBuildFromJSON encountered an error:", error_msg) + -- print("Continuing to check what data was loaded...") + end + + -- print() + -- print("Build loading completed (with or without errors). Checking build data...") + + -- Print some information from the build object to verify it's working + -- print("\n=== BUILD OBJECT VERIFICATION ===") + if build then + -- print("✓ build global object exists") + -- print("build type:", type(build)) + + -- Check if build.spec exists (passive tree) + if build.spec then + -- print("✓ build.spec exists (passive tree)") + if build.spec.nodes then + local nodeCount = 0 + for _ in pairs(build.spec.nodes) do + nodeCount = nodeCount + 1 + end + -- print(" - Number of passive nodes:", nodeCount) + end + if build.spec.allocNodes then + -- print(" - Number of allocated nodes:", #build.spec.allocNodes) + end + else + -- print("✗ build.spec not found") + end + + -- Check if character data exists + if build.characterLevel then + -- print("✓ Character level:", build.characterLevel) + end + if build.characterName then + -- print("✓ Character Name: ", build.characterName) + end + if build.characterClass then + -- print("✓ Character class:", build.characterClass) + end + + -- Check if items exist + if build.itemsTab and build.itemsTab.items then + local itemCount = 0 + for _ in pairs(build.itemsTab.items) do + itemCount = itemCount + 1 + end + -- print("✓ Items loaded in build.itemsTab.items, count:", itemCount) + + -- Show a few example items + local count = 0 + for k, item in pairs(build.itemsTab.items) do + if count < 3 and item.name then + -- print(" - Item " .. (count + 1) .. ":", item.name, "(" .. (item.baseName or "unknown base") .. ")") + end + count = count + 1 + if count >= 3 then break end + end + elseif build.itemsTab and build.itemsTab.list then + local itemCount = 0 + for _ in pairs(build.itemsTab.list) do + itemCount = itemCount + 1 + end + -- print("✓ Items loaded in build.itemsTab.list, count:", itemCount) + else + -- print("✗ Items not found or not loaded") + end + + -- Print some build calculation results if available + if build.calcsTab and build.calcsTab.buildOutput then + -- print("✓ Build calculations available") + local output = build.calcsTab.buildOutput + if output.Life then + -- print(" - Total Life:", output.Life) + end + if output.EnergyShield then + -- print(" - Total Energy Shield:", output.EnergyShield) + end + if output.TotalDPS then + -- print(" - Total DPS:", output.TotalDPS) + end + end + + -- Try to export build code (requires working Deflate function) + local buildCode = common.base64.encode(Deflate(build:SaveDB("code"))):gsub("+","-"):gsub("/","_") + print(buildCode) + -- local f = io.open("/home/alexander/dev/investigations/PathOfBuilding/buildcode.txt", "w") + -- if f then + -- f:write(buildCode) + -- f:close() + -- -- print("Build code written to buildcode.txt") + -- else + -- -- print("Failed to open buildcode.txt for writing!") + -- end + else + -- print("✗ build global object does not exist!") + end + -- print("=== END BUILD VERIFICATION ===\n") + else + -- print("Error: Could not open JSON files") + if not itemsFile then + -- print(" - Could not open items file: " .. itemsJSONPath) + end + if not passivesFile then + -- print(" - Could not open passives file: " .. passivesJSONPath) + end + end +else + -- print("No JSON files provided as command line arguments") + -- print("Usage: luajit HeadlessWrapper.lua ") end diff --git a/src/Modules/Build.lua b/src/Modules/Build.lua index b33f75c995..aa39ed3322 100644 --- a/src/Modules/Build.lua +++ b/src/Modules/Build.lua @@ -1896,11 +1896,15 @@ function buildMode:SaveDB(fileName) t_insert(dbXML, node) end - -- Call on all savers to save their data in their respective sections - for elem, saver in pairs(self.savers) do - local node = { elem = elem } - saver:Save(node) - t_insert(dbXML, node) + -- Call on all savers to save their data in their respective sections (fixed order for deterministic output) + local saverOrder = {"Config", "Notes", "Party", "Tree", "TreeView", "Items", "Skills", "Calcs", "Import"} + for _, elem in ipairs(saverOrder) do + local saver = self.savers[elem] + if saver then + local node = { elem = elem } + saver:Save(node) + t_insert(dbXML, node) + end end -- Compose the XML