Merge remote-tracking branch 'origin/dev'

This commit is contained in:
Dayve
2016-11-28 21:17:12 +10:00
32 changed files with 477 additions and 346 deletions

View File

@@ -331,7 +331,7 @@ function CalcBreakdownClass:AddModSection(sectionData)
for _, tag in ipairs(row.mod.tagList) do
local desc
if tag.type == "Condition" then
desc = "Condition: "..self:FormatModName(tag.var)
desc = "Condition: "..(tag.varList and table.concat(tag.varList, "/") or self:FormatModName(tag.var))
elseif tag.type == "Multiplier" then
if tag.base then
desc = (row.mod.type == "BASE" and string.format("%+g", tag.base) or tag.base.."%").." + "..math.abs(row.mod.value).." per "..self:FormatModName(tag.var)

View File

@@ -36,9 +36,6 @@ local varList = {
{ var = "conditionUsingFlask", type = "check", label = "Do you have a Flask active?", apply = function(val, modList, enemyModList)
modList:NewMod("Misc", "LIST", { type = "Condition", var = "UsingFlask" }, "Config", { type = "Condition", var = "Combat" })
end },
{ var = "buffPendulum", type = "check", label = "Is Pendulum of Destruction active?", ifNode = 57197, apply = function(val, modList, enemyModList)
modList:NewMod("Misc", "LIST", { type = "Condition", var = "PendulumOfDestruction" }, "Config", { type = "Condition", var = "Combat" })
end },
{ var = "conditionOnConsecratedGround", type = "check", label = "Are you on Consecrated Ground?", apply = function(val, modList, enemyModList)
modList:NewMod("Misc", "LIST", { type = "Condition", var = "OnConsecratedGround" }, "Config", { type = "Condition", var = "Combat" })
end },
@@ -51,10 +48,37 @@ local varList = {
{ var = "conditionKilledRecently", type = "check", label = "Have you Killed Recently?", apply = function(val, modList, enemyModList)
modList:NewMod("Misc", "LIST", { type = "Condition", var = "KilledRecently" }, "Config", { type = "Condition", var = "Combat" })
end },
{ var = "conditionTotemsKilledRecently", type = "check", label = "Have your Totems Killed Recently?", apply = function(val, modList, enemyModList)
modList:NewMod("Misc", "LIST", { type = "Condition", var = "TotemsKilledRecently" }, "Config", { type = "Condition", var = "Combat" })
end },
{ var = "conditionBeenHitRecently", type = "check", label = "Have you been Hit Recently?", apply = function(val, modList, enemyModList)
modList:NewMod("Misc", "LIST", { type = "Condition", var = "BeenHitRecently" }, "Config", { type = "Condition", var = "Combat" })
end },
{ var = "buffPendulum", type = "check", label = "Is Pendulum of Destruction active?", ifNode = 57197, apply = function(val, modList, enemyModList)
modList:NewMod("Misc", "LIST", { type = "Condition", var = "PendulumOfDestruction" }, "Config", { type = "Condition", var = "Combat" })
end },
{ var = "conditionAttackedRecently", type = "check", label = "Have you Attacked Recently?", ifNode = 3154, tooltip = "You will automatically be considered to have Attacked Recently if your main skill is an attack,\nbut you can use this option to force it if necessary.", apply = function(val, modList, enemyModList)
modList:NewMod("Misc", "LIST", { type = "Condition", var = "AttackedRecently" }, "Config", { type = "Condition", var = "Combat" })
end },
{ var = "conditionCastSpellRecently", type = "check", label = "Have you Cast a Spell Recently?", ifNode = 3154, tooltip = "You will automatically be considered to have Cast a Spell Recently if your main skill is a spell,\nbut you can use this option to force it if necessary.", apply = function(val, modList, enemyModList)
modList:NewMod("Misc", "LIST", { type = "Condition", var = "CastSpellRecently" }, "Config", { type = "Condition", var = "Combat" })
end },
{ var = "conditionUsedFireSkillInPast10Sec", type = "check", label = "Used a Fire Skill in the past 10s?", ifNode = 61259, apply = function(val, modList, enemyModList)
modList:NewMod("Misc", "LIST", { type = "Condition", var = "UsedFireSkillInPast10Sec" }, "Config", { type = "Condition", var = "Combat" })
end },
{ var = "conditionUsedColdSkillInPast10Sec", type = "check", label = "Used a Cold Skill in the past 10s?", ifNode = 61259, apply = function(val, modList, enemyModList)
modList:NewMod("Misc", "LIST", { type = "Condition", var = "UsedColdSkillInPast10Sec" }, "Config", { type = "Condition", var = "Combat" })
end },
{ var = "conditionUsedLightningSkillInPast10Sec", type = "check", label = "Used a Light. Skill in the past 10s?", ifNode = 61259, apply = function(val, modList, enemyModList)
modList:NewMod("Misc", "LIST", { type = "Condition", var = "UsedLightningSkillInPast10Sec" }, "Config", { type = "Condition", var = "Combat" })
end },
{ section = "For Effective DPS" },
{ var = "conditionEnemyFullLife", type = "check", label = "Is the enemy on Full Life?", apply = function(val, modList, enemyModList)
modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyFullLife" }, "Config", { type = "Condition", var = "Effective" })
end },
{ var = "conditionEnemyLowLife", type = "check", label = "Is the enemy on Low Life?", apply = function(val, modList, enemyModList)
modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyLowLife" }, "Config", { type = "Condition", var = "Effective" })
end },
{ var = "conditionEnemyCursed", type = "check", label = "Is the enemy Cursed?", tooltip = "Your enemy will automatically be considered to be Cursed if you have at least one curse enabled,\nbut you can use this option to force it if necessary.", apply = function(val, modList, enemyModList)
modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyCursed" }, "Config", { type = "Condition", var = "Effective" })
end },
@@ -121,11 +145,7 @@ local ConfigTabClass = common.NewClass("ConfigTab", "UndoHandler", "ControlHost"
local lastSection
for _, varData in ipairs(varList) do
if varData.section then
if lastSection then
lastSection = common.New("SectionControl", {"TOPLEFT",lastSection,"BOTTOMLEFT"}, 0, 18, 300, 0, varData.section)
else
lastSection = common.New("SectionControl", {"TOPLEFT",self,"TOPLEFT"}, 10, 18, 300, 0, varData.section)
end
lastSection = common.New("SectionControl", {"TOPLEFT",self,"TOPLEFT"}, 0, 0, 300, 0, varData.section)
lastSection.varControlList = { }
lastSection.height = function(self)
local height = 20
@@ -155,11 +175,15 @@ local ConfigTabClass = common.NewClass("ConfigTab", "UndoHandler", "ControlHost"
self.build.buildFlag = true
end)
end
control.tooltip = varData.tooltip
if varData.ifNode then
control.shown = function()
return self.build.spec.allocNodes[varData.ifNode]
end
control.tooltip = function()
return "This option is specific to '"..self.build.spec.nodes[varData.ifNode].dn.."'."..(varData.tooltip and "\n"..varData.tooltip or "")
end
else
control.tooltip = varData.tooltip
end
t_insert(self.controls, common.New("LabelControl", {"RIGHT",control,"LEFT"}, -4, 2, 0, 14, "^7"..varData.label))
self.varControls[varData.var] = control
@@ -238,6 +262,7 @@ function ConfigTabClass:Draw(viewPort, inputEvents)
self:ProcessControlsInput(inputEvents, viewPort)
local colY = { }
for _, section in ipairs(self.sectionList) do
local y = 14
for _, varControl in ipairs(section.varControlList) do
@@ -246,6 +271,18 @@ function ConfigTabClass:Draw(viewPort, inputEvents)
y = y + 20
end
end
local width, height = section:GetSize()
local col = 1
while true do
colY[col] = colY[col] or 18
if colY[col] + height + 10 <= viewPort.height then
break
end
col = col + 1
end
section.x = 10 + (col - 1) * 310
section.y = colY[col]
colY[col] = colY[col] + height + 18
end
main:DrawBackground(viewPort)

View File

@@ -154,7 +154,18 @@ function ModDBClass:Sum(modType, cfg, arg1, arg2, arg3, arg4, arg5, arg6, arg7,
value = value * mult + (tag.base or 0)
end
elseif tag.type == "Condition" then
if not self.conditions[tag.var] then
local match = false
if tag.varList then
for _, var in pairs(tag.varList) do
if self.conditions[var] then
match = true
break
end
end
else
match = self.conditions[tag.var]
end
if not match then
value = nullValue
end
elseif tag.type == "SocketedIn" then

View File

@@ -124,7 +124,18 @@ function ModListClass:Sum(modType, cfg, arg1, arg2, arg3, arg4, arg5, arg6, arg7
value = value * mult + (tag.base or 0)
end
elseif tag.type == "Condition" then
if not self.conditions[tag.var] then
local match = false
if tag.varList then
for _, var in pairs(tag.varList) do
if self.conditions[var] then
match = true
break
end
end
else
match = self.conditions[tag.var]
end
if not match then
value = nullValue
end
elseif tag.type == "SocketedIn" then

View File

@@ -56,6 +56,16 @@ itemBases["Ruby Amulet"] = {
implicit = "+(20 to 30)% to Fire Resistance",
req = { level = 35, },
}
itemBases["Marble Amulet"] = {
type = "Amulet",
implicit = "(1.2-1.6)% of Life Regenerated per second",
req = { level = 74 },
}
itemBases["Blue Pearl Amulet"] = {
type = "Amulet",
implicit = "(48-56)% increased Mana Regeneration Rate",
req = { level = 77 },
}
itemBases["Ashscale Talisman"] = {

View File

@@ -30,4 +30,14 @@ itemBases["Cloth Belt"] = {
type = "Belt",
implicit = "(15 to 25)% increased Stun Recovery",
req = { level = 16, },
}
}
itemBases["Vanguard Belt"] = {
type = "Belt",
implicit = "+(260-320) to Armour and Evasion Rating",
req = { level = 70 },
}
itemBases["Crystal Belt"] = {
type = "Belt",
implicit = "+(60-80) to maximum Energy Shield",
req = { level = 79 },
}

View File

@@ -224,6 +224,12 @@ itemBases["Crusader Boots"] = {
armour = { armourBase = 105, energyShieldBase = 31, },
req = { level = 64, str = 62, int = 62, },
}
itemBases["Two-Toned Boots"] = {
type = "Boots",
implicit = "",
armour = { armourBase = 109, energyShieldBase = 32 },
req = { level = 72, str = 62, int = 62 },
}
itemBases["Wrapped Boots"] = {

View File

@@ -46,6 +46,12 @@ itemBases["Titan Gauntlets"] = {
armour = { armourBase = 210, },
req = { level = 69, str = 98, },
}
itemBases["Spiked Gloves"] = {
type = "Gloves",
implicit = "(16-20)% increased Melee Damage",
armour = { armourBase = 191 },
req = { level = 73, str = 95 },
}
itemBases["Rawhide Gloves"] = {
@@ -93,6 +99,12 @@ itemBases["Slink Gloves"] = {
armour = { evasionBase = 210, },
req = { level = 70, dex = 95, },
}
itemBases["Gripped Gloves"] = {
type = "Gloves",
implicit = "(14-18)% increased Projectile Attack Damage",
armour = { evasionBase = 191 },
req = { level = 73, dex = 95 },
}
itemBases["Wool Gloves"] = {
@@ -140,6 +152,12 @@ itemBases["Sorcerer Gloves"] = {
armour = { energyShieldBase = 61, },
req = { level = 69, int = 97, },
}
itemBases["Fingerless Silk Gloves"] = {
type = "Gloves",
implicit = "(12-16)% increased Spell Damage",
armour = { energyShieldBase = 56 },
req = { level = 73, int = 95 },
}
itemBases["Fishscale Gauntlets"] = {

View File

@@ -269,6 +269,12 @@ itemBases["Praetor Crown"] = {
armour = { armourBase = 140, energyShieldBase = 63, },
req = { level = 68, str = 62, int = 91, },
}
itemBases["Bone Helmet"] = {
type = "Helmet",
implicit = "Minions deal (30-40)% increased Damage",
armour = { armourBase = 172, energyShieldBase = 50, },
req = { level = 75, str = 76, int = 76, },
}
itemBases["Scare Mask"] = {

View File

@@ -16,15 +16,10 @@ itemBases["Paua Ring"] = {
implicit = "+(20 to 25) to Maximum Mana",
req = { },
}
itemBases["Gold Ring"] = {
itemBases["Unset Ring"] = {
type = "Ring",
implicit = "(6 to 15)% increased Rarity of Items found",
req = { level = 20, },
}
itemBases["Ruby Ring"] = {
type = "Ring",
implicit = "+(20 to 30)% to Fire Resistance",
req = { level = 16, },
implicit = "Has 1 Socket",
req = { level = 5, },
}
itemBases["Sapphire Ring"] = {
type = "Ring",
@@ -36,6 +31,16 @@ itemBases["Topaz Ring"] = {
implicit = "+(20 to 30)% to Lightning Resistance",
req = { level = 12, },
}
itemBases["Ruby Ring"] = {
type = "Ring",
implicit = "+(20 to 30)% to Fire Resistance",
req = { level = 16, },
}
itemBases["Gold Ring"] = {
type = "Ring",
implicit = "(6 to 15)% increased Rarity of Items found",
req = { level = 20, },
}
itemBases["Diamond Ring"] = {
type = "Ring",
implicit = "(20 to 30)% increased Global Critical Strike Chance",
@@ -46,16 +51,6 @@ itemBases["Moonstone Ring"] = {
implicit = "+(15 to 25) to maximum Energy Shield",
req = { level = 20, },
}
itemBases["Prismatic Ring"] = {
type = "Ring",
implicit = "+(8 to 10)% to all Elemental Resistances",
req = { level = 30, },
}
itemBases["Amethyst Ring"] = {
type = "Ring",
implicit = "+(9 to 13)% to Chaos Resistance",
req = { level = 30, },
}
itemBases["Two-Stone Ring"] = {
type = "Ring",
implicit = "+(12 to 16)% to Fire and Cold Resistances",
@@ -71,8 +66,23 @@ itemBases["Two-Stone Ring"] = {
implicit = "+(12 to 16)% to Fire and Lightning Resistances",
req = { level = 20, },
}
itemBases["Unset Ring"] = {
itemBases["Prismatic Ring"] = {
type = "Ring",
implicit = "Has 1 Socket",
req = { level = 5, },
}
implicit = "+(8 to 10)% to all Elemental Resistances",
req = { level = 30, },
}
itemBases["Amethyst Ring"] = {
type = "Ring",
implicit = "+(9 to 13)% to Chaos Resistance",
req = { level = 30, },
}
itemBases["Steel Ring"] = {
type = "Ring",
implicit = "Adds (3-4) to (10-14) Physical Damage to Attacks",
req = { level = 80 },
}
itemBases["Opal Ring"] = {
type = "Ring",
implicit = "(15-25)% increased Elemental Damage",
req = { level = 80 },
}

View File

@@ -740,6 +740,7 @@ gems["Cyclone"] = {
--"base_skill_number_of_additional_hits" = 1
--"cyclone_first_hit_damage_+%_final" = -50
--"is_area_damage" = ?
skill("dpsMultiplier", 2),
},
qualityMods = {
mod("AreaRadius", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5

View File

@@ -3925,7 +3925,7 @@ gems["Summon Lightning Golem"] = {
levelMods = {
[1] = skill("manaCost", nil),
--[2] = "base_actor_scale_+%"
[3] = mod("Speed", "INC", nil), --"lightning_golem_grants_attack_and_cast_speed_+%"
[3] = mod("Speed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"lightning_golem_grants_attack_and_cast_speed_+%"
[4] = mod("MinionLife", "INC", nil), --"minion_maximum_life_+%"
--[5] = "display_minion_monster_level"
},

View File

@@ -6,72 +6,13 @@ local gems = data.gems
local itemBases = data.itemBases
itemBases["Blue Pearl Amulet"] = {
type = "Amulet",
implicit = "(48-56)% increased Mana Regeneration Rate",
req = { level = 77 },
}
itemBases["Marble Amulet"] = {
type = "Amulet",
implicit = "(1.2-1.6)% of Life Regenerated per second",
req = { level = 74 },
}
itemBases["Steel Ring"] = {
type = "Ring",
implicit = "Adds (3-4) to (10-14) Physical Damage to Attacks",
req = { level = 80 },
}
itemBases["Opal Ring"] = {
type = "Ring",
implicit = "(15-25)% increased Elemental Damage",
req = { level = 80 },
}
itemBases["Vanguard Belt"] = {
type = "Belt",
implicit = "+(260-320) to Armour and Evasion Rating",
req = { level = 70 },
}
itemBases["Crystal Belt"] = {
type = "Belt",
implicit = "+(60-80) to maximum Energy Shield",
req = { level = 79 },
}
itemBases["Bone Helmet"] = {
type = "Helmet",
implicit = "Minions deal (30 to 40)% increased Damage",
armour = { armourBase = 172, energyShieldBase = 50, },
req = { level = 75, str = 76, int = 76, },
}
itemBases["Fingerless Silk Gloves"] = {
type = "Gloves",
implicit = "(12-16)% increased Spell Damage",
armour = { energyShieldBase = 56 },
req = { level = 73, int = 95 },
}
itemBases["Gripped Gloves"] = {
type = "Gloves",
implicit = "(14-18)% increased Projectile Attack Damage",
armour = { evasionBase = 191 },
req = { level = 73, dex = 95 },
}
itemBases["Spiked Gloves"] = {
type = "Gloves",
implicit = "(16-20)% increased Melee Damage",
armour = { armourBase = 191 },
req = { level = 73, str = 95 },
}
itemBases["Two-Toned Boots"] = {
type = "Boots",
implicit = "",
armour = { armourBase = 109, energyShieldBase = 32 },
req = { level = 72, str = 62, int = 62 },
}
itemBases["Breach Ring"] = {
type = "Ring",
implicit = "Properties are doubled while in a Breach",
req = { level = 48 },
}
data.uniques.new = {
[[
Ngamahu's Flame
@@ -121,7 +62,7 @@ Shade of Solaris
Sage Wand
Unreleased: true
Requires Level 30, 119 Int
(17 to 21)% increased Spell Damage
(17-21)% increased Spell Damage
Gain 20% of Elemental Damage as Extra Chaos Damage
Critical Strikes deal no Damage
120% increased Spell Damage if you've dealt a Critical Strike Recently
@@ -152,7 +93,7 @@ Amber Amulet
Unreleased: true
League: Breach
Requires Level 35
+(20 to 30) to Strength
+(20-30) to Strength
+27 to Strength
21% increased Fire Damage
+28 to maximum Life
@@ -164,7 +105,7 @@ Amber Amulet
Unreleased: true
League: Breach
Requires Level 64
+(20 to 30) to Strength
+(20-30) to Strength
10% increased maximum Life
+30% to Fire Resistance
10% increased Strength
@@ -217,206 +158,25 @@ Gain a Frenzy Charge on Hit while Bleeding
15% increased Movement Speed while Bleeding
10% increased Physical Damage Reduction while Stationary
50% chance to be inflicted with Bleeding when Hit by an Attack
]],[[
Voice of the Storm
Lapis Amulet
Unreleased: true
League: Breach
+(20-30) to Intelligence
+15 to all Attributes
14% increased maximum Mana
Critical Strike Chance is increased by Uncapped Lightning Resistance
Lightning strikes when you deal a Critical Strike
]],[[
Tulborn
Spiraled Wand
Unreleased: true
League: Breach
(15-19)% increased Spell Damage
12% increased Cast Speed
50% chance to gain a Power Charge on Killing a Frozen Enemy
Adds 10 to 20 Cold Damage to Spells per Power Charge
+21 Mana gained on Killing a Frozen Enemy
]],
[[
The Brass Dome
Gladiator Plate
Requires Level 65, 177 Str
30% reduced Chance to Block Attacks and Spells
(600 to 650)% increased Armour
10% reduced Movement Speed
50% increased Shock Duration on You
Take no Extra Damage from Critical Strikes
]],[[
Voidwalker
Murder Boots
Evasion: (386 to 450)
Energy Shield: (52 to 61)
Requires Level 69, 82 Dex, 42 Int
+(30 to 50) to Dexterity
(140 to 180)% increased Evasion and Energy Shield
30% increased Movement Speed
20% chance to Avoid Projectiles while Phasing
You have Phasing if you've Killed Recently
Projectiles Pierce while Phasing
]],[[
Kitava's Thirst
Zealot Helmet
Armour: (177187)
Energy Shield: (5356)
Requires Level 44, 50 Str, 50 Int
15% reduced Cast Speed
(70 to 80)% increased Armour and Energy Shield
+(30 to 50) to maximum Mana
30% chance to Cast Socketed Spells when
you Spend at least 100 Mana to Use a Skill
]],[[
Kondo's Pride
Ezomyte Blade
Two Handed Sword
Physical Damage: (226418 to 256475)
Critical Strike Chance: 5.00%
Attacks per Second: 1.25
Requires Level 61, 113 Str, 113 Dex
18% increased Accuracy Rating
(270 to 320)% increased Physical Damage
0.6% of Physical Attack Damage Leeched as Life
50% increased Melee Damage against Bleeding Enemies
Cannot Leech Life from Critical Strikes
30% chance to Blind Enemies on Critical Strike
Causes Bleeding on Melee Critical Strike
]],[[
Obscurantis
Lion Pelt
Requires Level 70, 150 Dex
+(300 to 500) to Accuracy Rating
(100 to 120)% increased Evasion Rating
+(50 to 80) to maximum Life
1% increased Projectile Attack Damage per 200 Accuracy Rating
]],[[
Slivertongue
Harbinger Bow
Bow
Requires Level 68, 212 Dex
(30 to 50)% increased Critical Strike Chance
Adds (60-75) to (170-220) Physical Damage
100% increased Critical Strike Chance with arrows that Fork
Arrows that Pierce cause Bleeding
Arrows always Pierce after Chaining
]],[[
Snakepit
Sapphire Ring
Requires Level 68
+(20 to 30)% to Cold Resistance
(20 to 40)% increased Cold Damage
(5 to 10)% increased Cast Speed
Spells have an additional Projectile
]],[[
Brain Rattler
Meatgrinder
Two Handed Mace
Physical Damage: (143437 to 163487)
Critical Strike Chance: 5.00%
Attacks per Second: 1.25
Requires Level 63, 212 Str
20% increased Stun Duration on Enemies
Adds (80-100) to (320370) Physical Damage
50% of Physical Damage Converted to Lightning Damage
15% chance to Shock
10% chance to Cause Monsters to Flee
Enemies you Shock have 30% reduced Cast Speed
Enemies you Shock have 20% reduced Movement Speed
]],[[
Razor of the Seventh Sun
Midnight Blade
One Handed Sword
Requires Level 68, 113 Str, 113 Dex
18% increased Accuracy Rating
Adds (65-75) to (110-130) Physical Damage
100% increased Burning Damage if you've Ignited an Enemy Recently
Recovery 1% of Maximum Life when you Ignite an Enemy
100% increased Melee Physical Damage against Ignited Enemies
]],[[
Eye of Innocence
Citrine Amulet
Requires Level 68
+(16 to 24) to Strength and Dexterity
10% chance to Ignite
(50 to 70)% increased Damage while Ignited
Take 100 Fire Damage when you Ignite an Enemy
2% of Fire Damage Leeched as Life while Ignited
]],[[
Cospri's Malice
Jewelled Foil
One Handed Sword
Elemental Damage: (80160 to 100200)
Critical Strike Chance: 5.50%
Attacks per Second: (1.731.82)
Requires Level 68, 212 Dex, 257 Int
+30% to Global Critical Strike Multiplier
No Physical Damage
Adds (80100) to (160200) Cold Damage
Adds (4060) to (90110) Cold Damage to Spells
(8 to 14)% increased Attack Speed
+257 Intelligence Requirement
60% increased Critical Strike Chance against Chilled Enemies
Cast a Socketed Cold Skill on Melee Critical Strike
]],[[
The Scourge
Terror Claw
Claws
Physical Damage: 1560
Critical Strike Chance: 6.30%
Attacks per Second: 1.50
Requires Level 70, 113 Dex, 113 Int
2% of Physical Attack Damage Leeched as Life
Adds (35-50) to (100-125) Physical Damage
(10 to 15)% increased Attack Speed
Minions have (10 to 15)% increased Attack Speed
10% Chance to summon a Spectral Wolf on Kill
Increases and reductions to Minion Damage also affects you
70% increased Minion Damage if you have Hit Recently
]],[[
Unending Hunger
Cobalt Jewel
Minions have (5 to 8)% increased Radius of Area Skills
20% chance for Spectres to gain Soul Eater on Kill for 30 seconds
with 50 Intelligence from Allocated Passives in Radius
]],[[
The Warden's Brand
Iron Ring
Requires Level 30
Adds 1 to 4 Physical Damage to Attacks
Adds (515) to (2550) Physical Damage to Attacks
30% reduced Attack Speed
15% chance to gain a Frenzy Charge when you Stun an Enemy
]],[[
Praxis
Paua Ring
Requires Level 22
+(20 to 25) to maximum Mana
+(30 to 60) to maximum Mana
(3 to 6) Mana Regenerated per second
(4 to 8) to Mana Cost of Skills
8% of Damage taken gained as Mana when Hit
]],[[
Valyrium
Moonstone Ring
Requires Level 38
+(15 to 25) to maximum Energy Shield
+(10 to 20) to maximum Energy Shield
+(20 to 30)% to Fire Resistance
40% to Cold Resistance
Stun Threshold is based on Energy Shield instead of Life
]],[[
Shaper's Touch
Crusader Gloves
Armour: (194)
Energy Shield: (57)
Requires Level 66, 51 Str, 51 Int
(80 to 120)% increased Armour and Energy Shield
+2 Accuracy Rating per 2 Intelligence
+1 Life per 4 Dexterity
+1 Mana per 4 Strength
1% increased Energy Shield per 10 Strength
1% increased Evasion Rating per 10 Intelligence
1% increased Melee Physical Damage per 10 Dexterity
]],[[
Starforge
Infernal Sword
Two Handed Sword
Physical Damage: (285590 to 342708)
Critical Strike Chance: 5.00%
Attacks per Second: (1.311.35)
Requires Level 67, 113 Str, 113 Dex
30% increased Accuracy Rating
(400 to 500)% increased Physical Damage
(5 to 8)% increased Attack Speed
+(90 to 100) to maximum Life
20% increased Area of Effect for Attacks
Deal no Elemental Damage
Your Physical Damage can Shock
]]
}

View File

@@ -647,17 +647,17 @@ Suffixes:
[[
Amulet
Amber Amulet
+(20 to 30) Strength
+(20 to 30) to Strength
{amulet}
]],[[
Amulet
Jade Amulet
+(20 to 30) Dexterity
+(20 to 30) to Dexterity
{amulet}
]],[[
Amulet
Lapis Amulet
+(20 to 30) Intelligence
+(20 to 30) to Intelligence
{amulet}
]],[[
Amulet

View File

@@ -141,6 +141,15 @@ Requires Level 20
30% increased Rarity of Items found
Cannot be Stunned
]],[[
Eye of Innocence
Citrine Amulet
Requires Level 68
+(16-24) to Strength and Dexterity
10% chance to Ignite
(50-70)% increased Damage while Ignited
Take 100 Fire Damage when you Ignite an Enemy
2% of Fire Damage Leeched as Life while Ignited
]],[[
Hinekora's Sight
Onyx Amulet
Requires Level 20

View File

@@ -11,6 +11,15 @@ Adds 2 to 4 Physical Damage to Attacks
2 Physical Damage taken from Attacks
40% of Melee Physical Damage taken reflected to Attacker
]],[[
The Brass Dome
Gladiator Plate
Requires Level 65, 177 Str
30% reduced Chance to Block Attacks and Spells
(600-650)% increased Armour
10% reduced Movement Speed
50% increased Shock Duration on You
Take no Extra Damage from Critical Strikes
]],[[
Death's Oath
Astral Plate
Variant: Pre 2.0.0

View File

@@ -385,5 +385,17 @@ Requires Level 27, 27 Dex, 27 Int
(20 to 30)% increased Rarity of Items found
+(30 to 40)% to Fire Resistance
10% increased Movement Speed
]],[[
Voidwalker
Murder Boots
Evasion: (386 to 450)
Energy Shield: (52 to 61)
Requires Level 69, 82 Dex, 42 Int
+(30-50) to Dexterity
(140-180)% increased Evasion and Energy Shield
30% increased Movement Speed
20% chance to Avoid Projectiles while Phasing
You have Phasing if you've Killed Recently
Projectiles Pierce while Phasing
]],
}

View File

@@ -255,6 +255,16 @@ Attacks per Second: 1.54
+30 to Accuracy Rating
+10 Mana gained on Kill
]],[[
Slivertongue
Harbinger Bow
Bow
Requires Level 68, 212 Dex
(30-50)% increased Critical Strike Chance
Adds (60-75) to (170-220) Physical Damage
100% increased Critical Strike Chance with arrows that Fork
Arrows that Pierce cause Bleeding
Arrows always Pierce after Chaining
]],[[
Storm Cloud
Long Bow
Variant: Pre 2.0.0

View File

@@ -183,6 +183,21 @@ Causes Bleeding on Hit
1% increased Bleed Duration per 12 Intelligence
30% Chance to cause Bleeding Enemies to Flee on hit
]],[[
The Scourge
Terror Claw
Claws
Physical Damage: 15<31>60
Critical Strike Chance: 6.30%
Attacks per Second: 1.50
Requires Level 70, 113 Dex, 113 Int
2% of Physical Attack Damage Leeched as Life
Adds (35-50) to (100-125) Physical Damage
(10-15)% increased Attack Speed
Minions have (10-15)% increased Attack Speed
10% Chance to summon a Spectral Wolf on Kill
Increases and reductions to Minion Damage also affects you
70% increased Minion Damage if you have Hit Recently
]],[[
Touch of Anguish
Imperial Claw
Claw

View File

@@ -277,6 +277,19 @@ You cannot be Ignited for 3 seconds after being Ignited
{variant:2}You cannot be Shocked for 3 seconds after being Shocked
You grant (4 to 6) Frenzy Charges to allies on Death
]],[[
Shaper's Touch
Crusader Gloves
Armour: (194)
Energy Shield: (57)
Requires Level 66, 51 Str, 51 Int
(80-120)% increased Armour and Energy Shield
+2 Accuracy Rating per 2 Intelligence
+1 Life per 4 Dexterity
+1 Mana per 4 Strength
1% increased Energy Shield per 10 Strength
1% increased Evasion Rating per 10 Intelligence
1% increased Melee Physical Damage per 10 Dexterity
]],[[
Southbound
Soldier Gloves
Armour: 80

View File

@@ -91,6 +91,14 @@ Requires Level 20, 46 Dex
(20 to 10)% to Fire Resistance
(20 to 10)% to Cold Resistance
]],[[
Obscurantis
Lion Pelt
Requires Level 70, 150 Dex
+(300-500) to Accuracy Rating
(100-120)% increased Evasion Rating
+(50-80) to maximum Life
1% increased Projectile Attack Damage per 200 Accuracy Rating
]],[[
Rat's Nest
Ursine Pelt
Evasion: 600
@@ -345,6 +353,17 @@ Adds 1 to 13 Lightning Damage to Attacks
20% increased Elemental Resistances while on Low Life
20% reduced Mana Cost of Skills when on Low Life
]],[[
Kitava's Thirst
Zealot Helmet
Armour: (177187)
Energy Shield: (5356)
Requires Level 44, 50 Str, 50 Int
15% reduced Cast Speed
(70-80)% increased Armour and Energy Shield
+(30-50) to maximum Mana
30% chance to Cast Socketed Spells when
you Spend at least 100 Mana to Use a Skill
]],[[
Mindspiral
Aventail Helmet
Armour: 88

View File

@@ -284,6 +284,12 @@ Radius: Medium
(6 to 10)% increased Projectile Damage
With at least 50 Dexterity Allocated in Radius, each Spectral Throw Projectile gains 4% increased Damage each time it Hits.
]],[[
Unending Hunger
Cobalt Jewel
Minions have (5-8)% increased Radius of Area Skills
20% chance for Spectres to gain Soul Eater on Kill for 30 seconds
with 50 Intelligence from Allocated Passives in Radius
]],[[
Unstable Payload
Cobalt Jewel
(8 to 12)% Chance for Traps to Trigger an additional time

View File

@@ -390,6 +390,21 @@ Implicits: 2
]],
-- Weapon: Two Handed Mace
[[
Brain Rattler
Meatgrinder
Two Handed Mace
Physical Damage: (143437 to 163487)
Critical Strike Chance: 5.00%
Attacks per Second: 1.25
Requires Level 63, 212 Str
20% increased Stun Duration on Enemies
Adds (80-100) to (320370) Physical Damage
50% of Physical Damage Converted to Lightning Damage
15% chance to Shock
10% chance to Cause Monsters to Flee
Enemies you Shock have 30% reduced Cast Speed
Enemies you Shock have 20% reduced Movement Speed
]],[[
Chober Chaber
Great Mallet
Two Handed Mace

View File

@@ -282,6 +282,15 @@ Variant: Current
{variant:2}2% increased Intelligence for each Unique Item you have equipped
3% additional chance for Slain monsters to drop Scrolls of Wisdom
]],[[
Praxis
Paua Ring
Requires Level 22
+(20-25) to maximum Mana
+(30-60) to maximum Mana
(3-6) Mana Regenerated per second
(4-8) to Mana Cost of Skills
8% of Damage taken gained as Mana when Hit
]],[[
Pyre
Sapphire Ring
Requires Level 11
@@ -358,6 +367,14 @@ Adds (8-15 to 20-28) Fire Damage to Attacks
Left ring slot: 30% reduced Reflected Elemental Damage taken
Right ring slot: 30% reduced Reflected Physical Damage taken
]],[[
Snakepit
Sapphire Ring
Requires Level 68
+(20-30)% to Cold Resistance
(20-40)% increased Cold Damage
(5-10)% increased Cast Speed
Spells have an additional Projectile
]],[[
The Taming
Prismatic Ring
League: Domination, Nemesis
@@ -418,6 +435,15 @@ Requires Level 38
0.2% of Damage Leeched as Life against Shocked Enemies
5% chance to Shock
]],[[
Valyrium
Moonstone Ring
Requires Level 38
+(15-25) to maximum Energy Shield
+(10-20) to maximum Energy Shield
+(20-30)% to Fire Resistance
40% to Cold Resistance
Stun Threshold is based on Energy Shield instead of Life
]],[[
Ventor's Gamble
Gold Ring
Requires Level 65
@@ -451,5 +477,13 @@ Adds 1 to 3 Chaos Damage to Attacks
{variant:2}(30 to 50)% chance to cause Bleeding on Melee Hit
{variant:1}Melee Attacks Poison on Hit
{variant:2}(20 to 40)% chance to Poison on Melee Hit
]],[[
The Warden's Brand
Iron Ring
Requires Level 30
Adds 1 to 4 Physical Damage to Attacks
Adds (515) to (2550) Physical Damage to Attacks
30% reduced Attack Speed
15% chance to gain a Frenzy Charge when you Stun an Enemy
]],
}

View File

@@ -176,6 +176,16 @@ Adds (20-30 to 31-40) Physical Damage
0.4% of Physical Attack Damage Leeched as Mana per Blue Socket
+2 to Melee Weapon Range per White Socket
]],[[
Razor of the Seventh Sun
Midnight Blade
One Handed Sword
Requires Level 68, 113 Str, 113 Dex
18% increased Accuracy Rating
Adds (65-75) to (110-130) Physical Damage
100% increased Burning Damage if you've Ignited an Enemy Recently
Recovery 1% of Maximum Life when you Ignite an Enemy
100% increased Melee Physical Damage against Ignited Enemies
]],[[
Rebuke of the Vaal
Vaal Blade
One Handed Sword
@@ -306,6 +316,22 @@ Implicits: 2
30% increased Elemental Damage
+2 to Weapon Range
]],[[
Cospri's Malice
Jewelled Foil
One Handed Sword
Elemental Damage: (80<38>160 to 100<30>200)
Critical Strike Chance: 5.50%
Attacks per Second: (1.73<EFBFBD>1.82)
Requires Level 68, 212 Dex, 257 Int
+30% to Global Critical Strike Multiplier
No Physical Damage
Adds (80<38>100) to (160<36>200) Cold Damage
Adds (40<34>60) to (90<39>110) Cold Damage to Spells
(8-14)% increased Attack Speed
+257 Intelligence Requirement
60% increased Critical Strike Chance against Chilled Enemies
Cast a Socketed Cold Skill on Melee Critical Strike
]],[[
Daresso's Passion
Estoc
One Handed Sword
@@ -425,6 +451,21 @@ Adds (90-115 to 230-260) Physical Damage
Enemies you Attack Reflect 100 Physical Damage to you
+2 to Weapon range
]],[[
Kondo's Pride
Ezomyte Blade
Two Handed Sword
Physical Damage: (226<32>418 to 256<35>475)
Critical Strike Chance: 5.00%
Attacks per Second: 1.25
Requires Level 61, 113 Str, 113 Dex
18% increased Accuracy Rating
(270-320)% increased Physical Damage
0.6% of Physical Attack Damage Leeched as Life
50% increased Melee Damage against Bleeding Enemies
Cannot Leech Life from Critical Strikes
30% chance to Blind Enemies on Critical Strike
Causes Bleeding on Melee Critical Strike
]],[[
Oro's Sacrifice
Infernal Sword
Variant: Pre 1.3.0
@@ -506,6 +547,21 @@ Adds 35 to 70 Cold Damage
0.6% of Physical Attack Damage Leeched as Mana
Cannot be Frozen
]],[[
Starforge
Infernal Sword
Two Handed Sword
Physical Damage: (285<38>590 to 342<34>708)
Critical Strike Chance: 5.00%
Attacks per Second: (1.31<EFBFBD>1.35)
Requires Level 67, 113 Str, 113 Dex
30% increased Accuracy Rating
(400-500)% increased Physical Damage
(5-8)% increased Attack Speed
+(90-100) to maximum Life
20% increased Area of Effect for Attacks
Deal no Elemental Damage
Your Physical Damage can Shock
]],[[
Terminus Est
Tiger Sword
Two Handed Sword

View File

@@ -77,10 +77,10 @@ return {
},
{ label = "Hit Damage", textSize = 12,
{ format = "{0:output:TotalMin} to {0:output:TotalMax}", },
{ format = "{0:output:PhysicalMin} to {0:output:PhysicalMax}", { breakdown = "Physical" }, },
{ format = "{0:output:LightningMin} to {0:output:LightningMax}", { breakdown = "Lightning" }, },
{ format = "{0:output:ColdMin} to {0:output:ColdMax}", { breakdown = "Cold" }, },
{ format = "{0:output:FireMin} to {0:output:FireMax}", { breakdown = "Fire" }, },
{ format = "{0:output:PhysicalMin} to {0:output:PhysicalMax}", { breakdown = "Physical" }, { label = "Conversions", modName = { "PhysicalDamageConvertToLightning", "PhysicalDamageConvertToCold", "PhysicalDamageConvertToFire", "PhysicalDamageConvertToChaos", "PhysicalDamageGainAsLightning", "PhysicalDamageGainAsCold", "PhysicalDamageGainAsFire", "PhysicalDamageGainAsChaos" }, modType = "BASE", skill = true }, },
{ format = "{0:output:LightningMin} to {0:output:LightningMax}", { breakdown = "Lightning" }, { label = "Conversions", modName = { "LightningDamageConvertToCold", "LightningDamageConvertToFire", "LightningDamageConvertToChaos", "LightningDamageGainAsCold", "LightningDamageGainAsFire", "LightningDamageGainAsChaos" }, modType = "BASE", skill = true }, },
{ format = "{0:output:ColdMin} to {0:output:ColdMax}", { breakdown = "Cold" }, { label = "Conversions", modName = { "ColdDamageConvertToFire", "ColdDamageConvertToChaos", "ColdDamageGainAsFire", "ColdDamageGainAsChaos" }, modType = "BASE", skill = true }, },
{ format = "{0:output:FireMin} to {0:output:FireMax}", { breakdown = "Fire" }, { label = "Conversions", modName = { "FireDamageConvertToChaos", "FireDamageGainAsChaos" }, modType = "BASE", skill = true }, },
{ format = "{0:output:ChaosMin} to {0:output:ChaosMax}", { breakdown = "Chaos" }, },
},
{ label = "Average Hit", { format = "{1:output:AverageHit}", { breakdown = "AverageHit" }, }, },
@@ -125,7 +125,7 @@ return {
},
{ format = "x {3:output:FireDotEffMult}",
{ breakdown = "FireDotEffMult" },
{ label = "Enemy modifiers", modName = { "DamageTaken", "DotTaken", "FireDamageTaken", "ElementalDamageTaken", "FireResist", "ElementalResist" }, enemy = true },
{ label = "Enemy modifiers", modName = { "DamageTaken", "DotTaken", "FireDamageTaken", "BurningDamageTaken", "ElementalDamageTaken", "FireResist", "ElementalResist" }, enemy = true },
},
{ format = "x {3:output:ChaosDotEffMult}",
{ breakdown = "ChaosDotEffMult" },
@@ -208,7 +208,7 @@ return {
{ label = "Chance to Ignite", { format = "{0:output:IgniteChance}%", { label = "Player modifiers", modName = "EnemyIgniteChance", cfg = "skill" }, { label = "Enemy modifiers", modName = "SelfIgniteChance", enemy = true }, }, },
{ label = "Total Increased", { format = "{0:mod:1}%", { modName = { "Damage", "FireDamage", "ElementalDamage" }, modType = "INC", cfg = "ignite" }, }, },
{ label = "Total More", { format = "{0:mod:1}%", { modName = { "Damage", "FireDamage", "ElementalDamage" }, modType = "MORE", cfg = "ignite" }, }, },
{ label = "Effective DPS Mod", flag = "effective", { format = "x {3:output:IgniteEffMult}", { breakdown = "IgniteEffMult" }, { label = "Enemy modifiers", modName = { "FireResist", "ElementalResist", "DamageTaken", "DotTaken", "FireDamageTaken", "ElementalDamageTaken" }, enemy = true }, }, },
{ label = "Effective DPS Mod", flag = "effective", { format = "x {3:output:IgniteEffMult}", { breakdown = "IgniteEffMult" }, { label = "Enemy modifiers", modName = { "FireResist", "ElementalResist", "DamageTaken", "DotTaken", "FireDamageTaken", "BurningDamageTaken", "ElementalDamageTaken" }, enemy = true }, }, },
{ label = "Ignite DPS", { format = "{1:output:IgniteDPS}", { breakdown = "IgniteDPS" }, }, },
{ label = "Ignite Duration", { format = "{2:output:IgniteDuration}s", { breakdown = "IgniteDuration" }, { label = "Player modifiers", modName = "EnemyIgniteDuration", cfg = "skill" }, { label = "Enemy modifiers", modName = "SelfIgniteDuration", enemy = true }, }, },
} },

View File

@@ -988,6 +988,9 @@ local function performCalcs(env)
if env.weaponData1.type and env.weaponData2.type then
condList["DualWielding"] = true
end
if env.mode_skillType == "ATTACK" then
condList["MainHandAttack"] = true
end
if not env.weaponData1.type then
condList["Unarmed"] = true
end
@@ -1290,7 +1293,7 @@ local function performCalcs(env)
-- Life/mana pools
if modDB:Sum("FLAG", nil, "ChaosInoculation") then
output.Life = 1
modDB.conditions["FullLife"] = true
condList["FullLife"] = true
else
output.Life = round(calcVal(modDB, "Life"))
if breakdown then
@@ -1298,7 +1301,7 @@ local function performCalcs(env)
end
end
output.Mana = round(calcVal(modDB, "Mana"))
output.ManaRegen = round(modDB:Sum("BASE", nil, "ManaRegen") * calcMod(modDB, nil, "ManaRegen", "ManaRecovery"), 1)
output.ManaRegen = round((modDB:Sum("BASE", nil, "ManaRegen") + output.Mana * modDB:Sum("BASE", nil, "ManaRegenPercent") / 100) * calcMod(modDB, nil, "ManaRegen", "ManaRecovery"), 1)
if breakdown then
simpleBreakdown(nil, nil, "Mana")
simpleBreakdown(nil, nil, "ManaRegen", "ManaRecovery")
@@ -2030,6 +2033,9 @@ local function performCalcs(env)
if isElemental[damageType] then
taken = taken + enemyDB:Sum("INC", nil, "ElementalDamageTaken")
end
if damageType == "Fire" then
taken = taken + enemyDB:Sum("INC", nil, "BurningDamageTaken")
end
resist = output["Enemy"..damageType.."Resist"]
end
effMult = (1 - resist / 100) * (1 + taken / 100)
@@ -2201,7 +2207,7 @@ local function performCalcs(env)
local effMult = 1
if env.mode_effective then
local resist = output["EnemyFireResist"]
local taken = enemyDB:Sum("INC", dotCfg, "DamageTaken", "FireDamageTaken", "ElementalDamageTaken", "DotTaken")
local taken = enemyDB:Sum("INC", dotCfg, "DamageTaken", "FireDamageTaken", "ElementalDamageTaken", "BurningDamageTaken", "DotTaken")
effMult = (1 - resist / 100) * (1 + taken / 100)
output["IgniteEffMult"] = effMult
if breakdown then

View File

@@ -91,6 +91,7 @@ function itemLib.parseItemRaw(item)
item.title = item.name
item.name = item.title .. ", " .. item.baseName
item.type = data.itemBases[item.baseName].type
l = l + 1
end
item.base = data.itemBases[item.baseName]
item.modLines = { }
@@ -438,6 +439,9 @@ function itemLib.buildItemModList(item)
end
for _, mod in ipairs(modLine.modList) do
mod.source = "Item:"..(item.id or -1)..":"..item.name
if type(mod.value) == "table" and mod.value.mod then
mod.value.mod.source = mod.source
end
t_insert(baseList, mod)
end
end

View File

@@ -283,6 +283,7 @@ local modFlagList = {
-- List of modifier flags/tags that appear at the start of a line
local preFlagList = {
["^hits deal "] = { flags = ModFlag.Hit },
["^minions have "] = { keywordFlags = KeywordFlag.Minion },
["^minions deal "] = { keywordFlags = KeywordFlag.Minion },
["^attacks used by totems have "] = { keywordFlags = KeywordFlag.Totem },
@@ -332,6 +333,8 @@ local modTagList = {
["with a rare item equipped"] = { tag = { type = "Condition", var = "UsingRareItem" } },
["with a unique item equipped"] = { tag = { type = "Condition", var = "UsingUniqueItem" } },
["if you wear no corrupted items"] = { tag = { type = "Condition", var = "NotUsingCorruptedItem" } },
["with main hand"] = { tag = { type = "Condition", var = "MainHandAttack" } },
["with off hand"] = { tag = { type = "Condition", var = "OffHandAttack" } },
-- Player status conditions
["when on low life"] = { tag = { type = "Condition", var = "LowLife" } },
["while on low life"] = { tag = { type = "Condition", var = "LowLife" } },
@@ -356,17 +359,27 @@ local modTagList = {
["if you haven't crit recently"] = { tag = { type = "Condition", var = "NotCritRecently" } },
["if you've killed recently"] = { tag = { type = "Condition", var = "KilledRecently" } },
["if you haven't killed recently"] = { tag = { type = "Condition", var = "NotKilledRecently" } },
["if you or your totems have killed recently"] = { tag = { type = "Condition", varList = {"KilledRecently","TotemsKilledRecently"} } },
["if you've been hit recently"] = { tag = { type = "Condition", var = "BeenHitRecently" } },
["if you were hit recently"] = { tag = { type = "Condition", var = "BeenHitRecently" } },
["if you were damaged by a hit recently"] = { tag = { type = "Condition", var = "BeenHitRecently" } },
["if you haven't been hit recently"] = { tag = { type = "Condition", var = "NotBeenHitRecently" } },
["if you've taken no damage from hits recently"] = { tag = { type = "Condition", var = "NotBeenHitRecently" } },
["if you've attacked recently"] = { tag = { type = "Condition", var = "AttackedRecently" } },
["if you've cast a spell recently"] = { tag = { type = "Condition", var = "CastSpellRecently" } },
["if you've used a fire skill in the past 10 seconds"] = { tag = { type = "Condition", var = "UsedFireSkillInPast10Sec" } },
["if you've used a cold skill in the past 10 seconds"] = { tag = { type = "Condition", var = "UsedColdSkillInPast10Sec" } },
["if you've used a lightning skill in the past 10 seconds"] = { tag = { type = "Condition", var = "UsedLightningSkillInPast10Sec" } },
["if you've summoned a totem recently"] = { tag = { type = "Condition", var = "SummonedTotemRecently" } },
["if you've used a movement skill recently"] = { tag = { type = "Condition", var = "UsedMovementSkillRecently" } },
["if you detonated mines recently"] = { tag = { type = "Condition", var = "DetonatedMinesRecently" } },
["if you've crit in the past 8 seconds"] = { tag = { type = "Condition", var = "CritInPast8Sec" } },
["if energy shield recharge has started recently"] = { tag = { type = "Condition", var = "EnergyShieldRechargeRecently" } },
-- Enemy status conditions
["against enemies on full life"] = { tag = { type = "Condition", var = "EnemyFullLife" }, flags = ModFlag.Hit },
["against enemies that are on full life"] = { tag = { type = "Condition", var = "EnemyFullLife" }, flags = ModFlag.Hit },
["against enemies on low life"] = { tag = { type = "Condition", var = "EnemyLowLife" }, flags = ModFlag.Hit },
["against enemies that are on low life"] = { tag = { type = "Condition", var = "EnemyLowLife" }, flags = ModFlag.Hit },
["against bleeding enemies"] = { tag = { type = "Condition", var = "EnemyBleeding" }, flags = ModFlag.Hit },
["against poisoned enemies"] = { tag = { type = "Condition", var = "EnemyPoisoned" }, flags = ModFlag.Hit },
["against burning enemies"] = { tag = { type = "Condition", var = "EnemyBurning" }, flags = ModFlag.Hit },
@@ -417,6 +430,7 @@ local specialModList = {
["every 10 seconds, gain (%d+)%% increased elemental damage for 4 seconds"] = function(num) return { mod("ElementalDamage", "INC", num, { type = "Condition", var = "PendulumOfDestruction" }) } end,
["every 10 seconds, gain (%d+)%% increased radius of area skills for 4 seconds"] = function(num) return { mod("AreaRadius", "INC", num, { type = "Condition", var = "PendulumOfDestruction" }) } end,
["enemies you curse take (%d+)%% increased damage"] = function(num) return { mod("Misc", "LIST", { type = "EnemyModifier", mod = mod("DamageTaken", "INC", num) }, { type = "Condition", var = "EnemyCursed" }) } end,
["enemies you curse have (%-%d+)%% to chaos resistance"] = function(num) return { mod("Misc", "LIST", { type = "EnemyModifier", mod = mod("ChaosResist", "BASE", num) }, { type = "Condition", var = "EnemyCursed" }) } end,
["nearby enemies have (%-%d+)%% to chaos resistance"] = function(num) return { mod("Misc", "LIST", { type = "EnemyModifier", mod = mod("ChaosResist", "BASE", num) }) } end,
["nearby enemies take (%d+)%% increased elemental damage"] = function(num) return { mod("Misc", "LIST", { type = "EnemyModifier", mod = mod("ElementalDamageTaken", "INC", num) }) } end,
["enemies near your totems take (%d+)%% increased physical and fire damage"] = function(num) return { mod("Misc", "LIST", { type = "EnemyModifier", mod = mod("PhysicalDamageTaken", "INC", num) }), mod("Misc", "LIST", { type = "EnemyModifier", mod = mod("FireDamageTaken", "INC", num) }) } end,
@@ -509,7 +523,10 @@ local specialModList = {
["projectiles pierce while phasing"] = { mod("PierceChance", "BASE", 100, { type = "Condition", var = "Phasing" }) },
["increases and reductions to minion damage also affects you"] = { flag("MinionDamageAppliesToPlayer") },
["armour is increased by uncapped fire resistance"] = { mod("Armour", "INC", 1, { type = "PerStat", stat = "FireResistTotal", div = 1 }) },
["critical strike chance is increased by uncapped lightning resistance"] = { mod("CritChance", "INC", 1, { type = "PerStat", stat = "LightningResistTotal", div = 1 }) },
["critical strikes deal no damage"] = { flag("NoCritDamage") },
["enemies chilled by you take (%d+)%% increased burning damage"] = function(num) return { mod("Misc", "LIST", { type = "EnemyModifier", mod = mod("BurningDamageTaken", "INC", num) }, { type = "Condition", var = "EnemyChilled" }) } end,
["attacks with this weapon penetrate (%d+)%% elemental resistances"] = function(num) return { mod("ElementalPenetration", "BASE", num, nil, ModFlag.Weapon) } end,
}
local keystoneList = {
-- List of keystones that can be found on uniques
@@ -565,6 +582,7 @@ local regenTypes = {
["maximum life"] = "LifeRegen",
["mana"] = "ManaRegen",
["energy shield"] = "EnergyShieldRegen",
["maximum mana and energy shield"] = { "ManaRegen", "EnergyShieldRegen" },
}
-- Build active skill name lookup
@@ -767,11 +785,11 @@ local function parseMod(line)
return { }, line
end
elseif modForm == "REGENPERCENT" then
local pool = regenTypes[formCap[2]]
if not pool then
modName = regenTypes[formCap[2]]
if not modName then
return { }, line
end
modName = pool .. "Percent"
modSuffix = "Percent"
elseif modForm == "REGENFLAT" then
modName = regenTypes[formCap[2]]
if not modName then
@@ -833,9 +851,19 @@ local function parseMod(line)
end
local cache = { }
local unsupported = { }
local count = 0
return function(line)
if not cache[line] then
cache[line] = { parseMod(line) }
--[[if not cache[line][1] then
local form = line:gsub("[%+%-]?%d+%.?%d*","{num}")
if not unsupported[form] then
unsupported[form] = true
count = count + 1
ConPrintf("%d %s", count, form)
end
end]]
end
return unpack(copyTable(cache[line]))
end

View File

@@ -49,6 +49,14 @@ Head over to the [Releases](https://github.com/Openarl/PathOfBuilding/releases)
![ss3](https://cloud.githubusercontent.com/assets/19189971/18089780/f0ff234a-6f04-11e6-8c88-6193fe59a5c4.png)
## Changelog
### 1.2.17 - 2016/11/28
* Added 'Tulborn' and 'Voice of the Storm'
* Added support for Mastermind of Discord; when this passive is allocated, new options will appear in the
Configuration tab to allow you to indicate which skill types you are using
* Conversion modifiers are now listed in the breakdowns for hit damage in the Calcs tab
* Added 2x multiplier to Cyclone's DPS to match the in-game tooltip
* Fixed bug preventing the buff from Summon Lightning Golem from applying correctly
### 1.2.16 - 2016/11/25
* The build list can now be sorted by name, class or time of last edit
* The save prompt will now show when closing the program if there are unsaved changes

View File

@@ -1,3 +1,10 @@
VERSION[1.2.17][2016/11/28]
* Added 'Tulborn' and 'Voice of the Storm'
* Added support for Mastermind of Discord; when this passive is allocated, new options will appear in the
Configuration tab to allow you to indicate which skill types you are using
* Conversion modifiers are now listed in the breakdowns for hit damage in the Calcs tab
* Added 2x multiplier to Cyclone's DPS to match the in-game tooltip
* Fixed bug preventing the buff from Summon Lightning Golem from applying correctly
VERSION[1.2.16][2016/11/25]
* The build list can now be sorted by name, class or time of last edit
* The save prompt will now show when closing the program if there are unsaved changes

View File

@@ -1,20 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<PoBVersion>
<Version number="1.2.16"/>
<Version number="1.2.17"/>
<Source part="program" url="https://raw.githubusercontent.com/Openarl/PathOfBuilding/{branch}/"/>
<Source part="tree" url="https://raw.githubusercontent.com/Openarl/PathOfBuilding/{branch}/tree.zip"/>
<Source url="https://raw.githubusercontent.com/Openarl/PathOfBuilding/{branch}/runtime-win32.zip" part="runtime" platform="win32"/>
<File sha1="d4d8e00d3ecc2ffb3d0c2df0876c009bfe0937d2" name="Launch.lua" part="program"/>
<File sha1="93e19c2a160eb49993d50d9e2b47ea79962373d9" name="UpdateCheck.lua" part="program"/>
<File sha1="4f17937f2b37784e169a3792b235f2a0a3961e61" name="UpdateApply.lua" part="program"/>
<File sha1="93794dc9ec13cacd23bafa746410a87506b23025" name="changelog.txt" part="program"/>
<File sha1="fe91e91eca24d495f3cd5468b59af3d70d30a357" name="changelog.txt" part="program"/>
<File sha1="231a4fe264d84294427edacbf3e29ec4b301712e" name="Classes/BuildListControl.lua" part="program"/>
<File sha1="47c28993f5653955c9e76714775d87ac22b077da" name="Classes/ButtonControl.lua" part="program"/>
<File sha1="8df790619a3284b8ed78075f59dd34d5b00d28a3" name="Classes/CalcBreakdownControl.lua" part="program"/>
<File sha1="4c9854308faeac5a7f874a00a1e507b91ad1bcea" name="Classes/CalcBreakdownControl.lua" part="program"/>
<File sha1="23171916fa590c5344b17e67bd8d378574922388" name="Classes/CalcSectionControl.lua" part="program"/>
<File sha1="57ac3bdfbe1fe07539326e983a6df92a60c2cb78" name="Classes/CalcsTab.lua" part="program"/>
<File sha1="5d30e33c23cabf22917c02eb7df1963a5a27cb6a" name="Classes/CheckBoxControl.lua" part="program"/>
<File sha1="e006a7170444f7382c753b8f6ede30ddba17a3bd" name="Classes/ConfigTab.lua" part="program"/>
<File sha1="86c0beac5c2b6c9af922301a9c9c70812565524b" name="Classes/ConfigTab.lua" part="program"/>
<File sha1="bbb08f183746d6ec023e2bd08fb7a89d365381da" name="Classes/Control.lua" part="program"/>
<File sha1="ae55fe1093e727872bc01cc94fa987395f944313" name="Classes/ControlHost.lua" part="program"/>
<File sha1="8305ea8d306a13160c369c474d19b05024a1f5ef" name="Classes/DropDownControl.lua" part="program"/>
@@ -26,8 +26,8 @@
<File sha1="ed4927d018a38cbe1581ca2345bc8fae8a49a78a" name="Classes/ItemSlotControl.lua" part="program"/>
<File sha1="e239a39a838d0a4a1d50bfb419be839d190c4039" name="Classes/ItemsTab.lua" part="program"/>
<File sha1="62138c7db82d57d638a16610a26acd0de75d3486" name="Classes/LabelControl.lua" part="program"/>
<File sha1="a26d1a34424222856ad018ac43e3c7895d7f05b5" name="Classes/ModDB.lua" part="program"/>
<File sha1="a3ed881ebe1ed7c8931675937b4661d77decc316" name="Classes/ModList.lua" part="program"/>
<File sha1="47003cfea8cdb4444ac1379090ae4986d95982b7" name="Classes/ModDB.lua" part="program"/>
<File sha1="b9cab9764c39db175ee4123366b23ea9cfd035b8" name="Classes/ModList.lua" part="program"/>
<File sha1="9bc0d8791e7825e52070e96e7894d29fad70cf98" name="Classes/NotesTab.lua" part="program"/>
<File sha1="6f8f98d6ee505af53441c1fe9ad74fbff86d56ad" name="Classes/PassiveSpec.lua" part="program"/>
<File sha1="9a6bce38a62d9c07851cdd095e91f088e37cea4e" name="Classes/PassiveTree.lua" part="program"/>
@@ -44,60 +44,60 @@
<File sha1="4b7675c8b4fe71cade7dd3d70793df1ed8022d01" name="Classes/UndoHandler.lua" part="program"/>
<File sha1="c927eb267a13720de07d5c768151d748af54274c" name="Modules/Build.lua" part="program"/>
<File sha1="8888e736942ad025f3f81ceec2e1c433a9866942" name="Modules/BuildList.lua" part="program"/>
<File sha1="5d82b8d51b1e1d982c8f75803db5428e016befa8" name="Modules/Calcs.lua" part="program"/>
<File sha1="c0715b212c732d9120997984de8205ef83a3f8c4" name="Modules/CalcSections.lua" part="program"/>
<File sha1="1865c2bc3c390b7ca2bc6dcedba7dbfbff979b39" name="Modules/Calcs.lua" part="program"/>
<File sha1="2a3ddc6fef06339cd06614fe032694a4e57bf878" name="Modules/CalcSections.lua" part="program"/>
<File sha1="f207df4010cb3c7bc6cce98be2529a3b8a708b8f" name="Modules/Common.lua" part="program"/>
<File sha1="bad785f71247b99ff76d9a359f725968aa71da5f" name="Modules/Data.lua" part="program"/>
<File sha1="80871a0ce0fd3f2007dfe3db943cd4e920fc19c0" name="Modules/ItemTools.lua" part="program"/>
<File sha1="592e5ab3048528b8c9f689f18663b9657a8a78b0" name="Modules/ItemTools.lua" part="program"/>
<File sha1="524318a7986bf14ed2cdddf055b9d829d521b871" name="Modules/Main.lua" part="program"/>
<File sha1="2fcee850f493bddb18cde13ff23c73942353452a" name="Modules/ModParser.lua" part="program"/>
<File sha1="674dd0caeff9f08c19195ce4a74d81f601f205ad" name="Modules/ModParser.lua" part="program"/>
<File sha1="5f93a9d8f58e0d5990a1f84e1ab1d53fbd35fb56" name="Modules/ModTools.lua" part="program"/>
<File sha1="e7ee7e5b6388facb7bf568517ecc401590757df7" name="Assets/ring.png" part="program"/>
<File sha1="9a320bfe629b1cf3f14fc77fbbf2508d0a5b2841" name="Assets/small_ring.png" part="program"/>
<File sha1="e5ec52d9852e3f82c715aea8c006440c31d94497" name="Data/New.lua" part="program"/>
<File sha1="e16e258802f5b6e387d557017e98e58cc02d52c3" name="Data/Rares.lua" part="program"/>
<File sha1="9ce87f1a96439c4318688da3b971261614dec76b" name="Data/Gems/act_dex.lua" part="program"/>
<File sha1="6d9fb5ee2f7c3b0eb11332f69ff6942f587da82b" name="Data/Gems/act_int.lua" part="program"/>
<File sha1="14487004d713f93791fc9958e2c9de4afb834ee2" name="Data/New.lua" part="program"/>
<File sha1="e56e6892b3f0559ba22644695de9b785dd7842d1" name="Data/Rares.lua" part="program"/>
<File sha1="4719bd0eb7b999372a219fe6f9c419d280867512" name="Data/Gems/act_dex.lua" part="program"/>
<File sha1="0b0026bdb9342999eda1890965e3b548c49f7b4d" name="Data/Gems/act_int.lua" part="program"/>
<File sha1="4949ff400b5529fd1530d24c658b57732e367f19" name="Data/Gems/act_str.lua" part="program"/>
<File sha1="f6d7bc0e523b7d97fd3f2a8d2f09476716757ce1" name="Data/Gems/other.lua" part="program"/>
<File sha1="b2f6b177821de87288760644f2ecdbde07a9c4c9" name="Data/Gems/sup_dex.lua" part="program"/>
<File sha1="ef83aa4fcf18a13bcfe442c5c6aaae63fa439dba" name="Data/Gems/sup_int.lua" part="program"/>
<File sha1="a7b453bdca75742f39a8eebe7004ed2e0bd98dd6" name="Data/Gems/sup_str.lua" part="program"/>
<File sha1="e2bfaf8d42553867fff91aa7267dbae4e3ca460e" name="Data/Bases/amulet.lua" part="program"/>
<File sha1="48d916e1cf089c292b2c614805f80ce85cff55d9" name="Data/Bases/amulet.lua" part="program"/>
<File sha1="78410a8a3ee33ad331fee2abd83e235fe5b702f6" name="Data/Bases/axe.lua" part="program"/>
<File sha1="326f1060f490c7b48f56c25721eaf43bd2772835" name="Data/Bases/belt.lua" part="program"/>
<File sha1="48b7831da9941b9d8f296d0b094bcb19d2f33f5e" name="Data/Bases/belt.lua" part="program"/>
<File sha1="4c902abdeb0adc010954a1979f1463eaadf6ab6c" name="Data/Bases/body.lua" part="program"/>
<File sha1="5c7f386a0a64c908f863f1334dcd8fdef069cf84" name="Data/Bases/boots.lua" part="program"/>
<File sha1="8dbe89f07da022de05abf3acac0524f7a84436fd" name="Data/Bases/boots.lua" part="program"/>
<File sha1="d3683bb6cab9e0f632be7698791e91faa62c7f89" name="Data/Bases/bow.lua" part="program"/>
<File sha1="1000e0b82f5a7be69439aa0ed9c3b601b1845787" name="Data/Bases/claw.lua" part="program"/>
<File sha1="76b8c128ad89f086acadda19a78484d9de506b22" name="Data/Bases/dagger.lua" part="program"/>
<File sha1="2712c1b1eb532e9ae0be9996f4e3f7a8426ff770" name="Data/Bases/gloves.lua" part="program"/>
<File sha1="47c313bf97091d1e2b3bfc15612e0a784a383b17" name="Data/Bases/helmet.lua" part="program"/>
<File sha1="d8fcbbefe2a5e1e6bdf6d5a4cd27ec5013a57f9b" name="Data/Bases/gloves.lua" part="program"/>
<File sha1="34f0cee0f11fcff686a78ccdc2b5c7c5c4268517" name="Data/Bases/helmet.lua" part="program"/>
<File sha1="f9ffa4d0906ab93703542a6dd7161cbdf50e1f65" name="Data/Bases/jewel.lua" part="program"/>
<File sha1="7d4ca60865e4bcf61171cf5e2a8f1bba62468ce9" name="Data/Bases/mace.lua" part="program"/>
<File sha1="72a175ac939fdc9f176c87649b20f1dddf417475" name="Data/Bases/quiver.lua" part="program"/>
<File sha1="98a369dc9b737d2bf996de8275aca3b30f9a40a4" name="Data/Bases/ring.lua" part="program"/>
<File sha1="f5b3726de8873ad311fe75699dd6bccdf06932a6" name="Data/Bases/ring.lua" part="program"/>
<File sha1="0e8a530e2d0e45729b7f0404487de11f2e8dfc1d" name="Data/Bases/shield.lua" part="program"/>
<File sha1="4ae43a18e8826d97276a7e74c1cf61e729bf5df9" name="Data/Bases/staff.lua" part="program"/>
<File sha1="6a643f3aed83c4a811e0705fad720a341c39c834" name="Data/Bases/sword.lua" part="program"/>
<File sha1="e0a53d0e5fe36e0b2377a25e145f677ff05a979a" name="Data/Bases/wand.lua" part="program"/>
<File sha1="583d410f4d475211ce6bdfd4ae8c6798ee29717a" name="Data/Uniques/amulet.lua" part="program"/>
<File sha1="42d79660d87a894b805abac1d85407606443b5b7" name="Data/Uniques/amulet.lua" part="program"/>
<File sha1="50f6fd76f91f24ee7242cd12ef98bcdb0e35d0ee" name="Data/Uniques/axe.lua" part="program"/>
<File sha1="610887f513f7c7d5fb99153de72d4e7b64456322" name="Data/Uniques/belt.lua" part="program"/>
<File sha1="87d186646e38bc78fa2879f88899af1467b34c29" name="Data/Uniques/body.lua" part="program"/>
<File sha1="bb8f55396345379f36834e7be03834f5bd344bdf" name="Data/Uniques/boots.lua" part="program"/>
<File sha1="e2d8865b9d3d194dd7e4577c5fb13aca34f71875" name="Data/Uniques/bow.lua" part="program"/>
<File sha1="156b55263c58a93e0d100dc57a19aa81eea78326" name="Data/Uniques/claw.lua" part="program"/>
<File sha1="bc55a34ad4264035fa0f17a694e17a23bb9b1744" name="Data/Uniques/body.lua" part="program"/>
<File sha1="9c0ad9776e0d8f7c673265faee5e712f9349b92f" name="Data/Uniques/boots.lua" part="program"/>
<File sha1="451dada50c05bac28264a10bf8bd5998439f1dd5" name="Data/Uniques/bow.lua" part="program"/>
<File sha1="848e81b370e793cf36ed13e7cc1059f9de1bceca" name="Data/Uniques/claw.lua" part="program"/>
<File sha1="e37c3fe13513a8a9917e0ed2eb9cdecbcea79566" name="Data/Uniques/dagger.lua" part="program"/>
<File sha1="be037e9c7dd77bd040f6da18c3d6d69224990448" name="Data/Uniques/gloves.lua" part="program"/>
<File sha1="eb2c474419dc7dafd1392d2e384780c0f11f593d" name="Data/Uniques/helmet.lua" part="program"/>
<File sha1="1137f36fef51b580f065a740487a8b650874cc81" name="Data/Uniques/jewel.lua" part="program"/>
<File sha1="32faba71bd84caca6c63a83ad9166d880658a1d9" name="Data/Uniques/mace.lua" part="program"/>
<File sha1="0e0faa5870809fef63052d9cc7518984fbcf7b78" name="Data/Uniques/gloves.lua" part="program"/>
<File sha1="a721049dadcdbfcb2ed82787edf704c45ec4e429" name="Data/Uniques/helmet.lua" part="program"/>
<File sha1="8b29ca64944c87ae835251297fd366a326a9ad9a" name="Data/Uniques/jewel.lua" part="program"/>
<File sha1="86cbfeea1b96753947811cd3d95d8f2f28d1cb5e" name="Data/Uniques/mace.lua" part="program"/>
<File sha1="23a8cd22b1d20b6af442978c57eb800c88f2006d" name="Data/Uniques/quiver.lua" part="program"/>
<File sha1="6b7ce7484f35ee88f19774cfd9e1d02359e5b2fd" name="Data/Uniques/ring.lua" part="program"/>
<File sha1="fa3421b77bd9633bbcd78c207de6df31e30f20d5" name="Data/Uniques/ring.lua" part="program"/>
<File sha1="6991300b610dd76cbaba826e450a7ac601cd8881" name="Data/Uniques/shield.lua" part="program"/>
<File sha1="5fa6696ce2be10a120bbfdcc290d0821a3b80176" name="Data/Uniques/staff.lua" part="program"/>
<File sha1="37ebbf3b10093591d6273a8a2cddc2af14c1f4b5" name="Data/Uniques/sword.lua" part="program"/>
<File sha1="299479094ef80df2fcc1e3232ef56685349b26bf" name="Data/Uniques/sword.lua" part="program"/>
<File sha1="3054ba5a1cdc0720a39e4f69496564b9ad9b9dc8" name="Data/Uniques/wand.lua" part="program"/>
<File platform="win32" sha1="e8581e70cefa0b68583be298483418c004c8152f" name="Path of Building.exe" part="runtime"/>
<File platform="win32" sha1="914d42ca1836c5152a5f60aad23020a86bcb46d9" name="lua51.dll" part="runtime"/>